docs: update knowledge base to match current codebase
- Fix framework references (actix-web, not hyper) - Update all env var names (BAL_SERVER_*/BAL_PUSHER_* prefix) - Add validation.rs module documentation - Fix function signatures in xpub.rs and db.rs - Update API response formats (InfoResponse, StatsResponse) - Fix database schema (date_creation/date_update, push_err, tbl_stats) - Mark fixed vulnerabilities with current status - Add Docker support and actix tuning documentation - Remove outdated references (confy, bal-stats.rs.dontcompile) - Add regression test summary table
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
## Vision and Scope
|
||||
|
||||
`bal_server` is a Rust-based Bitcoin transaction executor server. It receives raw Bitcoin transactions via HTTP, validates them, persists them in a local SQLite database, and coordinates their broadcast on-chain after a locktime condition expires. The system supports multiple Bitcoin networks (mainnet, testnet, regtest, testnet4, signet) and tracks extended public keys (xpub) for fee collection.
|
||||
`bal_server` is a Rust-based Bitcoin transaction executor server (v0.3.2, edition 2024). It receives raw Bitcoin transactions via HTTP, validates them, persists them in a local SQLite database, and coordinates their broadcast on-chain after a locktime condition expires. The system supports multiple Bitcoin networks (mainnet, testnet, regtest, testnet4, signet) and tracks extended public keys (xpub) for fee collection.
|
||||
|
||||
### Key Goals
|
||||
1. **Receive and validate** raw Bitcoin transactions with locktime.
|
||||
@@ -17,18 +17,34 @@
|
||||
|
||||
## System Components
|
||||
|
||||
The project consists of three primary binaries and two shared libraries:
|
||||
The project consists of two binaries and one shared library:
|
||||
|
||||
1. **`bal-server`**: Async HTTP server (hyper + tokio) that exposes the API for receiving transactions and serving statistics.
|
||||
2. **`bal-pusher`**: Async daemon that listens for `hashblock` ZMQ messages and pushes pending transactions to a Bitcoin node via RPC.
|
||||
4. **`lib.rs`**: Exports the shared modules `db` and `xpub`.
|
||||
5. **`db.rs`**: All database operations and schema creation for SQLite `0.34.0`.
|
||||
6. **`xpub.rs`**: Address derivation from xpub/zpub using BIP-84 and the `bitcoin` crate.
|
||||
1. **`bal-server`**: Async HTTP server (**actix-web 4.9.0** + actix-rt) that exposes the API for receiving transactions and serving statistics. Includes rate limiting via `actix-governor`.
|
||||
2. **`bal-pusher`**: Async daemon (tokio) that listens for `hashblock` ZMQ messages and pushes pending transactions to a Bitcoin node via RPC.
|
||||
3. **`lib.rs`**: Exports the shared modules `db`, `xpub`, and `validation`.
|
||||
|
||||
### Library Modules
|
||||
4. **`db.rs`**: All database operations, schema creation, path validation, and WAL mode for SQLite `0.34.0`.
|
||||
5. **`xpub.rs`**: Address derivation from xpub/zpub/ypub using BIP-84 and the `bitcoin` crate.
|
||||
6. **`validation.rs`**: SSRF protection for the `welist` URL, blocking private/internal IP ranges.
|
||||
|
||||
## Feature Flags
|
||||
|
||||
The project uses Cargo feature flags to build each binary independently:
|
||||
|
||||
| Feature | Dependencies | Binary |
|
||||
|---------|-------------|--------|
|
||||
| `server` (default) | `actix-web`, `actix-governor`, `actix-rt`, `chrono`, `hex-conservative` | `bal-server` |
|
||||
| `pusher` (default) | `zmq`, `reqwest`, `byteorder`, `base64`, `ed25519-dalek` | `bal-pusher` |
|
||||
|
||||
## Docker Support
|
||||
|
||||
The project includes a multi-stage `Dockerfile` using `rust:1.95-bookworm` as the builder and `debian:bookworm-slim` as the runtime. The container runs as a non-root `bal` user (uid 1000) with `tini` as PID 1 and includes a healthcheck endpoint.
|
||||
|
||||
## Mapping to Existing Documentation
|
||||
|
||||
| Existing File | Subject | Covered in this KB |
|
||||
|---------------|---------|-------------------|
|
||||
| `README.md` | Installation, environment variables, ZMQ dependency | [`07_deployment_and_ops.md`](07_deployment_and_ops.md) |
|
||||
| `RPC.md` | API endpoint specification | `05_api_reference.md` | [`05_api_reference.md`](05_api_reference.md) |
|
||||
| `AGENTS.md` | Security guidelines for agents | `08_security_audit.md` | [`08_security_audit.md`](08_security_audit.md) |
|
||||
| `README.md` | Installation, environment variables, ZMQ dependency, Docker | [`07_deployment_and_ops.md`](07_deployment_and_ops.md) |
|
||||
| `RPC.md` | API endpoint specification | [`05_api_reference.md`](05_api_reference.md) |
|
||||
| `AGENTS.md` | Security guidelines for agents | [`08_security_audit.md`](08_security_audit.md) |
|
||||
|
||||
Reference in New Issue
Block a user