From 066d969f5adfe30bba6fdfd87a0eccfc3784d897 Mon Sep 17 00:00:00 2001 From: SinuS Von SifriduS Date: Mon, 10 Aug 2026 23:14:17 +0200 Subject: [PATCH] v0.5.2-pre.006 --- .env.example | 4 + Cargo.toml | 4 +- config/README.md | 3 +- config/exemples/example.transport.config.json | 1 + config/exemples/example.wallet.config.json | 7 +- .../schemas/resolved.app.config.schema.json | 9 + config/schemas/wallet.config.schema.json | 9 + config/transport.config.json | 1 + config/wallet.config.json | 3 + docs/DEVNET_EXECUTION_GUIDE.md | 6 +- docs/guides/CONFIGURATION.md | 4 +- .../V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md | 16 +- kb-app-demo-desktop/CHANGELOG.md | 29 +- kb-app-demo-desktop/README.md | 3 +- kb-app-demo-desktop/USAGE.md | 41 +- kb-app-demo-desktop/capabilities/default.json | 1 + kb-app-demo-desktop/frontend/demo_wallet.html | 245 ++++++++ kb-app-demo-desktop/frontend/main.html | 5 +- .../frontend/ts/demo_wallet.ts | 532 +++++++++++++++++ kb-app-demo-desktop/frontend/ts/main.ts | 6 +- kb-app-demo-desktop/src/demo_config.rs | 6 +- kb-app-demo-desktop/src/demo_wallet.rs | 559 ++++++++++++++++++ kb-app-demo-desktop/src/lib.rs | 27 +- kb-app-demo-desktop/src/tauri.rs | 55 +- kb-app-demo-desktop/vite.config.ts | 3 +- ks-config/CHANGELOG.md | 8 +- ks-config/README.md | 3 +- ks-config/USAGE.md | 18 +- ks-config/src/lib.rs | 4 +- ks-config/src/settings.rs | 28 +- ks-config/src/wallet.rs | 63 +- ks-pipeline-demo-scenarios/CHANGELOG.md | 9 +- ks-pipeline-demo-scenarios/Cargo.toml | 5 +- ks-pipeline-demo-scenarios/README.md | 5 +- ks-pipeline-demo-scenarios/USAGE.md | 8 +- .../src/bin/ks_pipeline_demo_scenarios_cli.rs | 22 +- ks-pipeline-demo-scenarios/src/lib.rs | 10 +- .../devnet_execution.rs | 4 +- .../metaplex_token_metadata/fixture.rs | 4 +- .../solana_program/devnet_execution.rs | 4 +- .../src/metadata/solana_program/fixture.rs | 4 +- ks-pipeline-demo-scenarios/src/solana.rs | 172 +++++- .../src/spl/associated_token_account.rs | 6 +- ks-pipeline-demo-scenarios/src/spl/memo.rs | 4 +- .../src/spl/token/execution.rs | 4 +- .../src/spl/token/lifecycle.rs | 6 +- .../src/spl/token_2022/devnet_execution.rs | 4 +- .../src/spl/token_2022/fixture.rs | 28 +- .../src/spl/token_2022/metadata/fixture.rs | 4 +- ks-wallet/CHANGELOG.md | 7 +- ks-wallet/TODO.md | 12 +- 51 files changed, 1937 insertions(+), 88 deletions(-) create mode 100644 kb-app-demo-desktop/frontend/demo_wallet.html create mode 100644 kb-app-demo-desktop/frontend/ts/demo_wallet.ts create mode 100644 kb-app-demo-desktop/src/demo_wallet.rs diff --git a/.env.example b/.env.example index a5db952..b900906 100644 --- a/.env.example +++ b/.env.example @@ -17,6 +17,10 @@ KS_SECRET_POSTGRES_TEST_URL=postgres://solana:solana@localhost:5432/khadhroony_t # Optional binary composition override for the desktop demo. # KB_APP_DEMO_DESKTOP_CONFIG_PATH=config/kb-app-demo-desktop.default.config.json +# Optional backend-only password used by the Wallets demo when creating a native .kswallet. +# Never expose this value through HTML, TypeScript, Tauri payloads or logs. +# KB_SECRET_DEMO_WALLET_PASSWORD=replace-with-a-local-demo-password + # Optional direct logging configuration override. When absent, the desktop uses the path declared by its composition. # KS_LOGGING_CONFIG_PATH=config/logging.config.json # KS_LOGS_DIRECTORY=logs diff --git a/Cargo.toml b/Cargo.toml index 801720c..f8db108 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ # file: Cargo.toml -# version: 62 +# version: 63 [workspace] resolver = "3" @@ -18,7 +18,7 @@ members = [ ] [workspace.package] -version = "0.5.2-pre.5" +version = "0.5.2-pre.6" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-bot3" diff --git a/config/README.md b/config/README.md index 3d68997..5f2105b 100644 --- a/config/README.md +++ b/config/README.md @@ -1,5 +1,5 @@ - + # Configuration locale @@ -90,6 +90,7 @@ Actuellement : - `logging.config.json.logs_directory` vaut `${KS_LOGS_DIRECTORY:-logs}` ; - `wallet.config.json.wallets_directory` vaut `${KS_WALLETS_DIRECTORY:-wallets}`. +- un profil wallet peut sélectionner un wallet natif persistant avec `wallet_alias`; le champ est optionnel/non sensible et ne contient jamais de mot de passe ni de matériau privé. Ces valeurs peuvent être remplacées par l'environnement ou `.env` sans dupliquer un chemin dans tous les profils. diff --git a/config/exemples/example.transport.config.json b/config/exemples/example.transport.config.json index 2d4b8c7..1f432b2 100644 --- a/config/exemples/example.transport.config.json +++ b/config/exemples/example.transport.config.json @@ -67,6 +67,7 @@ "get_recent_performance_samples", "get_recent_prioritization_fees", "get_signature_statuses", + "get_signatures_for_address", "get_slot", "get_slot_leader", "get_slot_leaders", diff --git a/config/exemples/example.wallet.config.json b/config/exemples/example.wallet.config.json index 883fc26..b1dcb98 100644 --- a/config/exemples/example.wallet.config.json +++ b/config/exemples/example.wallet.config.json @@ -6,9 +6,10 @@ "name": "local_devnet", "directory": "temporary/local_devnet", "cluster": "devnet", - "temporary_wallet_enabled": true, - "temporary_wallet_alias": "local-devnet-operator", - "temporary_wallet_persist": true + "wallet_alias": "example-operator", + "temporary_wallet_enabled": false, + "temporary_wallet_alias": "example-temporary-disabled", + "temporary_wallet_persist": false } ] } diff --git a/config/schemas/resolved.app.config.schema.json b/config/schemas/resolved.app.config.schema.json index 9ef2b43..11db3ce 100644 --- a/config/schemas/resolved.app.config.schema.json +++ b/config/schemas/resolved.app.config.schema.json @@ -477,6 +477,15 @@ "cluster": { "$ref": "#/$defs/non_empty_string" }, + "wallet_alias": { + "type": [ + "string", + "null" + ], + "minLength": 1, + "maxLength": 64, + "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$" + }, "temporary_wallet_enabled": { "type": "boolean" }, diff --git a/config/schemas/wallet.config.schema.json b/config/schemas/wallet.config.schema.json index 8e450ac..aa000c3 100644 --- a/config/schemas/wallet.config.schema.json +++ b/config/schemas/wallet.config.schema.json @@ -50,6 +50,15 @@ "cluster": { "$ref": "#/$defs/non_empty_string" }, + "wallet_alias": { + "type": [ + "string", + "null" + ], + "minLength": 1, + "maxLength": 64, + "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$" + }, "temporary_wallet_enabled": { "type": "boolean" }, diff --git a/config/transport.config.json b/config/transport.config.json index 88afdfa..9899fef 100644 --- a/config/transport.config.json +++ b/config/transport.config.json @@ -67,6 +67,7 @@ "get_recent_performance_samples", "get_recent_prioritization_fees", "get_signature_statuses", + "get_signatures_for_address", "get_slot", "get_slot_leader", "get_slot_leaders", diff --git a/config/wallet.config.json b/config/wallet.config.json index 35fa41a..9b86b55 100644 --- a/config/wallet.config.json +++ b/config/wallet.config.json @@ -6,6 +6,7 @@ "name": "local_devnet", "directory": "temporary/local_devnet", "cluster": "devnet", + "wallet_alias": null, "temporary_wallet_enabled": true, "temporary_wallet_alias": "local-devnet-operator", "temporary_wallet_persist": true @@ -14,6 +15,7 @@ "name": "mainnet_research", "directory": "temporary/mainnet_research", "cluster": "mainnet-beta", + "wallet_alias": null, "temporary_wallet_enabled": false, "temporary_wallet_alias": "mainnet_research-disabled", "temporary_wallet_persist": false @@ -22,6 +24,7 @@ "name": "mainnet", "directory": "temporary/mainnet", "cluster": "mainnet-beta", + "wallet_alias": null, "temporary_wallet_enabled": false, "temporary_wallet_alias": "mainnet-disabled", "temporary_wallet_persist": false diff --git a/docs/DEVNET_EXECUTION_GUIDE.md b/docs/DEVNET_EXECUTION_GUIDE.md index 720588c..06541a0 100644 --- a/docs/DEVNET_EXECUTION_GUIDE.md +++ b/docs/DEVNET_EXECUTION_GUIDE.md @@ -1,5 +1,5 @@ - + # Guide d’exécution Devnet @@ -103,6 +103,8 @@ Arrêter avec `Ctrl+C`, puis relancer `T01`. cd ~/Projects/khadhroony-bot3 && set -o pipefail && export KS_DEVNET_PROFILE="local_devnet" && export KS_DEVNET_RPC_URL="https://api.devnet.solana.com" && export KS_DEVNET_VALIDATION_DIR="/tmp/devnet-validation/current" && export KS_DEVNET_WALLET="$PWD/wallets/temporary/local_devnet/local-devnet-operator.json" && mkdir -p "$KS_DEVNET_VALIDATION_DIR" && printf 'Profil : %s\n' "$KS_DEVNET_PROFILE" && printf 'RPC Devnet : %s\n' "$KS_DEVNET_RPC_URL" && printf 'Preuves : %s\n' "$KS_DEVNET_VALIDATION_DIR" && printf 'Wallet : %s\n' "$KS_DEVNET_WALLET"; ``` +`KS_DEVNET_WALLET` reste ici un **fichier Solana CLI JSON explicite** utilisé par les commandes externes historiques. Un fichier natif `.kswallet` ne doit jamais être fourni directement à `solana-keygen`, `solana` ou `spl-token`. Lorsqu'un opérateur part d'un wallet natif, il doit produire volontairement un export `SolanaCliJson` via `ks-wallet`, l'utiliser pour la campagne bornée, puis gérer explicitement ce fichier privé. Aucun export automatique n'est déclenché par les scénarios. + ### C02 — Capturer les versions CLI ```bash @@ -246,6 +248,8 @@ cargo run -p ks-pipeline-demo-scenarios --bin ks-pipeline-demo-scenarios-cli -- Lorsque `--rpc-url` et `--wallet` sont omis, la commande utilise respectivement `KS_DEVNET_RPC_URL` et `KS_DEVNET_WALLET`. Lorsque `--wallet-dir` est omis, elle utilise le répertoire parent du wallet. +`--wallet` / `KS_DEVNET_WALLET` acceptent uniquement le fichier keypair compatible Solana CLI. La commande refuse explicitement l'extension `.kswallet` afin d'empêcher qu'un conteneur natif protégé soit traité comme un keypair CLI. + La commande : - crée silencieusement les keypairs manquants avec des permissions `0600` ; diff --git a/docs/guides/CONFIGURATION.md b/docs/guides/CONFIGURATION.md index 8cfa1d4..814e2c5 100644 --- a/docs/guides/CONFIGURATION.md +++ b/docs/guides/CONFIGURATION.md @@ -1,5 +1,5 @@ - + # Guide de configuration @@ -130,7 +130,7 @@ Les classes actuelles couvrent le RPC WS standard et le RPC WS à capacité plus ## Wallet et politique d'exécution -Les propriétés de stockage/identité du wallet appartiennent à `wallet.config.json`. +Les propriétés de stockage/identité du wallet appartiennent à `wallet.config.json`. Un profil peut définir le champ optionnel `wallet_alias` pour sélectionner un wallet natif persistant par alias. Son omission ou `null` signifie qu’aucun wallet persistant n’est sélectionné. Le champ est non sensible et ne contient jamais de mot de passe, de keypair ou de chemin de fichier individuel. Les autorisations : diff --git a/docs/plans/V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md b/docs/plans/V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md index d123ad6..16ff068 100644 --- a/docs/plans/V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md +++ b/docs/plans/V0_5_2_KS_WALLET_RESTRUCTURING_PLAN.md @@ -1,5 +1,5 @@ - + # Plan `0.5.2` — restructuration de `ks-wallet` @@ -537,13 +537,15 @@ La tranche `pre.003` reste structurelle ; le cycle de vie protégé est activé ### `0.5.2-pre.006` — configuration et consommateurs -- sélection par alias dans `ks-config` sans secret ; -- adaptation `ks-pipeline-demo-scenarios` ; -- adaptation desktop uniquement via DTO sûrs ; -- résolution explicite des workflows CLI legacy ; -- tests d'intégration et canaris de non-divulgation. +- [x] `wallet_alias` optionnel/nullable dans les profils `wallet.config.json`, propagé dans `WalletConfig` sans secret et rétrocompatible avec les documents `0.5.1` qui omettent ce champ ; +- [x] sélection/inspection/unlock du wallet natif configuré dans `ks-pipeline-demo-scenarios`, avec password fourni uniquement à l'API runtime ; +- [x] fallback temporaire interdit lorsqu'un alias persistant est explicitement sélectionné ; +- [x] DTO desktop possédés par `kb-app-demo-desktop` pour liste/inspection : alias, pubkey déclarée, version et sélection uniquement ; +- [x] aucune commande Tauri de password/unlock et aucun type runtime sensible `ks-wallet` sérialisé vers le frontend ; +- [x] workflow CLI Token-2022 explicitement limité au format Solana CLI JSON et rejet des `.kswallet` ; +- [x] tests de configuration, sélection persistante, unlock explicite, refus du fallback et canaris de non-divulgation. -Cette tranche ne doit pas devenir la refonte générale des scénarios prévue pour `0.5.4`. +Cette tranche ne devient pas la refonte générale des scénarios prévue pour `0.5.4`. Les campagnes existantes restent temporaires lorsque `wallet_alias = null`; leur migration fonctionnelle vers un wallet persistant avec acquisition sécurisée du password appartient au consommateur qui choisit d'activer cette sélection. ### `0.5.2-pre.007` — finalisation diff --git a/kb-app-demo-desktop/CHANGELOG.md b/kb-app-demo-desktop/CHANGELOG.md index 9b9cbba..27ae291 100644 --- a/kb-app-demo-desktop/CHANGELOG.md +++ b/kb-app-demo-desktop/CHANGELOG.md @@ -1,8 +1,35 @@ - + # CHANGELOG — kb-app-demo-desktop +## `0.5.2-pre.006-delta-fix-003` + +- ajoute dans `Wallets` un sélecteur explicite de profil RPC pour l’explorateur on-chain ; le profil actif reste la valeur initiale mais Devnet/Mainnet peuvent être interrogés sans redémarrer l’application ni modifier `active_profile` ; +- route `getBalance`, `getTokenAccountsByOwner`, `getSignaturesForAddress` et `getTransaction` à travers le profil sélectionné et non plus obligatoirement à travers le pool HTTP actif ; +- borne la commande RPC dédiée à la démo wallet aux trois lectures génériques nécessaires aux tokens et à l’historique, tandis que le solde garde son adaptateur typé ; +- conserve la gestion locale des `.kswallet` sur le profil applicatif actif : la sélection RPC de l’explorateur ne déplace ni ne recrée les fichiers wallet. + +## `0.5.2-pre.006-delta-fix-002` + +- complète la fenêtre `Wallets` avec la création de `.kswallet` dans le store du profil actif ; le password est lu uniquement côté backend depuis `KB_SECRET_DEMO_WALLET_PASSWORD` et ne traverse jamais HTML, TypeScript ou les arguments Tauri ; +- ajoute un explorateur public on-chain réutilisant le transport HTTP configuré : solde SOL exact, comptes SPL Token et Token-2022, signatures récentes impliquant l’adresse et détail `getTransaction` via le JsonViewer commun ; +- étend le rôle `http_queries` Devnet avec `get_signatures_for_address` afin que l’explorateur fonctionne sur `local_devnet` comme sur les profils Mainnet déjà dotés des rôles d’historique ; +- ajoute des DTO TS-RS applicatifs sûrs, des canaris frontend/backend de non-divulgation et des tests statiques de câblage pour les nouvelles commandes. + +## `0.5.2-pre.006-delta-fix-001` + +- ajoute la fenêtre frontend `demo_wallet.html` et son contrôleur `demo_wallet.ts` sur le même gabarit Bootstrap/Simplebar que les autres démonstrations ; +- ajoute `open_demo_wallet_window`, l'entrée `Wallets` dans le menu `Démos` de `main.html`, l'entrée Vite multipage et la capability Tauri `demo_wallet` ; +- permet de rafraîchir l'inventaire sûr des `.kswallet` et d'inspecter explicitement un fichier externe par chemin sans afficher ce chemin dans le résultat ; +- ajoute un test statique de câblage frontend afin que la présence du backend `demo_wallet` ne puisse plus être validée sans fenêtre réellement ouvrable. + +## `0.5.2-pre.006` + +- ajoute des DTO TS-RS possédés par le desktop pour l'inventaire des wallets natifs : alias, pubkey déclarée, version et état de sélection uniquement ; +- ajoute des commandes Tauri lecture seule pour lister le store configuré et inspecter un `.kswallet` sélectionné explicitement hors store, sans retourner son chemin ; +- expose l'alias persistant sélectionné uniquement dans le diagnostic wallet borné et ajoute des canaris interdisant password, ciphertext, nonce, sel et chemins de stockage dans les DTO. + ## `0.5.1-pre.008` - Fix: remplace les snapshots `ks-onchain-transport` retournés directement par les commandes Tauri HTTP/WS par des DTO desktop sanitisés, fait supprimer l’URL des snapshots backend et supprime `endpointUrl` des payloads d’exécution/statut et ajoute des canaris empêchant toute URL résolue de traverser le frontend. Supprime également le chemin local du fixture Token-2022 des payloads fonctionnels et des erreurs affichées. diff --git a/kb-app-demo-desktop/README.md b/kb-app-demo-desktop/README.md index 95609db..3fc5f7e 100644 --- a/kb-app-demo-desktop/README.md +++ b/kb-app-demo-desktop/README.md @@ -1,5 +1,5 @@ - + # kb-app-demo-desktop @@ -8,6 +8,7 @@ ## Fonctionnalités - configuration et diagnostics de logging ; +- fenêtre Wallets dédiée : inventaire sûr des identités `.kswallet`, création d’un conteneur persistant via un secret backend-only, inspection explicite d’un fichier externe et exploration publique du solde SOL, des comptes SPL Token / Token-2022 et des transactions récentes sur un profil RPC explicitement sélectionnable ; - transport HTTP JSON-RPC et WebSocket ; - diagnostics PostgreSQL ; - backfill, extraction Core et replay, avec enregistrement générique de Solana Program Metadata ; diff --git a/kb-app-demo-desktop/USAGE.md b/kb-app-demo-desktop/USAGE.md index 224893e..3bd55ae 100644 --- a/kb-app-demo-desktop/USAGE.md +++ b/kb-app-demo-desktop/USAGE.md @@ -1,5 +1,5 @@ - + # Utilisation de kb-app-demo-desktop @@ -7,6 +7,43 @@ L’application expose une interface opérateur pour diagnostiquer, simuler et valider les couches de bot3. +## Surface wallet sûre + +Le backend desktop peut lister les `.kswallet` du répertoire configuré, créer un wallet natif protégé, inspecter un fichier sélectionné explicitement ailleurs et explorer l’état on-chain d’une adresse publique. Les DTO frontend ne contiennent jamais de matériau secret. Aucun password, chemin interne du store, sel, nonce, ciphertext ou byte privé n’est renvoyé par Tauri. + +La fenêtre `Wallets`, accessible depuis le menu `Démos` de `main`, fournit quatre surfaces : + +- inventaire des wallets natifs du profil actif ; +- création d’un nouveau `.kswallet` dans le store du profil actif ; +- explorateur public on-chain ; +- inspection structurale d’un `.kswallet` explicite situé hors du store. + +### Créer un wallet natif depuis la démo + +Le mot de passe de création ne doit pas traverser le frontend ou Tauri IPC. La démo lit uniquement côté backend le secret applicatif : + +```bash +export KB_SECRET_DEMO_WALLET_PASSWORD='mot-de-passe-de-demo' +cargo tauri dev -c kb-app-demo-desktop/tauri.conf.json +``` + +Le secret peut aussi être placé dans le fichier `.env` local chargé par `ks-config`. Le vrai `.env` reste non versionné et ne doit jamais être archivé. L’UI ne reçoit qu’un booléen indiquant si ce secret backend est configuré. + +La création demande uniquement l’alias. Elle crée `.kswallet` dans le répertoire wallet résolu du profil actif et ne modifie pas automatiquement `wallet_alias` dans la configuration. Un changement de valeur de `KB_SECRET_DEMO_WALLET_PASSWORD` avant une autre session permet d’utiliser un autre mot de passe pour de nouveaux wallets ; ce secret de démonstration n’est pas un mot de passe global du format `.kswallet`. + +### Explorer une adresse sur un profil RPC sélectionné + +L’explorateur on-chain ne déverrouille aucun wallet : seule la pubkey publique est nécessaire. Le bouton `Explorer` d’un wallet inventorié remplit l’adresse automatiquement ; toute autre pubkey Solana peut également être saisie. + +Les lectures utilisent le transport HTTP du profil choisi dans le sélecteur `Profil RPC` de la fenêtre Wallets. Le profil actif est sélectionné par défaut, mais `local_devnet`, `mainnet_research` ou tout autre profil HTTP résolu peut être choisi sans redémarrer l’application : + +- `getBalance` pour le solde SOL exact en lamports ; +- `getTokenAccountsByOwner` pour les comptes SPL Token classique et Token-2022 ; +- `getSignaturesForAddress` pour les signatures récentes des transactions qui référencent l’adresse ; +- `getTransaction` à la demande pour afficher le détail JSON d’une signature. + +La liste est donc intitulée **transactions impliquant l’adresse** : elle ne prétend pas que le wallet a initié ou signé chaque transaction retournée. Le profil `local_devnet` interroge Devnet ; `mainnet_research` ou `mainnet` interrogent Mainnet Beta. La sélection utilisée par l’explorateur est locale à cette fenêtre : elle ne modifie pas `active_profile`, la configuration du workspace ni le profil utilisé par les autres démos. + ## Lancer le desktop Depuis la racine du workspace : @@ -54,6 +91,7 @@ Les autres fenêtres sont ouvertes par les commandes Tauri dédiées : - diagnostics SQL ; - candidats replay ; - configuration ; +- wallets ; - extraction Core ; - decode replay ; - exécution Solana Core ; @@ -68,6 +106,7 @@ Les commandes Tauri constituent l’interface applicative frontend/backend. Elle ```typescript import { invoke } from "@tauri-apps/api/core"; +await invoke("open_demo_wallet_window"); await invoke("open_demo_http_window"); await invoke("open_demo_ws_window"); await invoke("open_demo_decode_replay_window"); diff --git a/kb-app-demo-desktop/capabilities/default.json b/kb-app-demo-desktop/capabilities/default.json index b0d0f3b..6848785 100644 --- a/kb-app-demo-desktop/capabilities/default.json +++ b/kb-app-demo-desktop/capabilities/default.json @@ -6,6 +6,7 @@ "splash", "main", "demo_config", + "demo_wallet", "demo_http", "demo_ws", "demo_backfill", diff --git a/kb-app-demo-desktop/frontend/demo_wallet.html b/kb-app-demo-desktop/frontend/demo_wallet.html new file mode 100644 index 0000000..4f6d6eb --- /dev/null +++ b/kb-app-demo-desktop/frontend/demo_wallet.html @@ -0,0 +1,245 @@ + + + + + + + + + + + Khadhroony Bot3 — Wallets + + + +
+ +
+ +
+
+
+
+
+
+
+
+
+

