bitcoinj
A library for working with Bitcoin
...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. Highly optimized lightweight simplified payment verification (SPV) mode. In this mode, only a small part of the blockchain is downloaded, making bitcoin 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. ...