-
Notifications
You must be signed in to change notification settings - Fork 256
GRPC autonomy
[TOC]
代码位置: github.com/33cn/plugin/plugin/dapp/autonomy/proto
// 默认公示周期,以区块高度计算,换算成时间大概一周
publicPeriod int32 = 17280 * 7
// 最小公示周期
minPublicPeriod int32 = 17280 * 7
// 最大公示周期
maxPublicPeriod int32 = 17280 * 14
// 默认重大项目公示金阈值
largeProjectAmount = types.Coin * 100 * 10000
// 最小重大项公示金目阈值
minLargeProjectAmount = types.Coin * 100 * 10000
// 最大重大项公示金目阈值
maxLargeProjectAmount = types.Coin * 300 * 10000
// 默认提案金
proposalAmount = types.Coin * 500
// 最小提案金
minProposalAmount = types.Coin * 20
// 最大提案金
maxProposalAmount = types.Coin * 2000
// 默认董事会成员赞成率,以%计
boardApproveRatio int32 = 51
// 最小董事会赞成率
minBoardApproveRatio = 50
// 最大董事会赞成率
maxBoardApproveRatio = 66
// 默认全体持票人否决率,以%计
pubOpposeRatio int32 = 33
// 最小全体持票人否决率
minPubOpposeRatio int32 = 33
// 最大全体持票人否决率
maxPubOpposeRatio int32 = 50
// 可以调整,但是可能需要进行范围的限制:参与率最低设置为 50%, 最高设置为 80%,赞成率,最低 50.1%,最高80%
// 不能设置太低和太高,太低就容易作弊,太高则有可能很难达到
// 最小全体持票人参与率
minPubAttendRatio = 50
// 最大全体持票人参与率
maxPubAttendRatio = 80
// 最小全体持票人赞成率
minPubApproveRatio = 50
// 最大全体持票人赞成率
maxPubApproveRatio = 80
// 董事会成员数范围
minBoards = 20
maxBoards = 40
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message ProposalBoard {
int32 year = 1;
int32 month = 2;
int32 day = 3;
bool update = 4;
repeated string boards = 5;
int64 startBlockHeight = 6; // 提案开始投票高度
int64 endBlockHeight = 7; // 提案结束投票高度
int64 realEndBlockHeight = 8; // 实际提案结束投票高度
BoardUpdate boardUpdate = 9;
}
enum BoardUpdate {
INV = 0;
//新增
ADDBoard = 1;
//剔除
DELBoard = 2;
//整体替换
REPLACEALL = 3;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 PropBoard |
payload | bytes | 是 | types.Encode(&ProposalBoard) |
year | int32 | 否 | 提案年 |
month | int32 | 否 | 提案月 |
day | int32 | 否 | 提案日 |
update | bool | 否 | 是否更新, 已弃用 |
boards | []string | 是 | 提案董事会成员 |
startBlockHeight | int64 | 是 | 开始投票高度 |
endBlockHeight | int64 | 是 | 结束投票高度, endBlockHeight > startBlockHeight + 720 (自治系统中所有涉及提案都需要满足) |
realEndBlockHeight | int64 | 否 | 实际投票结束高度, 不需要填写 |
boardUpdate | int32 | 是 | 1:新增, 2:删除, 3:整体更新 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message RevokeProposalBoard {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 RvkPropBoard |
payload | bytes | 是 | types.Encode(&RevokeProposalBoard) |
proposalID | string | 是 | 提案ID, 即PropBoard的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message VoteProposalBoard {
string proposalID = 1;
bool approve = 2;
//真正投票地址
repeated string originAddr = 3;
//代替approve,并增加了弃权选项
AutonomyVoteOption voteOption = 4;
}
//三种投票选项
enum AutonomyVoteOption {
NOJOIN = 0;
//支持
APPROVE = 1;
//反对
OPPOSE = 2;
//弃权
QUIT = 3;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 VotePropBoard |
payload | bytes | 是 | types.Encode(&VoteProposalBoard) |
proposalID | string | 是 | 提案ID, 即PropBoard的交易hash |
voteOption | int32 | 是 | 投票提案, 1:赞成, 2:反对, 3:弃权 |
originAddr | []string | 否 | 如果有绑定挖矿的可以将挖矿地址填入进行投票 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message TerminateProposalBoard {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 TmintPropBoard |
payload | bytes | 是 | types.Encode(&TerminateProposalBoard) |
proposalID | string | 是 | 提案ID, 即PropBoard的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
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 | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 GetProposalBoard |
stateHash | bytes | 否 | 所有交易在对应的执行器执行后写入KVDB中重新计算得到的新state的哈希值 |
param | bytes | 是 | types.Encode(&ReqString) |
extra | bytes | 否 | 扩展字段,用于额外的用途 |
data | string | 是 | 提案ID, 即PropBoard的交易hash |
调用接口
rpc QueryChain(ChainExecutor) returns (Reply) {}
参数:
message ChainExecutor {
string driver = 1;
string funcName = 2;
bytes stateHash = 3;
bytes param = 4;
//扩展字段,用于额外的用途
bytes extra = 5;
}
message ReqQueryProposalBoard {
int32 status = 1;
string addr = 2;
int32 count = 3;
int32 direction = 4;
int64 height = 5;
int32 index = 6;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
driver | bytes | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 ListProposalBoard |
status | int32 | 是 | 提案状态, 1:提案申请状态, 2:提案撤销状态, 3:提案投票状态, 4:提案结束状态 |
addr | string | 否 | 提案地址 |
count | int32 | 是 | 查询数量 |
direction | int32 | 是 | 查询方向, 0:降序, 1:升序 |
height | int64 | 否 | 查询量大翻页查询时候需要输入从某个高度开始 |
index | int32 | 否 | 查询量大翻页查询时候需要输入从某个index开始 |
返回数据:
message ReplyQueryProposalBoard {
repeated AutonomyProposalBoard propBoards = 1;
}
message AutonomyProposalBoard {
ProposalBoard propBoard = 1;
// 投票该提案的规则
RuleConfig curRule = 2;
// 投票董事会
ActiveBoard board = 3;
// 全体持票人投票结果
VoteResult voteResult = 4;
// 状态
int32 status = 5;
string address = 6;
int64 height = 7;
int32 index = 8;
string proposalID = 9;
}
message ActiveBoard {
repeated string boards = 1;
repeated string revboards = 2;
int64 amount = 3;
int64 startHeight = 4;
}
message VoteResult {
// 总票数
int32 totalVotes = 1;
// 赞成票
int32 approveVotes = 2;
// 反对票
int32 opposeVotes = 3;
// 是否通过
bool pass = 4;
//弃权票
int32 quitVotes = 5;
}
参数说明:
|参数|类型|说明| |----|----|----|----| |propBoard|json|参见(1)| |curRule.boardApproveRatio|int32|董事会赞成率| |curRule.pubAttendRatio|int32|全体持票人参与率| |curRule.pubApproveRatio|int32|全体持票人赞成率| |curRule.pubOpposeRatio|int32|全体持票人否决率| |curRule.proposalAmount|int64|提案金| |curRule.largeProjectAmount|int64|重大项目阈值| |curRule.publicPeriod|int32|公示期| |board.boards|[]string|有投票权的boards| |board.revboards|[]string|无投票权的boards| |board.amount|int64|该boards在当前周期已经审批的项目金| |board.startHeight|int64|当前周期的起始区块高度| |voteResult.totalVotes|int32|总票数| |voteResult.approveVotes|int32|赞成票| |voteResult.opposeVotes|int32|反对票| |voteResult.pass|bool|是否通过, true:通过, false:未通过| |status|int32|提案状态| |address|string|提案地址| |height|int64|提案高度| |index|int32|提案index| |proposalID|string|提案ID|
调用接口
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 | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 GetActiveBoard |
data | string | 是 | "1" |
返回数据:
message ActiveBoard {
repeated string boards = 1;
repeated string revboards = 2;
int64 amount = 3;
int64 startHeight = 4;
}
参数说明:
|参数|类型|说明| |----|----|----|----| |boards|[]string|有投票权的boards| |revboards|[]string|无投票权的boards| |amount|int64|该boards在当前周期已经审批的项目金| |startHeight|int64|当前周期的起始区块高度|
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message ProposalProject {
// 提案时间
int32 year = 1;
int32 month = 2;
int32 day = 3;
// 项目相关
string firstStage = 4; // 第一阶段提案项目hash
string lastStage = 5; // 上一阶段提案项目hash
string production = 6; // 项目地址
string description = 7; // 项目阶段性简述
string contractor = 8; // 承包人
int64 amount = 9; // 项目经费
string amountDetail = 10; // 经费细则
// 支付相关
string toAddr = 11; // 收款地址
// 投票相关
int64 startBlockHeight = 12; // 提案开始投票高度
int64 endBlockHeight = 13; // 提案结束投票高度
int64 realEndBlockHeight = 14; // 实际提案结束投票高度
int32 projectNeedBlockNum = 15; // 以提案结束投票高度为准,需要项目需要消耗的区块数目所对应的时间
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 PropProject |
payload | bytes | 是 | types.Encode(&ProposalProject) |
year | int32 | 否 | 提案年 |
month | int32 | 否 | 提案月 |
day | int32 | 否 | 提案日 |
firstStage | string | 否 | 第一阶段提案项目hash |
lastStage | string | 否 | 上一阶段提案项目hash |
production | string | 否 | 项目地址 |
description | string | 否 | 项目阶段性简述 |
contractor | string | 否 | 承包人 |
amount | int64 | 是 | 项目经费 |
amountDetail | string | 否 | 经费细则 |
toAddr | string | 是 | 收款地址 |
startBlockHeight | int64 | 是 | 开始投票高度 |
endBlockHeight | int64 | 是 | 结束投票高度, endBlockHeight > startBlockHeight + 720 (自治系统中所有涉及提案都需要满足) |
realEndBlockHeight | int64 | 否 | 实际投票结束高度, 不需要填写 |
projectNeedBlockNum | int64 | 否 | 项目耗时预估(以区块计算) |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message RevokeProposalProject {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 RvkPropProject |
payload | bytes | 是 | types.Encode(&RevokeProposalProject) |
proposalID | string | 是 | 提案ID, 即PropProject的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message VoteProposalProject {
string proposalID = 1;
bool approve = 2;
AutonomyVoteOption vote = 3;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 VotePropProject |
payload | bytes | 是 | types.Encode(&VoteProposalProject) |
proposalID | string | 是 | 提案ID, 即PropProject的交易hash |
vote | int32 | 是 | 投票提案, 1:赞成, 2:反对, 3:弃权 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message PubVoteProposalProject {
string proposalID = 1;
bool oppose = 2;
repeated string originAddr = 3;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 PubVotePropProject |
payload | bytes | 是 | types.Encode(&PubVoteProposalProject) |
proposalID | string | 是 | 提案ID, 即PropProject的交易hash |
oppose | bool | 是 | 是否反对该提案, true:反对, false:不反对 |
originAddr | []string | 否 | 如果有绑定挖矿的可以将挖矿地址填入进行投票 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message TerminateProposalProject {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 TmintPropProject |
payload | bytes | 是 | types.Encode(&TerminateProposalProject) |
proposalID | string | 是 | 提案ID, 即PropProject的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
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 | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 GetProposalProject |
data | string | 是 | 提案ID, 即PropProject的交易hash |
调用接口
rpc QueryChain(ChainExecutor) returns (Reply) {}
参数:
message ChainExecutor {
string driver = 1;
string funcName = 2;
bytes stateHash = 3;
bytes param = 4;
//扩展字段,用于额外的用途
bytes extra = 5;
}
message ReqQueryProposalProject {
int32 status = 1;
string addr = 2;
int32 count = 3;
int32 direction = 4;
int64 height = 5;
int32 index = 6;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
driver | bytes | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 ListProposalProject |
status | int32 | 是 | 提案状态, 1:提案申请状态, 2:提案撤销状态, 3:董事会投票状态, 4:全体持票人投票状态, 5:提案结束状态 |
addr | string | 否 | 提案地址 |
count | int32 | 是 | 查询数量 |
direction | int32 | 是 | 查询方向, 0:降序, 1:升序 |
height | int64 | 否 | 查询量大翻页查询时候需要输入从某个高度开始 |
index | int32 | 否 | 查询量大翻页查询时候需要输入从某个index开始 |
返回数据:
message AutonomyProposalProject {
ProposalProject propProject = 1;
// 投票该提案的规则
RuleConfig curRule = 2;
// 投票该提案的董事会成员
repeated string boards = 3;
// 董事会投票结果
VoteResult boardVoteRes = 4;
// 公示投票
PublicVote pubVote = 5;
// 状态
int32 status = 6;
string address = 7;
int64 height = 8;
int32 index = 9;
string proposalID = 10;
}
参数说明:
|参数|类型|说明| |----|----|----|----| |propProject|json|参见(1)| |curRule.boardApproveRatio|int32|董事会赞成率| |curRule.pubAttendRatio|int32|全体持票人参与率| |curRule.pubApproveRatio|int32|全体持票人赞成率| |curRule.pubOpposeRatio|int32|全体持票人否决率| |curRule.proposalAmount|int64|提案金| |curRule.largeProjectAmount|int64|重大项目阈值| |curRule.publicPeriod|int32|公示期| |boards|[]string|投票该提案的董事会成员| |boardVoteRes.totalVotes|int32|总票数| |boardVoteRes.approveVotes|int32|赞成票| |boardVoteRes.opposeVotes|int32|反对票| |boardVoteRes.pass|bool|是否通过, true:通过, false:未通过| |pubVote.publicity|int32|全体持票数| |pubVote.totalVotes|int32|赞成票| |pubVote.opposeVotes|int32|反对票, 反对票率决定是否通过| |pubVote.pubPass|bool|最总是否通过, true:通过, false:未通过| |status|int32|提案状态| |address|string|提案地址| |height|int64|提案高度| |index|int32|提案index| |proposalID|string|提案ID|
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message ProposalRule {
// 提案时间
int32 year = 1;
int32 month = 2;
int32 day = 3;
// 规则可修改项,如果某项不修改则置为-1
RuleConfig ruleCfg = 4;
// 投票相关
int64 startBlockHeight = 5; // 提案开始投票高度
int64 endBlockHeight = 6; // 提案结束投票高度
int64 realEndBlockHeight = 7; // 实际提案结束投票高度
}
message RuleConfig {
// 董事会成员赞成率,以%为单位,只保留整数部分
int32 boardApproveRatio = 1;
// 全体持票人否决率
int32 pubOpposeRatio = 2;
// 提案金额
int64 proposalAmount = 3;
// 重大项目公示金额阈值
int64 largeProjectAmount = 4;
// 重大项目公示时间(以区块数为单位)
int32 publicPeriod = 5;
// 全体持票人参与率
int32 pubAttendRatio = 6;
// 全体持票人赞成率
int32 pubApproveRatio = 7;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 PropRule |
payload | bytes | 是 | types.Encode(&RuleConfig) |
year | int32 | 否 | 提案年 |
month | int32 | 否 | 提案月 |
day | int32 | 否 | 提案日 |
ruleCfg.boardApproveRatio | int32 | 否 | 董事会赞成率 |
ruleCfg.pubAttendRatio | int32 | 否 | 全体持票人参与率 |
ruleCfg.pubApproveRatio | int32 | 否 | 全体持票人赞成率 |
ruleCfg.pubOpposeRatio | int32 | 否 | 全体持票人否决率 |
ruleCfg.proposalAmount | int64 | 否 | 提案金 |
ruleCfg.largeProjectAmount | int64 | 否 | 重大项目阈值 |
ruleCfg.publicPeriod | int32 | 否 | 公示期 |
startBlockHeight | int64 | 是 | 开始投票高度 |
endBlockHeight | int64 | 是 | 结束投票高度, endBlockHeight > startBlockHeight + 720 (自治系统中所有涉及提案都需要满足) |
realEndBlockHeight | int64 | 否 | 实际投票高度, 不需要填写 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message RevokeProposalRule {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 RvkPropRule |
payload | bytes | 是 | types.Encode(&RevokeProposalRule) |
proposalID | string | 是 | 提案ID, 即PropRule的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message VoteProposalRule {
string proposalID = 1;
bool approve = 2;
repeated string originAddr = 3;
AutonomyVoteOption vote = 4;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 VotePropRule |
payload | bytes | 是 | types.Encode(&VoteProposalRule) |
proposalID | string | 是 | 提案ID, 即PropRule的交易hash |
vote | int32 | 是 | 投票提案, 1:赞成, 2:反对, 3:弃权 |
originAddr | []string | 否 | 如果有绑定挖矿的可以将挖矿地址填入进行投票 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message TerminateProposalRule {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 TmintPropRule |
payload | bytes | 是 | types.Encode(&TerminateProposalRule) |
proposalID | string | 是 | 提案ID, 即PropRule的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
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 | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 GetProposalRule |
data | string | 是 | 提案ID, 即PropRule的交易hash |
调用接口
rpc QueryChain(ChainExecutor) returns (Reply) {}
参数:
message ChainExecutor {
string driver = 1;
string funcName = 2;
bytes stateHash = 3;
bytes param = 4;
//扩展字段,用于额外的用途
bytes extra = 5;
}
message ReqQueryProposalRule {
int32 status = 1;
string addr = 2;
int32 count = 3;
int32 direction = 4;
int64 height = 5;
int32 index = 6;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
driver | bytes | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 ListProposalRule |
status | int32 | 是 | 提案状态, 1:提案申请状态, 2:提案撤销状态, 3:提案投票状态, 4:提案结束状态 |
addr | string | 否 | 提案地址 |
count | int32 | 是 | 查询数量 |
direction | int32 | 是 | 查询方向, 0:降序, 1:升序 |
height | int64 | 否 | 查询量大翻页查询时候需要输入从某个高度开始 |
index | int32 | 否 | 查询量大翻页查询时候需要输入从某个index开始 |
返回数据:
message ReplyQueryProposalRule {
repeated AutonomyProposalRule propRules = 1;
}
message AutonomyProposalRule {
ProposalRule propRule = 1;
RuleConfig curRule = 2;
// 全体持票人投票结果
VoteResult voteResult = 3;
// 状态
int32 status = 4;
string address = 5;
int64 height = 6;
int32 index = 7;
string proposalID = 8;
}
参数说明:
|参数|类型|说明| |----|----|----|----| |propRule|json|参见(1)| |curRule|json|参见(1)| |voteResult.totalVotes|int32|总票数| |voteResult.approveVotes|int32|赞成票| |voteResult.opposeVotes|int32|反对票| |voteResult.pass|bool|是否通过, true:通过, false:未通过| |status|int32|提案状态| |address|string|提案地址| |height|int64|提案高度| |index|int32|提案index| |proposalID|string|提案ID|
调用接口
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 | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 GetActiveRule |
data | string | 是 | "1" |
返回数据:
message RuleConfig {
// 董事会成员赞成率,以%为单位,只保留整数部分
int32 boardApproveRatio = 1;
// 全体持票人否决率
int32 pubOpposeRatio = 2;
// 提案金额
int64 proposalAmount = 3;
// 重大项目公示金额阈值
int64 largeProjectAmount = 4;
// 重大项目公示时间(以区块数为单位)
int32 publicPeriod = 5;
// 全体持票人参与率
int32 pubAttendRatio = 6;
// 全体持票人赞成率
int32 pubApproveRatio = 7;
}
参数说明:
|参数|类型|说明| |----|----|----|----| |boardApproveRatio|int32|董事会赞成率| |pubAttendRatio|int32|全体持票人参与率| |pubApproveRatio|int32|全体持票人赞成率| |pubOpposeRatio|int32|全体持票人否决率| |proposalAmount|int64|提案金| |largeProjectAmount|int64|重大项目阈值| |publicPeriod|int32|公示期|
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message ProposalChange {
// 提案时间
int32 year = 1;
int32 month = 2;
int32 day = 3;
// 修改董事会成员
repeated Change changes = 4;
// 投票相关
int64 startBlockHeight = 5; // 提案开始投票高度
int64 endBlockHeight = 6; // 提案结束投票高度
int64 realEndBlockHeight = 7; // 实际提案结束投票高度
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 PropChange |
payload | bytes | 是 | types.Encode(&ProposalChange) |
year | int32 | 否 | 提案年 |
month | int32 | 否 | 提案月 |
day | int32 | 否 | 提案日 |
changes | strings | 是 | 一个成员只允许替换一个新的, 只能填一个 |
changes.cancel | bool | 是 | true, 只允许替换, 不允许恢复操作 |
changes.addr | string | 是 | 撤销或者添加董事会的地址 |
startBlockHeight | int64 | 是 | 开始投票高度 |
endBlockHeight | int64 | 是 | 结束投票高度, endBlockHeight > startBlockHeight + 720 (自治系统中所有涉及提案都需要满足) |
realEndBlockHeight | int64 | 否 | 实际投票结束高度, 不需要填写 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message RevokeProposalChange {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 RvkPropChange |
payload | bytes | 是 | types.Encode(&RevokeProposalChange) |
proposalID | string | 是 | 提案ID, 即PropChange的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message VoteProposalChange {
string proposalID = 1;
bool approve = 2;
AutonomyVoteOption vote = 3;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 VotePropChange |
payload | bytes | 是 | types.Encode(&VoteProposalChange) |
proposalID | string | 是 | 提案ID, 即PropChange的交易hash |
vote | bool | 是 | 投票提案, 1:赞成, 2:反对, 3:弃权 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message TerminateProposalChange {
string proposalID = 1;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 TmintPropChange |
payload | bytes | 是 | types.Encode(&TerminateProposalChange) |
proposalID | string | 是 | 提案ID, 即PropChange的交易hash |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
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 | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 GetProposalChange |
data | string | 是 | 提案ID, 即PropChange的交易hash |
调用接口
rpc QueryChain(ChainExecutor) returns (Reply) {}
参数:
message ChainExecutor {
string driver = 1;
string funcName = 2;
bytes stateHash = 3;
bytes param = 4;
//扩展字段,用于额外的用途
bytes extra = 5;
}
message ReqQueryProposalChange {
int32 status = 1;
string addr = 2;
int32 count = 3;
int32 direction = 4;
int64 height = 5;
int32 index = 6;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
driver | bytes | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 ListProposalChange |
status | int32 | 是 | 提案状态, 1:提案申请状态, 2:提案撤销状态, 3:提案投票状态, 4:提案结束状态 |
addr | string | 否 | 提案地址 |
count | int32 | 是 | 查询数量 |
direction | int32 | 是 | 查询方向, 0降序, 1升序 |
height | int64 | 否 | 查询量大翻页查询时候需要输入从某个高度开始 |
index | int32 | 否 | 查询量大翻页查询时候需要输入从某个index开始 |
返回数据:
message ReplyQueryProposalChange {
repeated AutonomyProposalChange propChanges = 1;
}
message AutonomyProposalChange {
ProposalChange propChange = 1;
// 投票该提案的规则
RuleConfig curRule = 2;
// 投票董事会
ActiveBoard board = 3;
// 全体持票人投票结果
VoteResult voteResult = 4;
// 状态
int32 status = 5;
string address = 6;
int64 height = 7;
int32 index = 8;
string proposalID = 9;
}
message ProposalChange {
// 提案时间
int32 year = 1;
int32 month = 2;
int32 day = 3;
// 修改董事会成员
repeated Change changes = 4;
// 投票相关
int64 startBlockHeight = 5; // 提案开始投票高度
int64 endBlockHeight = 6; // 提案结束投票高度
int64 realEndBlockHeight = 7; // 实际提案结束投票高度
}
参数说明:
|参数|类型|说明| |----|----|----|----| |propChange|json|参见(1)| |curRule.changeApproveRatio|int32|董事会赞成率| |curRule.pubOpposeRatio|int32|全体持票人否决率| |curRule.proposalAmount|int64|提案金| |curRule.largeProjectAmount|int64|重大项目阈值| |curRule.publicPeriod|int32|公示期| |board.boards|[]string|有投票权的boards| |board.revboards|[]string|无投票权的boards| |board.amount|int64|该boards在当前周期已经审批的项目金| |board.startHeight|int64|当前周期的起始区块高度| |voteResult.totalVotes|int32|总票数| |voteResult.approveVotes|int32|赞成票| |voteResult.opposeVotes|int32|反对票| |voteResult.pass|bool|是否通过, true:通过, false:未通过| |status|int32|提案状态| |address|string|提案地址| |height|int64|提案高度| |index|int32|提案index| |proposalID|string|提案ID|
调用接口
rpc CreateTransaction(CreateTxIn) returns (UnsignTx) {}
参数:
message CreateTxIn {
bytes execer = 1;
string actionName = 2;
bytes payload = 3;
}
message Comment {
string proposalID = 1;
string repHash = 2;
string comment = 3;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
execer | bytes | 是 | 执行器名称, 这里固定为 autonomy |
actionName | string | 是 | 操作名称, 这里固定为 CommentProp |
payload | bytes | 是 | types.Encode(&Comment) |
proposalID | string | 是 | 所要评论的提案 |
repHash | string | 否 | 所要回复的评论 |
comment | string | 是 | 评论 |
返回数据:
message UnsignTx {
bytes data = 1;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
data | bytes | 交易十六进制编码后的数据 |
调用接口
rpc QueryChain(ChainExecutor) returns (Reply) {}
参数:
message ChainExecutor {
string driver = 1;
string funcName = 2;
bytes stateHash = 3;
bytes param = 4;
//扩展字段,用于额外的用途
bytes extra = 5;
}
message ReqQueryProposalComment {
string proposalID = 1;
int32 count = 2;
int32 direction = 3;
int64 height = 4;
int32 index = 5;
}
参数说明:
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
driver | bytes | 是 | 执行器名称, 这里固定为 autonomy |
funcName | string | 是 | 操作名称, 这里固定为 ListProposalComment |
proposalID | string | 否 | 提案ID |
count | int32 | 是 | 查询数量 |
direction | int32 | 是 | 查询方向, 0:降序, 1:升序 |
height | int64 | 否 | 查询量大翻页查询时候需要输入从某个高度开始 |
index | int32 | 否 | 查询量大翻页查询时候需要输入从某个index开始 |
返回数据:
message ReplyQueryProposalComment {
repeated RelationCmt rltCmt = 1;
}
message RelationCmt {
string repHash = 1;
string comment = 2;
int64 height = 3;
int32 index = 4;
string hash = 5;
}
参数说明:
参数 | 类型 | 说明 |
---|---|---|
repHash | string | 回复的评论(hash) |
comment | string | 评论 |
height | int64 | 提案高度 |
index | int32 | 提案index |
hash | string | 评论的hash |
hello world