Solidity 合约部署因缺少 trie 节点错误而失败

问题描述 投票:0回答:1

我正在尝试使用 Remix 部署一个简单的 Solidity 合约,但遇到与缺少 trie 节点相关的错误。这是我的合约代码:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

contract sample{
    function fCalldata(uint[] calldata _x) public pure returns (uint[] calldata){
        // 参数为 calldata 数组,不能被修改
        // _x[0] = 0;
        return(_x);
    }

    uint[] x = [1,2,3]; // 状态变量,数组 x

    function fStorage() public {
        // 声明一个 storage 的变量,指向 x。修改xStorage 也会影响 x
        uint[] storage xStorage = x;
        xStorage[0] = 100;
    }

}

当我尝试在 Remix 上部署此合约时,收到以下错误:

创建样本出错:发生错误:处理响应错误(body =“{”jsonrpc”:“2.0”,“id”:74,“error”:{“code”:-32000,“message”:“缺少特里树节点 c91d4ecd59dce3067d340b3aadfc0542974b4fb4db98af39f980a91ea00db9dc (路径)状态 0xc91d4ecd59dce3067d340b3aadfc0542974b4fb4db98af39f980a91ea00db9dc 不是可用,未找到”}} ", error={"code":-32000}, requestBody="{"method":"eth_getStorageAt","params":["0xb2a5a8a976688097483a68cdd2f534c6bb0351ac","0x000000000000000000000000000000000 0000000000000000000000000000000","0x1"],"id":74," jsonrpc":"2.0"}",requestMethod="POST",url="https://go.getblock.io/ee42d0a88f314707be11dd799b122cb9",代码=SERVER_ERROR,版本=web/5.7.1)。 处理响应错误(body =“{”jsonrpc“:“2.0”,“id”:74,“error”:{“code”:-32000,“message”:“缺少特里节点c91d4ecd59dce3067d340b3aadfc0542974b4fb4db98af39f980a91ea00db9dc(路径)状态0xc91d4 ecd59dce3067d340b3aadfc0542974b4fb4db98af39f980a91ea00db9dc 不是可用,未找到”}} ", error={"code":-32000}, requestBody="{"method":"eth_getStorageAt","params":["0xb2a5a8a976688097483a68cdd2f534c6bb0351ac","0x000000000000000000000000000000000 0000000000000000000000000000000","0x1"],"id":74," jsonrpc":"2.0"}",requestMethod="POST",url="https://go.getblock.io/ee42d0a88f314707be11dd799b122cb9",代码=SERVER_ERROR,版本=web/5.7.1) 如果交易耗尽 Gas,您可能需要谨慎增加 Gas 限制。

无论我如何提高gas limit。 在此输入图片描述

但是,当我删除以下部分代码时,合约部署成功:

uint[] x = [1,2,3]; // 状态变量,数组 x

function fStorage() public {
    // 声明一个 storage 的变量,指向 x。修改xStorage 也会影响 x
    uint[] storage xStorage = x;
    xStorage[0] = 100;
}

预先感谢您的帮助!

ethereum blockchain solidity smartcontracts remix-ide
1个回答
0
投票

事实证明这根本与代码无关,而是 Chrome 浏览器的问题。使用 Remix VM(坎昆)时,帐户未显示。但是,切换到其他浏览器(例如 Microsoft Edge)解决了该问题,并且帐户现在可以正确显示。

因此,如果其他人遇到此问题,请尝试使用其他浏览器,看看是否可以解决问题。谢谢大家的建议!

© www.soinside.com 2019 - 2024. All rights reserved.