Hi Guest

More contents, please log on!

Bitmere.com 区块链技术 Content

NEP-6钱包标准

哈哈笑417
15 0 0
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
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

哈哈笑417 初中生
  • Follow

    0

  • Following

    0

  • Articles

    11

币圈江左盟
Promoted