Files
GL/README.md
T

58 lines
2.0 KiB
Markdown

# GL
Darano's independent, append-only general-ledger service. It preserves every
committed wallet value movement so financial state can be reconstructed when a
blockchain or provider is unavailable.
The implementation contract and invariants are defined in [DESIGN.md](DESIGN.md).
Generate protobufs, test, and build with:
```bash
make generate
make test
make build
```
Run the ledger API and dashboard as separate processes:
```bash
go run ./cmd/gl -conf ./gl.cfg.toml
go run ./cmd/dashboard -conf ./dashboard.cfg.toml
```
For live reload, install [Air](https://github.com/air-verse/air) and run `air`
from the repository root. The checked-in `.air.toml` rebuilds and restarts both
processes together.
The read-only network explorer is served on `http://localhost:8080` by default:
- `/` shows network totals and recent committed journals;
- `/assets` ranks the top positive user holders for recently active assets;
- `/holders` combines a user's available and frozen balance and activity for one asset;
- `/transactions` shows paginated recent transactions, filters them by user/wallet and effect type, and finds journals by exact blockchain transaction hash or internal journal ID;
- `/accounts` rebuilds a ledger account balance and activity history.
The gRPC service owns schema migrations. The dashboard is read-only, uses its
own `dashboard.cfg.toml`, and does not run migrations.
Run the dashboard load test against a started dashboard with:
```bash
make load-test LOADTEST_ARGS='-duration 30s -concurrency 50'
```
Use `-paths` to exercise known explorer records as well as the overview, for
example `-paths '/,/transactions?q=KNOWN_HASH,/accounts?class=USER_AVAILABLE&owner_type=user&owner_id=17&asset_id=9'`.
Run the fixed 10-person, 10,000,000-transfer GL conservation scenario with:
```bash
make gl-redistribution-load-test
Asset number: 7
```
It starts with one person holding 10,000, uses random transfer values while
protecting a minimum of 45 per person, and verifies that the final ten balances
still sum to exactly 10,000.