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:
{
"tx": {
"@type": "/cosmos.tx.v1beta1.Tx",
"body": {
"messages": [
{
"@type": "/ostracon.v1.Extend",
"entropy": {
"round": 1,
"proof": "xxxxxxxx"
}
}
]
}
}
}
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.
For Admin Use
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:
{ "tx": { "@type": "/cosmos.tx.v1beta1.Tx", "body": { "messages": [ { "@type": "/ostracon.v1.Extend", "entropy": { "round": 1, "proof": "xxxxxxxx" } } ] } } }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