Skip to content

抵押

概念

本文明確了抵押模組。

此模組使基於Cosmos-SDK的區塊鏈能夠支持先進的權益證明系統。 在此系統中,鏈的本地抵押代幣持有者可以成為驗證者,並可以將代幣委託給驗證者,從而最終確定系統的有效驗證者集合。

內容

狀態

池用於追踪已綁定和未綁定的債券面額代幣供應。

最後總功率(LastTotalPower)

LastTotalPower 追踪了在上一個結束區塊期間記錄的已綁定代幣的總量。以 "Last" 為前綴的存儲條目在 EndBlock 之前必須保持不變。

  • LastTotalPower: 0x12 -> ProtocolBuffer(sdk.Int)

Params

Params 是一個模組範疇的配置結構,用於存儲系統參數並定義權益擺放模組的整體運作方式。

  • Params: Paramsspace("staking") -> legacy_amino(params)

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.1/proto/cosmos/staking/v1beta1/staking.proto#L230-L241

驗證者

驗證者可以有三種狀態之一。

  • Unbonded:驗證者不在活躍集合中。他們無法簽署區塊並且不獲得獎勵。但他們可以接收委託。
  • Bonded: 一旦驗證者獲得足夠的綁定代幣,他們將在 EndBlock 期間自動加入活躍集合,並將其狀態更新為 Bonded。他們正在簽署區塊並獲得獎勵。 他們可以接收更多的委託。 他們可能因行為不端而被削減。對此驗證者解除委託的委託人必須等待解除綁定時間(UnbondingTime,一個鏈特定的參數), 在此期間,如果源驗證者在代幣綁定期間犯下了違規行為,委託人仍然有可能被削減。
  • Unbonding: When a validator leaves the active set, either by choice or due to slashing, jailing or tombstoning, an unbonding of all their delegations begins. All delegations must then wait the UnbondingTime before their tokens are moved to their accounts from the BondedPool.

驗證者對象應主要通過OperatorAddr存儲和訪問,OperatorAddr是驗證者操作者的SDK驗證者地址。 每個驗證者對象都需要維護兩個額外的索引,以便完成削減和驗證者集合更新所需的查找。 還維護了第三個特殊索引(LastValidatorPower),但是它在每個區塊中保持不變,與前兩個索引不同,前兩個索引在區塊內反映驗證者記錄。

  • Validators: 0x21 | OperatorAddrLen (1 byte) | OperatorAddr -> ProtocolBuffer(validator)
  • ValidatorsByConsAddr: 0x22 | ConsAddrLen (1 byte) | ConsAddr -> OperatorAddr
  • ValidatorsByPower: 0x23 | BigEndian(ConsensusPower) | OperatorAddrLen (1 byte) | OperatorAddr -> OperatorAddr
  • LastValidatorsPower: 0x11 | OperatorAddrLen (1 byte) | OperatorAddr -> ProtocolBuffer(ConsensusPower)

Validators 是主要的索引 - 它確保每個操作者只能擁有一個關聯驗證者,其中該驗證者的公鑰可以在未來改變。 委託人可以引用驗證者的不可變操作者,而無需擔心公鑰的變化。

ValidatorByConsAddr 是一個額外的索引,用於支持削減查找。 當 Tendermint 報告證據時,它提供驗證者地址,因此需要此映射來查找操作者 請注意,ConsAddr 對應於可以從驗證者的 ConsPubKey 推導出的地址。

ValidatorsByPower 是一個額外的索引,提供了一個排序後的潛在驗證者列表,以快速確定當前的活躍集合。 在此,默認情況下,ConsensusPower 等於 validator.Tokens/10^6。 請注意,所有 Jailed 為 true 的驗證者都不會存儲在此索引中。

LastValidatorsPower 是一個特殊的索引,提供了上一個區塊的綁定驗證者的歷史列表。這個索引在一個區塊中保持不變,但在驗證者集合更新過程中會更新,該過程發生在 [EndBlock].

每個驗證者的狀態都存儲在一個 Validator 結構中:

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/staking.proto#L65-L99

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/staking.proto#L24-L63

Delegation(委託)

委託是通過組合 DelegatorAddr(委託人地址)和 ValidatorAddr(驗證者地址)來標識的。在存儲中,委託人按以下方式進行索引:

  • Delegation: 0x31 | DelegatorAddrLen (1 byte) | DelegatorAddr | ValidatorAddrLen (1 byte) | ValidatorAddr -> ProtocolBuffer(delegation)

持有者可以將代幣委託給驗證者;在這種情況下,他們的資金被保存在一個 Delegation 數據結構中。 它由一個委託人擁有,並與一個驗證者的股份相關聯。交易的發送者是這個擁有者。

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/staking.proto#L159-L170

委託人股份

當某人將代幣委託給驗證者時, 他們將根據一個動態匯率獲得一定數量的委託人股份, 該匯率根據已委託給驗證者的代幣總數和迄今為止發行的股份數量計算,如下所示:

Shares per Token = validator.TotalShares() / validator.Tokens()

在DelegationEntry上只存儲了收到的股份數量。 當委託人取消委託時,他們收到的代幣數量是根據他們目前持有的股份數量和相反的匯率計算的:

Tokens per Share = validator.Tokens() / validatorShares()

這些股份僅僅是一種記賬機制,它們不是一種可互換的資產。 使用這種機制的原因是為了簡化對委託懲罰的記賬。 與其迭代地懲罰每個委託條目的代幣,不如直接懲罰驗證者的總抵押代幣,從而有效地降低每個已發行委託人股份的價值。

解除委託

Delegation中的股份可以解除抵押,但它們必須在一段時間內作為UnbondingDelegation存在,如果檢測到拜占庭行為,股份可以相應減少。

UnbondingDelegation 在存儲中的索引方式為:

  • UnbondingDelegation: 0x32 | DelegatorAddrLen (1 byte) | DelegatorAddr | ValidatorAddrLen (1 byte) | ValidatorAddr -> ProtocolBuffer(unbondingDelegation)
  • UnbondingDelegationsFromValidator: 0x33 | ValidatorAddrLen (1 byte) | ValidatorAddr | DelegatorAddrLen (1 byte) | DelegatorAddr -> nil

第一個映射用於查詢,查找給定委託人的所有解除委託; 第二個映射用於削減,查找與給定驗證者相關的所有需要削減的解除委託。

每次啟動解除抵押時,都會創建一個UnbondingDelegation對象。

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/staking.proto#L172-L198

隊列(Queues)

所有隊列對象都按照時間戳排序。隊列中使用的時間首先四舍五入到最接近的納秒,然後進行排序。 可排序的時間格式是對RFC3339Nano的輕微修改,使用格式字符串"2006-01-02T15:04:05.000000000"。 值得注意的是,這種格式:

  • 將所有零填充至右侧。
  • 丟棄時區信息(使用UTC)。

在所有情況下,存儲的時間戳表示隊列元素的成熟時間。

(解除抵押委託隊列)UnbondingDelegationQueue

為了追踪解除委託的進度,需要維護一個解除委託隊列。

  • UnbondingDelegation: 0x41 | format(time) -> []DVPair

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/staking.proto#L123-L133

驗證者隊列

為了追踪解除驗證者的進度,需要維護一個驗證者隊列。

  • ValidatorQueueTime: 0x43 | format(time) -> []sdk.ValAddress

存儲的對象作為每個鍵是一個驗證者操作地址數組,從中可以訪問驗證者對象。 通常,預期只有一個驗證者記錄與給定的時間戳關聯,但在同一位置的隊列中可能存在多個驗證者。

HistoricalInfo

HistoricalInfo 物件在每個區塊中被儲存和修剪,使得抵押持有者保留由抵押模組參數 HistoricalEntries 定義的最近 n 個歷史資訊。

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/staking.proto#L15-L22

在每個 BeginBlock,staking keeper 將在一個 HistoricalInfo 對象中保留當前的 Header 和提交當前區塊的驗證者。 驗證者根據其地址進行排序,以確保它們按照確定的順序排列。 最老的 HistoricalEntries 將被修剪,以確保只存在參數定義的歷史條目數量。

狀態轉換

本文檔描述了與以下內容相關的狀態轉換操作:

驗證者

在每個 EndBlock 中,對驗證者進行狀態轉換,以檢查活動中的 ValidatorSet 是否有變化。

驗證者可以是 UnbondedUnbondingBondedUnbondedUnbonding 統稱為 Not Bonded。 驗證者可以直接在所有狀態之間移動,但不能從 Bonded 直接轉為 Unbonded

從 Not Bonded 到 Bonded

當驗證者在 ValidatorPowerIndex 中的排名超過 LastValidator 時,將發生以下轉換。

  • validator.Status 設置為 Bonded
  • validator.TokensNotBondedTokens 發送到 BondedPoolModuleAccount
  • ValidatorByPowerIndex 刪除現有記錄
  • ValidatorByPowerIndex 添加一個新的更新記錄
  • 更新此驗證者的 Validator 對象
  • 如果存在,刪除此驗證者的任何 ValidatorQueue 記錄

