Contract-Development
與智能合約而不是乙太幣互動時是否需要代幣?
在創建使用者必須提供付款的智能合約時,是否需要一定數量的代幣而不是乙太幣?您可以讓使用者在乙太幣或代幣之間進行選擇嗎?
在以solidity 編寫的智能合約中,存在
payable
允許發送方將乙太幣附加到交易中的修飾符,該交易將被合約接受為提供服務的費用。沒有預定義的修飾符允許任何符合 ERC20 的令牌具有相同的功能。但是,您可以通過實施解決方法來實現此功能。amount
您可以通過以下方式接受代幣支付tokenAddress
:function provideService() external { ERC20Interface tokenContract = ERC20Interface(tokenAddress); require(tokenContract.transferFrom(msg.sender, this, amount)); // provide service here }
客戶必須事先批准令牌轉移。您可以在https://theethereum.wiki/w/index.php/ERC20_Token_Standard找到完整的 ERC20 代幣標準以獲取更多資訊。
您可以通過為兩者編寫單獨的函式並相應地實現您的應用程序前端來啟用使用 Ether 或令牌支付的選項。