【Mquant】9:python批量铭刻erc-20铭文

这篇具有很好参考价值的文章主要介绍了【Mquant】9:python批量铭刻erc-20铭文。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1. ETHS铭文

ETHS铭文是以太坊铭文协议Ethscriptions的代币名称。Ethscriptions是一个基于以太坊的铭文协议,允许用户在以太坊主网上刻入不同类型的文件,并将其记录到区块中。ETHS作为Ethscriptions的第一个"概念币",引起了人们的关注和热议。

以太坊铭文协议Ethscriptions的特点包括:

  1. 使用交易调用数据在以太坊上创建和共享数字藏品的新协议[1]。
  2. 利用以太坊calldata进行铭文创作,相比使用合约储存更便宜、去中心化,并且能够保证所有有效内容的全球唯一性。
  3. 铭文的大小不能超过96KB。

ETHS铭文的铸造方式相对简单,以下是一个示例的铸造步骤:

  1. 复制代码:data:,{“p”:“erc-20”,“op”:“mint”,“tick”:“eths”,“id”:“21000以内的任意数字”,“amt”:“1000”}。
  2. 将这串代码进行转码,转为16进制。
  3. 打开钱包,向自己的地址转入0ETH,并将转码获得的16进制填写。
  4. 确认付款,完成代币的铸造。

需要注意的是,ETHS铭文的共识承认只限于编号在21000以内的铭文,而且对于重复被打的编号,只有最先被打的那张ETHS铭文会被承认。

2.批量查询是否被mint

首先安装包:

pip install requests
import hashlib
import json

import requests
import threading


def query_content(content):
    content1 = "data:," + content
    sha256_hash = hashlib.sha256(content1.encode()).hexdigest()

    url = f"https://eth-script-indexer-eca25c4cf43b.herokuapp.com/api/ethscriptions/exists/{sha256_hash}"

    try:
        response = requests.get(url)

        if response.status_code == 200:
            result = response.json()
            if result['result']:
                # owner = result['ethscription']['current_owner']
                # creator = result['ethscription']['creator']
                # creation_timestamp = result['ethscription']['creation_timestamp']
                #
                # # 转换时间格式为易读形式
                # creation_timestamp = datetime.datetime.strptime(
                #     creation_timestamp, "%Y-%m-%dT%H:%M:%S.%fZ")
                #
                return -1
            else:
                # hex_content = binascii.hexlify(content.encode()).decode()
                # print(f"\n'{content}'的铭文内容尚未被铭刻。")
                # print(f"该铭文文本(含data:,)的16进制输出为:{hex_content}")
                return json.loads(content)["id"]
        else:
            print(f"\n获取'{content}'的数据失败,请检查你的输入是否正确。")
    except requests.exceptions.RequestException as e:
        print(f"\n发送请求时遇到错误: {e}")


def main(name, id_min, id_max):
    ids = []
    lock = threading.Lock()

    def process_content(name, id):
        content = '{"p":"erc-20","op":"mint","tick":"' + name + '","id":"' + str(number) + '","amt":"1000"}'
        id = query_content(content)
        with lock:
            ids.append(id)

    # 创建线程列表
    threads = []
    for number in range(id_min, id_max):
        thread = threading.Thread(target=process_content, args=(name, number,))
        threads.append(thread)
        thread.start()

        # 限制线程数量为20
        if len(threads) >= 20:
            # 等待前面的线程完成
            for t in threads:
                t.join()
            threads = []

    # 等待剩余线程完成
    for thread in threads:
        thread.join()

    # 过滤掉值为-1的元素
    ids = list(filter(lambda x: x != -1, ids))
    print("未打铭文列表:",ids)


if __name__ == '__main__':
    id_min = int(input("请输入查询id范围下限:"))
    id_max = int(input("请输入查询id范围上限:"))
    name = input("输入铭文名称:")
    main(name, id_min, id_max)

【Mquant】9:python批量铭刻erc-20铭文,量化,python,区块链,开发语言

3. 批量mint

安装web3包

pip install web3 eth_account
import hashlib
import threading
import time

