---
# System prepended metadata

title: Untitled

---


# vertex：
## Vertex主要分为几个模块

### contract部分：

1. 1.endpoint：主要负责deposit和所有操作的trigger（包括但不限于：order-AMM ， order-order，oracle price更新，settlePNL清算）

https://arbiscan.io/address/0xbbee07b3e8121227afcfe1e2b82772246226128e

2. offchainBook： product总关，负责处理来自endpoint的交易相关操作，并路由到各个product和product对应的engine（spot，perp）当中

3. cleanHouse: 负责清算，账号头寸和健康度等信息的展示

4. perpEngine/spotEngine ：负责实现来自offchainBook 的 order-AMM ， order-order，settlePNL等的具体实现


### offchain部分：

一个vertex控制的链下系统来存储order数据，并进行order匹配，将匹配的order 通过对endpoint进行操作来实现订单的成单，以及其他一系列操作。（发送人的角色必须为sequencer，单一地址）



## 核心机制：

### 1）AMM + orderbook ：
在spot和perp引擎当中，都存在一个mintLP，和LPswap方法，前者为针对vertex模型进行流动池的创建，LPswap是根据用户的单子，来进行AMM机制的交易，注意⚠️：此AMM仅适用于vertex的模型当中，并不能接入现实如uniswap等创建的公共流动池。
在offchainBook合约当中，存在三种方法，第一种为     matchOrderAMM，第二种为 matchOrders，第三种为swapAMM，前两种可以通过sequencer对endpoint发起两次trigger 来进行多次组合，第三种是在orderbook宕机后，可以直接使用AMM pool中的资产来交互


### 2）交叉保证金
在cleanHouse存在对子账号下所有资产进行health评估的机制，当清算发生时，sequencer有权对用户的所有资产按照顺序进行清算处理，清算函数：1）正常平仓：settlePnl()     2）强制平仓：liquidateSubaccountImpl()

https://vertex-protocol.gitbook.io/docs/basics/liquidations-and-insurance-fund
https://vertex-protocol.gitbook.io/docs/basics/subaccounts-isolated-margin-and-health

### 3）order存在于链下，成单金额存在于链上
所有order在第一次链上matching之前，都只会存在链下，当第在链上进行matching的时候，合约除了会验证用户的签名，还会验证已经成单的金额数量，这样可以保证交易的有效性



## 几个问题：
1.用户的单子，我采取的是签名成单（为了看下需要签名的信息），成单后大概1分多钟才会在链上settlement（只测试了一次）

2.perp虽然也有AMM的代码，但是并不存在AMM pool的入口

3.貌似大量成交的单子是从elixir.finance的orderbook method pool中来的，但是不确定tvl多少

4.trigger的成本不低，一天在10-20个以太
https://dune.com/queries/3301082/5528048
![image](https://hackmd.io/_uploads/SyY2ms9Dp.png)
