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.
1251return ser_vector(self.addrs, "serialize_v2")1253def __repr__(self):1254return "msg_addrv2(addrs=%s)" % (repr(self.addrs))1257class msg_sendaddrv2:1258__slots__ = ()1259msgtype = b"sendaddrv2"1261def __init__(self):1262pass1264def deserialize(self, f):1265pass1267def serialize(self):1268return b""1270def __repr__(self):1271return "msg_sendaddrv2()"1274class msg_inv:1275__slots__ = ("inv",)1276msgtype = b"inv"1278def __init__(self, inv=None):1279if inv is None:1280self.inv = []1281else:1282self.inv = inv1284def deserialize(self, f):1285self.inv = deser_vector(f, CInv)1287def serialize(self):1288return ser_vector(self.inv)1290def __repr__(self):1291return "msg_inv(inv=%s)" % (repr(self.inv))1294class msg_getdata:1295__slots__ = ("inv",)1296msgtype = b"getdata"1298def __init__(self, inv=None):1299self.inv = inv if inv is not None else []1301def deserialize(self, f):1302self.inv = deser_vector(f, CInv)1304def serialize(self):1305return ser_vector(self.inv)1307def __repr__(self):1308return "msg_getdata(inv=%s)" % (repr(self.inv))1311class msg_getblocks:1312__slots__ = ("locator", "hashstop")1313msgtype = b"getblocks"1315def __init__(self):1316self.locator = CBlockLocator()1317self.hashstop = 01319def deserialize(self, f):1320self.locator = CBlockLocator()1321self.locator.deserialize(f)1322self.hashstop = deser_uint256(f)1324def serialize(self):1325r = b""1326r += self.locator.serialize()1327r += ser_uint256(self.hashstop)1328return r1330def __repr__(self):1331return "msg_getblocks(locator=%s hashstop=%064x)" \1332% (repr(self.locator), self.hashstop)1335class msg_tx:1336__slots__ = ("tx",)1337msgtype = b"tx"1339def __init__(self, tx=None):1340if tx is None:1341self.tx = CTransaction()1342else:1343self.tx = tx1345def deserialize(self, f):1346self.tx.deserialize(f)1348def serialize(self):1349return self.tx.serialize_with_witness()1351def __repr__(self):1352return "msg_tx(tx=%s)" % (repr(self.tx))1354class msg_wtxidrelay:1355__slots__ = ()1356msgtype = b"wtxidrelay"1358def __init__(self):1359pass1361def deserialize(self, f):1362pass1364def serialize(self):1365return b""1367def __repr__(self):1368return "msg_wtxidrelay()"1371class msg_no_witness_tx(msg_tx):1372__slots__ = ()1374def serialize(self):1375return self.tx.serialize_without_witness()1378class msg_block:1379__slots__ = ("block",)1380msgtype = b"block"1382def __init__(self, block=None):1383if block is None:1384self.block = CBlock()1385else:1386self.block = block1388def deserialize(self, f):1389self.block.deserialize(f)1391def serialize(self):1392return self.block.serialize()1394def __repr__(self):1395return "msg_block(block=%s)" % (repr(self.block))1398# Generic type to control the raw bytes sent over the wire.1399# The msgtype and the data must be provided.1400class msg_generic:1401__slots__ = ("msgtype", "data")1403def __init__(self, msgtype, data=None):1404self.msgtype = msgtype1405self.data = data1407def serialize(self):1408return self.data1410def __repr__(self):1411return "msg_generic()"1414class msg_no_witness_block(msg_block):1415__slots__ = ()1416def serialize(self):1417return self.block.serialize(with_witness=False)1420class msg_getaddr:1421__slots__ = ()1422msgtype = b"getaddr"1424def __init__(self):1425pass1427def deserialize(self, f):1428pass1430def serialize(self):1431return b""1433def __repr__(self):1434return "msg_getaddr()"1437class msg_ping:1438__slots__ = ("nonce",)1439msgtype = b"ping"1441def __init__(self, nonce=0):1442self.nonce = nonce1444def deserialize(self, f):1445self.nonce = int.from_bytes(f.read(8), "little")1447def serialize(self):1448r = b""1449r += self.nonce.to_bytes(8, "little")1450return r1452def __repr__(self):1453return "msg_ping(nonce=%08x)" % self.nonce1456class msg_pong:1457__slots__ = ("nonce",)1458msgtype = b"pong"1460def __init__(self, nonce=0):1461self.nonce = nonce1463def deserialize(self, f):1464self.nonce = int.from_bytes(f.read(8), "little")1466def serialize(self):1467r = b""1468r += self.nonce.to_bytes(8, "little")1469return r1471def __repr__(self):1472return "msg_pong(nonce=%08x)" % self.nonce1475class msg_mempool:1476__slots__ = ()1477msgtype = b"mempool"1479def __init__(self):1480pass1482def deserialize(self, f):1483pass1485def serialize(self):1486return b""1488def __repr__(self):1489return "msg_mempool()"1492class msg_notfound:1493__slots__ = ("vec", )1494msgtype = b"notfound"1496def __init__(self, vec=None):1497self.vec = vec or []1499def deserialize(self, f):1500self.vec = deser_vector(f, CInv)
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.