NEO改進協議提案8(NEP 8)

2021-09-03 07:51:48 字數 604 閱讀 4995

向後相容性

實現本nep提議neovm計算棧堆疊隔離,以確保動態呼叫的安全性,並為將來的新功能提供支援。

現在已經實現了nep-4(動態呼叫),但由於neovm計算棧未被隔離,動態呼叫的合約可能會在執行時中打斷呼叫者的堆疊,從而導致合約未按預期執行。

另一方面,某些功能(例如異常處理)也需要實現堆疊隔離。

我們需要一組新的指令,以便每次呼叫都建立乙個單獨的計算棧,並自動將函式的引數複製到新堆疊。函式執行完畢後,返回值將自動複製到呼叫者的堆疊中。這樣,呼叫的合約對棧的修改,不會影響呼叫者的行為。

我們新增了五條用於啟動堆疊隔離呼叫的新指令:

call_i,call_e,call_ed,call_et,call_edt。

指令call_i與老指令call很類似。不同之處在於call_i需要在其之後跟隨乙個運算元來表示引數的數量和返回的要拷貝的值。

指令call_et與指令call_e很類似。不同之處在於call_et會開啟乙個尾呼叫。

指令call_edt與指令call_ed很類似。不同之處在於call_edt會開啟乙個尾呼叫。

所有舊合約都可以在原始指令集中正確執行,但是不建議新合約繼續使用舊指令。當新合約需要動態呼叫時,應避免使用舊指令。

NEO改進協議提案6(NEP 6)

向後相容性實現 本nep描述了乙個錢包標準用於錢包檔案在neo多種實現間的相容。目前,不同的客戶端程式生成不同的錢包檔案。它們具有不同的檔案格式,不同的儲存方式以及不同的加密方式。使用者很難在不同的客戶端程式之間進行遷移,因為錢包檔案的格式不同。儘管可以通過匯出私鑰來實現遷移,但是對於具有多個私鑰的...

NEO改進協議提案6(NEP 6)

摘要 動機基本原理 詳述錢包 scrypt引數 賬戶合約 向後相容性 實現本nep描述了乙個錢包標準用於錢包檔案在neo多種實現間的相容。目前,不同的客戶端程式生成不同的錢包檔案。它們具有不同的檔案格式,不同的儲存方式以及不同的加密方式。使用者很難在不同的客戶端程式之間進行遷移,因為錢包檔案的格式不...

Leach協議學習(4) Leach協議改進

轉 leach協議學習 4 leach協議改進 收藏 leach協議之後,很多人進一步提出了改進的leach協議,如sep協議,選擇leach協議來學習ns2主要是考慮到leach協議的經典和有趣,同時也認為是ns2學習的乙個很好很有用的開頭,不過,leach協議並不是那麼容易參透,還有很多迷茫的地...