以太坊智能合約規范問題之為未觸發的事件區塊鏈

                  區塊鏈安全檔案 2018-09-11 22:52
                  分享到:
                  導讀

                  ERC20中規定了transfer函數必須觸發Transfer事件,transfer函數必須返回bool值,在進行余額判斷時,應拋出錯誤而不是簡單的返回錯誤,approve函數必須觸發Approval事件。

                  簡介:

                  ERC20是一種代幣標準,用于以太坊區塊鏈上的智能合約。ERC20定義了一種以太坊必須執行的通用規則,如果在以太坊發行的代幣符合ERC20的標準,那么交易所就可以進行集成,在它們的交易所實現代幣的買賣和交易。

                  ERC20中規定了transfer函數必須觸發Transfer事件,transfer函數必須返回bool值,在進行余額判斷時,應拋出錯誤而不是簡單的返回錯誤,approve函數必須觸發Approval事件。

                  Transfer事件:

                  當token被轉移的時候必須觸發該事件,包括零值轉移。

                  一個創建新token的合約在給_from地址賦0x0值時必須觸發一個Transfer事件

                  Approval事件:

                  調用approval函數成功時,必須要觸發Approval事件

                  1.未觸發Transfer事件

                  上述代碼在發生交易時未觸發Transfer事件,在發生交易時,未產生event事件,不符合ERC20標準,不便于開發人員對合約交易情況進行監控。

                  2.未觸發Approval事件

                  上述代碼在發生交易時未觸發Approval事件,在發生交易時,未產生event事件,不符合ERC20標準,不便于開發人員對合約情況進行監控。

                  漏洞影響

                  使用了智能合約審計功能可以準確掃描到該類型問題。

                  經過對全網的公開的共39548 個合約代碼進行了掃描,其中共14978個合約涉及到這類問題。

                  1.未觸發Transfer事件

                  截止2018年8月10日為止,我們發現了4604個存在未遵循ERC20標準未觸發Transfer事件的合約代碼,其中交易量最高的10個合約情況如下:

                  2.未觸發Approval事件

                  截止2018年8月10日為止,我們發現了5231個存在未遵循ERC20標準未出發Approval事件的合約代碼,其中交易量最高的10個合約情況如下:

                  修復方式

                  1)transfer函數中應觸發Tranfser事件

                  2)approve函數中應觸發Approval事件

                  總結:

                  智能合約安全咨詢公司 曲速未來 表示:如果沒有在transfer和approve時觸發相應的事件,開發人員就需要更復雜的方式監控合約的交易情況,一旦發生大規模盜幣時間,甚至沒有足夠的日志提供回滾。

                  以上兩個問題算是歷史漏洞中經常發現的一類問題,都屬于開發人員沒有遵守ERC20標準而導致的,雖然這些問題往往不會直接導致合約漏洞的產生,但卻因為這些沒有遵守標準的問題,在后期對于合約代幣的維護時,會出現很多問題。在這里智能合約安全咨詢公司 曲速未來 再次建議:所有的開發者重新審視自己的合約代碼,檢查是否遵守了ERC20合約標準,避免不必要的麻煩以及安全問題。

                  合約 問題 ERC 事件 觸發
                  分享到:

                  1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
                  2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
                  3.作者投稿可能會經TMT觀察網編輯修改或補充。