Solidity

ERC20代幣能否實現私有轉賬功能

  • June 7, 2018

我知道 Golem Network Token沒有實現approve() permit() 和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. 這會像 GNT 一樣被接受為部分符合 ERC20 的標準嗎?錢包會接受嗎?
  2. 我相信上面的契約是有效的,但也許有一些我沒有想到的問題?你怎麼看?
  3. 如果 ERC20 不在表中,我也可以刪除 transfer() 函式,並在 executeOrders() 函式中實現令牌傳輸,對嗎?

謝謝!

處理智能合約/與智能合約互動的工具是通過使用函式介面的編碼簽名來實現的。簽名是從函式的規範介面建構的,所以

transfer(address,uint)

成為規範的

transfer(address,uint256)

並編碼為

0xa9059cbb

添加private不會改變界面,所以編碼是一樣的,所以工具會忽略變化。它應該可以正常工作。

引用自:https://ethereum.stackexchange.com/questions/50605