跳到主要内容
版本:3.5.0

System Contract

vote_producer.iost​


简介​

超级节点竞选投票合约。

基础信息​

contract_idvote_producer.iost
languagejavascript
version1.0.6

接口描述​

applyRegister(applicant, pubkey, location, url, netid, isProducer)​

申请注册成为节点候选人。

参数列表参数类型备注
applicantstring申请者账户名, 调用此接口需要该账户的 "vote" 权限
pubkeystring节点公钥,出块节点用于签名区块的私钥的对应公钥,base58 编码;非出块节点本参数可以传任意值
locationstring团队地理位置
urlstring团队主页
netidstring出块节点的 networkid;非出块节点不需要传本参数
isProducerbool是否成为出块节点

applyUnregister(applicant)​

申请取消注册。

参数列表参数类型备注
applicantstring申请者账户名,调用此接口需要该账户的 "vote" 权限

unregister(applicant)​

取消注册,如果你是一个已经通过审核的造块节点,需要先调用 ApplyUnregister,审核通过后,才可调用本接口。

参数列表参数类型备注
applicantstring申请者账户名,调用此接口需要该账户的 "vote" 权限

updateProducer(account, pubkey, location, url, netid)​

更新注册信息。

参数列表参数类型备注
accountstring账户名,调用此接口需要该账户的 "vote" 权限
pubkeystring节点公钥,出块节点用于签名区块的私钥的对应公钥,base58 编码;非出块节点本参数可以传任意值
locationstring团队地理位置
urlstring团队主页
netidstring出块节点的 networkid;非出块节点不需要传本参数

logInProducer(account)​

上线,表示本节点目前可以提供服务。

参数列表参数类型备注
accountstring节点账户名,调用此接口需要该账户的 "vote" 权限

logOutProducer(account)​

离线,表示本节点目前无法提供服务。

参数列表参数类型备注
accountstring节点账户名,调用此接口需要该账户的 "vote" 权限

vote(voter, nodeAccount, amount)​

投票。

参数列表参数类型备注
voterstring投票者账户名,调用此接口需要该账户的 "active" 权限
nodeAccountstring节点账户名
amountstring投票数量

unvote(voter, nodeAccount, amount)​

取消投票。

参数列表参数类型备注
voterstring投票者账户名,调用此接口需要该账户的 "active" 权限
nodeAccountstring节点账户名
amountstring投票数量

voterWithdraw(voter)​

投票者领取分红奖励。

参数列表参数类型备注
voterstring投票者账户名,调用此接口需要该账户的 "operate" 权限

candidateWithdraw(candidate)​

竞选者领取分红奖励。

参数列表参数类型备注
candidatestring竞选者账户名,调用此接口需要该账户的 "operate" 权限

getVoterBonus(voter)​

计算投票者的分红奖励。

参数列表参数类型备注
voterstring投票者账户名

getCandidateBonus(candidate)​

计算竞选者的分红奖励。

参数列表参数类型备注
candidatestring竞选者账户名

topupCandidateBonus(amount, payer)​

向节点奖励池充值 iost。

参数列表参数类型备注
amountstring充值金额
payerstring付款账户名,调用此接口需要该账户的 "transfer" 权限

topupVoterBonus(candidate, amount, payer)​

向投票者奖励池充值 iost。

参数列表参数类型备注
candidatestring竞选者账户名
amountstring充值金额
payerstring付款账户名,调用此接口需要该账户的 "transfer" 权限

vote.iost​


简介​

通用投票合约,用于创建投票、收集投票、统计投票。可以基于本合约实现你自己想要的投票功能。

基础信息​

contract_idvote.iost
languagejavascript
version1.0.1

接口描述​

newVote(owner, description, config)​

创建投票。

