web3.py发送BSC签名交易报错transaction type not supported如何解决
错误原因排查
- 核心错误原因是你构造的交易类型不被BSC网络支持:你在交易参数里设置了
'type': 2,这是EIP-1559标准的交易类型,BSC主网当前未兼容该类交易,仅支持传统的Legacy(类型0)交易。 - 配套的EIP-1559专属参数
maxFeePerGas、maxPriorityFeePerGas也不适用于BSC网络,需要替换为Legacy交易使用的gasPrice参数。
修改方案
你需要对交易构造部分的代码做三处调整:
- 移除交易参数中的
'type': 2字段,默认会使用兼容BSC的Legacy交易类型 - 删除
maxFeePerGas、maxPriorityFeePerGas两个参数,替换为gasPrice参数 - 普通BNB转账固定消耗21000 gas,不需要自行按金额换算,直接赋值即可减少出错概率
修改后的交易构造代码示例
# 其余代码保持不变,仅修改tx构造部分即可 tx = { 'from': MY_ADDRESS, 'to': REF_ADDRESS, 'value': web3.toWei(0.0001, 'ether'), 'gas': 21000, # 普通BNB转账固定21000 gas即可 'chainId': web3.eth.chain_id, 'gasPrice': web3.toWei(5, 'gwei'), # 替换原EIP-1559专属的gas费参数 'nonce': web3.eth.get_transaction_count(MY_ADDRESS), }
内容的提问来源于stack exchange,提问作者Mikhail Z
相关产品推荐
相关产品推荐

