Contract-Design

發布兩個契約

  • January 19, 2018

我將發布兩個合約:標準代幣合約和眾籌合約。對此的最佳做法是什麼?

  1. 我應該將其發佈在一個文件中嗎?這是否意味著只有文件中的第二個契約可見?
  2. 如果我發布第一個代幣然後眾籌合約,我是否必須在眾籌合約中硬編碼代幣的地址?
  3. 在這種情況下,我如何讓眾售合約擁有初始代幣供應?

您可以將它們都放在一個文件中並單獨編譯/部署它們,或者將它們放在單獨的文件中。

如果您希望合約能夠相互呼叫方法,那麼如果它們位於單獨的文件中,您將需要在文件頂部導入另一個合約(例如import "./Token.sol";)。然後,您將能夠輕鬆呼叫 Token 合約中的某些方法,例如Token(someAddress).methodName(args).

在管理單獨合約的地址以便它們可以相互通信方面,您可以將地址保存在狀態變數中,或者在需要時將其作為函式參數傳遞,例如

import "./Crowdsale.sol";    

contract Token {
   Crowdsale crowdsale;
   function Token(address theAddr) {
       crowdsale = Crowdsale(theAddr);
   }

   // You could do this
   function talkToCrowdsale() {
       crowdsale.someMethod();
   }

   // or this...
   function talkToCrowdsale(address theAddr) {
       Crowdsale(theAddr).someMethod();
   }
}

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