40 lines
1.3 KiB
Protocol Buffer
40 lines
1.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
package ibc.core.commitment.v1;
|
|
|
|
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/23-commitment/types";
|
|
|
|
import "gogoproto/gogo.proto";
|
|
import "confio/proofs.proto";
|
|
|
|
// MerkleRoot defines a merkle root hash.
|
|
// In the Cosmos SDK, the AppHash of a block header becomes the root.
|
|
message MerkleRoot {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
bytes hash = 1;
|
|
}
|
|
|
|
// MerklePrefix is merkle path prefixed to the key.
|
|
// The constructed key from the Path and the key will be append(Path.KeyPath,
|
|
// append(Path.KeyPrefix, key...))
|
|
message MerklePrefix {
|
|
bytes key_prefix = 1 [(gogoproto.moretags) = "yaml:\"key_prefix\""];
|
|
}
|
|
|
|
// MerklePath is the path used to verify commitment proofs, which can be an
|
|
// arbitrary structured object (defined by a commitment type).
|
|
// MerklePath is represented from root-to-leaf
|
|
message MerklePath {
|
|
option (gogoproto.goproto_stringer) = false;
|
|
|
|
repeated string key_path = 1 [(gogoproto.moretags) = "yaml:\"key_path\""];
|
|
}
|
|
|
|
// MerkleProof is a wrapper type over a chain of CommitmentProofs.
|
|
// It demonstrates membership or non-membership for an element or set of
|
|
// elements, verifiable in conjunction with a known commitment root. Proofs
|
|
// should be succinct.
|
|
// MerkleProofs are ordered from leaf-to-root
|
|
message MerkleProof {
|
|
repeated ics23.CommitmentProof proofs = 1;
|
|
} |