# 系统智能合约 API

# 概述

TOP Network系统合约提供的功能包括节点注册、节点投票、节点入网、节点选举、链上治理等。

系统合约函数如下表所示。

方法名 说明
nodeJoinNetwork 节点入网,调用入网合约。
submitProposal 提交提案。
withdrawProposal 撤销提案。
tccVote TCC委员表决提案。
registerNode 节点注册。
unregisterNode 节点注销。
setDividendRatio 设置节点分红比例。
setNodeName 设置节点昵称。
redeemNodeDeposit 赎回节点注册保证金。
redeemNodeInfo 支持同时更新节点类型、节点名称、节点保证金和分红比例。
updateNodeType 更新节点类型。
stakeDeposit 增加节点保证金。
unstakeDeposit 减少节点保证金。
voteNode 给节点投票。
unvoteNode 取消节点投票。
claimNodeReward 领取节点奖励。
claimVoterDividend 领取投票者分红。

# API 使用说明

# 节点入网

方法名

nodeJoinNetwork

请求参数

参数名称 是否必选 默认值 类型 说明
node_account_addr - String 节点账户地址。

返回参数

无。

# 提交提案

方法名

submitProposal

请求参数

参数名称 是否必选 默认值 类型 说明
proposal_type - Uint8 提案类型:1--修改链上治理参数提案;2--社区基金管理提案。
target - String 当提案类型为修改链上治理参数提案时,target为链上治理参数名称,链上治理参数请参见链上治理参数
当提案类型为社区基金管理提案时,target为接受转账账户地址,销毁账户地址为:T-!-Ebj8hBvoLdvcEEUwNZ423zM3Kh9d4nL1Ug。
value - String 当target为链上治理参数时,value为修改后的值。
当target为接受转账账户地址,value为转账金额,单位uTOP。
proposal_deposit - Uint64 提案保证金,最低为100*10^6 uTOP。
effective_timer_height - Uint64 提案通过后生效时钟高度。如生效始终高度小于提案通过时的始终高度,那么提案在通过后会立刻生效。

返回参数

无。

# 撤销提案

方法名

withdrawProposal

请求参数

参数名称 是否必选 默认值 类型 说明
proposal_id - string 提案ID。

返回参数

无。

# TCC委员表决提案

方法名

tccVote

请求参数

参数名称 是否必选 默认值 类型 说明
proposal_id - String 提案ID。
opinion - Bool true: 赞成, false: 反对。

返回参数

无。

# 节点注册

方法名

registerNode

请求参数

参数名称 是否必选 默认值 类型 说明
node_type - String 节点类型,包括edge(边缘节点)、validator(验证节点)、advance(高级节点),高级节点兼具archive(存档)、validator(验证)、auditor(审计)、Root-Beacon、Sub-Beacon角色。
您可以注册成为三种类型中的一种。
注册成为高级节点后,advance节点被选举为何种工作角色取决于节点的选票:
advance节点被选举为audtior、archive、Root-Beacon、Sub-Beacon角色,节点所获得的选票需要大于等于节点实际质押的保证金(此处节点保证金以TOP计算,非uTOP)。
当选票低于实际质押保证金时,advance节点只能被选为validator。
说明:
节点选票须由接受投票而得,可以由其他节点投票,也可由本账户投票。
nodename - String 节点昵称,4-16字符,字母、数字或下划线。
node_sign_key - String 系统默认使用账户Key作为节点的node_sign_key。
为了更好地保护您的账户资产,建议您创建一对无资产的公私钥对作为节点注册的node_sign _key,在节点注册入网后,节点工作时使用其私钥为节点签名。
此处请传入对应的公钥,其他节点可使用该公钥进行验签。

返回参数

无。

# 节点注销

方法名

unregisterNode

请求参数

无。

返回参数

无。

# 设置节点分红比例

方法名

setDividendRatio

请求参数

参数名称 是否必选 默认值 类型 说明
dividend_ratio Integer 分红比例,取值范围 [0,100]。

返回参数

无。

# 设置节点昵称

方法名

setNodeName

请求参数

参数名称 是否必选 默认值 类型 说明
nodename String 节点名称。

返回参数

无。

# 赎回节点注册保证金

方法名

redeemNodeDeposit

请求参数

无。

返回参数

无。

# 更新节点信息

方法名

updateNodeInfo

请求参数

参数名称 是否必选 默认值 类型 说明
node_name String 更新后的节点名称。
updated_deposit_type Int 1:增加节点保证金;2:减少节点保证金。
node_deposit Uint64 增加或减少的节点保证金。
dividend_ratio Uint32 更新后的分红比例。
node_type String 更新后的节点类型:edge(边缘节点)、validator(验证节点)、advance(高级节点)。

返回参数 无。

# 更新节点类型

方法名

updateNodeType

请求参数

参数名称 是否必选 默认值 类型 说明
node_type String 节点类型。

返回参数

无。

# 增加节点保证金

方法名

stakeDeposit

请求参数

无。

返回参数

无。

# 减少节点保证金

方法名

unstakeDeposit

请求参数

参数名称 是否必选 默认值 类型 说明
unstake_deposit - Uint64 减少的保证金金额,单位uTOP。

返回参数

无。

# 给节点投票

方法名

voteNode

请求参数

参数名称 是否必选 默认值 类型 说明
vote_info - Map<std::string, uint64> 接受投票的节点账户(string);投票数量(Uint64)。

返回参数

无。

# 取消节点投票

方法名

unvoteNode

请求参数

参数名称 是否必选 默认值 类型 说明
vote_info Map<std::string, uint64> <节点账户, 票数> map

返回参数

无。

# 领取节点奖励

方法名

claimNodeReward

请求参数

无。

返回参数

无。

# 领取投票者分红

方法名

claimVoterDividend

请求参数

无。

返回参数

无。