鑄幣
概念
鑄幣機制
鑄幣機制的設計目的是:
- 允許通過市場需求確定特定擔保股權比率的靈活通脹率。
- 在市場流動性和抵押供應之間實現平衡。
為了最好地確定通脹獎勵的適當市場利率,使用了移動變動率。 移動變動率機制確保,如果擔保比例高於或低於目標擔保比例,通脹率將相應地進行調整,以進一步激勵或抑制擔保。 將目標擔保比例設定為低於100%,鼓勵網絡保留一些非抵押代幣,這應有助於提供一定的流動性。
它可以分解成以下方式:
- 如果通脹率低於目標百分比擔保率,通脹率將持續上升,直至達到最大值。
- 如果維持目標擔保比例(在DST中為67%),那麼通脹率將保持不變。
- 如果通脹率高於目標百分比擔保率,通脹率將持續下降,直至達到最小值。
狀態
Minter
minter
是用於存放當前通脹信息的空間。
- Minter:
0x00 -> ProtocolBuffer(minter)
+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0-rc7/proto/cosmos/mint/v1beta1/mint.proto#L8-L19
Params
鑄造參數保存在全局參數存儲中。
- Params:
mint/params -> legacy_amino(params)
+++ https://github.com/cosmos/cosmos-sdk/blob/v0.40.0-rc7/proto/cosmos/mint/v1beta1/mint.proto#L21-L53
Begin-Block
在每個區塊開始時,鑄幣參數將被重新計算,並支付通脹。
NextInflationRate
目標年通脹率在每個區塊中都會重新計算。 通脹率也會根據與期望比例(67%)的距離而發生變化(正向或負向)。 可能的最大變化率被定義為每年13%,但年通脹率被限制在7%到20%之間。
NextInflationRate(params Params, bondedRatio sdk.Dec) (inflation sdk.Dec) {
inflationRateChangePerYear = (1 - bondedRatio/params.GoalBonded) * params.InflationRateChange
inflationRateChange = inflationRateChangePerYear/blocksPerYr
// increase the new annual inflation for this next cycle
inflation += inflationRateChange
if inflation > params.InflationMax {
inflation = params.InflationMax
}
if inflation < params.InflationMin {
inflation = params.InflationMin
}
return inflation
}
NextAnnualProvisions(下一年度供應量)
要根據當前總供應量和通脹率計算年度供應量,可以使用以下公式。請注意,這個參數每個區塊只計算一次。
NextAnnualProvisions(params Params, totalSupply sdk.Dec) (provisions sdk.Dec) {
return Inflation * totalSupply
BlockProvision(每個區塊的貨幣供應量)
根據當前年度供應量計算每個區塊所生成的供應量。 供應量隨後由 mint 模組的 ModuleMinterAccount 鑄造,然後轉移到 auth 的 FeeCollector ModuleAccount。
BlockProvision(params Params) sdk.Coin {
provisionAmt = AnnualProvisions/ params.BlocksPerYear
return sdk.NewCoin(params.MintDenom, provisionAmt.Truncate())
Parameters(參數)
鑄幣模組包含以下參數:
Key | Type | Example |
---|---|---|
MintDenom | string | "uatom" |
InflationRateChange | string (dec) | "0.130000000000000000" |
InflationMax | string (dec) | "0.200000000000000000" |
InflationMin | string (dec) | "0.070000000000000000" |
GoalBonded | string (dec) | "0.670000000000000000" |
BlocksPerYear | string (uint64) | "6311520" |
Events(事件)
鑄幣模組會發出以下事件:
BeginBlocker
Type | Attribute Key | Attribute Value |
---|---|---|
mint | bonded_ratio | {bondedRatio} |
mint | inflation | {inflation} |
mint | annual_provisions | {annualProvisions} |
mint | amount | {amount} |
客戶端
CLI
用戶可以使用命令列界面(CLI)查詢和與 mint 模組進行互動。
查詢
query
命令允許用戶查詢 mint 的狀態。
stcd query mint --help
annual-provisions(年度供應量)
annual-provisions
命令允許用戶查詢當前鑄幣年度供應量值。
stcd query mint annual-provisions [flags]
範例:
stcd query mint annual-provisions
範例輸出:
22268504368893.612100895088410693
通脹率
inflation
命令允許用戶查詢當前鑄幣通脹率值。
stcd query mint inflation [flags]
範例:
stcd query mint inflation
範例輸出:
0.199200302563256955
params(參數)
params
命令允許用戶查詢當前鑄幣參數。
stcd query mint params [flags]
範例:
blocks_per_year: "4360000"
goal_bonded: "0.670000000000000000"
inflation_max: "0.200000000000000000"
inflation_min: "0.070000000000000000"
inflation_rate_change: "0.130000000000000000"
mint_denom: stake
gRPC
用戶可以使用 gRPC 端點查詢 mint 模塊。
AnnualProvisions
AnnualProvisions
端點允許用戶查詢當前鑄幣年度供應量值。
/cosmos.mint.v1beta1.Query/AnnualProvisions
範例:
grpcurl -plaintext localhost:9090 cosmos.mint.v1beta1.Query/AnnualProvisions
範例輸出:
{
"annualProvisions": "1432452520532626265712995618"
}
Inflation
Inflation
端點允許用戶查詢當前鑄幣通脹率值。
/cosmos.mint.v1beta1.Query/Inflation
範例:
grpcurl -plaintext localhost:9090 cosmos.mint.v1beta1.Query/Inflation
範例輸出:
{
"inflation": "130197115720711261"
}
Params
Params
端點允許用戶查詢當前鑄幣參數。
/cosmos.mint.v1beta1.Query/Params
範例:
grpcurl -plaintext localhost:9090 cosmos.mint.v1beta1.Query/Params
範例輸出:
{
"params": {
"mintDenom": "stake",
"inflationRateChange": "130000000000000000",
"inflationMax": "200000000000000000",
"inflationMin": "70000000000000000",
"goalBonded": "670000000000000000",
"blocksPerYear": "6311520"
}
}
REST
用戶可以使用 REST 端點查詢 mint 模塊。
annual-provisions(年度供應量)
/cosmos/mint/v1beta1/annual_provisions
範例
curl "localhost:1317/cosmos/mint/v1beta1/annual_provisions"
範例輸出:
{
"annualProvisions": "1432452520532626265712995618"
}
inflation(通脹率)
/cosmos/mint/v1beta1/inflation
範例:
curl "localhost:1317/cosmos/mint/v1beta1/inflation"
範例輸出:
{
"inflation": "130197115720711261"
}
params(參數)
/cosmos/mint/v1beta1/params
範例:
curl "localhost:1317/cosmos/mint/v1beta1/params"
範例輸出:
{
"params": {
"mintDenom": "stake",
"inflationRateChange": "130000000000000000",
"inflationMax": "200000000000000000",
"inflationMin": "70000000000000000",
"goalBonded": "670000000000000000",
"blocksPerYear": "6311520"
}
}