Mobile nodes have proven slow and unreliable, fake Layer 2's that rely on centralized swaps from Lightning gateways are expensive, and opening a channel to every app and device is cost prohibitive and unscalable. Both solutions still don't let you receive payments while offline trustlessly.
Sharing an always-online self-custodial node with friends and family, the "Uncle Jim" method, has lacked adequate tooling to simplify networking and account setup... until now.
ShockWallet is the first wallet to use Nostr based accounts for Lightning Network connections, providing a new, open, and secure way to connect to the Lightning Network.
Additionally, ShockWallet supports connecting to multiple-nodes simultaneously, and is leading the way in automation by allowing you setup recurring payments or pre-authorize external applications or services requesting a payment.
As a Nostr-native wallet, ShockWallet provides multi-device sync abilities via NIP78, enabling for example a shared wallet state between a Desktop and Phone.
We're also pushing the boundries of Nostr and Lightning integration with CLINK that create more secure app connections with better UX than is currently available.
For new users, an optional Bootstrap node is default on mainnet allowing for the lay-away of a self-custodied channel for your own node with a partner LSP. Service subject to Terms
-
ShockWallet and Lightning.Pub make connecting to your node as easy as pasting an nprofile
-
You can even use a link to share your nprofile with friends and family
-
Built with React and Ionic, builds for Web Browser, Android APK, or Apple iOS are available from a single code-base.
-
This is a reference wallet client for Lightning.Pub and also contains the beginnings of a node management dashboard.
Warning
There will be bugs and bad UX decisions, please report any that you may find.
Important
ShockWallet and Lightning.Pub are free software. If you would like to see continued development, please show your support 😊
Clone the repo and install
git clone https://github.com/shocknet/wallet2
cd wallet2 && npm i
npm install -g @ionic/cli native-run cordova-res
cp .env.production.example .env
nano .env
to customize
Run dev server
npm run dev
or, build for production as static files
npm run build:web
Example Caddy configuration for serving:
your-domain.com {
encode zstd gzip
handle {
root * /path/to/your/wallet2/dist
try_files {path} /index.html
file_server
}
header {
# Prevent clickjacking
X-Frame-Options "SAMEORIGIN"
Content-Security-Policy "frame-ancestors 'self'"
}
}
npm run build:android
npm run build:ios