多抵押 Dai 漏洞赏金计划及安全路线图
July 26, 2019
过去的几个月,Maker 集中精力在以太坊 Kovan 测试网络上开发和发布多抵押 Dai (MCD) 核心合约及其与 Maker 核心产品和工具的互动。
在多抵押 Dai 于主网正式发布前,我们希望与社区保持完全地透明,并始终如一地向社区成员介绍 Maker 未来几个月内发展路线图,这些更新将涵盖我们的最新部署及其功能,并提供示例 Demo 和操作指南。
众所周知,区块链项目的主要挑战之一是智能合约的发布。从很多层面看,它更像是发布硬件而不是软件。多抵押 Dai 是一个自动运行的去中心化系统,一旦部署到区块链上,它就会自主运行。在构建这样的系统时,获取反馈至关重要 - 不仅来自内部团队,还来自整个Maker社区。如果您有任何问题,欢迎向我们提出问题与反馈。欢迎加入我们的微信讨论小组以及 chat.makerdao.com 上面的 #product-feedback 频道。
我们将按计划发布涵盖 Maker 智能合约、前端应用程序、工具和服务。每个 Kovan 版本都将代表一个代码库的版本,当前版本是v0.2.2。
简而言之,每次的部署将经历一系列步骤,直到将系统实现完备的状态。在第一次部署中,我们引入了治理提案和执行投票,将债务上限从 0 提高到合适的数值,并允许用户从不同的抵押物种类中生成 Dai。
下面是最新 v.0.2.2 版本的信息。
在最新的 Kovan 测试版本里,我们更新了与多抵押 Dai 系统进行交互的工具。这些更新包括:
多抵押 Dai 合约
https://github.com/makerdao/dss/tree/master
多抵押 Dai 命令行界面
https://github.com/makerdao/mcd-cli/releases/tag/0.2.2-rc.1
Dai.js 代码库
https://github.com/makerdao/dai.js/releases/tag/v0.13.2%2Bmcd-0.2.2
治理插件
https://github.com/makerdao/dai-plugin-governance/releases/tag/v0.5.2%2Bmcd-0.2.2
治理面板
https://github.com/makerdao/governance-dashboard/releases/tag/0.2.2
多抵押 Dai 的 CDP 面板
https://github.com/makerdao/mcd-cdp-portal/releases/tag/0.2.2
访问完整的合约列表,请查看: http://www.mocky.io/v2/5c93fe42310000c24c554801。
开始使用并交互上述工具,你需要获取一些 Kovan 测试网络的ETH 以及模拟代币 COL1,COL2,COL3,COL4,COL5 和 MKR 代币。注:MKR持有人最终将通过 Maker 风险团队的投票确认最终的抵押品类型。
一旦你有了相应的 Kovan 代币,就可以继续以下指南的步骤,比如锁定一些抵押品、生成 Dai、偿还 Dai,以及取回抵押品。
在下面的指南中,我们将使用多抵押 Dai 命令行(MCD-CLI)和多抵押 Dai 面板工具(MCD-PORTAL)执行上述步骤。
有很多方法可以获取 Kovan ETH,包括:
标准 Faucet 方法: https://faucet.kovan.network/
Gitter方法: https://gitter.im/kovan-testnet/faucet
我们部署了一个特殊的 Faucet,你可以获得一些在测试网抵押的代币,这些代币是用来模拟以太坊主网上存在的真实代币。
K-Collateral 代币 Faucet:0xDF31eF13A608728b6fEE5d2596Ddbb1e0d8BDe3
在开始之前,您必须首先在本地设置Seth:https://dapp.tools/seth/
注意:您可以使用 seth 调用 gulp(address) 函数。address 地址代表本次合约部署COL1至COL5抵押品类型的地址。
说明:
首先,请按照 MCD-CLI 中 README.md 文件的说明,确保已正确设置seth:(https://github.com/makerdao/mcd-cli#installation)。
在CLI中运行以下命令,接收COL1代币:
i,将 COL1 地址设置为env变量:
$ export COL1A = 0xb3844361e19ab82fce3dddd81637b85bcb554da7
ii,将 Faucet 地址设置为env变量:
$ export FAUCET = 0xDF31eF13A608728b6fEE5d2596Ddbb1e0d8BDe31
iii,调用 gulp(address)函数:
$ seth send $FAUCET ‘gulp(address)’ $COL1A
iv,运行以下命令验证 COL1 余额:
$ seth –from-wei $(seth –to-dec $(seth call $COL1A ‘balanceOf(address)’ $ETH_FROM)) eth
iiv,你将会看到类似的结果
50.000000000000000000
现在,你已经获得一些 COL1 K-Collateral 模拟代币了。
注:如果您想要一些 K-MKR 代币,可以将 COL1 代币地址替换为 MCD_GOV 代币地址,按照上述过程进行操作。收到 Kovan 测试抵押代币后,可以在多抵押 Dai 面板 (MCD-PORTAL) 和多抵押 Dai 命令行 (MCD-CLI) 上进行操作。
通过 Dai.js 库和治理插件工具,可以创建 CDP、发行 Dai 以及与MKR治理系统交互。
多抵押 Dai 插件可以与多抵押 Dai 合约进行交互。学习如何使用 dai.js 库创建和操作CDP (通过 DSProxy 和 CDP Manager),并了解如何读取多抵押 Dai 的系统数据,
请点击链接: https://github.com/makerdao/dai.js/tree/dev/lib/dai-plugin-mcd
dai.js 插件可用于与MKR治理系统交互。该插件可以将 Dai 治理集成到前端应用程序中,例如 Maker 治理面板。您可以使用它来投票、提案、查询投票合约以及创建投票代理等等。
按照以下链接获取安装说明和示例:https://github.com/makerdao/dai-plugin-governance
治理面板是 Maker社区进行投票的前端页面,并显示当前的投票提案。面板支持最新的多抵押 Dai 的 Kovan 测试版,并包括执行投票。
你可以通过以下两种方式访问治理面板:
部署本地面板
https://github.com/makerdao/governance-dashboard
访问演示页面
https://dai-gov-staging.now.sh/?mcd=true
多抵押 Dai 作为一套无需准入的智能合约系统,已经有独立团队开发其前端界面。为了让 Dai 的 Kovan 版本可以得到大家的测试,我们提供了多抵押 Dai 的 CDP 前端面板,该面板目前用来临时的演示。 面板将随着每个 Kovan 版本进行更新。在第一个版本中,你可以锁定抵押品并生成 Dai 。
面板网址: https://mcd-cdp-portal-staging.now.sh
你还可以通过这里的指南配置本地的面板: https://github.com/makerdao/mcd-cdp-portal
(注:目前部署的版本还处于早期迭代阶段。目前的功能仅限于开启新的 CDP 并显示 CDP 的模拟数据。我们将在接下来的几周内提供更多功能,也会考虑来自社区的的反馈意见添加到即将发布的版本中。 )
你也可以通过命令行界面(CLI)与多抵押 Dai 合约进行交互,锁定 ETH 等资产以及其他模拟抵押代币(COL1,COL2,COL3,COL4,COL5)、生成 Dai、查看 CDP等等。
操作说明: https://github.com/makerdao/mcd-cli
以下说明将指导你完成多抵押 Dai 的一个完整周期操作。我们将使用 COL1 模拟抵押品创建 Dai 款,然后偿还 Dai 款。由于 MCD-CLI 基于seth,需要先配置所需要的变量。
首先,在 Terminal 终端添加所需的变量,或者在〜/ .sethrc 中预设变量。
ETH_FROM=<add your ETH address>
ETH_KEYSTORE=<add the path to your keystore file>
ETH_PASSWORD=<add the path to password file with file name>
MCD_CHAIN=kovan
SETH_CHAIN=kovan
在开始前,请检查是否已从 Faucet 获得一些 COL1 模拟代币。
1.将 COL1 模拟代币存入到COL1适配器。你可以将60这一数值改为其他数值。
运行:
$ mcd -ilk = COL1-A gem join 60
输出示例:
vat 60.000000000000000000 Unlocked collateral (COL1)
ink 0.000000000000000000 Locked collateral (COL1)
ext 0.000000000000000000 External account balance (COL1)
2.锁定 COL1 抵押品代币,然后从 VAT 中生成1个dai。
运行:
$ mcd -ilk = COL1-A frob 60 1
输出示例:
ilk COL1-A Collateral type
urn 16Fb96a5fa0427Af0C8F7cF1eB4870231c8154B6000000000000000000000000 Urn index
ink 60.000000000000000000 Locked collateral (COL1)
art 1.000000000000000000 Outstanding debt (Dai)
printf: ‘58234907888888888888888889’: Numerical result out of range
spot 0.000000009223372036854775807 Price with safety mat (USD)
rate 1.000000000000000000000000000 COL1 DAI exchange rate
fill 0 Collateralization Ratio (%)
rap 0.000000000000000000 Accumulated stability fee (Dai)
dai 1.000000000000000000000000000000000000000000000 Vat Dai
gem 0.000000000000000000
2a. 授权 MCD_JOIN_DAI 从 urn 容器中取出生成出的 Dai 。
这将把 MCD_JOIN_DAI 和 MCD_VAT 变量以及相应的合约地址添加到 Terminal 终端。
运行:
$ seth send $MCD_VAT ‘hope(address)’ $MCD_JOIN_DAI
注:在我们全部完成多抵押 Dai 的开发前,这是一个临时的方案。
3.取出 Dai 并将其发送到你的 ETH 个人账户。
运行:
$ mcd dai exit 1
输出示例:
vat 0.000000000000000000000000000000000000000000000 Vat balance
ext 1.000000000000000000 ERC20 balance
注意:如果您想偿还债务并解锁抵押品,请按照以下步骤操作。
4. 添加 Dai 到 urn 容器里。
运行:
$ mcd dai join 1
输出示例:
vat 1.000000000000000000000000000000000000000000000 Vat balance
ext 0.000000000000000000 ERC20 balance
5.消除 Dai 的债务并从 VAT 解锁 COL1 抵押品。
运行:
$ mcd -ilk = COL1-A frob - -60 -1
输出示例:
ilk COL1-A Collateral type
urn 16Fb96a5fa0427Af0C8F7cF1eB4870231c8154B6000000000000000000000000 Urn index
ink 0.000000000000000000 Locked collateral (COL1)
art 0.000000000000000000 Outstanding debt (Dai)
printf: ‘58234907888888888888888889’: Numerical result out of range
spot 0.000000009223372036854775807 Price with safety mat (USD)
rate 1.000000000000000000000000000 COL1 DAI exchange rate
fill 0 Collateralization Ratio (%)
rap 0 Accumulated stability fee (Dai)
dai 0.000000000000000000000000000000000000000000000 Vat Dai
gem 60.000000000000000000 Unlocked collateral (COL1)
6.最后从 COL1 适配器中取出 COL1 抵押代币。
运行:
$ mcd –ilk=COL1-A gem exit 60
输出示例:
vat 0.000000000000000000 Unlocked collateral (COL1)
ink 0.000000000000000000 Locked collateral (COL1)
ext 60.000000000000000000 External account balance (COL1)
运行上述命令后,请确认初始抵押品(COL1)已退回到钱包中。
以上便是 CDP 操作指南,我们期待在接下来的几周内进一步介绍多抵押 Dai 的进展。