Contract-Development
如何驗證 ERC20 代幣實施?
ERC20代幣標準很棒,因為它允許錢包、交易所和客戶端實現允許使用者以通用方式與各種代幣互動。但是這些客戶端中的一個如何驗證介面背後的令牌的底層實現實際上是否符合標准定義的期望呢?
例如,任何實現 ERC20 介面的合約都可以實現
transfer(address to, uint256 value)
忽略to
參數並轉移到硬編碼地址的功能。我認為一種解決方案是驗證代幣合約字節碼是否與參考實現相匹配,我相信這就是 Consensys 在其HumanStandardTokenFactory.sol範例中所做的。這很有意義。
但是,當您查看想要擴展代幣功能但仍要按照標準對待的範例時,例如Beercoin(這也很棒)……是驗證此實現是否符合標準的唯一方法通過社會檢查和審計的標準?錢包提供商、交易所等是否在授予“令牌狀態”之前執行任何其他類型的可證明驗證,或者只是選中他們實現了少數介面功能的複選框?
我認為它最終必須是人工驗證,除非它與已經被人工驗證的現有契約完全匹配。即使應該在標準中的所有功能都在那裡並且做他們應該做的事情,你也不能確定有人沒有在程式碼的不同部分做了一些意想不到的事情。
依靠交易所添加給定的代幣來審計合約程式碼可能是不安全的,儘管為此制定某種流程肯定會很好。