0.5.1-pre.006
This commit is contained in:
132
config/README.md
132
config/README.md
@@ -1,86 +1,110 @@
|
||||
<!-- file: config/README.md -->
|
||||
<!-- version: 20 -->
|
||||
<!-- version: 21 -->
|
||||
|
||||
# Configuration locale
|
||||
|
||||
Ce dossier contient les deux documents de configuration runtime, leurs exemples et leurs schémas JSON indépendants.
|
||||
Ce dossier contient les compositions propres aux binaires, les documents de configuration partagés, leurs exemples et les schémas JSON actifs.
|
||||
|
||||
## Fichiers chargés par défaut
|
||||
## Principe de composition
|
||||
|
||||
- `app.config.json` : configuration générale Khadhroony Solana ;
|
||||
- `logging.config.json` : configuration logging/tracing ;
|
||||
- `schemas/app.config.schema.json` : schéma du document général ;
|
||||
- `schemas/logging.config.schema.json` : schéma du document logging.
|
||||
Un binaire ne possède pas une copie complète de toutes les configurations partagées. Il charge un fichier de composition `<binary>.default.config.json` qui référence les documents spécialisés et sélectionne explicitement un profil dans chacun.
|
||||
|
||||
Les chemins par défaut peuvent être remplacés indépendamment par :
|
||||
Le desktop utilise par défaut :
|
||||
|
||||
```text
|
||||
KS_CONFIG_PATH
|
||||
KS_LOGGING_CONFIG_PATH
|
||||
config/kb-app-demo-desktop.default.config.json
|
||||
```
|
||||
|
||||
## Exemples conformes
|
||||
|
||||
- `example.app.config.json` : exemple général minimal conforme ;
|
||||
- `example.logging.config.json` : exemple logging minimal conforme.
|
||||
|
||||
Les exemples servent de référence de structure. Ils ne sont pas sélectionnés automatiquement au démarrage.
|
||||
|
||||
## Sélection indépendante des profils
|
||||
|
||||
Chaque document possède son propre `active_profile` :
|
||||
Le CLI des scénarios possède également une composition explicite :
|
||||
|
||||
```text
|
||||
app.config.json
|
||||
active_profile = mainnet_research
|
||||
|
||||
logging.config.json
|
||||
active_profile = mainnet_research
|
||||
config/ks-pipeline-demo-scenarios.default.config.json
|
||||
```
|
||||
|
||||
Ces valeurs sont indépendantes. Changer le profil applicatif ne change pas implicitement le profil logging, et inversement. Les noms peuvent être identiques pour faciliter l’exploitation sans créer de couplage contractuel.
|
||||
La composition desktop peut être remplacée par `KB_APP_DEMO_DESKTOP_CONFIG_PATH`. Les tests/scénarios Devnet opt-in peuvent remplacer leur composition avec `KS_DEVNET_CONFIG_PATH`.
|
||||
|
||||
Le document général ne contient plus de propriété `logging`. Les routes, niveaux, formats et filtres sont exclusivement possédés par `logging.config.json` et `ks-logging`.
|
||||
|
||||
## Variables d’environnement
|
||||
|
||||
`app.config.json` référence notamment :
|
||||
## Documents partagés actuels
|
||||
|
||||
```text
|
||||
KS_SECRET_HELIUS_API_KEY
|
||||
KS_SECRET_POSTGRES_MAINNET_URL
|
||||
KS_SECRET_POSTGRES_DEVNET_URL
|
||||
config/
|
||||
├── kb-app-demo-desktop.default.config.json
|
||||
├── ks-pipeline-demo-scenarios.default.config.json
|
||||
├── logging.config.json
|
||||
├── transport.config.json
|
||||
├── listeners.config.json
|
||||
├── example.kb-app-demo-desktop.default.config.json
|
||||
├── example.logging.config.json
|
||||
├── example.transport.config.json
|
||||
├── example.listeners.config.json
|
||||
└── schemas/
|
||||
├── composition.config.schema.json
|
||||
├── logging.config.schema.json
|
||||
├── transport.config.schema.json
|
||||
├── listeners.config.schema.json
|
||||
└── resolved.app.config.schema.json
|
||||
```
|
||||
|
||||
`KS_SECRET_POSTGRES_TEST_URL` reste réservé aux tests d’intégration PostgreSQL. Le fichier réel `.env` reste local et ignoré par Git ; `.env.example` est le modèle versionné.
|
||||
`resolved.app.config.schema.json` décrit uniquement le contrat runtime `AppConfig/ProfileConfig` reconstruit par `ks-config`. Il ne correspond pas à un fichier runtime chargé directement.
|
||||
|
||||
La classification `KS_SECRET_*` / `KS_PUBLIC_*` / `KS_*` et `KB_SECRET_*` / `KB_PUBLIC_*` / `KB_*` est normative. Le camouflage et la propagation de sensibilité dans les valeurs composées sont traités dans la prerelease suivante ; aucun secret ne doit être écrit en clair dans un fichier versionné.
|
||||
## Sélection des profils
|
||||
|
||||
## Schémas
|
||||
Les documents partagés conservent un `active_profile` pour les consommateurs autonomes. Une composition binaire peut cependant sélectionner un autre profil explicitement :
|
||||
|
||||
Les schémas runtime sont localisés exclusivement sous `config/schemas/`.
|
||||
```text
|
||||
composition profile mainnet_research
|
||||
logging_profile = mainnet_research
|
||||
transport_profile = mainnet_research
|
||||
listeners_profile = mainnet_research
|
||||
```
|
||||
|
||||
`ks-config` embarque `schemas/app.config.schema.json`. `ks-logging` embarque `schemas/logging.config.schema.json`. Les fichiers embarqués et leurs versions sur disque doivent rester identiques.
|
||||
Lorsqu'une composition est utilisée, sa sélection explicite prime pour le binaire. Le même `transport.config.json` ou `listeners.config.json` peut donc être réutilisé par plusieurs binaires avec des combinaisons différentes.
|
||||
|
||||
## Migration depuis le format combiné
|
||||
## Transport
|
||||
|
||||
L’ancien `example.config.json` combinait configuration générale et logging dans chaque profil. La migration consiste à :
|
||||
`transport.config.json` possède les endpoints HTTP et WebSocket, leurs providers, clusters, timeouts, capacités, rôles, limites et politique de reconnexion propre aux endpoints.
|
||||
|
||||
1. conserver dans `app.config.json` les sections `app`, `database`, `data`, `solana`, `wallet`, `execution` et `demo` ;
|
||||
2. extraire chaque ancien bloc `logging` vers le profil homonyme de `logging.config.json` ;
|
||||
3. sélectionner explicitement un `active_profile` dans chacun des deux documents ;
|
||||
4. supprimer l’ancien fichier combiné une fois la migration validée.
|
||||
`ks-onchain-transport` peut consommer directement un `TransportProfileConfig`. Un futur worker n'a donc pas besoin de dépendre d'un `ProfileConfig` applicatif complet pour construire ses pools réseau.
|
||||
|
||||
## Listeners
|
||||
|
||||
`listeners.config.json` possède les ensembles de listeners Solana :
|
||||
|
||||
- `logsSubscribe` par mention de programme ;
|
||||
- `programSubscribe` ;
|
||||
- `accountSubscribe` ;
|
||||
- commitment et rôles d'endpoint associés.
|
||||
|
||||
La séparation prépare les futurs workers de capture, qui pourront associer un profil transport et un profil listeners sans recopier les définitions dans leur propre configuration.
|
||||
|
||||
## Logging
|
||||
|
||||
`logging.config.json` reste possédé par `ks-logging`. Une composition sélectionne le profil logging souhaité. `KS_LOGGING_CONFIG_PATH` reste un override direct du chemin logging pour l'exploitation ; sans override, le chemin déclaré par la composition est utilisé.
|
||||
|
||||
## Configuration encore transitoire dans la composition
|
||||
|
||||
Après `pre.006`, les sections suivantes restent temporairement dans les profils de composition :
|
||||
|
||||
- `database` et `data` ;
|
||||
- `wallet` ;
|
||||
- `execution` ;
|
||||
- `demo`.
|
||||
|
||||
Elles seront séparées dans la prerelease suivante. En particulier, `demo` est propre au desktop et ne doit pas rester durablement dans un contrat généraliste `ks-config`.
|
||||
|
||||
## Variables d'environnement
|
||||
|
||||
Les composants `ks-*` utilisent `KS_SECRET_*`, `KS_PUBLIC_*` ou `KS_*`. Les besoins réellement spécifiques à une application `kb-*` utilisent `KB_SECRET_*`, `KB_PUBLIC_*` ou `KB_*`.
|
||||
|
||||
Les secrets ne sont jamais écrits en clair dans le dépôt. La propagation de sensibilité et les DTO publics sûrs sont traités après la fin du découpage des fichiers de configuration.
|
||||
|
||||
## Exemples et schémas
|
||||
|
||||
Les exemples sous `config/` sont des références conformes et ne sont pas chargés automatiquement. Tous les schémas actifs résident exclusivement sous `config/schemas/`.
|
||||
|
||||
Les fichiers historiques `app.config.json`, `example.app.config.json`, `schemas/app.config.schema.json`, `example.config.json` et `schema.config.json` sont obsolètes et ne doivent pas coexister avec cette architecture.
|
||||
|
||||
## Logging de développement
|
||||
|
||||
Le fichier `logging.config.json` conserve actuellement les routes globales ainsi que trois fichiers dédiés par crate opérationnelle utilisant `tracing` : `debug.log`, `info.log` et `error.jsonl`.
|
||||
|
||||
Les matérialisateurs consolidés disposent de leurs routes sous les targets `ks-lib-materializer.*`. Les tests de `ks-logging` découvrent dynamiquement les crates déclarant `tracing.workspace = true` et vérifient les routes canoniques du document logging par défaut.
|
||||
Le fichier `logging.config.json` conserve les routes globales ainsi que trois fichiers dédiés par crate opérationnelle utilisant `tracing` : `debug.log`, `info.log` et `error.jsonl`.
|
||||
|
||||
Les logs ne doivent contenir ni secret, ni DSN non masqué, ni keypair, ni payload de configuration résolue complet.
|
||||
|
||||
## Limites du profil public Devnet
|
||||
|
||||
`api.devnet.solana.com` est un endpoint public partagé. Les limites configurées par rôle ne sont pas des quotas indépendants fournis par le serveur : leur débit cumulé doit rester sous la limite globale de l’endpoint, et chaque méthode RPC doit également rester sous sa propre limite.
|
||||
|
||||
Le profil `local_devnet` de `app.config.json` utilise donc volontairement des valeurs conservatrices pour les rôles HTTP. Un warning `retry_http_json_rpc_after_rate_limit` reste possible sur un service partagé ; il indique que le cooldown et le retry borné ont été activés.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,240 +0,0 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "development",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_DEVNET_URL}",
|
||||
"max_connections": 8,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/local.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"solana": {
|
||||
"http_endpoints": [
|
||||
{
|
||||
"name": "devnet_public_http",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "devnet",
|
||||
"url": "https://api.devnet.solana.com",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 4,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 3,
|
||||
"burst_capacity": 3,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 10000
|
||||
},
|
||||
{
|
||||
"role": "http_transactions",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"simulate_transaction",
|
||||
"send_transaction",
|
||||
"get_signature_statuses"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 1,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 1,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 10000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ws_endpoints": [
|
||||
{
|
||||
"name": "devnet_public_ws",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "devnet",
|
||||
"url": "wss://api.devnet.solana.com",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"slot_subscribe",
|
||||
"slots_updates_subscribe"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "program_logs",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"logs_subscribe_mentions",
|
||||
"program_subscribe",
|
||||
"account_subscribe",
|
||||
"signature_subscribe",
|
||||
"block_subscribe",
|
||||
"vote_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 64,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "root_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"root_subscribe"
|
||||
],
|
||||
"priority": 15,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"listeners": {
|
||||
"enabled": true,
|
||||
"default_commitment": "confirmed",
|
||||
"log_listeners": [
|
||||
{
|
||||
"name": "pump_swap_logs",
|
||||
"enabled": false,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
|
||||
"purpose": "Détecter les swaps, créations de pool et changements de liquidité Pump Swap."
|
||||
}
|
||||
],
|
||||
"program_listeners": [
|
||||
{
|
||||
"name": "pump_fun_program_accounts",
|
||||
"enabled": false,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
|
||||
"purpose": "Détecter les changements de comptes utiles à la création ou migration de tokens Pump Fun."
|
||||
}
|
||||
],
|
||||
"account_listeners": []
|
||||
}
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/local_devnet",
|
||||
"cluster": "devnet",
|
||||
"temporary_wallet_enabled": true,
|
||||
"temporary_wallet_alias": "local-devnet-operator",
|
||||
"temporary_wallet_persist": true,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": true,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 100000000,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 2000000000
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
74
config/example.kb-app-demo-desktop.default.config.json
Normal file
74
config/example.kb-app-demo-desktop.default.config.json
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"sources": {
|
||||
"logging": "config/logging.config.json",
|
||||
"transport": "config/transport.config.json",
|
||||
"listeners": "config/listeners.config.json"
|
||||
},
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "development",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "local_devnet",
|
||||
"transport_profile": "local_devnet",
|
||||
"listeners_profile": "local_devnet",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_DEVNET_URL}",
|
||||
"max_connections": 8,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/local.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/local_devnet",
|
||||
"cluster": "devnet",
|
||||
"temporary_wallet_enabled": true,
|
||||
"temporary_wallet_alias": "local-devnet-operator",
|
||||
"temporary_wallet_persist": true,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": true,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 100000000,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 2000000000
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
29
config/example.listeners.config.json
Normal file
29
config/example.listeners.config.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"enabled": true,
|
||||
"default_commitment": "confirmed",
|
||||
"log_listeners": [
|
||||
{
|
||||
"name": "pump_swap_logs",
|
||||
"enabled": false,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
|
||||
"purpose": "Détecter les swaps, créations de pool et changements de liquidité Pump Swap."
|
||||
}
|
||||
],
|
||||
"program_listeners": [
|
||||
{
|
||||
"name": "pump_fun_program_accounts",
|
||||
"enabled": false,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
|
||||
"purpose": "Détecter les changements de comptes utiles à la création ou migration de tokens Pump Fun."
|
||||
}
|
||||
],
|
||||
"account_listeners": []
|
||||
}
|
||||
]
|
||||
}
|
||||
157
config/example.transport.config.json
Normal file
157
config/example.transport.config.json
Normal file
@@ -0,0 +1,157 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"http_endpoints": [
|
||||
{
|
||||
"name": "devnet_public_http",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "devnet",
|
||||
"url": "https://api.devnet.solana.com",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 4,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 3,
|
||||
"burst_capacity": 3,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 10000
|
||||
},
|
||||
{
|
||||
"role": "http_transactions",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"simulate_transaction",
|
||||
"send_transaction",
|
||||
"get_signature_statuses"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 1,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 1,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 10000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ws_endpoints": [
|
||||
{
|
||||
"name": "devnet_public_ws",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "devnet",
|
||||
"url": "wss://api.devnet.solana.com",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"slot_subscribe",
|
||||
"slots_updates_subscribe"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "program_logs",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"logs_subscribe_mentions",
|
||||
"program_subscribe",
|
||||
"account_subscribe",
|
||||
"signature_subscribe",
|
||||
"block_subscribe",
|
||||
"vote_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 64,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "root_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"root_subscribe"
|
||||
],
|
||||
"priority": 15,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
202
config/kb-app-demo-desktop.default.config.json
Normal file
202
config/kb-app-demo-desktop.default.config.json
Normal file
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"active_profile": "mainnet_research",
|
||||
"sources": {
|
||||
"logging": "config/logging.config.json",
|
||||
"transport": "config/transport.config.json",
|
||||
"listeners": "config/listeners.config.json"
|
||||
},
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "development",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "local_devnet",
|
||||
"transport_profile": "local_devnet",
|
||||
"listeners_profile": "local_devnet",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_DEVNET_URL}",
|
||||
"max_connections": 8,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/local.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/local_devnet",
|
||||
"cluster": "devnet",
|
||||
"temporary_wallet_enabled": true,
|
||||
"temporary_wallet_alias": "local-devnet-operator",
|
||||
"temporary_wallet_persist": true,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": true,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 100000000,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 2000000000
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mainnet_research",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "research",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "mainnet_research",
|
||||
"transport_profile": "mainnet_research",
|
||||
"listeners_profile": "mainnet_research",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_MAINNET_URL}",
|
||||
"max_connections": 16,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/mainnet-import.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/mainnet_research",
|
||||
"cluster": "mainnet-beta",
|
||||
"temporary_wallet_enabled": false,
|
||||
"temporary_wallet_alias": "mainnet_research-disabled",
|
||||
"temporary_wallet_persist": false,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": false,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 0,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 0
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mainnet",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "mainnet",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "mainnet",
|
||||
"transport_profile": "mainnet",
|
||||
"listeners_profile": "mainnet",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_MAINNET_URL}",
|
||||
"max_connections": 16,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/mainnet.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/mainnet",
|
||||
"cluster": "mainnet-beta",
|
||||
"temporary_wallet_enabled": false,
|
||||
"temporary_wallet_alias": "mainnet-disabled",
|
||||
"temporary_wallet_persist": false,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": false,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 0,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 0
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
202
config/ks-pipeline-demo-scenarios.default.config.json
Normal file
202
config/ks-pipeline-demo-scenarios.default.config.json
Normal file
@@ -0,0 +1,202 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"sources": {
|
||||
"logging": "config/logging.config.json",
|
||||
"transport": "config/transport.config.json",
|
||||
"listeners": "config/listeners.config.json"
|
||||
},
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "development",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "local_devnet",
|
||||
"transport_profile": "local_devnet",
|
||||
"listeners_profile": "local_devnet",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_DEVNET_URL}",
|
||||
"max_connections": 8,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/local.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/local_devnet",
|
||||
"cluster": "devnet",
|
||||
"temporary_wallet_enabled": true,
|
||||
"temporary_wallet_alias": "local-devnet-operator",
|
||||
"temporary_wallet_persist": true,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": true,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 100000000,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 2000000000
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mainnet_research",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "research",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "mainnet_research",
|
||||
"transport_profile": "mainnet_research",
|
||||
"listeners_profile": "mainnet_research",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_MAINNET_URL}",
|
||||
"max_connections": 16,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/mainnet-import.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/mainnet_research",
|
||||
"cluster": "mainnet-beta",
|
||||
"temporary_wallet_enabled": false,
|
||||
"temporary_wallet_alias": "mainnet_research-disabled",
|
||||
"temporary_wallet_persist": false,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": false,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 0,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 0
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "mainnet",
|
||||
"app": {
|
||||
"name": "khadhroony-bot3",
|
||||
"environment": "mainnet",
|
||||
"auto_reconnect_default": false
|
||||
},
|
||||
"logging_profile": "mainnet",
|
||||
"transport_profile": "mainnet",
|
||||
"listeners_profile": "mainnet",
|
||||
"database": {
|
||||
"enabled": true,
|
||||
"backend": "postgres",
|
||||
"postgres": {
|
||||
"url": "${KS_SECRET_POSTGRES_MAINNET_URL}",
|
||||
"max_connections": 16,
|
||||
"connect_timeout_ms": 5000,
|
||||
"auto_initialize_schema": true
|
||||
},
|
||||
"sqlite": {
|
||||
"path": "data/mainnet.sqlite",
|
||||
"create_if_missing": true,
|
||||
"busy_timeout_ms": 5000,
|
||||
"max_connections": 1,
|
||||
"auto_initialize_schema": true,
|
||||
"use_wal": true
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"wallets_directory": "wallets",
|
||||
"logs_directory": "logs"
|
||||
},
|
||||
"wallet": {
|
||||
"wallet_dir": "wallets/temporary/mainnet",
|
||||
"cluster": "mainnet-beta",
|
||||
"temporary_wallet_enabled": false,
|
||||
"temporary_wallet_alias": "mainnet-disabled",
|
||||
"temporary_wallet_persist": false,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": false,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
"execution": {
|
||||
"dry_run_default": true,
|
||||
"require_simulation": true,
|
||||
"require_operator_confirmation": true,
|
||||
"localnet_max_spend_lamports": 0,
|
||||
"devnet_max_spend_lamports": 0,
|
||||
"testnet_max_spend_lamports": 0,
|
||||
"mainnet_max_spend_lamports": 0,
|
||||
"max_fee_lamports": 1000000,
|
||||
"max_compute_unit_price_micro_lamports": 100000,
|
||||
"recent_blockhash_max_age_slots": 150,
|
||||
"send_max_retries": 3,
|
||||
"confirmation_poll_interval_ms": 500,
|
||||
"confirmation_max_attempts": 120,
|
||||
"devnet_airdrop_max_lamports": 0
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
91
config/listeners.config.json
Normal file
91
config/listeners.config.json
Normal file
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"active_profile": "mainnet_research",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"enabled": true,
|
||||
"default_commitment": "confirmed",
|
||||
"log_listeners": [
|
||||
{
|
||||
"name": "pump_swap_logs",
|
||||
"enabled": false,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
|
||||
"purpose": "Détecter les swaps, créations de pool et changements de liquidité Pump Swap."
|
||||
}
|
||||
],
|
||||
"program_listeners": [
|
||||
{
|
||||
"name": "pump_fun_program_accounts",
|
||||
"enabled": false,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
|
||||
"purpose": "Détecter les changements de comptes utiles à la création ou migration de tokens Pump Fun."
|
||||
}
|
||||
],
|
||||
"account_listeners": []
|
||||
},
|
||||
{
|
||||
"name": "mainnet_research",
|
||||
"enabled": true,
|
||||
"default_commitment": "confirmed",
|
||||
"log_listeners": [
|
||||
{
|
||||
"name": "pump_swap_logs",
|
||||
"enabled": true,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
|
||||
"purpose": "Détecter les swaps, créations de pool et changements de liquidité Pump Swap."
|
||||
},
|
||||
{
|
||||
"name": "raydium_cpmm_logs",
|
||||
"enabled": true,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C",
|
||||
"purpose": "Détecter les créations de pools et swaps Raydium CPMM."
|
||||
}
|
||||
],
|
||||
"program_listeners": [
|
||||
{
|
||||
"name": "pump_fun_program_accounts",
|
||||
"enabled": true,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
|
||||
"purpose": "Détecter les changements de comptes utiles à la création ou migration de tokens Pump Fun."
|
||||
}
|
||||
],
|
||||
"account_listeners": []
|
||||
},
|
||||
{
|
||||
"name": "mainnet",
|
||||
"enabled": true,
|
||||
"default_commitment": "confirmed",
|
||||
"log_listeners": [
|
||||
{
|
||||
"name": "pump_swap_logs",
|
||||
"enabled": true,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
|
||||
"purpose": "Détecter les swaps, créations de pool et changements de liquidité Pump Swap."
|
||||
},
|
||||
{
|
||||
"name": "raydium_cpmm_logs",
|
||||
"enabled": true,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C",
|
||||
"purpose": "Détecter les créations de pools et swaps Raydium CPMM."
|
||||
}
|
||||
],
|
||||
"program_listeners": [
|
||||
{
|
||||
"name": "pump_fun_program_accounts",
|
||||
"enabled": true,
|
||||
"endpoint_role": "program_logs",
|
||||
"program_id": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
|
||||
"purpose": "Détecter les changements de comptes utiles à la création ou migration de tokens Pump Fun."
|
||||
}
|
||||
],
|
||||
"account_listeners": []
|
||||
}
|
||||
]
|
||||
}
|
||||
366
config/schemas/composition.config.schema.json
Normal file
366
config/schemas/composition.config.schema.json
Normal file
@@ -0,0 +1,366 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schemas/composition.config.schema.json",
|
||||
"title": "Khadhroony binary composition configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"active_profile",
|
||||
"sources",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"active_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"sources": {
|
||||
"$ref": "#/$defs/sources"
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/profile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"app_section": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"environment",
|
||||
"auto_reconnect_default"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"environment": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"auto_reconnect_default": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"database": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"enabled",
|
||||
"backend",
|
||||
"postgres",
|
||||
"sqlite"
|
||||
],
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"backend": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"postgres",
|
||||
"sqlite"
|
||||
]
|
||||
},
|
||||
"postgres": {
|
||||
"$ref": "#/$defs/postgres"
|
||||
},
|
||||
"sqlite": {
|
||||
"$ref": "#/$defs/sqlite"
|
||||
}
|
||||
}
|
||||
},
|
||||
"postgres": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"url",
|
||||
"max_connections",
|
||||
"connect_timeout_ms",
|
||||
"auto_initialize_schema"
|
||||
],
|
||||
"properties": {
|
||||
"url": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"max_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"connect_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"auto_initialize_schema": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sqlite": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"path",
|
||||
"create_if_missing",
|
||||
"busy_timeout_ms",
|
||||
"max_connections",
|
||||
"auto_initialize_schema",
|
||||
"use_wal"
|
||||
],
|
||||
"properties": {
|
||||
"path": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"create_if_missing": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"busy_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"max_connections": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"auto_initialize_schema": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"use_wal": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"wallets_directory",
|
||||
"logs_directory"
|
||||
],
|
||||
"properties": {
|
||||
"wallets_directory": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"logs_directory": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"wallet": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"wallet_dir",
|
||||
"cluster",
|
||||
"temporary_wallet_enabled",
|
||||
"temporary_wallet_alias",
|
||||
"temporary_wallet_persist",
|
||||
"localnet_send_enabled",
|
||||
"devnet_send_enabled",
|
||||
"testnet_send_enabled",
|
||||
"mainnet_send_enabled"
|
||||
],
|
||||
"properties": {
|
||||
"wallet_dir": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"cluster": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"temporary_wallet_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"temporary_wallet_alias": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 64,
|
||||
"pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$"
|
||||
},
|
||||
"temporary_wallet_persist": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"localnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"devnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"testnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"mainnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"execution": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"dry_run_default",
|
||||
"require_simulation",
|
||||
"require_operator_confirmation",
|
||||
"localnet_max_spend_lamports",
|
||||
"devnet_max_spend_lamports",
|
||||
"testnet_max_spend_lamports",
|
||||
"mainnet_max_spend_lamports",
|
||||
"max_fee_lamports",
|
||||
"max_compute_unit_price_micro_lamports",
|
||||
"recent_blockhash_max_age_slots",
|
||||
"send_max_retries",
|
||||
"confirmation_poll_interval_ms",
|
||||
"confirmation_max_attempts",
|
||||
"devnet_airdrop_max_lamports"
|
||||
],
|
||||
"properties": {
|
||||
"dry_run_default": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"require_simulation": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"require_operator_confirmation": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"localnet_max_spend_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"devnet_max_spend_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"testnet_max_spend_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"mainnet_max_spend_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"max_fee_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"max_compute_unit_price_micro_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"recent_blockhash_max_age_slots": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"send_max_retries": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 4294967295
|
||||
},
|
||||
"confirmation_poll_interval_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 60000
|
||||
},
|
||||
"confirmation_max_attempts": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 10000
|
||||
},
|
||||
"devnet_airdrop_max_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
"demo": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"live_demo_enabled",
|
||||
"trading_demo_enabled"
|
||||
],
|
||||
"properties": {
|
||||
"live_demo_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"trading_demo_enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sources": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"logging",
|
||||
"transport",
|
||||
"listeners"
|
||||
],
|
||||
"properties": {
|
||||
"logging": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"transport": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"listeners": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"app",
|
||||
"logging_profile",
|
||||
"transport_profile",
|
||||
"listeners_profile",
|
||||
"database",
|
||||
"data",
|
||||
"wallet",
|
||||
"execution",
|
||||
"demo"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"app": {
|
||||
"$ref": "#/$defs/app_section"
|
||||
},
|
||||
"logging_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"transport_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"listeners_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"database": {
|
||||
"$ref": "#/$defs/database"
|
||||
},
|
||||
"data": {
|
||||
"$ref": "#/$defs/data"
|
||||
},
|
||||
"wallet": {
|
||||
"$ref": "#/$defs/wallet"
|
||||
},
|
||||
"execution": {
|
||||
"$ref": "#/$defs/execution"
|
||||
},
|
||||
"demo": {
|
||||
"$ref": "#/$defs/demo"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
154
config/schemas/listeners.config.schema.json
Normal file
154
config/schemas/listeners.config.schema.json
Normal file
@@ -0,0 +1,154 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schemas/listeners.config.schema.json",
|
||||
"title": "Khadhroony Solana listener configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"active_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"active_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/profile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"log_listener": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"enabled",
|
||||
"endpoint_role",
|
||||
"program_id",
|
||||
"purpose"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"endpoint_role": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"program_id": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"purpose": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"program_listener": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"enabled",
|
||||
"endpoint_role",
|
||||
"program_id",
|
||||
"purpose"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"endpoint_role": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"program_id": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"purpose": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"account_listener": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"enabled",
|
||||
"endpoint_role",
|
||||
"account_pubkey",
|
||||
"purpose"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"endpoint_role": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"account_pubkey": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"purpose": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"enabled",
|
||||
"default_commitment",
|
||||
"log_listeners",
|
||||
"program_listeners",
|
||||
"account_listeners"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"default_commitment": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"log_listeners": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/log_listener"
|
||||
}
|
||||
},
|
||||
"program_listeners": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/program_listener"
|
||||
}
|
||||
},
|
||||
"account_listeners": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/$defs/account_listener"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schema/app.config.schema.json",
|
||||
"title": "Khadhroony Solana application configuration",
|
||||
"$id": "https://khadhroony.local/schemas/resolved.app.config.schema.json",
|
||||
"title": "Khadhroony Solana resolved runtime application configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
227
config/schemas/transport.config.schema.json
Normal file
227
config/schemas/transport.config.schema.json
Normal file
@@ -0,0 +1,227 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schemas/transport.config.schema.json",
|
||||
"title": "Khadhroony Solana transport configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"active_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"active_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/profile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"http_endpoint": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"enabled",
|
||||
"provider",
|
||||
"cluster",
|
||||
"url",
|
||||
"connect_timeout_ms",
|
||||
"request_timeout_ms",
|
||||
"max_idle_connections_per_host",
|
||||
"roles"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"provider": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"cluster": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"pattern": "^https?://"
|
||||
},
|
||||
"connect_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"request_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"max_idle_connections_per_host": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"roles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/endpoint_role"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"ws_endpoint": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"enabled",
|
||||
"provider",
|
||||
"cluster",
|
||||
"url",
|
||||
"connect_timeout_ms",
|
||||
"request_timeout_ms",
|
||||
"unsubscribe_timeout_ms",
|
||||
"write_channel_capacity",
|
||||
"event_channel_capacity",
|
||||
"auto_reconnect",
|
||||
"roles"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"provider": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"cluster": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"pattern": "^wss?://"
|
||||
},
|
||||
"connect_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"request_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"unsubscribe_timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"write_channel_capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"event_channel_capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"auto_reconnect": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"roles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/endpoint_role"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"endpoint_role": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"role",
|
||||
"enabled",
|
||||
"request_kinds",
|
||||
"priority",
|
||||
"requests_per_second",
|
||||
"burst_capacity",
|
||||
"max_concurrent_requests",
|
||||
"max_subscriptions",
|
||||
"pause_after_rate_limit_ms"
|
||||
],
|
||||
"properties": {
|
||||
"role": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"request_kinds": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
},
|
||||
"priority": {
|
||||
"type": "integer"
|
||||
},
|
||||
"requests_per_second": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"burst_capacity": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"max_concurrent_requests": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"max_subscriptions": {
|
||||
"type": "integer"
|
||||
},
|
||||
"pause_after_rate_limit_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"http_endpoints",
|
||||
"ws_endpoints"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"http_endpoints": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/http_endpoint"
|
||||
}
|
||||
},
|
||||
"ws_endpoints": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/ws_endpoint"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
847
config/transport.config.json
Normal file
847
config/transport.config.json
Normal file
@@ -0,0 +1,847 @@
|
||||
{
|
||||
"active_profile": "mainnet_research",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"http_endpoints": [
|
||||
{
|
||||
"name": "devnet_public_http",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "devnet",
|
||||
"url": "https://api.devnet.solana.com",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 4,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 3,
|
||||
"burst_capacity": 3,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 10000
|
||||
},
|
||||
{
|
||||
"role": "http_transactions",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"simulate_transaction",
|
||||
"send_transaction",
|
||||
"get_signature_statuses"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 1,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 1,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 10000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ws_endpoints": [
|
||||
{
|
||||
"name": "devnet_public_ws",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "devnet",
|
||||
"url": "wss://api.devnet.solana.com",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"slot_subscribe",
|
||||
"slots_updates_subscribe"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "program_logs",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"logs_subscribe_mentions",
|
||||
"program_subscribe",
|
||||
"account_subscribe",
|
||||
"signature_subscribe",
|
||||
"block_subscribe",
|
||||
"vote_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 64,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "root_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"root_subscribe"
|
||||
],
|
||||
"priority": 15,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "mainnet_research",
|
||||
"http_endpoints": [
|
||||
{
|
||||
"name": "mainnet_public_http",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "https://api.mainnet.solana.com",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 4,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 50,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "http_fallback",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 90,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "helius_primary_http",
|
||||
"enabled": true,
|
||||
"provider": "helius",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "https://mainnet.helius-rpc.com/?api-key=${KS_SECRET_HELIUS_API_KEY}",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 8,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 8,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 1500
|
||||
},
|
||||
{
|
||||
"role": "http_heavy",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_block",
|
||||
"get_program_accounts",
|
||||
"get_signatures_for_address",
|
||||
"get_transaction"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 1500
|
||||
},
|
||||
{
|
||||
"role": "history_backfill",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_block",
|
||||
"get_program_accounts",
|
||||
"get_signatures_for_address",
|
||||
"get_transaction"
|
||||
],
|
||||
"priority": 30,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 1500
|
||||
},
|
||||
{
|
||||
"role": "http_transactions",
|
||||
"enabled": false,
|
||||
"request_kinds": [
|
||||
"simulate_transaction",
|
||||
"send_transaction",
|
||||
"get_signature_statuses"
|
||||
],
|
||||
"priority": 40,
|
||||
"requests_per_second": 1,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 1,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ws_endpoints": [
|
||||
{
|
||||
"name": "mainnet_public_ws_slots",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "wss://api.mainnet.solana.com",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"slot_subscribe",
|
||||
"slots_updates_subscribe"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "root_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"root_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "helius_primary_ws_programs",
|
||||
"enabled": true,
|
||||
"provider": "helius",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "wss://mainnet.helius-rpc.com/?api-key=${KS_SECRET_HELIUS_API_KEY}",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 512,
|
||||
"event_channel_capacity": 4096,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "logs_subscribe",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"logs_subscribe_mentions"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 128,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "program_subscribe",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"program_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 128,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "account_subscribe",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"account_subscribe"
|
||||
],
|
||||
"priority": 30,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 128,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "mainnet",
|
||||
"http_endpoints": [
|
||||
{
|
||||
"name": "mainnet_public_http",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "https://api.mainnet.solana.com",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 4,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 50,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "http_fallback",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 90,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "helius_primary_http",
|
||||
"enabled": true,
|
||||
"provider": "helius",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "https://mainnet.helius-rpc.com/?api-key=${KS_SECRET_HELIUS_API_KEY}",
|
||||
"connect_timeout_ms": 4000,
|
||||
"request_timeout_ms": 10000,
|
||||
"max_idle_connections_per_host": 8,
|
||||
"roles": [
|
||||
{
|
||||
"role": "http_queries",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_account_info",
|
||||
"get_balance",
|
||||
"get_block_commitment",
|
||||
"get_block_height",
|
||||
"get_block_production",
|
||||
"get_blocks",
|
||||
"get_blocks_with_limit",
|
||||
"get_cluster_nodes",
|
||||
"get_epoch_info",
|
||||
"get_epoch_schedule",
|
||||
"get_fee_for_message",
|
||||
"get_first_available_block",
|
||||
"get_genesis_hash",
|
||||
"get_health",
|
||||
"get_highest_snapshot_slot",
|
||||
"get_identity",
|
||||
"get_inflation_governor",
|
||||
"get_inflation_rate",
|
||||
"get_inflation_reward",
|
||||
"get_largest_accounts",
|
||||
"get_latest_blockhash",
|
||||
"get_leader_schedule",
|
||||
"get_max_retransmit_slot",
|
||||
"get_max_shred_insert_slot",
|
||||
"get_minimum_balance_for_rent_exemption",
|
||||
"get_multiple_accounts",
|
||||
"get_recent_performance_samples",
|
||||
"get_recent_prioritization_fees",
|
||||
"get_signature_statuses",
|
||||
"get_slot",
|
||||
"get_slot_leader",
|
||||
"get_slot_leaders",
|
||||
"get_stake_activation",
|
||||
"get_stake_minimum_delegation",
|
||||
"get_supply",
|
||||
"get_token_account_balance",
|
||||
"get_token_accounts_by_delegate",
|
||||
"get_token_accounts_by_owner",
|
||||
"get_token_largest_accounts",
|
||||
"get_token_supply",
|
||||
"get_transaction_count",
|
||||
"get_version",
|
||||
"get_vote_accounts",
|
||||
"is_blockhash_valid",
|
||||
"request_airdrop"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 8,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 1500
|
||||
},
|
||||
{
|
||||
"role": "http_heavy",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_block",
|
||||
"get_program_accounts",
|
||||
"get_signatures_for_address",
|
||||
"get_transaction"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 1500
|
||||
},
|
||||
{
|
||||
"role": "history_backfill",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"get_block",
|
||||
"get_program_accounts",
|
||||
"get_signatures_for_address",
|
||||
"get_transaction"
|
||||
],
|
||||
"priority": 30,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 1500
|
||||
},
|
||||
{
|
||||
"role": "http_transactions",
|
||||
"enabled": false,
|
||||
"request_kinds": [
|
||||
"simulate_transaction",
|
||||
"send_transaction",
|
||||
"get_signature_statuses"
|
||||
],
|
||||
"priority": 40,
|
||||
"requests_per_second": 1,
|
||||
"burst_capacity": 1,
|
||||
"max_concurrent_requests": 1,
|
||||
"max_subscriptions": 0,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"ws_endpoints": [
|
||||
{
|
||||
"name": "mainnet_public_ws_slots",
|
||||
"enabled": true,
|
||||
"provider": "solana-public",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "wss://api.mainnet.solana.com",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"slot_subscribe",
|
||||
"slots_updates_subscribe"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "root_notifications",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"root_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 4,
|
||||
"burst_capacity": 8,
|
||||
"max_concurrent_requests": 4,
|
||||
"max_subscriptions": 16,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "helius_primary_ws_programs",
|
||||
"enabled": true,
|
||||
"provider": "helius",
|
||||
"cluster": "mainnet-beta",
|
||||
"url": "wss://mainnet.helius-rpc.com/?api-key=${KS_SECRET_HELIUS_API_KEY}",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 512,
|
||||
"event_channel_capacity": 4096,
|
||||
"auto_reconnect": false,
|
||||
"roles": [
|
||||
{
|
||||
"role": "logs_subscribe",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"logs_subscribe_mentions"
|
||||
],
|
||||
"priority": 10,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 128,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "program_subscribe",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"program_subscribe"
|
||||
],
|
||||
"priority": 20,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 128,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
},
|
||||
{
|
||||
"role": "account_subscribe",
|
||||
"enabled": true,
|
||||
"request_kinds": [
|
||||
"account_subscribe"
|
||||
],
|
||||
"priority": 30,
|
||||
"requests_per_second": 2,
|
||||
"burst_capacity": 4,
|
||||
"max_concurrent_requests": 2,
|
||||
"max_subscriptions": 128,
|
||||
"pause_after_rate_limit_ms": 3000
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user