无法将合约从 web3 部署到 geth 节点,错误:交易已被 EVM 还原

Posted

技术标签:

【中文标题】无法将合约从 web3 部署到 geth 节点,错误:交易已被 EVM 还原【英文标题】:can't deploy contract from web3 to geth node , Error: Transaction has been reverted by the EVM 【发布时间】:2022-01-06 07:12:18 【问题描述】:

我在 Nodejs 项目中运行 web3。 我用过这个 genesis.json:


"config": 
    "chainId": 123456,
    "homesteadBlock": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "petersburgBlock": 0
,
"alloc": 
    "0xa6B49C993142E**************************": 
        "balance": "120000000000000000000000"
    ,
    "0xfd2041dcdc815**************************":
        "balance": "120000000000000000000000"
    
,
"difficulty": "0",
"gasLimit": "8000000"

我在之前的 genesis 文件中有 geth init。 我在远程实例上运行 geth。 这是 geth 命令:

sudo geth --port 3001 --networkid 123456 --nodiscover --datadir=./blkchain --maxpeers=0 --keystore ~/.ethereum/keystore --http --miner.etherbase 0xa6B49C9931************** --miner.threads 1 --http.port 8545 --http.addr 0.0.0.0 --http.corsdomain "*" --http.api "eth,net,web3,personal,miner" --ws --ws.port 8545 --ws.addr 0.0.0.0 --ws.api "eth,net,web3,personal,miner" --allow-insecure-unlock --unlock 0xa6B49C9931************** --syncmode fast

当尝试从 web3 部署新合约时(我已经尝试了许多 web3 版本,包括所有稳定版本),我收到了这个错误: 错误:交易已被 EVM 还原, TransactionRevertedWithoutReasonError....

但另一方面,对于 Truffle 中的同一个合约,我成功迁移并部署了同一个合约。

有人有这个问题吗?

【问题讨论】:

【参考方案1】:

如果您在本地网络上部署以测试您的合同,您应该考虑使用ganache。 它有图形用户界面,与松露配合得很好

【讨论】:

以上是关于无法将合约从 web3 部署到 geth 节点,错误:交易已被 EVM 还原的主要内容,如果未能解决你的问题,请参考以下文章

初识SolidityRemix与Geth节点结合部署智能合约

部署智能合约时出现节点错误 - Web3.js

调用 web3.js,连接 infura 节点进行合约转账

仅使用 EVM API 在区块链上部署智能合约,而不使用 geth 或 tuffle 或 ganache?

如何获取以太坊合约和账户信息(使用geth和web3.py)

Python Web3 开发:用 Brownie 部署智能合约