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

2021-09-13 00:06:50 字數 1636 閱讀 3431

摘要

動機基本原理

詳述錢包

scrypt引數

賬戶合約 向後相容性

實現本nep描述了乙個錢包標準用於錢包檔案在neo多種實現間的相容。

目前,不同的客戶端程式生成不同的錢包檔案。它們具有不同的檔案格式,不同的儲存方式以及不同的加密方式。使用者很難在不同的客戶端程式之間進行遷移,因為錢包檔案的格式不同。儘管可以通過匯出私鑰來實現遷移,但是對於具有多個私鑰的錢包來說是很麻煩的。我們需要一種通用錢包格式,允許使用者安全輕鬆地跨所有平台遷移,而無需更改錢包檔案或匯出私鑰。

錢包標準應考慮安全性和跨平台相容性。為了安全起見,我們要求實現使用nep-2機制來加密或解密私鑰。對於跨平台,我們使用json格式來描述錢包檔案,以便可以在每個平台上輕鬆識別錢包檔案的內容。

錢包

json格式的錢包檔案具有以下的基礎結構:

,

「accounts」: ,

「extra」: null

}

name是使用者對錢包檔案所做的標籤。

version目前固定為1.0,將來用於功能性公升級。

scrypt是乙個scryptparameters物件,用於描述錢包私鑰加密解密用的scrypt演算法的引數。

accounts是乙個account物件陣列,用於描述錢包中每個帳戶的詳細資訊。

extra是由客戶端的實現者定義,用於儲存額外的資料。該欄位可以為null。

scrypt引數

scryptparameters 物件具有一下結構:

n是定義cpu /記憶體開銷的引數。必須是2 ^ n的值。

r是調整引數。

p是調整引數(並行引數)。大的p值可以在不增加記憶體使用量的情況下增加scrypt的計算成本。

賬戶

賬戶物件具有以下結構:

,

「extra」: null

}

address 是賬戶的base58編碼位址

label是使用者對錢包做的標籤

isdefault 代表賬戶是否是預設找零位址

lock表示帳戶是否被使用者鎖定。客戶端不能花費鎖定帳戶中的資金。

key是帳戶私鑰的nep-2格式。此欄位可以為空(僅限觀察位址或非標準位址)。

contract是乙個contract物件,用於描述合約的細節。該欄位可以為null(僅限監視位址)。

extra是由客戶端的實現者定義的用於儲存額外資料的物件。該欄位可以為null。

合約

合約物件有以下結構:

script是合約的指令碼**。如果合約已經被部署在區塊鏈上,則該值可以為null。

parameters是引數物件陣列,用於描述合約函式中每個引數的細節。需要更多引數物件的資訊,可以檢視nep-3:neocontractabi中的描述。

所有舊格式的錢包必需可以輕易轉換成這種新的json格式。如果這些錢包檔案包含額外的資料,可以被儲存在extra值中。

• neo-project/neo:

• cityofzion/neon-js:

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

向後相容性 實現本nep提議neovm計算棧堆疊隔離,以確保動態呼叫的安全性,並為將來的新功能提供支援。現在已經實現了nep 4 動態呼叫 但由於neovm計算棧未被隔離,動態呼叫的合約可能會在執行時中打斷呼叫者的堆疊,從而導致合約未按預期執行。另一方面,某些功能 例如異常處理 也需要實現堆疊隔離。...

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

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

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

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