---
# System prepended metadata

title: Defi Board <> EDA Wallet 接入流程
tags: [DeFi, Defi Board, EDA Wallet]

---

---
title: 'Defi Board <> EDA Wallet 接入流程'
---

Defi Board <> EDA Wallet 接入流程
===

## 目录

[TOC]

## Defi Board 收益产品种类

### 浮动收益产品

用户随时可以投资和赎回，利率根据市场随时浮动。

产品阶段：

* 用户投资 T+1 后开始计息
* 用户赎回 T+1 后放款

### 固定收益产品

产品利率根据市场确定，但是一旦产品开始则利率固定。产品可接受的总资金有金额限制。用户资金有锁定期。

产品阶段包括：

* 投资阶段：在此阶段接受投资人存款，存款的金额有最低和最高限制
* 封闭阶段：产品不可投资和赎回，计息开始
* 赎回阶段：封闭期结束后，产品开放供用户自己赎回本金和利息



## Defi Board 主要功能

### DFB 产品查询

EDA Wallet 查询 DFB 所有支持的投资产品信息，包括产品收益率，锁定周期，可购买金额，总投资金额等信息。

```sequence
EDA Wallet->DFB: 发起查询请求
DFB-->EDA Wallet: 返回 DFB 所有投资产品
Note left of EDA Wallet: 记录用户投资信息\n生成 Tx ID
```

### 用户资产查询

EDA Wallet 通过 User ID 查询该用户所有投资资产净值，收益，投资历史等信息。

```sequence
EDA Wallet->DFB: 发起查询请求
DFB-->EDA Wallet: 返回该用户所有投资产品
```

### 充值

用户在 EDA Wallet（EDA）充值，然后由 EDA 服务器向 Defi Board（DFB）服务器发起充值请求，传入用户 ID ，投资产品 ID，投资金额。DFB 返回交易号 Tx ID。


```sequence
EDA Wallet->DFB: 发起充值请求
Note right of DFB: 记录用户投资信息\n生成 Tx ID
DFB-->EDA Wallet: 返回 Tx ID
Note left of EDA Wallet: 记录 Tx ID
```

#### 充值结算流程

- 每天下午3点，DFB 统计当日3点前所有用户转入的 EDA 总金额数，生成统计表格（包括所有 Tx ID 及对应的金额）发送给 EDA Wallet。
- EDA Wallet 确认无误（与自己系统记录的所有 Tx ID 相同且完整；每个 Tx ID 资金数量一致）；然后在下午5点前，将相应的数字货币 DAI 转入指定账户。
- Defi Board 收到 DAI 后，投入相应数字产品。


### 取现

用户在 EDA Wallet 发起取现；然后由 EDA 服务器向 Defi Board（DFB）服务器发起取现请求，传入用户 ID 及取现金额。DFB 返回交易号 Tx ID。

```sequence
EDA Wallet->DFB: 发起取现请求
Note right of DFB: 记录用户取现信息\n生成 Tx ID
DFB-->EDA Wallet: 返回 Tx ID
Note left of EDA Wallet: 记录 Tx ID
```

#### 取现结算流程

- 每天下午3点，DFB 统计当日3点前所有用户转出的 EDA 总金额数，生成统计表格发送给 EDA Wallet。
- 在下午5点前，EDA Wallet 确认无误（与自己系统记录的所有 Tx ID 相同且完整；每个 Tx ID 资金数量一致）并确认。
- DFB 收到确认后，将相应金额的数字货币 DAI 从产品中取出，然后转入 EDA Wallet 指定的账户。

## DFB 接口

### 服务器地址

#### 测试服务器
test.eda.defiboard.io:8080

#### 正式服务器

### 登录
接口：/api/login
请求方式：POST
请求参数：
- clientId：产品ID （测试产品ID：test）
- clientSecret：密码，需要传md5后的值 （测试密码：123456）

成功返回：
```javascript
{
    code: 0
    data: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiI1ZDdmODU5YWU5ZmMxYjBkZWY2MzhjM2MiLCJpYXQiOjE1Njg2OTMyNTksImV4cCI6MTU2ODY5Njg1OX0.C08COPIIc1zsSEq_F7C1APp3q1uihDzcCWtd5zeqa6o" 
    //token
    msg: "请求成功"
}
```

#### 后面的请求需要在请求header设置Authorization的值为
#### 'Bearer {login请求返回的data值}'


### 获取所有产品信息

接口：/api/products
请求方式：GET

成功返回：