從 Bonded 到 Unbonding

當驗證者開始解除綁定過程時,將發生以下操作:

  • validator.TokensBondedPool 發送到 NotBondedTokensModuleAccount
  • validator.Status 設置為 Unbonding
  • ValidatorByPowerIndex 刪除現有記錄
  • ValidatorByPowerIndex 添加一個新的更新記錄
  • 更新此驗證者的 Validator 對象
  • 為此驗證者在 ValidatorQueue 中插入一個新記錄

從 Unbonding 到 Unbonded

ValidatorQueue 對象從綁定狀態轉為未綁定狀態時,驗證者從解除綁定狀態轉為未綁定狀態。

  • 更新此驗證者的 Validator 對象
  • validator.Status 設置為 Unbonded

監禁/解禁

當驗證者被監禁時,它實際上是從Tendermint集合中移除的。 這個過程也可以反轉。以下操作將發生:

  • 設置 Validator.Jailed 並更新對象
  • 如果被監禁,從 ValidatorByPowerIndex 刪除記錄
  • 如果解禁,向 ValidatorByPowerIndex` 添加記錄

被監禁的驗證者不會出現在以下任何存儲中:

  • power store (從共識權力到地址)

委託

委派

當委託發生時,驗證者和委託對象都會受到影響。

  • 根據代理的代幣和驗證者的匯率確定代理人的份額
  • 從發送賬戶中刪除代幣
  • 將份額添加到委託對象,或將其添加到創建的驗證者對象中
  • 添加新的代表份額並更新 Validator 對象
  • 根據 validator.Status 是否為 Bonded,將 delegation.Amount 從代表賬戶轉移到 BondedPoolNotBondedPoolModuleAccount
  • ValidatorByPowerIndex 刪除現有記錄
  • ValidatorByPowerIndex 添加一個新的更新記錄

開始解除綁定

作為取消代表和完成解除綁定狀態過渡的一部分,可以調用解除綁定委託。

  • 從委託人中扣除未綁定的份額
  • 如果驗證者為 UnbondingBonded,將代幣添加到 UnbondingDelegation 條目
  • 如果驗證者為 Unbonded,將代幣直接發送到提款賬戶
  • 更新委託或在沒有更多份額的情況下刪除委託
  • 如果委託是驗證者的操作者並且沒有更多的份額,則觸發監禁驗證者
  • 更新已刪除代表份額和相關代幣的驗證者
  • 如果驗證者狀態為 Bonded,將未綁定份額的 Coins 價值從 BondedPool 轉移到 NotBondedPoolModuleAccount
  • 如果驗證者未綁定並且沒有更多的委託份額,則刪除驗證者。

完成解除綁定

對於不立即完成的取消委託,當解除綁定委託隊列元素成熟時,將發生以下操作:

  • UnbondingDelegation 對象中刪除條目
  • 將代幣從 NotBondedPoolModuleAccount 轉移到委託人的 Account

削減

削減驗證者

當驗證者被削減時,將發生以下情況:

  • 總的 slashAmount 計算為 slashFactor(鏈參數)* TokensFromConsensusPower, 即在違規行為發生時綁定到驗證者的代幣總數。
  • 所有解除綁定的委託和偽解除綁定的重新委託,使得在解除綁定或 重新委託開始之前的違規行為都被削減 slashFactor 百分比的初始餘額。
  • 從重新委託和解除綁定委託中削減的每個金額都會從 總削減金額中扣除。
  • 然後從驗證者在 BondedPool 或 NonBondedPool 中的代幣中削減 remaingSlashAmount, 具體取決於驗證者的狀態。這將減少代幣的總供應量。

在需要提交證據的削減情況下(例如雙重簽名),削減發生在包含證據的區塊,而不是違規行為發生的區塊。 換句話說,驗證者不會追溯地被削減,只有在被抓到時才會被削減。

削減解除綁定委託

當驗證者被削減時,從驗證者開始解除綁定的那些解除綁定委託也會在違規行為發生後被削減。 來自驗證者的每個解除綁定委託中的每個條目都會被削減 slashFactor。 削減的金額是根據委託的 InitialBalance 計算的,並且有上限以防止產生負餘額。已完成(或成熟)的解除綁定不會被削減。

股份如何計算

在任何給定的時間點,每個驗證者都有一定數量的代幣 T,並發行了一定數量的股份 S。 每個委託人 i 持有一定數量的股份 S_i。 代幣數量是所有委託給驗證者的代幣之和,加上獎勵,減去削減。

委託人有權獲得與其股份比例相當的基礎代幣部分。 因此,委託人 i 有權獲得驗證者代幣的 T * S_i / S

當委託人向驗證者委託新代幣時,他們將獲得與其貢獻成比例的股份數量。 因此,當委託人 j 委託 T_j 代幣時,他們將獲得 S_j = S * T_j / T 股份。 代幣總數現在是 T + T_j,股份總數是 S + S_j。 j 的股份比例與他們貢獻的代幣總數比例相同:(S + S_j) / S = (T + T_j) / T

一個特殊情況是初始委託,當 T = 0S = 0 時,T_j / T 是未定義的。 對於初始委託,委託人 j 委託 T_j 代幣將獲得 S_j = T_j 股份。 因此,一個尚未獲得任何獎勵且未被削減的驗證者將擁有 T = S

訊息

在本節中,我們描述了抵押訊息的處理以及相應的狀態更新。 每條訊息所指定的所有創建/修改的狀態對象均在 狀態 部分中定義。

MsgCreateValidator

通過使用MsgCreateValidator消息來創建驗證者。驗證者必須在操作者的初始委託下創建。

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L16-L17

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L35-L51

如果出現以下情況,則預期此消息將失敗:

  • 已經註冊了具有此操作者地址的另一個驗證者
  • 已經註冊了具有此公鑰的另一個驗證者
  • 初始自我委託代幣的面額未指定為抵押面額
  • 佣金參數有誤,即:
  • MaxRate 大於 1 或小於 0
  • 初始 Rate 為負數或大於 MaxRate
  • 初始 MaxChangeRate 為負數或大於 MaxRate
  • 描述字段過大

此消息在適當的索引處創建並存儲Validator對象。 此外,還將使用初始代幣委託代幣Delegation進行自我委託。驗證者始終以未綁定的狀態開始,但可能在第一個結束區塊中綁定。

MsgEditValidator

可以使用MsgEditValidator消息更新驗證者的DescriptionCommissionRate

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L19-L20

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L56-L76

如果出現以下情況,則預期此消息將失敗:

  • 初始 CommissionRate 為負數或大於 MaxRate
  • CommissionRate 已在過去 24 小時內更新
  • CommissionRate 大於 MaxChangeRate
  • 描述字段過大

此消息存儲更新後的Validator對象。

MsgDelegate

在此消息中,委託人提供代幣,作為回報,他們將獲得其驗證者(新創建的)委託人股份中的一部分,這些股份分配給Delegation.Shares

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L22-L24

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L81-L90

如果出現以下情況,則預期此消息將失敗:

  • 驗證者不存在
  • Amount Coin 的面額與 params.BondDenom 定義的面額不同
  • 兌換率無效,即驗證者沒有代幣(由於削減)但存在未分配的股份
  • 委託金額小於允許的最低委託金額

如果對於提供的地址尚不存在現有的Delegation對象,則它將作為此消息的一部分創建,否則將更新現有的Delegation以包括新收到的股份。

委託人按當前匯率獲得新鑄造的股份。匯率是驗證者中現有股份數除以當前委託代幣數。

驗證者在ValidatorByPower索引中進行更新,並在Validators索引中的驗證者對象中跟踪委託。

可以委託給入獄的驗證者,唯一的區別是在其被解除監禁之前,它不會被添加到權力指數中。

MsgUndelegate

MsgUndelegate消息允許委託人從驗證者那裡撤銷他們的代幣。

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L30-L32

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L112-L121

此消息返回包含解除委託完成時間的響應:

+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0/proto/cosmos/staking/v1beta1/tx.proto#L123-L126

如果出現以下情況,則預期此消息將失敗:

  • 委託不存在
  • 驗證者不存在
  • 委託的股份少於Amount的價值
  • 現有的UnbondingDelegation具有由params.MaxEntries定義的最大條目
  • Amount具有與params.BondDenom定義的面額不同的面額

處理此消息時,將發生以下操作:

  • 驗證者的DelegatorShares和委託的Shares都將通過消息SharesAmount減少
  • 計算股份的代幣價值,並從驗證者中移除該數量的代幣
  • 使用這些移除的代幣,如果驗證者是:
  • Bonded - 將它們添加到UnbondingDelegation中的一個條目(如果不存在,創建UnbondingDelegation),完成時間為從當前時間開始的完整解除委託期。更新池股份以減少BondedTokens並增加NotBondedTokens的股份代幣價值。
  • Unbonding - 將它們添加到UnbondingDelegation中的一個條目(如果不存在,創建UnbondingDelegation),與驗證者(UnbondingMinTime)相同的完成時間。
  • Unbonded - 然後將coins發送給消息DelegatorAddr
  • 如果委託中沒有更多的Shares,那麼委託對象將從存儲中移除
  • 在這種情況下,如果委託是驗證者的自我委託,那麼還將監禁驗證者。

Begin-Block(開始新區塊)

每次 abci begin block 調用時,歷史信息將根據HistoricalEntries參數進行存儲和修剪。

Historical Info Tracking(歷史信息跟踪)

如果 HistoricalEntries 參數為 0,則 BeginBlock 不執行任何操作。

否則,最新的歷史信息將存儲在鍵 historicalInfoKey|height 下,而任何早於 height - HistoricalEntries 的條目都將被刪除。 在大多數情況下,這意味著每個區塊將修剪一個條目。 然而,如果參數 HistoricalEntries 已更改為較低的值,則存儲中將有多個條目需要修剪。

End-Block(結束區塊)

每次 abci end block 調用,都會指定執行更新隊列和驗證器集合變更的操作。

驗證器集合變更

在此過程中,通過每個區塊結束時運行的狀態轉換來更新抵押驗證器集合。 作為此過程的一部分,任何更新的驗證器也會返回到 Tendermint,以便包含在負責驗證共識層的 Tendermint 消息的 Tendermint 驗證器集合中。 操作如下:

  • 新的驗證器集合取自從ValidatorsByPower索引中檢索的前params.MaxValidators個驗證器
  • 將先前的驗證器集合與新的驗證器集合進行比較:
  • 缺失的驗證器開始解除綁定,並將其TokensBondedPool轉移到NotBondedPoolModuleAccount
  • 新的驗證器立即綁定,並將其TokensNotBondedPool轉移到BondedPool的ModuleAccount

在所有情況下,任何離開或進入綁定驗證器集合的驗證器,或者在綁定驗證器集合內更改餘額, 都會產生一條更新消息,報告它們的新共識能力,然後將其傳回到 Tendermint。

LastTotalPowerLastValidatorsPower 保存了上一個區塊結束時的總功率和驗證器功率的狀態, 並用於檢查在ValidatorsByPower中發生的變化以及在EndBlock期間計算的新總功率。

隊列

在抵押中,某些狀態轉換並非瞬間完成,而是在一段時間內進行(通常是解除綁定期)。 當這些轉換成熟時,必須執行某些操作以完成狀態操作。這是通過在每個區塊結束時檢查/處理隊列來實現的。

解除綁定驗證器

當驗證器被踢出綁定驗證器集合時(無論是因為被監禁還是沒有足夠的綁定代幣), 它將開始解除綁定過程,同時所有與其委託的解除綁定也將開始(儘管仍然被委託給此驗證器)。 在這一點上,驗證器被認為是一個"解除綁定驗證器",在解除綁定期過去之後,它將成熟為一個"未綁定驗證器"。

在每個區塊中,都需要檢查驗證器隊列中是否有成熟的解除綁定驗證器(即完成時間 <= 當前時間和完成高度 <= 當前區塊高度)。 此時,任何沒有剩餘委託的成熟驗證器都將從狀態中刪除。 對於仍然有剩餘委託的所有其他成熟解除綁定驗證器,validator.Status將從types.Unbonding切換為types.Unbonded

解除綁定委託

UnbondingDelegations隊列中完成所有成熟的UnbondingDelegations.Entries的解除綁定,遵循以下步驟:

  • 將餘額代幣轉移到委託人的錢包地址
  • UnbondingDelegation.Entries中移除成熟的條目
  • 如果沒有剩餘條目,則從存儲中移除UnbondingDelegation對象。

Hooks(鉤子)

其他模組可以註冊操作,以便在抵押中發生某個事件時執行。這些事件可以註冊為在抵押事件之前(根據鉤子名稱)或之後執行。以下鉤子可以在抵押中註冊:

  • AfterValidatorCreated(Context, ValAddress)
  • 當創建驗證器時調用。
  • BeforeValidatorModified(Context, ValAddress)
  • 當驗證器的狀態發生變化時調用。
  • AfterValidatorRemoved(Context, ConsAddress, ValAddress)
  • 當驗證器被刪除時調用。
  • AfterValidatorBonded(Context, ConsAddress, ValAddress)
  • 當驗證器被綁定時調用。
  • AfterValidatorBeginUnbonding(Context, ConsAddress, ValAddress)
  • 當驗證器開始解除綁定時調用。
  • BeforeDelegationCreated(Context, AccAddress, ValAddress)
  • 當創建委託時調用。
  • BeforeDelegationSharesModified(Context, AccAddress, ValAddress)
  • 當委託份額被修改時調用。
  • BeforeDelegationRemoved(Context, AccAddress, ValAddress)
  • 當委託被移除時調用。

Events(事件)

抵押模組發出以下事件:

EndBlocker

Type Attribute Key Attribute Value
complete_unbonding amount {totalUnbondingAmount}
complete_unbonding validator {validatorAddress}
complete_unbonding delegator {delegatorAddress}
complete_redelegation amount {totalRedelegationAmount}
complete_redelegation source_validator {srcValidatorAddress}
complete_redelegation destination_validator {dstValidatorAddress}
complete_redelegation delegator {delegatorAddress}

消息事件

MsgCreateValidator

Type Attribute Key Attribute Value
create_validator validator {validatorAddress}
create_validator amount {delegationAmount}
message module staking
message action create_validator
message sender {senderAddress}

MsgEditValidator

Type Attribute Key Attribute Value
edit_validator commission_rate {commissionRate}
edit_validator min_self_delegation {minSelfDelegation}
message module staking
message action edit_validator
message sender {senderAddress}

MsgDelegate

Type Attribute Key Attribute Value
delegate validator {validatorAddress}
delegate amount {delegationAmount}
message module staking
message action delegate
message sender {senderAddress}

MsgUndelegate

Type Attribute Key Attribute Value
unbond validator {validatorAddress}
unbond amount {unbondAmount}
unbond completion_time [0] {completionTime}
message module staking
message action begin_unbonding
message sender {senderAddress}
  • [0] 時間格式遵循 RFC3339 標準。

參數

抵押模組包含以下參數:

Key Type Example
UnbondingTime string (time ns) "259200000000000"
MaxValidators uint16 100
KeyMaxEntries uint16 7
HistoricalEntries uint16 3
BondDenom string "dst"
PowerReduction string "1000000"

客戶端

CLI

用戶可以使用命令行界面(CLI)查詢和與staking模組互動。

Query

query命令允許用戶查詢staking的狀態。

stcd query staking --help

delegation

delegation 命令允許用戶查詢特定委託人在特定驗證者上的委託情況。

使用方法:

stcd query staking delegation [delegator-addr] [validator-addr] [flags]

範例:

stcd query staking delegation dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

範例輸出:

balance:
  amount: "10000000000"
  denom: dst
delegation:
  delegator_address: dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
  shares: "10000000000.000000000000000000"
  validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

delegations

delegations 命令允許用戶查詢特定委託人在所有驗證者上的委託情況。

使用方法:

stcd query staking delegations [delegator-addr] [flags]

範例:

stcd query staking delegations dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p

範例輸出:

delegation_responses:
- balance:
    amount: "10000000000"
    denom: dst
  delegation:
    delegator_address: dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
    shares: "10000000000.000000000000000000"
    validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
- balance:
    amount: "10000000000"
    denom: dst
  delegation:
    delegator_address: dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
    shares: "10000000000.000000000000000000"
    validator_address: dstvaloper1x20lytyf6zkcrv5edpkfkn8sz578qg5sqfyqnp
pagination:
  next_key: null
  total: "0"

delegations-to

delegations-to 命令允許用戶查詢特定驗證者上的委託情況。

使用方法:

stcd query staking delegations-to [validator-addr] [flags]

範例:

stcd query staking delegations-to dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

範例輸出:

- balance:
    amount: "504000000"
    denom: dst
  delegation:
    delegator_address: dst1q2qwwynhv8kh3lu5fkeex4awau9x8fwt45f5cp
    shares: "504000000.000000000000000000"
    validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
- balance:
    amount: "78125000000"
    denom: uixo
  delegation:
    delegator_address: dst1qvppl3479hw4clahe0kwdlfvf8uvjtcd99m2ca
    shares: "78125000000.000000000000000000"
    validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
pagination:
  next_key: null
  total: "0"

historical-info

historical-info 命令允許用戶在給定高度查詢歷史信息。

使用方法:

stcd query staking historical-info [height] [flags]

範例:

stcd query staking historical-info 10

範例輸出:

header:
  app_hash: Lbx8cXpI868wz8sgp4qPYVrlaKjevR5WP/IjUxwp3oo=
  chain_id: testnet
  consensus_hash: BICRvH3cKD93v7+R1zxE2ljD34qcvIZ0Bdi389qtoi8=
  data_hash: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
  evidence_hash: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
  height: "10"
  last_block_id:
    hash: RFbkpu6pWfSThXxKKl6EZVDnBSm16+U0l0xVjTX08Fk=
    part_set_header:
      hash: vpIvXD4rxD5GM4MXGz0Sad9I7//iVYLzZsEU4BVgWIU=
      total: 1
  last_commit_hash: Ne4uXyx4QtNp4Zx89kf9UK7oG9QVbdB6e7ZwZkhy8K0=
  last_results_hash: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
  next_validators_hash: nGBgKeWBjoxeKFti00CxHsnULORgKY4LiuQwBuUrhCs=
  proposer_address: mMEP2c2IRPLr99LedSRtBg9eONM=
  time: "2021-10-01T06:00:49.785790894Z"
  validators_hash: nGBgKeWBjoxeKFti00CxHsnULORgKY4LiuQwBuUrhCs=
  version:
    app: "0"
    block: "11"
valset:
- commission:
    commission_rates:
      max_change_rate: "0.010000000000000000"
      max_rate: "0.200000000000000000"
      rate: "0.100000000000000000"
    update_time: "2021-10-01T05:52:50.380144238Z"
  consensus_pubkey:
    '@type': /cosmos.crypto.ed25519.PubKey
    key: Auxs3865HpB/EfssYOzfqNhEJjzys2Fo6jD5B8tPgC8=
  delegator_shares: "10000000.000000000000000000"
  description:
    details: ""
    identity: ""
    moniker: myvalidator
    security_contact: ""
    website: ""
  jailed: false
  min_self_delegation: "1"
  operator_address: dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc
  status: BOND_STATUS_BONDED
  tokens: "10000000"
  unbonding_height: "0"
  unbonding_time: "1970-01-01T00:00:00Z"

params

params 命令允許用戶查詢設置為抵押參數的值。

使用方法:

stcd query staking params [flags]

範例:

stcd query staking params

範例輸出:

bond_denom: dst
historical_entries: 10000
max_entries: 7
max_validators: 50
unbonding_time: 1814400s

pool

pool 命令允許用戶查詢存儲在抵押池中的金額值。

使用方法:

stcd q staking pool [flags]

範例:

stcd q staking pool

範例輸出:

bonded_tokens: "10000000"
not_bonded_tokens: "0"
``
範例:

```bash
stcd query staking redelegation dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p dstvaloper1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

