Web3js

ValueError: {‘code’: -32000, ‘message’: ‘only replay-protected (EIP-155) transactions allowed over RPC’}

  • August 8, 2021

下午好,在開發區塊鍊網路應用程序幾個月後,這是我第一次在進行交易時遇到此錯誤。

ValueError: {'code': -32000, 'message': 'only replay-protected (EIP-155) transactions allowed over RPC'}

這是我的程式碼。它一直有效,我想這不是程式碼問題,可能只是 Web3 的問題,但我只是在問以防萬一。提前致謝。

tx = {
       'nonce': nonce,
       'to': account_2,
       'value': web3.toWei(float_amount, 'ether'),
       'gas': 21000,
       'gasPrice': web3.toWei(50, 'gwei')
   }
   signed_tx = web3.eth.account.sign_transaction(tx, private_key)
   tx_hash = web3.eth.send_raw_transaction(web3.toHex(signed_tx.rawTransaction))

您需要將 chainId 添加到您的交易對像中,以防止您的 tx 在其他鏈上被重放。

tx = {
   'chainId': 3, // for ropsten
   'nonce': nonce,
   'to': account_2,
   'value': web3.toWei(float_amount, 'ether'),
   'gas': 21000,
   'gasPrice': web3.toWei(50, 'gwei')
}

在此處查看所有基於 EVM 的鏈的鏈 ID

另一種繞過方法是使用--rpc.allow-unprotected-txs. 尤其是在您無法指定 ID 的情況下。

引用自:https://ethereum.stackexchange.com/questions/94412