Solidity函数不返回预期数据

时间:2017-04-04 04:08:00

标签: ethereum solidity

我与以下函数签订了合同:

 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 ] }

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

谢谢!

1 个答案:

答案 0 :(得分:3)

你得到的是“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);
});

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

  

建议始终保持平衡,只有转换   在向用户展示时,它会出现在其他单位:

希望它有所帮助。

<强>更新

合同在Remix中适用于我,因此我将专注于您调用该功能的方式以及等待响应

enter image description here