I keep seeing this everywhere. PoVBlock, etc. Can someone share what it stands for and maybe include a link where we can learn more?
PoV stands for Proof-Of-Validity.
This is a specific concept in the parachains protocol which allows validators on Polkadot to execute and verify blocks on the relay chain, which ultimately provides the shared security that Polkadot advertises.
At a high level, for the relay chain to execute a parachain block, it needs:
- The parachain block, which contains the extrinsics.
- The state transition function, which is the Wasm runtime.
- The relevant state which is read to complete the extrinsics.
The PoV is that last bullet point. Basically, the parachain collator will have the entire current state of the chain, and when it produces a new block, it will capture the relevant subset of the state and send it to the relay chain so that it can do it's job and fully execute the block. This is possible because we use a merkle trie, and thus do not need the full state in order to verify the state transition, just the relevant nodes which can be used to recompute the new state root.
The PoV has a maximum limit for parachain blocks. On Polkadot it is currently configured to 5 MB so that there are limits to how long it could take to gossip that information to the relevant Polkadot validators. This is of relevance since this limit can be reached quite quickly depending on the operations your node is doing, and thus limit the number of transaction you can include in a single parachain block.