跳转到主要内容

概述

staking 预编译合约作为桥梁,使 Stable SDK 的 x/staking 模块功能能在 EVM 环境中使用。

目录

  1. 概念
  2. 配置
  3. 方法
  4. 事件

概念

在 Stable SDK 的 x/staking 模块中,必须在链初始化时注册绑定denomination以进行质押。 验证者和委托者只能使用绑定denomination质押代币。 在 staking 预编译合约中,会进行额外检查以确保验证者或委托者是调用者。

配置

合约地址和gas费用已预定义。

合约地址

  • 0x0000000000000000000000000000000000000800

方法

createValidator

创建一个验证者。 验证者必须以来自操作员的初始委托创建。 对于潜在的委托者,验证者应提供他们的信息和佣金率计划。 委托者可以通过公开信息和市场机制的自然调节来选择验证者委托他们自己的代币。 当验证者成功注册时,会发出 CreateValidator 事件。

输入参数

名称类型描述
descriptionDescription验证者的信息
commissionRatesCommissionRates验证者奖励质押代币的佣金率
minSelfDelegationuint256验证者的最小自委托金额
validatorAddressaddress验证者的地址
pubkeystring验证者的公钥
valueuint256最初自委托给验证者的质押代币数量
Description 是一个包含以下字段的结构:
名称类型描述
monikerstring验证者的名称
identitystring验证者的身份
websitestring验证者网站的URL
securityContactstring安全联系信息
detailsstring验证者的额外描述
CommissionRates 是一个包含以下字段的结构:
名称类型描述
rateuint256验证者获得的当前佣金率
maxRateuint256最大佣金率(不能设置得比这更高)
maxChangeRateuint256验证者一天内可以更改的最大佣金率
rate 应设置为市场可接受的适当值。
  • 如果验证者的佣金率较高,委托者的利润就较低。
  • 如果验证者的佣金率较低,验证者的利润就较低,这使得运营变得困难。
由于高 maxRate 会让委托者担心验证者意外设置高佣金率,因此应小心设置 maxRatemaxChangeRate 在初始化后不可更改。

输出参数

名称类型描述
successbool如果验证者成功注册,则为true

editValidator

验证者更新其信息。 验证者只能更新除了 CommissionRates 结构中不可更改字段(如 maxRatemaxChangeRate)之外的信息。 当验证者成功更新时,会发出 EditValidator 事件。

输入参数

名称类型描述
descriptionDescription验证者的信息
validatorAddressaddress验证者的地址
commissionRateint256验证者奖励质押代币的佣金率
minSelfDelegationint256验证者的最小自委托金额

输出参数

名称类型描述
successbool如果验证者成功更新,则为true

delegate

委托者设置要委托给验证者的代币数量。 当委托成功完成时,会发出 Delegate 事件。

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
validatorAddressstring验证者的地址
amountuint256委托给验证者的质押代币数量

输出参数

名称类型描述
successbool如果委托成功完成,则为true

事件

newShares 表示委托者的所有权比例。 即使委托相同数量的代币,计算出的份额也可能因时间而异。

undelegate

委托者提取委托给验证者的代币数量。 当取消委托成功完成时,会发出 Unbond 事件。

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
validatorAddressstring验证者的地址
amountuint256愿意从验证者那里取消委托的质押代币数量

输出参数

名称类型描述
successbool如果取消委托成功完成,则为true

redelegate

委托者将委托给验证者的代币数量重新委托给另一个验证者。 当重新委托成功完成时,会发出 Redelegate 事件。

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
validatorSrcstring源验证者的地址
validatorDststring目标验证者的地址
amountuint256重新委托的质押代币数量

输出参数

名称类型描述
successbool如果重新委托成功完成,则为true

delegation

返回委托者和验证者之间的委托信息。 如果未找到委托,sharesbalance 将为 0

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
validatorAddressstring验证者的地址

输出参数

名称类型描述
sharesuint256委托的份额
balanceCoin委托代币的数量和denomination
Coin 是一个包含以下字段的结构:
名称类型描述
denomstring奖励的denomination
amountuint256奖励的数量

unbondingDelegation

返回委托者和验证者之间的解绑委托信息。 如果未找到解绑委托,将返回空的 UnbondingDelegationOutput

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
validatorAddressstring验证者的地址

输出参数

