首页 > 解决方案 > Ropsten 测试网络的 Solidity - 未捕获的错误:无效地址

问题描述

我正在关注 d-apps 的一些教程,教程的链接在这里:https ://www.youtube.com/watch?v=KkZ6iYnSDRw

我尝试使用 Ropsten 网络将我的前端脚本与 metamask 连接起来。

我做错了什么?

加载页面时,应在 HTML 文件中显示的变量(HTML 文件没有任何问题)显示没有问题。但是,在我单击按钮触发更改该变量名称的函数后,控制台中出现以下错误:

未捕获的错误:地址无效

在 v (web3.min.js:2)

在 l (web3.min.js:2)

在 web3.min.js:2 在 Array.map ()

在 i.formatInput (web3.min.js:2)

在 i.toPayload (web3.min.js:2) 在 re [as sendTransaction] (web3.min.js:2)

在 c.sendTransaction (web3.min.js:2)

在 c.execute (web3.min.js:2)

在 HTMLFormElement。((指数):125)

if (typeof web3 !== 'undefined') {
        web3 = new Web3(web3.currentProvider);
      } else {

        web3 = new Web3(new Web3.providers.HttpProvider (MY_INFURA_API));

      
      }
      console.log("web3 is:",web3)
      // Set Account
      web3.eth.defaultAccount = web3.eth.accounts[0];

      // Set Contract Abi
      var contractAbi = [
    {
        "constant": true,
        "inputs": [],
        "name": "candidateName",
        "outputs": [
            {
                "name": "",
                "type": "string"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "name": "_name",
                "type": "string"
            }
        ],
        "name": "setCandidate",
        "outputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "inputs": [],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "constructor"
    }
]
      
      
      
      
      
      // Add Your Contract ABI here!!!

      // Set Contract Address 
      // for ropston
      var contractAddress = // Add Your Contract address here!!!
      


      // Set the Contract
      var contract = web3.eth.contract(contractAbi).at(contractAddress);

      // Display Candidate Name
      contract.candidateName(function(err, candidateName) {
        $('#candidateName').html(candidateName);
      });

      // Change the Candidate Name
      $('form').on('submit', function(event) {
        event.preventDefault();
        console.log(contract)
        contract.setCandidate($('input').val());
    
      })

更新:我意识到我很粗心,将地址放入变量“web3.eth.defaultAccount”后,无效地址问题似乎得到了解决。但是,我收到如下所示的错误。 在此处输入图像描述

第二次更新:已解决;我关注了 https://ethereum.stackexchange.com/questions/66345/how-to-use-sendtransaction-to-send-erc20-tokens-through-metamask/66368

标签: ethereumsolidityweb3trufflemetamask

解决方案


推荐阅读