Solidity

如何使用 truffle 控制台查看已部署的“StandardToken”合約所有者

  • May 8, 2018

我已經使用具有以下建構子的 ERC20 令牌部署了 testrpc 合約:

pragma solidity ^0.4.4;
import 'zeppelin-solidity/contracts/token/StandardToken.sol';

contract TutorialToken is StandardToken {
   string public name = 'TutorialToken';
   string public symbol = 'TT';
   uint public decimals = 2;
   uint public INITIAL_SUPPLY = 12000;

   function TotorialToken() {
       totalSupply = INITIAL_SUPPLY;
       balances[msg.sender] = INITIAL_SUPPLY;
   }
}

我的理解是合約將由第 0 個 testrpc 帳戶部署。但是,當我這樣做時

TutorialToken.deployed().then(c => c.balanceOf('<0th account addr>').then(b => console.log(b)))

它顯示

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

因此,該帳戶似乎沒有餘額。我也看不到元遮罩的“令牌”選項卡中的餘額。似乎使用了其他地址來創建帳戶。但是我找不到任何功能來查看誰是契約創建者(誰是msg.sender)。

是否可以在 truffle 控制台中查看誰是合約創建者?

更新

平衡的問題是由於錯字:建構子名稱而TotorialToken不是TutorialToken.

最初的問題仍然存在:如何列印契約所有者?

更新#2

要真正看到契約所有者,我可以這樣做(感謝 pabloruiz55 的建議):

address owner;

function TutorialToken() {
   owner = msg.sender;
   ...
}

這樣可行。所以我想我的問題是不同的:OpenZeppelin 的StandardTokencontainsowner欄位是否可以訪問?

對StandardToken的檢查顯示如下繼承層次結構:

 ERC20Basic
  /      \
ERC20  BasicToken
  \      /
StandardToken

在每個契約中包含以下欄位:

StandardToken:
   mapping (address => mapping (address => uint256)) allowed

ERC20:
   none

BasicToken: 
   mapping(address => uint256) balances

ERC20Basic:
   uint totalSupply

為了擁有owner財產契約,應該延長Ownable契約(感謝 Ismael 的提示):

contract TutorialToken is StandardToken, Ownable {
  ...
}

最簡單的方法是在部署時將合約的所有者/創建者儲存在狀態變數中。

pragma solidity ^0.4.8;
contract myContract  {

   address public owner;

   function myContract() {
       owner = msg.sender;
   }
}

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