主页 > imtoken钱包下载2.0安卓版 > 以太坊DeFi中MakerDAO质押借贷Dai(CDP)详解

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

imtoken钱包下载2.0安卓版 2023-05-26 07:00:32

概述

MakerDAO 是一个基于区块链的去中心化金融系统,提供稳定币 (Dai)、抵押贷款 (CDP) 和去中心化治理服务。

MakerDAO Collat​​eralized Dai (CDP) 是在以太坊区块链上运行的智能合约。 它是 Dai 的核心组成部分,Dai 是一个稳定币系统,其目的是创建 Dai 以换取抵押品,然后由第三方保管,直到借出的 Dai 归还。

CDP会动态改变Dai的总量,在用户抵押资产时创建Dai,在用户使用Dai赎回资产时销毁相应的Dai。 这个过程是通过智能合约实现的。

本文主要分析CDP的实现原理。

贷款流程

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

以太坊2.0质押_以太坊质押时间_以太坊为什么叫以太坊

CDP流程中的token转账流程

第 1 步:创建 CDP 并存储抵押品

用户先向Maker发送交易创建CDP,然后将ETH打包成为WETH,将WETH转换为PETH。 此时以太坊质押时间,CDP被创建,抵押的ETH已经存入CDP。

第 2 步:从 CDP 生成 Dai

CDP 持有者发送一笔交易,指定他们希望从 CDP 中产生的 Dai 数量,CDP 也会产生等量的债务以太坊质押时间,这将锁定抵押品,直到未偿还的债务还清。

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

以太坊2.0质押_以太坊为什么叫以太坊_以太坊质押时间

当用户想要赎回抵押资产时,需要偿还 CDP 中的债务以及这笔债务的稳定费。 稳定费只能以 MKR 支付。 当用户将应付的 Dai 和 MKR 支付给 CDP 时,CDP 中的债务将被清偿。

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

偿还债务和稳定费后,CDP 持有人可以向 Maker 发送交易并取回所有抵押资产。

Token引入智能合约 Sai Tub智能合约

抵押 Dai (CDP) 系统。 CDP 是你抵押 PETH 后产生的 DAI 债务。 Maker DAO 的大部分操作都是在这个合约中完成的。

合约地址:0x448a5065aebb8e423f0896e6c5d525c040f59af3

赛塔智能合约

可用于清偿债务并从中获利。

合约地址:0xbda109309f9fafa6dd6a9cb9f1df4085b27ee8ef

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

以太坊2.0质押_以太坊质押时间_以太坊为什么叫以太坊

智能合约方式分类

核心代码

1.创建CDP

以太坊质押时间_以太坊2.0质押_以太坊为什么叫以太坊

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.0质押_以太坊为什么叫以太坊

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

以太坊为什么叫以太坊_以太坊2.0质押_以太坊质押时间

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,并发送给债权人

以太坊质押时间_以太坊为什么叫以太坊_以太坊2.0质押

sai.mint(cups[cup].lad, wad); require(safe(cup)); require(sai.totalSupply() <= cap); }

参考

官方网站:

质押戴:

白皮书(中文):

合约代码:

MakerDAO 代币解释:DAI、WETH、PETH、SIN、MKR。 第1部分:

开发者文档: