How blockstream/green_qt works
Blockstream Green is a non-custodial Bitcoin desktop wallet. The user-facing journey is wallet login or creation, account and network access, then sending or receiving funds; the source tree also shows Lightning, swaps, watch-only access, and hardware-wallet support. The graph separates wallet/session state, transaction capabilities, and device integrations. Several subsystem paths are identified from the tree, but their behavior was not sampled, so unsupported connections are omitted rather than inferred.
Main entry points: loginwithpincontroller.cpp Wallet login · createaccountcontroller.cpp Account creation · lightningsendcontroller.cpp Lightning payments · walletmanager.cpp Wallet registry
Components 19
Application
- Desktop application
src/application.cpp
Wallet and sessions
- Wallet registry
src/models/walletmanager.cpp - Wallet state
src/models/wallet.h - Wallet login
src/loginwithpincontroller.cpp - Wallet context
src/models/context.cpp - Network sessions
src/session.h - Network configuration
src/network.h - Wallet accounts
src/models/account.h - Account creation
src/createaccountcontroller.cpp
Payments and transactions
- Transaction state
src/models/transaction.h - Send and receive
src/createtransactioncontroller.cpp - Lightning payments
src/lightning/lightningsendcontroller.cpp - Bitcoin swaps
src/submarinecontroller.cpp
Wallet integrations
- Hardware devices
src/device.cpp - Jade device support
src/jade/jadedevice.h - Ledger support
src/ledger/ledgerdevice.cpp - AMP2 accounts
src/controllers/lwkamp2accountcontroller.cpp - LWK wallet engine
src/lwk/lwk.cpp
Other components
- Wallet user
Connections 20
- Wallet user → Desktop application: uses
- Desktop application → Wallet registry: manages
- Wallet login → Wallet state: updates
src/loginwithpincontroller.cpp - Wallet login → Wallet registry: registers
src/loginwithpincontroller.cpp - Wallet login → Wallet context: loads
src/loginwithpincontroller.cpp - Wallet login → Network sessions: uses
src/loginwithpincontroller.cpp - Wallet registry → Wallet state: manages
src/models/walletmanager.cpp - Wallet registry → Network configuration: uses
src/models/walletmanager.cpp - Account creation → Wallet accounts: creates
src/createaccountcontroller.cpp - Account creation → Wallet state: uses
src/createaccountcontroller.cpp - Account creation → Wallet context: uses
src/createaccountcontroller.cpp - Account creation → Network sessions: uses
src/createaccountcontroller.cpp - Lightning payments → Wallet context: reads
src/lightning/lightningsendcontroller.cpp - Lightning payments → Wallet accounts: uses
src/lightning/lightningsendcontroller.cpp - Lightning payments → Wallet state: uses
src/lightning/lightningsendcontroller.cpp - Lightning payments → Network sessions: uses
- Bitcoin swaps → Wallet context: uses
src/submarinecontroller.cpp - Bitcoin swaps → LWK wallet engine: uses
src/submarinecontroller.cpp - Jade device support → Hardware devices: implements
src/jade/jadedevice.h - AMP2 accounts → LWK wallet engine: uses