The @ParallelTCG Arena is now OPEN! 🏟️
$2,000 in $PRIME is up for grabs in the first-ever sponsored Arena
This first week is free to enter for all players.
Jump in and compete today!
More details below ⏬
Solana has a stablecoin of its own. $USX is live.
USX is not just collateralized and composable. We already have $166M in TVL.
Paired with YieldVault, USX delivers delta-neutral yield.
Internet Capital Markets can burn bright.
https://t.co/odtL0f92U7
Question: Under what circumstances would one want to wait for a block to enter the Verified state?
Answer:
Zooming out a bit, the block states in Monad are:
1. Proposed (current block aka block N)
2. Voted (block N-1)
3. Finalized (block N-2)
4. Verified (block N-5)
The Proposed, Voted, and Finalized states are due to MonadBFT achieving finality in 2 rounds - they track progression through that pipeline.
The Verified state is due to the delayed merkle root from Asynchronous Execution.
Let's talk about each of these.
Block N-2
Upon receiving block proposal N, the grandparent block (block N-2) becomes Finalized. All of the transactions in block N-2 are definitively enshrined in the ledger.
Block N-1
The parent block (block N-1) is also interesting. This block is very very likely to finalize in Monad because of MonadBFT's fallback strategy in the event of a missed slot. Specifically, if you are seeing block N, then you have access to the QC on block N-1, which (through the fallback mechanism) will get enshrined in the network in almost all cases.
We refer to block N-1 as having speculative finality, and, while it is up to each developer to decide what policy they take), I would say that most apps can confidently display updates to the UI based on speculative finality.
Block N
I also want to point out something about block N, the one we just received. In Monad, because of how state is stored, it's not a big deal for the node to execute a block as soon as it arrives, even though the node can't be sure that this block will end up being enshrined in the ledger.
We refer to this behavior as speculative execution (not to be confused with speculative finality), and it is helpful because it means that when this block does become a grandparent and is finalized, we already did all of the work to execute it.
The reason it's not a big deal to speculatively execute and save the resultant state is because the data structure for state is a versioned merkle trie. A new state root will end up pointing to a lot of the same nodes as the previous one, with some new nodes for anything that changed. If the work gets discarded, the speculative merkle root (and all nodes that no longer depend on it) can be discarded, with the pointer switched to a different merkle root.
Block N-5
Block N-5 is the latest Verified block. Verified means that the merkle root of that block has been confirmed by 2/3 of the network. The reason that it's block N-5 that is Verified, is because block N-2 carries the delayed merkle root for block N-5, and block N causes block N-2 to become finalized.
When would someone want to wait for a block to become Verified?
A merkle root is a checksum of the entire state trie. So, knowing that 2/3 of the network agreed on the merkle root from block N-5 means that 2/3 of the network agrees on every account balance and every storage slot of every smart contract account.
If you are running a node, you knew the results of execution from block N-5 five blocks ago, and you knew that the network finalized the official list of transactions three blocks ago. So as long as you trust yourself to compute the right thing, you could have been done three blocks ago. But if you want to be sure - like if the stakes are very high, if you are a centralized exchange who is about to let someone withdraw a bunch of fiat based on a deposit - then it might be prudent to wait five blocks. That's only 2 seconds, usually.
Similar logic would apply to a bridge operator, such as the nodes in the guardian network of Axelar, LayerZero, or Wormhole. They would probably want to wait those five blocks.
In the future, if a Monad light client is implemented, then the light client user would probably also want to wait five blocks, because light client queries depend on requesting merkle proofs from full nodes, and the light client user would want to base the query on a merkle root verified by a supermajority of the network.
gFort 🏰 The 2nd quest of the Pioneer Stone is live on @GalxeQuest .
Signal your alignment. Every echo makes the Fort stronger. 🪨
Join here → https://t.co/kMU3RtlgEu
#ProofOfFortification
Pioneer Stone 🪨 Campaign is live on @GalxeQuest@Galxe.
Before the gates open, prove you can hear the call.
Early signals unlock early recognition.
Start here → https://t.co/oaiW1fWufU
let's do some speculations
if @anoma allocates 1% to @Shrimpers_nft holders
at $500 million mcap, every holder will receive $1,666
at $1 billion mcap,every holder will receive$3,333
at $3 billion mcap, every holder will receive $10k
with 60 million+ in funding, $3 billion fdv is achievable 🎉