As an effort to communicate better the research done and to open the space for criticism and discussions, I plan going forward to create a topic here for each topic that I work on.
To bootstrap this, I will share the RSKIP that I worked last quarter and updated this quarter: Fork-Aware Consensus. This is based on Sergio’s series of proposals to improve fork detection. RSKIP link.
Following here a quick summary to those who can’t open the link.
What is Fork-Aware Consensus?
It is a possible replacement for Armadillo where we take the idea of verifying RSK tags from the Armadillo node on BTC to each RSK node instead. To do this, we change the extendedData field on RSK block headers to include a new element carrying data from BTC coinbase transactions. We call this extension the Fork-Balance Proof.
What is Included in the Fork-Balance Proof?
Take any RSK block A, merged-mined with BTC block B (not necessarily broadcast on the BTC network due to difficulty). We include in A’s Fork-Balance Proof the last bytes of the coinbase transaction included in the PARENT BLOCK of B, as well as other fields to prove that these bytes are correct, belong to the correct block and that this block is indeed B’s parent.
What is the logic behind detection?
The logic is the same as Armadillo: We look for tags that include the hash of blocks we cannot identify in the canonical chain (+uncles). The difference is that we check this continuously for each block and build a metric based on the proportion of these tags we find. When this proportion is above a certain threshold, we trigger a flag on blocks to signal that a hidden fork is very likely to exist.
What users/nodes do with this information?
The main objective of fork-aware consensus is to bring awareness to the user. We don’t expect them to filter blocks, but we expect them to hold on high value or sensitive transactions, and perhaps delay confirmation using this information, cutting incentives to the possible attacker.
Finally, this is not implemented yet and it can coexist with Armadillo as long as we need, so the project may change over time.