範例輸出:

pagination: null
redelegation_responses:
- entries:
  - balance: "50000000"
    redelegation_entry:
      completion_time: "2021-10-24T20:33:21.960084845Z"
      creation_height: 2.382847e+06
      initial_balance: "50000000"
      shares_dst: "50000000.000000000000000000"
  - balance: "5000000000"
    redelegation_entry:
      completion_time: "2021-10-25T21:33:54.446846862Z"
      creation_height: 2.397271e+06
      initial_balance: "5000000000"
      shares_dst: "5000000000.000000000000000000"
  redelegation:
    delegator_address: dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
    entries: null
    validator_dst_address: dstvaloper1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm
    validator_src_address: dstvaloper1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm

unbonding-delegation

unbonding-delegation 命令允許用戶查詢特定委託人在特定驗證者上的解綁委託情況。

使用方法:

stcd query staking unbonding-delegation [delegator-addr] [validator-addr] [flags]

範例:

stcd query staking unbonding-delegation dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

範例輸出:

delegator_address: dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
entries:
- balance: "52000000"
  completion_time: "2021-11-02T11:35:55.391594709Z"
  creation_height: "55078"
  initial_balance: "52000000"
validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

unbonding-delegations

unbonding-delegations 命令允許用戶查詢一個委託人的所有解綁委託記錄。

