Skip to content

Custom abci interface to extended Tendermint abci interface #688

@ulbqb

Description

@ulbqb

Protocol Change Proposal

Note
This proposal is not breaking change.

Summary

I propose to make current Ostracon ABCI interface extended Tendermint abci interface.

Problem Definition

Many things must be done to leverage the cosmos ecosystem.

This proposal reduces tasks for abci interface diff.

Proposal

I propose following changes.

- message RequestBeginBlock {
-   bytes                          hash                    = 1;
-   tendermint.types.Header        header                  = 2 [(gogoproto.nullable) = false];
-   tendermint.abci.LastCommitInfo last_commit_info        = 3 [(gogoproto.nullable) = false];
-   repeated tendermint.abci.Evidence byzantine_validators = 4 [(gogoproto.nullable) = false];
- 
-   // *** Ostracon Extended Fields ***
-   ostracon.types.Entropy entropy = 1000 [(gogoproto.nullable) = false];
- }

+ message RequestPreBeginBlock {
+   ostracon.types.Entropy entropy = 1 [(gogoproto.nullable) = false];
+ }
+ 
+ message ResponsePreBeginBlock {}

service ABCIApplication {
  rpc Echo(tendermint.abci.RequestEcho) returns (tendermint.abci.ResponseEcho);
  rpc Flush(tendermint.abci.RequestFlush) returns (tendermint.abci.ResponseFlush);
  rpc Info(tendermint.abci.RequestInfo) returns (tendermint.abci.ResponseInfo);
  rpc SetOption(tendermint.abci.RequestSetOption) returns (tendermint.abci.ResponseSetOption);
  rpc DeliverTx(tendermint.abci.RequestDeliverTx) returns (tendermint.abci.ResponseDeliverTx);
  rpc CheckTx(tendermint.abci.RequestCheckTx) returns (ResponseCheckTx);
  rpc Query(tendermint.abci.RequestQuery) returns (tendermint.abci.ResponseQuery);
  rpc Commit(tendermint.abci.RequestCommit) returns (tendermint.abci.ResponseCommit);
  rpc InitChain(tendermint.abci.RequestInitChain) returns (tendermint.abci.ResponseInitChain);
-   rpc BeginBlock(RequestBeginBlock) returns (tendermint.abci.ResponseBeginBlock);
+   rpc PreBeginBlock(PreRequestBeginBlock) returns (PreResponseBeginBlock);
+   rpc BeginBlock(tendermint.abci.RequestBeginBlock) returns (tendermint.abci.ResponseBeginBlock);
  rpc EndBlock(tendermint.abci.RequestEndBlock) returns (tendermint.abci.ResponseEndBlock);
  rpc ListSnapshots(tendermint.abci.RequestListSnapshots) returns (tendermint.abci.ResponseListSnapshots);
  rpc OfferSnapshot(tendermint.abci.RequestOfferSnapshot) returns (tendermint.abci.ResponseOfferSnapshot);
  rpc LoadSnapshotChunk(tendermint.abci.RequestLoadSnapshotChunk) returns (tendermint.abci.ResponseLoadSnapshotChunk);
  rpc ApplySnapshotChunk(tendermint.abci.RequestApplySnapshotChunk) returns (tendermint.abci.ResponseApplySnapshotChunk);
  rpc BeginRecheckTx(RequestBeginRecheckTx) returns (ResponseBeginRecheckTx);
  rpc EndRecheckTx(RequestEndRecheckTx) returns (ResponseEndRecheckTx);
}

This change make current Ostracon interface purely extended Tendermint interface. Entropy is not used anywhere, so it may not be necessary to implement PreBeginBlock.
Ostracon ABCI = Tendermint ABCI + PreBeginBlock + BeginRecheckTx + EndRecheckTx


For Admin Use

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

Metadata

Metadata

Assignees

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