Skip to content

Wallet接口

linj edited this page Nov 23, 2022 · 1 revision

Wallet接口

[TOC]

1 账户管理

1.1 钱包加锁 Lock

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.Lock",
    "params":[]
}

参数说明:

参数 类型 说明

响应报文:

{
    "id":int32,
    "result":{"isOK":bool,"msg":"string"},
    "error":null
}

参数说明:

参数 类型 说明
isok bool 在成功时,返回 true;失败时,返回 false
msg string 在成功时,为空;失败时,返回错误信息

1.2 钱包解锁 Unlock

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.UnLock",
    "params":[{"passwd":"string","walletorticket":bool,"timeout":int32}]
}

参数说明:

参数 类型 是否必填 说明
passwd string 解锁密码
walletOrTicket bool true,只解锁ticket买票功能,false:解锁整个钱包
timeout int64 超时时间

响应报文:

{
    "id":int32,
    "result":{"isOK":bool,"msg":"string"},
    "error":null
}

参数说明:

参数 类型 说明
isok bool 在成功时,返回 true;失败时,返回 false
msg string 在成功时,为空;失败时,返回错误信息

1.3 设置/修改钱包密码 SetPasswd

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SetPasswd",
    "params":[{"oldPass":"string","newPass":"string"}]
}

参数说明:

参数 类型 是否必填 说明
oldPass string 第一次设置密码时,oldPass 为空
newPass string 待设置的新密码 必须是8个字符(包含8个)以上的数字和字母组合

响应报文:

{
    "id":int32,
    "result":{"isOK":bool,"msg":"string"},
    "error":null
}

参数说明:

参数 类型 说明
isok bool 在成功时,返回 true;失败时,返回 false
msg string 在成功时,为空;失败时,返回错误信息

1.4 设置账户标签 SetLabl

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SetLabl",
    "params":[{"addr":"string","label":"string"}]
}

参数说明:

参数 类型 是否必填 说明
addr string 账户地址
label string 待设置的账户标签

响应报文:

{
    "id":int32,
    "result":
    {
        "label":"string",
        "acc":{"currency":int32,"balance":int64,"frozen":int64,"addr":"string"}
    },
    "error":null
}

参数说明:

参数 类型 说明
currency int32 货币类型
balance int64 可用余额,1e8 表示 1 个 BTY
frozen int64 冻结金额
addr string 账户地址

示例: Request:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SetLabl",
    "params":[{"addr":"13TbfAPJRmekQxYVEyyGWgfvLwTa8DJW6U","label":"macAddrlabel"}]
}

Response:

{
    "id":int32,
    "result":
    {
        "label":"macAddrlabel",
        "acc":{"currency":int32,"balance":18357590000,"frozen":0,"addr":"13TbfAPJRmekQxYVEyyGWgfvLwTa8DJW6U"}
    },
    "error":null
}

1.5 创建账户 NewAccount

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.NewAccount",
    "params":[{"label":"string"}]
}

参数说明:

参数 类型 是否必填 说明
label string 待设置的账户标签

响应报文:

{
    "id":int32,
    "result":
    {
        "label":"string",
        "acc":{"currency":int32,"balance":int64,"frozen":int64,"addr":"string"}
    },
    "error":null
}

参数说明:

参数 类型 说明
currency int32 货币类型
balance int64 可用余额,1e8 表示 1 个 BTY
frozen int64 冻结金额
addr string 账户地址

1.6 获取账户列表 GetAccounts

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.GetAccounts",
    "params":[{"withoutBalance" : bool}]
}

参数说明:

参数 类型 是否必填 说明
withoutBalance bool 不填或false, 将返回account 的帐号信息。 为true 则返回 label 和 addr 信息, 其他信息为 0

响应报文:

{
    "id":int32,
    "result":
    {
        "wallets":
        [
            {
                "label":"string",
				"acc":{"currency":int32,"balance":int64,"frozen":int64,"addr":"string"}
            },
            {
                "label":"string",
				"acc":{"currency":int32,"balance":int64,"frozen":int64,"addr":"string"}
            }
        ]
    },
    "error":null
}

参数说明:

参数 类型 说明
currency int32 货币类型
balance int64 可用余额,1e8 表示 1 个 BTY
frozen int64 冻结金额
addr string 账户地址

