摘要
動機基本原理
詳述錢包
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協議並不是那麼容易參透,還有很多迷茫的地...