NEP-6錢包標準 轉

NEP:NEO Enhancement Proposals,即NEO改進提案,描述了NEO平臺的標準,包括核心協議規範,客戶端API和合約標準等。最爲熟知的是NEP-5代幣標準。

目前NEP-6錢包標準已經完成,以下爲NEP-6錢包標準的Github文檔(https://github.com/neo-project/proposals/blob/master/nep-6.mediawiki)

摘要

NEP-6描述了一個錢包標準,將支持錢包文件在NEO的各種錢包客戶端之間共享。

目標

目前,不同的客戶端程序會生成不同的錢包文件。他們有不同的文件格式,不同的存儲方式,以及不同的加密方式。用戶難以在不同的客戶端程序之間遷移,因爲錢包文件格式不同。儘管可以通過導出私鑰來實現移植,但是對於具有多個私鑰的錢包而言,這是非常麻煩的。我們需要一個通用的錢包格式,允許用戶安全而輕鬆地遷移到所有平臺上,而無需更改錢包文件或導出私鑰。

基本原理

錢包標準應該考慮安全性和跨平臺兼容性。爲了安全起見,我們要求實現使用NEP-2(https://github.com/neo-project/proposals/blob/master/nep-2.mediawiki)機制來加密或解密私鑰。爲了達成跨平臺要求,我們使用JSON格式來描述錢包文件,以便在每個平臺上能夠識別錢包文件的內容。

規範

JSON格式的錢包文件由以下內容構成基本結構

{  "name": "MyWallet",  "version": "1.0",  "scrypt": {},  "accounts": \[\],  "extra": null }

name 是用戶對錢包文件所做的標記。

version目前已經修復1.0並將用於未來的功能升級。

scrypt 是一個ScryptParameters對象,它描述了用於加密和解密錢包中私鑰的SCrypt算法的參數。

accounts 是一個Account對象的數組,用於描述錢包中每個賬戶的詳細信息。

extra 是由客戶的實現者定義的用於存儲額外數據的對象。這個字段可以null。

ScryptParameters

ScryptParameters對象具有以下結構:

{  “n”:16384,  “r”:8,  “p”:8}

n是定義CPU /內存成本的參數。必須是2 ^ N的值。

r 是一個調整參數。

p是一個調整參數(並行參數)。大的p值會增加SCrypt的計算成本,而不會增加內存使用量。

賬戶

賬戶對象具有以下結構:

{  “address”:“AQLASLtT6pWbThcSCYU1biVqhMnzhTgLFq”,  “label”:“MyAddress”,  “isDefault”:true,  “lock”:false,  “key”:“6PYWB8m1bCnu5bQkRUKAwbZp2BHNvQ3BQRLbpLdTuizpyLkQPSZbtZfoxx”,  “contract”:{},  “extra”:null}

address 是帳戶的base58編碼地址。

label 是用戶對帳戶所做的標籤。

isDefault 指示該帳戶是否是默認的更改帳戶。

lock指示該帳戶是否被用戶鎖定。客戶不應將資金用於鎖定的賬戶。

key是NEP-2格式的帳戶的私鑰。該字段可以是null(僅用於監視地址或非標準地址)。

contract是描述合同細節的合約對象。這個字段可以是null(僅供觀看地址)。

extra是由客戶的實現者定義的用於存儲額外數據的對象。這個字段可以null

合約

合約對象具有以下結構:

{ "script": "21036dc4bf8f0405dcf5d12a38487b359cb4bd693357a387d74fc438ffc7757948b0ac", "parameters": \[\], "deployed": false }

script 是合同的腳本代碼。如果合同已經部署到區塊鏈,這個字段可以是null。

parameters 是一個Parameter對象的數組,它描述了契約函數中每個參數的細節。有關Parameter對象的更多信息,請參閱NEP-3:NeoContract ABI中的說明。(https://github.com/neo-project/proposals/blob/master/nep-3.mediawiki)

deployed 表示合約是否已經部署到區塊鏈。

舊版兼容性

所有舊格式的錢包應該可以很容易地轉換成這個新的JSON格式。如果這些錢包文件包含一些額外的數據,它們可以存儲在文件中extra

應用

neo-project / neo:https://github.com/neo-project/neo/blob/master/neo/Implementations/Wallets/NEP6/NEP6Wallet.cs

CityOfZion / neon-js:https://github.com/CityOfZion/neon-js/blob/feature/nep-wallet/src/wallet/Wallet.js

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章