Bitcoin Cash Protocol

About

Style GuideContributorsTarget AudienceProject History

Basics

Blockchain basicsProtocol hashing algorithms — Memory Pool

Transactions

Bitcoin TransactionUnlocking ScriptLocking Script

Blocks

Bitcoin blocksBlock headerMerkle TreeTransaction Ordering

Script (Bitcoin transaction language)

ScriptOperation codes (opcodes)

Transaction validation

Transaction ValidationBlock-Level Validation RulesNetwork-Level Validation Rules

Proof of Work (PoW)

Proof of WorkDifficulty Adjustment AlgorithmMining — Stratum Protocol — Mining Pools

Addresses

Pay To Public Key (P2PK) — Pay To Public Key Hash (P2PKH) — Pay To Script Hash (P2SH) — Base 58 encoding (legacy) — Cashaddr encoding

Cryptography

Secp256k1 — Public Key — Private Key — ECDSA signatures — Schnorr signatures — N-of-M multisig signatures

Network upgrades

Bip-16Bip-34Bip-37Bip-64Bip-65Bip-66Bip-68Bip-112Bip-113Bip-157Bip-158Bip-159 — BCH-UAHF (BUIP-55) — HF-20171113 — HF-20180515 — HF-20181115 — HF-20190515 — HF-20191115

Network protocol

Network MessagesHandshake

Announcement messages

filteraddfilterclearfilterloadinv

Request messages

feefilter — getaddr — getblocksgetdatagetheadersping — sendheaders — version

Response messages

addr — block — headers — notfound — merkleblockpongreject — tx — verack

Other messages (extensions)

sendcmpct — get_xthin — xthinblock — thinblock — get_xblocktx — xblocktx —xverackxversion

Simple Payment Verification (SPV)

Bloom Filters

Simple Ledger Protocol

Miscellaneous

Endian