# 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)