bitcoin-reading-list
bitcoin-reading-list copied to clipboard
a reading list for learning to program Bitcoin transactions
Programming Bitcoin Reading List and Projects
- 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: Content and Code
- 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
Content
Posts
- 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)
Tutorials
- 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 (Maxwell)
- 2 of 2 escrow example (Maxwell)
- 2 of 3 multisig example (Andresen)
- How to decrypt messages in the blockchain from btcmsg (ripper234)
Papers
- Original bitcoin paper (Satoshi)
- Annotated bitcoin paper (Satoshi / Rap Genius Community)
- Proof of Ownership (Fortin)
- Colored Coins (Rosenfeld)
Specifications
- 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)
Discussion
- There Is No 'From' Address (iwilcox)
- Disentangling Crypto-Coin Mining: Timestamping, Proof-of-Publication, and Validation (Todd)
- Double-spending unconfirmed transactions is a lot easier than most people realise (Todd)
- Replace-by-fee scorched-earth without child-pays-for-parent (Todd / Anonymous)
Videos
- Programming Bitcoin Youtube Channel (Murray)
- How Bitcoin Works Under the Hood (Driscoll)
- Coding Multi-Signature Addresses (D'Angelo)
API Docs
Sidechains
- Tree-chains preliminary summary (Todd)
- Why do people think that side-chains are going to be secure? (Maxwell)
- Discussion on 2-way pegging: is there a way to do bitcoin-staging?
- Sidechains, Treechains, the TL;DR (Sanders)
- Sidechains Explained (Payne)
- Side Chains: The How, The Challenges and the Potential (Buterin)
- Sidechain Technical Feasibility Discussion (discussion)
- Alternative Chains / merged mining
Beyond Payments
- Timelock: time-release encryption incentivised by Bitcoins (Todd / Taaki)
- Decentralized digital asset exchange with honest pricing and market depth (Todd / Mizrahi)
Code
Core
-
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)
Tools
-
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)
Non-currency Applications
-
dissent: decentralized, transferable, and open software license system using the Bitcoin protocol
Python
(Lebo)
Beyond Payments
-
paypub: Trustless payments for information publishing on Bitcoin
C++
(Taaki / Todd)
Miners
-
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)
Wallets
-
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)
Clients
-
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, Litecoin and Bitcoin-Clones Library & RPC Wrapper
C#
(GeorgeKimionis)
Mobile
-
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)
Exchanges
-
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)
Merchant Tools
-
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)
Bots
-
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
Block Exploration
-
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)
Pooling
-
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)
Sites
-
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)