feat: initial Netts energy orchestrator

This commit is contained in:
你的用户名
2025-11-03 19:26:48 +08:00
commit 891c32e288
25 changed files with 2210 additions and 0 deletions

92
README.md Normal file
View File

@@ -0,0 +1,92 @@
# Netts Energy Orchestrator
Netts Energy Orchestrator 是一个使用 Go 实现的独立服务,用于为自动到账系统中的 TRON 地址自动租赁能量。它集成了 [Netts API v2](https://doc.netts.io/api/v2/),支持地址自动加入 Host Mode、轮询剩余能量周期并按需购买能量租赁周期从而显著降低 TRC20 归集的手续费。
## 功能亮点
-**Netts API 集成**:封装 `usdt/analyze``time/add``time/status``time/order` 等核心接口。
- 🔁 **自动周期管理**:当剩余周期低于阈值时自动补充,可选自动 Host Mode 注册。
- 🧩 **独立微服务**:提供 REST API (`POST /api/v1/energy/rent`),便于与现有到账平台对接。
- ⚙️ **可配置化**:通过 `config.yaml` 或环境变量管理 API Key、阈值、重试策略等。
- 📈 **可观察性**:结构化日志、健康检查接口,易于纳入现有监控体系。
## 快速开始
1. 复制配置模板:
```bash
cp config.example.yaml config.yaml
```
2. 编辑 `config.yaml`,填入 Netts API Key、白名单 IP、Host Mode 回调地址等;或通过环境变量覆盖:
```bash
export NETTS_API_KEY=your-key
export NETTS_REAL_IP=1.2.3.4
```
3. 运行服务:
```bash
go run ./cmd/server -config config.yaml
```
4. 调用接口租赁能量:
```bash
curl -X POST http://localhost:8080/api/v1/energy/rent \
-H "Content-Type: application/json" \
-d '{
"from_address": "Txxx",
"to_address": "Tyyy",
"amount": "200.0"
}'
```
返回值包含分析结果、是否新增 Host Mode、下单详情以及最新剩余周期。
## 配置说明
参见 `config.example.yaml`,主要段落如下:
- `server`HTTP 服务监听地址、超时等。
- `netts`Netts API 参数(`apiKey` 可通过 `NETTS_API_KEY` 覆盖)。
- `energy`
- `autoAddHost`:是否自动调用 `time/add` 把地址加入 Host Mode。
- `minCycles` / `targetCycles`:低于最小阈值时补足到目标阈值。
- `postOrderWait`:下单后等待能量生效的时间。
- `logging`日志级别与输出格式text/json
更多环境变量详见 `internal/config/config.go` 中的 `envPrefix` 定义。
## REST API
`POST /api/v1/energy/rent`
```json
{
"from_address": "源地址(监控地址)",
"to_address": "归集地址",
"amount": "USDT 数量,可选,默认 100",
"callback_url": "可选,覆盖 config 默认回调"
}
```
响应字段包括推荐能量、下单情况、当前 Host Mode 状态等,详细 schema 请见 `docs/api.md`。
## 测试与质量
```bash
go test ./...
golangci-lint run # 若本地已安装,可执行静态检查
```
CI 流程(`.github/workflows/ci.yaml`)会执行 `go fmt`, `go vet`, `go test`。
## 与自动到账系统的集成
- 对接点:在归集服务中,当检测到能量不足(或计划归集)时调用本服务接口即可。
- 配置建议:将主系统的数据库中保存的地址同步到 Netts Host Mode或在首次归集前调用 `rent` 接口,由服务自动注册/购买能量。
- 监控:可通过 `/healthz` 结合现有 Prometheus/Consul 健康检查;同时建议订阅 Netts 提供的 webhook 以获知能量下发事件。
更多架构细节、部署流程以及 CI/CD 建议请参阅 `docs/architecture.md` 与 `docs/deployment.md`。