miscellaneous files
This commit is contained in:
parent
3c26a15ffe
commit
2f0cc901eb
6 changed files with 1448 additions and 0 deletions
95
misc-aio/LNBITS_CONFIG_CLARIFICATION.md
Normal file
95
misc-aio/LNBITS_CONFIG_CLARIFICATION.md
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
# LNBits Configuration Clarification
|
||||
|
||||
## Key Finding: walletId is NOT Required
|
||||
|
||||
After reviewing the LNBits codebase, we can confirm that **walletId is not necessary** for the Lamassu-LNBits integration because **the adminKey is already wallet-specific**.
|
||||
|
||||
## Evidence from LNBits Source Code
|
||||
|
||||
### 1. Wallet Model Structure
|
||||
```python
|
||||
# packages/lnbits/lnbits/core/models/wallets.py
|
||||
class Wallet(BaseModel):
|
||||
id: str
|
||||
user: str
|
||||
name: str
|
||||
adminkey: str # Each wallet has unique adminkey
|
||||
inkey: str # Each wallet has unique inkey
|
||||
```
|
||||
|
||||
### 2. Key-to-Wallet Lookup
|
||||
```sql
|
||||
-- packages/lnbits/lnbits/core/crud/wallets.py:194
|
||||
SELECT *, COALESCE((
|
||||
SELECT balance FROM balances WHERE wallet_id = wallets.id
|
||||
), 0)
|
||||
AS balance_msat FROM wallets
|
||||
WHERE (adminkey = :key OR inkey = :key) AND deleted = false
|
||||
```
|
||||
|
||||
**Key Point**: LNBits looks up wallets directly by the adminkey/inkey - no walletId parameter needed.
|
||||
|
||||
### 3. Authentication Flow
|
||||
```python
|
||||
# packages/lnbits/lnbits/decorators.py:94
|
||||
wallet = await get_wallet_for_key(key_value)
|
||||
```
|
||||
|
||||
The authentication system uses only the key to identify and authorize access to the specific wallet.
|
||||
|
||||
### 4. Unique Key Generation
|
||||
```python
|
||||
# packages/lnbits/lnbits/core/crud/wallets.py:24-25
|
||||
adminkey=uuid4().hex, # Unique UUID for each wallet
|
||||
inkey=uuid4().hex, # Unique UUID for each wallet
|
||||
```
|
||||
|
||||
Each wallet gets unique keys generated as UUIDs, ensuring 1:1 key-to-wallet relationship.
|
||||
|
||||
## Impact on Lamassu Integration
|
||||
|
||||
### Simplified Configuration
|
||||
|
||||
**Before (Incorrect Assumption)**:
|
||||
```javascript
|
||||
const config = {
|
||||
endpoint: 'https://lnbits.example.com',
|
||||
adminKey: 'abc123...',
|
||||
walletId: 'wallet_xyz' // ❌ Not needed!
|
||||
}
|
||||
```
|
||||
|
||||
**After (Correct Implementation)**:
|
||||
```javascript
|
||||
const config = {
|
||||
endpoint: 'https://lnbits.example.com',
|
||||
adminKey: 'abc123...' // ✅ Admin key identifies wallet
|
||||
}
|
||||
```
|
||||
|
||||
### API Calls Simplified
|
||||
|
||||
All LNBits API calls use the adminKey in the `X-API-KEY` header, which automatically identifies the target wallet:
|
||||
|
||||
```javascript
|
||||
// Create invoice - no walletId needed
|
||||
POST /api/v1/payments
|
||||
Headers: { 'X-API-KEY': 'abc123...' }
|
||||
Body: { "out": false, "amount": 1000, "memo": "Purchase" }
|
||||
|
||||
// Check balance - no walletId needed
|
||||
GET /api/v1/wallet
|
||||
Headers: { 'X-API-KEY': 'abc123...' }
|
||||
```
|
||||
|
||||
## Updated Migration Benefits
|
||||
|
||||
1. **Fewer Configuration Parameters** - Reduces setup complexity
|
||||
2. **Eliminates Mismatch Errors** - No risk of wrong walletId/adminKey pairs
|
||||
3. **Consistent with LNBits Design** - Follows intended architecture
|
||||
4. **Simpler Admin UI** - Fewer fields in configuration forms
|
||||
5. **Reduced Validation Logic** - Less error-prone configuration
|
||||
|
||||
## Conclusion
|
||||
|
||||
The walletId parameter should be **removed from the LNBits integration plan**. The adminKey serves as both authentication credential and wallet identifier, following LNBits' design principle of wallet-specific API keys.
|
||||
Loading…
Add table
Add a link
Reference in a new issue