2017-04-04 7 views
1

を返さない:ソリディティの機能は、私は次の関数との契約を持っている期待されるデータ

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

をここで何が悪いのでしょうか?これは契約のすべての機能で起こっています。

ありがとうございます!

答えて

2

Javascriptが実際に処理できる数よりも大きいため、常にuint(256)の場合は「BigNumber」形式になります。

戻り値の形式で再生することを検討してください。ここでは例として/ドキュメント:上記実施例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); 
}); 

おそらくいくつかの精度を失うことになります。上記のリンクドキュメントから...

魏で常にバランスをとるだけのユーザに提示する際に他のユニットに にそれを変換するあなたを維持することをお勧めします。

はそれがお役に立てば幸いです。

更新:契約がリミックスで私の作品、私はあなたが応答を待っている機能とを呼び出している途中に焦点を当てる

enter image description here

+0

おかげでロブは、あなたは私が期待される100背中を取得し、代わりに0が届かない理由はどのような理由を見ることができますか? – rhythmthumper

+0

あなたはgeth、truffle consoleなど何かにいますか?コールバックを待っていますか? –

+0

ありがとうございました。私はトリュフルとtestrpcを使い、物事をテストするためにexecを使っています。私は今すべて働いている、私はそれぞれの新しい展開と契約アドレスを更新していない。 – rhythmthumper

関連する問題