# python零基础批量mint以太铭文

By [pikpika](https://paragraph.com/@pikpika) · 2023-09-05

---

Python零基础批量mint以太铭文，小白也能快速上手运行属于自己的铭文脚本

从零开始教你如何构建一个属于自己的python环境并进行链上交互，本教程以windows为例

### 1、搭建python运行环境

*   python下载
    

进入python官网中下载这个安装包然后安装

![](https://storage.googleapis.com/papyrus_images/9965d02ddb14b60b92638a397c2f2449de1c3249a95eebe164e5484709b4c53e.png)

[https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/)

*   配置环境变量
    

打开命令提示框(cmd) \*\*，\*\*在命令提示框(cmd)中输入 **:**

    path=%path%;C:\Python 
    

其中需要注意的是：C:\\Python 是上一步中选择python的安装目录，此处是默认安装目录

*   安装IDE
    

这里我推荐pycharm，pycharm对于python的支持是最到位的

建议初学者安装pycharm熟悉python后再使用别的解释器

PyCharm 下载地址 :

[https://www.jetbrains.com/pycharm/download/?section=windows](https://www.jetbrains.com/pycharm/download/?section=windows)

下载的话建议选择下面那个社区版本，社区版本的功能完全够用，上面的专业版本需要付费

![下载后默认安装就行](https://storage.googleapis.com/papyrus_images/918c23ff634315ea5d9e6087415c1a4afe90ac368b9cc2da0c8fe5aa53e6e7c5.png)

下载后默认安装就行

以上教程节选自，感兴趣的朋友可以继续通过菜鸟教程学习：

[https://www.runoob.com/python/python-install.html](https://www.runoob.com/python/python-install.html)

### 2、配置pycharm

*   创建工作台
    

打开pycharm后，点击左上角的`File`后选择`New project`按钮

按默认选项点击右下角的`create`按钮，创建全新的工作台

![进入到这个代码页面，即为创建成功](https://storage.googleapis.com/papyrus_images/a4add84ab4e54b0f6dba4f55e9adc993435e680ba5aaa7ef952455b0c85bc0c9.png)

进入到这个代码页面，即为创建成功

*   安装web3.py库
    

创建好工作台之后，点击左下角的`terminal`按钮或者使用Alt+F12快捷键调出命令行

![](https://storage.googleapis.com/papyrus_images/508bf85e2cd36c2e6737c3684bded89ce250d11ba8ca2dfd9e7c1458d6827814.png)

在命令行中输入命令 `pip install web3.py` 按回车运行命令，安装web3.py库

![安装的时候如果报错可以尝试断开VPN后重新运行命令](https://storage.googleapis.com/papyrus_images/ba660a42b66c1252c467d0a70e31f028a26670cf7f6893b2b42edf33f16b0a66.png)

安装的时候如果报错可以尝试断开VPN后重新运行命令

至此准备工作就已经完成一大半了！如果你能坚持到这一步的话，距离成功就很近了！

### 3、运行批量铸造铭文代码

*   复制脚本代码
    

将main.py文件中原始的字符全部删除，将下面代码复制进入main.py文件中

    from web3 import Web3
    import binascii
    import hashlib
    import requests
    import time
    
    # 连接到以太坊节点
    w3 = Web3(Web3.HTTPProvider('https://eth-mainnet.g.alchemy.com/v2/iOtHuKsPGcs0Ybp8M7CNnhTijM6qdcjI'))
    
    # API端点URL
    api_url = "https://api.ethscriptions.com/api/ethscriptions/exists/"
    
    # 检查是否连接成功
    if not w3.is_connected():
        print("错误：未能连接到以太坊节点")
        exit()
    
    # 设置发送方的地址和私钥
    sender_address = "填需要批量铭文的地址"
    private_key = "填对应地址的私钥"
    
    # 设置接收方地址
    receiver_address = "填需要批量铭文的地址"
    
    
    def str_to_hex(input_string):
        hex_representation = binascii.hexlify(input_string.encode()).decode()
        return hex_representation
    
    # 编码你想要传递的语言信息
    n = 0
    m = 0
    nonce1 = w3.eth.get_transaction_count(sender_address)
    while n < 200:  # 运行次数
        num = 15620 + n # 遍历开始铭文编号
        language_info = 'data:,{"p":"erc-20","op":"mint","tick":"swap","id":"'+ str(num) +'","amt":"1000"}'
        print(language_info)
    
        byte_data = language_info.encode('utf8')
        sha256_hash = hashlib.sha256(byte_data).hexdigest()
        full_url = api_url + sha256_hash
        response = requests.get(full_url)
    
        if response.status_code == 200:
            data = response.json()
            if data['result']:
                print("SHA-256哈希存在 \n")
                n = n + 1
            else:
                hex_string = str_to_hex(language_info)
                nonce = nonce1 + m
                m = m + 1
                # 构建交易
    
                gas_price = w3.to_wei('12.5', 'gwei')  # 设置 gas price
                gas_limit = 50000  # 固定 gas limit 
                print("nonce:", nonce)
                time.sleep(2)
                n = n + 1
    
                transaction = {
                    'nonce': nonce,
                    'to': receiver_address,
                    'value': 0,  # 这里是0，因为我们只发送数据而不转账金额
                    'gas': gas_limit,
                    'gasPrice': gas_price,
                    'data': hex_string,  # 将编码后的语言信息作为input数据
                }
    
                # 签署交易
                signed_txn = w3.eth.account.sign_transaction(transaction, private_key)
    
                # 发送交易
                tx_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
    
                print(f"交易已发送 \n")
        else:
            print("请求失败")
            break
    

*   调整代码细节
    

这个时候需要调整的地方有大概五处，分别对应的是用什么地址打代币铭文，打多少张代币铭文，代币铭文编号从哪里开始，打哪一种代币铭文，使用多少gas打铭文

**用什么地址打代币铭文：**

![需要填地址和私钥，推荐使用新地址运行](https://storage.googleapis.com/papyrus_images/1826b10532ae6e99da1035a3fb2d55f34617c7d3e9cebc37756cf3fb61379e9a.png)

需要填地址和私钥，推荐使用新地址运行

**打多少张代币铭文和代币铭文编号从哪里开始：**

![其中200是张数，15620是编号(以太铭文的编号一般是1-21000)根据自己的需求修改数字](https://storage.googleapis.com/papyrus_images/abcb470851264932759790e1b5789993de9017cbded62741d994fb743f2655bd.png)

其中200是张数，15620是编号(以太铭文的编号一般是1-21000)根据自己的需求修改数字

**打哪一种代币铭文：**

![以swap代币铭文为例，如果想打其他的代币铭文在双引号内修改](https://storage.googleapis.com/papyrus_images/ede3d3eb7ca67dfaa004a3f2c9bff278a32e70f941f919d80f8061a173a06076.png)

以swap代币铭文为例，如果想打其他的代币铭文在双引号内修改

**使用多少gas打铭文：**

![以12.5为例，具体gas需要根据以太坊网络适时调整](https://storage.googleapis.com/papyrus_images/1ba086782e96948ec470cf0f484519a7c2dfeb18a34f2766bb79daf8328cad6f.png)

以12.5为例，具体gas需要根据以太坊网络适时调整

附以太坊网络gas查询链接：

[https://etherscan.io/gastracker](https://etherscan.io/gastracker)

*   运行代码
    

当将上述五点全部设置好了就可以运行代码批量打铭文了

点击上方运行按钮运行

![](https://storage.googleapis.com/papyrus_images/f1a0dabe9b62074171eadc0da6ec163ff27ebf6802231a42c932001c0d3f00ad.png)

程序运行成功如下图所示

![](https://storage.googleapis.com/papyrus_images/9fdd18acfae6f42dd4efc51ece3a77418e0f47f77eb4235178268da3707620f2.png)

### 4、相关报错问题解决方案

*   错误：未能链接到以太坊节点
    

解决方案一：关闭VPN后尝试重新运行

解决方案二：尝试更换RPC节点

[https://chainlist.org/](https://chainlist.org/)

打开chainlist之后随便选择一个替换掉代码里的RPC节点，一个不行就多换几个，公共的rpc一般都不太好用

代码里的节点是我使用Alchemy自行申请的，但是用的人多的话可能会到达请求上限，感兴趣的小伙伴可以自己申请一个

[https://www.alchemy.com/](https://www.alchemy.com/)

![](https://storage.googleapis.com/papyrus_images/c33fa7c68374b7adcd636086586a3e2e5e6e0628563e3015766ef6e1101ae46b.png)

后续等大家尝试运行之后，反馈相关报错问题之后再更新

---

*Originally published on [pikpika](https://paragraph.com/@pikpika/python-mint)*
