# DeFi
- 去中心化金融(Decentralized finance,DeFi)
- :泛指基于区块链技术实现去中心化的金融系统,比如 DEX、Lending 。
- 与中心化金融(CeFi)相比,DeFi 的优势:
- 由代码自动控制交易过程,速度很快、成本很低。
- 交易过程在区块链上公开透明。
- 没有身份审查,没有资产门槛,可供世界各地的人使用。
# CEX
中心化交易所(CEX)
- :传统的数字货币交易所,是模仿股票交易所运行的。用户需要将数字货币转账到交易所的区块链账户,用交易所的网站进行交易,然后提现到用户的区块链账户。
- 缺点:
- 安全性较低。交易所可能卷款跑路,导致不能提现。交易所也可能被黑客攻击。
- 不能匿名交易。政府会强制交易所做 KYC 审查,要求用户提供详细的个人信息。
去中心化交易所(DEX)
- :基于智能合约,实现区块链账户之间的点对点交易。
- 优点:
- 很安全。用户用个人钱包即可参与交易,不需要将数字货币交给第三方机构托管。
- 匿名交易。
- 缺点:
- 使用门槛较高。需要用户学习使用个人钱包、理解 DEX 原理。
- 交易费比 CEX 高一些。比如在 Uniswap 每次交易需要付出 0.3% 的交易费,加上发起 ETH 交易的 gas 费(约几美元)。而 CEX 交易所只需付出 0.1% 的交易费,在交易所内部交易、不通过区块链证明交易,因此不需要付 gas 费。
- 功能比 CEX 少很多。比如支持交易的数字货币种类少、不能兑换法定货币。
- 交易量比 CEX 低一个数量级,因此市场流动性较差,做大额交易时可能等不到对手盘。
-
- :一个 DEX 交易所,于 2018 年创立。在 2020 年成为了交易量最大的 DEX 交易所,日均交易量为 2 亿美元。
- Uniswap 发行了一种名为 UNI 的 ERC20 代币,持有 UNI 的用户可参与社区治理,对 Uniswap 的改进提案进行投票。
- Uniswap 存在多个版本。部署智能合约之后不能修改代码,因此新旧版本同时运行,基于区块链 24 小时提供服务。
- v1
- 于 2018 年发布。
- 为每种 ERC20 代币创建了一个与 ETH 兑换的智能合约,允许用户在 ETH 与 ERC20 代币之间直接兑换(swap)。
- ERC20 代币之间要通过 ETH 间接兑换。先将一种 ERC20 代币兑换成 ETH ,然后从 ETH 兑换成其它 ERC20 代币,需要两次兑换。
- v2
- 于 2020 年发布。
- 支持在 ERC20 代币之间直接兑换,不必先兑换成 ETH 。但用户发起交易时,依然要用 ETH 支付 gas 费。
- v3
- 于 2021 年发布。
- 允许用户仅在指定的价格范围内提供流动性,使得流动性更集中。
- v1
-
- :一个 DEX 交易所,于 2020 年创立。
- 提供了 DEX 聚合器:在用户交易某种代币时,能监测多个 DEX 交易所的报价,自动将交易拆分成多个子交易,然后在不同 DEX 交易所进行,使得最终的成交价最优、滑点最小。
# 做市商
做市商(Market Maker)
- :证券市场上一些有资质的机构,有能力按稳定的价格大量买卖某种资产。
- 做市商在卖资产时的报价,通常比买资产的报价略高,从而盈利。
- 散户以普通方式买某种资产时,需要有另一个散户愿意卖这种资产,称为对手盘。如果长时间没有等到足够交易额的对手盘,则称市场的流动性差。
- 散户可用比市场均价略高的价格买入,获得更多对手盘,但这会导致市场均价上升。
- 有了做市商,散户可以快速跟它达成交易,增加市场的流动性,减少市场价格的波动。
自动做市商(Automated Market Maker,AMM)
- :基于智能合约,实现自动交易的做市商。
- 例如对于 ETH、USDT 两种代币的交易对,AMM 会分别持有一定数量的两种代币,报价说两种代币的兑换率为多少。
- 用户可以发送一些 ETH 到 AMM 智能合约,请求兑换为 USDT 。同理,可以将 USDT 兑换为 ETH 。
- Uniswap 的 API 示例:
swapExactInputSingle() // 发送一些代币 A 到 AMM ,请求将固定数量的代币 A 交换为尽量大数量的代币 B swapExactOutputSingle() // 发送一些代币 A 到 AMM ,请求将尽量小数量的代币 A 交换为固定数量的代币 B
- 用户下单时可以设置预期成交价、滑点范围、超时时间等条件。不满足条件时不会同意交易,超时之后会取消该挂单。
- 取消挂单时,用户发送到 AMM 智能合约的代币会被退回。但用户依然损失了 gas 费,因为要广播一个交易来调用智能合约。
滑点(slippage)
- :用户下单时的预期成交价,与实际成交价的差额。
- 市场流动性越差,滑点越大。
- 假设用户在 AMM 创建一个卖单,将 1 ETH 兑换为 USDT ,预期售价是 1000 USDT 。
- 如果用户声明声明最多接受 1% 的滑点,则实际成交价最低为 999 USDT 。
- 如果市场流动性太差,在 1% 滑点范围内没有足够的对手盘,则用户一直不能交易成功。
# 流动性挖矿
- 流动性挖矿(liquidity mining):用户可以发送一些代币存入 AMM 的资金池(又称为流动性池),供 AMM 用于市场交易,并可以随时提现。此时用户称为流动性提供者(Liquidity Provider,LP)。
- 优点:
- 给用户提供低比例、低风险的收益。例如 Uniswap 的 AMM 会收取 0.3% 的交易费,按比例分配给所有流动性提供者。
- 增加 AMM 的资金池,支持更大的交易额,从而增加市场的流动性。
# 做市公式
- 做市公式(market maker formula):AMM 用于确定两种代币的兑换率的公式。
- 假设 AMM 流动性池中,ETH、USDT 的数量分别为 eth_pool、usdt_pool ,最简单的一种做市公式是
eth_pool * usdt_pool = k
,其中 k 为常数。- 当用户请求用 ETH 兑换 USDT 时,AMM 会报价
eth_price = usdt_pool / eth_pool
,即 1 ETH 能兑换多少 USDT 。 - 当用户成功用 ETH 兑换 USDT 时,AMM 持有的 eth_pool 变大、usdt_pool 变小,因此 eth_price 变小,用户会降低卖出 ETH 的意愿。
- 当 AMM 报价的 eth_price ,比其它交易所的报价明显更高时,一些用户会通过机器人自动交易,从其它交易所购买 ETH ,再找 AMM 兑换成 USDT 。最终机器人赚取了差价,AMM 的报价也恢复到各交易所的平均水平。
- 当用户请求用 ETH 兑换 USDT 时,AMM 会报价
- Uniswap 要求流动性提供者存入两种代币的数量必须符合做市公式的 k ,即两边价值相等。
- 结合上述两个公式,可以得到任意 eth_price 时的流动性池大小:
eth_pool = sqrt(k / eth_price) usdt_pool = sqrt(k * eth_price)
# 无常损失
- 无常损失(impermanent loss):当用户开始流动性挖矿之后,无论 eth_price 增加、减少,用户能提现的资产都会比原来少一些,这是因为做市公式导致流动性池的倾斜。只要 eth_price 恢复到刚开始的值,用户的资产就会完全复原。
- 计算公式:
price_ratio = new_price / old_price impermanent_loss = 2 * sqrt(price_ratio) / (1 + price_ratio) — 1
- 假设在 ETH 单价为 1000 USDT 时,用户存入 1 ETH 和等值的 1000 USDT 进行流动性挖矿,占此时 AMM 流动性池的 1% 。
- 当 ETH 单价为 1100 USDT 时,用户按投资比例从 AMM 流动性池提现,能得到 sqrt(1000/1100)≈10.95 ETH 和 sqrt(1000*1100)≈1048 USDT ,总价值为 2096 USDT 。如果用户没有流动性挖矿,则此时资产价值为 2100 USDT 。
- 当 eth_price 变为原来的 125% 或 20% 时,无常损失为 0.6% 。
- 当 eth_price 变为原来的 200% 或 50% 时,无常损失为 5.7% 。
- 当 eth_price 变为原来的 500% 或 20% 时,无常损失为 25% 。
- 缺点:当市场价格大变时,无常损失可能大于流动性挖矿的交易费收益。
- 优点:无常损失比用户单一持仓造成的损失小很多,是一种降低投资风险的方案。
- 比如用户担心 eth_price 大跌,又不舍得将 ETH 全部兑换成 USDT ,于是开始流动性挖矿。如果 eth_price 变为原来的 50% ,则用户提现之后只损失 5.7% 。
# 借贷
- 借贷协议(Lending protocols):基于智能合约,实现去中心化借贷。
- 主要提供两种服务:
- 借贷:支持用户交押金,换得贷款,从而进行杠杆交易。
- 流动性收益:支持用户存入一些代币,定期获得利息,像银行存款。
# 杠杆交易
- 杠杆交易(leverage):泛指通过借贷,将资金放大几倍,然后用于市场交易。
- 假设在 ETH 单价为 1000 USDT 时,某用户用 1 ETH 作为押金交给借贷机构,贷款得到 500 USDT ,然后用 500 USDT 在市场交易得到 0.5 ETH ,这样用户间接持有 1.5 ETH 。
- 如果 ETH 价格上涨 10% ,则用户用 0.5 ETH 交易得到 550 USDT ,用 500 USDT 偿还贷款、拿回押金之后,持有 1 ETH 和 50 USDT ,因此净赚 50 USDT 。
- 如果 ETH 价格下跌 10% ,则用户用 0.5 ETH 交易得到 450 USDT ,要倒贴 50 USDT 才能偿还贷款。
- 借贷机构为了盈利,会在贷款给用户时收取几个百分点的手续费。
- 强制平仓:借贷机构为了避免亏损,会在 ETH 价格跌幅达到一定阈值时(比如 45% ),没收用户的押金并交易成 USDT ,避免资不抵债。
- 爆仓:强制平仓时,用户损失了全部押金。有的机构会在市场下跌时,提醒用户增加押金,以免爆仓。
- 穿仓:机构没有及时在底价之上强制平仓,因此用户的押金资不抵债,导致机构亏损。
- 数字货币市场本来就容易价格波动,加杠杆会更容易导致用户爆仓,甚至机构穿仓。比如当 ETH 价格下跌时,一些抵押 ETH 的杠杆用户爆仓,机构会自动卖出他们抵押的 ETH ,导致 ETH 价格继续下跌,继而更多人爆仓,造成恶性循环。
- 用户可以找多个借贷机构,依次多次抵押、贷款,将资产放大 n 倍。当市场价格变化时,收益、亏损也放大了 n 倍。
- 有的借贷机构允许 1:10、1:20、1:100 等本金贷款比率,用户可一次加 n 倍杠杆。
- 头寸(Position):用户持有的资产量,包括现金、证券、商品等。又称为持仓。
- 敞口(exposure):用户在交易中可能损失的资产量。
- 无杠杆时,即使 ETH 价格跌了 99% ,用户也还剩 1% 的本金。
- n 倍杠杆时,ETH 跌幅接近 100% / n ,用户就会爆仓,损失全部本金。
# 稳定币
BTC、ETH 等大部分类型的数字货币不与实物挂钩,兑换法币的价格经常变化。而有的数字货币与美元等法币保持稳定的兑换率,称为稳定币(Stablecoin)。
- 使用稳定币,用户可以享受区块链跨国交易的便利,不用担心币价变化,还可以随时兑换成法币。因此目前稳定币的每日交易额(以美元为单位),比 BTC、ETH 还大。
2014 年,Tether 公司发行了 USDT 币,是最早的稳定币,承诺与美元 1:1 兑换。
- Tether 公司在多个公链发行了 USDT 币,比如在以太坊上发行了一个名为 USDT 的 ERC20 代币。
- 用户可以在交易所用 USDT 与其它数字货币交易,或者找 Tether 公司将 USDT 兑换为美元。
- Tether 公司宣称每铸造一个 USDT 币,都会储备等值的美元、债券等资产。但没有公开实际资产,而且储备不全是美元现金,因此可信度低。
2018 年,Circle 公司和 Coinbase 交易所联合成立了 CENTER 组织,发行了 USDC 币,承诺与美元 1:1 兑换。
- CENTER 组织铸造 USDC 币时,会在银行存入等值的美元现金并定期公开审查,因此比 Tether 更可信。
2017 年,MakerDAO 通过以太坊智能合约发行了一个名为 DAI 的 ERC20 币,在价值上 1:1 跟踪美元。
- USDT、USDC 是由中心化机构控制的稳定币,可能受政府要求而冻结某个账户的资金。而 Dai 是第一个去中心化稳定币,由算法控制。
- MakerDAO 是一个去中心化自治组织(Decentralized Autonomous Organization,DAO),发行了一个名为 MKR 的 ERC20 代币。持有 MKR 代币的用户可参与社区治理,对 MakerDAO 的改进提案进行投票。
- MakerDAO 以借贷协议的方式发行 DAI 。
- 用户可以将 ETH、WBTC 等代币存入 DAI 的智能合约,作为押金。然后有权铸造一定数量的 DAI 币,转账给用户使用,作为贷款。
- 例如抵押 ETH 时,抵押率至少为 150% 。表示每铸造 1 美元的 DAI ,至少要抵押 1.50 美元的 ETH 。
- 如果抵押率低于 150% ,用户的押金将被清算以偿还贷款。鉴于数字货币的价格经常波动,很多用户会保持 300% 以上的抵押率,以避免清算。
- 当用户将 DAI 还给智能合约以结束借贷时,会扣掉少量利息,然后解锁押金、销毁 DAI 。
- 用户可以将 ETH、WBTC 等代币存入 DAI 的智能合约,作为押金。然后有权铸造一定数量的 DAI 币,转账给用户使用,作为贷款。