0.5.1-pre.007
This commit is contained in:
103
config/README.md
103
config/README.md
@@ -1,110 +1,123 @@
|
||||
<!-- file: config/README.md -->
|
||||
<!-- version: 21 -->
|
||||
<!-- version: 22 -->
|
||||
|
||||
# Configuration locale
|
||||
|
||||
Ce dossier contient les compositions propres aux binaires, les documents de configuration partagés, leurs exemples et les schémas JSON actifs.
|
||||
Ce dossier contient les compositions propres aux binaires, les documents de configuration Khadhroony Solana partagés, leurs exemples et les schémas JSON actifs.
|
||||
|
||||
## Principe de composition
|
||||
## Modèle de composition
|
||||
|
||||
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 documents spécialisés possèdent leur propre configuration globale et un `default_profile`. Ils peuvent donc être consommés directement sans fichier de composition.
|
||||
|
||||
Le desktop utilise par défaut :
|
||||
Un fichier `<binary>.default.config.json` n'est nécessaire que lorsqu'un binaire veut :
|
||||
|
||||
- choisir des fichiers spécialisés différents des fichiers canoniques ;
|
||||
- sélectionner un profil différent du `default_profile` d'un document ;
|
||||
- ajouter des paramètres propres au binaire.
|
||||
|
||||
La composition du desktop est :
|
||||
|
||||
```text
|
||||
config/kb-app-demo-desktop.default.config.json
|
||||
```
|
||||
|
||||
Le CLI des scénarios possède également une composition explicite :
|
||||
Elle peut être remplacée par `KB_APP_DEMO_DESKTOP_CONFIG_PATH`.
|
||||
|
||||
```text
|
||||
config/ks-pipeline-demo-scenarios.default.config.json
|
||||
```
|
||||
`ks-pipeline-demo-scenarios` n'a plus de composition dédiée par défaut : il consomme directement les defaults des documents partagés. `KS_DEVNET_CONFIG_PATH` reste disponible pour fournir explicitement une composition alternative lorsque cela est nécessaire.
|
||||
|
||||
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`.
|
||||
|
||||
## Documents partagés actuels
|
||||
## Fichiers actifs
|
||||
|
||||
```text
|
||||
config/
|
||||
├── kb-app-demo-desktop.default.config.json
|
||||
├── ks-pipeline-demo-scenarios.default.config.json
|
||||
├── logging.config.json
|
||||
├── transport.config.json
|
||||
├── listeners.config.json
|
||||
├── store.config.json
|
||||
├── wallet.config.json
|
||||
├── execution.config.json
|
||||
├── example.kb-app-demo-desktop.default.config.json
|
||||
├── example.logging.config.json
|
||||
├── example.transport.config.json
|
||||
├── example.listeners.config.json
|
||||
├── example.store.config.json
|
||||
├── example.wallet.config.json
|
||||
├── example.execution.config.json
|
||||
└── schemas/
|
||||
├── composition.config.schema.json
|
||||
├── logging.config.schema.json
|
||||
├── transport.config.schema.json
|
||||
├── listeners.config.schema.json
|
||||
├── store.config.schema.json
|
||||
├── wallet.config.schema.json
|
||||
├── execution.config.schema.json
|
||||
└── resolved.app.config.schema.json
|
||||
```
|
||||
|
||||
`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.
|
||||
`resolved.app.config.schema.json` décrit uniquement le contrat transitoire `AppConfig/ProfileConfig` reconstruit en mémoire. Aucun binaire ne charge ce schéma comme document source applicatif.
|
||||
|
||||
## Sélection des profils
|
||||
## Defaults et overrides
|
||||
|
||||
Chaque document partagé définit un `default_profile`. Une composition peut remplacer uniquement les sélections nécessaires. Elle ne devient pas une seconde copie des paramètres spécialisés : un override de champ reste dans le document propriétaire, tandis qu’une valeur globale déclarée comme configurable par environnement utilise son contrat `KS_*`/`KB_*`.
|
||||
|
||||
Les documents partagés conservent un `active_profile` pour les consommateurs autonomes. Une composition binaire peut cependant sélectionner un autre profil explicitement :
|
||||
|
||||
```text
|
||||
composition profile mainnet_research
|
||||
transport.default_profile = local_devnet
|
||||
listeners.default_profile = local_devnet
|
||||
store.default_profile = local_devnet
|
||||
wallet.default_profile = local_devnet
|
||||
execution.default_profile = local_devnet
|
||||
logging.default_profile = local_devnet
|
||||
|
||||
kb-app-demo-desktop profile mainnet_research
|
||||
logging_profile = mainnet_research
|
||||
transport_profile = mainnet_research
|
||||
listeners_profile = mainnet_research
|
||||
store_profile = mainnet_research
|
||||
wallet_profile = mainnet_research
|
||||
execution_profile = mainnet_research
|
||||
```
|
||||
|
||||
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.
|
||||
`ks-config` valide l'existence des fichiers référencés et des profils sélectionnés avant de construire le contrat runtime.
|
||||
|
||||
## Transport
|
||||
## Valeurs globales hors profils
|
||||
|
||||
`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.
|
||||
Une valeur qui ne dépend pas du profil reste au niveau racine de son document spécialisé.
|
||||
|
||||
`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.
|
||||
Actuellement :
|
||||
|
||||
## Listeners
|
||||
- `logging.config.json.logs_directory` vaut `${KS_LOGS_DIRECTORY:-logs}` ;
|
||||
- `wallet.config.json.wallets_directory` vaut `${KS_WALLETS_DIRECTORY:-wallets}`.
|
||||
|
||||
`listeners.config.json` possède les ensembles de listeners Solana :
|
||||
Ces valeurs peuvent être remplacées par l'environnement ou `.env` sans dupliquer un chemin dans tous les profils.
|
||||
|
||||
- `logsSubscribe` par mention de programme ;
|
||||
- `programSubscribe` ;
|
||||
- `accountSubscribe` ;
|
||||
- commitment et rôles d'endpoint associés.
|
||||
## Transport WebSocket
|
||||
|
||||
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.
|
||||
`transport.config.json` possède des classes de defaults WebSocket nommées. Un endpoint référence une classe puis peut fournir des `overrides` propres :
|
||||
|
||||
## Logging
|
||||
```text
|
||||
standard_rpc_ws
|
||||
high_capacity_rpc_ws
|
||||
```
|
||||
|
||||
`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é.
|
||||
Les defaults portent les timeouts, capacités de channels et `auto_reconnect`. Une future surface WebSocket avancée peut ajouter une classe dédiée sans modifier les endpoints RPC standard existants.
|
||||
|
||||
## Configuration encore transitoire dans la composition
|
||||
## Wallet et exécution
|
||||
|
||||
Après `pre.006`, les sections suivantes restent temporairement dans les profils de composition :
|
||||
`wallet.config.json` possède la racine de stockage et les paramètres d'identité/persistance des wallets. Les autorisations `*_send_enabled` appartiennent désormais à `execution.config.json`, avec les plafonds de dépense, frais et confirmation.
|
||||
|
||||
- `database` et `data` ;
|
||||
- `wallet` ;
|
||||
- `execution` ;
|
||||
- `demo`.
|
||||
## Store
|
||||
|
||||
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`.
|
||||
`store.config.json` possède la sélection et les paramètres PostgreSQL/SQLite. Le split reste structurel : aucune migration SQL n'est introduite par `0.5.1`.
|
||||
|
||||
## 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.
|
||||
Les secrets ne sont jamais écrits en clair dans le dépôt. La séparation source/runtime/public/diagnostic et le camouflage systématique sont traités après ce split.
|
||||
|
||||
## 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 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.
|
||||
Les fichiers historiques `app.config.json`, `example.app.config.json`, `schemas/app.config.schema.json`, `example.config.json`, `schema.config.json` et `ks-pipeline-demo-scenarios.default.config.json` sont obsolètes dans l'architecture courante.
|
||||
|
||||
26
config/example.execution.config.json
Normal file
26
config/example.execution.config.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"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,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": true,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -3,67 +3,17 @@
|
||||
"sources": {
|
||||
"logging": "config/logging.config.json",
|
||||
"transport": "config/transport.config.json",
|
||||
"listeners": "config/listeners.config.json"
|
||||
"listeners": "config/listeners.config.json",
|
||||
"store": "config/store.config.json",
|
||||
"wallet": "config/wallet.config.json",
|
||||
"execution": "config/execution.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
|
||||
"environment": "development"
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"logs_directory": "${KS_LOGS_DIRECTORY:-logs}",
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
@@ -23,7 +24,7 @@
|
||||
"enabled": true,
|
||||
"sink": "file",
|
||||
"level": "debug",
|
||||
"path": "logs/devnet/debug.log",
|
||||
"path": "devnet/debug.log",
|
||||
"rotation": "daily",
|
||||
"format": "human",
|
||||
"ansi": false,
|
||||
|
||||
26
config/example.store.config.json
Normal file
26
config/example.store.config.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "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
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,25 @@
|
||||
{
|
||||
"active_profile": "local_devnet",
|
||||
"default_profile": "local_devnet",
|
||||
"ws_endpoint_defaults": [
|
||||
{
|
||||
"name": "standard_rpc_ws",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false
|
||||
},
|
||||
{
|
||||
"name": "high_capacity_rpc_ws",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 512,
|
||||
"event_channel_capacity": 4096,
|
||||
"auto_reconnect": false
|
||||
}
|
||||
],
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
@@ -97,12 +117,7 @@
|
||||
"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,
|
||||
"defaults": "standard_rpc_ws",
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
|
||||
14
config/example.wallet.config.json
Normal file
14
config/example.wallet.config.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"wallets_directory": "${KS_WALLETS_DIRECTORY:-wallets}",
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"directory": "temporary/local_devnet",
|
||||
"cluster": "devnet",
|
||||
"temporary_wallet_enabled": true,
|
||||
"temporary_wallet_alias": "local-devnet-operator",
|
||||
"temporary_wallet_persist": true
|
||||
}
|
||||
]
|
||||
}
|
||||
68
config/execution.config.json
Normal file
68
config/execution.config.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"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,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": true,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
{
|
||||
"name": "mainnet_research",
|
||||
"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,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": false,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
},
|
||||
{
|
||||
"name": "mainnet",
|
||||
"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,
|
||||
"localnet_send_enabled": false,
|
||||
"devnet_send_enabled": false,
|
||||
"testnet_send_enabled": false,
|
||||
"mainnet_send_enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -3,67 +3,17 @@
|
||||
"sources": {
|
||||
"logging": "config/logging.config.json",
|
||||
"transport": "config/transport.config.json",
|
||||
"listeners": "config/listeners.config.json"
|
||||
"listeners": "config/listeners.config.json",
|
||||
"store": "config/store.config.json",
|
||||
"wallet": "config/wallet.config.json",
|
||||
"execution": "config/execution.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
|
||||
"environment": "development"
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
@@ -74,129 +24,35 @@
|
||||
"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
|
||||
"environment": "research"
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
},
|
||||
"logging_profile": "mainnet_research",
|
||||
"transport_profile": "mainnet_research",
|
||||
"listeners_profile": "mainnet_research",
|
||||
"store_profile": "mainnet_research",
|
||||
"wallet_profile": "mainnet_research",
|
||||
"execution_profile": "mainnet_research"
|
||||
},
|
||||
{
|
||||
"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
|
||||
"environment": "mainnet"
|
||||
},
|
||||
"demo": {
|
||||
"live_demo_enabled": true,
|
||||
"trading_demo_enabled": false
|
||||
}
|
||||
},
|
||||
"logging_profile": "mainnet",
|
||||
"transport_profile": "mainnet",
|
||||
"listeners_profile": "mainnet",
|
||||
"store_profile": "mainnet",
|
||||
"wallet_profile": "mainnet",
|
||||
"execution_profile": "mainnet"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,202 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"active_profile": "mainnet_research",
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -34,8 +34,7 @@
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"environment",
|
||||
"auto_reconnect_default"
|
||||
"environment"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
@@ -43,238 +42,6 @@
|
||||
},
|
||||
"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
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -300,7 +67,10 @@
|
||||
"required": [
|
||||
"logging",
|
||||
"transport",
|
||||
"listeners"
|
||||
"listeners",
|
||||
"store",
|
||||
"wallet",
|
||||
"execution"
|
||||
],
|
||||
"properties": {
|
||||
"logging": {
|
||||
@@ -311,6 +81,15 @@
|
||||
},
|
||||
"listeners": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"store": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"wallet": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"execution": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -320,13 +99,6 @@
|
||||
"required": [
|
||||
"name",
|
||||
"app",
|
||||
"logging_profile",
|
||||
"transport_profile",
|
||||
"listeners_profile",
|
||||
"database",
|
||||
"data",
|
||||
"wallet",
|
||||
"execution",
|
||||
"demo"
|
||||
],
|
||||
"properties": {
|
||||
@@ -336,6 +108,9 @@
|
||||
"app": {
|
||||
"$ref": "#/$defs/app_section"
|
||||
},
|
||||
"demo": {
|
||||
"$ref": "#/$defs/demo"
|
||||
},
|
||||
"logging_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
@@ -345,20 +120,14 @@
|
||||
"listeners_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"database": {
|
||||
"$ref": "#/$defs/database"
|
||||
"store_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"data": {
|
||||
"$ref": "#/$defs/data"
|
||||
"wallet_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"wallet": {
|
||||
"$ref": "#/$defs/wallet"
|
||||
},
|
||||
"execution": {
|
||||
"$ref": "#/$defs/execution"
|
||||
},
|
||||
"demo": {
|
||||
"$ref": "#/$defs/demo"
|
||||
"execution_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
127
config/schemas/execution.config.schema.json
Normal file
127
config/schemas/execution.config.schema.json
Normal file
@@ -0,0 +1,127 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schemas/execution.config.schema.json",
|
||||
"title": "Khadhroony Solana execution policy configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"default_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"default_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/profile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"localnet_send_enabled",
|
||||
"devnet_send_enabled",
|
||||
"testnet_send_enabled",
|
||||
"mainnet_send_enabled",
|
||||
"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": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"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
|
||||
},
|
||||
"mainnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"testnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"devnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"localnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,11 +5,11 @@
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"active_profile",
|
||||
"default_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"active_profile": {
|
||||
"default_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
|
||||
@@ -5,11 +5,15 @@
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"active_profile",
|
||||
"logs_directory",
|
||||
"default_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"active_profile": {
|
||||
"logs_directory": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"default_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
"name",
|
||||
"app",
|
||||
"database",
|
||||
"data",
|
||||
"solana",
|
||||
"wallet",
|
||||
"execution",
|
||||
@@ -48,9 +47,6 @@
|
||||
"database": {
|
||||
"$ref": "#/$defs/database"
|
||||
},
|
||||
"data": {
|
||||
"$ref": "#/$defs/data"
|
||||
},
|
||||
"solana": {
|
||||
"$ref": "#/$defs/solana"
|
||||
},
|
||||
@@ -70,8 +66,7 @@
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"environment",
|
||||
"auto_reconnect_default"
|
||||
"environment"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
@@ -79,9 +74,6 @@
|
||||
},
|
||||
"environment": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"auto_reconnect_default": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -173,22 +165,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
"solana": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -516,11 +492,7 @@
|
||||
"cluster",
|
||||
"temporary_wallet_enabled",
|
||||
"temporary_wallet_alias",
|
||||
"temporary_wallet_persist",
|
||||
"localnet_send_enabled",
|
||||
"devnet_send_enabled",
|
||||
"testnet_send_enabled",
|
||||
"mainnet_send_enabled"
|
||||
"temporary_wallet_persist"
|
||||
],
|
||||
"properties": {
|
||||
"wallet_dir": {
|
||||
@@ -540,18 +512,6 @@
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -559,6 +519,10 @@
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"localnet_send_enabled",
|
||||
"devnet_send_enabled",
|
||||
"testnet_send_enabled",
|
||||
"mainnet_send_enabled",
|
||||
"dry_run_default",
|
||||
"require_simulation",
|
||||
"require_operator_confirmation",
|
||||
@@ -630,6 +594,18 @@
|
||||
"devnet_airdrop_max_lamports": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"mainnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"testnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"devnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"localnet_send_enabled": {
|
||||
"type": "boolean"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
133
config/schemas/store.config.schema.json
Normal file
133
config/schemas/store.config.schema.json
Normal file
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schemas/store.config.schema.json",
|
||||
"title": "Khadhroony Solana store configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"default_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"default_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/profile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"database"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"database": {
|
||||
"$ref": "#/$defs/database"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,13 +5,21 @@
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"active_profile",
|
||||
"default_profile",
|
||||
"ws_endpoint_defaults",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"active_profile": {
|
||||
"default_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"ws_endpoint_defaults": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/ws_endpoint_defaults"
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
@@ -77,72 +85,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"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,
|
||||
@@ -195,6 +137,120 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ws_endpoint_defaults": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"connect_timeout_ms",
|
||||
"request_timeout_ms",
|
||||
"unsubscribe_timeout_ms",
|
||||
"write_channel_capacity",
|
||||
"event_channel_capacity",
|
||||
"auto_reconnect"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ws_overrides": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"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"
|
||||
}
|
||||
}
|
||||
},
|
||||
"ws_endpoint_source": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"defaults",
|
||||
"enabled",
|
||||
"provider",
|
||||
"cluster",
|
||||
"url",
|
||||
"roles"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"defaults": {
|
||||
"$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?://"
|
||||
},
|
||||
"overrides": {
|
||||
"$ref": "#/$defs/ws_overrides"
|
||||
},
|
||||
"roles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/endpoint_role"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
@@ -218,7 +274,7 @@
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/ws_endpoint"
|
||||
"$ref": "#/$defs/ws_endpoint_source"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
68
config/schemas/wallet.config.schema.json
Normal file
68
config/schemas/wallet.config.schema.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://khadhroony.local/schemas/wallet.config.schema.json",
|
||||
"title": "Khadhroony Solana wallet configuration",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"wallets_directory",
|
||||
"default_profile",
|
||||
"profiles"
|
||||
],
|
||||
"properties": {
|
||||
"wallets_directory": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"default_profile": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"profiles": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"$ref": "#/$defs/profile"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$defs": {
|
||||
"non_empty_string": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"profile": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"name",
|
||||
"directory",
|
||||
"cluster",
|
||||
"temporary_wallet_enabled",
|
||||
"temporary_wallet_alias",
|
||||
"temporary_wallet_persist"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"$ref": "#/$defs/non_empty_string"
|
||||
},
|
||||
"directory": {
|
||||
"$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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
68
config/store.config.json
Normal file
68
config/store.config.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "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
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "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
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "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
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,5 +1,25 @@
|
||||
{
|
||||
"active_profile": "mainnet_research",
|
||||
"default_profile": "local_devnet",
|
||||
"ws_endpoint_defaults": [
|
||||
{
|
||||
"name": "standard_rpc_ws",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 256,
|
||||
"event_channel_capacity": 1024,
|
||||
"auto_reconnect": false
|
||||
},
|
||||
{
|
||||
"name": "high_capacity_rpc_ws",
|
||||
"connect_timeout_ms": 5000,
|
||||
"request_timeout_ms": 10000,
|
||||
"unsubscribe_timeout_ms": 1500,
|
||||
"write_channel_capacity": 512,
|
||||
"event_channel_capacity": 4096,
|
||||
"auto_reconnect": false
|
||||
}
|
||||
],
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
@@ -97,12 +117,7 @@
|
||||
"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,
|
||||
"defaults": "standard_rpc_ws",
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
@@ -406,12 +421,7 @@
|
||||
"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,
|
||||
"defaults": "standard_rpc_ws",
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
@@ -448,12 +458,7 @@
|
||||
"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,
|
||||
"defaults": "high_capacity_rpc_ws",
|
||||
"roles": [
|
||||
{
|
||||
"role": "logs_subscribe",
|
||||
@@ -751,12 +756,7 @@
|
||||
"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,
|
||||
"defaults": "standard_rpc_ws",
|
||||
"roles": [
|
||||
{
|
||||
"role": "slot_notifications",
|
||||
@@ -793,12 +793,7 @@
|
||||
"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,
|
||||
"defaults": "high_capacity_rpc_ws",
|
||||
"roles": [
|
||||
{
|
||||
"role": "logs_subscribe",
|
||||
|
||||
30
config/wallet.config.json
Normal file
30
config/wallet.config.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"wallets_directory": "${KS_WALLETS_DIRECTORY:-wallets}",
|
||||
"default_profile": "local_devnet",
|
||||
"profiles": [
|
||||
{
|
||||
"name": "local_devnet",
|
||||
"directory": "temporary/local_devnet",
|
||||
"cluster": "devnet",
|
||||
"temporary_wallet_enabled": true,
|
||||
"temporary_wallet_alias": "local-devnet-operator",
|
||||
"temporary_wallet_persist": true
|
||||
},
|
||||
{
|
||||
"name": "mainnet_research",
|
||||
"directory": "temporary/mainnet_research",
|
||||
"cluster": "mainnet-beta",
|
||||
"temporary_wallet_enabled": false,
|
||||
"temporary_wallet_alias": "mainnet_research-disabled",
|
||||
"temporary_wallet_persist": false
|
||||
},
|
||||
{
|
||||
"name": "mainnet",
|
||||
"directory": "temporary/mainnet",
|
||||
"cluster": "mainnet-beta",
|
||||
"temporary_wallet_enabled": false,
|
||||
"temporary_wallet_alias": "mainnet-disabled",
|
||||
"temporary_wallet_persist": false
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user