Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,6 @@ const { transaction, prediction } = await integration.predictFeeForTransaction({

### Configuration



## ML Training Pipeline

The ML training pipeline is configured as follows:
Expand All @@ -89,6 +87,7 @@ npm run ml:server
```

The training uses historical transaction data to train:

1. Isolation Forest for anomaly detection
2. TensorFlow.js classifier for pattern recognition
3. Fee-specific prediction models
Expand All @@ -108,6 +107,22 @@ npm run test:integration
npm run test -w src/lib/feePredictor.ts -w src/lib/feePredictionIntegration.ts
```

## Ledger Hardware Wallet Support

The dashboard supports Ledger signing in Chromium-based browsers through WebUSB/WebHID. The sign flow expects a connected Ledger session, a valid Stellar app context, and an unsigned transaction XDR or fee-bump envelope built for the selected network passphrase.

### Compatibility

- Supported: Chrome, Edge, and other Chromium browsers with WebUSB/WebHID enabled
- Required: Ledger device unlocked and "Stellar" app open
- Not supported: Firefox and Safari for native Ledger connection

### Security notes

- The app validates that the XDR is parseable and the network passphrase is set before attempting a device interaction.
- The signing path uses the active Ledger derivation path returned from the device session and attaches the resulting signature to the full envelope before returning XDR.
- Reject/recovery errors are surfaced in a user-friendly way instead of leaking raw Ledger transport details.

## Development

### Node.js support
Expand All @@ -126,6 +141,7 @@ matrix, and `scripts/node-version-policy.mjs` together.
### Adding New Prediction Models

Create a new model by:

1. Implementing `FeeModel` interface in `src/lib/feePredictor.ts`
2. Adding it to the `FeePredictor` class
3. Registering it in the model registry
Expand All @@ -140,6 +156,7 @@ Create a new model by:
### API Extensions

Add new endpoints by:

1. Creating new routes in `api/routes/transactions.js`
2. Implementing handlers in `src/lib/feePredictionIntegration.ts`
3. Updating TypeScript definitions in TypeScript types
Loading