Git Product home page Git Product logo

devkit-wallet's Introduction

Bitcoindevkit Android Demo Wallet


๐Ÿ“ฃ Note: the advanced-features version of this app is now developed as part of the bitcoindekvit GitHub organization under the name bdk-kotlin-example-wallet.


The Android Devkit Demo Bitcoin Wallet (we're calling it Devkit Wallet for short) is a simple testnet Bitcoin wallet built as a reference app for the bitcoindevkit on Android. It is purposely lean on Android-specific bells and whistles in order to keep the focus on bitcoin fundamentals and the bitcoindevkit API.

The repository is built to help newcomers to the bitcoindevkit by layering complexity slowly while not adding too much UI polish to the app.

The repository works in the following way: multiple apps are maintained in parallel, each of them focusing on a specific version of the app.

  1. The default app is simple-wallet. It builds a simple bitcoin wallet which implements the core functionality one would expect from a wallet: create onchain addresses, send, receive, display transaction history, and wallet recovery. It builds BIP-84 (P2PKH) compatible wallets.
  2. The advanced-features app showcases the more advanced features of the library.
  3. The ui app builds the basic design and UI without any bitcoin-related functionality.

Feature list

simple-wallet app

  • Receive
  • Send
  • Sync wallet using Electrum
  • Retrieve transaction history
  • Wallet recovery using BIP39 recovery phrases

advanced-features app

  • Send to multiple recipients
  • "Send All" functionality
  • Replace-by-Fee (BIP125)
  • Choose custom Electrum server
  • Create OP_RETURN outputs
  • Partial signatures on PSBTs

Design Choices

The Devkit Wallet makes rather opinionated choices regarding its design and architecture, all with the goal of being as helpful to potential bitcoindevkit developers exploring the library and looking for a working example. The end users of this application are developers, not real users. Here are some of these choices:

  1. Be lean on Android-specific bells and whistles.
  2. Return types are explicitly stated for all code that touches bitcoin, even when the IDE doesn't like it.
  3. Some bugs are left in and considered acceptable if squashing them requires a lot of polish/boilerplate code that does not add to the understanding of the Bitcoin Development Kit.
  4. Errors are not always communicated back to the user on-screen (for example through polished snackbars) for similar reasons as (3); if something is not working, take a look a the logcat output.
  5. The wallet does not make use of string resources. This makes the codebase easier to search and simpler to parse on GitHub and platforms where the IDE doesn't show inline replacements of the string resources. In short, string resources, while a best practice, do not improve readability, the prime focus of theses sample applications.

Companion Documentation Website

You can find the companion tutorial website for this repository here. Note that as of 2023, the website is fairly outdated. If you find it useful and are looking to contribute, I would happily merge updates to the tutorial website!

To learn more about the bitcoindevkit, check out the official website here.

devkit-wallet's People

Contributors

darkvoid32 avatar notmandatory avatar prakhar-agarwal-byte avatar shobitb avatar thunderbiscuit avatar tohrxyz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

devkit-wallet's Issues

Remove string resources

I think this would help keep the wallet searchable, and string resources, while a best practice, do not improve readability, the prime focus of this sample application.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.