使用方法:

stcd query staking unbonding-delegations [delegator-addr] [flags]

範例:

stcd query staking unbonding-delegations dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p

範例輸出:

pagination:
  next_key: null
  total: "0"
unbonding_responses:
- delegator_address: dst1gghjut3ccd8ay0zduzj64hwre2fxs9ld75ru9p
  entries:
  - balance: "52000000"
    completion_time: "2021-11-02T11:35:55.391594709Z"
    creation_height: "55078"
    initial_balance: "52000000"
  validator_address: dstvaloper1t8ehvswxjfn3ejzkjtntcyrqwvmvuknzmvtaaa

unbonding-delegations-from

unbonding-delegations-from 命令允許用戶查詢從驗證者解綁的委託情況。

使用方法:

stcd query staking unbonding-delegations-from [validator-addr] [flags]

範例:

stcd query staking unbonding-delegations-from dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

範例輸出:

pagination:
  next_key: null
  total: "0"
unbonding_responses:
- delegator_address: dst1qqq9txnw4c77sdvzx0tkedsafl5s3vk7hn53fn
  entries:
  - balance: "150000000"
    completion_time: "2021-11-01T21:41:13.098141574Z"
    creation_height: "46823"
    initial_balance: "150000000"
  validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
- delegator_address: dst1peteje73eklqau66mr7h7rmewmt2vt99y24f5z
  entries:
  - balance: "24000000"
    completion_time: "2021-10-31T02:57:18.192280361Z"
    creation_height: "21516"
    initial_balance: "24000000"
  validator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

validator

validator 命令允許用戶查詢有關特定驗證者的詳細信息。

使用方法:

stcd query staking validator [validator-addr] [flags]

範例:

stcd query staking validator dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj

範例輸出:

commission:
  commission_rates:
    max_change_rate: "0.020000000000000000"
    max_rate: "0.200000000000000000"
    rate: "0.050000000000000000"
  update_time: "2021-10-01T19:24:52.663191049Z"
consensus_pubkey:
  '@type': /cosmos.crypto.ed25519.PubKey
  key: sIiexdJdYWn27+7iUHQJDnkp63gq/rzUq1Y+fxoGjXc=
delegator_shares: "32948270000.000000000000000000"
description:
  details: Witval is the validator arm from Vitwit. Vitwit is into software consulting
    and services business since 2015. We are working closely with Cosmos ecosystem
    since 2018. We are also building tools for the ecosystem, Aneka is our explorer
    for the cosmos ecosystem.
  identity: 51468B615127273A
  moniker: Witval
  security_contact: ""
  website: ""
jailed: false
min_self_delegation: "1"
operator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
status: BOND_STATUS_BONDED
tokens: "32948270000"
unbonding_height: "0"
unbonding_time: "1970-01-01T00:00:00Z"

validators

validators 命令允許用戶查詢網絡上所有驗證者的詳細信息。

使用方法:

stcd query staking validators [flags]

範例:

stcd query staking validators

範例輸出:

pagination:
  next_key: FPTi7TKAjN63QqZh+BaXn6gBmD5/
  total: "0"
validators:
commission:
  commission_rates:
    max_change_rate: "0.020000000000000000"
    max_rate: "0.200000000000000000"
    rate: "0.050000000000000000"
  update_time: "2021-10-01T19:24:52.663191049Z"
consensus_pubkey:
  '@type': /cosmos.crypto.ed25519.PubKey
  key: sIiexdJdYWn27+7iUHQJDnkp63gq/rzUq1Y+fxoGjXc=
delegator_shares: "32948270000.000000000000000000"
description:
    details: Witval is the validator arm from Vitwit. Vitwit is into software consulting
      and services business since 2015. We are working closely with Cosmos ecosystem
      since 2018. We are also building tools for the ecosystem, Aneka is our explorer
      for the cosmos ecosystem.
    identity: 51468B615127273A
    moniker: Witval
    security_contact: ""
    website: ""
  jailed: false
  min_self_delegation: "1"
  operator_address: dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj
  status: BOND_STATUS_BONDED
  tokens: "32948270000"
  unbonding_height: "0"
  unbonding_time: "1970-01-01T00:00:00Z"
- commission:
    commission_rates:
      max_change_rate: "0.100000000000000000"
      max_rate: "0.200000000000000000"
      rate: "0.050000000000000000"
    update_time: "2021-10-04T18:02:21.446645619Z"
  consensus_pubkey:
    '@type': /cosmos.crypto.ed25519.PubKey
    key: GDNpuKDmCg9GnhnsiU4fCWktuGUemjNfvpCZiqoRIYA=
  delegator_shares: "559343421.000000000000000000"
  description:
    details: Noderunners is a professional validator in POS networks. We have a huge
      node running experience, reliable soft and hardware. Our commissions are always
      low, our support to delegators is always full. Stake with us and start receiving
      your Cosmos rewards now!
    identity: 812E82D12FEA3493
    moniker: Noderunners
    security_contact: info@noderunners.biz
    website: http://noderunners.biz
  jailed: false
  min_self_delegation: "1"
  operator_address: dstvaloper1q5ku90atkhktze83j9xjaks2p7uruag5zp6wt7
  status: BOND_STATUS_BONDED
  tokens: "559343421"
  unbonding_height: "0"
  unbonding_time: "1970-01-01T00:00:00Z"

