Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1502def serialize(self):1503return ser_vector(self.vec)1505def __repr__(self):1506return "msg_notfound(vec=%s)" % (repr(self.vec))1509class msg_sendheaders:1510__slots__ = ()1511msgtype = b"sendheaders"1513def __init__(self):1514pass1516def deserialize(self, f):1517pass1519def serialize(self):1520return b""1522def __repr__(self):1523return "msg_sendheaders()"1526# getheaders message has1527# number of entries1528# vector of hashes1529# hash_stop (hash of last desired block header, 0 to get as many as possible)1530class msg_getheaders:1531__slots__ = ("hashstop", "locator",)1532msgtype = b"getheaders"1534def __init__(self):1535self.locator = CBlockLocator()1536self.hashstop = 01538def deserialize(self, f):1539self.locator = CBlockLocator()1540self.locator.deserialize(f)1541self.hashstop = deser_uint256(f)1543def serialize(self):1544r = b""1545r += self.locator.serialize()1546r += ser_uint256(self.hashstop)1547return r1549def __repr__(self):1550return "msg_getheaders(locator=%s, stop=%064x)" \1551% (repr(self.locator), self.hashstop)1554# headers message has1555# <count> <vector of block headers>1556class msg_headers:1557__slots__ = ("headers",)1558msgtype = b"headers"1560def __init__(self, headers=None):1561self.headers = headers if headers is not None else []1563def deserialize(self, f):1564# comment in bitcoind indicates these should be deserialized as blocks1565blocks = deser_vector(f, CBlock)1566for x in blocks:1567self.headers.append(CBlockHeader(x))1569def serialize(self):1570blocks = [CBlock(x) for x in self.headers]1571return ser_vector(blocks)1573def __repr__(self):1574return "msg_headers(headers=%s)" % repr(self.headers)1577class msg_merkleblock:1578__slots__ = ("merkleblock",)1579msgtype = b"merkleblock"1581def __init__(self, merkleblock=None):1582if merkleblock is None:1583self.merkleblock = CMerkleBlock()1584else:1585self.merkleblock = merkleblock1587def deserialize(self, f):1588self.merkleblock.deserialize(f)1590def serialize(self):1591return self.merkleblock.serialize()1593def __repr__(self):1594return "msg_merkleblock(merkleblock=%s)" % (repr(self.merkleblock))1597class msg_filterload:1598__slots__ = ("data", "nHashFuncs", "nTweak", "nFlags")1599msgtype = b"filterload"1601def __init__(self, data=b'00', nHashFuncs=0, nTweak=0, nFlags=0):1602self.data = data1603self.nHashFuncs = nHashFuncs1604self.nTweak = nTweak1605self.nFlags = nFlags1607def deserialize(self, f):1608self.data = deser_string(f)1609self.nHashFuncs = int.from_bytes(f.read(4), "little")1610self.nTweak = int.from_bytes(f.read(4), "little")1611self.nFlags = int.from_bytes(f.read(1), "little")1613def serialize(self):1614r = b""1615r += ser_string(self.data)1616r += self.nHashFuncs.to_bytes(4, "little")1617r += self.nTweak.to_bytes(4, "little")1618r += self.nFlags.to_bytes(1, "little")1619return r1621def __repr__(self):1622return "msg_filterload(data={}, nHashFuncs={}, nTweak={}, nFlags={})".format(1623self.data, self.nHashFuncs, self.nTweak, self.nFlags)1626class msg_filteradd:1627__slots__ = ("data")1628msgtype = b"filteradd"1630def __init__(self, data):1631self.data = data1633def deserialize(self, f):1634self.data = deser_string(f)1636def serialize(self):1637r = b""1638r += ser_string(self.data)1639return r1641def __repr__(self):1642return "msg_filteradd(data={})".format(self.data)1645class msg_filterclear:1646__slots__ = ()1647msgtype = b"filterclear"1649def __init__(self):1650pass1652def deserialize(self, f):1653pass1655def serialize(self):1656return b""1658def __repr__(self):1659return "msg_filterclear()"1662class msg_feefilter:1663__slots__ = ("feerate",)1664msgtype = b"feefilter"1666def __init__(self, feerate=0):1667self.feerate = feerate1669def deserialize(self, f):1670self.feerate = int.from_bytes(f.read(8), "little")1672def serialize(self):1673r = b""1674r += self.feerate.to_bytes(8, "little")1675return r1677def __repr__(self):1678return "msg_feefilter(feerate=%08x)" % self.feerate1681class msg_sendcmpct:1682__slots__ = ("announce", "version")1683msgtype = b"sendcmpct"1685def __init__(self, announce=False, version=2):1686self.announce = announce1687self.version = version1689def deserialize(self, f):1690self.announce = bool(int.from_bytes(f.read(1), "little"))1691self.version = int.from_bytes(f.read(8), "little")1693def serialize(self):1694r = b""1695r += int(self.announce).to_bytes(1, "little")1696r += self.version.to_bytes(8, "little")1697return r1699def __repr__(self):1700return "msg_sendcmpct(announce=%s, version=%lu)" % (self.announce, self.version)1703class msg_cmpctblock:1704__slots__ = ("header_and_shortids",)1705msgtype = b"cmpctblock"1707def __init__(self, header_and_shortids = None):1708self.header_and_shortids = header_and_shortids1710def deserialize(self, f):1711self.header_and_shortids = P2PHeaderAndShortIDs()1712self.header_and_shortids.deserialize(f)1714def serialize(self):1715r = b""1716r += self.header_and_shortids.serialize()1717return r1719def __repr__(self):1720return "msg_cmpctblock(HeaderAndShortIDs=%s)" % repr(self.header_and_shortids)1723class msg_getblocktxn:1724__slots__ = ("block_txn_request",)1725msgtype = b"getblocktxn"1727def __init__(self):1728self.block_txn_request = None1730def deserialize(self, f):1731self.block_txn_request = BlockTransactionsRequest()1732self.block_txn_request.deserialize(f)1734def serialize(self):1735r = b""1736r += self.block_txn_request.serialize()1737return r1739def __repr__(self):1740return "msg_getblocktxn(block_txn_request=%s)" % (repr(self.block_txn_request))1743class msg_blocktxn:1744__slots__ = ("block_transactions",)1745msgtype = b"blocktxn"1747def __init__(self):1748self.block_transactions = BlockTransactions()1750def deserialize(self, f):
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.