```javascript
{
    code: 0
    data: 
        count: 1
        list: [
            asset: "DAI" // 投资数字代币的名称
            assetIcon: "/public/tokenIcon/dai.svg" // 代币图标
            createdAt: "2019-09-20T00:00:00.944Z"
            curSupply: 400 // 已购买数量
            exchangeRate: 1.199778598571667 // 份额汇率
            lockEnd: "2019-09-20T07:40:00.000Z" //锁定结束时间
            lockStart: "2019-09-20T04:20:00.000Z" // 锁定开始时间
            maxAmount: 1000 //用户购买最大金额
            minAmount: 1 //用户购买最小金额
            name: "DefiBoard DAI 固定期限 测试" // 产品名称
            presaleEnd: "2019-09-20T04:10:00.000Z" // 预售结束时间
            presaleStart: "2019-09-20T03:30:00.000Z" // 预售开始时间
            status: 4 //0初始化 1预售期 2审核 3锁定期 4已结束
            supplyLimit: 10000 // 最大购买数量
            supplyRate: 10 // 预计收益率 (年化，百分比)
            totalShare: 400.2829245447642 // 所有份额
            type: "regular" //产品类型 定期regular 活期 current
            updateAt: "2019-09-20T09:52:00.015Z"
            _id: "5d844346e9fc1b08ee7f74f5"
        ]
    msg: "请求成功"
}
```

### 获取单个产品信息

接口：/api/products/:id
请求方式：GET

成功返回：

```javascript
{
    code: 0
    data: {
        asset: "DAI"
        assetIcon: "/public/tokenIcon/dai.svg"
        createdAt: "2019-09-20T00:00:00.944Z"
        curSupply: 400
        exchangeRate: 2.199778598571667
        lockEnd: "2019-09-20T07:40:00.000Z"
        lockStart: "2019-09-20T04:20:00.000Z"
        maxAmount: 1000
        minAmount: 1
        name: "DefiBoard DAI 固定期限 测试"
        presaleEnd: "2019-09-20T04:10:00.000Z"
        presaleStart: "2019-09-20T03:30:00.000Z"
        status: 4
        supplyLimit: 10000
        supplyRate: 10
        totalShare: 400.2829245447642
        type: "regular"
        updateAt: "2019-09-20T09:52:00.015Z"
        _id: "5d844346e9fc1b08ee7f74f5"
    }
    msg: "请求成功"
}
```

### 创建订单
接口：/api/trades
请求方式：POST

请求参数：
- customerId：用户ID
- productId：产品ID
- amount：金额
- tradeType：交易类型（0 - 充值 1 - 提现）

成功返回：
```javascript
{
    "code": 0
    "data": {
        txId: "156869420124537"
    }
    "msg": "请求成功"
}
```

### 查询用户订单
接口：/api/trades?customerId=
请求方式：GET

成功返回：
```javascript
{
    "code": 0
    "data": {
        list: [
            amount: 100
            asset: "DAI"
            createdAt: "2019-09-16T03:53:53.908Z"
            product: "5d79b7bce9fc1b0bf5e08776"
            status: 0 // 订单状态 0 初始化 1审核成功 2审核失败 3已支付 4订单不存在或已删除 
            tradeType: 0 //"交易类型。0 - 充值; 1 - 提现"
            txId: "156860603390591"
            customerId: "10001"
            __v: 0
            _id: "5d7f0751a377001731dbbd46"
        ]
    }
    "msg": "请求成功"
}
```

### 查询单个订单
接口：/api/trades/:id
请求方式：GET

### 查询用户投资信息

接口：/api/assets?customerId=
请求方式：GET

成功返回：

```javascript
{
    "code": 0
    "data": {
        list: [
            balance: 0 // 当前余额（包含收益）
            createdAt: "2019-09-20T04:22:00.355Z"
            duration: 0.1007005787037037 //投资时长（天）
            earning24hr: 0 // 平均24小时收益
            id: "5d8453e873d1d018075eb0b9"
            principle: 0 // 投资本金
            product: {supplyLimit: 10000, curSupply: 400, totalShare: 400.2829245447642, exchangeRate: 2.199778598571667,…}
            totalEarning: 0 // 总收益
            updateAt: "2019-09-20T07:38:00.065Z"
            customerId: "10001"
        ]
    }
    "msg": "请求成功"
}
```

### 查询单个投资信息

接口：/api/assets/:id
请求方式：GET

## 测试流程


### 产品状态

#### 未固定期限产品current

* product status 0 初始状态 不能创建订单
* product status 3 运行状态 不限制
* product status 4 结束状态 只能创建提现订单

每天人工审核订单状态 把审核通过的订单总金额投资到产品中 运行脚本处理审核通过订单

#### 固定期限产品regular

* product status 0 初始状态 不能创建订单
* product status 1 预售期 不限制
* product status 2 审核期 不能创建订单 人工审核订单状态 把审核通过的订单总金额投资到产品中
* product status 3 锁定期 可以提前退出，拿回本金（提现订单）
* product status 4 结束状态 只能创建提现订单

产品状态3，4的情况下：

每天人工审核订单状态 把审核通过的订单总金额投资到产品中 运行脚本处理审核通过订单

###### tags: `DeFi` `Defi Board` `EDA Wallet`
