3

我有以下功能的合同:

 function supply () constant returns (uint sup) {
    sup = 100;
    return sup;
  }

跑步

  var token = web3.eth.contract(contractAbi).at(contractAddress);
  token.supply.call()

返回:

{ [String: '0'] s: 1, e: 0, c: [ 0 ] }

这里有什么问题?我在合同中的所有功能都会发生这种情况。

谢谢!

4

1 回答 1

2

你会得到“BigNumber”格式,这对于 uint(256) 来说总是如此,因为数字比 Javascript 实际可以处理的要大。

考虑使用返回值格式。此处的示例/文档:https ://github.com/ethereum/wiki/wiki/JavaScript-API#a-note-on-big-numbers-in-web3js

松露风格(承诺)

token.supply.call().then(function(returned) {
   console.log(returned.toString(10));
}

回调样式

token.supply.call(function(error, returned) {
  if(!error) {
    console.log(returned.toString(10));
  } else {
    console.error(error);
});

上面的例子可能会失去一些精度。从上面链接的文档...

建议在 wei 中始终保持平衡,仅在呈现给用户时将其转换为其他单位:

希望能帮助到你。

更新:

该合同在 Remix 中适用于我,因此我将专注于您调用函数并等待响应的方式。

在此处输入图像描述

于 2017-04-04T05:19:59.123 回答