itsVentie/BEAMpool
GitHub: itsVentie/BEAMpool
基于 Elixir/BEAM VM 构建的开源 Ethereum 预执行安全引擎,在交易被打包前实时检测 DeFi 攻击和 MEV 异常。
Stars: 0 | Forks: 0
# BEAMpool
`BEAMpool` 是一个开源的预执行安全引擎,旨在跨多个 Ethereum/EVM 节点实时监控原始交易流。通过利用 Elixir 的 actor 模型和 Supervision Trees,它可以在未确认交易(`pending`)被打包进区块之前,检查其是否存在 DeFi 漏洞利用、Flash Loan 攻击和 MEV 异常。
## 核心功能
* **容错摄取:** 为每个 RPC WebSocket 连接生成独立的 OTP 进程——如果某个节点连接断开或阻塞,只有该子进程会重启。
* **无锁去重:** 使用 Erlang Term Storage (`ETS`) 进行快速内存级交易去重。
* **Calldata 和 ABI 检查:** 实时解析原始交易输入,检测大额贷款借款、多调用代理和重入执行模式。
* **低延迟:** 专为每秒处理数千个 JSON-RPC 事件而设计,且占用极少的 RAM/CPU。
## 技术栈
* **语言:** Elixir (BEAM VM)
* **并发模型:** OTP / GenServer / Supervision Trees
* **内存存储:** ETS (Erlang Term Storage)
* **解码器(可选):** 通过 Rustler (NIFs) 调用 Rust,进行高性能的 RLP/ABI 解析
## 路线图
### 阶段 1:核心引擎和摄取 (MVP)
- [x] **OTP Application 设置:** 使用 Supervision Trees 初始化 Elixir 项目。
- [x] **高弹性 WebSocket 摄取:** 使用 Erlang 原生的 `:gun` 库连接到 EVM WSS 节点,以实现最大的兼容性和容错能力。
- [x] **Pending Mempool 流:** 通过 WebSocket 上的 JSON-RPC 实时订阅 `newPendingTransactions`。
- [x] **基础 Supervision 和自动愈合:** 连接丢失时自动重启进程,而不会导致整个应用崩溃。
### 阶段 2:内存存储和处理流水线
- [ ] **无锁去重 (`ETS`):** 实现 Erlang Term Storage 表,以近乎零延迟过滤跨多个节点流的重复 TX 哈希。
- [ ] **异步 Worker Pool (`Task.Supervisor`):** 生成并发、隔离的进程,通过 `eth_getTransactionByHash` 获取完整的交易详情。
- [ ] **多节点池化:** 支持同时连接多个 RPC 提供商(Alchemy、Infura、QuickNode、本地 Geth/Reth),以实现最大的覆盖范围。
### 阶段 3:Calldata 解码和威胁检查
- [ ] **ABI 和 Calldata 解析:** 从原始 calldata 中提取函数选择器 (`bytes4`)、地址和输入参数。
- [ ] **DeFi 模式检测:** 识别大额 Flash Loan 借款、Sandwich 攻击以及可疑的 DEX 交易(Uniswap V2/V3、Curve、Balancer)。
- [ ] **通过 NIFs (`Rustler`) 集成 Rust:** 将繁重的 RLP 编码/解码和 ABI 解析工作交给 Rust 处理,以实现亚毫秒级的执行速度。
### 阶段 4:告警、分析和生产就绪
- [ ] **实时事件流:** 通过 WebSocket 或 Webhooks(Discord、Telegram、Slack)广播被标记的威胁交易。
- [ ] **指标和监控:** 将 PromEx / Telemetry 指标导出到 Prometheus 和 Grafana 仪表板,进行吞吐量分析。
- [ ] **容器化:** 设置 Docker 和 Docker Compose,实现一键快速部署。
## 快速开始
### 前置条件
* Elixir 1.15+ / Erlang 26+
* 一个活跃的 WSS Ethereum 节点终端(Alchemy、Infura 或本地 Geth/Reth)
### 安装说明
1. **克隆仓库:**
git clone [https://github.com/itsVentie/beampool.git](https://github.com/itsVentie/beampool.git)
cd beampool
```
2. **Install dependencies:**
```bash
mix deps.get
```
3. **配置环境:**
创建一个 `.env` 文件或设置您的节点终端:
```
export ETH_WSS_URL="wss://ethereum-rpc.publicnode.com"
```
4. **在交互模式下运行:**
```
iex -S mix
```
## 许可证
基于 MIT 许可证分发。
标签:DeFi, Elixir, MEV, 交易监控, 以太坊, 区块链安全, 可视化界面, 智能合约审计, 请求拦截