bitcoinj – lightweight simplified payment verification (SPV)

bitcoinj is a library for working with the Bitcoin protocol. It can maintain a wallet, send/receive transactions without needing a local copy of Bitcoin Core and has many other advanced features. It’s implemented in Java but can be used from any JVM compatible language: examples in Python and JavaScript are included.

It comes with full documentation and many large, well known Bitcoin apps and services are built on it.

Highly optimised lightweight simplified payment verification (SPV) mode. In this mode, only a small part of the block chain is downloaded, making bitcoinj suitable for usage on constrained devices like smartphones or cheap virtual private servers.

A wallet class with encryption, fee calculation, multi-signing, deterministic key derivation, pluggable coin selection/coin control, extensions support and event listeners that let you stay up to date with changes in your balance.

Provides both async and thread-per-connection for network IO, allowing you to choose between scalability and blocking-only features like SOCKS proxying.

A simple GUI wallet app that you can use as the basis for your own apps. Watch or read a tutorial on how to customise it and build a native installer that does not require Java.

POD Research: Interesting Read:
https://bitcoinj.github.io/#introduction