参数列表参数类型备注
ownerstring投票创建者,创建投票需要质押 1000 IOST,会从创建者账户扣除,调用此接口需要该账户的 "active" 权限
descriptionstring投票描述
configjson 对象投票设置,包含 6 个 key:
resultNumber —— number 类型,投票结果数量,最大为 2000;
minVote —— number 类型,最低得票数,得票数大于这个数量的候选者才能进入投票结果集合;
options —— 数组类型,候选者集合,每一项为字符串,代表一个候选者,初始可以传空 [];
anyOption —— bool 类型,是否允许投非 options 集合中的候选项,传 false 表示用户只能投 options 集合中的候选项;
freezeTime —— number 类型,取消投票后 token 冻结时间,单位秒;
canVote —— bool 类型,是否允许非投票创建者投票;
调用成功会返回全局唯一的投票 ID。

setCanVote(voteID, canVote)​

设置是否允许非投票创建者投票。

调用此接口需要合约创建者的 "active" 权限。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
canVotebool是否允许非投票创建者投票

addOption(voteID, option, clearVotes)​

增加投票选项。

调用此接口需要合约创建者的 "active" 权限。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
optionstring选项
clearVotesbool是否清除以前得票数

removeOption(voteID, option, forceDelete)​

删除投票选项,但保留得票结果,删除后,再通过 AddOption 添加该选项能选择是否恢复得票数。

调用此接口需要合约创建者的 "active" 权限。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
optionstring选项
forceDeletebool是否强制删除,false 表示当该选项在结果集中时不删除,true 表示强制删除并更新结果集

getOption(voteID, option)​

获取候选项的得票情况。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
optionstring选项

返回结果为 json 对象:

key类型备注
votesstring得票数
deletedbool是否被标记为删除
clearTimenumber票数上次被清零的区块号

voteFor(voteID, payer, voter, option, amount)​

代别人投票,投票质押的 IOST 会从代理者账户扣除。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
payerstring代理者账户名,调用此接口需要该账户的 "active" 权限
voterstring投票者账户名
optionstring选项
amountstring投票数量

vote(voteID, voter, option, amount)​

投票。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
voterstring投票者账户名,调用此接口需要该账户的 "active" 权限
optionstring选项
amountstring投票数量

unvote(voteID, voter, option, amount)​

取消投票。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
voterstring投票者账户名,调用此接口需要该账户的 "active" 权限
optionstring选项
amountstring投票数量

getVote(voteID, voter)​

获取某账户投票记录。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID
voterstring投票者账户名

返回结果为 json 数组,每一项为下面的对象:

key类型备注
optionstring选项
votesstring投票数量
voteTimenumber上次投票的区块号
clearedVotesstring被清零的投票数量

getResult(voteID)​

获取投票结果,返回得票数前 resultNumber 的选项。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID

返回结果为 json 数组,每一项为下面的对象:

key类型备注
optionstring选项
votesstring投票数量

delVote(voteID)​

删除投票,退换创建投票时质押的 IOST 到创建者账户。

调用此接口需要合约创建者的 "active" 权限。

参数列表参数类型备注
voteIDstring投票 ID,NewVote 接口返回的 ID

auth.iost​


简介​

账号系统和权限管理

基础信息​

contract_idauth.iost
languagejavascript
version1.0.0

接口描述​

signUp(accountName, ownerKey, activeKey)​

创建账号

参数列表参数类型备注
accountNamestring账户名,长度为 5-11 位的字符串,字符只能包含 [a-z0-9_]
ownerKeystringowner 权限的公钥,base58 编码
activeKeystringactive 权限的公钥,base58 编码

addPermission(account, permission, weight)​

向账号添加权限

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
permissionstring权限名
weightnumber权限阈值

dropPermission(account, permission)​

删除权限

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
permissionstring权限名

assignPermission(account, permission, item, weight)​

指定权限。

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
permissionstring权限名
itemstring权限拥有者,可以为公钥,或者为另一个账户
weightnumber权重

revokePermission(account, permission, item)​

