Skip to content

GRPC autonomy

linj edited this page Nov 23, 2022 · 1 revision

autonomy 接口

[TOC]

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

1 自治系统参数默认值以及范围

1.1 可修改参数

    // 默认公示周期,以区块高度计算,换算成时间大概一周
    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

1.2 不可修改参数

    // 董事会成员数范围
    minBoards                 = 20
	maxBoards                 = 40                  

2 提案董事会成员

2.1 提案董事会成员 PropBoard

调用接口

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 交易十六进制编码后的数据

2.2 撤销提案董事会成员 RvkPropBoard

调用接口

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 交易十六进制编码后的数据

2.3 投票提案董事会成员 VotePropBoard

调用接口

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 交易十六进制编码后的数据

2.4 终止董事会成员提案 TmintPropBoard

调用接口

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 交易十六进制编码后的数据

2.5 查询提案

2.5.1 通过 proposalID 查询提案 GetProposalBoard

调用接口

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
2.5.2 通过状态或者地址以及状态地址查询提案 ListProposalBoard

调用接口

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|

2.6 查询有效的董事会成员 GetActiveBoard

调用接口

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|当前周期的起始区块高度|

3 提案项目

3.1 提案项目 PropProject

调用接口

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 交易十六进制编码后的数据

3.2 撤销提案项目 RvkPropProject

调用接口

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 交易十六进制编码后的数据

3.3 投票提案项目 VotePropProject

调用接口

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 交易十六进制编码后的数据

3.4 投票反对提案项目 PubVotePropProject

调用接口

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 交易十六进制编码后的数据

3.5 终止提案项目 TmintPropProject

调用接口

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 交易十六进制编码后的数据

3.5 查询提案

3.5.1 通过 proposalID 查询提案 GetProposalProject

调用接口

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
3.5.2 通过状态或者地址以及状态地址查询提案 ListProposalProject

调用接口

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|

4 提案系统参数修改

4.1 提案系统参数修改 PropRule

调用接口

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 交易十六进制编码后的数据

4.2 撤销提案系统参数修改 RvkPropRule

调用接口

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 交易十六进制编码后的数据

4.3 投票提案系统参数修改 VotePropRule

调用接口

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 交易十六进制编码后的数据

4.4 终止提案系统参数修改 TmintPropRule

调用接口

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 交易十六进制编码后的数据

4.5 查询提案

4.5.1 通过 proposalID 查询提案 GetProposalRule

调用接口

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
4.5.2 通过状态或者地址以及状态地址查询提案 ListProposalRule

调用接口

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|

4.6 查询有效系统参数 GetActiveRule

调用接口

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|公示期|

5 提案董事会成员修改

5.1 提案董事会成员修改 PropChange

调用接口

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 交易十六进制编码后的数据

5.2 撤销提案董事会成员修改 RvkPropChange

调用接口

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 交易十六进制编码后的数据

5.3 投票提案董事会成员修改 VotePropChange

调用接口

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 交易十六进制编码后的数据

5.4 终止提案董事会成员修改 TmintPropChange

调用接口

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 交易十六进制编码后的数据

5.5 查询提案

5.5.1 通过 proposalID 查询提案 GetProposalChange

调用接口

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
5.5.2 通过状态或者地址以及状态地址查询提案 ListProposalChange

调用接口

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|

6 评论提案

6.1 评论提案 CommentProp

调用接口

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 交易十六进制编码后的数据

6.2 通过提案 ID 查询所对应评论 ListProposalComment

调用接口

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
Clone this wiki locally