快速理解NEO3的創新特性之一「範圍見證人」

買賣虛擬貨幣
自2016年NEO主網上線以來,NEO平臺的特性有著大幅度的增加,而隨著下一代NEO平臺NEO3中多種創新的實現,這種趨勢今年仍在繼續。本文重點介紹最近已經合併至GitHub上master分支的一個創新特性,範圍見證人。這一特性將對在NEO3上保證資產轉移的安全性起到重要作用。NEO3中的資產將全部採用NEP5資產型別(不再保留NEO2的基於UTXO的全域性資產型別),這簡化了對資產的管理,同時使得網路具有更強大的智慧合約處理能力(如原生通證)。為了促進這些改進功能,核心執行引擎(稱為ApplicationEngine)必須用不同的方式處理各種邏輯。ApplicationEngine的任務之一是驗證交易的正確性。這意味著要檢查憑證(稱為見證人)是否驗證透過,以及是否允許資產所有者進行資產轉移。對於NEO2中基於UTXO的全域性資產,見證人驗證是透過內部過程執行的,該過程可以安全地保證簽名可以正確地驗證透過,且如果合約是交易所指定的資金的傳送方,則將呼叫合約的驗證功能來決定是否允許資產轉移。然而,在NEO2中,智慧合約不允許與原生資產直接互動以從智慧合約中發起支付交易,它只能允許或拒絕交易。一言以蔽之,UTXO全域性資產使得智慧合約無法直接實現資產的流動以及自動支付。而NEO3允許智慧合約直接處理原生的NEP5資產(NEO和GAS),從而打破了這一限制。NEO3使用相同的見證人體系來管理原生和非原生的(使用者建立)資產。確保NEO3上NEP-5資產轉移安全性的第一步是對傳遞的見證人新增限制。這些限制稱為:見證人作用域。

NEO3上有四種型別的作用域:CalledByEntry、CustomContracts、CustomGroups 和Global。最基本(和安全)的作用域名為CalledByEntry,它將見證人的使用範圍限制在使用者所傳遞的交易指令碼這一最基本的級別。這意味著,與CalledByEntry一起傳遞的見證人將僅在呼叫使用者傳遞的指令碼時使用,這對於所有型別的資產和通證都是100%安全的。下面的圖片描述了這個過程。

CalledByEntry作用域的關係圖。使用者交易附有見證人A簽名,這隻能由入口指令碼直接呼叫的合約所使用(即合約B)。如果另一個合約(由第三方呼叫)嘗試驗證見證人A,將會執行失敗(即合約C)。
與CalledByEntry相反的是Global作用域:允許在全域性範圍內使用見證人簽名,而沒有特定的限制條件。這在一個非常封閉的應用程式上仍然是安全的,同時可能會與NEO3中另一個創新特性結合使用:Manifest System(這部分將在後續文章中展開討論)。其他兩種模式(CustomContracts和CustomGroups)允許將使用者憑證作用域更細粒度地繫結到特定應用程式(和應用程式組)。這對於遊戲以及其他一些應用場景而言是完美的解決方案,在這些場景中智慧合約執行期間的多種情況下都需要數字資產,由此為使用者憑證建立了非常簡潔且具有描述性的限制。本文不會深入探討這些特性的技術細節,但我們歡迎感興趣的開發人員直接與核心開發團隊在Github上對相關的issue進行討論,以瞭解這些(和其他)有趣的新特性是如何協同作用的,從而使NEO成為一個極具創新的區塊鏈平臺。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;