首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复无效地址错误?Web3 JS与MetaMask

如何修复无效地址错误?Web3 JS与MetaMask
EN

Stack Overflow用户
提问于 2019-11-03 17:42:55
回答 1查看 4.5K关注 0票数 0

我把我的合同部署到Goerli测试网。部署是成功的。我在里米克斯做了测试。

合同代码:

代码语言:javascript
运行
复制
pragma solidity ^0.5.0;

contract Test{
    
    string private str;
    
    constructor() public {
        str = " ";
    }
    
    function getStr() public view returns(string memory  _str){
        _str = str;
    }
    
    function setStr(string memory  _str) public{
        str = _str;
    }
}

然后我尝试用web3和MetaMask制作一个网络接口。

代码语言:javascript
运行
复制
<script>
        ethereum.enable()
        var abi = [
    {
        "constant": false,
        "inputs": [
            {
                "internalType": "string",
                "name": "_str",
                "type": "string"
            }
        ],
        "name": "setStr",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "constructor"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "getStr",
        "outputs": [
            {
                "internalType": "string",
                "name": "_str",
                "type": "string"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    }
    ];
        var address = 0x4316d047388e61EBC3Ed34DFf4cEE215840decDa;
        var myContract = web3.eth.contract(abi);
        var TestC = myContract.at(address);
        console.log(TestC);
    var x = TestC.getStr();
</script>

当我运行它时,它又回来了:

未登录错误:无效地址

at c (inpage.js:1)

在inputCallFormatter (inpage.js:1)

在inpage.js:1

在Array.map ()

在o.formatInput (inpage.js:1)

在o.toPayload (inpage.js:1)

在w.e as call

在u.call (inpage.js:1)

在u.execute (inpage.js:1)

at (指数):46

我需要做什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 17:30:19

您的变量address应该是一个十六进制字符串,而不是一个文字十六进制数字--即使它最终被ethereum节点转换为一个数字。

试一试:

代码语言:javascript
运行
复制
        var address = '0x4316d047388e61EBC3Ed34DFf4cEE215840decDa';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58682902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档