借贷市场治理
以下是对 Canto 借贷市场管理方式的高度概述:
提案在网络端(Cosmos 运行时)发起,并由 SDK 治理模块中指定的网络验证器投票。 借贷协议治理使用与 Compound V2 的治理提案类型等效的自定义 Canto 提案类型。
当提案获得批准时,GovShuttle 模块将提案类型发送到 EVM 模块,在该模块中可以通过对特定 oracle 地址的智能合约调用来检索它。
当提案被检索时,它被存储在队列中,然后以与 Compound V2 上的传统治理相同的方式执行,在提案获得批准后在 Compounds Governor Bravo 中概述。
技术概述和细节
以下是 Canto 借贷市场治理的技术概述:
用户使用 cli 提交 proposal.cantod tx unigov submit-proposal “proposal text here” --address="address to map contract"
这会使用 Governance keeper 提交提案。
用户对提案进行投票。
如果提案通过,治理模块处理程序将提案发送到 GovShuttle 提案处理程序,这会触发 GovShuttle 模块调用位于 proposals.go 文件中的 keeper 函数 AppendLendingMarketProposal。
AppendLendingMarketProposal 函数接受之前的 LendingMarketProposal 并返回部署 Map Contract 的地址。
Lending Market 现在可以在地图合约上使用 QueryProp 方法来返回提案结构。 重要的是,借贷市场只能查询通过 GovShuttle 治理的提案。
提案被保存到 EVM,如下所示:
DeployMapContract 使用 ProposalStoreContract.ABI.Pack 打包提案中包含的参数
然后它使用 CreateAddress(types.ModuleAddress, nonce) 创建一个合约地址
然后它创建一个包含打包数据的字节数组,并使用 CallEVMWithData(ctx, types.ModuleAddress, nil, data, true) 将其传递到对 EVM 的 keeper 调用中
最后它返回部署带有初始提案的 Map Contract(如下所示)的地址
如果之前已经通过了 GovShuttle 提案,请使用
最后更新于