1.7 合并账户余额 MergeBalance

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.MergeBalance",
    "params":[{"to":"string"}] 
}

参数说明:

参数 类型 是否必填 说明
to string 合并钱包上的所有余额到一个账户地址

响应报文:

{
    "id":int32,
    "result":{"hashes":["string"]}
}

参数说明:

参数 类型 说明
hashes [string] 交易的 hash 列表

1.8 导入私钥 ImportPrivkey

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.ImportPrivkey",
    "params":[{"privkey":"string","label":"string"}]  
}

参数说明:

参数 类型 是否必填 说明
privkey string 私钥
label string 导入账户标签

响应报文:

{
    "id":int32,
    "result":{"label":"string","acc":{"currency":int32,"balance":int64,"frozen":int64,"addr":"string"}},
    "error":null
}

参数说明:

参数 类型 说明
label string 账户标签
acc Account 账户详情

1.9 导出私钥 DumpPrivkey

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.DumpPrivkey",
    "params":[{"data":"string"}]
}

参数说明:

参数 类型 是否必填 说明
data string 待导出私钥的账户地址

响应报文:

{
    "id":int32,
    "result":{"data":"string"},
    "error":null
}

参数说明:

参数 类型 说明
data string 私钥

2 交易相关

2.1 设置交易费用 SetTxFee

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SetTxFee",
    "params":[{"amount":int64}] 
}

参数说明:

参数 类型 是否必填 说明
amount int64 手续费

响应报文:

{
    "id":int32,
    "result":{"isOK":bool,"msg":"string"},
    "error":null
}

参数说明:

参数 类型 说明
isok bool 在成功时,返回 true;失败时,返回 false
msg string 在成功时,为空;失败时,返回错误信息

2.2 发送交易 SendToAddress

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SendToAddress",
    "params":[{"from":"string","to":"string","amount":int64,"note":"string","isToken":bool,"tokenSymbol":"string"}]
}

参数说明:

参数 类型 是否必填 说明
from string 来源地址
to string 发送到地址
amount int64 发送金额
note string 备注
isToken bool 是否是token类型的转账(非token转账这个不用填)
tokenSymbol string toekn的symbol(非token转账这个不用填)

响应报文:

{
    "id":int32,
    "result":{"hash":"string"}
    "error":null
}

参数说明:

参数 类型 说明
hash string 交易hash

2.3 获取钱包交易列表 WalletTxList

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.WalletTxList",
    "params":[{"fromTx":"string","count":int32,"direction":int32}]
}

参数说明:

参数 类型 是否必填 说明
fromTx string Sprintf("%018d", height*100000 + index),表示从高度 height 中的 index 开始获取交易列表;第一次传参为空,获取最新的交易
count int32 获取交易列表的个数
direction int32 查找方式;0,获取最新的交易数据,倒叙排序,在交易列表中时间高度是递减的;1,正序排序,按照时间,区块高度增加的方向获取交易列表
mode int32 获取交易列表的个数
sendRecvPrivacy int32
address string
tokenname string

响应报文:

{
    "id":0,
    result":
    {
        "txDetails":
        [
            {
                "tx":
                {
                    "execer":"coins",
                    "payload":"0x18010a061080c8afa025",
                    "signature":
                    {
                        "ty":0,
                        "pubkey":"0x02504fa1c28caaf1d5a20fefb87c50a49724ff401043420cb3ba271997eb5a4387",
                        "signature":"0x304402200319c88c5cc349d6c75671f880e6dba2fc46268fe92f9b62ac4b4b52f63cdb700220153374f999044073fb3d12ba686eeb1f237291e3586eafdc4151f44030f86258"
                    },
                    "fee":1000000,
                    "expire":0,
                    "nonce":6281838661429879825,
                    "to":"1Dx744a6KQpDmv76sFMeR7W5SaQGREA2Bu"
                },
                "receipt":
                {
                    "ty":3,
                    "logs":
                    [
                        {
                            "ty":2,
                            "log":"0x08c0cebafefbcf2a1080cafdfdfbcf2a18c0fbc2ffffffffffff01"
                        },
                        {
                            "ty":3,
                            "log":"0x0880cafdfdfbcf2a108082ceddd6cf2a1880b8d0dfdaffffffff01"
                        },
                        {
                            "ty":3,
                            "log":"0x1080c8afa0251880c8afa025"
                        }
                    ]
                },
                "height":21706,
                "index":75,
                "blockTime":1516110740,
                "amount":10000000000,
                "fromAddr":"14KEKbYtKKQm4wMthSK9J4La4nAiidGozt",
                "txHash":"0xc33717bad521f075966a1ed3835904d0acab863493e9cce5d3cd08e7df934751"
                "actionName": "genesis"
            }
        ]
    }
}