Wallets natifs configurés

+

Inventaire des fichiers .kswallet du profil actif.

+
+ +
+
+
Profil
+
+
Cluster
+
+
Statut
+
Chargement...
+
Alias sélectionné
+
+
Wallets trouvés
+
0
+
+
+ + + + + + + + + + + +
AliasPubkey déclaréeFormatSélectionnéAction
+
+
+
+
+ +
+
+
+

Créer un wallet natif

+

Le mot de passe ne traverse jamais Tauri IPC. Cette démo utilise le secret backend KB_SECRET_DEMO_WALLET_PASSWORD.

+
+ Secret backend : + +
+ + +
+ +
+
+ Statut : + En attente +
+

La création n'écrit pas automatiquement wallet_alias dans la configuration. Elle ajoute seulement le nouveau conteneur au store du profil actif.

+
+
+
+ +
+
+
+
+
+

Explorateur on-chain

+

Lecture publique du solde SOL, des comptes SPL Token / Token-2022 et de l'historique récent impliquant l'adresse sur le profil RPC sélectionné.

+
+ +
+
+
+ + +
Cluster :
+
+
+ + +
+
+ + +
+
+
+
+
+
SOL
+
SOL
+
lamports
+
+
+
+
+
Comptes token
+
+
En attente
+
+
+
+
+
Transactions récentes
+
+
En attente
+
+
+
+
+ Statut global : + En attente +
+
+
+
+ +
+
+
+