名称类型描述
unbondingDelegationUnbondingDelegationOutput解绑委托的信息
UnbondingDelegationOutput 是一个包含以下字段的结构:
名称类型描述
validatorAddressstring验证者的地址
delegatorAddressstring委托者的地址
entriesUnbondingDelegationEntry[]解绑委托的条目
UnbondingDelegationEntry 是一个包含以下字段的结构:
名称类型描述
creationHeightuint64条目的创建高度
completionTimeuint64条目的完成时间
initialBalanceCoin条目的初始余额
balanceCoin条目的余额

validator

返回验证者信息。 如果未找到验证者,将返回空的 ValidatorOutput

输入参数

名称类型描述
validatorAddressaddress验证者的地址

输出参数

名称类型描述
validatorValidator验证者的信息
Validator 是一个包含以下字段的结构:
名称类型描述
operatorAddressstring验证者的地址
consensusPubkeystring验证者的公钥
jailedbool验证者是否被监禁
statusint32验证者的状态
tokensuint256委托给验证者的质押代币数量
delegatorSharesuint256委托份额的数量
descriptionstring验证者的描述
unbondingHeightint64验证者解绑的高度
unbondingTimeint64验证者解绑的时间
commissionuint256验证者奖励质押代币的佣金率
minSelfDelegationuint256验证者的最小自委托金额

validators

返回所有与状态匹配的验证者。 如果未找到验证者,将返回空的 ValidatorsOutput 状态在 x/staking 模块中声明,可以是以下之一:
  • 0 : “BOND_STATUS_UNSPECIFIED”, 未指定状态
  • 1 : “BOND_STATUS_UNBONDING”, 验证者正在解绑
  • 2 : “BOND_STATUS_UNBONDED”, 验证者已解绑
  • 3 : “BOND_STATUS_BONDED”, 验证者已绑定

输入参数

名称类型描述
statusstring验证者的状态
pageRequestPageReq分页请求
PageReq 是一个包含以下字段的结构:
名称类型描述
keybytes页面的键
offsetint64页面的偏移量
limitint64页面的限制
countTotalbool是否计算结果总数
reversebool是否反转结果

输出参数

名称类型描述
validatorsValidator[]验证者数组
pageResponsePageResp分页响应
PageResp 是一个包含以下字段的结构:
名称类型描述
nextKeybytes页面的下一个键
totaluint64结果的总数

redelegation

返回委托者、源验证者和目标验证者的重新委托信息。 如果未找到重新委托,将返回空的 RedelegationOutput

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
srcValidatorAddressstring源验证者的地址
dstValidatorAddressstring目标验证者的地址

输出参数

名称类型描述
redelegationRedelegationOutput重新委托的信息
RedelegationOutput 是一个包含以下字段的结构:
名称类型描述
delegatorAddressstring委托者的地址
validatorSrcAddressstring源验证者的地址
validatorDstAddressstring目标验证者的地址
entriesRedelegationEntry[]重新委托的条目
RedelegationEntry 是一个包含以下字段的结构:
名称类型描述
creationHeightuint64条目的创建高度
completionTimeuint64条目的完成时间
initialBalanceCoin条目的初始余额
balanceCoin条目的余额

redelegations

返回委托者、源验证者和目标验证者的所有重新委托。 如果未找到重新委托,将返回空的 RedelegationResponsePageResp

输入参数

名称类型描述
delegatorAddressaddress委托者的地址
srcValidatorAddressstring源验证者的地址
dstValidatorAddressstring目标验证者的地址
pageRequestPageReq分页请求

输出参数

名称类型描述
responseRedelegationResponse[]重新委托的信息
pageResponsePageResp分页响应

事件

CreateValidator

名称类型索引描述
valiAddraddressY验证者的地址
valueuint256N最初自委托给验证者的质押代币数量

EditValidator

名称类型索引描述
valiAddraddressY验证者的地址
commissionRateint256N验证者奖励质押代币的更新佣金率
minSelfDelegationint256N验证者的更新最小自委托金额

Delegate

名称类型索引描述
delegatorAddraddressY委托者的地址
validatorAddrstringY验证者的地址
amountuint256N委托给验证者的质押代币数量
newSharesuint256N委托后的委托份额数量

Unbond

名称类型索引描述
delegatorAddraddressY委托者的地址
validatorAddrstringY验证者的地址
amountuint256N从验证者取消委托的质押代币数量
completionTimeuint256N取消委托的完成时间

Redelegate

名称类型索引描述
delegatorAddraddressY委托者的地址
validatorSrcAddressstringY源验证者的地址
validatorDstAddressstringY目标验证者的地址
amountuint256N重新委托的质押代币数量
completionTimeuint256N重新委托的完成时间