繁体   English   中英

Remix solidity 不会在私有以太坊链上返回结果

[英]Remix solidity does not return result on private ethereum chain

我刚开始学习以太坊和混音,这个问题对你来说可能很愚蠢。

我在嵌入在 remix ide 中的 javascript vm 上尝试了以下代码,它工作得很好,但它无法在我早期设置的私有链上返回字符串,即使它没有报告任何错误。 我使用的solidity代码如下。

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.7;
contract Greeter {

    function greet() external pure returns(string memory) {
        return "Hello, World!";
    }

}

任何人都可以提供一些想法我可能会出错吗? PS 我设置miner.start() ,并使用以下脚本启动私有链:

geth --datadir data --networkid 18810100026 --port 60000 --rpc  --rpcport 8100 --rpcaddr 0.0.0.0 --bootnodes enode://****73c2e56ed109f7ab559bc0df26e01e4a72c4eef660d0853e8c241a737b43bd7f7da32d22e272fe187f7063d9559691@****:30301 --rpcapi eth,web3,miner,admin,personal,net --rpccorsdomain "*"```

geth version is 1.7.3

私链上运行的合约截图

在 javascript VM 上运行的合约截图

我认为有两个事实可能导致这样的错误

  1. 我没有将geth更新到当前的最新版本。
  2. 我没有正确初始化创世区块。

所以我做了两个修改来解决这样的问题

  1. geth更新到 1.10.17
  2. puppeth自动生成的 genesis json 文件中添加两行,如下
{
  "config": {
    ...
    "byzantiumBlock": 4,
    "constantinopleBlock": 5,
    ...
  },
...

之后问题就解决了。

我觉得你的合同没问题!

我将您的代码复制到 Remix 0.23.3 上的新合约中,并返回问候功能:“Hello,World!”

也许你在另一个版本中使用了 remix ide,或者你的 ide 有错误。 我建议您使用其他浏览器进行混音或使用其他 ide 来获得稳固性,例如安全帽https://hardhat.org/

我打招呼的结果: 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM