原文标题:《Kava-3 主网错误修复报告》 原文作者:卡瓦实验室 摘要:目前 Kava 主网上有一个较小的 bug,会影响 BEP3 资产供应的调整,这意味着我们暂时无法上调 Kava CDP 内的 BNB 抵押额度(目前已触顶 40,000 BNB)。不过请放心,该 bug 不会影响用户资金的安全性。 kava-3 网络使用参数来管理治理链链的状态。通过治理改变参数,Kava 可以管理主链的运行方式,并在有时效性的紧急情况下用委员会治理来快速应对。我们发现在其中一个参数——BEP3 的资产供应限制上存在一个较小的 bug,导致参数值的变化无法实现,这意味着当前的供应替代 40,000BNB 无法更新。 如何修复 bug? 修复实际上只需要更新几行代码,设置当供应限制的参数值更新时,强制执行应用的状态也相应更新。但只能是的,这对系统而言是一个大的变化,所以我们不能仅仅依靠发布一个新的 v0.8 版本来修复这个问题。 修复将如何实现? 初步网络更新 我们已经编写了一个软件版本,修复了这个小 bug。在 bug 修复中,我们指定了代码执行的时间。验证者需要在指定的时间之前更新自己的中断,确保网络顺利更新,不会出现服务中断的情况。任何遗留在上一版本软件上的上游都会在代码生效时被软分叉掉。这基本上也是以太坊核心开发者在「网络升级」时的操作。 软分叉 技术代码附录 接下来我们从技术角度来分析一下 Kava 代码中的这个 bug。这个问题代码在 Kava 的 bep3 模块中。在该模块的参数中,支持的抵押资产被指定如下: 类型 AssetParam struct { Github 链接:https://github.com/Kava-Labs/kava/blob/v0.8.1/x/bep3/types/params.go 每个抵押资产都规定了一个限制–即在网络限制进一步的交换交换之前,该资产可以抵押的最大数量。当主网启动时,以下代码为每个资产设置了初始配额: //初始化 Github 链接:https://github.com/Kava-Labs/kava/blob/v0.8.1/x/bep3/genesis.go#L29 SetAssetSupply 函数为应用数据库中连续 0x02 处的每个资产设置了限制: // SetAssetSupply 更新资产的当前有效供应 Github 链接:https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/keeper/keeper.go#L199 https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/types/keys.go#L31 当系统更新 AssetParam.Limit 的参数值时,没有相应的函数更新数据库中的值(通过调用 SetAssetSupply)。因此,更新参数不会传送到应用状态。 当一个新的交换被创造时,IncrementIncomingAssetSupply 函数被调用,来检查交换资产量没有超过存储在相应的 0x02 的资产限制量。目前因为这个值没有被更新,所以交换没有通过这个检查。 // IncrementIncomingAssetSupply 递增资产的传入供应 Github 链接:https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/keeper/swap.go#L70 https://github.com/Kava-Labs/kava/blob/869189054d68d6ec3e6446156ea0a91eb45af09c/x/bep3/keeper/asset.go#L46 我们的修复方法是在 bep3 begin blocker 中添加一个函数,当参数中的 AssetSupply 值更新时,该函数会更新 AssetSupply 的值。 //每个区块上的 BeginBlocker 都将过期的原子交换过期, UpdateAssetSupply 函数可以调节参数和数据库里的数值之间的差异,设置数据库与参数相匹配。 // UpdateAssetSupplies 更新应用到的资产上限从参数到资产用品 为了将其作为异步网络分叉来实现,我们在函数中添加一个激活时间参数,该参数指定 UpdateAssetSupplies 应该何时运行。例如,我们指定仅在 ctx.BlockTime()。After(activationTime)时才运行 UpdateAssetSupply,注意,ctx.BlockTime()是验证器集同意的区块链时间的值,不受时钟漂移的影响。 原文链接:https://mp.weixin.qq.com —- 编译者/作者:区块律动BlockBeat 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
如何修复Kava-3主网「BEP3资产供应调整」bug
2020-06-28 区块律动BlockBeat 来源:区块链网络
LOADING...
相关阅读:
- Kava #15提案通过:将在29日22时开启铸币奖励计划2020-07-25
- 拥抱KAVA,就是抓住一个确定性的投资机会2020-07-20
- KavaCEO专访:加密行业很大程度上是一种注意力经济2020-07-20
- Kava,使用BNB作为抵押的加密货币2020-07-18
- 三分钟速览 CertiK 对跨链 DeFi 平台 Kava 的 CDP 和拍卖模块审计结果2020-07-15