16.批量归集


文档摘要

title: 16. 批量归集 tags: web3.py python multitransfer Ethers极简入门: 16. 批量归集 我最近在重新学 ,巩固一下细节,也写一个 ,供小白们使用。 推特:@0xAAScience, 0xXQ WTF Academy社群: 官网 wtf.academy | WTF Solidity教程 | discord | 微信群申请 所有代码和教程开源在github: github.com/WTFAcademy/WTF-web3py 这一讲,我们介绍如何使用 将多个钱包的 和代币归集到一个钱包中。 批量归集 在链上交互、撸毛之后,就需要将多个钱包的资产进行归集管理。你可以用HD钱包或者保存多份密钥的方式操作多个钱包,然后用 脚本完成归集。

title: 16. 批量归集 tags: - web3.py - python - multitransfer

Ethers极简入门: 16. 批量归集

我最近在重新学web3.py,巩固一下细节,也写一个WTF web3py极简入门,供小白们使用。

推特@0xAA_Science, 0xXQ

WTF Academy社群: 官网 wtf.academy | WTF Solidity教程 | discord | 微信群申请

所有代码和教程开源在github: github.com/WTFAcademy/WTF-web3py

这一讲,我们介绍如何使用web3.py将多个钱包的ETH和代币归集到一个钱包中。

批量归集

在链上交互、撸毛之后,就需要将多个钱包的资产进行归集管理。你可以用HD钱包或者保存多份密钥的方式操作多个钱包,然后用web3.py脚本完成归集。下面我们分别示范归集ETH(原生代币)和WETH(ERC20代币)。

  1. 创建providerwallet,其中wallet是接收资产的钱包。

    # 1. 创建provider和wallet,其中wallet是接收资产的钱包。 print("1. 创建provider和wallet,其中wallet是接收资产的钱包。") from web3 import Web3 w3 = Web3(Web3.HTTPProvider('https://goerli.infura.io/v3/5be23a050401499fb951be2e12178e01')) private_key = "0x21ac72b6ce19661adf31ef0d2bf8c3fcad003deee3dc1a1a64f5fa3d6b049c06" account = w3.eth.account.from_key(private_key) account.address

    Provider 钱包

  2. 创建HD钱包,用于管理多个钱包。

    # 2. 创建HD钱包,用于管理多个钱包。 print("2. 创建HD钱包,用于管理多个钱包。") mnemonic = "air organ twist rule prison symptom jazz cheap rather dizzy verb glare jeans orbit weapon universe require tired sing casino business anxiety seminar hunt" w3.eth.account.enable_unaudited_hdwallet_features()
  3. 通过HD钱包衍生10个钱包,这些钱包上需要有资产。

    # 3. 利用HD钱包,生成10个钱包地址。 print("3. 利用HD钱包,生成10个钱包地址。") addresses = [] for i in range(10): address = w3.eth.account.from_mnemonic(mnemonic, account_path=f"m/44'/60'/0'/0/{i}") addresses.append(address) addresses

    生成10个地址

  4. 读取一个地址的ETH余额。

    # 4. 读取一个地址的ETH余额。 print("4. 读取一个地址的ETH余额。") # 目标地址 target_address = addresses[3] # 读取 ETH 余额 balanceETH = w3.eth.get_balance(target_address) print(balanceETH)

    读取余额

  5. 利用钱包类的send_raw_transaction()发送交易,归集每个钱包中的ETH

    # 5. 利用钱包类的send_raw_transaction()发送交易,归集每个钱包中的ETH。 print("5. 利用钱包类的send_raw_transaction()发送交易,归集每个钱包中的ETH。") for i in range(10): # 设置钱包私钥 wallet = w3.eth.account.from_key(addresses[i].key) # 准备交易数据 tx = { 'to': account.address, 'value': w3.to_wei(0.0001, "ether"), 'gas': 2000000, 'nonce': w3.eth.get_transaction_count(addresses[i].address), 'gasPrice': w3.eth.gas_price } # 签名并发送交易 signed_tx = wallet.sign_transaction(tx) tx_hash = w3.eth.send_raw_transaction(signed_tx.rawTransaction) tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash) print(f"第 {i+1} 个钱包 {addresses[i].address} ETH 归集开始") print("ETH 归集结束")

    归集ETH

  6. 读取一个地址在归集后的ETH和WETH余额,可以看到ETHWETH余额减少,归集成功!

    # 6. 读取一个地址在归集后的ETH和WETH余额,可以看到ETH和WETH余额减少,归集成功! print("6. 读取一个地址在归集后的ETH和WETH余额,可以看到ETH和WETH余额减少,归集成功!") balanceETH2 = w3.eth.get_balance(addresses[3].address) print("转账后余额:", balanceETH2)

    归集后余额变动

总结

这一讲,我们介绍了批量归集,并用web3.py脚本将10个钱包的ETH归集到一个钱包中。


作者与出处
来源:WTFAcademy
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: 转发
评论区 (0)
U