Solidity

如何創建 dApp 以使用穩定幣與使用者互動

  • December 29, 2021

我利用假期來學習紮實。因為我有程式背景,所以紮實不是我最大的挑戰。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 中使用穩定幣。

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