Может ли токен ERC20 реализовать функции приватных переводов

Я знаю, что Golem Network Token не реализует функции Approval () Allowance () и TransferFrom (). Таким образом, GNT частично соответствует стандарту ERC20.

Я хотел бы пойти дальше и реализовать функцию transfer() как private() .

Таким образом, держатели токенов не смогут свободно торговать им (это возможно только с использованием специального механизма — см. ниже), но все же смогут увидеть токен в кошельках.

Пример кода будет выглядеть так:

contract CustomToken is ERC20 {

    public symbol = “TEST”
    public totalSupply = X;
    public balanceOf...

    //function approve() -- not implemented
    //function transferFrom() -- not implemented

    // first step: check that the caller is KYC
    function placeOrderBuy(int _amountToken, int _maxPrice ) external payable 
            returns(bool success); 

    // first step: check that the caller is KYC
    function placeOrderSell(int _amountToken, int _minPrice ) external 
            payable returns(bool success); 

    //run automatically every month, and transfer the tokens function 
    executeOrders() private returns(float newPrice);

    // triggers Transfer event 
    transfer(address _to, uint _value) private returns(bool success);
}
  1. Будет ли это принято как частично совместимое с ERC20, как GNT? Примут ли это кошельки?

  2. Я считаю, что вышеуказанный контракт работает, но, может быть, есть какие-то проблемы, о которых я не подумал? Что вы думаете?

  3. если ERC20 отсутствует в таблице, я мог бы просто удалить функцию transfer() и реализовать передачу токена в функциях executeOrders(), верно?

Спасибо!

Ответы (1)

Инструменты, которые обрабатывают/взаимодействуют со смарт-контрактом, делают это с помощью закодированной подписи функциональных интерфейсов. Сигнатура построена из канонического интерфейса функции, поэтому

transfer(address,uint)

становится каноническим как

transfer(address,uint256)

и закодировано как

0xa9059cbb

Добавление privateне меняет интерфейс, поэтому кодировка та же, поэтому инструменты не будут знать об изменении. Он должен работать нормально.