一文了解如何升级多抵押 Dai
Maker 多抵押 Dai (MCD)的正式发布日期日前已经确定, 其将在 11 月 18 号正式上线。
据Maker 基金会 CEO Rune Christensen表示,多抵押 Dai 将给 Maker 协议带来很多新功能,包括社区期待已久的 Dai 存款利率 (DSR)以及更多的抵押品类型。
( 注:在本指南中,我们将单抵押品Dai系统称为SCD,将多抵押品Dai系统称为MCD,我们把单一抵押品Dai代币(旧版现有的Dai)称为Sai,而新的多抵押Dai称为Dai 。)
而为了利用这些改进,与单抵押Dai (SCD)交互的用户和合作伙伴必须将其现有的单抵押Dai代币(Sai)迁移成多抵押Dai代币(Dai),CDP(债务抵押头寸)也同样需要进行迁移。此外,与Sai和CDP集成的公司或项目必须更新其代码库以指向新的智能合约,并重构其代码以支持更新的功能。
为了确保所有人能够从单抵押品Dai(SCD)顺利过渡到多抵押 Dai(MCD),Maker官方发布了一份MCD升级指南,该指南概述了Maker生态系统中不同参与者的升级过程。
以下为指南的大致内容:
学习目标
- 了解如何迁移至多抵押 Dai(MCD);
- 针对不同群体的升级指南;
- Sai升级到Dai的部分技术细节 ;
一、迁移App的操作
在MCD正式发布后, migrate.makerdao.com 上的迁移应用程序允许你通过简单的操作(输入数量然后确认)就可完成Dai和CDP的迁移。
用于将Sai 升级到 Dai 的面板
用于升级CDP的面板
迁移应用使用了代理合约来执行CDP升级。因此,该应用程序也只能用于通过Maker代理合约创建的CDP。如果你是在cdp.makerdao.com设立了CDP,就会自动发生这种情况。如果你使用了第三方服务创建的CDP,且其没有使用Maker代理与CDP核心交互,则迁移合约可能不会起作用。你可通过关闭SCD CDP,并将ETH移动到MCD CDP来手动执行迁移。
二、不同用户群体的升级指南
1、作为Sai(旧版Dai)持有者
场景1: 如果你将Sai(旧版Dai)存放在一个钱包当中,并且控制了该钱包的私钥 ,那么你可以前往migrate.makerdao.com,然后按照下面的流程将你的Sai升级到Dai,并有选择地激活Dai存款利率智能合约,该合约允许你赚取利息。下图概述了升级流程:
场景2:如果你是把Sai存放在交易所或中心化托管钱包,或者锁定在dApp智能合约中 ,你可以要求服务商帮忙完成升级,或者将币提取到自己控制的钱包,然后前往migrate.makerdao.com自行完成升级。
2、作为一名SCD CDP(债务抵押头寸)所有者
在MCD发布之后,你可以通过migrate.makerdao.com上的升级应用程序将SCD CDP升级到MCD CDP。下图展示了 CDP升级的流程:
你还可选择通过偿还债务和赎回你的以太币来手动关闭你的CDP,并使用你的赎回抵押品开设新的MCD CDP。
如果你的SCD CDP头寸很大,则可能会有没有足够的Sai流动性来执行迁移。在这种情况下,你可能需要联系integrate@makerdao.com寻求帮助。你可以在本指南后面的迁移合约部分阅读有关迁移的更多信息。
关于Instadapp的注意事项:如果你是通过Instadapp服务创建了CDP,你需要进入 退出页面 ,然后点击“债务抵押头寸”的“Withdraw”(退出)按钮。这将为你提供CDP的监护权,然后你就可以在migrate.makerdao.com页面执行CDP迁移。
关于MyEtherWallet的注意事项:如果你是在MyEtherWallet钱包上创建的CDP,那么你可以使用migrate.makerdao.com上的迁移应用程序迁移你的CDP。但如果MyTherWallet使用的私钥存储在本地文件或其他未支持的格式中,你必须首先将私钥导入支持Web3的钱包。
3、作为中心化交易所或托管钱包
- 选择一个执行升级的日期,并通知用户。
- 在升级时暂停Sai存取款;
- 使用迁移应用程序/合约将所有用户的Sai升级到Dai(请参阅下面迁移应用程序/合约部分中的更多详细信息。)
- 将代码库指向新的Dai代币合约地址(MCD发布时会宣布);
- 恢复Dai存取款;
- 告知用户Dai储蓄存款利率,这允许Dai持有者赚取利息;
此流程将为交易所/托管用户带来以下用户体验:
4、作为去中心化交易所(DEX)
- 尽快通知用户有关升级新Dai(MCD)的时间表;
- 在平台上添加对新Dai代币的支持,同时将旧Dai命名为Sai;
- 当用户发起Sai或Dai交易时,请用户确认自己正在进行交易的代币类型;
- 通知用户可以在migrate.makerdao.com上用Sai兑换Dai;
5、作为非托管钱包
- 尽快通知用户关于MCD升级的时间表;
- 同时支持Sai和Dai余额显示;
- MCD推出后,新的Dai在你的平台上应命名为Dai,而单抵押Dai(SCD)应命名为Sai;
- 通知用户可以在migrate.makerdao.com上用Sai兑换Dai;
6、作为Keeper
- 使用 本指南 了解MCD中的Keeper和拍卖的最新情况。
- 进行升级;
- 官方希望在MCD发布之前发布一个用于拍卖的python库,这将是推荐的竞拍方式。
7、作为一名做市商
- 在交易所添加多抵押品Dai之后,你可选择支持Sai(旧Dai)的同时,支持新的Dai(多抵押Dai);
8、作为CDP集成伙伴
- 选择执行升级的日期,然后尽快通知用户;
- 在升级时暂停用户对CDP服务的访问;
- 启动升级,支持新CDP核心服务(如果你使用Dai.js进行的CDP集成,请参阅下面的“使用Dai.js”来升级到MCD,如果你是直接与CDP智能合约进行的集成,请参阅下面的“通过智能合约直接集成”来进行升级);
- 恢复用户对CDP服务的访问;
可选2: 在Dai 存款利率智能合约中实现用于锁定Dai的UI。 使用Dai.js进行集成 :如果你使用的是 Dai.js库 集成了CDP,请确保已将库更新到最新版本。
更新你的代码库以支持 MCD插件 的功能,在MCD推出时,此插件将作为默认插件捆绑到Dai.js库中。
直接用智能合约进行集成 :如果你是直接通过智能合约进行的集成,则必须添加对新Maker核心智能合约的支持。由于智能合约已经完全重写,大多数函数调用都已发生更改。
- 首先你需要了解MCD:https://github.com/makerdao/developerguides/blob/master/mcd/mcd-101/mcd-101.md
- 实施对MCD智能合约的支持(查看 本指南 ,了解如何与CDP管理器交互。)
- 将代码库指向新的MCD智能合约;
9、作为借贷协议
- 选择执行升级的日期,尽快通知用户日期;
- 在升级发生时停止Sai的借贷,同时开启Dai的借贷;
- 对于Sai中未偿还的贷款,选择以下选项之一(1、接受Sai偿还贷款,然后自己将Sai转换成Dai,2、通知用户不再接受Sai,让他们自己通过migrate.makerdao.com将Sai转换成Dai,然后再进行偿还)
10、作为Dapp运营商
- 选择执行升级的日期,尽快通知用户日期;
- 更新代码库,在MCD发布时支持新的Dai代币;
- 通知用户,让他们通过migrate.makerdao.com将Sai迁移到Dai;
三、迁移合约
上述部分概述的迁移应用程序的功能是由迁移合约负责处理的,该合约将在MCD发布时同时部署,以支持从单抵押Dai到多抵押Dai的平稳过渡。本节将概述迁移合约如何工作,以帮助超级用户和合作伙伴为 MCD迁移做好准备。
这一迁移智能合约是开源的,你可以在这里找到:
https://github.com/makerdao/scd-mcd-migration
在
src
文件夹中,你可以找到智能合约源代码。主合约是
ScdMcdMigration.sol
,其中包含了将与之交互的迁移函数。
它包含了三个主要函数:
-
swapSaiToDai
:将Sai升级为Dai的函数; -
swapDaiToSai
:允许你将Dai交换回Sai的函数; -
migrate
:允许你将SCD CDP迁移至MCD CDP的函数;
而要将旧版Dai升级到MCD Dai,必须要使用迁移合约中的
swapSaiToDai
函数。
从用户的角度来看,这个函数只是将指定数量的Sai升级到新的Dai。
实际幕后的过程要复杂的多,下图概述了将10个Sai迁移成10个Dai时发生的情况。
迁移合约还允许用户通过使用
swapDaiToSai
函数来将新版Dai切换回Sai。在这种情况下,CDP操作是会撤销的。
然而,这项操作需要有一笔已存入迁移合约的Sai盈余资金,因此,合约中必须至少有一笔与你要赎回的Dai金额相等的Sai存款。
关于如何调用swapDaiToSai函数的详细信息,你可以查看 该指南 。
另外,迁移合约还允许用户将其CDP从SCD核心迁移到MCD核心,而这是通过
migrate
函数完成的。关于迁移CDP函数调用的更多信息,你可以
在这里
找到。
小结:
本指南介绍了如何升级至多抵押Dai的步骤及部分技术细节,如果你想要了解更多的细节内容,可查看以下这些资料:
1、https://github.com/makerdao/developerguides/blob/master/mcd/mcd-cli/mcd-cli-guide-01/mcd-cli-guide-01.md
2、https://github.com/makerdao/developerguides/blob/master/mcd/mcd-seth/mcd-seth-01.md
3、https://github.com/makerdao/developerguides/blob/master/mcd/upgrading-to-multi-collateral-dai/cli-mcd-migration.md
4、https://github.com/makerdao/developerguides/blob/master/mcd/add-collateral-type-testnet/add-collateral-type-testnet.md