Uniswap

如何將乙太坊地址列入黑名單以在去中心化交易所進行交易?

  • January 13, 2022

如何將特定代幣列入黑名單以在去中心化交易所進行交易?

讓我們從 UniSwap 合約使用該transferFrom方法獲取使用者代幣並交換它們開始。正如我們所知transferFrom,只有在您之前批准了特定地址或契約來管理您的代幣時才有效。所以現在你需要在transferFrom方法中包含一個黑名單邏輯:

1. 首先創建一個映射來儲存黑名單地址:

mapping (address => bool) blacklist;

2. 添加僅ERC20合約所有者管理黑名單的邏輯:

function addRemoveBlacklist(address _address) public onlyOwner {
   require(address(_address) != address(0), "Address is not valid");  
   if (blacklist[_address]) {
       blacklist[_address] = false;
   } else {
       blacklist[_address] = true;
   }
}

3. 然後在transferFrom方法的最頂部,您可以添加以下條件:

require(!blacklist[_address], "Address is blacklisted.");

這種情況將阻止使用者執行 UniSwap 交換,即使他們之前已經批准 UniSwap 智能合約來管理他們的代幣。

但是這個邏輯並沒有阻止黑名單地址將他的代幣轉移到全新的地址並仍然執行交換。如果您還想涵蓋這種情況require(!blacklist[_address], "Address is blacklisted.");,請在方法頂部添加條件,transfer以便列入黑名單的地址根本無法移動其令牌。

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