Web3js

混音 IDE 中的錯誤

  • March 28, 2022

在將它連接到“web3.js@0.20.2”時,我在“remix IDE”中遇到了這種類型的錯誤

錯誤:無法解碼輸出:錯誤:uint256 類型的數據不足(arg="", coderType=“uint256”, value=“0x00”)

<!DOCTYPE html>
<head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <script src="./node_modules/web3/dist/web3.min.js">
   </script>
</head>

<body>
<input id="name" name="choice" type="text"> Vote: </input>
<button id="button">Submit : </button>
<h2 id="instructor"></h2>
</body>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script>

   if (typeof web3 !== 'undefined') {
       web3 = new Web3(web3.currentProvider);
   } else {
       // set the provider you want from Web3.providers
       web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
   }

// Previous if/else statement removed for brevity

web3.eth.defaultAccount = web3.eth.accounts[0];
console.log(web3.version)
var vote= web3.eth.contract([
   {
       "constant": false,
       "inputs": [
           {
               "name": "x",
               "type": "uint256"
           }
       ],
       "name": "set",
       "outputs": [],
       "payable": false,
       "stateMutability": "nonpayable",
       "type": "function"
   },
   {
       "constant": true,
       "inputs": [],
       "name": "get",
       "outputs": [
           {
               "name": "",
               "type": "uint256"
           },
           {
               "name": "",
               "type": "uint256"
           }
       ],
       "payable": false,
       "stateMutability": "view",
       "type": "function"
   }
]);

vote_add=vote.at('0x6b3c179a96c329dcf93f2d27310c77e88e651af6');

console.log(vote_add);
$("#button").click(function() {
           vote_add.set($("#name").val());
       });

vote_add.get(function(error, result){
           if(!error)
               {
                   $("#instructor").html(result[0]+' ('+result[1]+' years old)'+result[2]+result[3]+result[4]+result[5]);
                   console.log(result);
               }
           else
               console.log(error);
       });
</script>
</html>

堅固性程式碼:-

pragma solidity ^0.5.0;
contract vote
{
   uint public c0=0;
   uint public c1=0;
   uint public c2=0;
   uint public c3=0;
   uint public c4=0;
   uint public c5=0;
   function set(uint x) public {
       if(x==0)
       {
           c0+=1;
       }
       else if(x==1)
       {
           c1+=1;
       }
       else if(x==2)
       {
           c2+=1;
       }
       else if(x==3)
       {
           c3+=1;
       }
       else if(x==4)
       {
           c4+=1;
       }
       else if(x==5)
       {
           c5+=1;
       }
       else
       {

       }
   }
   function get() public view returns(uint,uint,uint,uint,uint,uint)
   {
       return (c0,c1,c2,c3,c4,c5);
   }
}

在此處輸入圖像描述

如果您在連接網路時遇到任何問題(比如說ganache),您可以嘗試以下步驟:

  1. 確保ganache已啟動並執行(最好在埠 8545 上)
  2. remix將環境更改為Web3 Provider並從彈出視窗中確認地址。
  3. 如果您想通過元遮罩連接,請將remix環境更改為Injected web3. 確保您已連接到正確的網路metamask。您可以通過點擊右上角的網路選項來更改網路並選擇localhost 8545連接到本地執行ganache在此處輸入圖像描述

希望它會有所幫助。

我也遇到了同樣的錯誤。

geth我認為原因是:solidity 程式碼版本與 web3 提供者的( )版本不兼容。

解決方法是:將solidity程式碼和geth客戶端更新到最新版本,或者讓solidity版本與客戶端版本兼容geth

引用自:https://ethereum.stackexchange.com/questions/77418