以太坊DeFi之MakerDAO质押借Dai(CDP)详解

概述

MakerDAO是一个去中心化的基于区块链的金融系统,提供稳定币(Dai)、抵押贷款(CDP)和去中心化治理服务。
MakerDAO质押借Dai(CDP)是在以太坊区块链上运行的智能合约。它是稳定币系统Dai的核心组成部分,其目的是创建Dai来换取抵押品,然后将其保留在托管中,直到归还借入的Dai为止。
CDP会动态改变Dai的总量,在用户抵押资产时创建Dai,当用户使用Dai赎回资产时销毁对应的Dai,这个过程通过智能合约实现。
本文主要分析CDP的实现原理。

借贷流程

CDP过程涉及多种Token的流转与智能合约的调用,如下图所示。(图中圆形为Token,圆角矩形为智能合约及其实体)

CDP过程中Token流转过程

第一步:创建CDP并存储抵押物

用户首先发送一个交易到 Maker 创建CDP,然后打包ETH成为WETH,将WETH转换为PETH,此时CDP创建完成,抵押的ETH已经存入到CDP中。

第二步:从CDP中生成 Dai

CDP持有者发送一个交易并明细想要从CDP中生成Dai的数量,同时CDP也会产生同等数量的债务,这笔债务会锁定抵押物直到未偿付的债务被付清。

第三步:偿还债务和稳定费用

当用户希望赎回抵押资产的时候,他们需要偿还CDP中的债务以及这个债务的稳定费用。稳定费 用只能用MKR支付。当用户将应付的Dai和MKR支付给CDP后,CDP中的债务就会偿清。

第四步:拿回抵押资产并关闭CDP

当债务和稳定费用偿还后,CDP持有者可以发送一个交易给Maker并拿回所有的抵押资产。

Token介绍

  • WETH是ETH的1对1映射,是一种符合ERC-20标准的Token,可与以太币互换。代币地址:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
  • PETH是Maker DAO中ETH池产生的一种Token,当用户把WETH存入Maker DAO时,会得到对应的PETH,但PETH与WETH不是1对1映射的,是根据一定的汇率计算出来的。代币地址:0xf53ad2c6851052a81b42133467480961b2321c09
  • DAI,Maker DAO的稳定币,价格接近1$,使用CDP借贷得到的就是DAI。代币地址:0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359
  • SIN,代表已清算的债务,价值等于1DAI,在债务清算过程中使用。代币地址:0x79f6d0f646706e1261acf0b93dcb864f357d4680
  • MKR,用于偿还债务时支付佣金的代币,通过wipe方法,地址:0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2

智能合约

Sai Tub智能合约

抵押借Dai(CDP)系统。CDP 是你在 PETH 抵押后生成的 DAI 的债务。Maker DAO 的大多数操作都是在该合约中完成。

合约地址:0x448a5065aebb8e423f0896e6c5d525c040f59af3

Sai Tap智能合约

可以用于清算债务并从中产生利润。

合约地址:0xbda109309f9fafa6dd6a9cb9f1df4085b27ee8ef

Maker DAO中的的智能合约有很多方法,下表对主要部分进行了分类:

智能合约方法分类

核心代码

1、创建一个CDP

function open() public note returns (bytes32 cup) {

        require(!off);
        // cup是指一个CDP借贷,借贷总数+1
        cupi = add(cupi, 1);

        cup = bytes32(cupi);
        // 绑定cup的创建者,lad是指所有者
        cups[cup].lad = msg.sender;

        LogNewCup(msg.sender, cup);

    }

2、锁定PETH到CDP中

function lock(bytes32 cup, uint wad) public note {

        require(!off);
        // 将wad数量的PETH累加到cup中,ink为抵押品
        cups[cup].ink = add(cups[cup].ink, wad);
        // skr是抵押品抽象出来的一种Token
        skr.pull(msg.sender, wad);

        require(cups[cup].ink == 0 || cups[cup].ink > 0.005 ether);

    }

3、向用户释放DAI,通过增加art

function draw(bytes32 cup, uint wad) public note {

        require(!off);

        require(msg.sender == cups[cup].lad);

        require(rdiv(wad, chi()) > 0);
        // art是一个抵押的债务
        cups[cup].art = add(cups[cup].art, rdiv(wad, chi()));
        // rum是所有CDP art的总和
        rum = add(rum, rdiv(wad, chi()));

        cups[cup].ire = add(cups[cup].ire, rdiv(wad, rhi()));
        // 发行新的DAI,并发送给债权人
        sai.mint(cups[cup].lad, wad);

        require(safe(cup));

        require(sai.totalSupply() <= cap);

    }

参考

官网:https://makerdao.com

质押借Dai:https://cdp-cn.makerdao.com/

白皮书(中文):https://makerdao.com/whitepaper/Dai-Whitepaper-Dec17-zh.pdf

合约代码:https://github.com/makerdao/sai/tree/master/src

MakerDAO Tokens Explained: DAI, WETH, PETH, SIN, MKR. Part 1:https://medium.com/coinmonks/makerdao-tokens-explained-dai-weth-peth-sin-mkr-part-1-a46a0f687d5e

开发者文档:https://github.com/makerdao/sai/blob/master/DEVELOPING.md

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容