是否可以保留用于税收征收的 Solidity 智能合约创建地址?

Is it possible to reserve an address on Solidity smart contract creation for taxes collection?

我正在使用 solidity 编程语言并尝试执行一个合约,每个交易都会扣除税费,并且这笔税费应该转移到正在创建的合约的某个特定地址。这可能吗?

是的,这是可能的。所有以太坊令牌标准(ERC-20、ERC-721 等)仅定义了一个接口和其他一些要点(例如何时发出事件)。因此,您可以根据需要自由实施这些方法。


假设您有一个非常简单的 transfer() 实施并且没有费用。

注意:这不遵循 ERC-* 标准,在 Solidity <= 0.7.6 中容易受到 integer overflow 的影响。我对其进行了简化以更好地显示计算结果。

function transfer(address _to, uint256 _amount) external {
    balances[msg.sender] -= _amount;
    balances[_to] += _amount;
}

加上费用只是一个小计算:

address admin = address(0x123);

function transfer(address _to, uint256 _amount) external returns (bool) {
    uint256 fee = (_amount / 100) * 3; // Calculate 3% fee

    balances[msg.sender] -= _amount; // subtract the full amount
    balances[admin] += fee; // add the fee to the admin balance
    balances[_to] += (_amount - fee); // add the remainder to the recipient balance
}

注意:这是为了演示基础知识,并没有考虑少数情况,例如 _amount 的值不能被 100 整除(费用不会精确计算在这种情况下为 3%)。