Solidity
智能合約餘額問題
我有幾個關於 ETH 和代幣儲存的問題。
- 如果只有所有者有權提取它,將 ETH 儲存在智能合約地址上是一種好習慣嗎?
- 部署智能合約時,我是否必須在建構子中將所有可用代幣發送到某個外部錢包地址?或者我可以將代幣留在智能合約地址並在眾籌期間從合約地址發送給客戶?
- 總結以上兩個問題,如何區分智能合約地址上的 ETH 和代幣餘額?我的意思是: address(this).balance返回 ETH 數量和*余額$$ address(this) $$*返回代幣數量?或者他們是相似的?
令牌沒有什麼神奇之處——它們的行為與您編寫它們的行為完全一樣。所以你可以用任何你想要的方式來寫它們。
如果您指的是符合 ERC20 標準的代幣,情況就略有不同。ERC20 標準告訴您在代幣合約中必須具有哪些功能,但您可以根據需要實現它們。
其中的
balance
部分address(this).balance
是儲存地址餘額的乙太坊內部變數。balances
in是您在代幣合約中編寫的balances[address(this)]
內容,而 ERC20 標準實際上並未說明有關此類變數的任何內容。例如,可以thoseBalances
在代幣合約中呼叫該變數,它仍然與 ERC20 兼容。至於您的第一個實際問題:如果合約編寫正確,將 ETH 儲存在合約中與將其儲存在錢包中沒有太大區別。在安全方面,錢包通常是一種更安全的選擇,但在合約中包含乙太幣通常更方便,因此合約可以直接使用它。
至於你的第二個問題:這取決於你,你不必做任何事情。代幣只是代幣合約中的程式碼,可能由您編寫。