# web3py 交互流程 **Published by:** [cryptodw.eth](https://paragraph.com/@cryptodw/) **Published on:** 2022-06-12 **URL:** https://paragraph.com/@cryptodw/web3py ## Content transaction参数应该是包含以下字段的字典。from: ,校验和地址或 ENS 名称 -(可选,默认值:) 发送交易的地址。bytes or textweb3.eth.defaultAccountto: ,校验和地址或 ENS 名称 - (创建新合约时可选)交易指向的地址。bytes or textgas: integer- (可选)为交易执行提供的气体的整数。它将返回未使用的气体。maxFeePerGas: - (可选)您愿意支付的最高金额,包括和。和之间的差额退还给用户。integermaxPriorityFeePerGas: - (可选)支付给矿工的部分费用integer or hexgasPrice: integer- 用于每个付费 gas LEGACY的 gasPrice 的整数- 除非你有充分的理由使用gasPrice, 使用maxFeePerGas andmaxPriorityFeePerGas代替。value: integer- (可选)与此交易一起发送的值的整数data: - 合约的编译代码或调用的方法签名和编码参数的哈希值。有关详细信息,请参阅 以太坊合约 ABI。bytes or textnonce: integer- (可选)随机数的整数。这允许覆盖您自己的使用相同 nonce 的待处理事务。from web3 import Web3 import json rpc = '公链的RCP' # 链接网络 w3 = Web3(Web3.HTTPProvider(rpc)) # 如果是合约交互。就需要在获取合约地址和合约的ABI # 交互的地址 address = '钱包地址' # 如果要发送事务,就需要私钥 private_key = '私钥' # 合约地址 contractAddress= Web3.toCheckSumAddress('合约地址') # 合约ABI contractABI = json.loads('合约ABI') # 构建合约 contract = w3.eth.contract(address=contractAddress, abi=contractABI) # 调用合约函数 func = contract.functions.函数名() # get_nonce nonce = w3.eth.getTransactionCount(address) # 构建交易参数 tx = { 'nonce' : nonce, 'to' : '交易接收的账户', 'value' : Web3.toWei(1, 'ether'), 'gas' : 2000000, 'gasPrice' : Web3.toWei(50, 'gwei'), } # 签名 sign_tx = w3.eth.account.sign_transaction(tx, private_key) # 发送交易 取得交易hash tx_hash = w3.eth.send_raw_transaction(sign_tx.rawTransaciton) # hash 值转换成十六进制 Web3.toHex(tx_hash) ## Publication Information - [cryptodw.eth](https://paragraph.com/@cryptodw/): Publication homepage - [All Posts](https://paragraph.com/@cryptodw/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@cryptodw): Subscribe to updates - [Twitter](https://twitter.com/cryptoD1231): Follow on Twitter