Solidity
ERC20代幣能否實現私有轉賬功能
我知道 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); }
- 這會像 GNT 一樣被接受為部分符合 ERC20 的標準嗎?錢包會接受嗎?
- 我相信上面的契約是有效的,但也許有一些我沒有想到的問題?你怎麼看?
- 如果 ERC20 不在表中,我也可以刪除 transfer() 函式,並在 executeOrders() 函式中實現令牌傳輸,對嗎?
謝謝!
處理智能合約/與智能合約互動的工具是通過使用函式介面的編碼簽名來實現的。簽名是從函式的規範介面建構的,所以
transfer(address,uint)
成為規範的
transfer(address,uint256)
並編碼為
0xa9059cbb
添加
private
不會改變界面,所以編碼是一樣的,所以工具會忽略變化。它應該可以正常工作。