# g1wallet — Self-Sovereign Ğ1 Wallet **Version:** 0.1.0 (skeleton) **Spec:** `G1WALLET-SPEC.md` in the repo root --- ## What This Is A self-sovereign Ğ1 wallet embedded in the Civic Infrastructure. Every SASE-verified participant — including the operator — holds their own Ğ1 identity under their own credentials, in their own browser, under their own control. The platform never touches the keys. ## What Is Implemented at This Tag - Addon registration, routing, access state - Wallet unlock form (UI only — no crypto yet) - Unlocked interface placeholder - Compact sidebar widget (locked/unlocked status) - CivicNav registry entry ## What Is Not Yet Implemented - scrypt key derivation (vendor/scrypt-js-3.0.1.min.js is present but not wired) - Ed25519 signing via WebCrypto - Wallet session state (JS) - Pubkey POST to /g1wallet/pubkey - Balance fetch from orchestrator - Broadcast relay to Duniter network ## Build Sequence (from G1WALLET-SPEC.md) 1. `view/js/g1wallet.js` — key derivation, signing, session management, event API 2. `vendor/scrypt-js-3.0.1.min.js` — already present, pinned 3. `g1wallet.php` — entry point (done) 4. `g1wallet_renderer.php` — unlock form, unlocked interface (skeleton done) 5. `g1wallet_spool.php` — pubkey store, broadcast relay (stubs done) 6. Orchestrator additions — broadcast and balance endpoints in main.py 7. Widget, PDL, CSS (done) 8. Integration test against Duniter standard key derivation ## Runtime Config Copy `config.json.template` to `config.json` on the host. Do not commit `config.json`.