-
Notifications
You must be signed in to change notification settings - Fork 144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🛑 Remove PreEvaluationBlock
#3744
Comments
Meaning of genesis blockFor now, After above change applied, there's no way to prove some state is a result state of Now For the genesis block, it meant "world setter transactions" and "state after world setter transactions" previously, but this have to be redefined. IMO, What we have to decide is, whether define genesis block as
From a different point of view, we can remove genesis block, starting 1st block with consensus. |
How to store the nth block's state root hashBelow methods will be added to
|
Redefine StateRootHash
Introduce ProofGenerate random seed from ProofRemove PreEvaluationBlock |
Context
PreEvaluationBlock
played an important role in the days when Libplanet ran on PoW. The idea of HashRandom
, which determines the Hash before executing a transaction and uses it as a Random Seed, has always been a core concept of Libplanet.However, now that the PBFT consensus algorithm has been adopted, there is less reason to use this method. Rather, the problem is that Hash is easy to manipulate, making it easy to use the transaction results as desired.
We attempted to introduce VRF to solve this problem, but it is difficult to introduce VRF in its current form as the StateRootHash of the nth block contains the execution result of the nth block.
Therefore, we would like to proceed with a more flexible and reliable chain consensus by deleting
PreEvaluationBlock
and making StateRootHash look at the execution results of the previous block.Rationale
We must check the point below.
The text was updated successfully, but these errors were encountered: