Open Simple Token

What is the importance of having originDynasty, originBlockHash while proposing new meta-block on origin chain?


Context: The transition object is reported on origin while proposing meta-block. As per the paper, the transition object contains Latest observation of Origin i.e. Origin dynasty and Origin block hash.

Refer section 2.4 of Mosaic paper.

What is the significance of Latest observation of Origin?


Good question :blush:

In short: we need to be able to identify on origin when origin and auxiliary’s observation of origin diverge. We must declare auxiliary halted if that happens, as it would allow attacks otherwise.

Longer Explanation:
Imagine a running meta-blockchain that consists of an Ethereum origin chain and a Tendermint auxiliary chain.

The validators report their observation of origin to auxiliary. This is for example required to do a Merkle proof of a new kernel. The kernel was created on origin when a new meta-block was opened. In order for auxiliary to know about it by means of a Merkle proof, origin’s state root is transferred to auxiliary.

How is origin’s state root transferred? Validators report origin block headers to auxiliary and finalize origin checkpoints on auxiliary by the rules of Casper FFG. With the important difference that origin is not (and should not be) following the Mosaic validators’ fork choice. Thus, in rare cases it can happen that origin forks away from what has been finalized on auxiliary, e.g. through an origin hard-fork.

Now, if we would not have the latest observation of origin as part of the transition object, we could just continue proposing meta-blocks on origin. Origin wouldn’t know that its state is different from the origin state that was recorded on auxiliary.

We have to avoid that in order to avoid attacks. An example would be that I stake and mint. Afterwards, there is a hard-fork from before when I staked. Now I still own the tokens on origin, as I never staked in its history, but I also own the minted tokens on auxiliary. :moneybag: :cloud_with_lightning: