如何防止智能合约中的代币转移?

时间:2019-11-19 20:46:55

标签: ethereum solidity smartcontracts erc20

有什么方法可以防止智能合约中将令牌从地址A转移到地址B?假设它需要智能合约所有者的某种批准。假设它不是ERC-20令牌。

1 个答案:

答案 0 :(得分:1)

有很多方法可以在代码逻辑中实现这种限制。

例如,您可以使用仅智能合约所有者可以向其添加条目的地址来创建映射。 (使用onlyOwner modifier)。然后实现一个require函数,该函数仅在地址位于映射中时才允许传输。

mapping (address=>bool) addr_mapping;

function transferToken(address sender, address receiver) public{
    require(addr_mapping[sender] == true, "Sender not in mapping");
    require(addr_mapping[receiver] == true, "Receiver not in mapping");
    ...
}

function addToMapping(address addr) onlyOwner {
    ...
}

PS。不确定是否可以进行布尔比较,但是您可以创建自己的标志。