Transactions

tx 命令允許用戶與 staking 模組進行交互。

stcd tx staking --help

create-validator

create-validator 命令允許用戶創建一個新的驗證者,並對其進行自我委託初始化。

使用方法:

stcd tx staking create-validator [flags]

範例:

stcd tx staking create-validator \
  --amount=1000000dst \
  --pubkey=$(stcd tendermint show-validator) \
  --moniker="my-moniker" \
  --website="https://myweb.site" \
  --details="description of your validator" \
  --chain-id="name_of_chain_id" \
  --commission-rate="0.10" \
  --commission-max-rate="0.20" \
  --commission-max-change-rate="0.01" \
  --min-self-delegation="1" \
  --gas="auto" \
  --gas-adjustment="1.2" \
  --gas-prices="5000000000dst" \
  --from=mykey

delegate

delegate 命令允許用戶將流動代幣委託給一個驗證者。

使用方法:

stcd tx staking delegate [validator-addr] [amount] [flags]

範例:

stcd tx staking delegate dstvaloper1l2rsakp388kuv9k8qzq6lrm9taddae7fpx59wm 1000dst --from mykey

edit-validator

edit-validator 命令允許用戶編輯現有的驗證者賬戶。

使用方法:

stcd tx staking edit-validator [flags]

範例:

stcd tx staking edit-validator --moniker "new_moniker_name" --website "new_webiste_url" --from mykey

unbond

unbond 命令允許用戶從驗證者中解除綁定股份。

使用方法:

stcd tx staking unbond [validator-addr] [amount] [flags]

範例:

stcd tx staking unbond dstvaloper1gghjut3ccd8ay0zduzj64hwre2fxs9ldmqhffj 100dst --from mykey

gRPC

用戶可以使用 gRPC 端點查詢 staking 模塊。

Validators

Validators 端點查詢符合給定狀態的所有驗證者。

cosmos.staking.v1beta1.Query/Validators

範例:

grpcurl -plaintext localhost:9090 cosmos.staking.v1beta1.Query/Validators

範例輸出:

{
  "validators": [
    {
      "operatorAddress": "dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
      "consensusPubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"Auxs3865HpB/EfssYOzfqNhEJjzys2Fo6jD5B8tPgC8="},
      "status": "BOND_STATUS_BONDED",
      "tokens": "10000000",
      "delegatorShares": "10000000000000000000000000",
      "description": {
        "moniker": "myvalidator"
      },
      "unbondingTime": "1970-01-01T00:00:00Z",
      "commission": {
        "commissionRates": {
          "rate": "100000000000000000",
          "maxRate": "200000000000000000",
          "maxChangeRate": "10000000000000000"
        },
        "updateTime": "2021-10-01T05:52:50.380144238Z"
      },
      "minSelfDelegation": "1"
    }
  ],
  "pagination": {
    "total": "1"
  }
}

Validator

Validator 端點根據給定的驗證者地址查詢驗證者信息。

cosmos.staking.v1beta1.Query/Validator

範例:

grpcurl -plaintext -d '{"validator_addr":"dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc"}' \
localhost:9090 cosmos.staking.v1beta1.Query/Validator

範例輸出:

{
  "validator": {
    "operatorAddress": "dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
    "consensusPubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"Auxs3865HpB/EfssYOzfqNhEJjzys2Fo6jD5B8tPgC8="},
    "status": "BOND_STATUS_BONDED",
    "tokens": "10000000",
    "delegatorShares": "10000000000000000000000000",
    "description": {
      "moniker": "myvalidator"
    },
    "unbondingTime": "1970-01-01T00:00:00Z",
    "commission": {
      "commissionRates": {
        "rate": "100000000000000000",
        "maxRate": "200000000000000000",
        "maxChangeRate": "10000000000000000"
      },
      "updateTime": "2021-10-01T05:52:50.380144238Z"
    },
    "minSelfDelegation": "1"
  }
}

ValidatorDelegations

