摘要:從技術角度分析兼容最常見的代幣協議ERC20的幾種協議,為大家對比其優勢及劣勢。提到以太坊,我們腦海中出現的第一個關鍵詞也許就是“gas費”。如今各大區塊鏈項目主網上線,所用的宣傳方嚮往往也離不開gas這個單詞。居高不下的gas費一直是區塊鏈交易,尤其是遊走於幣圈各個領域的投資者的一個痛點。隨著區…
從技術角度分析兼容最常見的代幣協議ERC20的幾種協議,為大家對比其優勢及劣勢。
提到以太坊,我們腦海中出現的第一個關鍵詞也許就是“gas費”。如今各大區塊鏈項目主網上線,所用的宣傳方嚮往往也離不開gas這個單詞。居高不下的gas費一直是區塊鏈交易,尤其是遊走於幣圈各個領域的投資者的一個痛點。隨著區塊鏈項目的增多以及市場規模的擴大,區塊鏈上的交易數目以及平均交易的Gas消耗也隨著增加。
Gasnow中Gas價格歷史數據
近期,隨著市場的起起落落以及主網升級、Layer2解決方案等因素,以以太坊為首的區塊鍊網絡gas費持續下降。那麼除了以上因素以外,是否可以從代碼或者智能合約設計角度去減少完成特定功能必須的交易數目,從而優化項目以及整個區塊鏈的交易成本和環境呢?今天本文要為大家介紹的就是這一主題:對比可兼容最常見的代幣協議ERC20的幾種協議,包括ERC777, ERC1363以及ERC2612。
本文將通過分析幾種協議中代幣轉賬操作所需要交易數目,幫助大家發現其中的最優選擇!
ERC20
當前完成ERC20協議代幣的轉賬操作需要分兩步:approve()以及transfer()/tranferFrom()。
因此必須分成兩個交易並支付兩份Gas: 即第一個交易完成授權,第二個交易完成轉賬。為了解決“兩步走”的問題,當前主要提案有ERC777, ERC1363以及ERC2612,其中前兩者已經完善,ERC2612仍在優化階段。 ERC20中主要的參與者為代幣發送者sender以及代幣接收者receiver。
下文中將以Alice為代幣發送者sender,Bob為代幣接收者receiver為例,為大家直觀展示操作簡要流程圖。
ERC20代幣轉賬操作簡要流程圖
ERC777
ERC777嘗試引入operator的概念來規避掉“兩步走”的問題。 operator在被sender授權之後,在該ERC777代幣合約中,sender可通過operator將代幣發送給receiver。在發送代幣的交易中,sender無需支付gas,發送代幣交易的gas會由operator支付。
ERC777代幣轉賬操作簡要流程圖
ERC1363
ERC1363引入啟發自ERC20中approve(), transfer()和tranferFrom()的高級函數:approveAndCall(),transferAndCall()和transferFromAndCall()。
這些函數可以幫助ERC1363協議合約在完成approve(), transfer() 或tranferFrom()之後,繼續執行spender地址處智能合約的onApprovalReceived()方法,以及receiver地址處智能合約的onTransferReceived()方法。通過這樣的方式來將approve和transfer或者其他任何spender或者receiver想要執行的代碼鏈接起來成為一個交易。
ERC1363代幣轉賬操作簡要流程圖
ERC2612
ERC2612採用了用戶簽名的方式進行approve,簽名中包含了approve的地址以及額度。
用戶通過向ERC2162標準的合約提交該簽名,然後ERC2162標準的合約通過驗證該簽名,從該簽名中獲得approve的地址以及額度,並且在驗證成功之後使用驗證獲得的信息直接觸發transferFrom操作,從而最終解決“兩步走”的問題。
ERC2612代幣轉賬操作簡要流程圖
寫在結尾
這幾類協議對比後,我們發現:從完成代幣發送所需要的交易數目角度看,ERC1363與ERC2612必然是更加合適的選擇,其中ERC2612相比ERC1363更加靈活。同時ERC777, ERC1363與ERC2612都兼容ERC20類型合約,因此不存在由兼容性引發的問題。
隨著區塊鏈智能合約項目的增多,單個區塊的時間內產生的等待交易數目總數隨之增加。
如果可以通過協議代碼層面減少完成功能需要被打包入區塊的等待交易總數,那麼對於區塊鏈上的平均的交易速度以及平均gas花費都會有極大的幫助。
交易成本及環境的優化,不僅會促進區塊鍊網絡的繁榮,區塊鏈生態及基礎設施也會更加完善。