参数说明:

参数 类型 说明
execer string 当其值等于 "coins" 表示交易与钱包相关,其他过滤
payload string 交易内容,需要解析
signature Signature 交易签名
fee int64 交易手续费
expire int64 交易过期区块高度或者时间,大于 1e9 时,表示时间,否则表示高度
nonce int64 随机数
to string 接收地址
receipt ReceiptLog 中当 ty 等于 2 时,交易有效
height int64 交易所在区块高度
index int64 用于获取交易
txhash string 交易哈希
actionname string coins(transfer,withdraw,genesis),ticket(genesis,open,close,miner 挖矿所得)

3 签名相关

3.1 交易签名 SignRawTx

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SignRawTx",
    "params":[{"addr":"string","key":"string","txhex":"string","expire":"string","index":int32}]
}

参数说明:

参数 类型 是否必填 说明
addr string 签名地址
privkey string 签名私钥,addr与key可以只输入其一
txHex string 交易原始数据
expire string 过期时间,可输入如"300ms","-1.5h"或者"2h45m"的字符串,有效时间单位为"ns", "us" (or "µs"), "ms", "s", "m", "h"
index int32 若是签名交易组,则为要签名的交易序号,从1开始,小于等于0则为签名组内全部交易
fee int64 交易费,单位1/10^8 BTY, 为0时将自动设置合适交易费
token string
newToAddr string

响应报文:

{
    "id":int32,
    "result":{"txhex":"0x7ee6331ed623de7f02721f84f898a502494f9a2f6524cce942fb077e0624896d"},
    "error":null
}

参数说明:

参数 类型 说明
txhex string 签名后的交易二进制码

4 seed相关

4.1 生成随机的 GenSeed

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.GenSeed",
    "params":[{"lang":int32}]
}

参数说明:

参数 类型 是否必填 说明
lang int32 lang=0:英语,lang=1:简体汉字

响应报文:

{
    "id":int32,
    "result":{"seed":"string"}
}

参数说明:

参数 类型 说明
seed string seed字符串

4.2 保存seed并用密码加密 SaveSeed

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.SaveSeed",
    "params":[{"seed":"string","passwd":"string"}]
}

参数说明:

参数 类型 是否必填 说明
seed string 种子要求16个单词或者汉字,参考genseed输出格式,需要空格隔开
passwd string 加密密码,必须大于或等于8个字符的字母和数字组合

响应报文:

{
    "id":int32,
    "result":
    {
        "isOK":bool,
        "msg":"string"
    }
}

参数说明:

参数 类型 说明
isok bool 在成功时,返回 true;失败时,返回 false
msg string 在成功时,为空;失败时,返回错误信息

4.3 通过钱包密码获取钱包的seed原文 GetSeed

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.GetSeed",
    "params":[{"passwd":"string"}]
}

参数说明:

参数 类型 是否必填 说明
passwd string 加密密码

响应报文:

{
    "id":int32,
    "result":{"seed":"string"}
}

参数说明:

参数 类型 说明
seed string 返回seed字符串

###5 钱包状态相关

5.1 获取钱包状态 GetWalletStatus

请求报文:

{
    "jsonrpc":"2.0",
    "id":int32,
    "method":"Chain33.GetWalletStatus",
    "params":[]
}

参数说明:

参数 类型 是否必填 说明

响应报文:

{
    "isWalletLock": bool,
    "isAutoMining": bool,
    "isHasSeed": bool,
    "isTicketLock": bool
}

参数说明:

参数 类型 说明
isWalletLock bool 钱包解锁状态时,返回false;锁定状态时,返回true
isAutoMining bool true为自动开启挖矿
isHasSeed bool true为已经存在seed
isTicketLock bool ticket解锁状态时,返回false;锁定状态时,返回true
Clone this wiki locally