ValidatorDelegations 端點根據給定的驗證者查詢委託信息。`

cosmos.staking.v1beta1.Query/ValidatorDelegations

範例:

grpcurl -plaintext -d '{"validator_addr":"dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc"}' \
localhost:9090 cosmos.staking.v1beta1.Query/ValidatorDelegations

範例輸出:

{
  "delegationResponses": [
    {
      "delegation": {
        "delegatorAddress": "dst1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgy3ua5t",
        "validatorAddress": "dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
        "shares": "10000000000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "10000000"
      }
    }
  ],
  "pagination": {
    "total": "1"
  }
}

ValidatorUnbondingDelegations

ValidatorUnbondingDelegations 端點根據給定的驗證者查詢解綁委託信息。

cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations

範例:

grpcurl -plaintext -d '{"validator_addr":"dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc"}' \
localhost:9090 cosmos.staking.v1beta1.Query/ValidatorUnbondingDelegations

範例輸出:

{
  "unbonding_responses": [
    {
      "delegator_address": "dst1z3pzzw84d6xn00pw9dy3yapqypfde7vg6965fy",
      "validator_address": "dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
      "entries": [
        {
          "creation_height": "25325",
          "completion_time": "2021-10-31T09:24:36.797320636Z",
          "initial_balance": "20000000",
          "balance": "20000000"
        }
      ]
    },
    {
      "delegator_address": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77",
      "validator_address": "dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
      "entries": [
        {
          "creation_height": "13100",
          "completion_time": "2021-10-30T12:53:02.272266791Z",
          "initial_balance": "1000000",
          "balance": "1000000"
        }
      ]
    },
  ],
  "pagination": {
    "next_key": null,
    "total": "8"
  }
}

Delegation

The Delegation endpoint queries delegate information for given validator delegator pair.

cosmos.staking.v1beta1.Query/Delegation

範例:

grpcurl -plaintext \
-d '{"delegator_addr": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77", validator_addr":"dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc"}' \
localhost:9090 cosmos.staking.v1beta1.Query/Delegation

範例輸出:

{
  "delegation_response":
  {
    "delegation":
      {
        "delegator_address":"dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77",
        "validator_address":"dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
        "shares":"25083119936.000000000000000000"
      },
    "balance":
      {
        "denom":"dst",
        "amount":"25083119936"
      }
  }
}

UnbondingDelegation

UnbondingDelegation 端點根據給定的驗證者委託人查詢解綁委託信息。

cosmos.staking.v1beta1.Query/UnbondingDelegation

範例:

grpcurl -plaintext \
-d '{"delegator_addr": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77", validator_addr":"dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc"}' \
localhost:9090 cosmos.staking.v1beta1.Query/UnbondingDelegation

範例輸出:

{
  "unbond": {
    "delegator_address": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77",
    "validator_address": "dstvaloper1rne8lgs98p0jqe82sgt0qr4rdn4hgvmgp9ggcc",
    "entries": [
      {
        "creation_height": "136984",
        "completion_time": "2021-11-08T05:38:47.505593891Z",
        "initial_balance": "400000000",
        "balance": "400000000"
      },
      {
        "creation_height": "137005",
        "completion_time": "2021-11-08T05:40:53.526196312Z",
        "initial_balance": "385000000",
        "balance": "385000000"
      }
    ]
  }
}

DelegatorDelegations

DelegatorDelegations 端點根據給定的委託人地址查詢所有委託信息。

cosmos.staking.v1beta1.Query/DelegatorDelegations

範例:

grpcurl -plaintext \
-d '{"delegator_addr": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77"}' \
localhost:9090 cosmos.staking.v1beta1.Query/DelegatorDelegations

範例輸出:

{
  "delegation_responses": [
    {"delegation":{"delegator_address":"dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77","validator_address":"dstvaloper1eh5mwu044gd5ntkkc2xgfg8247mgc56fww3vc8","shares":"25083339023.000000000000000000"},"balance":{"denom":"dst","amount":"25083339023"}}
  ],
  "pagination": {
    "next_key": null,
    "total": "1"
  }
}

DelegatorUnbondingDelegations

DelegatorUnbondingDelegations 端點根據給定的委託人地址查詢所有解綁委託信息。

cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations

範例:

grpcurl -plaintext \
-d '{"delegator_addr": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77"}' \
localhost:9090 cosmos.staking.v1beta1.Query/DelegatorUnbondingDelegations

範例輸出:

{
  "unbonding_responses": [
    {
      "delegator_address": "dst1y8nyfvmqh50p6ldpzljk3yrglppdv3t8phju77",
      "validator_address": "dstvaloper1sjllsnramtg3ewxqwwrwjxfgc4n4ef9uxyejze",
      "entries": [
        {
          "creation_height": "136984",
          "completion_time": "2021-11-08T05:38:47.505593891Z",
          "initial_balance": "400000000",
          "balance": "400000000"
        },
        {
          "creation_height": "137005",
          "completion_time": "2021-11-08T05:40:53.526196312Z",
          "initial_balance": "385000000",
          "balance": "385000000"
        }
      ]
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "1"
  }
}

DelegatorValidators

DelegatorValidators 端點根據給定的委託人查詢所有驗證者的信息。

cosmos.staking.v1beta1.Query/DelegatorValidators

範例:

grpcurl -plaintext \
-d '{"delegator_addr": "dst1ld5p7hn43yuh8ht28gm9pfjgj2fctujp2tgwvf"}' \
localhost:9090 cosmos.staking.v1beta1.Query/DelegatorValidators

範例輸出:

{
  "validators": [
    {
      "operator_address": "dstvaloper1eh5mwu044gd5ntkkc2xgfg8247mgc56fww3vc8",
      "consensus_pubkey": {
        "@type": "/cosmos.crypto.ed25519.PubKey",
        "key": "UPwHWxH1zHJWGOa/m6JB3f5YjHMvPQPkVbDqqi+U7Uw="
      },
      "jailed": false,
      "status": "BOND_STATUS_BONDED",
      "tokens": "347260647559",
      "delegator_shares": "347260647559.000000000000000000",
      "description": {
        "moniker": "BouBouNode",
        "identity": "",
        "website": "https://boubounode.com",
        "security_contact": "",
        "details": "AI-based Validator. #1 AI Validator on Game of Stakes. Fairly priced. Don't trust (humans), verify. Made with BouBou love."
      },
      "unbonding_height": "0",
      "unbonding_time": "1970-01-01T00:00:00Z",
      "commission": {
        "commission_rates": {
          "rate": "0.061000000000000000",
          "max_rate": "0.300000000000000000",
          "max_change_rate": "0.150000000000000000"
        },
        "update_time": "2021-10-01T15:00:00Z"
      },
      "min_self_delegation": "1"
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "1"
  }
}

DelegatorValidator

DelegatorValidator 端點根據给定的委託人和驗證者查詢驗證者的信息。

cosmos.staking.v1beta1.Query/DelegatorValidator

範例:

grpcurl -plaintext \
-d '{"delegator_addr": "dst1eh5mwu044gd5ntkkc2xgfg8247mgc56f3n8rr7", "validator_addr": "dstvaloper1eh5mwu044gd5ntkkc2xgfg8247mgc56fww3vc8"}' \
localhost:9090 cosmos.staking.v1beta1.Query/DelegatorValidator

範例輸出:

{
  "validator": {
    "operator_address": "dstvaloper1eh5mwu044gd5ntkkc2xgfg8247mgc56fww3vc8",
    "consensus_pubkey": {
      "@type": "/cosmos.crypto.ed25519.PubKey",
      "key": "UPwHWxH1zHJWGOa/m6JB3f5YjHMvPQPkVbDqqi+U7Uw="
    },
    "jailed": false,
    "status": "BOND_STATUS_BONDED",
    "tokens": "347262754841",
    "delegator_shares": "347262754841.000000000000000000",
    "description": {
      "moniker": "BouBouNode",
      "identity": "",
      "website": "https://boubounode.com",
      "security_contact": "",
      "details": "AI-based Validator. #1 AI Validator on Game of Stakes. Fairly priced. Don't trust (humans), verify. Made with BouBou love."
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.061000000000000000",
        "max_rate": "0.300000000000000000",
        "max_change_rate": "0.150000000000000000"
      },
      "update_time": "2021-10-01T15:00:00Z"
    },
    "min_self_delegation": "1"
  }
}

HistoricalInfo

cosmos.staking.v1beta1.Query/HistoricalInfo

範例:

grpcurl -plaintext -d '{"height" : 1}' localhost:9090 cosmos.staking.v1beta1.Query/HistoricalInfo

範例輸出:

{
  "hist": {
    "header": {
      "version": {
        "block": "11",
        "app": "0"
      },
      "chain_id": "simd-1",
      "height": "140142",
      "time": "2021-10-11T10:56:29.720079569Z",
      "last_block_id": {
        "hash": "9gri/4LLJUBFqioQ3NzZIP9/7YHR9QqaM6B2aJNQA7o=",
        "part_set_header": {
          "total": 1,
          "hash": "Hk1+C864uQkl9+I6Zn7IurBZBKUevqlVtU7VqaZl1tc="
        }
      },
      "last_commit_hash": "VxrcS27GtvGruS3I9+AlpT7udxIT1F0OrRklrVFSSKc=",
      "data_hash": "80BjOrqNYUOkTnmgWyz9AQ8n7SoEmPVi4QmAe8RbQBY=",
      "validators_hash": "95W49n2hw8RWpr1GPTAO5MSPi6w6Wjr3JjjS7AjpBho=",
      "next_validators_hash": "95W49n2hw8RWpr1GPTAO5MSPi6w6Wjr3JjjS7AjpBho=",
      "consensus_hash": "BICRvH3cKD93v7+R1zxE2ljD34qcvIZ0Bdi389qtoi8=",
      "app_hash": "ZZaxnSY3E6Ex5Bvkm+RigYCK82g8SSUL53NymPITeOE=",
      "last_results_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
      "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
      "proposer_address": "aH6dO428B+ItuoqPq70efFHrSMY="
    },
  "valset": [
      {
        "operator_address": "dstvaloper196ax4vc0lwpxndu9dyhvca7jhxp70rmcqcnylw",
        "consensus_pubkey": {
          "@type": "/cosmos.crypto.ed25519.PubKey",
          "key": "/O7BtNW0pafwfvomgR4ZnfldwPXiFfJs9mHg3gwfv5Q="
        },
        "jailed": false,
        "status": "BOND_STATUS_BONDED",
        "tokens": "1426045203613",
        "delegator_shares": "1426045203613.000000000000000000",
        "description": {
          "moniker": "SG-1",
          "identity": "48608633F99D1B60",
          "website": "https://sg-1.online",
          "security_contact": "",
          "details": "SG-1 - your favorite validator on Witval. We offer 100% Soft Slash protection."
        },
        "unbonding_height": "0",
        "unbonding_time": "1970-01-01T00:00:00Z",
        "commission": {
          "commission_rates": {
            "rate": "0.037500000000000000",
            "max_rate": "0.200000000000000000",
            "max_change_rate": "0.030000000000000000"
          },
          "update_time": "2021-10-01T15:00:00Z"
        },
        "min_self_delegation": "1"
      }
    ]
  }
}

Pool

Pool 端點查詢抵押池(Pool)信息。

cosmos.staking.v1beta1.Query/Pool

範例:

grpcurl -plaintext -d localhost:9090 cosmos.staking.v1beta1.Query/Pool

範例輸出:

{
  "pool": {
    "not_bonded_tokens": "369054400189",
    "bonded_tokens": "15657192425623"
  }
}

Params

Params 端點查詢參數(Params)信息。

cosmos.staking.v1beta1.Query/Params

範例:

grpcurl -plaintext localhost:9090 cosmos.staking.v1beta1.Query/Params

範例輸出:

{
  "params": {
    "unbondingTime": "1814400s",
    "maxValidators": 100,
    "maxEntries": 7,
    "historicalEntries": 10000,
    "bondDenom": "dst"
  }
}

REST

用戶可以使用 REST 端點查詢 staking 模塊。

DelegatorDelegations

DelegatorDelegations REST 端點查詢給定委託人地址的所有委託信息。

/cosmos/staking/v1beta1/delegations/{delegatorAddr}

範例:

curl -X GET "http://localhost:1317/cosmos/staking/v1beta1/delegations/dst1vcs68xf2tnqes5tg0khr0vyevm40ff6zdxatp5" -H  "accept: application/json"

範例輸出:

{
  "delegation_responses": [
    {
      "delegation": {
        "delegator_address": "dst1vcs68xf2tnqes5tg0khr0vyevm40ff6zdxatp5",
        "validator_address": "dstvaloper1quqxfrxkycr0uzt4yk0d57tcq3zk7srm7sm6r8",
        "shares": "256250000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "256250000"
      }
    },
    {
      "delegation": {
        "delegator_address": "dst1vcs68xf2tnqes5tg0khr0vyevm40ff6zdxatp5",
        "validator_address": "dstvaloper194v8uwee2fvs2s8fa5k7j03ktwc87h5ym39jfv",
        "shares": "255150000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "255150000"
      }
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "2"
  }
}

DelegatorUnbondingDelegations

DelegatorUnbondingDelegations REST 端點查詢給定委託人地址的所有解綁委託信息。

/cosmos/staking/v1beta1/delegators/{delegatorAddr}/unbonding_delegations

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/delegators/dst1nxv42u3lv642q0fuzu2qmrku27zgut3n3z7lll/unbonding_delegations" \
-H  "accept: application/json"

範例輸出:

{
  "unbonding_responses": [
    {
      "delegator_address": "dst1nxv42u3lv642q0fuzu2qmrku27zgut3n3z7lll",
      "validator_address": "dstvaloper1e7mvqlz50ch6gw4yjfemsc069wfre4qwmw53kq",
      "entries": [
        {
          "creation_height": "2442278",
          "completion_time": "2021-10-12T10:59:03.797335857Z",
          "initial_balance": "50000000000",
          "balance": "50000000000"
        }
      ]
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "1"
  }
}

DelegatorValidators

DelegatorValidators REST 端點根據給定的委託人地址查詢所有驗證者的信息。

/cosmos/staking/v1beta1/delegators/{delegatorAddr}/validators

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/delegators/dst1xwazl8ftks4gn00y5x3c47auquc62ssune9ppv/validators" \
-H  "accept: application/json"

範例輸出:

{
  "validators": [
    {
      "operator_address": "dstvaloper1xwazl8ftks4gn00y5x3c47auquc62ssuvynw64",
      "consensus_pubkey": {
        "@type": "/cosmos.crypto.ed25519.PubKey",
        "key": "5v4n3px3PkfNnKflSgepDnsMQR1hiNXnqOC11Y72/PQ="
      },
      "jailed": false,
      "status": "BOND_STATUS_BONDED",
      "tokens": "21592843799",
      "delegator_shares": "21592843799.000000000000000000",
      "description": {
        "moniker": "jabbey",
        "identity": "",
        "website": "https://twitter.com/JoeAbbey",
        "security_contact": "",
        "details": "just another dad in the cosmos"
      },
      "unbonding_height": "0",
      "unbonding_time": "1970-01-01T00:00:00Z",
      "commission": {
        "commission_rates": {
          "rate": "0.100000000000000000",
          "max_rate": "0.200000000000000000",
          "max_change_rate": "0.100000000000000000"
        },
        "update_time": "2021-10-09T19:03:54.984821705Z"
      },
      "min_self_delegation": "1"
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "1"
  }
}

DelegatorValidator

DelegatorValidator REST 端點根據給定的委託人和驗證者對查詢驗證者的信息。

/cosmos/staking/v1beta1/delegators/{delegatorAddr}/validators/{validatorAddr}

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/delegators/dst1xwazl8ftks4gn00y5x3c47auquc62ssune9ppv/validators/dstvaloper1xwazl8ftks4gn00y5x3c47auquc62ssuvynw64" \
-H  "accept: application/json"

範例輸出:

{
  "validator": {
    "operator_address": "dstvaloper1xwazl8ftks4gn00y5x3c47auquc62ssuvynw64",
    "consensus_pubkey": {
      "@type": "/cosmos.crypto.ed25519.PubKey",
      "key": "5v4n3px3PkfNnKflSgepDnsMQR1hiNXnqOC11Y72/PQ="
    },
    "jailed": false,
    "status": "BOND_STATUS_BONDED",
    "tokens": "21592843799",
    "delegator_shares": "21592843799.000000000000000000",
    "description": {
      "moniker": "jabbey",
      "identity": "",
      "website": "https://twitter.com/JoeAbbey",
      "security_contact": "",
      "details": "just another dad in the cosmos"
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.100000000000000000",
        "max_rate": "0.200000000000000000",
        "max_change_rate": "0.100000000000000000"
      },
      "update_time": "2021-10-09T19:03:54.984821705Z"
    },
    "min_self_delegation": "1"
  }
}

HistoricalInfo

HistoricalInfo REST 端點根據給定的高度查詢歷史信息。

/cosmos/staking/v1beta1/historical_info/{height}

範例:

curl -X GET "http://localhost:1317/cosmos/staking/v1beta1/historical_info/153332" -H  "accept: application/json"

範例輸出:

{
  "hist": {
    "header": {
      "version": {
        "block": "11",
        "app": "0"
      },
      "chain_id": "cosmos-1",
      "height": "153332",
      "time": "2021-10-12T09:05:35.062230221Z",
      "last_block_id": {
        "hash": "NX8HevR5khb7H6NGKva+jVz7cyf0skF1CrcY9A0s+d8=",
        "part_set_header": {
          "total": 1,
          "hash": "zLQ2FiKM5tooL3BInt+VVfgzjlBXfq0Hc8Iux/xrhdg="
        }
      },
      "last_commit_hash": "P6IJrK8vSqU3dGEyRHnAFocoDGja0bn9euLuy09s350=",
      "data_hash": "eUd+6acHWrNXYju8Js449RJ99lOYOs16KpqQl4SMrEM=",
      "validators_hash": "mB4pravvMsJKgi+g8aYdSeNlt0kPjnRFyvtAQtaxcfw=",
      "next_validators_hash": "mB4pravvMsJKgi+g8aYdSeNlt0kPjnRFyvtAQtaxcfw=",
      "consensus_hash": "BICRvH3cKD93v7+R1zxE2ljD34qcvIZ0Bdi389qtoi8=",
      "app_hash": "fuELArKRK+CptnZ8tu54h6xEleSWenHNmqC84W866fU=",
      "last_results_hash": "p/BPexV4LxAzlVcPRvW+lomgXb6Yze8YLIQUo/4Kdgc=",
      "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=",
      "proposer_address": "G0MeY8xQx7ooOsni8KE/3R/Ib3Q="
    },
    "valset": [
      {
        "operator_address": "dstvaloper196ax4vc0lwpxndu9dyhvca7jhxp70rmcqcnylw",
        "consensus_pubkey": {
          "@type": "/cosmos.crypto.ed25519.PubKey",
          "key": "/O7BtNW0pafwfvomgR4ZnfldwPXiFfJs9mHg3gwfv5Q="
        },
        "jailed": false,
        "status": "BOND_STATUS_BONDED",
        "tokens": "1416521659632",
        "delegator_shares": "1416521659632.000000000000000000",
        "description": {
          "moniker": "SG-1",
          "identity": "48608633F99D1B60",
          "website": "https://sg-1.online",
          "security_contact": "",
          "details": "SG-1 - your favorite validator on cosmos. We offer 100% Soft Slash protection."
        },
        "unbonding_height": "0",
        "unbonding_time": "1970-01-01T00:00:00Z",
        "commission": {
          "commission_rates": {
            "rate": "0.037500000000000000",
            "max_rate": "0.200000000000000000",
            "max_change_rate": "0.030000000000000000"
          },
          "update_time": "2021-10-01T15:00:00Z"
        },
        "min_self_delegation": "1"
      },
      {
        "operator_address": "dstvaloper1t8ehvswxjfn3ejzkjtntcyrqwvmvuknzmvtaaa",
        "consensus_pubkey": {
          "@type": "/cosmos.crypto.ed25519.PubKey",
          "key": "uExZyjNLtr2+FFIhNDAMcQ8+yTrqE7ygYTsI7khkA5Y="
        },
        "jailed": false,
        "status": "BOND_STATUS_BONDED",
        "tokens": "1348298958808",
        "delegator_shares": "1348298958808.000000000000000000",
        "description": {
          "moniker": "Cosmostation",
          "identity": "AE4C403A6E7AA1AC",
          "website": "https://www.cosmostation.io",
          "security_contact": "admin@stamper.network",
          "details": "Cosmostation validator node. Delegate your tokens and Start Earning Staking Rewards"
        },
        "unbonding_height": "0",
        "unbonding_time": "1970-01-01T00:00:00Z",
        "commission": {
          "commission_rates": {
            "rate": "0.050000000000000000",
            "max_rate": "1.000000000000000000",
            "max_change_rate": "0.200000000000000000"
          },
          "update_time": "2021-10-01T15:06:38.821314287Z"
        },
        "min_self_delegation": "1"
      }
    ]
  }
}

Parameters

Parameters REST 端點查詢抵押參數。

model: gpt-3.5-turbo-16k-0613

/cosmos/staking/v1beta1/params

範例:

curl -X GET "http://localhost:1317/cosmos/staking/v1beta1/params" -H  "accept: application/json"

範例輸出:

{
  "params": {
    "unbonding_time": "2419200s",
    "max_validators": 100,
    "max_entries": 7,
    "historical_entries": 10000,
    "bond_denom": "dst"
  }
}

Pool

Pool REST 端點查詢池(Pool)信息。

/cosmos/staking/v1beta1/pool

範例:

curl -X GET "http://localhost:1317/cosmos/staking/v1beta1/pool" -H  "accept: application/json"

範例輸出:

{
  "pool": {
    "not_bonded_tokens": "432805737458",
    "bonded_tokens": "15783637712645"
  }
}

Validators

Validators REST 端點根據給定的狀態查詢符合條件的所有驗證者。

/cosmos/staking/v1beta1/validators

範例:

curl -X GET "http://localhost:1317/cosmos/staking/v1beta1/validators" -H  "accept: application/json"

範例輸出:

{
  "validators": [
    {
      "operator_address": "dstvaloper1q3jsx9dpfhtyqqgetwpe5tmk8f0ms5qywje8tw",
      "consensus_pubkey": {
        "@type": "/cosmos.crypto.ed25519.PubKey",
        "key": "N7BPyek2aKuNZ0N/8YsrqSDhGZmgVaYUBuddY8pwKaE="
      },
      "jailed": false,
      "status": "BOND_STATUS_BONDED",
      "tokens": "383301887799",
      "delegator_shares": "383301887799.000000000000000000",
      "description": {
        "moniker": "SmartNodes",
        "identity": "D372724899D1EDC8",
        "website": "https://smartnodes.co",
        "security_contact": "",
        "details": "Earn Rewards with Crypto Staking & Node Deployment"
      },
      "unbonding_height": "0",
      "unbonding_time": "1970-01-01T00:00:00Z",
      "commission": {
        "commission_rates": {
          "rate": "0.050000000000000000",
          "max_rate": "0.200000000000000000",
          "max_change_rate": "0.100000000000000000"
        },
        "update_time": "2021-10-01T15:51:31.596618510Z"
      },
      "min_self_delegation": "1"
    },
    {
      "operator_address": "dstvaloper1q5ku90atkhktze83j9xjaks2p7uruag5zp6wt7",
      "consensus_pubkey": {
        "@type": "/cosmos.crypto.ed25519.PubKey",
        "key": "GDNpuKDmCg9GnhnsiU4fCWktuGUemjNfvpCZiqoRIYA="
      },
      "jailed": false,
      "status": "BOND_STATUS_UNBONDING",
      "tokens": "1017819654",
      "delegator_shares": "1017819654.000000000000000000",
      "description": {
        "moniker": "Noderunners",
        "identity": "812E82D12FEA3493",
        "website": "http://noderunners.biz",
        "security_contact": "info@noderunners.biz",
        "details": "Noderunners is a professional validator in POS networks. We have a huge node running experience, reliable soft and hardware. Our commissions are always low, our support to delegators is always full. Stake with us and start receiving your cosmos rewards now!"
      },
      "unbonding_height": "147302",
      "unbonding_time": "2021-11-08T22:58:53.718662452Z",
      "commission": {
        "commission_rates": {
          "rate": "0.050000000000000000",
          "max_rate": "0.200000000000000000",
          "max_change_rate": "0.100000000000000000"
        },
        "update_time": "2021-10-04T18:02:21.446645619Z"
      },
      "min_self_delegation": "1"
    }
  ],
  "pagination": {
    "next_key": "FONDBFkE4tEEf7yxWWKOD49jC2NK",
    "total": "2"
  }
}

Validator

Validator REST 端點根據給定的驗證者地址查詢驗證者信息。`

