Skip to content

GRPC 挖矿接口

linj edited this page Nov 23, 2022 · 1 revision

挖矿接口

代码位置: github.com/33cn/plugin/plugin/dapp/ticket/proto

[TOC]

1 获取执行器地址 ConvertExectoAddr

迁移到执行器接口

2 绑定挖矿地址 CreateBindMiner

调用接口

rpc CreateBindMiner(ReqBindMiner) returns (ReplyBindMiner) {}

参数:

message ReqBindMiner {
    string bindAddr     = 1;
    string originAddr   = 2;
    int64  amount       = 3;
    bool   checkBalance = 4;
}

参数说明:

参数 类型 是否必填 说明
bindAddr string 挖矿绑定地址
originAddr string 原始地址
amount int64 用于购买ticket的bty数量
checkBalance bool 是否进行额度检查

返回数据:

message ReplyBindMiner {
    string txHex = 1;
}

参数说明:

参数 类型 说明
txhex string 交易十六进制字符串

3 设置自动挖矿 SetAutoMining

调用接口

rpc SetAutoMining(MinerFlag) returns (Reply) {}

参数:

message MinerFlag {
    int32 flag    = 1;
    int64 reserve = 2;
}

参数说明:

参数 类型 是否必填 说明
flag int32 标识符,1 为开启自动挖矿,0 为关闭自动挖矿。
reserve int64 保留字段

返回数据:

message Reply {
    bool  isOk = 1;
    bytes msg  = 2;
}

参数说明:

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

4 获取Ticket的数量 GetTicketCount

调用接口

rpc GetTicketCount(types.ReqNil) returns (Int64) {}

参数: nil

返回数据:

Int64

参数说明:

参数 类型 说明
result int64 返回ticket的数量

5 获取绑定的挖矿地址

调用接口

rpc QueryChain(ChainExecutor) returns (Reply) {}

参数:

message ChainExecutor {
    string driver    = 1;
    string funcName  = 2;
    bytes  stateHash = 3;
    bytes  param     = 4;
    bytes  extra     = 5;
}
message ReqString {
    string data = 1;
}

参数说明:

参数 类型 是否必须 说明
driver bytes 执行器名称, 这里固定为 ticket
funcName string 操作名称, 这里固定为 MinerAddress
stateHash bytes 所有交易在对应的执行器执行后写入KVDB中重新计算得到的新state的哈希值
param bytes types.Encode(&ReqString)
extra bytes 扩展字段,用于额外的用途
data string 函数参数,data:冷钱包地址

返回数据:

message ReplyStrings {
    repeated string datas = 1;
}

参数说明:

参数 类型 说明
datas []string 返回挖矿地址

6 获取矿工地址的对应的冷钱包地址

调用接口

rpc QueryChain(ChainExecutor) returns (Reply) {}

参数:

message ChainExecutor {
    string driver    = 1;
    string funcName  = 2;
    bytes  stateHash = 3;
    bytes  param     = 4;
    bytes  extra     = 5;
}
message ReqString {
    string data = 1;
}

参数说明:

参数 类型 是否必须 说明
driver bytes 执行器名称, 这里固定为 ticket
funcName string 操作名称, 这里固定为 MinerSourceList
stateHash bytes 所有交易在对应的执行器执行后写入KVDB中重新计算得到的新state的哈希值
param bytes types.Encode(&ReqString)
extra bytes 扩展字段,用于额外的用途
data string 函数参数,data:矿工地址

返回数据:

message ReplyStrings {
    repeated string datas = 1;
}

参数说明:

参数 类型 说明
datas []string 冷钱包地址列表

7 关闭指定账户绑定的tickets

程序员小哥哥正在努力研发中...

调用接口


参数:


    {
        "method":"ticket.CloseTickets",
        "params":[
            {
                "minerAddress":"12HKLEn6g4FH39yUbHh4EVJWcFo5CXg22d",
            }
        ]
}

参数说明:

参数 类型 是否必填 说明
minerAddress string 可以指定账户来只关闭与之绑定的tickets
ticketId []string ticketId

返回数据:


{
    "id":null,
    "result":{
        "hashes":[] string
    },
    "error":null
}

参数说明:

参数 类型 说明
hashes []string ticket地址列表

8 构造买票交易 ticket open

调用接口

rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}

参数:

message CreateTxIn {
    bytes  execer     = 1;
    string actionName = 2;
    bytes  payload    = 3;
}

message TicketOpen {
    string minerAddress      = 1;
    int32 count              = 2;
    string returnAddress     = 3;
    int64 randSeed           = 4;
    repeated bytes pubHashes = 5;
}

参数说明:

参数 类型 是否必填 说明
execer bytes ticket
actionName string Topen
payload bytes TicketOpen结构, Topen需要的参数
payload.minerAddress string 用户挖矿的ticket 地址
payload.returnAddress string 收益地址/币实际存储的地址,(非委托挖矿时,和挖矿地址一致)
payload.count int32 购买ticket的数目
payload.randSeed int64 随机数种子
payload.pubHashes []bytes 数组长度为count, 每个pubHash 用随机的源字符串通过SHA256算法生成。 挖矿时需要公布生成pubHash的源字符串,源字符串用于生成链上随机数

注意: 实现需要保留生成的pubHash的源字符串, 一般将这个功能集成到钱包, 由钱包来管理的随机字符串

返回数据:

message UnsignTx {
    bytes data = 1;
}

参数说明:

参数 类型 说明
data bytes 待签名数据

9 构造挖矿交易 ticket miner

  1. 由于挖矿交易放在区块的第一个交易, 由挖矿时生成, 不需要构造接口。
Clone this wiki locally