Skip to content

Entropy as a tx #722

@ulbqb

Description

@ulbqb

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

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned

Metadata

Metadata

Assignees

No one assigned

    Labels

    C: proposalClassification: Proposal for specification, algorithm, architecture, or communicationStaleFor github bot

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions