mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 10:05:18 +00:00
Merge pull request #35 from Solovyov1796/testnet_merge_vesting
Merge pull request #34 from 0glabs/vesting
This commit is contained in:
commit
be974c4b0c
10
app/app.go
10
app/app.go
@ -23,6 +23,7 @@ import (
|
|||||||
authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
|
authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
|
||||||
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
||||||
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
|
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
|
||||||
|
vestingkeeper "github.com/cosmos/cosmos-sdk/x/auth/vesting/keeper"
|
||||||
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
|
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
|
||||||
"github.com/cosmos/cosmos-sdk/x/authz"
|
"github.com/cosmos/cosmos-sdk/x/authz"
|
||||||
authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
|
authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
|
||||||
@ -248,6 +249,7 @@ type App struct {
|
|||||||
bep3Keeper bep3keeper.Keeper
|
bep3Keeper bep3keeper.Keeper
|
||||||
pricefeedKeeper pricefeedkeeper.Keeper
|
pricefeedKeeper pricefeedkeeper.Keeper
|
||||||
committeeKeeper committeekeeper.Keeper
|
committeeKeeper committeekeeper.Keeper
|
||||||
|
vestingKeeper vestingkeeper.VestingKeeper
|
||||||
mintKeeper mintkeeper.Keeper
|
mintKeeper mintkeeper.Keeper
|
||||||
dasignersKeeper dasignerskeeper.Keeper
|
dasignersKeeper dasignerskeeper.Keeper
|
||||||
|
|
||||||
@ -299,6 +301,7 @@ func NewApp(
|
|||||||
minttypes.StoreKey,
|
minttypes.StoreKey,
|
||||||
counciltypes.StoreKey,
|
counciltypes.StoreKey,
|
||||||
dasignerstypes.StoreKey,
|
dasignerstypes.StoreKey,
|
||||||
|
vestingtypes.StoreKey,
|
||||||
)
|
)
|
||||||
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, evmtypes.TransientKey, feemarkettypes.TransientKey)
|
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, evmtypes.TransientKey, feemarkettypes.TransientKey)
|
||||||
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
|
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
|
||||||
@ -364,11 +367,14 @@ func NewApp(
|
|||||||
bankSubspace,
|
bankSubspace,
|
||||||
app.loadBlockedMaccAddrs(),
|
app.loadBlockedMaccAddrs(),
|
||||||
)
|
)
|
||||||
|
app.vestingKeeper = vestingkeeper.NewVestingKeeper(app.accountKeeper, app.bankKeeper, keys[vestingtypes.StoreKey])
|
||||||
|
|
||||||
app.stakingKeeper = stakingkeeper.NewKeeper(
|
app.stakingKeeper = stakingkeeper.NewKeeper(
|
||||||
appCodec,
|
appCodec,
|
||||||
keys[stakingtypes.StoreKey],
|
keys[stakingtypes.StoreKey],
|
||||||
app.accountKeeper,
|
app.accountKeeper,
|
||||||
app.bankKeeper,
|
app.bankKeeper,
|
||||||
|
app.vestingKeeper,
|
||||||
stakingSubspace,
|
stakingSubspace,
|
||||||
)
|
)
|
||||||
app.authzKeeper = authzkeeper.NewKeeper(
|
app.authzKeeper = authzkeeper.NewKeeper(
|
||||||
@ -590,7 +596,7 @@ func NewApp(
|
|||||||
upgrade.NewAppModule(app.upgradeKeeper),
|
upgrade.NewAppModule(app.upgradeKeeper),
|
||||||
evidence.NewAppModule(app.evidenceKeeper),
|
evidence.NewAppModule(app.evidenceKeeper),
|
||||||
transferModule,
|
transferModule,
|
||||||
vesting.NewAppModule(app.accountKeeper, app.bankKeeper),
|
vesting.NewAppModule(app.accountKeeper, app.vestingKeeper),
|
||||||
authzmodule.NewAppModule(appCodec, app.authzKeeper, app.accountKeeper, app.bankKeeper, app.interfaceRegistry),
|
authzmodule.NewAppModule(appCodec, app.authzKeeper, app.accountKeeper, app.bankKeeper, app.interfaceRegistry),
|
||||||
issuance.NewAppModule(app.issuanceKeeper, app.accountKeeper, app.bankKeeper),
|
issuance.NewAppModule(app.issuanceKeeper, app.accountKeeper, app.bankKeeper),
|
||||||
bep3.NewAppModule(app.bep3Keeper, app.accountKeeper, app.bankKeeper),
|
bep3.NewAppModule(app.bep3Keeper, app.accountKeeper, app.bankKeeper),
|
||||||
@ -599,7 +605,7 @@ func NewApp(
|
|||||||
committee.NewAppModule(app.committeeKeeper, app.accountKeeper),
|
committee.NewAppModule(app.committeeKeeper, app.accountKeeper),
|
||||||
evmutil.NewAppModule(app.evmutilKeeper, app.bankKeeper, app.accountKeeper),
|
evmutil.NewAppModule(app.evmutilKeeper, app.bankKeeper, app.accountKeeper),
|
||||||
// nil InflationCalculationFn, use SDK's default inflation function
|
// nil InflationCalculationFn, use SDK's default inflation function
|
||||||
mint.NewAppModule(appCodec, app.mintKeeper, app.accountKeeper, chaincfg.CustomInflationCalculateFn),
|
mint.NewAppModule(appCodec, app.mintKeeper, app.accountKeeper, chaincfg.NextInflationRate),
|
||||||
council.NewAppModule(app.CouncilKeeper, app.stakingKeeper),
|
council.NewAppModule(app.CouncilKeeper, app.stakingKeeper),
|
||||||
dasigners.NewAppModule(app.dasignersKeeper, app.stakingKeeper),
|
dasigners.NewAppModule(app.dasignersKeeper, app.stakingKeeper),
|
||||||
)
|
)
|
||||||
|
@ -1,45 +1,73 @@
|
|||||||
package chaincfg
|
package chaincfg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/tendermint/tendermint/libs/log"
|
"github.com/shopspring/decimal"
|
||||||
|
|
||||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||||
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
|
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CustomInflationCalculateFn(ctx sdk.Context, minter minttypes.Minter, params minttypes.Params, bondedRatio sdk.Dec) sdk.Dec {
|
var (
|
||||||
logger := ctx.Logger()
|
Xmax, _ = sdk.NewDecFromStr("1.0") // upper limit on staked supply (as % of circ supply)
|
||||||
if logger == nil {
|
Ymin, _ = sdk.NewDecFromStr("0.05") // target APY at upper limit
|
||||||
panic("logger is nil")
|
|
||||||
}
|
Xmin, _ = sdk.NewDecFromStr("0.2") // lower limit on staked supply (as % of circ supply)
|
||||||
return customInflationCalculateFn(logger, minter, params, bondedRatio)
|
Ymax, _ = sdk.NewDecFromStr("0.15") // target APY at lower limit
|
||||||
|
|
||||||
|
decayRate, _ = sdk.NewDecFromStr("10")
|
||||||
|
)
|
||||||
|
|
||||||
|
func decExp(x sdk.Dec) sdk.Dec {
|
||||||
|
xDec := decimal.NewFromBigInt(x.BigInt(), -18)
|
||||||
|
expDec, _ := xDec.ExpTaylor(18)
|
||||||
|
expInt := expDec.Shift(18).BigInt()
|
||||||
|
return sdk.NewDecFromBigIntWithPrec(expInt, 18)
|
||||||
}
|
}
|
||||||
|
|
||||||
func customInflationCalculateFn(logger log.Logger, minter minttypes.Minter, params minttypes.Params, bondedRatio sdk.Dec) sdk.Dec {
|
func NextInflationRate(ctx sdk.Context, minter minttypes.Minter, params minttypes.Params, bondedRatio sdk.Dec, circulatingRatio sdk.Dec) sdk.Dec {
|
||||||
// The target annual inflation rate is recalculated for each previsions cycle. The
|
X := bondedRatio.Quo(circulatingRatio)
|
||||||
// inflation is also subject to a rate change (positive or negative) depending on
|
|
||||||
// the distance from the desired ratio (67%). The maximum rate change possible is
|
|
||||||
// defined to be 13% per year, however the annual inflation is capped as between
|
|
||||||
// 7% and 20%.
|
|
||||||
|
|
||||||
// (1 - bondedRatio/GoalBonded) * InflationRateChange
|
var apy sdk.Dec
|
||||||
inflationRateChangePerYear := sdk.OneDec().
|
if X.LT(Xmin) {
|
||||||
Sub(bondedRatio.Quo(params.GoalBonded)).
|
apy = Ymax
|
||||||
Mul(params.InflationRateChange)
|
} else {
|
||||||
inflationRateChange := inflationRateChangePerYear.Quo(sdk.NewDec(int64(params.BlocksPerYear)))
|
exp := decayRate.Neg().Mul(Xmax.Sub(Xmin))
|
||||||
|
c := decExp(exp)
|
||||||
// adjust the new annual inflation for this next cycle
|
d := Ymin.Sub(Ymax.Mul(c)).Quo(sdk.OneDec().Sub(c))
|
||||||
inflation := minter.Inflation.Add(inflationRateChange) // note inflationRateChange may be negative
|
expBonded := decayRate.Neg().Mul(X.Sub(Xmin))
|
||||||
if inflation.GT(params.InflationMax) {
|
cBonded := decExp(expBonded)
|
||||||
inflation = params.InflationMax
|
e := Ymax.Sub(d).Mul(cBonded)
|
||||||
}
|
apy = d.Add(e)
|
||||||
if inflation.LT(params.InflationMin) {
|
|
||||||
inflation = params.InflationMin
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Info(
|
inflation := apy.Mul(bondedRatio)
|
||||||
"calculated new annual inflation",
|
|
||||||
|
// // The target annual inflation rate is recalculated for each previsions cycle. The
|
||||||
|
// // inflation is also subject to a rate change (positive or negative) depending on
|
||||||
|
// // the distance from the desired ratio (67%). The maximum rate change possible is
|
||||||
|
// // defined to be 13% per year, however the annual inflation is capped as between
|
||||||
|
// // 7% and 20%.
|
||||||
|
|
||||||
|
// // (1 - bondedRatio/GoalBonded) * InflationRateChange
|
||||||
|
// inflationRateChangePerYear := sdk.OneDec().
|
||||||
|
// Sub(bondedRatio.Quo(params.GoalBonded)).
|
||||||
|
// Mul(params.InflationRateChange)
|
||||||
|
// inflationRateChange := inflationRateChangePerYear.Quo(sdk.NewDec(int64(params.BlocksPerYear)))
|
||||||
|
|
||||||
|
// // adjust the new annual inflation for this next cycle
|
||||||
|
// inflation := minter.Inflation.Add(inflationRateChange) // note inflationRateChange may be negative
|
||||||
|
// if inflation.GT(params.InflationMax) {
|
||||||
|
// inflation = params.InflationMax
|
||||||
|
// }
|
||||||
|
// if inflation.LT(params.InflationMin) {
|
||||||
|
// inflation = params.InflationMin
|
||||||
|
// }
|
||||||
|
|
||||||
|
ctx.Logger().Info(
|
||||||
|
"nextInflationRate",
|
||||||
"bondedRatio", bondedRatio,
|
"bondedRatio", bondedRatio,
|
||||||
|
"circulatingRatio", circulatingRatio,
|
||||||
|
"apy", apy,
|
||||||
"inflation", inflation,
|
"inflation", inflation,
|
||||||
"params", params,
|
"params", params,
|
||||||
"minter", minter,
|
"minter", minter,
|
||||||
|
5
go.mod
5
go.mod
@ -212,14 +212,13 @@ replace (
|
|||||||
// Use rocksdb 7.9.2
|
// Use rocksdb 7.9.2
|
||||||
github.com/cometbft/cometbft-db => github.com/kava-labs/cometbft-db v0.7.0-rocksdb-v7.9.2-kava.1
|
github.com/cometbft/cometbft-db => github.com/kava-labs/cometbft-db v0.7.0-rocksdb-v7.9.2-kava.1
|
||||||
// Use cosmos-sdk fork with backported fix for unsafe-reset-all, staking transfer events, and custom tally handler support
|
// Use cosmos-sdk fork with backported fix for unsafe-reset-all, staking transfer events, and custom tally handler support
|
||||||
// github.com/cosmos/cosmos-sdk => github.com/0glabs/cosmos-sdk v0.46.11-kava.3
|
github.com/cosmos/cosmos-sdk => github.com/0glabs/cosmos-sdk v0.46.11-0glabs.5
|
||||||
github.com/cosmos/cosmos-sdk => github.com/0glabs/cosmos-sdk v0.46.11-0glabs.4
|
|
||||||
// See https://github.com/cosmos/cosmos-sdk/pull/13093
|
// See https://github.com/cosmos/cosmos-sdk/pull/13093
|
||||||
github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2
|
github.com/dgrijalva/jwt-go => github.com/golang-jwt/jwt/v4 v4.4.2
|
||||||
// Use go-ethereum fork with precompiles
|
// Use go-ethereum fork with precompiles
|
||||||
github.com/ethereum/go-ethereum => github.com/evmos/go-ethereum v1.10.26-evmos-rc2
|
github.com/ethereum/go-ethereum => github.com/evmos/go-ethereum v1.10.26-evmos-rc2
|
||||||
// Use ethermint fork that respects min-gas-price with NoBaseFee true and london enabled, and includes eip712 support
|
// Use ethermint fork that respects min-gas-price with NoBaseFee true and london enabled, and includes eip712 support
|
||||||
github.com/evmos/ethermint => github.com/0glabs/ethermint v0.21.0-0g.v2.0.1
|
github.com/evmos/ethermint => github.com/0glabs/ethermint v0.21.0-0g.v2.0.2
|
||||||
// See https://github.com/cosmos/cosmos-sdk/pull/10401, https://github.com/cosmos/cosmos-sdk/commit/0592ba6158cd0bf49d894be1cef4faeec59e8320
|
// See https://github.com/cosmos/cosmos-sdk/pull/10401, https://github.com/cosmos/cosmos-sdk/commit/0592ba6158cd0bf49d894be1cef4faeec59e8320
|
||||||
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0
|
github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0
|
||||||
// Use the cosmos modified protobufs
|
// Use the cosmos modified protobufs
|
||||||
|
8
go.sum
8
go.sum
@ -202,10 +202,10 @@ filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmG
|
|||||||
filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
|
filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns=
|
||||||
git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw=
|
git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw=
|
||||||
git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA=
|
git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA=
|
||||||
github.com/0glabs/cosmos-sdk v0.46.11-0glabs.4 h1:NYKYgJIilexHR8VE1EAl7Tv2wMQGPwdzKiLV2DnIAwg=
|
github.com/0glabs/cosmos-sdk v0.46.11-0glabs.5 h1:/7zqU8Az6n3UpKnypKQ92Yw8AgrE1v1AfatrL8elajs=
|
||||||
github.com/0glabs/cosmos-sdk v0.46.11-0glabs.4/go.mod h1:jwgWoeAWxqMF5pZUZ4N+G4rD3q6oOLulq3/dGCFLEX4=
|
github.com/0glabs/cosmos-sdk v0.46.11-0glabs.5/go.mod h1:jwgWoeAWxqMF5pZUZ4N+G4rD3q6oOLulq3/dGCFLEX4=
|
||||||
github.com/0glabs/ethermint v0.21.0-0g.v2.0.1 h1:loFnZAEZ8tboo3JO3+AE+1gJcUm6hkYuwcn+ZHBhjxE=
|
github.com/0glabs/ethermint v0.21.0-0g.v2.0.2 h1:mFVOMra9lmeNk+CgL0UsBxqiXHx5JWVeiURJFgQmHzY=
|
||||||
github.com/0glabs/ethermint v0.21.0-0g.v2.0.1/go.mod h1:peUmQT71k9BOBgoWoIRWRrM/O01mffVjIH0RLnoaFuI=
|
github.com/0glabs/ethermint v0.21.0-0g.v2.0.2/go.mod h1:KPLRino6lVDPV/cZCbQf7dZdR1nsVgptr0Htf6ZxZe8=
|
||||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
|
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
|
||||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
|
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
|
||||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM=
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM=
|
||||||
|
@ -16,7 +16,7 @@ userMnemonic="news tornado sponsor drastic dolphin awful plastic select true liz
|
|||||||
# 0x7Bbf300890857b8c241b219C6a489431669b3aFA
|
# 0x7Bbf300890857b8c241b219C6a489431669b3aFA
|
||||||
# kava10wlnqzyss4accfqmyxwx5jy5x9nfkwh6qm7n4t
|
# kava10wlnqzyss4accfqmyxwx5jy5x9nfkwh6qm7n4t
|
||||||
|
|
||||||
relayerMnemonic="never reject sniff east arctic funny twin feed upper series stay shoot vivid adapt defense economy pledge fetch invite approve ceiling admit gloom exit"
|
vestingMnemonic="never reject sniff east arctic funny twin feed upper series stay shoot vivid adapt defense economy pledge fetch invite approve ceiling admit gloom exit"
|
||||||
# 0xa2F728F997f62F47D4262a70947F6c36885dF9fa
|
# 0xa2F728F997f62F47D4262a70947F6c36885dF9fa
|
||||||
# kava15tmj37vh7ch504px9fcfglmvx6y9m70646ev8t
|
# kava15tmj37vh7ch504px9fcfglmvx6y9m70646ev8t
|
||||||
|
|
||||||
@ -64,11 +64,11 @@ $BINARY add-genesis-account $evmFaucetKeyName 1000000000000000000000ua0gi
|
|||||||
|
|
||||||
userKeyName="user"
|
userKeyName="user"
|
||||||
printf "$userMnemonic\n" | $BINARY keys add $userKeyName --eth --recover
|
printf "$userMnemonic\n" | $BINARY keys add $userKeyName --eth --recover
|
||||||
$BINARY add-genesis-account $userKeyName 1000000000000000000000ua0gi,1000000000usdx
|
$BINARY add-genesis-account $userKeyName 1000000000000000000000ua0gi
|
||||||
|
|
||||||
relayerKeyName="relayer"
|
vestingKeyName="vesting"
|
||||||
printf "$relayerMnemonic\n" | $BINARY keys add $relayerKeyName --eth --recover
|
printf "$vestingMnemonic\n" | $BINARY keys add $vestingKeyName --eth --recover
|
||||||
$BINARY add-genesis-account $relayerKeyName 1000000000000000000000ua0gi
|
$BINARY add-genesis-account $vestingKeyName 1000000000000000000000ua0gi --vesting-amount 1000000000000000000000ua0gi --vesting-start-time 1717200000 --vesting-end-time 1719791999
|
||||||
|
|
||||||
storageContractAcc="0g1vsjpjgw8p5f4x0nwp8ernl9lkszewcqqss7r5d"
|
storageContractAcc="0g1vsjpjgw8p5f4x0nwp8ernl9lkszewcqqss7r5d"
|
||||||
$BINARY add-genesis-account $storageContractAcc 1000000000000000000000ua0gi
|
$BINARY add-genesis-account $storageContractAcc 1000000000000000000000ua0gi
|
||||||
|
Loading…
Reference in New Issue
Block a user