/cosmos/staking/v1beta1/validators/{validatorAddr}

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/validators/dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q" \
-H  "accept: application/json"

範例輸出:

{
  "validator": {
    "operator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
    "consensus_pubkey": {
      "@type": "/cosmos.crypto.ed25519.PubKey",
      "key": "sIiexdJdYWn27+7iUHQJDnkp63gq/rzUq1Y+fxoGjXc="
    },
    "jailed": false,
    "status": "BOND_STATUS_BONDED",
    "tokens": "33027900000",
    "delegator_shares": "33027900000.000000000000000000",
    "description": {
      "moniker": "Witval",
      "identity": "51468B615127273A",
      "website": "",
      "security_contact": "",
      "details": "Witval is the validator arm from Vitwit. Vitwit is into software consulting and services business since 2015. We are working closely with Cosmos ecosystem since 2018. We are also building tools for the ecosystem, Aneka is our explorer for the cosmos ecosystem."
    },
    "unbonding_height": "0",
    "unbonding_time": "1970-01-01T00:00:00Z",
    "commission": {
      "commission_rates": {
        "rate": "0.050000000000000000",
        "max_rate": "0.200000000000000000",
        "max_change_rate": "0.020000000000000000"
      },
      "update_time": "2021-10-01T19:24:52.663191049Z"
    },
    "min_self_delegation": "1"
  }
}