撤销权限。

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
permissionstring权限名
itemstring权限拥有者,可以为公钥,或者为另一个账户

addGroup(account, group)​

添加权限组

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
groupstring组名

dropGroup(account, group)​

删除权限组

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
groupstring组名

assignGroup(account, group, item, weight)​

指定item给权限组

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
groupstring组名
itemstring权限拥有者,可以为公钥,或者为另一个账户
weightnumber权重

revokeGroup(account, group, item)​

撤销权限组的item

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
groupstring组名
itemstring权限拥有者,可以为公钥,或者为另一个账户

assignPermissionToGroup(account, permission, group)​

添加权限到组

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
permissionstring权限名
groupstring组名

revokePermissionInGroup(account, permission, group)​

删除组中的权限

参数列表参数类型备注
accountstring用户名,调用此接口需要该账户的 "owner" 权限
permissionstring权限名
groupstring组名

bonus.iost​


简介​

正式节点造块奖励管理

基础信息​

contract_idbonus.iost
languagejavascript
version1.0.2

接口描述​

exchangeIOST(account, amount)​

使用贡献值兑换 IOST

参数列表参数类型备注
accountstring账户名,调用此接口需要该账户的 "active" 权限
amountstring兑换数量,"0" 为兑换全部

system.iost​


简介​

基础系统合约,用于发行更新合约以及其他基本系统函数.

基础信息​

contract_idsystem.iost
languagenative
version1.0.0

接口描述​

setCode (code)​

部署智能合约.

参数名称参数类型备注
codestring智能合约代码
返回值返回值类型
contractIDstring

智能合约代码中包括代码和智能合约信息, 如语言和接口定义, code 参数支持两种格式: json 格式和 protobuf 序列化的编码格式 对于开发者来说, 部署合约一般不需要直接调用该接口, 建议使用 iwallet 或相关语言的SDK实现。

部署智能合约时,系统会自动调用智能合约的 init() 函数,开发者可以在 init() 函数中做一些初始化工作.

返回值 contractID 是智能合约 ID, 全局唯一, 由部署合约交易的 hash 生成,以Contract 开头包含大小写字母和数字, 一个交易中只能部署一个智能合约。

updateCode (code, data)​

升级智能合约.

参数名称参数类型备注
codestring智能合约代码
datastring升级函数参数

升级智能合约, code 为智能合约代码, 格式与 setCode 中参数格式相同.

升级智能合约时, 系统会自动检查升级权限, 即调用合约中的 can_update(data) 函数, 参数 data 即为 updateCode 中的第二个参数, 当且仅当 can_update 函数存在且调用返回结果为 true 时, 合约升级才会成功, 否则升级失败, 判定为没有升级权限.

cancelDelaytx (txHash)​

取消延迟交易, 在延迟交易执行前调用该函数可以取消延迟交易.

参数名称参数类型备注
txHashstring交易 hash

requireAuth (acc, permission)​

检查该交易是否有acc账户的permission权限签名.

参数名称参数类型备注
accstring账户名
permissionstring权限名
返回值类型
okbool

receipt (data)​

生成交易收据, 收据存放在 block 中, 也可通过交易 hash 查询到.

参数名称参数类型备注
datastring收据内容

exchange.iost​


简介​

主要用于封装创建账户并转账功能, 也可用于向已存在账户转账

基础信息​

contract_idexchange.iost
languagejavascript
version1.0.0

接口描述​

transfer(tokenSym, to, amount, memo)​

创建账户并转账接口

参数名称参数类型备注
tokenSymstring代币标识符
tostring代币接收账户,若要创建账户则填空
amountstring转账金额
memostring附加信息, 若要创建账户则格式应为 create:账户名:owner公钥:active公钥

创建帐号时要求转账金额至少为 100 iost,默认会帮新创建的帐号质押 10 iost 的gas, 并且购买 1K bytes 的 ram, 剩余的金额会转入新创建的账户