from web3 import Web3, HTTPProvider
from eth_account import Account
import concurrent.futures
import requests
from eth_account.signers.local import LocalAccount
import binascii


def string_to_hex(string):
    return '0x' + binascii.hexlify(string.encode()).decode()


def query_domain(content):
    content_ = "data:," + content
    sha256_hash = hashlib.sha256(content_.encode()).hexdigest()

    url = f"https://eth-script-indexer-eca25c4cf43b.herokuapp.com/api/ethscriptions/exists/{sha256_hash}"

    try:
        response = requests.get(url)
        if response.status_code == 200:
            result = response.json()
            if result['result']:
                print(content, "不能被mint")
                return False
            else:
                print(content, "可以mint")
                return True
        else:
            print(f"\n获取'{content}'的数据失败,请检查你的输入是否正确。")
    except requests.exceptions.RequestException as e:
        print(f"\n发送请求时遇到错误: {e}")


def mint_ethscriptions(w3, wallet, to_address, private_key, content):
    nonce = w3.eth.get_transaction_count(wallet.address)
    # 获取当前燃气价格
    gas_price = w3.eth.gas_price
    hex_data_URI = string_to_hex("data:," + content)
    tx = {
        'to': to_address,
        'value': w3.to_wei(0, 'ether'),  # 发送的以太币数量
        'data': hex_data_URI,
        'nonce': nonce,
        'gas': 30000,  # 估算的燃气量
        'gasPrice': gas_price,
        'chainId': 1,  # 主网的链ID
    }
    # 使用私钥进行交易签名
    # signed_transaction = w3.eth.account.sign_transaction(tx, private_key)
    # tx_hash = w3.eth.send_raw_transaction(signed_transaction.rawTransaction)
    # print(f'Transaction hash: {tx_hash.hex()}')
    #
    # tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash)
    # print(f'Transaction was confirmed in block {tx_receipt["blockNumber"]}')
    print('Done')


def main(private_key, name, id_min, id_max):
    w3 = Web3(HTTPProvider("https://rpc.ankr.com/eth"))
    wallet: LocalAccount = Account.from_key(private_key)
    count = 0  # 计数器
    count_lock = threading.Lock()  # 创建锁对象

    def process_id(name, number):
        global count
        content = '{"p":"erc-20","op":"mint","tick":"' + name + '","id":"' + str(number) + '","amt":"1000"}'
        flag = query_domain(content)
        if flag:
            with count_lock:
                if count < 100:
                    mint_ethscriptions(w3, wallet, wallet.address, private_key, content)
                    count += 1

    with concurrent.futures.ThreadPoolExecutor() as executor:
        ids = range(id_min, id_max)
        names = [name] * len(ids)
        for i in range(0, len(ids), 20):
            batch_ids = ids[i:i + 20]
            batch_names = names[i:i + 20]
            executor.map(process_id, batch_names, batch_ids)
            time.sleep(10)  # 休息60秒


if __name__ == '__main__':
    private_key = input("请输入钱包私钥:")
    name = input("请输入要mint的铭文名字:")
    id_min = int(input("请输入铭文编号下限:"))
    id_max = int(input("请输入铭文编号上限:"))
    main(private_key, name, id_min, id_max)

【Mquant】9:python批量铭刻erc-20铭文,量化,python,区块链,开发语言

有问题欢迎私聊,可+量化交易~裙,领取量化交易资料文章来源地址https://www.toymoban.com/news/detail-760114.html

