ldk wallet & nostr client for the plebs of tampa, by tampa plebs.
Bay Wallet is a project spawned from the Tampa BitDevs meetup. The goal of the project is to inspire new Bitcoin developers to work on a Bitcoin project in a collaborative environment with experienced Bitcoin developers.
Bay Wallet is built with LDK, a Lightning implementation library. LDK allows developers to create full node implementations wihtout having to use a monolithic node implementation such as LND, Core Lightning, or Eclair. This bodes well for mobile because we can run a full node on the device.
Included with Bay Wallet is a nostr client. Having a nostr client included with a Lightning wallet creates a seamless UX for zaps, community engagement, as well as app support.
Resources
For andorid development (on ubuntu & mac) you need to follow this guide to install Android Studio and setup an emulator.
For Windows follow this guide
The recommended node version is 18, if not installed we recommend using nvm.
If you are having issues with the build, try the following:
yarn clean
# If you are using Windows or Ubuntu
yarn clean:android
Download the code base and install dependencies.
git clone https://github.com/bennyhodl/baywallet.git
cd baywallet
yarn install
# For iOS development
# Upgrade hombrew
brew upgrade
# Pods (Ruby - optional)
sudo gem install cocoapods
# Install Pods (with Ruby)
cd ios && pod install && cd ..
# or if not using Ruby
npx pod-install
Start Bay Wallet!
# Setup react-native for your operating system.
yarn rn-setup
# iOS
yarn ios
# Android
yarn android
List of features that could be supported for Bay Wallet. This list serves as an entrypoint for developers to pick a feature they want to implement. New developers can implement from the list or check out the issues.
Bay Wallet has the goal of being a full nostr client as well as supporting Tampa's meetup, Bitcoin Bay. With chats, marketplaces, and business discovery.
- NIP-01: Basic protocol flow description
- NIP-02: Contact List and Petnames
- NIP-03: OpenTimestamps Attestations for Events
- NIP-04: Encrypted Direct Message
- NIP-05: Mapping Nostr keys to DNS-based internet identifiers
- NIP-06: Basic key derivation from mnemonic seed phrase
- NIP-08: Handling Mentions
- NIP-09: Event Deletion
- NIP-10: Conventions for clients' use of
e
andp
tags in text events - NIP-15: Nostr Marketplace
- NIP-19: bech32-encoded entities
- NIP-20: Command Results
- NIP-21:
nostr:
URL scheme - NIP-23: Long-form Content
- NIP-25: Reactions
- NIP-26: Delegated Event Signing
- NIP-28: Public Chat
- NIP-33: Parameterized Replaceable Events
- NIP-39: External Identities in Profiles
- NIP-40: Expiration Timestamp
- NIP-42: Authentication of clients to relays
- NIP-46: Nostr Connect
- NIP-50: Keywords filter
- NIP-51: Lists
- NIP-56: Reporting
- NIP-57: Lightning Zaps
- NIP-58: Badges
- NIP-65: Relay List Metadata
- Bitcoin only wallet
- Non-custodial
- No processing fees
- No KYC
- Fully open source (MIT)
- Node runs on the device
- On-chain accounts
- NFC payments and requests
- PIN or passphrase encryption
- Privacy mode - hide your sensitive data
- Lightning address send
- Lightning address receive
- Full LNURL support (pay, withdraw, auth, channel)
- Lightning channel management
- MPP/AMP support
- Keysend support
- Fiat currency integrations
- On-chain coin control
- Contact list for easier payments
- Multiple profile types (payments, merchant etc.)
- Notifications
- Flow v2 LSP
- Zero conf channels
Bay Wallet uses esplora
and mempool.space
for the chain backend. To change the Bitcoin environment you can edit the mempoolBackend
in src/util/config.ts
# Regtest
mempool.bitcoinbay.engineering
# Signet
mutinynet.com
# Mainnet
mempool.space