您的USDC正在按昨天的利率产生收益Quicknode 会自动将其转移到今日最佳的 Morpho 保险库中。已在 7 条链上上线。
制定您的策略Understanding Blockchain Reorgs: Why Block Numbers Don't Matter as Much as You Think
Dive into the intricacies of blockchain reorgs and discover why hashes, not block numbers, are the true backbone of blockchain.

August 23, 2023 — 5 min read

You've probably heard the term "blockchain" tossed around a lot lately, especially if you're venturing into the world of cryptocurrencies. But what exactly does it mean when people talk about a blockchain "reorganization" or "reorg?" And why should you shift your focus away from block numbers and concentrate more on the current hash and the previous hash? Let's break it down in the most understandable terms.
Imagine a blockchain as a chain of digital "blocks." Each block contains a list of transactions, like a page in a ledger. Every new block is meticulously linked to the previous one, forming a secure chain. This chain's integrity guarantees the security of the information contained within.
In the intricate world of blockchain, reorganizations (reorgs) are a standard mechanism for maintaining integrity. Although the term might seem daunting, the concept behind a reorg is more straightforward than you might think.
A blockchain reorg occurs when there's a conflict in the chain, forcing the system to decide which path to follow. It's akin to reaching a fork in the road and having to choose the right direction.
When discussing a blockchain, people often refer to block numbers as if they're paramount. However, fixating on block numbers is akin to obsessing over the page numbers in a book without considering the content within.
What really matters are the "hashes" - think of them as digital fingerprints that connect one block to the next, uniquely identifying each block and its contents.

The actual heroes of the blockchain story are the current hash and the previous hash. These elements connect each block to the preceding one. If you understand the current and previous hashes, you can ascertain the blockchain's essential path and verify the information's integrity.
Picture a series of puzzle pieces. The current hash is the shape of the piece you're holding, and the previous hash is the shape of the connecting piece. If the pieces fit together, you know you're on the right track.
The pseudo-code below illustrates how to handle a blockchain reorg. It emphasizes the hash's importance - the digital fingerprint that links one block to the next - in determining the correct path.
In this example, a reorg is triggered when a new block is added that doesn't align with the existing chain. The blockchain then switches to an alternative path, preserving data integrity.
Though this model is highly simplified for clarity, it serves as a visualization aid to understand how reorgs function.
Now, let's explore the pseudo-code:
class Block:
def __init__(self, previous_hash, transactions):
self.previous_hash = previous_hash
self.transactions = transactions
self.hash = generate_hash(self)
def generate_hash(block):
# Generating a hash from the block's contents
return hash_function(block.previous_hash + block.transactions)
def add_block_to_chain(blockchain, new_block):
last_block = blockchain[-1]
# Check if the new block's previous hash matches the last block's hash
if new_block.previous_hash == last_block.hash:
blockchain.append(new_block)
else:
print("Reorg needed! The block does not fit into the chain.")
# Call the reorganization function to handle the mismatch
handle_reorg(blockchain, new_block)
def handle_reorg(blockchain, new_block):
# Assuming there is a way to get the alternative chain (e.g., from other network nodes)
alternative_chain = get_alternative_chain(new_block)
print("Switching to a new chain!")
# Replacing the current blockchain with the alternative
blockchain.clear()
blockchain.extend(alternative_chain)
# Simulating a blockchain
genesis_block = Block(previous_hash="genesis", transactions="transaction_data_0")
blockchain = [genesis_block]
# Adding blocks that fit into the chain
block1 = Block(previous_hash=genesis_block.hash, transactions="transaction_data_1")
add_block_to_chain(blockchain, block1)
block2 = Block(previous_hash=block1.hash, transactions="transaction_data_2")
add_block_to_chain(blockchain, block2)
# Simulating a reorg by trying to add a block with a mismatched previous hash
reorg_block = Block(previous_hash="different_hash", transactions="transaction_data_3")
add_block_to_chain(blockchain, reorg_block) # This will initiate a reorgThe code snippet captures the essence of how blockchain reorgs are managed, underscoring that it's the hashes, not the block numbers, that form the blockchain's backbone.
What's also vital to understand is that each node (a participant maintaining a copy of the ledger) can experience its own reorgs. Since nodes operate independently and might receive updates at different times, transient inconsistencies can lead to unique reorgs in individual nodes. This variability is why relying on external APIs or third-party services to inform you when a reorg has happened can be misleading. The data source they collected might differ from the API that you're looking at, causing inaccuracies.
For users indexing blockchain data, this complexity underscores the necessity of always validating the information themselves. Self-validation involves focusing on the current and previous hashes, as emphasized in the pseudo-code provided. This process helps navigate through the inherent complexities of reorgs and ensures that you are working with the most accurate and up-to-date version of the blockchain. Relying on your own validation, rather than third-party notifications, is key to upholding the integrity and reliability of any applications or analyses built upon blockchain data.
Blockchain reorgs may appear complex and daunting, but focusing on the current hash and the previous hash simplifies the concept.
The next time you hear about block numbers, remember, it's the hashes that form the real backbone of the blockchain. Understanding these elements demystifies the technology and equips you to interact with it more confidently and knowledgeably.
Happy hashing!
Quicknode 成立于 2017 年,Quicknode 为开发者和企业Quicknode 机构级区块链基础设施。凭借 99.99% 的运行时间以及对 80 多条区块链的支持,各团队能够毫无妥协地构建和扩展链上应用。
将最新的工程见解、产品更新和 Web3 资讯直接发送至您的收件箱。
通过 SOC 2 II 类认证 · ISO 27001