Ostracon, a consensus algorithm, is forked from Tendermint Core. We have added VRF to Tendermint BFT. It adds randomness to PoS Validator elections and improves security.
I propose that Entropy is moved from Block to Data.txs. I mean, that Entropy is processed as a transaction. This makes Ostracon block the same as Tendermint and solves the problems due to differences of block interfaces.
Problem Definition
Ostracon Block is different from Tendermint's one. We need forks of scan and explorer projects because of block APIs.
Proposal
I want to remove Entropy from Block and introduce Ostracon transaction (OcTx) like this:
Proposer who generates VRF proofs add this transaction to proposal blocks. Validators who get proposal blocks validate Entropy in this transaction before DeliverTx.
Consideration
This change always requires a special module to ABCI clients (finschia-sdk) if a OcTx is delivered to a ABCI client. This makes dependencies between ABCI server and client strong.
If we add a special module, we must guarantee that the number of transactions of this module type is always one in Block. If the module is incorrect, an adversary can do DoS (an adversary can send lots of free transactions because the fee of the module need to be free).
This change doesn't require any change for ABCI clients if a OcTx isn't delivered to a ABCI client. But, the protocol that delivers all transactions in Block is broken.
I think it's a proposal worth considering. It'd be good if it could be opted out through a setting, as it's not incompatibility that is necessarily required for all applications.
Protocol Change Proposal
Summary
I propose that Entropy is moved from Block to Data.txs. I mean, that Entropy is processed as a transaction. This makes Ostracon block the same as Tendermint and solves the problems due to differences of block interfaces.
Problem Definition
Ostracon Block is different from Tendermint's one. We need forks of scan and explorer projects because of block APIs.
Proposal
I want to remove Entropy from Block and introduce Ostracon transaction (OcTx) like this:
Proposer who generates VRF proofs add this transaction to proposal blocks. Validators who get proposal blocks validate Entropy in this transaction before DeliverTx.
Consideration
For Admin Use