我是否应该为 Bep20 代币设置每笔交易/24 小时的最大卖出限额?

1 solidity smartcontracts cryptocurrency binance binance-smart-chain

我正在创建一个代币,想要解决拉高和转储的大鲸鱼问题,或者只是转储问题。因此,我考虑限制一个地址每笔交易或每 24 小时可以出售的数量。

这在 Bep20 智能合约中可能吗?我的编码员告诉我事实并非如此。如果是,这是否也会自动影响一个人可以购买的数量?

这种限制会带来未知的负面后果吗?

你会购买这种类型的代币吗?

最后,目前是否有任何 BEP20(或其他区块链)代币正在实现这一点?

感谢您的任何建议。

Pet*_*jda 5

可以限制一个地址在一段时间内可以接收的代币数量。

struct TransferHistory {
    uint32 transferTime;
    address from;
    address to;
    uint256 amount;
}

mapping (address => TransferHistory[]) transferHistoryPerReceiver;

function transfer(address _to, uint256 _amount) external returns (bool) {
    require(receivedDuringPast24Hours(_to) <= 100, 'You can only receive up to 100 tokens during the past 24 hours');
}

function receivedDuringPast24Hours(address _who) external view returns (uint256) {
    // todo loop through `transferHistoryPerReceiver[_who]`
    // filter and return sum based on the time period
}
Run Code Online (Sandbox Code Playgroud)

去中心化交易所(例如 PancakeSwap)在其 Pair 合约中持有代币(例如 YourToken/CAKE 是一对合约,YourToken/WBNB 是另一对合约,...)。您可以根据msg.sender(这将是配对合约)限制转账。

if (msg.sender == pancakeswapPairAddress) {
    require(receivedDuringPast24Hours(_to) <= 100, 'You can only receive up to 100 tokens during the past 24 hours');
}
Run Code Online (Sandbox Code Playgroud)

然而,一个人实际上可以拥有无​​限数量的地址。因此,除非您执行一些 KYC 流程(链下)将每个真实的人连接到他们的地址,否则可以轻松绕过此限制。