打造神器:使用Python和Web3创建铭文批量铸造工具

铭文在许多区块链游戏和应用中扮演着重要的角色。然而,如果你需要大量铸造铭文,手动完成这项任务将是一项繁重和耗时的工作。为了解决这个问题,我们可以使用Python和Web3库创建一个铭文批量铸造工具,以便更高效地完成这项任务。

故事开端

假设你是一个充满音乐和技术热情的自由职业者,你的工作和生活都是远程的。你对编程和脚本编写有高级技能,喜欢电子设备的修理和服务器的安装。今天,你面临一个挑战:需要批量铸造铭文以满足游戏中的需求。手动完成这项任务将非常繁琐,但是你决心使用自己的技术技能来解决这个问题。让我们一起来创建一个强大的铭文批量铸造工具吧!

步骤1:准备工作

在开始之前,确保你已经安装了以下库:

  • tkinter:用于创建图形用户界面。
  • asyncio:用于异步操作。
  • web3:用于与以太坊区块链进行交互。
  • httpx:用于进行HTTP请求。
  • re:用于正则表达式匹配。

你可以使用以下命令安装这些库:

pip install tkinter asyncio web3 httpx

步骤2:创建图形用户界面

首先,我们将创建一个图形用户界面,用于输入铭文铸造的相关参数。这将大大简化铭文铸造的过程。以下是创建GUI的代码:

# 导入所需库
import tkinter as tk
from tkinter import messagebox, simpledialog
import asyncio
from web3 import AsyncWeb3
import httpx
import re

# 创建一个异步运行的函数,用于处理mint操作
async def run_mint(inputs, root):
    try:
        await mint(inputs['to'], inputs['rpc'], inputs['private_key'], 
                   inputs['gasPrice'], inputs['maxFeePerGas'], 
                   inputs['maxPriorityFeePerGas'], inputs['data'])
        messagebox.showinfo("成功", "交易已发送")
    except Exception as e:
        messagebox.showerror("错误", str(e))
    finally:
        root.quit()

# 创建图形用户界面
def create_gui():
    root = tk.Tk()
    root.title("大神铭文打造神器")

    inputs = {
        'to': tk.StringVar(),
        'rpc': tk.StringVar(),
        'private_key': tk.StringVar(),
        'gasPrice': tk.StringVar(),
        'maxFeePerGas': tk.StringVar(),
        'maxPriorityFeePerGas': tk.StringVar(),
        'data': tk.StringVar()
    }

    labels = {
        'to': "输入地址(打到那个号):",
        'rpc': "输入RPC:",
        'private_key': "输入私钥(有gas的小号):",
        'gasPrice': "输入gasPrice:",
        'maxFeePerGas': "输入maxFeePerGas:",
        'maxPriorityFeePerGas': "输入maxPriorityFeePerGas:",
        'data': "输入data:"
    }

    # 创建输入字段
    for i, key in enumerate(inputs.keys()):
        tk.Label(root, text=labels[key]).grid(row=i, column=0)
        tk.Entry(root, textvariable=inputs[key]).grid(row=i, column=1)

    # 创建提交按钮
    submit_button = tk.Button(root, text="开始打造!!!", command=lambda: asyncio.run(run_mint(inputs, root)))
    submit_button.grid(row=len(inputs), column=0, columnspan=2)

    # 运行GUI
    root.mainloop()

if __name__ == '__main__':
    create_gui()

上述代码创建了一个简单的GUI,允许用户输入铭文铸造所需的参数,包括接收地址、RPC地址、私钥、gasPrice等。一旦用户点击“开始打造”按钮,就会触发异步操作来执行铭文铸造。

步骤3:批量铸造铭文

接下来,我们将实现批量铸造铭文的功能。我们将使用Web3库与以太坊区块链进行交互,创建多个交易并将其发送到链上。以下是铭文批量铸造的代码:

async def mint(to, rpc, private_key, gasPrice, maxFeePerGas, maxPriorityFeePerGas, data):
    web3 = AsyncWeb3(AsyncWeb3.AsyncHTTPProvider(rpc))
    account = web3.eth.account.from_key(private_key)
    http = httpx.AsyncClient()

    chain_id = await web3.eth.chain_id
    to = web3.to_checksum_address(to)
    nonce = await web3.eth.get_transaction_count(account.address)
    gasPrice = web3.to_wei(float(gasPrice), 'gwei')
    maxFeePerGas = web3.to_wei(float(maxFeePerGas), 'gwei')
    maxPriorityFeePerGas = web3.to_wei(float(maxPriorityFeePerGas), 'gwei')

    tx = {
        'from': account.address,
        'to': to,
        'nonce': nonce,
        'gas': 25024,
        'gasPrice': gasPrice,
        'maxFeePerGas': maxFeePerGas,
        'maxPriorityFeePerGas': maxPriorityFeePerGas,
        'chainId': chain_id,
        'data': data
    }

    if gasPrice == 0:
        del tx['gasPrice']
    else:
        del tx['maxFeePerGas']
        del tx['maxPriorityFeePerGas']

    match = re.search(r'\[(\d+)-(\d+)\]', data)
    if match:
        start, end = map(int, match.groups())
        subtext = match.group()
    else:
        start, end, subtext = 0, 0, None

    time = (end - start) // 100 + 1 if end - start > 10000 else 100

    if not data.startswith('0x') and

 subtext is None:
        data = web3.to_hex(text=data)

    for x in range(0, time):
        request_list = []
        for i in range(0, 100):
            tx['nonce'] = nonce
            if subtext is not None:
                tx['data'] = data.replace(subtext, str(start))
                start += 1
                if start > end:
                    print('已经到达最大范围')
                    return
            signed = account.sign_transaction(tx)
            nonce += 1
            request_list.append({"jsonrpc": "2.0", "method": "eth_sendRawTransaction", "params": [signed.rawTransaction.hex()], "id": i + 1})
        res = await http.post(rpc, json=request_list)
        print(res.json())
        await asyncio.sleep(1)

上述代码使用异步操作创建交易并将其发送到以太坊链上。它还处理了一些特殊情况,如替换数据中的占位符以实现批量铸造。这样,你就可以轻松地铸造大量铭文而不必手动创建每个交易。

结束语

通过使用Python和Web3库,我们创建了一个强大的铭文批量铸造工具,使铭文铸造变得更加高效和简单。这个工具可以大大提高你的工作效率,让你更专注于你的音乐和技术兴趣。

在编程的世界里,我们总是面临各种挑战,但正是通过不断学习和成长,我们才能不断进步。希望这个教程对你有所帮助,让你在自由职业生活中更加成功。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

天猫精灵播报广告引争议:用户权益受损,官方回应令人担忧

2023-12-15 10:09:10

指数词

如何在Ubuntu中查看已安装的软件

2023-12-15 11:05:17

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索