V. Distribute Secure Records
Transaction Records must be distributed to protect against central storage failure.
Widely distributing our immutable transaction record allows us to avoid losing our record to a centralized failure. A copy of the record can be retrieved from any node on the blockchain, even if specific nodes fail. To guarantee our record is distributed on a decentralized system we must establish delivery protocol to circumvent possible network or node failures.
The internet is an existing system that shares the challenge of coordinating decentralized computers. Blockchain systems borrow design decisions from the internet in order to guarantee message delivery. On the internet, and on the blockchain:
- Computers are uniquely identified, such as by an IP address.
- Computers can disconnect and reconnect at any time.
- Computers independently maintain a list of peers to communicate with.
Internet nodes, or computers, share information via peer-to-peer networking. Peer-to-peer messages are sent and received to unique identifiers without a central coordinator. Similarly, blockchain systems use peer-to-peer networking to ensure message delivery. The Blockchain addresses delivery failure by accounting for specific scenarios:
- Messages may get lost on the network and never reach the intended address. A gossip-style messaging protocol obligates each node that receives a message to forward it to its peers. Messages are forwarded until every node has received it.
- Messages may arrive more than once. By identifying messages by their unique Hash Value, nodes can quickly compare messages and ignore duplicates.
- Messages may be received out of chronological order. Blocks contain time-stamped transaction data and block headers that allow nodes to chronologically order the messages they receive.
Peer-to-peer communication maintains active connections. Each node continuously verifies the presence of peers by sending small messages, called “pings,” that receiving nodes respond to with a “pong.” Nodes maintain a list of responsive peers. Blockchain nodes that repeatedly fail to respond are removed from peer lists.
The more nodes on a blockchain the better. Each node establishes unique connections to peers. Over time these overlapping connections form a robust network for information exchange. Information is passed rapidly. The redundancy of connections guarantees that messages proliferate through the network even if individual nodes fail or disconnect.
When a computer first connects to a blockchain network it sends out a ping. If a node receives the ping it adds the hopeful new computer to its peer list, and pongs in reply. The new node receives the pong confirmation and starts its own peer list. A new connection has been established! The blockchain grows by one node.
Blockchain nodes communicate transaction information. Every node maintains its independent copy of the shared transaction history, which it updates according to newly received data. Nodes that disconnect and rejoin blockchain networks receive any transaction data they missed while away. A node with the entire transaction history is called a “full-fledged node.”