-
Notifications
You must be signed in to change notification settings - Fork 255
GRPC Wallet接口
linj edited this page Nov 23, 2022
·
1 revision
[TOC]
调用接口
rpc Lock(ReqNil) returns (Reply) {}
参数:
message ReqNil {}
参数说明: nil
返回数据:
message Reply {
bool isOk = 1;
bytes msg = 2;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
isok | bool | 在成功时,返回 true;失败时,返回 false |
msg | string | 在成功时,为空;失败时,返回错误信息 |
调用接口
rpc UnLock(WalletUnLock) returns (Reply) {}
参数:
message WalletUnLock {
string passwd = 1;
int64 timeout = 2;
bool walletOrTicket = 3;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
passwd | string | 是 | 解锁密码 |
walletOrTicket | bool | 否 | true,只解锁ticket买票功能,false:解锁整个钱包 |
timeout | int64 | 否 | 钱包解锁时间,0,一直解锁,非0值,超时之后继续锁定 |
返回数据: 同上
调用接口
rpc SetPasswd(ReqWalletSetPasswd) returns (Reply) {}
参数:
message ReqWalletSetPasswd {
string oldPass = 1;
string newPass = 2;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
oldPass | string | 是 | 第一次设置密码时,oldPass 为空 |
newPass | string | 是 | 待设置的新密码 必须是8个字符(包含8个)以上的数字和字母组合 |
返回数据: 同上
调用接口
rpc SetLabl(ReqWalletSetLabel) returns (WalletAccount) {}
参数:
message ReqWalletSetLabel {
string addr = 1;
string label = 2;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
addr | string | 是 | 账户地址 |
label | string | 是 | 待设置的账户标签 |
返回数据:
message WalletAccount {
Account acc = 1;
string label = 2;
}
// Account 的信息
message Account {
int32 currency = 1;
int64 balance = 2;
int64 frozen = 3;
string addr = 4;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
acc | Account | 账户信息 |
acc.currency | int32 | 货币类型, coins标识,目前只有0 一个值 |
acc.balance | int64 | 可用余额,1e8 表示 1 个 BTY |
acc.frozen | int64 | 冻结金额 |
acc.addr | string | 账户地址 |
label | string | 是 |
调用接口
rpc NewAccount(ReqNewAccount) returns (WalletAccount) {}
参数:
message ReqNewAccount {
string label = 1;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
label | string | 是 | 账户标签 |
返回数据:
message WalletAccountStore {
string privkey = 1;
string label = 2;
string addr = 3;
string timeStamp = 4;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
privkey | int32 | 账户私钥 |
label | string | 账户标签 |
addr | string | 账户地址 |
timeStamp | string | 创建账户时的时标 |
调用接口
rpc GetAccounts(ReqNil) returns (WalletAccounts) {}
参数: nil
返回数据:
message WalletAccounts {
repeated WalletAccount wallets = 1;
}
message WalletAccountStore {
string privkey = 1;
string label = 2;
string addr = 3;
string timeStamp = 4;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
privkey | int32 | 账户私钥 |
label | string | 账户标签 |
addr | string | 账户地址 |
timeStamp | string | 创建账户时的时标 |
调用接口
rpc MergeBalance(ReqWalletMergeBalance) returns (ReplyHashes) {}
参数:
message ReqWalletMergeBalance {
string to = 1;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
to | string | 是 | 合并钱包上的所有余额到一个账户地址 |
返回数据:
message ReplyHashes {
repeated bytes hashes = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
hashes | []bytes | 交易的 hash 列表 |
调用接口
rpc ImportPrivkey(ReqWalletImportPrivkey) returns (WalletAccount) {}
参数:
message ReqWalletImportPrivkey {
string privkey = 1;
string label = 2;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
privkey | string | 是 | 私钥 |
label | string | 是 | 导入账户标签 |
返回数据:
message WalletAccount {
Account acc = 1;
string label = 2;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
label | string | 账户标签 |
acc | Account | 账户详情 |
调用接口
rpc DumpPrivkey(ReqString) returns (ReplyString) {}
参数:
message ReqString {
string data = 1;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | string | 是 | 待导出私钥的账户地址 |
返回数据:
message ReplyString {
string data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | string | 私钥 |
调用接口
rpc SetTxFee(ReqWalletSetFee) returns (Reply) {}
参数:
message ReqWalletSetFee {
int64 amount = 1;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
amount | int64 | 是 | 手续费 |
返回数据:
message Reply {
bool isOk = 1;
bytes msg = 2;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
isok | bool | 在成功时,返回 true;失败时,返回 false |
msg | string | 在成功时,为空;失败时,返回错误信息 |
调用接口
rpc SendToAddress(ReqWalletSendToAddress) returns (ReplyHash) {}
参数:
message ReqWalletSendToAddress {
string from = 1;
string to = 2;
int64 amount = 3;
string note = 4;
bool isToken = 5;
string tokenSymbol = 6;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
from | string | 是 | 来源地址 |
to | string | 是 | 发送到地址 |
amount | int64 | 是 | 发送金额 |
note | string | 是 | 备注 |
isToken | bool | 是 | 是否是token类型的转账(非token转账这个不用填) |
tokenSymbol | string | 是 | toekn的symbol(非token转账这个不用填) |
返回数据:
message ReplyHash {
bytes hash = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
hash | bytes | 交易hash |
调用接口
rpc WalletTransactionList(ReqWalletTransactionList) returns (WalletTxDetails) {}
参数:
message ReqWalletTransactionList {
bytes fromTx = 1;
int32 count = 2;
int32 direction = 3;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
fromTx | bytes | 是 | Sprintf("%018d", height*100000 + index),表示从高度 height 中的 index 开始获取交易列表;第一次传参为空,获取最新的交易 |
count | int32 | 是 | 获取交易列表的个数 |
direction | int32 | 是 | 查找方式;0,获取最新的交易数据,倒叙排序,在交易列表中时间高度是递减的;1,正序排序,按照时间,区块高度增加的方向获取交易列表 |
返回数据:
message WalletTxDetails {
repeated WalletTxDetail txDetails = 1;
}
message WalletTxDetail {
Transaction tx = 1;
ReceiptData receipt = 2;
int64 height = 3;
int64 index = 4;
int64 blocktime = 5;
int64 amount = 6;
string fromaddr = 7;
bytes txhash = 8;
string actionName = 9;
bytes payload = 10;
}
message Transaction {
bytes execer = 1;
bytes payload = 2;
Signature signature = 3;
int64 fee = 4;
int64 expire = 5;
//随机ID,可以防止payload 相同的时候,交易重复
int64 nonce = 6;
//对方地址,如果没有对方地址,可以为空
string to = 7;
int32 groupCount = 8;
bytes header = 9;
bytes next = 10;
int32 chainID = 11;
}
message ReceiptData {
int32 ty = 1;
repeated ReceiptLog logs = 3;
}
message ReceiptLog {
int32 ty = 1;
bytes log = 2;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
execer | bytes | 当其值等于 "coins" 表示交易与钱包相关,其他过滤 |
payload | bytes | 交易内容,需要解析 |
signature | Signature | 交易签名 |
fee | int64 | 交易手续费 |
expire | int64 | 交易过期区块高度或者时间,大于 1e9 时,表示时间,否则表示高度 |
nonce | int64 | 随机数 |
to | string | 接收地址 |
receipt | ReceiptLog | 中当 ty 等于 2 时,交易有效 |
height | int64 | 交易所在区块高度 |
index | int64 | 用于获取交易 |
txhash | bytes | 交易哈希 |
actionname | string | coins(transfer,withdraw,genesis),ticket(genesis,open,close,miner 挖矿所得) |
调用接口
rpc SignRawTx(ReqSignRawTx) returns (ReplySignRawTx) {}
参数:
message ReqSignRawTx {
string addr = 1;
string privkey = 2;
string txHex = 3;
string expire = 4;
int32 index = 5;
// 签名的模式类型
// 0:普通交易
// 1:隐私交易
// int32 mode = 6;
string token = 7;
int64 fee = 8;
// bytes newExecer = 9;
string newToAddr = 10;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
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 | 否 | - |
返回数据:
message ReplySignRawTx {
string txHex = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
txhex | string | 签名后的交易二进制码 |
调用接口
rpc GenSeed(GenSeedLang) returns (ReplySeed) {}
参数:
message GenSeedLang {
int32 lang = 1;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
lang | int32 | 是 | lang=0:英语,lang=1:简体汉字 |
返回数据:
message ReplySeed {
string seed = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
seed | string | seed字符串 |
调用接口
rpc SaveSeed(SaveSeedByPw) returns (Reply) {}
参数:
message SaveSeedByPw {
string seed = 1;
string passwd = 2;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
seed | string | 是 | 种子要求16个单词或者汉字,参考genseed输出格式,需要空格隔开 |
passwd | string | 是 | 加密密码,必须大于或等于8个字符的字母和数字组合 |
返回数据:
message Reply {
bool isOk = 1;
bytes msg = 2;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
isok | bool | 在成功时,返回 true;失败时,返回 false |
msg | string | 在成功时,为空;失败时,返回错误信息 |
调用接口
rpc GetSeed(GetSeedByPw) returns (ReplySeed) {}
参数:
message GetSeedByPw {
string passwd = 1;
}
参数说明:
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
passwd | string | 是 | 加密密码 |
返回数据:
message ReplySeed {
string seed = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
seed | string | 返回seed字符串 |
调用接口
rpc GetWalletStatus(ReqNil) returns (WalletStatus) {}
参数: nil
返回数据:
message WalletStatus {
bool isWalletLock = 1;
bool isAutoMining = 2;
bool isHasSeed = 3;
bool isTicketLock = 4;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
isWalletLock | bool | 钱包解锁状态时,返回false;锁定状态时,返回true |
isAutoMining | bool | true为自动开启挖矿 |
isHasSeed | bool | true为已经存在seed |
isTicketLock | bool | ticket解锁状态时,返回false;锁定状态时,返回true |
hello world