Show / Hide Table of Contents
钱包相关接口
Neo 中大部分的操作与账户有关,而钱包是账户的集合,包含一个或多个账户。本篇文档将主要介绍以下内容:
账户与钱包基础
账户
Neo 中的账户是用户身份的证明,本质上是一个 KeyPair
类型的密钥对,其中包含私钥和公钥。
私钥
私钥用于对交易签名,是授权的工具,掌握了私钥就表示拥有某个账户,可以处理账户的所有资产。私钥本质上是一个32位长的byte数组,可以表示为十六进制的字符串,例如: "0x450d6c2a04b5b470339a745427bae6828400cf048400837d73c415063835e005"
WIF
WIF是私钥的另一种字符串表示,与私钥在作用上是等价的,比如上面的私钥表示为WIF: "KyXwTh1hB76RRMquSvnxZrJzQx7h9nQP2PCRL38v6VDb5ip3nf1p"
公钥
公钥可以用来验证私钥的签名,在Neo中对应 ECPoint
类型,拥有私钥的情况下可以计算出公钥,公钥一般可以表示为长度为66的十六进制字符串: "02f9ec1fd0a98796cf75b586772a4ddd41a0af07a1dbdf86a7238f74fb72503575"
账户的脚本哈希 (ScriptHash)
ScriptHash 在 Neo 中对应 UInt160
,本质上是一个 20 位的 byte 数组,由公钥经过脚本构造和哈希得出(由于哈希算法不可逆,所以不可根据脚本哈希逆向计算出公钥)。ScriptHash 一般表示为反序的十六进制字符串(大端序表示): "0xb0a31817c80ad5f87b6ed390ecb3f9d312f7ceb8"
地址
地址是 ScriptHash 的另一种字符串表示,可以和 ScriptHash 互相转换。地址作为账户的唯一标识,是最常用的账户形式,相当于传统账户中的账号,比如转账时可以向指定地址转账。地址形式: "Ncm9TEzrp8SSer6Wa3UCSLTRnqzwVhCfuE"
钱包
钱包是账户的集合, NEP6
是Neo中最常用的钱包标准, NEP6
钱包可以序列化为一个 JSON 格式的文件,其中保存了加密后的账户私钥,需要对应的密码才能解密获取私钥。
可参考如下示例:
创建新的 NEP6 钱包,添加账户并保存为 JSON 文件:
从 JSON 文件读取 NEP6 钱包,并解密账户:
使用 WalletAPI
初始化
WalletAPI
初始化:
查询余额
账户余额的类型一般是 BigInteger
,这是把小数部分取整后的一种表示,需要除以 Factor
才能得出Token 的实际数量。
查询 NEP17 资产余额查询可以使用字符串参数:
也可以使用 ScriptHash 类型的参数:
在 Neo N3 中 NEO 和 GAS 都是 NEP17 资产,且脚本哈希固定,所以这里提供了更简单的接口:
提取 GAS
在 Neo N3 中提取 GAS 的过程是在 NEO 转账时自动进行的,你可以构建一笔给自己转账的交易来提取 GAS。
-
首先查询当前地址可以提取的 GAS 数量,例如:
也可以使用账户的 ScriptHash 查询:
-
构建一笔给自己转账的交易,自动提取 GAS:
也可以使用 KeyPair
:
资产转账
WalletAPI
中封装了 NEP17 转账方法。
可以使用字符串参数:
也可以使用 KeyPair
和 UInt160
(ScriptHash):
多签账户的 NEP17 转账: