> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lfg.rich/llms.txt
> Use this file to discover all available pages before exploring further.

# 借贷

> 通过锁定官方 LFG.RICH 代币作为抵押品来借出 BNB。

LFG.RICH V5 为官方代币内置抵押借贷。用户可以锁定代币作为抵押品，并根据代币地板价借出原生 BNB。

借贷基于协议地板价，而不是短暂市场尖峰。没有清算引擎，也没有持续利息。

<CardGroup cols={2}>
  <Card title="基于地板价值" icon="shield-halved">
    借款额度根据协议地板价计算，而不是短期市场尖峰价格。
  </Card>

  <Card title="没有清算引擎" icon="lock">
    V5 借款不使用传统清算机制。
  </Card>

  <Card title="固定 3% 费用" icon="percent">
    借款有一次性 3% 费用，并根据推荐状态在平台和 direct parent/platform 之间拆分。
  </Card>

  <Card title="继续借款" icon="arrow-up-right-dots">
    如果地板价上升，现有抵押品可能可以通过 `borrowMore(poolId)` 借出更多。
  </Card>
</CardGroup>

## 关键特性

* 借款能力基于地板价价值。
* 借贷仓位存在期间，锁定抵押品会从流通供应中移除。
* 没有清算机制。
* 没有持续利息。
* 固定一次性 3% 借贷手续费会从借款价值中扣除。
* 部分还款会按比例解锁抵押品。
* 全额还款会解锁剩余抵押品。
* 借贷状态按 `poolId` 和用户保存。

## 借款流程

V5 借款流程：

<Steps>
  <Step title="解析代币 poolId">
    借款状态按 `poolId` 和用户存储。
  </Step>

  <Step title="授权 Hook">
    必须授权 Hook 转移抵押代币。
  </Step>

  <Step title="调用 hook.borrow(poolId, amount)">
    借款操作通过 Hook 执行，而不是 Swap Router。
  </Step>

  <Step title="Hook 锁定抵押品">
    代币进入抵押会计，并在锁定期间从流通供应中移除。
  </Step>

  <Step title="Hook 记录债务">
    债务按总借款价值记录。
  </Step>

  <Step title="用户收到净 BNB">
    借款人收到扣除固定 3% 借贷手续费后的 BNB。
  </Step>
</Steps>

函数：

```solidity theme={null}
function borrow(bytes32 poolId, uint256 amount);
```

用户必须授权 Hook，而不是 Swap Router：

```solidity theme={null}
approve(HOOK_ADDRESS, amount)
```

## 借贷手续费

V5 借贷手续费固定为借款毛额的 3%。

```txt theme={null}
借款毛额: 1.00 BNB
借贷手续费: 0.03 BNB
用户收到: 0.97 BNB
记录债务: 1.00 BNB
```

记录的债务是借款毛额，而不仅仅是用户收到的净额。

## 还款流程

用户通过向以下函数发送 BNB 还款：

```solidity theme={null}
function repay(bytes32 poolId) payable;
```

如果是部分还款，协议会按比例解锁抵押品。如果还款关闭债务，则解锁剩余全部抵押品。

如果用户发送的金额超过未偿债务，合约按债务金额处理还款并退回多余金额。

## Borrow more

如果借款仓位开启后地板价上升，用户现有抵押品可能支持额外借款。

开发者可以用以下函数估算：

```solidity theme={null}
function estimateBorrowMore(
    bytes32 poolId,
    address user
) view returns (uint256 additionalEth, uint256 fee);
```

当存在可借的额外价值时，调用：

```solidity theme={null}
function borrowMore(bytes32 poolId);
```

## 读取函数

```solidity theme={null}
function borrowedETH(bytes32 poolId, address user) view returns (uint256);
function collateralBalance(bytes32 poolId, address user) view returns (uint256);
```

在 BSC 上这些值代表 BNB，虽然 Solidity 名称中使用了 `ETH`。
