0%

eth | web3.py 转账主网币

这里使用 python 转账主网币。

以虎符智能链为例。


环境


  • web3 5.19.0

代码


假设这个代码的文件名字是 send_hoo.py

这个代码的作用。

  • 可以分发平台币「hoo
    • 从一个总地址,然后发到不同的地址上
    • A 地址有 10hoo ,你准备 100 个账号,然后,A 地址的 hoo 批量发到这 100 个账号中

先说一下目录结构

  • hoo_airdrop.xlsx
  • send_hoo.py

其中,hoo_airdrop.xlsx 一共有两列,第一列是地址,第二列是这个地址的私钥。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
author: 犀牛

该脚本可以把 A 账号的 hoo 分别批量发到不同的账号上

params

user_hoo 每个账号分多少 hoo
private_key A 账号的私钥
address A 账号的地址

配置文件

hoo_airdrop
该文件的第一列是分发账号的地址
"""
from web3 import Web3
import time
import xlrd

w3 = Web3(Web3.HTTPProvider('https://http-mainnet.hoosmartchain.com'))

user_hoo = 0.1
private_key = "0x7392099***私钥"
address = "0xdc986c339e81***地址"
sleep_time = 5
file_name = "./hoo_airdrop.xlsx"


def init_address():
xls = xlrd.open_workbook(file_name)
addresses = xls.sheets()[0].col_values(0)
print("一共有 " + str(len(addresses)) + " 地址")
return addresses


def send_hoo():
fromAddress = Web3.toChecksumAddress(address)
addresseres = init_address()
for _add in addresseres:
toAddress = Web3.toChecksumAddress(_add)
nonce = w3.eth.getTransactionCount(fromAddress)
balance = w3.eth.get_balance(toAddress)
if w3.fromWei(balance, "ether") >= user_hoo:
continue
gasPrice = w3.eth.gasPrice
value = Web3.toWei(user_hoo, 'ether')
gas = w3.eth.estimateGas({'from': fromAddress, 'to': toAddress, 'value': value})
transaction = {'from': fromAddress,
'to': toAddress,
'nonce': nonce,
'gasPrice': gasPrice,
'gas': gas,
'value': value,
'data': ''}

signed_tx = w3.eth.account.signTransaction(transaction, private_key)
txn_hash = w3.eth.sendRawTransaction(signed_tx.rawTransaction)
print(Web3.toHex(txn_hash))
time.sleep(sleep_time)
while w3.eth.getTransactionCount(fromAddress) == nonce:
time.sleep(2)


def check_hoo():
# 检查每个地址的 hoo 数量
addresseres = init_address()
for _add in addresseres:
checkAddress = Web3.toChecksumAddress(_add)
balance = w3.eth.get_balance(checkAddress, 'latest')
print('地址{0} => {1}'.format(_add, w3.fromWei(balance, 'ether')))
time.sleep(0.5)


if __name__ == '__main__':
send_hoo()
check_hoo()
请我喝杯咖啡吧~