Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

质押预编译合约参考

摘要

staking 预编译合约充当桥梁,使 EVM 环境能够使用 Stable SDK 的 x/staking 模块功能。

目录

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

概念

在 Stable SDK 的 x/staking 模块中,必须在链初始化期间注册绑定面额(bond denom)以用于质押。 验证人和委托人只能使用绑定面额的质押代币。 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委托人的地址
validatorAddressaddress验证人的地址
amountuint256委托给验证人的质押代币数量

输出

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

事件

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

undelegate

委托人提取委托给验证人的代币数量。

当解除委托成功完成时,会触发 Unbond 事件。

输入

名称类型描述
delegatorAddressaddress委托人的地址
validatorAddressaddress验证人的地址
amountuint256希望从验证人处解除委托的质押代币数量

输出

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

redelegate

委托人将委托给某验证人的代币数量重新委托给另一个验证人。

当重新委托成功完成时,会触发 Redelegate 事件。

输入

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

输出

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

delegation

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

输入

名称类型描述
delegatorAddressaddress委托人的地址
validatorAddressaddress验证人的地址

输出

名称类型描述
sharesuint256已委托的 shares
balanceCoin已委托代币的数量和面额

Coin 是一个具有以下字段的结构体:

名称类型描述
denomstring奖励的面额
amountuint256奖励的数量

unbondingDelegation

返回委托人与验证人之间的解除委托信息。 如果未找到解除委托,则返回空的 UnbondingDelegationOutput

输入

名称类型描述
delegatorAddressaddress委托人的地址
validatorAddressaddress验证人的地址

输出

名称类型描述
unbondingDelegationUnbondingDelegationOutput解除委托的信息

UnbondingDelegationOutput 是一个具有以下字段的结构体:

名称类型描述
validatorAddressaddress验证人的地址
delegatorAddressaddress委托人的地址
entriesUnbondingDelegationEntry[]解除委托的条目

UnbondingDelegationEntry 是一个具有以下字段的结构体:

名称类型描述
creationHeightuint64条目的创建高度
completionTimeuint64条目的完成时间
initialBalanceCoin条目的初始余额
balanceCoin条目的余额

validator

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

输入

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

输出

名称类型描述
validatorValidator验证人的信息

Validator 是一个具有以下字段的结构体:

名称类型描述
operatorAddressaddress验证人的地址
consensusPubkeystring验证人的公钥
jailedbool验证人是否被监禁
statusint32验证人的状态
tokensuint256委托给验证人的质押代币数量
delegatorSharesuint256委托 shares 的数量
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委托人的地址
srcValidatorAddressaddress源验证人的地址
dstValidatorAddressaddress目标验证人的地址

输出

名称类型描述
redelegationRedelegationOutput重新委托的信息

RedelegationOutput 是一个具有以下字段的结构体:

名称类型描述
delegatorAddressaddress委托人的地址
validatorSrcAddressaddress源验证人的地址
validatorDstAddressaddress目标验证人的地址
entriesRedelegationEntry[]重新委托的条目

RedelegationEntry 是一个具有以下字段的结构体:

名称类型描述
creationHeightuint64条目的创建高度
completionTimeuint64条目的完成时间
initialBalanceCoin条目的初始余额
balanceCoin条目的余额

redelegations

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

输入

名称类型描述
delegatorAddressaddress委托人的地址
srcValidatorAddressaddress源验证人的地址
dstValidatorAddressaddress目标验证人的地址
pageRequestPageReq分页请求

输出

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

事件

CreateValidator

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

EditValidator

名称类型是否索引描述
valiAddraddressY验证人的地址
commissionRateint256N验证人获得的质押代币奖励的更新后佣金率
minSelfDelegationint256N验证人更新后的最低自委托金额

Delegate

名称类型是否索引描述
delegatorAddraddressY委托人的地址
validatorAddrstringY验证人的地址
amountuint256N委托给验证人的质押代币数量
newSharesuint256N委托后的委托 shares 数量

Unbond

名称类型是否索引描述
delegatorAddraddressY委托人的地址
validatorAddrstringY验证人的地址
amountuint256N从验证人处解除委托的质押代币数量
completionTimeuint256N解除委托的完成时间

Redelegate

名称类型是否索引描述
delegatorAddraddressY委托人的地址
validatorSrcAddressaddressY源验证人的地址
validatorDstAddressaddressY目标验证人的地址
amountuint256N用于重新委托的质押代币数量
completionTimeuint256N重新委托的完成时间