基于 TypeScript 的区块链事件监听器,用于监控 BSC(币安智能链)上的 OrderRecord 事件并将其存储到 MySQL 数据库。
- 🔄 实时监控 BSC 上的
OrderRecord事件 - 💾 自动将事件数据存储到 MySQL 数据库
- 🔁 网络稳定性的自动重连和重试机制
- 📊 使用字符串表示处理大型 uint256 值
- 🛡️ 连接池和错误处理
- Node.js(v16 或更高版本)
- MySQL 数据库
- BSC RPC 节点(可选,默认使用公共节点)
- 克隆仓库:
git clone <repository-url>
cd order_record_mysql- 安装依赖:
npm install- 配置环境变量:
cp .env.example .env编辑 .env 文件,填入您的配置:
# MySQL 数据库连接
DB_HOST=localhost
DB_PORT=3306
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
# BSC RPC URL(可选,默认使用公共节点)
RPC_URL=https://bsc-dataseed.bnbchain.orgnpm startnpm run build
node dist/index.js格式化代码:
npm run format检查代码格式:
npm run format:check代码检查:
npm run lint自动修复代码问题:
npm run lint:fix应用程序会自动创建 order_records 表,表结构如下:
CREATE TABLE order_records (
id INT AUTO_INCREMENT PRIMARY KEY,
aggregator_name VARCHAR(255) NOT NULL,
from_token VARCHAR(255) NOT NULL,
to_token VARCHAR(255) NOT NULL,
sender VARCHAR(255) NOT NULL,
from_amount VARCHAR(255) NOT NULL,
return_amount VARCHAR(255) NOT NULL,
block_number BIGINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)应用程序监听以下签名的 OrderRecord 事件:
event OrderRecord(
address fromToken,
address toToken,
address sender,
uint256 fromAmount,
uint256 returnAmount
)- src/index.ts - 主应用程序入口和事件监听逻辑
- src/config.ts - 配置管理和环境变量验证
- src/database.ts - 数据库连接和操作
应用程序包含以下错误处理机制:
- 事件处理的自动重试机制(最多 3 次尝试)
- 连接错误恢复和自动重连
- 过滤器错误处理和重新订阅
- 数据库插入重试逻辑
- SIGINT/SIGTERM 信号的优雅关闭
ISC
- TypeScript
- Ethers.js
- MySQL
- 区块链
- BSC