Skip to content

Commit

Permalink
Adds data commitment request (#478)
Browse files Browse the repository at this point in the history
* sync

* adds data commitment request proto

* adds data commitment requests comments

* generate data commitment request proto files

* go mod

* adds support for data commitment requests

* cosmetics

* adds no linter check

* fixes infinite for loop in orchestrator client + renaming functions

* remove unnecessary FIXME
  • Loading branch information
rach-id committed Jun 9, 2022
1 parent 0e740d1 commit d537ff4
Show file tree
Hide file tree
Showing 28 changed files with 2,266 additions and 409 deletions.
1 change: 0 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ require (
github.com/grpc-ecosystem/grpc-gateway v1.16.0
github.com/spf13/cast v1.4.1
github.com/spf13/cobra v1.3.0
github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4
github.com/stretchr/testify v1.7.0
github.com/tendermint/spm v0.1.9
github.com/tendermint/tendermint v0.34.16
Expand Down
52 changes: 51 additions & 1 deletion proto/qgb/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import "google/api/annotations.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
import "qgb/msgs.proto";
import "gogoproto/gogo.proto";
// this line is used by starport scaffolding # 1

option go_package = "github.com/celestiaorg/celestia-app/x/qgb/types";

Expand All @@ -18,6 +17,26 @@ service Query {
option (google.api.http).get = "/qgb/params";
}

// data commitment request queries

// DataCommitmentRequest Queries data commitment request by nonce.
rpc DataCommitmentRequestByNonce(QueryDataCommitmentRequestByNonceRequest)
returns (QueryDataCommitmentRequestByNonceResponse) {
option (google.api.http).get = "/qgb/data_commitment/requests/{nonce}";
}
// LastDataCommitmentRequests Query the last data commitments.
rpc LastDataCommitmentRequests(QueryLastDataCommitmentRequestsRequest)
returns (QueryLastDataCommitmentRequestsResponse) {
option (google.api.http).get = "/qgb/data_commitment/requests";
}
// LatestDataCommitmentNonce
rpc LatestDataCommitmentNonce(QueryLatestDataCommitmentNonceRequest)
returns (QueryLatestDataCommitmentNonceResponse) {
option (google.api.http).get = "/qgb/data_commitment/nonce/latest";
}

// Data commitment confirm queries

// DataCommitmentConfirm Queries the data commitment confirm by the commitment
// and the validator address
rpc DataCommitmentConfirm(QueryDataCommitmentConfirmRequest)
Expand Down Expand Up @@ -58,6 +77,9 @@ service Query {
"/qgb/data_commitment/confirms/exact/begin_block/"
"{begin_block}/end_block/{end_block}";
}

// valset request queries

// LastValsetRequests queries for the latest valset requests
rpc LastValsetRequests(QueryLastValsetRequestsRequest)
returns (QueryLastValsetRequestsResponse) {
Expand All @@ -68,6 +90,9 @@ service Query {
returns (QueryValsetRequestByNonceResponse) {
option (google.api.http).get = "/qgb/valset/requests/{nonce}";
}

// valset confirm queries

// ValsetConfirm Queries ValSetConfirm
rpc ValsetConfirm(QueryValsetConfirmRequest)
returns (QueryValsetConfirmResponse) {
Expand All @@ -83,6 +108,9 @@ service Query {
returns (QueryValsetConfirmsByNonceResponse) {
option (google.api.http).get = "/qgb/confirms/{nonce}";
}

// misc

// LastUnbondingHeight
rpc LastUnbondingHeight(QueryLastUnbondingHeightRequest)
returns (QueryLastUnbondingHeightResponse) {
Expand Down Expand Up @@ -207,3 +235,25 @@ message QueryLastUnbondingHeightRequest {}

// QueryLastUnbondingHeightResponse
message QueryLastUnbondingHeightResponse { uint64 height = 1; }

// QueryDataCommitmentRequestRequest Data commitment by nonce request
message QueryDataCommitmentRequestByNonceRequest {
// Unique number referencing the `DataCommitment`.
uint64 nonce = 1;
}
// QueryDataCommitmentRequestResponse Data commitment by nonce response
message QueryDataCommitmentRequestByNonceResponse {
DataCommitment commitment = 1;
}

// QueryLastDataCommitmentRequestsRequest Last data commitment request
message QueryLastDataCommitmentRequestsRequest {}
// QueryLastDataCommitmentRequestsResponse Last data commitment response
message QueryLastDataCommitmentRequestsResponse {
repeated DataCommitment commitments = 1 [ (gogoproto.nullable) = false ];
}

// QueryLatestDataCommitmentNonceRequest Latest data commitment nonce request
message QueryLatestDataCommitmentNonceRequest {}
// QueryLatestDataCommitmentNonceResponse Latest data commitment nonce response
message QueryLatestDataCommitmentNonceResponse { uint64 nonce = 1; }
16 changes: 16 additions & 0 deletions proto/qgb/types.proto
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,19 @@ message Valset {
// Current chain height
uint64 height = 3;
}

// DataCommitment is the data commitment request message that will be signed
// using orchestrators.
// It does not contain a `commitment` field as this message will be created
// inside the state machine and it doesn't make sense to ask tendermint for the
// commitment there.
message DataCommitment {
// Unique number referencing the `DataCommitment`.
uint64 nonce = 1;
// First block defining the ordered set of blocks used to create the
// commitment.
uint64 begin_block = 2;
// Last block defining the ordered set of blocks used to create the
// commitment.
uint64 end_block = 3;
}
12 changes: 12 additions & 0 deletions x/qgb/abci.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,18 @@ import (

// EndBlocker is called at the end of every block
func EndBlocker(ctx sdk.Context, k keeper.Keeper) {
handleValsetRequest(ctx, k)
handleDataCommitmentRequest(ctx, k)
}

func handleDataCommitmentRequest(ctx sdk.Context, k keeper.Keeper) {
if ctx.BlockHeight()%int64(types.DataCommitmentWindow) != 0 {
return
}
k.SetDataCommitmentRequest(ctx)
}

func handleValsetRequest(ctx sdk.Context, k keeper.Keeper) {
//get the last valsets to compare against
latestValset := k.GetLatestValset(ctx)
lastUnbondingHeight := k.GetLastUnBondingBlockHeight(ctx)
Expand Down
Loading

0 comments on commit d537ff4

Please sign in to comment.