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

買賣虛擬貨幣

文章目錄

  • 摘要
  • 動機
  • 基本原理
  • 詳述
    • 錢包
    • Scrypt引數
    • 賬戶
    • 合約
  • 向後相容性
  • 實現

摘要

本NEP描述了一個錢包標準用於錢包檔案在NEO多種實現間的相容。

動機

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

基本原理

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

詳述

錢包

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

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

name是使用者對錢包檔案所做的標籤。
version目前固定為1.0,將來用於功能性升級。
scrypt是一個ScryptParameters物件,用於描述錢包私鑰加密解密用的SCrypt演算法的引數。
accounts是一個Account物件陣列,用於描述錢包中每個帳戶的詳細資訊。
extra是由客戶端的實現者定義,用於儲存額外的資料。該欄位可以為null。

Scrypt引數

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格式。此欄位可以為空(僅限觀察地址或非標準地址)。
contract是一個Contract物件,用於描述合約的細節。該欄位可以為null(僅限監視地址)。
extra是由客戶端的實現者定義的用於儲存額外資料的物件。該欄位可以為null。

合約

合約物件有以下結構:

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

script是合約的指令碼程式碼。如果合約已經被部署在區塊鏈上,則該值可以為null。
parameters是引數物件陣列,用於描述合約函式中每個引數的細節。需要更多引數物件的資訊,可以檢視NEP-3:NeoContractABI中的描述。

向後相容性

所有舊格式的錢包必需可以輕易轉換成這種新的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/master/src/wallet/Wallet.js

原文連結:https://github.com/neo-project/proposals/blob/master/nep-6.mediawiki

免責聲明:

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

推荐阅读

;