Contract-Design
發布兩個契約
我將發布兩個合約:標準代幣合約和眾籌合約。對此的最佳做法是什麼?
- 我應該將其發佈在一個文件中嗎?這是否意味著只有文件中的第二個契約可見?
- 如果我發布第一個代幣然後眾籌合約,我是否必須在眾籌合約中硬編碼代幣的地址?
- 在這種情況下,我如何讓眾售合約擁有初始代幣供應?
您可以將它們都放在一個文件中並單獨編譯/部署它們,或者將它們放在單獨的文件中。
如果您希望合約能夠相互呼叫方法,那麼如果它們位於單獨的文件中,您將需要在文件頂部導入另一個合約(例如
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(); } }