Solidity

松露的加工

  • October 5, 2018

以下是我的程式碼

pragma solidity ^0.4.2;

contract DappToken {
 //Constructor
 // set no of Tokens
 // Read the total number of Tokens
 uint256 public totalSupply;

 function DappToken () public {
   totalSupply = 10000000;
 }
}

現在我要與 Truffle 互動 1) 我已經完成了 Truffle 遷移

  1. 在 Truffle 控制台中,我使用了 DappToken.deployed().then(function(i) {token = i ;})

3)deployed() 返回一個承諾,然後回電(如果我錯了,請糾正我)

4)接下來我用

token.totalSupply 
{ [Function]
 call: [Function],
 sendTransaction: [Function],
 request: [Function: bound ],
 estimateGas: [Function] }

// 它顯示以下輸出

totalSupply 是我給出的變數的名稱,但它在方括號中顯示 Function 任何人都可以解釋松露如何在內部編譯以及為什麼它顯示為 Function 我嘗試 了 token.DappToken.totalSupply它顯示我認為的錯誤它將進入合約內部並呼叫變數

Solidity 不直接公開變數,但它創建了一個公共的 getter 函式。

您的範例將像這樣。

contract DappToken {
 uint256 public _totalSupply;

 function DappToken () public {
   _totalSupply = 10000000;
 }
 function totalSupply() public view returns (uint256) {
   return _totalSupply;
 }
}

要獲得總供應量,您必須像正常函式一樣進行呼叫。

token.totalSupply().then((result) => { console.log(result); } )

這是文件。我認為您需要在類似於以下範例的token.totalSupply內部呼叫:then()

var account_one = "0x1234..."; // an address

var meta;
MetaCoin.deployed().then(function(instance) {
 meta = instance;
 return meta.getBalance.call(account_one, {from: account_one});
}).then(function(balance) {
 // If this callback is called, the call was successfully executed.
 // Note that this returns immediately without any waiting.
 // Let's print the return value.
 console.log(balance.toNumber());
}).catch(function(e) {
 // There was an error! Handle it.
})

引用自:https://ethereum.stackexchange.com/questions/59899