This demo application showcases both Embedded Wallet (EW) and Non-Custodial Wallet (NCW) SDKs from Fireblocks, demonstrating wallet creation, key management, transaction handling, and Web3 capabilities.
The Embedded Wallet SDK is Fireblocks' latest offering that simplifies wallet integration by handling all wallet management logic internally. It uses the NCW SDK as its core library for cryptographic operations while eliminating the need for a custom backend infrastructure.
The NCW SDK provides the core cryptographic functionality for key generation and transaction signing. It serves as the foundation that powers the Embedded Wallet SDK.
- EW SDK is the primary SDK that uses NCW SDK as its core library
- NCW SDK handles key generation and transaction signing operations
- EW SDK manages all wallet operations, user flows, and backend communication
- This architecture eliminates the need for developers to build custom backend services
For the best developer experience and to understand the demo code examples, use the sandboxEmbeddedWalletDebug
build variant:
./gradlew assembleSandboxEmbeddedWalletDebug
-
Create a Firebase Project:
- Go to the Firebase Console
- Create a new project or use an existing one
-
Add Android App:
- Add an Android app to your Firebase project
- Use package name:
com.fireblocks.ewdemo
(recommended for Embedded Wallet)
-
Configure Authentication:
- Enable Google and Apple sign-in providers in Firebase Authentication
- Configure OAuth settings for both providers
-
Download Configuration:
- Download the
google-services.json
file - Place it in the
app/
folder of this project
- Download the
The Embedded Wallet implementation supports two methods for receiving transaction status updates:
- Configuration:
useTransactionPolling = false
inFireblocksManager
(default) - Requirements:
- Set up the Fireblocks minimal backend server (use our EW Backend Demo)
- Create a webhook in the Fireblocks Console
- Configure Firebase Cloud Messaging (FCM) for push notifications
- Benefits: Real-time updates, reduced battery usage, better user experience
- Configuration: Set
useTransactionPolling = true
inFireblocksManager
- Requirements: No additional backend setup needed
- Benefits: Simpler setup, no external dependencies, works out of the box
Note: The demo uses push notifications (useTransactionPolling = false
) by default for optimal performance. You can switch to polling (useTransactionPolling = true
) if you prefer a simpler setup without backend requirements.
The project uses a multi-dimensional flavor structure:
sandbox
- Recommended for development and testingproduction
- For production deploymentsdev
- Internal development (Fireblocks team only)
embeddedWallet
- Uses the EW SDK (recommended)ncw
- Uses the NCW SDK directly
sandboxEmbeddedWalletDebug
(recommended)sandboxNcwDebug
productionEmbeddedWalletRelease
productionNcwRelease
- Clone the repository
- Set up Firebase (see Firebase Setup section above)
- Build the project:
./gradlew assembleSandboxEmbeddedWalletDebug
- Install and run on your device or emulator
For comprehensive documentation, setup guides, and API references:
📖 Fireblocks NCW Developer Guide
The developer guide includes:
- Detailed setup instructions
- API documentation (Javadoc JAR files available)
- Integration examples
- Best practices
- Troubleshooting guides
app/src/
├── main/ # Shared code
├── embeddedWallet/ # EW SDK specific implementations
├── ncw/ # NCW SDK specific implementations
├── sandbox*/ # Sandbox environment configs
├── production*/ # Production environment configs
└── dev*/ # Development environment configs
- 🔐 Wallet Creation & Recovery - Generate new wallets or recover existing ones
- 🔑 Key Management - Secure key generation, backup, and recovery
- 💸 Transactions - Send, receive, and track cryptocurrency transactions with real-time updates
- 🖼️ NFT Support - View, manage, and transfer NFTs across supported networks
- 🌐 Web3 Integration - Connect to dApps and sign Web3 transactions
- 📱 Multi-Device - Add and manage multiple devices per wallet
- 🔒 Biometric Security - Fingerprint and face unlock integration
- 🔔 Push Notifications - Real-time transaction status updates (EW implementation)
- 🎨 Modern UI - Built with Jetpack Compose
For technical support and questions:
- Review the Developer Documentation
- Check the code examples in this demo app
- Contact Fireblocks support for additional assistance