---
# System prepended metadata

title: Elixir

---

# Elixir
Elixir利用了hummingbot的 Avellaneda & Stoikov算法，通过统一账户带管理用户的资金在vertext当中提供order feeding的做市方式，并通过收益以及协议代币分红的方式给予用户奖励。

仓库：https://github.com/ElixirProtocol/vertex-contracts?utm_source=immunefi

## 组件：
### 链上：
1.  [Vertex Manager](https://arbiscan.io/address/0x052ab3fd33cadf9d9f227254252da3f996431f75)
负责接收用户的deposit信号，并将序号加入到队列当中
2.  [VertexRouter](https://arbiscan.io/address/0xee7dfbe0ce3ad8044eb36c38bdb59f56e0f86088#code)
将收到的token发送到vertex endpoint合约当中，执行真正的deposit操作
3.  [Executor](https://arbiscan.io/address/0xd7cb7f791bb97a1a8b5afc3aec5fbd0bec4536a5)
负责将Vertex Manager队列中的事物从队列中拿出来执行，比如，将用户的token转移到VertexRouter中，并根据VertexRouter将token转移到对应的vertexpool当中（真正的deposit操作）

4. [vertex endpoint](https://arbiscan.io/address/0xbbee07b3e8121227afcfe1e2b82772246226128e#writeProxyContract)
vertex负责接收deposit/withdraw等操作的合约，vertex将所有用户的资金用一个账户统一在vertex中进行管理

### 链下：通过hummingbot和vertex链下order system进行交互，不断的进行price feeding

**存在的问题：**

1.再进行用户撤出获取收益的时候，response传入参数产生方式不明，涉及到APY的计算验证

    function processSpot(Spot calldata spot, bytes memory response) public {
        if (msg.sender != address(this)) revert NotSelf();
            // Process spot. Skips if fail or revert.
            try this.processSpot(spot, response) {} catch {}
        }
        
        
2.应该对hummingbot进行魔改了，但是放在github上的只是一个老旧的开源版本