ValidatorDelegations

The ValidatorDelegations REST endpoint queries delegate information for given validator.

/cosmos/staking/v1beta1/validators/{validatorAddr}/delegations

範例:

curl -X GET "http://localhost:1317/cosmos/staking/v1beta1/validators/dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q/delegations" -H  "accept: application/json"

範例輸出:

{
  "delegation_responses": [
    {
      "delegation": {
        "delegator_address": "dst190g5j8aszqhvtg7cprmev8xcxs6csra7xnk3n3",
        "validator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
        "shares": "31000000000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "31000000000"
      }
    },
    {
      "delegation": {
        "delegator_address": "dst1ddle9tczl87gsvmeva3c48nenyng4n56qwq4ee",
        "validator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
        "shares": "628470000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "628470000"
      }
    },
    {
      "delegation": {
        "delegator_address": "dst10fdvkczl76m040smd33lh9xn9j0cf26kk4s2nw",
        "validator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
        "shares": "838120000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "838120000"
      }
    },
    {
      "delegation": {
        "delegator_address": "dst1n8f5fknsv2yt7a8u6nrx30zqy7lu9jfm0t5lq8",
        "validator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
        "shares": "500000000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "500000000"
      }
    },
    {
      "delegation": {
        "delegator_address": "dst16msryt3fqlxtvsy8u5ay7wv2p8mglfg9hrek2e",
        "validator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
        "shares": "61310000.000000000000000000"
      },
      "balance": {
        "denom": "dst",
        "amount": "61310000"
      }
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "5"
  }
}

Delegation

Delegation REST 端點根據給定的驗證者和委託人對查詢委託信息。

/cosmos/staking/v1beta1/validators/{validatorAddr}/delegations/{delegatorAddr}

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/validators/dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q/delegations/dst1n8f5fknsv2yt7a8u6nrx30zqy7lu9jfm0t5lq8" \
-H  "accept: application/json"

範例輸出:

{
  "delegation_response": {
    "delegation": {
      "delegator_address": "dst1n8f5fknsv2yt7a8u6nrx30zqy7lu9jfm0t5lq8",
      "validator_address": "dstvaloper16msryt3fqlxtvsy8u5ay7wv2p8mglfg9g70e3q",
      "shares": "500000000.000000000000000000"
    },
    "balance": {
      "denom": "dst",
      "amount": "500000000"
    }
  }
}

UnbondingDelegation

UnbondingDelegation REST 端點根據給定的驗證者和委託人對查詢解綁委託信息。

/cosmos/staking/v1beta1/validators/{validatorAddr}/delegations/{delegatorAddr}/unbonding_delegation

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/validators/dstvaloper13v4spsah85ps4vtrw07vzea37gq5la5gktlkeu/delegations/dst1ze2ye5u5k3qdlexvt2e0nn0508p04094ya0qpm/unbonding_delegation" \
-H  "accept: application/json"

範例輸出:

{
  "unbond": {
    "delegator_address": "dst1ze2ye5u5k3qdlexvt2e0nn0508p04094ya0qpm",
    "validator_address": "dstvaloper13v4spsah85ps4vtrw07vzea37gq5la5gktlkeu",
    "entries": [
      {
        "creation_height": "153687",
        "completion_time": "2021-11-09T09:41:18.352401903Z",
        "initial_balance": "525111",
        "balance": "525111"
      }
    ]
  }
}

ValidatorUnbondingDelegations

ValidatorUnbondingDelegations REST 端點查詢驗證者的解綁委託信息。

/cosmos/staking/v1beta1/validators/{validatorAddr}/unbonding_delegations

範例:

curl -X GET \
"http://localhost:1317/cosmos/staking/v1beta1/validators/dstvaloper13v4spsah85ps4vtrw07vzea37gq5la5gktlkeu/unbonding_delegations" \
-H  "accept: application/json"

範例輸出:

{
  "unbonding_responses": [
    {
      "delegator_address": "dst1q9snn84jfrd9ge8t46kdcggpe58dua82vnj7uy",
      "validator_address": "dstvaloper13v4spsah85ps4vtrw07vzea37gq5la5gktlkeu",
      "entries": [
        {
          "creation_height": "90998",
          "completion_time": "2021-11-05T00:14:37.005841058Z",
          "initial_balance": "24000000",
          "balance": "24000000"
        }
      ]
    },
    {
      "delegator_address": "dst1qf36e6wmq9h4twhdvs6pyq9qcaeu7ye0s3dqq2",
      "validator_address": "dstvaloper13v4spsah85ps4vtrw07vzea37gq5la5gktlkeu",
      "entries": [
        {
          "creation_height": "47478",
          "completion_time": "2021-11-01T22:47:26.714116854Z",
          "initial_balance": "8000000",
          "balance": "8000000"
        }
      ]
    }
  ],
  "pagination": {
    "next_key": null,
    "total": "2"
  }
}