mirror of
https://github.com/getAlby/lndhub.go.git
synced 2025-12-28 18:15:14 +01:00
436baeeccb28273f7ff19df43bfd91064dabf84d
First draft to subscribe for LND invoice update
LndHub.go
Wrapper for Lightning Network Daemon (lnd). It provides separate accounts with minimum trust for end users.
LndHub compatible API implemented in Go using relational database backends
- Using a relational database (PostgreSQL and SQLite)
- Focussing only on Lightning (no onchain functionality)
- No runtime dependencies (simple Go executable)
Status: WIP
Known Issues
- Currently no fee handling (users are currently not charged for lightning transaction fees)
Configuration
All required configuration is done with environment variables and a .env file can be used.
Check the .env_example for an example.
cp .env_example .env
vim .env # edit your config
Available configuration
DATABASE_URI: The URI for the database. If you want to use SQLite use for example:file:data.dbJWT_SECRET: We use JWT for access tokens. Configure your secret hereJWT_EXPIRY: How long the access tokens should be valid (in seconds)LND_ADDRESS: LND address (with port)LND_MACAROON_HEX: LND macaroonLND_CERT_HEX: LND certificateLOG_FILE_PATH: (optional) By default all logs are written to STDOUT. If you want to log to a file provide the log file path hereSENTRY_DSN: (optional) Sentry DSN for exception tracking
Developing
go run main.go
Building
To build an lndhub executable, run the following commands:
make
Database
LndHub.go supports PostgreSQL and SQLite as database backend. But SQLite does not support the same data consistency checks as PostgreSQL.
Ideas
- Using low level database constraints to prevent data inconsistencies
- Follow double-entry bookkeeping ideas (Every transaction is a debit of one account and a credit to another one)
- Support multiple database backends (PostgreSQL for production, SQLite for development and personal/friend setups)
Data model
┌─────────────┐
│ User │
└─────────────┘
│
┌─────────────────┬───────┴─────────┬─────────────────┐
▼ ▼ ▼ ▼
Accounts: ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Incoming │ │ Current │ │ Outgoing │ │ Fees │
Every user has └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
four accounts
Every Transaction Entry is associated to one debit account and one
credit account
┌────────────────────────┐
│Transaction Entry │
│ │
│+ user_id │
┌────────────┐ │+ invoice_id │
│ Invoice │────────────────▶+ debit_account_id │
└────────────┘ │+ credit_account_id │
│+ amount │
Invoice holds the │+ ... │
lightning related │ │
data └────────────────────────┘
Languages
Go
98%
CSS
1%
HTML
0.8%
Dockerfile
0.2%