【问题标题】:web3 error: BigNumber Error: "new BigNumber() not a base 16 number: "web3 错误:BigNumber 错误:“new BigNumber() 不是以 16 为基数的数字:”
【发布时间】:2019-03-25 12:24:54
【问题描述】:

我试图让这个简单的 Dapp 工作,我将变量 nombre 和 edad 发送到 setInstructor() 函数,然后由 getInstructor() 函数返回。问题是我不断收到BigNumber Error: "new BigNumber() not a base 16 number:。有什么想法吗?

团结

pragma solidity ^0.4.25;


contract Contrato {

  string fName;
  uint age;

  function setInstructor (string _fName, uint _age){
      fName = _fName;
      age = _age;

  }

  function getInstructor () public constant returns (string, uint){
      return (fName, age);
  }

}

Web3

var Contrato = web3.eth.contract(ABI);
var Contratito = Contrato.at(Address);

$("#button").click(function(){

    Contratito.setInstructor($("#nombre").val(), $("#edad").val(), function(error,result){if (!error) { console.log("bien") } else { console.error(error)}});

    Contratito.getInstructor(function(error,result){ if (!error) { $("#instructor").html(result[0] + " " + result[1])} else {console.error(error)}});

})

【问题讨论】:

    标签: javascript solidity web3


    【解决方案1】:

    我首先将$("#edad").val() 转换为一个数字,而不是最有可能返回的字符串。如果这不起作用,我会使用 new BigNumber(...) 手动将两个 .val() 结果转换为 BigNumbers。

    让我知道我们在 cmets 中的位置,希望我们能尽快解决这个问题!

    【讨论】:

    • 我尝试了 BigNumber() 的想法,并使用给定的值而不是从 DOM 请求的值测试了该函数,并且同时尝试了这两种方法。但它仍然不起作用。我读到 github 存储库中存在 BigNumber() 错误问题,但不知道在这种特殊情况下如何解决。
    • 很抱歉,我希望我能做更多,但这似乎是 stackexchange 上的一个类似问题(必须喜欢不同之处):ethereum.stackexchange.com/questions/1741/…
    【解决方案2】:

    我也遇到了这个问题,为了解决这个问题,我必须将 MetaMask 浏览器扩展使用的网络更改为 javascript 代码中指定的网络。确保合约地址位于 MetaMask 扩展使用的网络上。此外,您可能应该在以太坊堆栈交换网站上发布您与以太坊相关的问题以获得更快的回复:https://ethereum.stackexchange.com

    【讨论】:

      【解决方案3】:

      在我的情况下,问题与正在使用的 EVM 版本有关。

      我必须从默认版本 (bizantium) 转移到明确指出 homestead 版本并且它工作。

      但注意 宅基地 是最古老的,所以我不确定我的选择的含义。我没有尝试其他版本,因为它只是用于测试目的的合同。

      编译合约并指示EVM版本的命令(示例):

      solc --evm-version <VERSION> contract.sol
      

      参考:https://solidity.readthedocs.io/en/v0.5.3/using-the-compiler.html#setting-the-evm-version-to-target

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-08
        • 2022-08-14
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2021-12-28
        • 2018-07-20
        • 2020-09-06
        相关资源
        最近更新 更多