Skip to content

Commit

Permalink
fix readme
Browse files Browse the repository at this point in the history
  • Loading branch information
longdacao committed Mar 31, 2022
1 parent faaca3f commit 3b1cd2a
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 15 deletions.
5 changes: 3 additions & 2 deletions basic/21-aave-uni-loan/.env.example
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1
INFURA_ID=yyyy
ALCHEMY_ID=XXXX
PRIVATE_KEY=xxxxx
ALCHEMY_ID=zzz
PRIVATE_KEY=tttt
TARGET_ADDRESS=ttttt
3 changes: 0 additions & 3 deletions basic/21-aave-uni-loan/.env.template

This file was deleted.

47 changes: 37 additions & 10 deletions basic/21-aave-uni-loan/README-CN.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
# 项目介绍
基于 Hardhat 测试框架,通过样例合约的演示,了解如何在 AAVE 上进行借贷,在 Uniswap 上进行兑换
# 前言
基于 Hardhat 测试框架,通过样例合约的演示,了解如何在 AAVE 上进行借贷,在 Uniswap 上进行兑换,并通过 AAVE 和 Uniswap 进行做多和做空。

### AAVE
## 合约交互
### AAVE 合约
Lending Pool Addresses Provider 是 AAVE 交互的入口,通过它可以和 AAVE 进行交互。
同时因为 AAVE 会更新 LendingPool / ProtocolDataProvider / PriceOracle 合约的地址以便修复发现的 Bug ,而通过 Lending Pool Addresses Provider 可以获取这三个合约的最新的地址,而不必修改代码:
- LendingPool: 负责 存入/借贷 功能
- ProtocolDataProvider: 提供 用户/池子 中相关的借贷信息
- PriceOracle: 价格预言机

### uniswapv2
### uniswapv2 合约
UniswapV2 的交互入口为 Router02,通过它可以完成和 UniswapV2 的所有交互


## 要点
首先,在部署合约的时候,会传入两个参数,AddressesProvider 和 Router 的地址,之后便可以通过调用合约接口,获取 AAVE 当前池子的状态信息。

## 功能要点
AaveApe 合约主要有四个功能,分别是
1)质押资产到 AAVE
2)从 AAVE 进行借贷
3) 到 Uniswap 进行资产置换
4)从 AAVE 进行闪电贷
通过组合这四个功能,可以实现自动做多,做空 以及 赎回 的操作。
### 做多
假设你有两种资产,其中一种资产 A 你想要做多,另一种资产 B 你想要做空。 Ape 合约通过如下操作,在一笔交易中便可以帮用户达到同时对两种资产做多和做空的目的。
- 根据用户当前在 AAVE 质押的资产 A 的价值,计算用户可借的最大数额的资产 B
Expand All @@ -29,22 +34,44 @@ UniswapV2 的交互入口为 Router02,通过它可以完成和 UniswapV2 的
- 把兑换出的资产 A 继续存入 AAVE


## unwindApe 介绍
### 赎回
通过 AAVE V2 的闪电贷偿还从 AAVE 借出的资产.
详细逻辑, 参考 [aave-ape](https://azfuller20.medium.com/aave-ape-with-%EF%B8%8F-scaffold-eth-c687874c079e )

## 操作步骤
- 配置环境变量
```shell
cp .env.example .env
# 配置其中的 ETHERSCAN_API_KEY, INFURA_ID,ALCHEMY_ID,PRIVATE_KEY, TARGET_ADDRESS
# ETHERSCAN_API_KEY 用于合约验证
# INFURA_ID 用于连接到各个以太网络
# ALCHEMY_ID 在使用 polygon 网路进行借贷的时候发现因为 Infura 网络延迟,造成交易失败的情况,所以这里使用 Alchemy 的网络进行验证
# PRIVATE_KEY 用于发送交易
# TARGET_ADDRESS: 目标用户 ,查询用户在 AAVE 上借贷所支付的所有利息
```

- 部署合约
```shell
// depoly aaveape
hardhat run --network matic scripts/deploy.js
hardhat run scripts/deploy.js --network
```

- 验证合约
```shell
// contract verify
npx hardhat verify --network matic 0xddb2d92d5a0EDcb03c013322c7BAe92734AA4597 "0xd05e3E715d945B59290df0ae8eF85c1BdB684744" "0x1b02da8cb0d097eb8d57a175b88c7d8b47997506"
```

- 进行借贷
```shell
// open maxposition on aave
hardhat run --network matic scripts/loan.js
hardhat run scripts/loan.js --network matic
```

- 查询用户支付利息总额
需要注意的是,应该在 matic 上,所有的可借贷币种的 APY 使用的都是浮动 APY,如果使用其他网络的话需要修改下代码中 “计算 interest” 部分传入 getDebtToken 接口的参数
```shell
hardhat run scripts/query.js --network matic
```


Expand Down

0 comments on commit 3b1cd2a

Please sign in to comment.