Solidity
如何創建 dApp 以使用穩定幣與使用者互動
我利用假期來學習紮實。因為我有程式背景,所以紮實不是我最大的挑戰。Remix 線上 IDE 和 JavaScript VM 是很好的入門工具。我創建了一個智能合約,我可以在其中存入和提取乙太幣。但現在我希望 dApp 能夠基於像 Tether 這樣的穩定貨幣與使用者進行互動。這怎麼可能。如何防止使用者存入或取出乙太幣或其他代幣而只允許存入和取出 Tether?
如何防止使用者存入或取出乙太幣或其他代幣?
您不能阻止使用者將乙太幣發送到智能合約。乙太幣可以強制發送到智能合約地址。(在此處閱讀更多相關資訊我可以禁用直接交易到智能合約地址嗎?)一旦部署合約,甚至在部署合約之前,因為可以計算智能合約地址,任何人都可以向合約發送乙太幣。
只允許存入和提取繫繩?
您可以使用 ERC20 合約介面在智能合約中與繫繩或任何基於 ERC20 的代幣進行互動。
pragma solidity 0.8.0; interface ERC20 { function totalSupply() external view returns (uint); function balanceOf(address tokenOwner) external view returns (uint balance); function allowance(address tokenOwner, address spender) external view returns (uint remaining); function transfer(address to, uint tokens) external returns (bool success); function approve(address spender, uint tokens) external returns (bool success); function transferFrom(address from, address to, uint tokens) external returns (bool success); function symbol() external view returns (string memory); function name() external view returns (string memory); function decimals() external view returns (uint8); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } contract ERC20Interaction { ERC20 ercToken; constructor(address tokenAddress) { require(tokenAddress != address(0)); ercToken = ERC20(tokenAddress); } function getSenderBalance() external view returns (uint) { uint senderBalance = ercToken.balanceOf(msg.sender); return senderBalance; } function interactWithToken() external { //interact with the token here } }
注意:這只是一個範例,不被視為經過審計、優化或安全的程式碼。
謝謝您的答复。那麼,當我在鏈上使用穩定幣地址時,我不能只使用這個地址進行存款和取款嗎?像
function Deposit() public payable { require(tokenAddress ==0x6b175474e89094c44da98b954eedeac495271d0f); } function Withdraw(uint _amount) public payable { }
順便說一句,我不想創建自己的代幣,只是為了在我的 dApp 中使用穩定幣。