Можно ли внести плату за эфир в ERC20?

Новое к твердости ...

Возможно ли получить комиссию за перевод токена ERC20 в эфир? Плата составит 0,000001 эфира за передачу. Каждый раз, когда токен ERC20 отправляется другому пользователю, плата в Эфире будет отправлена ​​в контракт. Исходный пример того, как передать плату в эфир, будет наиболее полезен.

(примечание: этот вопрос не относится к расходам на газ. Это относится к дополнительной пошлине в эфире для передачи токена ERC20.)

3 голоса | спросил 29A 10 AMpTue, 10 Apr 2018 08:54:06 +030054Tuesday 2018, 08:54:06

2 ответа


2

Вы можете увидеть спецификации, указанные в ERC- 20 здесь .

Для соответствующих функций transfer и transferFrom, нет упоминания о ограничениях мутируемости (или для любой другой функции).

Если вы сделали эти функции payable и потребовали, чтобы значение было 0.000001 ETH, вероятно, это не нарушит ERC- 20 (как указано в этом документе).

ответил AnAllergyToAnalogy 10 AMpTue, 10 Apr 2018 09:04:54 +030004Tuesday 2018, 09:04:54
0

В соответствии со стандартом ERC20 ( https://theethereum.wiki/w/index.php /ERC20_Token_Standard ), ответ - нет.

Но ничто не мешает вам расширить функциональность. Расширение просто означает, что у него есть дополнительные функции поверх обычной функциональности ERC20 - пользователи должны знать о дополнительных функциях, чтобы иметь возможность использовать его.

Вот одна довольно стандартная реализация маркера ERC20: https : //github.com/ConsenSys/Tokens/blob/master/contracts/eip20/EIP20.sol Если мы посмотрим на функцию transfer, мы можем добавить аналогичную функцию, например:

function transferWithFee(address _to, uint256 _value) public payable returns (bool success) {
        require(balances[msg.sender] >= _value);
        // require some amount of ether to be included in the transaction.
        require(msg.value >= 123);
        balances[msg.sender] -= _value;
        balances[_to] += _value;
        Transfer(msg.sender, _to, _value);
        return true;
    }

Все эфиры, переданные функции, остаются в контракте. Также вы, вероятно, захотите сделать что-то неприятное для оригинальной функции transfer, чтобы люди не просто использовали это, а использовали эту новую функцию: вы можете например, просто реализуйте его как:

function transfer(address _to, uint256 _value) public returns (bool success) {
        return false;
    }
ответил Lauri Peltonen 10 AMpTue, 10 Apr 2018 09:03:20 +030003Tuesday 2018, 09:03:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132