Three bugs found by integration testing against the C++ testnet daemon:
1. NetworkIDMainnet/Testnet had byte 10 swapped — the C++ #ifndef TESTNET
branch (mainnet) sets P2P_NETWORK_ID_TESTNET_FLAG=1, and the #else
(testnet) sets it to 0. Counter-intuitive but matches compiled binaries.
2. ClientVersion format "Lethean/go-blockchain 0.1.0" was rejected by the
daemon's parse_client_version which expects "major.minor.rev.build[commit]".
Changed to "6.0.1.2[go-blockchain]".
3. RequestChain, RequestGetObjects, and ResponseGetObjects used StringArrayVal
for hash fields, but the C++ daemon uses KV_SERIALIZE_CONTAINER_POD_AS_BLOB
which packs all 32-byte hashes into a single concatenated blob. Also,
ResponseChainEntry.m_block_ids is an object array of block_context_info
(hash + cumulative size), not a simple hash list.
Co-Authored-By: Charon <charon@lethean.io>
Add consensus/ package with doc.go and sentinel error types for all
validation failures. Add MaxTransactionBlobSize constant to config.
Co-Authored-By: Charon <charon@lethean.io>
Add NetworkIDMainnet and NetworkIDTestnet 16-byte UUIDs for P2P
handshake, ClientVersion constant, and NetworkID field to ChainConfig.
Add local replace directive for forge.lthn.ai/core/go-p2p.
Co-Authored-By: Charon <charon@lethean.io>