//初始化
k.UpdateAssetSupplies(ctx)
软分叉
ctx.KVStore(k.key),
func(k Keeper)SetAssetSupply(ctx sdk.Context,提供范例.AssetSupply,名词 [] byte){Github 链接:https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/keeper/keeper.go#L199
我们的修复要领是在 bep3 begin blocker 中添加一个函数,当参数中的 AssetSupply 值更新时,该函数会更新 AssetSupply 的值。
技能代码附录
https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/types/keys.go#L31
为_,supportedAsset:=范畴 params.SupportedAssets {Denom string`json:「denom」yaml:「denom」`//资产名称
修复将如何实现?
SetAssetSupply 函数为应用数据库中持续 0x02 处的每个资产配置了限制:
假如 supply.SupplyLimit).IsLT(totalSupply.Add(coin)){types.AssetSupplyKeyPrefix,// 0x02
摘要:今朝 Kava 主网上有一个较小的 bug,会影响 BEP3 资产供给的调解,这意味着我们临时无法上调 Kava CDP 内的 BNB 抵押额度(今朝已触顶 40,000 BNB)。不外请安心,该 bug 不会影响用户资金的安详性。
}Github 链接:https://github.com/Kava-Labs/kava/blob/v0.8.1/x/bep3/types/params.go
}store.Set(denom,bz)当一个新的互换被缔造时,IncrementIncomingAssetSupply 函数被挪用,来查抄互换资产量没有高出存储在相应的 0x02 的资产限制量。今朝因为这个值没有被更新,所以互换没有通过这个查抄。
如何修复 bug?
k.SetAssetSupply(ctx,asset,[] byte(supportedAsset.Denom)))
} }
asset.SupplyLimit = sdk.NewCoin(
// IncrementIncomingAssetSupply 递增资产的传入供给
函数(k Keeper)IncrementIncomingAssetSupply(ctx sdk.Context,coin sdk.Coin)error {
资产,找到:= k.GetAssetSupply(
硬币,totalSupply,供给。SupplyLimit,
指网络系统版本或协议进级后,旧的例程并不会被代码产生改变,并继承接管由新间断缔造的区块,新老仓库始终照旧在同一条链上事情。
假如找到了 {
有效 bool`json:「active」yaml:「active」`//暗示资产是处于勾当状态照旧已暂停
k.UpdateExpiredAtomicSwaps(ctx)
接下来我们从技能角度来阐明一下 Kava 代码中的这个 bug。这个问题代码在 Kava 的 bep3 模块中。在该模块的参数中,支持的抵押资产被指定如下:
原文标题:《Kava-3 主网错误修复陈诉》
修复实际上只需要更新几行代码,配置当供给限制的参数值更新时,,强制执行应用的状态也相应更新。但只能是的,这对系统而言是一个大的变革,所以我们不能仅仅依靠宣布一个新的 v0.8 版原来修复这个问题。
Github 链接:https : //github.com/Kava-Labs/kava/blob/v0.8.1/x/bep3/genesis.go#L29
为了将其作为异步网络分叉来实现,我们在函数中添加一个激活时间参数,该参数指定 UpdateAssetSupplies 应该何时运行。譬喻,我们指定仅在 ctx.BlockTime()。After(activationTime)时才运行 UpdateAssetSupply,留意,ctx.BlockTime()是验证器集同意的区块链时间的值,不受时钟漂移的影响。
// SetAssetSupply 更新资产的当前有效供给
}
)
「增加%s,资产供给%s,限制%s」,
https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/keeper/asset.go#L46
供应:= NewAssetSupply(asset.Denom,zeroCoin,zeroCoin,
= k.GetParams(CTX):PARAMS
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。