Tokens détenus

+
+ + + + + + + + + + + +
ProgrammeMintCompte tokenMontantRaw
+
+
+
+
+ +
+
+
+

Transactions impliquant l'adresse

+
+ + + + + + + + + + + + +
SignatureSlotDateStatutConfirmationAction
+
+
+
+
+ +
+
+
+

Détail de transaction

+
{"status":"idle","message":"Sélectionner une transaction."}
+
+
+
+ +
+
+
+

Inspecter un fichier externe

+

Le chemin saisi est transmis au backend uniquement pour cette inspection et n'est pas retourné dans le résultat.

+ + +
+ + +
+
+ Statut : + En attente +
+
+
+
+ +
+
+
+

Identité inspectée

+
{"status":"idle","message":"Aucun fichier inspecté."}
+
+
+
+
+
+
+
+ +
+
+
+
© 2026 SASEDEV
+
+
+
+ + + + \ No newline at end of file diff --git a/kb-app-demo-desktop/frontend/main.html b/kb-app-demo-desktop/frontend/main.html index 05ac84c..ffcf7cd 100644 --- a/kb-app-demo-desktop/frontend/main.html +++ b/kb-app-demo-desktop/frontend/main.html @@ -1,5 +1,5 @@ - + @@ -26,6 +26,7 @@