- The goal of this document is to provide a reading list for learning to program Bitcoin transactions
- The theme of this document is practical and pragmatic instruction with the goal of writing code
The document is split into two major sections: Code and Content
- The Content section contains a reading list which emphasizes programming Bitcoin transactions
- The Code section contains a list of open-source bitcoin projects ranging from modern popular tools to early historic implementations
- WIP: please send suggestions to @eigenjoy or open a GitHub issue
- Programming Bitcoin Transaction Scripts (Kofler)
- Developer’s Introduction to Bitcoin (Buterin)
- How Bitcoin Works Under the Hood (Driscoll)
- Bitcoin Developer Guide
- Bitcoin Scripts (Koshy)
- Bitcoins the hard way: Using the raw Bitcoin protocol (Shirriff)
- Bitcoin mining the hard way: the algorithms, protocols, and bytes (Shirriff)
- Proving Your Bitcoin Reserves (Maxwell)
- The libbitcoin Tutorial (Taaki)
- How to Parse the Bitcoin Blockchain (Ratcliff)
- How to extract every single bitcoin transaction from the blockchain and save it to an ASCII comma separated text file (Ratcliff)
- How To Clone Scrypt Based Altcoins for Fun and Profit (shakezula)
- Signing Offline Transactions (greg)
- 2 of 2 escrow example (greg)
- 2 of 3 multisig example (Andresen)
- How to decrypt messages in the blockchain from btcmsg (ripper234)
- Original bitcoin paper (Satoshi)
- Annotated bitcoin paper (Satoshi / Rap Genius Community)
- Proof of Ownership (Fortin)
- Colored Coins (Rosenfeld)
- BIP70: Payments Protocol (Andresen)
- Working with the Payments Protocol (Andresen)
- BIP32: Hierarchical Deterministic (HD) Wallets (Wuille)
- BIP32 Implementation: Money Tree HD Wallet (BitVault)
- Deterministic Wallet
- Technical background of version 1 Bitcoin addresses* Transactions Reference
- Script Reference
- Raw Transactions API
- Colored Coins Protocol Specification (Flavien)
- The Mastercoin Protocol Specification (Gross)
- Counterparty: Financial Instruments (Announcement)
- How Bitcoin Works Under the Hood (Driscoll)
- Coding Multi-Signature Addresses (D'Angelo)
- bitcoin
C++(Satoshi) - bitcoinj: Java implementation of a Bitcoin client-only node
Java(bitcoinj) - bitcoin-qt: Qt GUI for C++ Bitcoin client
C++(laanwj) - bitcoinjs-lib: Bitcoin-related functions implemented in pure JavaScript
JavaScript(bitcoinjs) - btcd: alternative full node bitcoin implementation written in Go
Go(conformal) - bitcore: interface to the bitcoin network
Javascript(BitPay) - cbitcoin low-level bitcoin library in standard C
C(Mitchell) - btcwire: Implements the bitcoin wire protocol - core wire protocol package from btcd
Go(conformal)
- pybitcointools: SImple, common-sense Bitcoin-themed Python ECC library
Python(vbuterin) - bitcointools: Python-based tools for the Bitcoin cryptocurrency system
Python(gavinandresen) - cryptocoin: Python module for working with cryptocurrencies
Python(lyndsysimon) - bitcoin-ruby: bitcoin utils and protocol in ruby.
Ruby(lian) - pycoin: Python-based Bitcoin utility library.
Python(richardkiss) - bitcoin-testnet-box: Create a private, difficulty 1 bitcoin testnet
Shell(freewil) - mastercoin-tools
Javascript(grazcoin)
- dissent: decentralized, transferable, and open software license system using the Bitcoin protocol
Python(Lebo)
- poclbm: PyOpenCL bitcoin miner
Python(m0mchil) - DiabloMiner: OpenCL miner for Bitcoin
Java(Diablo-D3) - cpuminer: CPU miner for bitcoin
C(jgarzik) - Open-Source-FPGA-Bitcoin-Miner: Bitcoin Miner for Altera FPGAs
Verilog(progranism) - jsMiner: A Javascript Bitcoin miner
JavaScript(jwhitehorn) - pyminer: Python miner for bitcoin
Python(jgarzik) - Bitcoin-JavaScript-Miner: A Bitcoin miner implemented in JavaScript.
JavaScript(progranism) - cellminer: Bitcoin miner for the Cell Broadband Engine Architecture
C(verement) - oclminer: OpenCL bitcoin miner
C(tcatm) - Phoenix-Miner: Modular, fast, efficient Bitcoin miner
Python(jedi95) - tumen_miner: An experimental BitCoin miner, which uses WebCL
PHP(temujin9) - Minimal-Bitcoin-Miner: CPU based Bitcoin Miner in C#
C#(lithander)
- coinpunk: self-hosted Bitcoin wallet service
Javascript(kyledrake) - termcoin: A bitcoin wallet for your terminal
Javascript(chjj) - pywallet: bitcoin wallet importer/exporter
Python(joric) - Hive: Bitcoin wallet for OS X
Objective-C(jsuder) - bitaddress.org: JavaScript Client-Side Bitcoin Wallet Generator
Javascript(pointbiz) - Multibit: desktop bitcoin client, powered by bitcoinj
Java(jim618) - bitcoin-wallet: A new kind of Bitcoin client
Python(elis) - picocoin: A small bitcoin client
C(jgarzik) - sx: sx - command line Bitcoin to empower the sysadmin
Python(spesmilo) - Safebit: Chrome app wallet (elis)
- Bitcoin-akka: a client to btcwallet, written in Scala and built on akka (goldmar)
- libbitcoin: libbitcoin asynchronous C++ library for Bitcoin
C++(spesmilo) - electrum: Bitcoin thin client
Python(spesmilo) - BitcoinArmory: Python-Based Bitcoin Software
Python(etotheipi) - bitcoin-js-remote: Javascript remote for bitcoind
JavaScript(tcatm) - bitcoinjs-gui: Bitcoin client implementation in HTML5/JavaScript
JavaScript(bitcoinjs) - bitcoin-php: Bitcoin library for PHP
PHP(mikegogulski) - bitcoin-python: Friendly bitcoin API binding for Python
Python(toomanysecrets0) - python-bitcoinrpc: Python interface to bitcoin's JSON-RPC API
Python(jgarzik) - bitcoinjs: Bitcoin client library in JavaScript using Node.js / MongoDB
javascript(justmoon) - caesure: Python Bitcoin Client
Python(samrushing) - chrome-bitcoin: bitcoin client in chrome
JavaScript(kiba) - node-bitcoin: Communicate with bitcoind via JSON-RPC
JavaScript(freewil) - gocoin: Bitcoin client library for Go / golang
Go(piotrnar) - python-bitcoinlib: Bitcoin library
Python(petertodd) - cbitcoin: A low-level bitcoin library written in standard C.
C(MatthewLM) - GoBit: A Golang implementation of Bitcoin
Go(ThePiachu) - Protocoin: A pure Python Bitcoin protocol implementation
Python(perone) - BitcoinLib: C# Bitcoin-Cli RPC Library & Wrapper for .Net projects
C#(GeorgeKimionis)
- bitcoin-wallet: Bitcoin Wallet app for your Android device
Java(schildbach) - bitcoinApp: bitcoin for iOS devices
Objective-C(udibr) - bitcoin-android: Send and receive bitcoins from your Android phone
Java(barmstrong) - bitcoin-mobile-android
Java(Schaaf) - BitcoinDroid: A thin Android client for Bitcoin
Java(opposablebrain) - CoreBitcoin: Well-documented Bitcoin implementation in Objective-C
C(oleganza) - wallet: Mycelium Bitcoin Wallet for Android
Java(mycelium-com) - BitcoinKit: Cocoa framework for creating Bitcoin wallet apps
C(hivewallet) - BTCSquared: iOS framework for Bluetooth LE transactions
Objective C(Gliph)
- buttercoin: Opensource Bitcoin Exchange
Javascript(buttercoin) - QtBitcoinTrader: Secure Multi Trading Client
C++(JulyIGHOR) - BitWasp: Open Source Bitcoin Marketplace Software
PHP(Bit-Wasp) - bitcoin-central: Bitcoin Central
Ruby(davout) - ZeroReserve: Friend 2 Friend Payment and Bitcoin exchange
C++(zeroreserve) - benjamin: bitcoin trading bot & analytics platform
JavaScript(mathisonian) - Dark-Exchange: Dark Exchange is a distributed p2p exchange for bitcoin.
Clojure(macourtney) - btcnearme: Find Bitcoin traders near you... settle in cash
Ruby(famulus) - bitrated: Bitrated.com - Bitcoin arbitration marketplace
CoffeeScript(shesek) - intersango: bitcoin exchange
PHP(dooglus) - bitwrk: A Bitcoin-friendly, Anonymous Marketplace for Computing Power
Go(indyjo)
- BitPay: Bitcoin payment application
Java(warpi) - bitcoin-wp-e-commerce: Bitcoin payment plugin for WP e-Commerce for WordPress
PHP(mikegogulski) - Magento-Bitcoin-Payment-Module: Magento Payment Gateway Plugin for Bitcoin RPC API
PHP(jalder) - bitcoin-virtuemart: Bitcoin payment plugin for VirtueMart shopping cart for Joomla!
PHP(mikegogulski) - magento-bitcoin: Bitcoin payment module for Magento.
PHP(ticean) - Zen-Cart-Bitcoin-Payment-Module: A payment modules to interact with bitcoind for zen cart.
PHP(jalder) - MultiBitMerchant: A free and open source Bitcoin ecommerce platform, with several representative clients
Java(gary-rowe)
- Bitcoin arbitrage: opportunity detector
Python(maxme) - gekko: A bitcoin trading bot
Node.js(askmike) - Redbit: Automated Bitcoin Trading Bot
Python(hyppo) - ArBit: An automated Bitcoin arbitrage trading program.
Go(goteppo) - cryptrade: Node.js Bitcoin bot for MtGox/Bitstamp/BTC-E/CEX.IO
CoffeeScript(pulsecat) - btc-trader: Robot for Bitcoin trading on BTC-e
Ruby(therussianphysicist) - ga-bitbot: Genetic algorithm trade system for bitcoin
Python
- bitcoin-abe: Abe: block browser for Bitcoin and similar currencies
Python(jtobey) - insight: A bitcoin blockchain API for web wallets
JavaScript(bitpay) - node-bitcoin-explorer: A Block Explorer clone built using node-bitcoin-p2p
JavaScript(bitcoinjs) - btcplex: BTCplex is an open source Bitcoin block chain browser written in Go, it allows you to search and navigate the block chain.
Go(tsileo) - blockparser: Fast, quick and dirty bitcoin blockchain parser
C++(znort987)
- p2pool: Peer-to-peer Bitcoin mining pool
Python(forrestv) - bitcoin-pool: early pooling server
C++(doublec) - What is Pool Hopping? (Perry)
- bitHopper: A python based poolhopper for bitcoin
Python(c00w) - Bitcoin-mining-proxy: Multi-pool, multi-worker proxy for Bitcoin miners
PHP(cdhowie) - stratum-mining: Demo implementation of Bitcoin mining pool on Stratum protocol
Python(slush0)
- petulant-lana: A one-time-payment filehosting site, using Bitcoin
Go(bearbin) - bitstarter-leaderboard: Bitcoin-powered crowdfunder
Javascript(Srinivasan) - feedopensource: Iteratively Fund Open Source Projects With Bitcoin
JavaScript(dominictarr) - Bitcoin-Poker-Room: Sources for Bitcoin Poker Room.
Python(hippich) - BitHub: pay Bitcoin for GitHub commits
Java(WhisperSystems)