签名交易的发件人无效 - 孟买多边形
Posted
技术标签:
【中文标题】签名交易的发件人无效 - 孟买多边形【英文标题】:Invalid sender on signed transaction - mumbai polygon 【发布时间】:2021-11-21 20:38:58 【问题描述】:我在孟买部署了与在 ropsten to mint nfts 上部署相同的智能合约,没什么太花哨的。然后,我使用 web3 库设置了一些 python 代码来调用铸币函数。当我在 ropsten 上测试时,代码可以正常工作,但在 mumbai 上尝试时却失败了。我也担心多边形主网上的这种失败。我想我正在为每个网络使用正确的chainId。我在签署交易和发送原始版本时得到的错误代码是:‘code’: -32000, ‘message’: ‘invalid sender’。你知道会发生什么吗?
import os
from web3 import Web3
from web3.middleware import geth_poa_middleware
from eth_account import Account
w3 = Web3(Web3.HTTPProvider(f"https://polygon-mumbai.infura.io/v3/os.environ['WEB3_INFURA_PROJECT_ID']"))
#w3 = Web3(Web3.HTTPProvider(f"https://polygon-mainnet.infura.io/v3/os.environ['WEB3_INFURA_PROJECT_ID']"))
#w3 = Web3(Web3.HTTPProvider(f"https://ropsten.infura.io/v3/os.environ['WEB3_INFURA_PROJECT_ID']"))
w3.middleware_onion.inject(geth_poa_middleware, layer=0)
print(w3.isConnected())
addr = "0x0D3C0D1C13a973DEFAe0dBA184081bDE0eD55B4C" # DMT on Polygon Mumbai
#addr = "0x74a4bf35Ec669A500541c1137A1fcDfa5f45194c" # DMT on Ropsten
acct = Account.privateKeyToAccount(os.environ['PRIVATE_KEY'])
#abi = ... # lots of stuff
contract_instance = w3.eth.contract(address=w3.toChecksumAddress(addr), abi=abi)
print(contract_instance.functions.lastTokenId().call())
nonce = w3.eth.get_transaction_count(acct.address)
test = 'https://ipfs.io/ipfs/mydata'
tx_hash = contract_instance.functions.autoMint(acct.address, test).buildTransaction(
'from': acct.address,
'chainId': 80001, # mumbai
#'chainId': 3, # ropsten
'gas': int(1e6),
'maxFeePerGas': w3.toWei('2', 'gwei'),
'maxPriorityFeePerGas': w3.toWei('1', 'gwei'),
'nonce': nonce
)
signed_txn = w3.eth.account.sign_transaction(tx_hash, private_key=acct.privateKey)
tx_sent = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
我使用的提供商是 infura 通过 http 访问区块链。你认为这个错误是由他们的 api 引起的吗?
【问题讨论】:
您是否启用了 Polygon API 并使用了来自 Infura 的正确 API 密钥?您与 API Key 的交易是否成功? 【参考方案1】:使用 1559 年之前的费用结构对其进行了修复
tx_hash = contract_instance.functions.automint(acct.address, test).buildTransaction(
'chainId': 0x13881, # mumbai
#'chainId': 3, # ropsten
'gasPrice': w3.toHex(w3.toWei('20', 'gwei')),
'nonce': nonce,
'from': acct.address
)
【讨论】:
以上是关于签名交易的发件人无效 - 孟买多边形的主要内容,如果未能解决你的问题,请参考以下文章