Ниже приведен мой код в солидности
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
2) В консоли Truffle я использовал DappToken.deployed().then(function(i) {token = i;})
3)deployed() возвращает обещание, а затем перезванивает (поправьте меня, если я ошибаюсь)
4) Далее я использовал
token.totalSupply
{ [Function]
call: [Function],
sendTransaction: [Function],
request: [Function: bound ],
estimateGas: [Function] }
// Он показывает следующий вывод
totalSupply - это имя переменной, которую я дал, но она показывает функцию в квадратных скобках. Может ли кто-нибудь объяснить, как трюфель компилируется внутри и почему он показывает меня как функцию, которую я пробовал token.DappToken.totalSupply , это показывает мне ошибку, я думал он войдет внутрь контракта и вызовет переменную
Solidity не предоставляет переменные напрямую, но создает общедоступную функцию получения.
Ваш пример будет вести себя так.
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.
})