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)
view/js/g1wallet.js— key derivation, signing, session management, event APIvendor/scrypt-js-3.0.1.min.js— already present, pinnedg1wallet.php— entry point (done)g1wallet_renderer.php— unlock form, unlocked interface (skeleton done)g1wallet_spool.php— pubkey store, broadcast relay (stubs done)- Orchestrator additions — broadcast and balance endpoints in main.py
- Widget, PDL, CSS (done)
- Integration test against Duniter standard key derivation
Runtime Config
Copy config.json.template to config.json on the host. Do not commit config.json.