Solidity 函数不返回预期数据

Solidity Functions Not Returning Expected Data

我有一个具有以下功能的合同:

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

运行

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

returns:

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

这是怎么回事?我在合同中的所有功能都会发生这种情况。

谢谢!

你得到的是 "BigNumber" 格式,uint(256) 总是这样,因为数字大于 Javascript 实际可以处理的数字。

考虑使用返回值格式。 Examples/docs 这里: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);
});

以上示例可能会降低一些精度。从上面链接的文档...

it is recommended to keep you balance always in wei and only transform it to other units when presenting to the user:

希望对您有所帮助。

更新:

合同在 Remix 中对我有效,所以我会专注于您调用函数的方式和等待响应