到了这里,关于【Mquant】9:python批量铭刻erc-20铭文的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Eth Of Erc20 And Erc721

    public,可以修饰变量和函数, 被修饰的函数或变量可以被任何合约调用(或访问),默认的变量和函数使用该属性。 private,可以修饰变量和函数,被修饰者只能被当前合约内部的代码所调用(或访问),不能被外部合约调用或继承它的子合约调用(或访问)。 extermal,只能修饰函数

    2024年02月15日
    浏览(44)
  • WuBit:聚合BRC20资产交易,续写铭文市场新浪潮

    2023年的数字货币领域见证了重大的创新,尤其是比特币Ordinals协议的推出,它为铭文赛道带来了新的生命力。这一协议的核心在于将比特币分割为更小的单位——聪,并在每个聪上嵌入独特信息,从而创建了一种新颖的非同质化资产。BRC20等应用的出现,利用这一平台在比特

    2024年02月04日
    浏览(51)
  • 以太坊数字资产的发行和流通:以太坊上的数字资产定义、ERC 20代币合约标准、ERC 20标准接口、ERC 721代币合约标准、

    以太坊设计的目标就是让各种数字资产能以智能合约的形式运行在以太坊虚拟机上。目前,众多智能合约中最广泛应用的是代币合约(Token Contract)。是负责管理账户以及其拥有的代币的智能合约,实质可以理解为一张账户地址和对应账户代币余额的映射表。 即:代币可以被

    2023年04月11日
    浏览(54)
  • Python量化投资——金融数据最佳实践: 使用qteasy+tushare搭建本地金融数据仓库并定期批量更新【附源码】

    做量化投资或者对量化交易感兴趣的朋友应该都需要用到大量的金融数据,例如股票价格,基金净值、上市公司技术指标和财务指标等等。但是,如何有效、可靠地获取金融数据,并且有效地使用,却是一个令人头疼的问题。在这篇文章中,我想跟大家交流我的使用心得,分

    2024年02月04日
    浏览(54)
  • 查看ERC20的精度

        Erc20的精度decimals,范围为0~18,可以在对应的区块链浏览器explorer里查看,如图(1)所示。下面,介绍查看 ETH链上的ERC20: 0xdac17f958d2ee523a2206206994597c13d831ec7的decimals。     比如,0x0000000000004946c0e9f43f4dee607b0ef1fa1c的精度为0; 0xf650c3d88d12db855b8bf7d11be6c55a4e07dcc9的精度为8。    

    2024年02月15日
    浏览(43)
  • 什么是ERC20?

    ERC20 是以太坊区块链上最常见的代币标准之一。它是以太坊上智能合约的一种协议,定义了一套规则和接口,使得在以太坊网络上创建和管理代币变得更加简单和标准化。 ERC20 代币标准定义了一组功能和方法,以便代币合约可以与其他合约和钱包进行交互。根据 ERC20 标准,

    2024年02月13日
    浏览(49)
  • ERC20合约入门

    这篇文章会手把手的教你开发智能合约的基本流程,带你快速入门智能合约的开发。这篇文章假设你了解区块链的基础知识,有一定的开发经验,如果不懂的可以私信我,我发给你一些资料。 智能合约的开发流程是 智能合约最简单的开发方式是用 Remix 在线编辑程序开发,这

    2024年02月03日
    浏览(43)
  • 区块链 | ERC721 标准

    目录 正文 1  ERC721 接口 事件 方法 2  ERC165 接口 3  可选实现接口:ERC721Metadata 4  可选实现接口:ERC721Enumerable 补充说明 1  NTF IDs 2  与 ERC-20 的兼容性 3  交易、挖矿、销毁 🥕 原文: 剖析非同质化代币 ERC721 标准 🥕 写在前面: 本文属搬运博客,自己留存学习。 ERC721 作为

    2024年04月28日
    浏览(40)
  • 以太坊的演变:EIP、ERC 概念以及革命性的 ERC20、ERC721 和 ERC115 标准

    以太坊改进提案(EIP)代表了以太坊区块链内协作进步的顶峰。它们是技术文章或提案,描述对以太坊网络的建议更改或增强。 这些文档经过精心制作,呈现了新的功能、流程或环境,在任何形式的采用或实施之前都需要社区的审查。 至关重要的是要认识到改进提案的概念

    2024年04月11日
    浏览(44)
  • openzeppelin erc20各种接口

    这套接口、合约和应用程序都与 ERC20 代币标准相关。 有一些核心合约实现了 EIP 中指定的功能和定义: IERC20:包含所有ERC20应该实现的接口 IERC20Metadata:对ERC20接口的扩展,包括Token名称,符号,和精度。 ERC20:对ERC20接口的实现,将名称,符号和精度这些可选的标准扩展引入到

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包