mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-10 10:05:18 +00:00
Add Third Party Protos for IBC Types (#1127)
* add ibc-go third party protos * add missing proofs proto definition
This commit is contained in:
parent
4d31712978
commit
d71f406ceb
3
Makefile
3
Makefile
@ -188,6 +188,7 @@ GOGO_PATH := $(shell go list -m -f '{{.Dir}}' github.com/gogo/protobuf)
|
||||
TENDERMINT_PATH := $(shell go list -m -f '{{.Dir}}' github.com/tendermint/tendermint)
|
||||
COSMOS_PROTO_PATH := $(shell go list -m -f '{{.Dir}}' github.com/cosmos/cosmos-proto)
|
||||
COSMOS_SDK_PATH := $(shell go list -m -f '{{.Dir}}' github.com/cosmos/cosmos-sdk)
|
||||
IBC_GO_PATH := $(shell go list -m -f '{{.Dir}}' github.com/cosmos/ibc-go)
|
||||
|
||||
proto-update-deps:
|
||||
mkdir -p $(GOOGLE_PROTO_TYPES)
|
||||
@ -207,6 +208,8 @@ proto-update-deps:
|
||||
rsync -r --chmod 644 --include "*.proto" --include='*/' --exclude='*' $(GOGO_PATH)/gogoproto third_party/proto
|
||||
rsync -r --chmod 644 --include "*.proto" --include='*/' --exclude='*' $(TENDERMINT_PATH)/proto third_party
|
||||
rsync -r --chmod 644 --include "*.proto" --include='*/' --exclude='*' $(COSMOS_SDK_PATH)/proto third_party
|
||||
rsync -r --chmod 644 --include "*.proto" --include='*/' --exclude='*' $(IBC_GO_PATH)/proto third_party
|
||||
rsync -r --chmod 644 --include "*.proto" --include='*/' --exclude='*' $(IBC_GO_PATH)/third_party/proto/confio third_party/proto
|
||||
|
||||
.PHONY: proto-all proto-gen proto-gen-any proto-swagger-gen proto-format proto-lint proto-check-breaking proto-update-deps
|
||||
|
||||
|
234
third_party/proto/confio/proofs.proto
vendored
Normal file
234
third_party/proto/confio/proofs.proto
vendored
Normal file
@ -0,0 +1,234 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ics23;
|
||||
option go_package = "github.com/confio/ics23/go";
|
||||
|
||||
enum HashOp {
|
||||
// NO_HASH is the default if no data passed. Note this is an illegal argument some places.
|
||||
NO_HASH = 0;
|
||||
SHA256 = 1;
|
||||
SHA512 = 2;
|
||||
KECCAK = 3;
|
||||
RIPEMD160 = 4;
|
||||
BITCOIN = 5; // ripemd160(sha256(x))
|
||||
}
|
||||
|
||||
/**
|
||||
LengthOp defines how to process the key and value of the LeafOp
|
||||
to include length information. After encoding the length with the given
|
||||
algorithm, the length will be prepended to the key and value bytes.
|
||||
(Each one with it's own encoded length)
|
||||
*/
|
||||
enum LengthOp {
|
||||
// NO_PREFIX don't include any length info
|
||||
NO_PREFIX = 0;
|
||||
// VAR_PROTO uses protobuf (and go-amino) varint encoding of the length
|
||||
VAR_PROTO = 1;
|
||||
// VAR_RLP uses rlp int encoding of the length
|
||||
VAR_RLP = 2;
|
||||
// FIXED32_BIG uses big-endian encoding of the length as a 32 bit integer
|
||||
FIXED32_BIG = 3;
|
||||
// FIXED32_LITTLE uses little-endian encoding of the length as a 32 bit integer
|
||||
FIXED32_LITTLE = 4;
|
||||
// FIXED64_BIG uses big-endian encoding of the length as a 64 bit integer
|
||||
FIXED64_BIG = 5;
|
||||
// FIXED64_LITTLE uses little-endian encoding of the length as a 64 bit integer
|
||||
FIXED64_LITTLE = 6;
|
||||
// REQUIRE_32_BYTES is like NONE, but will fail if the input is not exactly 32 bytes (sha256 output)
|
||||
REQUIRE_32_BYTES = 7;
|
||||
// REQUIRE_64_BYTES is like NONE, but will fail if the input is not exactly 64 bytes (sha512 output)
|
||||
REQUIRE_64_BYTES = 8;
|
||||
}
|
||||
|
||||
/**
|
||||
ExistenceProof takes a key and a value and a set of steps to perform on it.
|
||||
The result of peforming all these steps will provide a "root hash", which can
|
||||
be compared to the value in a header.
|
||||
|
||||
Since it is computationally infeasible to produce a hash collission for any of the used
|
||||
cryptographic hash functions, if someone can provide a series of operations to transform
|
||||
a given key and value into a root hash that matches some trusted root, these key and values
|
||||
must be in the referenced merkle tree.
|
||||
|
||||
The only possible issue is maliablity in LeafOp, such as providing extra prefix data,
|
||||
which should be controlled by a spec. Eg. with lengthOp as NONE,
|
||||
prefix = FOO, key = BAR, value = CHOICE
|
||||
and
|
||||
prefix = F, key = OOBAR, value = CHOICE
|
||||
would produce the same value.
|
||||
|
||||
With LengthOp this is tricker but not impossible. Which is why the "leafPrefixEqual" field
|
||||
in the ProofSpec is valuable to prevent this mutability. And why all trees should
|
||||
length-prefix the data before hashing it.
|
||||
*/
|
||||
message ExistenceProof {
|
||||
bytes key = 1;
|
||||
bytes value = 2;
|
||||
LeafOp leaf = 3;
|
||||
repeated InnerOp path = 4;
|
||||
}
|
||||
|
||||
/*
|
||||
NonExistenceProof takes a proof of two neighbors, one left of the desired key,
|
||||
one right of the desired key. If both proofs are valid AND they are neighbors,
|
||||
then there is no valid proof for the given key.
|
||||
*/
|
||||
message NonExistenceProof {
|
||||
bytes key = 1; // TODO: remove this as unnecessary??? we prove a range
|
||||
ExistenceProof left = 2;
|
||||
ExistenceProof right = 3;
|
||||
}
|
||||
|
||||
/*
|
||||
CommitmentProof is either an ExistenceProof or a NonExistenceProof, or a Batch of such messages
|
||||
*/
|
||||
message CommitmentProof {
|
||||
oneof proof {
|
||||
ExistenceProof exist = 1;
|
||||
NonExistenceProof nonexist = 2;
|
||||
BatchProof batch = 3;
|
||||
CompressedBatchProof compressed = 4;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
LeafOp represents the raw key-value data we wish to prove, and
|
||||
must be flexible to represent the internal transformation from
|
||||
the original key-value pairs into the basis hash, for many existing
|
||||
merkle trees.
|
||||
|
||||
key and value are passed in. So that the signature of this operation is:
|
||||
leafOp(key, value) -> output
|
||||
|
||||
To process this, first prehash the keys and values if needed (ANY means no hash in this case):
|
||||
hkey = prehashKey(key)
|
||||
hvalue = prehashValue(value)
|
||||
|
||||
Then combine the bytes, and hash it
|
||||
output = hash(prefix || length(hkey) || hkey || length(hvalue) || hvalue)
|
||||
*/
|
||||
message LeafOp {
|
||||
HashOp hash = 1;
|
||||
HashOp prehash_key = 2;
|
||||
HashOp prehash_value = 3;
|
||||
LengthOp length = 4;
|
||||
// prefix is a fixed bytes that may optionally be included at the beginning to differentiate
|
||||
// a leaf node from an inner node.
|
||||
bytes prefix = 5;
|
||||
}
|
||||
|
||||
/**
|
||||
InnerOp represents a merkle-proof step that is not a leaf.
|
||||
It represents concatenating two children and hashing them to provide the next result.
|
||||
|
||||
The result of the previous step is passed in, so the signature of this op is:
|
||||
innerOp(child) -> output
|
||||
|
||||
The result of applying InnerOp should be:
|
||||
output = op.hash(op.prefix || child || op.suffix)
|
||||
|
||||
where the || operator is concatenation of binary data,
|
||||
and child is the result of hashing all the tree below this step.
|
||||
|
||||
Any special data, like prepending child with the length, or prepending the entire operation with
|
||||
some value to differentiate from leaf nodes, should be included in prefix and suffix.
|
||||
If either of prefix or suffix is empty, we just treat it as an empty string
|
||||
*/
|
||||
message InnerOp {
|
||||
HashOp hash = 1;
|
||||
bytes prefix = 2;
|
||||
bytes suffix = 3;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
ProofSpec defines what the expected parameters are for a given proof type.
|
||||
This can be stored in the client and used to validate any incoming proofs.
|
||||
|
||||
verify(ProofSpec, Proof) -> Proof | Error
|
||||
|
||||
As demonstrated in tests, if we don't fix the algorithm used to calculate the
|
||||
LeafHash for a given tree, there are many possible key-value pairs that can
|
||||
generate a given hash (by interpretting the preimage differently).
|
||||
We need this for proper security, requires client knows a priori what
|
||||
tree format server uses. But not in code, rather a configuration object.
|
||||
*/
|
||||
message ProofSpec {
|
||||
// any field in the ExistenceProof must be the same as in this spec.
|
||||
// except Prefix, which is just the first bytes of prefix (spec can be longer)
|
||||
LeafOp leaf_spec = 1;
|
||||
InnerSpec inner_spec = 2;
|
||||
// max_depth (if > 0) is the maximum number of InnerOps allowed (mainly for fixed-depth tries)
|
||||
int32 max_depth = 3;
|
||||
// min_depth (if > 0) is the minimum number of InnerOps allowed (mainly for fixed-depth tries)
|
||||
int32 min_depth = 4;
|
||||
}
|
||||
|
||||
/*
|
||||
InnerSpec contains all store-specific structure info to determine if two proofs from a
|
||||
given store are neighbors.
|
||||
|
||||
This enables:
|
||||
|
||||
isLeftMost(spec: InnerSpec, op: InnerOp)
|
||||
isRightMost(spec: InnerSpec, op: InnerOp)
|
||||
isLeftNeighbor(spec: InnerSpec, left: InnerOp, right: InnerOp)
|
||||
*/
|
||||
message InnerSpec {
|
||||
// Child order is the ordering of the children node, must count from 0
|
||||
// iavl tree is [0, 1] (left then right)
|
||||
// merk is [0, 2, 1] (left, right, here)
|
||||
repeated int32 child_order = 1;
|
||||
int32 child_size = 2;
|
||||
int32 min_prefix_length = 3;
|
||||
int32 max_prefix_length = 4;
|
||||
// empty child is the prehash image that is used when one child is nil (eg. 20 bytes of 0)
|
||||
bytes empty_child = 5;
|
||||
// hash is the algorithm that must be used for each InnerOp
|
||||
HashOp hash = 6;
|
||||
}
|
||||
|
||||
/*
|
||||
BatchProof is a group of multiple proof types than can be compressed
|
||||
*/
|
||||
message BatchProof {
|
||||
repeated BatchEntry entries = 1;
|
||||
}
|
||||
|
||||
// Use BatchEntry not CommitmentProof, to avoid recursion
|
||||
message BatchEntry {
|
||||
oneof proof {
|
||||
ExistenceProof exist = 1;
|
||||
NonExistenceProof nonexist = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/****** all items here are compressed forms *******/
|
||||
|
||||
message CompressedBatchProof {
|
||||
repeated CompressedBatchEntry entries = 1;
|
||||
repeated InnerOp lookup_inners = 2;
|
||||
}
|
||||
|
||||
// Use BatchEntry not CommitmentProof, to avoid recursion
|
||||
message CompressedBatchEntry {
|
||||
oneof proof {
|
||||
CompressedExistenceProof exist = 1;
|
||||
CompressedNonExistenceProof nonexist = 2;
|
||||
}
|
||||
}
|
||||
|
||||
message CompressedExistenceProof {
|
||||
bytes key = 1;
|
||||
bytes value = 2;
|
||||
LeafOp leaf = 3;
|
||||
// these are indexes into the lookup_inners table in CompressedBatchProof
|
||||
repeated int32 path = 4;
|
||||
}
|
||||
|
||||
message CompressedNonExistenceProof {
|
||||
bytes key = 1; // TODO: remove this as unnecessary??? we prove a range
|
||||
CompressedExistenceProof left = 2;
|
||||
CompressedExistenceProof right = 3;
|
||||
}
|
19
third_party/proto/ibc/applications/transfer/v1/genesis.proto
vendored
Normal file
19
third_party/proto/ibc/applications/transfer/v1/genesis.proto
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/apps/transfer/types";
|
||||
|
||||
import "ibc/applications/transfer/v1/transfer.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// GenesisState defines the ibc-transfer genesis state
|
||||
message GenesisState {
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
repeated DenomTrace denom_traces = 2 [
|
||||
(gogoproto.castrepeated) = "Traces",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"denom_traces\""
|
||||
];
|
||||
Params params = 3 [(gogoproto.nullable) = false];
|
||||
}
|
67
third_party/proto/ibc/applications/transfer/v1/query.proto
vendored
Normal file
67
third_party/proto/ibc/applications/transfer/v1/query.proto
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "ibc/applications/transfer/v1/transfer.proto";
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/apps/transfer/types";
|
||||
|
||||
// Query provides defines the gRPC querier service.
|
||||
service Query {
|
||||
// DenomTrace queries a denomination trace information.
|
||||
rpc DenomTrace(QueryDenomTraceRequest) returns (QueryDenomTraceResponse) {
|
||||
option (google.api.http).get = "/ibc/apps/transfer/v1/denom_traces/{hash}";
|
||||
}
|
||||
|
||||
// DenomTraces queries all denomination traces.
|
||||
rpc DenomTraces(QueryDenomTracesRequest) returns (QueryDenomTracesResponse) {
|
||||
option (google.api.http).get = "/ibc/apps/transfer/v1/denom_traces";
|
||||
}
|
||||
|
||||
// Params queries all parameters of the ibc-transfer module.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/ibc/apps/transfer/v1/params";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryDenomTraceRequest is the request type for the Query/DenomTrace RPC
|
||||
// method
|
||||
message QueryDenomTraceRequest {
|
||||
// hash (in hex format) of the denomination trace information.
|
||||
string hash = 1;
|
||||
}
|
||||
|
||||
// QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC
|
||||
// method.
|
||||
message QueryDenomTraceResponse {
|
||||
// denom_trace returns the requested denomination trace information.
|
||||
DenomTrace denom_trace = 1;
|
||||
}
|
||||
|
||||
// QueryConnectionsRequest is the request type for the Query/DenomTraces RPC
|
||||
// method
|
||||
message QueryDenomTracesRequest {
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryConnectionsResponse is the response type for the Query/DenomTraces RPC
|
||||
// method.
|
||||
message QueryDenomTracesResponse {
|
||||
// denom_traces returns all denominations trace information.
|
||||
repeated DenomTrace denom_traces = 1 [(gogoproto.castrepeated) = "Traces", (gogoproto.nullable) = false];
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryParamsRequest is the request type for the Query/Params RPC method.
|
||||
message QueryParamsRequest {}
|
||||
|
||||
// QueryParamsResponse is the response type for the Query/Params RPC method.
|
||||
message QueryParamsResponse {
|
||||
// params defines the parameters of the module.
|
||||
Params params = 1;
|
||||
}
|
44
third_party/proto/ibc/applications/transfer/v1/transfer.proto
vendored
Normal file
44
third_party/proto/ibc/applications/transfer/v1/transfer.proto
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/apps/transfer/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// FungibleTokenPacketData defines a struct for the packet payload
|
||||
// See FungibleTokenPacketData spec:
|
||||
// https://github.com/cosmos/ics/tree/master/spec/ics-020-fungible-token-transfer#data-structures
|
||||
message FungibleTokenPacketData {
|
||||
// the token denomination to be transferred
|
||||
string denom = 1;
|
||||
// the token amount to be transferred
|
||||
uint64 amount = 2;
|
||||
// the sender address
|
||||
string sender = 3;
|
||||
// the recipient address on the destination chain
|
||||
string receiver = 4;
|
||||
}
|
||||
|
||||
// DenomTrace contains the base denomination for ICS20 fungible tokens and the
|
||||
// source tracing information path.
|
||||
message DenomTrace {
|
||||
// path defines the chain of port/channel identifiers used for tracing the
|
||||
// source of the fungible token.
|
||||
string path = 1;
|
||||
// base denomination of the relayed fungible token.
|
||||
string base_denom = 2;
|
||||
}
|
||||
|
||||
// Params defines the set of IBC transfer parameters.
|
||||
// NOTE: To prevent a single token from being transferred, set the
|
||||
// TransfersEnabled parameter to true and then set the bank module's SendEnabled
|
||||
// parameter for the denomination to false.
|
||||
message Params {
|
||||
// send_enabled enables or disables all cross-chain token transfers from this
|
||||
// chain.
|
||||
bool send_enabled = 1 [(gogoproto.moretags) = "yaml:\"send_enabled\""];
|
||||
// receive_enabled enables or disables all cross-chain token transfers to this
|
||||
// chain.
|
||||
bool receive_enabled = 2 [(gogoproto.moretags) = "yaml:\"receive_enabled\""];
|
||||
}
|
44
third_party/proto/ibc/applications/transfer/v1/tx.proto
vendored
Normal file
44
third_party/proto/ibc/applications/transfer/v1/tx.proto
vendored
Normal file
@ -0,0 +1,44 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/apps/transfer/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
|
||||
// Msg defines the ibc/transfer Msg service.
|
||||
service Msg {
|
||||
// Transfer defines a rpc handler method for MsgTransfer.
|
||||
rpc Transfer(MsgTransfer) returns (MsgTransferResponse);
|
||||
}
|
||||
|
||||
// MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between
|
||||
// ICS20 enabled chains. See ICS Spec here:
|
||||
// https://github.com/cosmos/ics/tree/master/spec/ics-020-fungible-token-transfer#data-structures
|
||||
message MsgTransfer {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// the port on which the packet will be sent
|
||||
string source_port = 1 [(gogoproto.moretags) = "yaml:\"source_port\""];
|
||||
// the channel by which the packet will be sent
|
||||
string source_channel = 2 [(gogoproto.moretags) = "yaml:\"source_channel\""];
|
||||
// the tokens to be transferred
|
||||
cosmos.base.v1beta1.Coin token = 3 [(gogoproto.nullable) = false];
|
||||
// the sender address
|
||||
string sender = 4;
|
||||
// the recipient address on the destination chain
|
||||
string receiver = 5;
|
||||
// Timeout height relative to the current block height.
|
||||
// The timeout is disabled when set to 0.
|
||||
ibc.core.client.v1.Height timeout_height = 6
|
||||
[(gogoproto.moretags) = "yaml:\"timeout_height\"", (gogoproto.nullable) = false];
|
||||
// Timeout timestamp (in nanoseconds) relative to the current block timestamp.
|
||||
// The timeout is disabled when set to 0.
|
||||
uint64 timeout_timestamp = 7 [(gogoproto.moretags) = "yaml:\"timeout_timestamp\""];
|
||||
}
|
||||
|
||||
// MsgTransferResponse defines the Msg/Transfer response type.
|
||||
message MsgTransferResponse {}
|
148
third_party/proto/ibc/core/channel/v1/channel.proto
vendored
Normal file
148
third_party/proto/ibc/core/channel/v1/channel.proto
vendored
Normal file
@ -0,0 +1,148 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/04-channel/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
|
||||
// Channel defines pipeline for exactly-once packet delivery between specific
|
||||
// modules on separate blockchains, which has at least one end capable of
|
||||
// sending packets and one end capable of receiving packets.
|
||||
message Channel {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// current state of the channel end
|
||||
State state = 1;
|
||||
// whether the channel is ordered or unordered
|
||||
Order ordering = 2;
|
||||
// counterparty channel end
|
||||
Counterparty counterparty = 3 [(gogoproto.nullable) = false];
|
||||
// list of connection identifiers, in order, along which packets sent on
|
||||
// this channel will travel
|
||||
repeated string connection_hops = 4 [(gogoproto.moretags) = "yaml:\"connection_hops\""];
|
||||
// opaque channel version, which is agreed upon during the handshake
|
||||
string version = 5;
|
||||
}
|
||||
|
||||
// IdentifiedChannel defines a channel with additional port and channel
|
||||
// identifier fields.
|
||||
message IdentifiedChannel {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// current state of the channel end
|
||||
State state = 1;
|
||||
// whether the channel is ordered or unordered
|
||||
Order ordering = 2;
|
||||
// counterparty channel end
|
||||
Counterparty counterparty = 3 [(gogoproto.nullable) = false];
|
||||
// list of connection identifiers, in order, along which packets sent on
|
||||
// this channel will travel
|
||||
repeated string connection_hops = 4 [(gogoproto.moretags) = "yaml:\"connection_hops\""];
|
||||
// opaque channel version, which is agreed upon during the handshake
|
||||
string version = 5;
|
||||
// port identifier
|
||||
string port_id = 6;
|
||||
// channel identifier
|
||||
string channel_id = 7;
|
||||
}
|
||||
|
||||
// State defines if a channel is in one of the following states:
|
||||
// CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED.
|
||||
enum State {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// Default State
|
||||
STATE_UNINITIALIZED_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNINITIALIZED"];
|
||||
// A channel has just started the opening handshake.
|
||||
STATE_INIT = 1 [(gogoproto.enumvalue_customname) = "INIT"];
|
||||
// A channel has acknowledged the handshake step on the counterparty chain.
|
||||
STATE_TRYOPEN = 2 [(gogoproto.enumvalue_customname) = "TRYOPEN"];
|
||||
// A channel has completed the handshake. Open channels are
|
||||
// ready to send and receive packets.
|
||||
STATE_OPEN = 3 [(gogoproto.enumvalue_customname) = "OPEN"];
|
||||
// A channel has been closed and can no longer be used to send or receive
|
||||
// packets.
|
||||
STATE_CLOSED = 4 [(gogoproto.enumvalue_customname) = "CLOSED"];
|
||||
}
|
||||
|
||||
// Order defines if a channel is ORDERED or UNORDERED
|
||||
enum Order {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// zero-value for channel ordering
|
||||
ORDER_NONE_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "NONE"];
|
||||
// packets can be delivered in any order, which may differ from the order in
|
||||
// which they were sent.
|
||||
ORDER_UNORDERED = 1 [(gogoproto.enumvalue_customname) = "UNORDERED"];
|
||||
// packets are delivered exactly in the order which they were sent
|
||||
ORDER_ORDERED = 2 [(gogoproto.enumvalue_customname) = "ORDERED"];
|
||||
}
|
||||
|
||||
// Counterparty defines a channel end counterparty
|
||||
message Counterparty {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// port on the counterparty chain which owns the other end of the channel.
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
// channel end on the counterparty chain
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
}
|
||||
|
||||
// Packet defines a type that carries data across different chains through IBC
|
||||
message Packet {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// number corresponds to the order of sends and receives, where a Packet
|
||||
// with an earlier sequence number must be sent and received before a Packet
|
||||
// with a later sequence number.
|
||||
uint64 sequence = 1;
|
||||
// identifies the port on the sending chain.
|
||||
string source_port = 2 [(gogoproto.moretags) = "yaml:\"source_port\""];
|
||||
// identifies the channel end on the sending chain.
|
||||
string source_channel = 3 [(gogoproto.moretags) = "yaml:\"source_channel\""];
|
||||
// identifies the port on the receiving chain.
|
||||
string destination_port = 4 [(gogoproto.moretags) = "yaml:\"destination_port\""];
|
||||
// identifies the channel end on the receiving chain.
|
||||
string destination_channel = 5 [(gogoproto.moretags) = "yaml:\"destination_channel\""];
|
||||
// actual opaque bytes transferred directly to the application module
|
||||
bytes data = 6;
|
||||
// block height after which the packet times out
|
||||
ibc.core.client.v1.Height timeout_height = 7
|
||||
[(gogoproto.moretags) = "yaml:\"timeout_height\"", (gogoproto.nullable) = false];
|
||||
// block timestamp (in nanoseconds) after which the packet times out
|
||||
uint64 timeout_timestamp = 8 [(gogoproto.moretags) = "yaml:\"timeout_timestamp\""];
|
||||
}
|
||||
|
||||
// PacketState defines the generic type necessary to retrieve and store
|
||||
// packet commitments, acknowledgements, and receipts.
|
||||
// Caller is responsible for knowing the context necessary to interpret this
|
||||
// state as a commitment, acknowledgement, or a receipt.
|
||||
message PacketState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// channel port identifier.
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
// channel unique identifier.
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
// packet sequence.
|
||||
uint64 sequence = 3;
|
||||
// embedded data that represents packet state.
|
||||
bytes data = 4;
|
||||
}
|
||||
|
||||
// Acknowledgement is the recommended acknowledgement format to be used by
|
||||
// app-specific protocols.
|
||||
// NOTE: The field numbers 21 and 22 were explicitly chosen to avoid accidental
|
||||
// conflicts with other protobuf message formats used for acknowledgements.
|
||||
// The first byte of any message with this format will be the non-ASCII values
|
||||
// `0xaa` (result) or `0xb2` (error). Implemented as defined by ICS:
|
||||
// https://github.com/cosmos/ics/tree/master/spec/ics-004-channel-and-packet-semantics#acknowledgement-envelope
|
||||
message Acknowledgement {
|
||||
// response contains either a result or an error and must be non-empty
|
||||
oneof response {
|
||||
bytes result = 21;
|
||||
string error = 22;
|
||||
}
|
||||
}
|
32
third_party/proto/ibc/core/channel/v1/genesis.proto
vendored
Normal file
32
third_party/proto/ibc/core/channel/v1/genesis.proto
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/04-channel/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/channel/v1/channel.proto";
|
||||
|
||||
// GenesisState defines the ibc channel submodule's genesis state.
|
||||
message GenesisState {
|
||||
repeated IdentifiedChannel channels = 1 [(gogoproto.casttype) = "IdentifiedChannel", (gogoproto.nullable) = false];
|
||||
repeated PacketState acknowledgements = 2 [(gogoproto.nullable) = false];
|
||||
repeated PacketState commitments = 3 [(gogoproto.nullable) = false];
|
||||
repeated PacketState receipts = 4 [(gogoproto.nullable) = false];
|
||||
repeated PacketSequence send_sequences = 5
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"send_sequences\""];
|
||||
repeated PacketSequence recv_sequences = 6
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"recv_sequences\""];
|
||||
repeated PacketSequence ack_sequences = 7
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"ack_sequences\""];
|
||||
// the sequence for the next generated channel identifier
|
||||
uint64 next_channel_sequence = 8 [(gogoproto.moretags) = "yaml:\"next_channel_sequence\""];
|
||||
}
|
||||
|
||||
// PacketSequence defines the genesis type necessary to retrieve and store
|
||||
// next send and receive sequences.
|
||||
message PacketSequence {
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
uint64 sequence = 3;
|
||||
}
|
376
third_party/proto/ibc/core/channel/v1/query.proto
vendored
Normal file
376
third_party/proto/ibc/core/channel/v1/query.proto
vendored
Normal file
@ -0,0 +1,376 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/04-channel/types";
|
||||
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "ibc/core/channel/v1/channel.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// Query provides defines the gRPC querier service
|
||||
service Query {
|
||||
// Channel queries an IBC Channel.
|
||||
rpc Channel(QueryChannelRequest) returns (QueryChannelResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}";
|
||||
}
|
||||
|
||||
// Channels queries all the IBC channels of a chain.
|
||||
rpc Channels(QueryChannelsRequest) returns (QueryChannelsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels";
|
||||
}
|
||||
|
||||
// ConnectionChannels queries all the channels associated with a connection
|
||||
// end.
|
||||
rpc ConnectionChannels(QueryConnectionChannelsRequest) returns (QueryConnectionChannelsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/connections/{connection}/channels";
|
||||
}
|
||||
|
||||
// ChannelClientState queries for the client state for the channel associated
|
||||
// with the provided channel identifiers.
|
||||
rpc ChannelClientState(QueryChannelClientStateRequest) returns (QueryChannelClientStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/client_state";
|
||||
}
|
||||
|
||||
// ChannelConsensusState queries for the consensus state for the channel
|
||||
// associated with the provided channel identifiers.
|
||||
rpc ChannelConsensusState(QueryChannelConsensusStateRequest) returns (QueryChannelConsensusStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/consensus_state/revision/"
|
||||
"{revision_number}/height/{revision_height}";
|
||||
}
|
||||
|
||||
// PacketCommitment queries a stored packet commitment hash.
|
||||
rpc PacketCommitment(QueryPacketCommitmentRequest) returns (QueryPacketCommitmentResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/"
|
||||
"packet_commitments/{sequence}";
|
||||
}
|
||||
|
||||
// PacketCommitments returns all the packet commitments hashes associated
|
||||
// with a channel.
|
||||
rpc PacketCommitments(QueryPacketCommitmentsRequest) returns (QueryPacketCommitmentsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/packet_commitments";
|
||||
}
|
||||
|
||||
// PacketReceipt queries if a given packet sequence has been received on the
|
||||
// queried chain
|
||||
rpc PacketReceipt(QueryPacketReceiptRequest) returns (QueryPacketReceiptResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/packet_receipts/{sequence}";
|
||||
}
|
||||
|
||||
// PacketAcknowledgement queries a stored packet acknowledgement hash.
|
||||
rpc PacketAcknowledgement(QueryPacketAcknowledgementRequest) returns (QueryPacketAcknowledgementResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/packet_acks/{sequence}";
|
||||
}
|
||||
|
||||
// PacketAcknowledgements returns all the packet acknowledgements associated
|
||||
// with a channel.
|
||||
rpc PacketAcknowledgements(QueryPacketAcknowledgementsRequest) returns (QueryPacketAcknowledgementsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/packet_acknowledgements";
|
||||
}
|
||||
|
||||
// UnreceivedPackets returns all the unreceived IBC packets associated with a
|
||||
// channel and sequences.
|
||||
rpc UnreceivedPackets(QueryUnreceivedPacketsRequest) returns (QueryUnreceivedPacketsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/"
|
||||
"packet_commitments/"
|
||||
"{packet_commitment_sequences}/unreceived_packets";
|
||||
}
|
||||
|
||||
// UnreceivedAcks returns all the unreceived IBC acknowledgements associated
|
||||
// with a channel and sequences.
|
||||
rpc UnreceivedAcks(QueryUnreceivedAcksRequest) returns (QueryUnreceivedAcksResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/packet_commitments/"
|
||||
"{packet_ack_sequences}/unreceived_acks";
|
||||
}
|
||||
|
||||
// NextSequenceReceive returns the next receive sequence for a given channel.
|
||||
rpc NextSequenceReceive(QueryNextSequenceReceiveRequest) returns (QueryNextSequenceReceiveResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1/channels/{channel_id}/"
|
||||
"ports/{port_id}/next_sequence";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryChannelRequest is the request type for the Query/Channel RPC method
|
||||
message QueryChannelRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
}
|
||||
|
||||
// QueryChannelResponse is the response type for the Query/Channel RPC method.
|
||||
// Besides the Channel end, it includes a proof and the height from which the
|
||||
// proof was retrieved.
|
||||
message QueryChannelResponse {
|
||||
// channel associated with the request identifiers
|
||||
ibc.core.channel.v1.Channel channel = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryChannelsRequest is the request type for the Query/Channels RPC method
|
||||
message QueryChannelsRequest {
|
||||
// pagination request
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryChannelsResponse is the response type for the Query/Channels RPC method.
|
||||
message QueryChannelsResponse {
|
||||
// list of stored channels of the chain.
|
||||
repeated ibc.core.channel.v1.IdentifiedChannel channels = 1;
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryConnectionChannelsRequest is the request type for the
|
||||
// Query/QueryConnectionChannels RPC method
|
||||
message QueryConnectionChannelsRequest {
|
||||
// connection unique identifier
|
||||
string connection = 1;
|
||||
// pagination request
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryConnectionChannelsResponse is the Response type for the
|
||||
// Query/QueryConnectionChannels RPC method
|
||||
message QueryConnectionChannelsResponse {
|
||||
// list of channels associated with a connection.
|
||||
repeated ibc.core.channel.v1.IdentifiedChannel channels = 1;
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryChannelClientStateRequest is the request type for the Query/ClientState
|
||||
// RPC method
|
||||
message QueryChannelClientStateRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
}
|
||||
|
||||
// QueryChannelClientStateResponse is the Response type for the
|
||||
// Query/QueryChannelClientState RPC method
|
||||
message QueryChannelClientStateResponse {
|
||||
// client state associated with the channel
|
||||
ibc.core.client.v1.IdentifiedClientState identified_client_state = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryChannelConsensusStateRequest is the request type for the
|
||||
// Query/ConsensusState RPC method
|
||||
message QueryChannelConsensusStateRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// revision number of the consensus state
|
||||
uint64 revision_number = 3;
|
||||
// revision height of the consensus state
|
||||
uint64 revision_height = 4;
|
||||
}
|
||||
|
||||
// QueryChannelClientStateResponse is the Response type for the
|
||||
// Query/QueryChannelClientState RPC method
|
||||
message QueryChannelConsensusStateResponse {
|
||||
// consensus state associated with the channel
|
||||
google.protobuf.Any consensus_state = 1;
|
||||
// client ID associated with the consensus state
|
||||
string client_id = 2;
|
||||
// merkle proof of existence
|
||||
bytes proof = 3;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 4 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryPacketCommitmentRequest is the request type for the
|
||||
// Query/PacketCommitment RPC method
|
||||
message QueryPacketCommitmentRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// packet sequence
|
||||
uint64 sequence = 3;
|
||||
}
|
||||
|
||||
// QueryPacketCommitmentResponse defines the client query response for a packet
|
||||
// which also includes a proof and the height from which the proof was
|
||||
// retrieved
|
||||
message QueryPacketCommitmentResponse {
|
||||
// packet associated with the request fields
|
||||
bytes commitment = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryPacketCommitmentsRequest is the request type for the
|
||||
// Query/QueryPacketCommitments RPC method
|
||||
message QueryPacketCommitmentsRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// pagination request
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 3;
|
||||
}
|
||||
|
||||
// QueryPacketCommitmentsResponse is the request type for the
|
||||
// Query/QueryPacketCommitments RPC method
|
||||
message QueryPacketCommitmentsResponse {
|
||||
repeated ibc.core.channel.v1.PacketState commitments = 1;
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryPacketReceiptRequest is the request type for the
|
||||
// Query/PacketReceipt RPC method
|
||||
message QueryPacketReceiptRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// packet sequence
|
||||
uint64 sequence = 3;
|
||||
}
|
||||
|
||||
// QueryPacketReceiptResponse defines the client query response for a packet
|
||||
// receipt which also includes a proof, and the height from which the proof was
|
||||
// retrieved
|
||||
message QueryPacketReceiptResponse {
|
||||
// success flag for if receipt exists
|
||||
bool received = 2;
|
||||
// merkle proof of existence
|
||||
bytes proof = 3;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 4 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryPacketAcknowledgementRequest is the request type for the
|
||||
// Query/PacketAcknowledgement RPC method
|
||||
message QueryPacketAcknowledgementRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// packet sequence
|
||||
uint64 sequence = 3;
|
||||
}
|
||||
|
||||
// QueryPacketAcknowledgementResponse defines the client query response for a
|
||||
// packet which also includes a proof and the height from which the
|
||||
// proof was retrieved
|
||||
message QueryPacketAcknowledgementResponse {
|
||||
// packet associated with the request fields
|
||||
bytes acknowledgement = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryPacketAcknowledgementsRequest is the request type for the
|
||||
// Query/QueryPacketCommitments RPC method
|
||||
message QueryPacketAcknowledgementsRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// pagination request
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 3;
|
||||
// list of packet sequences
|
||||
repeated uint64 packet_commitment_sequences = 4;
|
||||
}
|
||||
|
||||
// QueryPacketAcknowledgemetsResponse is the request type for the
|
||||
// Query/QueryPacketAcknowledgements RPC method
|
||||
message QueryPacketAcknowledgementsResponse {
|
||||
repeated ibc.core.channel.v1.PacketState acknowledgements = 1;
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryUnreceivedPacketsRequest is the request type for the
|
||||
// Query/UnreceivedPackets RPC method
|
||||
message QueryUnreceivedPacketsRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// list of packet sequences
|
||||
repeated uint64 packet_commitment_sequences = 3;
|
||||
}
|
||||
|
||||
// QueryUnreceivedPacketsResponse is the response type for the
|
||||
// Query/UnreceivedPacketCommitments RPC method
|
||||
message QueryUnreceivedPacketsResponse {
|
||||
// list of unreceived packet sequences
|
||||
repeated uint64 sequences = 1;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryUnreceivedAcks is the request type for the
|
||||
// Query/UnreceivedAcks RPC method
|
||||
message QueryUnreceivedAcksRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
// list of acknowledgement sequences
|
||||
repeated uint64 packet_ack_sequences = 3;
|
||||
}
|
||||
|
||||
// QueryUnreceivedAcksResponse is the response type for the
|
||||
// Query/UnreceivedAcks RPC method
|
||||
message QueryUnreceivedAcksResponse {
|
||||
// list of unreceived acknowledgement sequences
|
||||
repeated uint64 sequences = 1;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryNextSequenceReceiveRequest is the request type for the
|
||||
// Query/QueryNextSequenceReceiveRequest RPC method
|
||||
message QueryNextSequenceReceiveRequest {
|
||||
// port unique identifier
|
||||
string port_id = 1;
|
||||
// channel unique identifier
|
||||
string channel_id = 2;
|
||||
}
|
||||
|
||||
// QuerySequenceResponse is the request type for the
|
||||
// Query/QueryNextSequenceReceiveResponse RPC method
|
||||
message QueryNextSequenceReceiveResponse {
|
||||
// next sequence receive number
|
||||
uint64 next_sequence_receive = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
211
third_party/proto/ibc/core/channel/v1/tx.proto
vendored
Normal file
211
third_party/proto/ibc/core/channel/v1/tx.proto
vendored
Normal file
@ -0,0 +1,211 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/04-channel/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "ibc/core/channel/v1/channel.proto";
|
||||
|
||||
// Msg defines the ibc/channel Msg service.
|
||||
service Msg {
|
||||
// ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.
|
||||
rpc ChannelOpenInit(MsgChannelOpenInit) returns (MsgChannelOpenInitResponse);
|
||||
|
||||
// ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.
|
||||
rpc ChannelOpenTry(MsgChannelOpenTry) returns (MsgChannelOpenTryResponse);
|
||||
|
||||
// ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.
|
||||
rpc ChannelOpenAck(MsgChannelOpenAck) returns (MsgChannelOpenAckResponse);
|
||||
|
||||
// ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.
|
||||
rpc ChannelOpenConfirm(MsgChannelOpenConfirm) returns (MsgChannelOpenConfirmResponse);
|
||||
|
||||
// ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.
|
||||
rpc ChannelCloseInit(MsgChannelCloseInit) returns (MsgChannelCloseInitResponse);
|
||||
|
||||
// ChannelCloseConfirm defines a rpc handler method for
|
||||
// MsgChannelCloseConfirm.
|
||||
rpc ChannelCloseConfirm(MsgChannelCloseConfirm) returns (MsgChannelCloseConfirmResponse);
|
||||
|
||||
// RecvPacket defines a rpc handler method for MsgRecvPacket.
|
||||
rpc RecvPacket(MsgRecvPacket) returns (MsgRecvPacketResponse);
|
||||
|
||||
// Timeout defines a rpc handler method for MsgTimeout.
|
||||
rpc Timeout(MsgTimeout) returns (MsgTimeoutResponse);
|
||||
|
||||
// TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.
|
||||
rpc TimeoutOnClose(MsgTimeoutOnClose) returns (MsgTimeoutOnCloseResponse);
|
||||
|
||||
// Acknowledgement defines a rpc handler method for MsgAcknowledgement.
|
||||
rpc Acknowledgement(MsgAcknowledgement) returns (MsgAcknowledgementResponse);
|
||||
}
|
||||
|
||||
// MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It
|
||||
// is called by a relayer on Chain A.
|
||||
message MsgChannelOpenInit {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
Channel channel = 2 [(gogoproto.nullable) = false];
|
||||
string signer = 3;
|
||||
}
|
||||
|
||||
// MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.
|
||||
message MsgChannelOpenInitResponse {}
|
||||
|
||||
// MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel
|
||||
// on Chain B.
|
||||
message MsgChannelOpenTry {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
// in the case of crossing hello's, when both chains call OpenInit, we need
|
||||
// the channel identifier of the previous channel in state INIT
|
||||
string previous_channel_id = 2 [(gogoproto.moretags) = "yaml:\"previous_channel_id\""];
|
||||
Channel channel = 3 [(gogoproto.nullable) = false];
|
||||
string counterparty_version = 4 [(gogoproto.moretags) = "yaml:\"counterparty_version\""];
|
||||
bytes proof_init = 5 [(gogoproto.moretags) = "yaml:\"proof_init\""];
|
||||
ibc.core.client.v1.Height proof_height = 6
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 7;
|
||||
}
|
||||
|
||||
// MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.
|
||||
message MsgChannelOpenTryResponse {}
|
||||
|
||||
// MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge
|
||||
// the change of channel state to TRYOPEN on Chain B.
|
||||
message MsgChannelOpenAck {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
string counterparty_channel_id = 3 [(gogoproto.moretags) = "yaml:\"counterparty_channel_id\""];
|
||||
string counterparty_version = 4 [(gogoproto.moretags) = "yaml:\"counterparty_version\""];
|
||||
bytes proof_try = 5 [(gogoproto.moretags) = "yaml:\"proof_try\""];
|
||||
ibc.core.client.v1.Height proof_height = 6
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 7;
|
||||
}
|
||||
|
||||
// MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.
|
||||
message MsgChannelOpenAckResponse {}
|
||||
|
||||
// MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to
|
||||
// acknowledge the change of channel state to OPEN on Chain A.
|
||||
message MsgChannelOpenConfirm {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
bytes proof_ack = 3 [(gogoproto.moretags) = "yaml:\"proof_ack\""];
|
||||
ibc.core.client.v1.Height proof_height = 4
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 5;
|
||||
}
|
||||
|
||||
// MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response
|
||||
// type.
|
||||
message MsgChannelOpenConfirmResponse {}
|
||||
|
||||
// MsgChannelCloseInit defines a msg sent by a Relayer to Chain A
|
||||
// to close a channel with Chain B.
|
||||
message MsgChannelCloseInit {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
string signer = 3;
|
||||
}
|
||||
|
||||
// MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.
|
||||
message MsgChannelCloseInitResponse {}
|
||||
|
||||
// MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B
|
||||
// to acknowledge the change of channel state to CLOSED on Chain A.
|
||||
message MsgChannelCloseConfirm {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string port_id = 1 [(gogoproto.moretags) = "yaml:\"port_id\""];
|
||||
string channel_id = 2 [(gogoproto.moretags) = "yaml:\"channel_id\""];
|
||||
bytes proof_init = 3 [(gogoproto.moretags) = "yaml:\"proof_init\""];
|
||||
ibc.core.client.v1.Height proof_height = 4
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 5;
|
||||
}
|
||||
|
||||
// MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response
|
||||
// type.
|
||||
message MsgChannelCloseConfirmResponse {}
|
||||
|
||||
// MsgRecvPacket receives incoming IBC packet
|
||||
message MsgRecvPacket {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
Packet packet = 1 [(gogoproto.nullable) = false];
|
||||
bytes proof_commitment = 2 [(gogoproto.moretags) = "yaml:\"proof_commitment\""];
|
||||
ibc.core.client.v1.Height proof_height = 3
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 4;
|
||||
}
|
||||
|
||||
// MsgRecvPacketResponse defines the Msg/RecvPacket response type.
|
||||
message MsgRecvPacketResponse {}
|
||||
|
||||
// MsgTimeout receives timed-out packet
|
||||
message MsgTimeout {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
Packet packet = 1 [(gogoproto.nullable) = false];
|
||||
bytes proof_unreceived = 2 [(gogoproto.moretags) = "yaml:\"proof_unreceived\""];
|
||||
ibc.core.client.v1.Height proof_height = 3
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
uint64 next_sequence_recv = 4 [(gogoproto.moretags) = "yaml:\"next_sequence_recv\""];
|
||||
string signer = 5;
|
||||
}
|
||||
|
||||
// MsgTimeoutResponse defines the Msg/Timeout response type.
|
||||
message MsgTimeoutResponse {}
|
||||
|
||||
// MsgTimeoutOnClose timed-out packet upon counterparty channel closure.
|
||||
message MsgTimeoutOnClose {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
Packet packet = 1 [(gogoproto.nullable) = false];
|
||||
bytes proof_unreceived = 2 [(gogoproto.moretags) = "yaml:\"proof_unreceived\""];
|
||||
bytes proof_close = 3 [(gogoproto.moretags) = "yaml:\"proof_close\""];
|
||||
ibc.core.client.v1.Height proof_height = 4
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
uint64 next_sequence_recv = 5 [(gogoproto.moretags) = "yaml:\"next_sequence_recv\""];
|
||||
string signer = 6;
|
||||
}
|
||||
|
||||
// MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.
|
||||
message MsgTimeoutOnCloseResponse {}
|
||||
|
||||
// MsgAcknowledgement receives incoming IBC acknowledgement
|
||||
message MsgAcknowledgement {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
Packet packet = 1 [(gogoproto.nullable) = false];
|
||||
bytes acknowledgement = 2;
|
||||
bytes proof_acked = 3 [(gogoproto.moretags) = "yaml:\"proof_acked\""];
|
||||
ibc.core.client.v1.Height proof_height = 4
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 5;
|
||||
}
|
||||
|
||||
// MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.
|
||||
message MsgAcknowledgementResponse {}
|
100
third_party/proto/ibc/core/client/v1/client.proto
vendored
Normal file
100
third_party/proto/ibc/core/client/v1/client.proto
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/02-client/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "cosmos/upgrade/v1beta1/upgrade.proto";
|
||||
|
||||
// IdentifiedClientState defines a client state with an additional client
|
||||
// identifier field.
|
||||
message IdentifiedClientState {
|
||||
// client identifier
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// client state
|
||||
google.protobuf.Any client_state = 2 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
}
|
||||
|
||||
// ConsensusStateWithHeight defines a consensus state with an additional height
|
||||
// field.
|
||||
message ConsensusStateWithHeight {
|
||||
// consensus state height
|
||||
Height height = 1 [(gogoproto.nullable) = false];
|
||||
// consensus state
|
||||
google.protobuf.Any consensus_state = 2 [(gogoproto.moretags) = "yaml\"consensus_state\""];
|
||||
}
|
||||
|
||||
// ClientConsensusStates defines all the stored consensus states for a given
|
||||
// client.
|
||||
message ClientConsensusStates {
|
||||
// client identifier
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// consensus states and their heights associated with the client
|
||||
repeated ConsensusStateWithHeight consensus_states = 2
|
||||
[(gogoproto.moretags) = "yaml:\"consensus_states\"", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// ClientUpdateProposal is a governance proposal. If it passes, the substitute
|
||||
// client's latest consensus state is copied over to the subject client. The proposal
|
||||
// handler may fail if the subject and the substitute do not match in client and
|
||||
// chain parameters (with exception to latest height, frozen height, and chain-id).
|
||||
message ClientUpdateProposal {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// the title of the update proposal
|
||||
string title = 1;
|
||||
// the description of the proposal
|
||||
string description = 2;
|
||||
// the client identifier for the client to be updated if the proposal passes
|
||||
string subject_client_id = 3 [(gogoproto.moretags) = "yaml:\"subject_client_id\""];
|
||||
// the substitute client identifier for the client standing in for the subject
|
||||
// client
|
||||
string substitute_client_id = 4 [(gogoproto.moretags) = "yaml:\"substitute_client_id\""];
|
||||
}
|
||||
|
||||
// UpgradeProposal is a gov Content type for initiating an IBC breaking
|
||||
// upgrade.
|
||||
message UpgradeProposal {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
cosmos.upgrade.v1beta1.Plan plan = 3 [(gogoproto.nullable) = false];
|
||||
|
||||
// An UpgradedClientState must be provided to perform an IBC breaking upgrade.
|
||||
// This will make the chain commit to the correct upgraded (self) client state
|
||||
// before the upgrade occurs, so that connecting chains can verify that the
|
||||
// new upgraded client is valid by verifying a proof on the previous version
|
||||
// of the chain. This will allow IBC connections to persist smoothly across
|
||||
// planned chain upgrades
|
||||
google.protobuf.Any upgraded_client_state = 4 [(gogoproto.moretags) = "yaml:\"upgraded_client_state\""];
|
||||
}
|
||||
|
||||
// Height is a monotonically increasing data type
|
||||
// that can be compared against another Height for the purposes of updating and
|
||||
// freezing clients
|
||||
//
|
||||
// Normally the RevisionHeight is incremented at each height while keeping
|
||||
// RevisionNumber the same. However some consensus algorithms may choose to
|
||||
// reset the height in certain conditions e.g. hard forks, state-machine
|
||||
// breaking changes In these cases, the RevisionNumber is incremented so that
|
||||
// height continues to be monitonically increasing even as the RevisionHeight
|
||||
// gets reset
|
||||
message Height {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// the revision that the client is currently on
|
||||
uint64 revision_number = 1 [(gogoproto.moretags) = "yaml:\"revision_number\""];
|
||||
// the height within the given revision
|
||||
uint64 revision_height = 2 [(gogoproto.moretags) = "yaml:\"revision_height\""];
|
||||
}
|
||||
|
||||
// Params defines the set of IBC light client parameters.
|
||||
message Params {
|
||||
// allowed_clients defines the list of allowed client state types.
|
||||
repeated string allowed_clients = 1 [(gogoproto.moretags) = "yaml:\"allowed_clients\""];
|
||||
}
|
48
third_party/proto/ibc/core/client/v1/genesis.proto
vendored
Normal file
48
third_party/proto/ibc/core/client/v1/genesis.proto
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/02-client/types";
|
||||
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// GenesisState defines the ibc client submodule's genesis state.
|
||||
message GenesisState {
|
||||
// client states with their corresponding identifiers
|
||||
repeated IdentifiedClientState clients = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "IdentifiedClientStates"];
|
||||
// consensus states from each client
|
||||
repeated ClientConsensusStates clients_consensus = 2 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "ClientsConsensusStates",
|
||||
(gogoproto.moretags) = "yaml:\"clients_consensus\""
|
||||
];
|
||||
// metadata from each client
|
||||
repeated IdentifiedGenesisMetadata clients_metadata = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"clients_metadata\""];
|
||||
Params params = 4 [(gogoproto.nullable) = false];
|
||||
// create localhost on initialization
|
||||
bool create_localhost = 5 [(gogoproto.moretags) = "yaml:\"create_localhost\""];
|
||||
// the sequence for the next generated client identifier
|
||||
uint64 next_client_sequence = 6 [(gogoproto.moretags) = "yaml:\"next_client_sequence\""];
|
||||
}
|
||||
|
||||
// GenesisMetadata defines the genesis type for metadata that clients may return
|
||||
// with ExportMetadata
|
||||
message GenesisMetadata {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// store key of metadata without clientID-prefix
|
||||
bytes key = 1;
|
||||
// metadata value
|
||||
bytes value = 2;
|
||||
}
|
||||
|
||||
// IdentifiedGenesisMetadata has the client metadata with the corresponding
|
||||
// client id.
|
||||
message IdentifiedGenesisMetadata {
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
repeated GenesisMetadata client_metadata = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"client_metadata\""];
|
||||
}
|
184
third_party/proto/ibc/core/client/v1/query.proto
vendored
Normal file
184
third_party/proto/ibc/core/client/v1/query.proto
vendored
Normal file
@ -0,0 +1,184 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/02-client/types";
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// Query provides defines the gRPC querier service
|
||||
service Query {
|
||||
// ClientState queries an IBC light client.
|
||||
rpc ClientState(QueryClientStateRequest) returns (QueryClientStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/client_states/{client_id}";
|
||||
}
|
||||
|
||||
// ClientStates queries all the IBC light clients of a chain.
|
||||
rpc ClientStates(QueryClientStatesRequest) returns (QueryClientStatesResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/client_states";
|
||||
}
|
||||
|
||||
// ConsensusState queries a consensus state associated with a client state at
|
||||
// a given height.
|
||||
rpc ConsensusState(QueryConsensusStateRequest) returns (QueryConsensusStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/consensus_states/"
|
||||
"{client_id}/revision/{revision_number}/"
|
||||
"height/{revision_height}";
|
||||
}
|
||||
|
||||
// ConsensusStates queries all the consensus state associated with a given
|
||||
// client.
|
||||
rpc ConsensusStates(QueryConsensusStatesRequest) returns (QueryConsensusStatesResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/consensus_states/{client_id}";
|
||||
}
|
||||
|
||||
// Status queries the status of an IBC client.
|
||||
rpc ClientStatus(QueryClientStatusRequest) returns (QueryClientStatusResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/client_status/{client_id}";
|
||||
}
|
||||
|
||||
// ClientParams queries all parameters of the ibc client.
|
||||
rpc ClientParams(QueryClientParamsRequest) returns (QueryClientParamsResponse) {
|
||||
option (google.api.http).get = "/ibc/client/v1/params";
|
||||
}
|
||||
|
||||
// UpgradedClientState queries an Upgraded IBC light client.
|
||||
rpc UpgradedClientState(QueryUpgradedClientStateRequest) returns (QueryUpgradedClientStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/upgraded_client_states";
|
||||
}
|
||||
|
||||
// UpgradedConsensusState queries an Upgraded IBC consensus state.
|
||||
rpc UpgradedConsensusState(QueryUpgradedConsensusStateRequest) returns (QueryUpgradedConsensusStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/client/v1/upgraded_consensus_states";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryClientStateRequest is the request type for the Query/ClientState RPC
|
||||
// method
|
||||
message QueryClientStateRequest {
|
||||
// client state unique identifier
|
||||
string client_id = 1;
|
||||
}
|
||||
|
||||
// QueryClientStateResponse is the response type for the Query/ClientState RPC
|
||||
// method. Besides the client state, it includes a proof and the height from
|
||||
// which the proof was retrieved.
|
||||
message QueryClientStateResponse {
|
||||
// client state associated with the request identifier
|
||||
google.protobuf.Any client_state = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryClientStatesRequest is the request type for the Query/ClientStates RPC
|
||||
// method
|
||||
message QueryClientStatesRequest {
|
||||
// pagination request
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryClientStatesResponse is the response type for the Query/ClientStates RPC
|
||||
// method.
|
||||
message QueryClientStatesResponse {
|
||||
// list of stored ClientStates of the chain.
|
||||
repeated IdentifiedClientState client_states = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "IdentifiedClientStates"];
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryConsensusStateRequest is the request type for the Query/ConsensusState
|
||||
// RPC method. Besides the consensus state, it includes a proof and the height
|
||||
// from which the proof was retrieved.
|
||||
message QueryConsensusStateRequest {
|
||||
// client identifier
|
||||
string client_id = 1;
|
||||
// consensus state revision number
|
||||
uint64 revision_number = 2;
|
||||
// consensus state revision height
|
||||
uint64 revision_height = 3;
|
||||
// latest_height overrrides the height field and queries the latest stored
|
||||
// ConsensusState
|
||||
bool latest_height = 4;
|
||||
}
|
||||
|
||||
// QueryConsensusStateResponse is the response type for the Query/ConsensusState
|
||||
// RPC method
|
||||
message QueryConsensusStateResponse {
|
||||
// consensus state associated with the client identifier at the given height
|
||||
google.protobuf.Any consensus_state = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryConsensusStatesRequest is the request type for the Query/ConsensusStates
|
||||
// RPC method.
|
||||
message QueryConsensusStatesRequest {
|
||||
// client identifier
|
||||
string client_id = 1;
|
||||
// pagination request
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryConsensusStatesResponse is the response type for the
|
||||
// Query/ConsensusStates RPC method
|
||||
message QueryConsensusStatesResponse {
|
||||
// consensus states associated with the identifier
|
||||
repeated ConsensusStateWithHeight consensus_states = 1 [(gogoproto.nullable) = false];
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryClientStatusRequest is the request type for the Query/ClientStatus RPC
|
||||
// method
|
||||
message QueryClientStatusRequest {
|
||||
// client unique identifier
|
||||
string client_id = 1;
|
||||
}
|
||||
|
||||
// QueryClientStatusResponse is the response type for the Query/ClientStatus RPC
|
||||
// method. It returns the current status of the IBC client.
|
||||
message QueryClientStatusResponse {
|
||||
string status = 1;
|
||||
}
|
||||
|
||||
// QueryClientParamsRequest is the request type for the Query/ClientParams RPC
|
||||
// method.
|
||||
message QueryClientParamsRequest {}
|
||||
|
||||
// QueryClientParamsResponse is the response type for the Query/ClientParams RPC
|
||||
// method.
|
||||
message QueryClientParamsResponse {
|
||||
// params defines the parameters of the module.
|
||||
Params params = 1;
|
||||
}
|
||||
|
||||
// QueryUpgradedClientStateRequest is the request type for the
|
||||
// Query/UpgradedClientState RPC method
|
||||
message QueryUpgradedClientStateRequest {}
|
||||
|
||||
// QueryUpgradedClientStateResponse is the response type for the
|
||||
// Query/UpgradedClientState RPC method.
|
||||
message QueryUpgradedClientStateResponse {
|
||||
// client state associated with the request identifier
|
||||
google.protobuf.Any upgraded_client_state = 1;
|
||||
}
|
||||
|
||||
// QueryUpgradedConsensusStateRequest is the request type for the
|
||||
// Query/UpgradedConsensusState RPC method
|
||||
message QueryUpgradedConsensusStateRequest {}
|
||||
|
||||
// QueryUpgradedConsensusStateResponse is the response type for the
|
||||
// Query/UpgradedConsensusState RPC method.
|
||||
message QueryUpgradedConsensusStateResponse {
|
||||
// Consensus state associated with the request identifier
|
||||
google.protobuf.Any upgraded_consensus_state = 1;
|
||||
}
|
100
third_party/proto/ibc/core/client/v1/tx.proto
vendored
Normal file
100
third_party/proto/ibc/core/client/v1/tx.proto
vendored
Normal file
@ -0,0 +1,100 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/02-client/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
|
||||
// Msg defines the ibc/client Msg service.
|
||||
service Msg {
|
||||
// CreateClient defines a rpc handler method for MsgCreateClient.
|
||||
rpc CreateClient(MsgCreateClient) returns (MsgCreateClientResponse);
|
||||
|
||||
// UpdateClient defines a rpc handler method for MsgUpdateClient.
|
||||
rpc UpdateClient(MsgUpdateClient) returns (MsgUpdateClientResponse);
|
||||
|
||||
// UpgradeClient defines a rpc handler method for MsgUpgradeClient.
|
||||
rpc UpgradeClient(MsgUpgradeClient) returns (MsgUpgradeClientResponse);
|
||||
|
||||
// SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.
|
||||
rpc SubmitMisbehaviour(MsgSubmitMisbehaviour) returns (MsgSubmitMisbehaviourResponse);
|
||||
}
|
||||
|
||||
// MsgCreateClient defines a message to create an IBC client
|
||||
message MsgCreateClient {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// light client state
|
||||
google.protobuf.Any client_state = 1 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
// consensus state associated with the client that corresponds to a given
|
||||
// height.
|
||||
google.protobuf.Any consensus_state = 2 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
||||
// signer address
|
||||
string signer = 3;
|
||||
}
|
||||
|
||||
// MsgCreateClientResponse defines the Msg/CreateClient response type.
|
||||
message MsgCreateClientResponse {}
|
||||
|
||||
// MsgUpdateClient defines an sdk.Msg to update a IBC client state using
|
||||
// the given header.
|
||||
message MsgUpdateClient {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// client unique identifier
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// header to update the light client
|
||||
google.protobuf.Any header = 2;
|
||||
// signer address
|
||||
string signer = 3;
|
||||
}
|
||||
|
||||
// MsgUpdateClientResponse defines the Msg/UpdateClient response type.
|
||||
message MsgUpdateClientResponse {}
|
||||
|
||||
// MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client
|
||||
// state
|
||||
message MsgUpgradeClient {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// client unique identifier
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// upgraded client state
|
||||
google.protobuf.Any client_state = 2 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
// upgraded consensus state, only contains enough information to serve as a
|
||||
// basis of trust in update logic
|
||||
google.protobuf.Any consensus_state = 3 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
||||
// proof that old chain committed to new client
|
||||
bytes proof_upgrade_client = 4 [(gogoproto.moretags) = "yaml:\"proof_upgrade_client\""];
|
||||
// proof that old chain committed to new consensus state
|
||||
bytes proof_upgrade_consensus_state = 5 [(gogoproto.moretags) = "yaml:\"proof_upgrade_consensus_state\""];
|
||||
// signer address
|
||||
string signer = 6;
|
||||
}
|
||||
|
||||
// MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.
|
||||
message MsgUpgradeClientResponse {}
|
||||
|
||||
// MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for
|
||||
// light client misbehaviour.
|
||||
message MsgSubmitMisbehaviour {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// client unique identifier
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// misbehaviour used for freezing the light client
|
||||
google.protobuf.Any misbehaviour = 2;
|
||||
// signer address
|
||||
string signer = 3;
|
||||
}
|
||||
|
||||
// MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response
|
||||
// type.
|
||||
message MsgSubmitMisbehaviourResponse {}
|
41
third_party/proto/ibc/core/commitment/v1/commitment.proto
vendored
Normal file
41
third_party/proto/ibc/core/commitment/v1/commitment.proto
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.commitment.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/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;
|
||||
}
|
114
third_party/proto/ibc/core/connection/v1/connection.proto
vendored
Normal file
114
third_party/proto/ibc/core/connection/v1/connection.proto
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/03-connection/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/commitment/v1/commitment.proto";
|
||||
|
||||
// ICS03 - Connection Data Structures as defined in
|
||||
// https://github.com/cosmos/ics/tree/master/spec/ics-003-connection-semantics#data-structures
|
||||
|
||||
// ConnectionEnd defines a stateful object on a chain connected to another
|
||||
// separate one.
|
||||
// NOTE: there must only be 2 defined ConnectionEnds to establish
|
||||
// a connection between two chains.
|
||||
message ConnectionEnd {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// client associated with this connection.
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// IBC version which can be utilised to determine encodings or protocols for
|
||||
// channels or packets utilising this connection.
|
||||
repeated Version versions = 2;
|
||||
// current state of the connection end.
|
||||
State state = 3;
|
||||
// counterparty chain associated with this connection.
|
||||
Counterparty counterparty = 4 [(gogoproto.nullable) = false];
|
||||
// delay period that must pass before a consensus state can be used for
|
||||
// packet-verification NOTE: delay period logic is only implemented by some
|
||||
// clients.
|
||||
uint64 delay_period = 5 [(gogoproto.moretags) = "yaml:\"delay_period\""];
|
||||
}
|
||||
|
||||
// IdentifiedConnection defines a connection with additional connection
|
||||
// identifier field.
|
||||
message IdentifiedConnection {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// connection identifier.
|
||||
string id = 1 [(gogoproto.moretags) = "yaml:\"id\""];
|
||||
// client associated with this connection.
|
||||
string client_id = 2 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// IBC version which can be utilised to determine encodings or protocols for
|
||||
// channels or packets utilising this connection
|
||||
repeated Version versions = 3;
|
||||
// current state of the connection end.
|
||||
State state = 4;
|
||||
// counterparty chain associated with this connection.
|
||||
Counterparty counterparty = 5 [(gogoproto.nullable) = false];
|
||||
// delay period associated with this connection.
|
||||
uint64 delay_period = 6 [(gogoproto.moretags) = "yaml:\"delay_period\""];
|
||||
}
|
||||
|
||||
// State defines if a connection is in one of the following states:
|
||||
// INIT, TRYOPEN, OPEN or UNINITIALIZED.
|
||||
enum State {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// Default State
|
||||
STATE_UNINITIALIZED_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNINITIALIZED"];
|
||||
// A connection end has just started the opening handshake.
|
||||
STATE_INIT = 1 [(gogoproto.enumvalue_customname) = "INIT"];
|
||||
// A connection end has acknowledged the handshake step on the counterparty
|
||||
// chain.
|
||||
STATE_TRYOPEN = 2 [(gogoproto.enumvalue_customname) = "TRYOPEN"];
|
||||
// A connection end has completed the handshake.
|
||||
STATE_OPEN = 3 [(gogoproto.enumvalue_customname) = "OPEN"];
|
||||
}
|
||||
|
||||
// Counterparty defines the counterparty chain associated with a connection end.
|
||||
message Counterparty {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// identifies the client on the counterparty chain associated with a given
|
||||
// connection.
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// identifies the connection end on the counterparty chain associated with a
|
||||
// given connection.
|
||||
string connection_id = 2 [(gogoproto.moretags) = "yaml:\"connection_id\""];
|
||||
// commitment merkle prefix of the counterparty chain.
|
||||
ibc.core.commitment.v1.MerklePrefix prefix = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// ClientPaths define all the connection paths for a client state.
|
||||
message ClientPaths {
|
||||
// list of connection paths
|
||||
repeated string paths = 1;
|
||||
}
|
||||
|
||||
// ConnectionPaths define all the connection paths for a given client state.
|
||||
message ConnectionPaths {
|
||||
// client state unique identifier
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// list of connection paths
|
||||
repeated string paths = 2;
|
||||
}
|
||||
|
||||
// Version defines the versioning scheme used to negotiate the IBC verison in
|
||||
// the connection handshake.
|
||||
message Version {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// unique version identifier
|
||||
string identifier = 1;
|
||||
// list of features compatible with the specified identifier
|
||||
repeated string features = 2;
|
||||
}
|
||||
|
||||
// Params defines the set of Connection parameters.
|
||||
message Params {
|
||||
// maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the
|
||||
// largest amount of time that the chain might reasonably take to produce the next block under normal operating
|
||||
// conditions. A safe choice is 3-5x the expected time per block.
|
||||
uint64 max_expected_time_per_block = 1 [(gogoproto.moretags) = "yaml:\"max_expected_time_per_block\""];
|
||||
}
|
18
third_party/proto/ibc/core/connection/v1/genesis.proto
vendored
Normal file
18
third_party/proto/ibc/core/connection/v1/genesis.proto
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/03-connection/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/connection/v1/connection.proto";
|
||||
|
||||
// GenesisState defines the ibc connection submodule's genesis state.
|
||||
message GenesisState {
|
||||
repeated IdentifiedConnection connections = 1 [(gogoproto.nullable) = false];
|
||||
repeated ConnectionPaths client_connection_paths = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"client_connection_paths\""];
|
||||
// the sequence for the next generated connection identifier
|
||||
uint64 next_connection_sequence = 3 [(gogoproto.moretags) = "yaml:\"next_connection_sequence\""];
|
||||
Params params = 4 [(gogoproto.nullable) = false];
|
||||
}
|
138
third_party/proto/ibc/core/connection/v1/query.proto
vendored
Normal file
138
third_party/proto/ibc/core/connection/v1/query.proto
vendored
Normal file
@ -0,0 +1,138 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/03-connection/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "ibc/core/connection/v1/connection.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
// Query provides defines the gRPC querier service
|
||||
service Query {
|
||||
// Connection queries an IBC connection end.
|
||||
rpc Connection(QueryConnectionRequest) returns (QueryConnectionResponse) {
|
||||
option (google.api.http).get = "/ibc/core/connection/v1/connections/{connection_id}";
|
||||
}
|
||||
|
||||
// Connections queries all the IBC connections of a chain.
|
||||
rpc Connections(QueryConnectionsRequest) returns (QueryConnectionsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/connection/v1/connections";
|
||||
}
|
||||
|
||||
// ClientConnections queries the connection paths associated with a client
|
||||
// state.
|
||||
rpc ClientConnections(QueryClientConnectionsRequest) returns (QueryClientConnectionsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/connection/v1/client_connections/{client_id}";
|
||||
}
|
||||
|
||||
// ConnectionClientState queries the client state associated with the
|
||||
// connection.
|
||||
rpc ConnectionClientState(QueryConnectionClientStateRequest) returns (QueryConnectionClientStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/connection/v1/connections/{connection_id}/client_state";
|
||||
}
|
||||
|
||||
// ConnectionConsensusState queries the consensus state associated with the
|
||||
// connection.
|
||||
rpc ConnectionConsensusState(QueryConnectionConsensusStateRequest) returns (QueryConnectionConsensusStateResponse) {
|
||||
option (google.api.http).get = "/ibc/core/connection/v1/connections/{connection_id}/consensus_state/"
|
||||
"revision/{revision_number}/height/{revision_height}";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryConnectionRequest is the request type for the Query/Connection RPC
|
||||
// method
|
||||
message QueryConnectionRequest {
|
||||
// connection unique identifier
|
||||
string connection_id = 1;
|
||||
}
|
||||
|
||||
// QueryConnectionResponse is the response type for the Query/Connection RPC
|
||||
// method. Besides the connection end, it includes a proof and the height from
|
||||
// which the proof was retrieved.
|
||||
message QueryConnectionResponse {
|
||||
// connection associated with the request identifier
|
||||
ibc.core.connection.v1.ConnectionEnd connection = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryConnectionsRequest is the request type for the Query/Connections RPC
|
||||
// method
|
||||
message QueryConnectionsRequest {
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryConnectionsResponse is the response type for the Query/Connections RPC
|
||||
// method.
|
||||
message QueryConnectionsResponse {
|
||||
// list of stored connections of the chain.
|
||||
repeated ibc.core.connection.v1.IdentifiedConnection connections = 1;
|
||||
// pagination response
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
// query block height
|
||||
ibc.core.client.v1.Height height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryClientConnectionsRequest is the request type for the
|
||||
// Query/ClientConnections RPC method
|
||||
message QueryClientConnectionsRequest {
|
||||
// client identifier associated with a connection
|
||||
string client_id = 1;
|
||||
}
|
||||
|
||||
// QueryClientConnectionsResponse is the response type for the
|
||||
// Query/ClientConnections RPC method
|
||||
message QueryClientConnectionsResponse {
|
||||
// slice of all the connection paths associated with a client.
|
||||
repeated string connection_paths = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was generated
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryConnectionClientStateRequest is the request type for the
|
||||
// Query/ConnectionClientState RPC method
|
||||
message QueryConnectionClientStateRequest {
|
||||
// connection identifier
|
||||
string connection_id = 1 [(gogoproto.moretags) = "yaml:\"connection_id\""];
|
||||
}
|
||||
|
||||
// QueryConnectionClientStateResponse is the response type for the
|
||||
// Query/ConnectionClientState RPC method
|
||||
message QueryConnectionClientStateResponse {
|
||||
// client state associated with the channel
|
||||
ibc.core.client.v1.IdentifiedClientState identified_client_state = 1;
|
||||
// merkle proof of existence
|
||||
bytes proof = 2;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryConnectionConsensusStateRequest is the request type for the
|
||||
// Query/ConnectionConsensusState RPC method
|
||||
message QueryConnectionConsensusStateRequest {
|
||||
// connection identifier
|
||||
string connection_id = 1 [(gogoproto.moretags) = "yaml:\"connection_id\""];
|
||||
uint64 revision_number = 2;
|
||||
uint64 revision_height = 3;
|
||||
}
|
||||
|
||||
// QueryConnectionConsensusStateResponse is the response type for the
|
||||
// Query/ConnectionConsensusState RPC method
|
||||
message QueryConnectionConsensusStateResponse {
|
||||
// consensus state associated with the channel
|
||||
google.protobuf.Any consensus_state = 1;
|
||||
// client ID associated with the consensus state
|
||||
string client_id = 2;
|
||||
// merkle proof of existence
|
||||
bytes proof = 3;
|
||||
// height at which the proof was retrieved
|
||||
ibc.core.client.v1.Height proof_height = 4 [(gogoproto.nullable) = false];
|
||||
}
|
119
third_party/proto/ibc/core/connection/v1/tx.proto
vendored
Normal file
119
third_party/proto/ibc/core/connection/v1/tx.proto
vendored
Normal file
@ -0,0 +1,119 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/03-connection/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "ibc/core/connection/v1/connection.proto";
|
||||
|
||||
// Msg defines the ibc/connection Msg service.
|
||||
service Msg {
|
||||
// ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.
|
||||
rpc ConnectionOpenInit(MsgConnectionOpenInit) returns (MsgConnectionOpenInitResponse);
|
||||
|
||||
// ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.
|
||||
rpc ConnectionOpenTry(MsgConnectionOpenTry) returns (MsgConnectionOpenTryResponse);
|
||||
|
||||
// ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.
|
||||
rpc ConnectionOpenAck(MsgConnectionOpenAck) returns (MsgConnectionOpenAckResponse);
|
||||
|
||||
// ConnectionOpenConfirm defines a rpc handler method for
|
||||
// MsgConnectionOpenConfirm.
|
||||
rpc ConnectionOpenConfirm(MsgConnectionOpenConfirm) returns (MsgConnectionOpenConfirmResponse);
|
||||
}
|
||||
|
||||
// MsgConnectionOpenInit defines the msg sent by an account on Chain A to
|
||||
// initialize a connection with Chain B.
|
||||
message MsgConnectionOpenInit {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
Counterparty counterparty = 2 [(gogoproto.nullable) = false];
|
||||
Version version = 3;
|
||||
uint64 delay_period = 4 [(gogoproto.moretags) = "yaml:\"delay_period\""];
|
||||
string signer = 5;
|
||||
}
|
||||
|
||||
// MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response
|
||||
// type.
|
||||
message MsgConnectionOpenInitResponse {}
|
||||
|
||||
// MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a
|
||||
// connection on Chain B.
|
||||
message MsgConnectionOpenTry {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// in the case of crossing hello's, when both chains call OpenInit, we need
|
||||
// the connection identifier of the previous connection in state INIT
|
||||
string previous_connection_id = 2 [(gogoproto.moretags) = "yaml:\"previous_connection_id\""];
|
||||
google.protobuf.Any client_state = 3 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
Counterparty counterparty = 4 [(gogoproto.nullable) = false];
|
||||
uint64 delay_period = 5 [(gogoproto.moretags) = "yaml:\"delay_period\""];
|
||||
repeated Version counterparty_versions = 6 [(gogoproto.moretags) = "yaml:\"counterparty_versions\""];
|
||||
ibc.core.client.v1.Height proof_height = 7
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
// proof of the initialization the connection on Chain A: `UNITIALIZED ->
|
||||
// INIT`
|
||||
bytes proof_init = 8 [(gogoproto.moretags) = "yaml:\"proof_init\""];
|
||||
// proof of client state included in message
|
||||
bytes proof_client = 9 [(gogoproto.moretags) = "yaml:\"proof_client\""];
|
||||
// proof of client consensus state
|
||||
bytes proof_consensus = 10 [(gogoproto.moretags) = "yaml:\"proof_consensus\""];
|
||||
ibc.core.client.v1.Height consensus_height = 11
|
||||
[(gogoproto.moretags) = "yaml:\"consensus_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 12;
|
||||
}
|
||||
|
||||
// MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.
|
||||
message MsgConnectionOpenTryResponse {}
|
||||
|
||||
// MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to
|
||||
// acknowledge the change of connection state to TRYOPEN on Chain B.
|
||||
message MsgConnectionOpenAck {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string connection_id = 1 [(gogoproto.moretags) = "yaml:\"connection_id\""];
|
||||
string counterparty_connection_id = 2 [(gogoproto.moretags) = "yaml:\"counterparty_connection_id\""];
|
||||
Version version = 3;
|
||||
google.protobuf.Any client_state = 4 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
ibc.core.client.v1.Height proof_height = 5
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
// proof of the initialization the connection on Chain B: `UNITIALIZED ->
|
||||
// TRYOPEN`
|
||||
bytes proof_try = 6 [(gogoproto.moretags) = "yaml:\"proof_try\""];
|
||||
// proof of client state included in message
|
||||
bytes proof_client = 7 [(gogoproto.moretags) = "yaml:\"proof_client\""];
|
||||
// proof of client consensus state
|
||||
bytes proof_consensus = 8 [(gogoproto.moretags) = "yaml:\"proof_consensus\""];
|
||||
ibc.core.client.v1.Height consensus_height = 9
|
||||
[(gogoproto.moretags) = "yaml:\"consensus_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 10;
|
||||
}
|
||||
|
||||
// MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.
|
||||
message MsgConnectionOpenAckResponse {}
|
||||
|
||||
// MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to
|
||||
// acknowledge the change of connection state to OPEN on Chain A.
|
||||
message MsgConnectionOpenConfirm {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string connection_id = 1 [(gogoproto.moretags) = "yaml:\"connection_id\""];
|
||||
// proof for the change of the connection state on Chain A: `INIT -> OPEN`
|
||||
bytes proof_ack = 2 [(gogoproto.moretags) = "yaml:\"proof_ack\""];
|
||||
ibc.core.client.v1.Height proof_height = 3
|
||||
[(gogoproto.moretags) = "yaml:\"proof_height\"", (gogoproto.nullable) = false];
|
||||
string signer = 4;
|
||||
}
|
||||
|
||||
// MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm
|
||||
// response type.
|
||||
message MsgConnectionOpenConfirmResponse {}
|
23
third_party/proto/ibc/core/types/v1/genesis.proto
vendored
Normal file
23
third_party/proto/ibc/core/types/v1/genesis.proto
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.core.types.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/client/v1/genesis.proto";
|
||||
import "ibc/core/connection/v1/genesis.proto";
|
||||
import "ibc/core/channel/v1/genesis.proto";
|
||||
|
||||
// GenesisState defines the ibc module's genesis state.
|
||||
message GenesisState {
|
||||
// ICS002 - Clients genesis state
|
||||
ibc.core.client.v1.GenesisState client_genesis = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"client_genesis\""];
|
||||
// ICS003 - Connections genesis state
|
||||
ibc.core.connection.v1.GenesisState connection_genesis = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"connection_genesis\""];
|
||||
// ICS004 - Channel genesis state
|
||||
ibc.core.channel.v1.GenesisState channel_genesis = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"channel_genesis\""];
|
||||
}
|
18
third_party/proto/ibc/lightclients/localhost/v1/localhost.proto
vendored
Normal file
18
third_party/proto/ibc/lightclients/localhost/v1/localhost.proto
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.lightclients.localhost.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/light-clients/09-localhost/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
|
||||
// ClientState defines a loopback (localhost) client. It requires (read-only)
|
||||
// access to keys outside the client prefix.
|
||||
message ClientState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// self chain ID
|
||||
string chain_id = 1 [(gogoproto.moretags) = "yaml:\"chain_id\""];
|
||||
// self latest block height
|
||||
ibc.core.client.v1.Height height = 2 [(gogoproto.nullable) = false];
|
||||
}
|
189
third_party/proto/ibc/lightclients/solomachine/v1/solomachine.proto
vendored
Normal file
189
third_party/proto/ibc/lightclients/solomachine/v1/solomachine.proto
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.lightclients.solomachine.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/core/02-client/legacy/v100";
|
||||
|
||||
import "ibc/core/connection/v1/connection.proto";
|
||||
import "ibc/core/channel/v1/channel.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
// ClientState defines a solo machine client that tracks the current consensus
|
||||
// state and if the client is frozen.
|
||||
message ClientState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// latest sequence of the client state
|
||||
uint64 sequence = 1;
|
||||
// frozen sequence of the solo machine
|
||||
uint64 frozen_sequence = 2 [(gogoproto.moretags) = "yaml:\"frozen_sequence\""];
|
||||
ConsensusState consensus_state = 3 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
||||
// when set to true, will allow governance to update a solo machine client.
|
||||
// The client will be unfrozen if it is frozen.
|
||||
bool allow_update_after_proposal = 4 [(gogoproto.moretags) = "yaml:\"allow_update_after_proposal\""];
|
||||
}
|
||||
|
||||
// ConsensusState defines a solo machine consensus state. The sequence of a
|
||||
// consensus state is contained in the "height" key used in storing the
|
||||
// consensus state.
|
||||
message ConsensusState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// public key of the solo machine
|
||||
google.protobuf.Any public_key = 1 [(gogoproto.moretags) = "yaml:\"public_key\""];
|
||||
// diversifier allows the same public key to be re-used across different solo
|
||||
// machine clients (potentially on different chains) without being considered
|
||||
// misbehaviour.
|
||||
string diversifier = 2;
|
||||
uint64 timestamp = 3;
|
||||
}
|
||||
|
||||
// Header defines a solo machine consensus header
|
||||
message Header {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// sequence to update solo machine public key at
|
||||
uint64 sequence = 1;
|
||||
uint64 timestamp = 2;
|
||||
bytes signature = 3;
|
||||
google.protobuf.Any new_public_key = 4 [(gogoproto.moretags) = "yaml:\"new_public_key\""];
|
||||
string new_diversifier = 5 [(gogoproto.moretags) = "yaml:\"new_diversifier\""];
|
||||
}
|
||||
|
||||
// Misbehaviour defines misbehaviour for a solo machine which consists
|
||||
// of a sequence and two signatures over different messages at that sequence.
|
||||
message Misbehaviour {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
uint64 sequence = 2;
|
||||
SignatureAndData signature_one = 3 [(gogoproto.moretags) = "yaml:\"signature_one\""];
|
||||
SignatureAndData signature_two = 4 [(gogoproto.moretags) = "yaml:\"signature_two\""];
|
||||
}
|
||||
|
||||
// SignatureAndData contains a signature and the data signed over to create that
|
||||
// signature.
|
||||
message SignatureAndData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
bytes signature = 1;
|
||||
DataType data_type = 2 [(gogoproto.moretags) = "yaml:\"data_type\""];
|
||||
bytes data = 3;
|
||||
uint64 timestamp = 4;
|
||||
}
|
||||
|
||||
// TimestampedSignatureData contains the signature data and the timestamp of the
|
||||
// signature.
|
||||
message TimestampedSignatureData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
bytes signature_data = 1 [(gogoproto.moretags) = "yaml:\"signature_data\""];
|
||||
uint64 timestamp = 2;
|
||||
}
|
||||
|
||||
// SignBytes defines the signed bytes used for signature verification.
|
||||
message SignBytes {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
uint64 sequence = 1;
|
||||
uint64 timestamp = 2;
|
||||
string diversifier = 3;
|
||||
// type of the data used
|
||||
DataType data_type = 4 [(gogoproto.moretags) = "yaml:\"data_type\""];
|
||||
// marshaled data
|
||||
bytes data = 5;
|
||||
}
|
||||
|
||||
// DataType defines the type of solo machine proof being created. This is done
|
||||
// to preserve uniqueness of different data sign byte encodings.
|
||||
enum DataType {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// Default State
|
||||
DATA_TYPE_UNINITIALIZED_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNSPECIFIED"];
|
||||
// Data type for client state verification
|
||||
DATA_TYPE_CLIENT_STATE = 1 [(gogoproto.enumvalue_customname) = "CLIENT"];
|
||||
// Data type for consensus state verification
|
||||
DATA_TYPE_CONSENSUS_STATE = 2 [(gogoproto.enumvalue_customname) = "CONSENSUS"];
|
||||
// Data type for connection state verification
|
||||
DATA_TYPE_CONNECTION_STATE = 3 [(gogoproto.enumvalue_customname) = "CONNECTION"];
|
||||
// Data type for channel state verification
|
||||
DATA_TYPE_CHANNEL_STATE = 4 [(gogoproto.enumvalue_customname) = "CHANNEL"];
|
||||
// Data type for packet commitment verification
|
||||
DATA_TYPE_PACKET_COMMITMENT = 5 [(gogoproto.enumvalue_customname) = "PACKETCOMMITMENT"];
|
||||
// Data type for packet acknowledgement verification
|
||||
DATA_TYPE_PACKET_ACKNOWLEDGEMENT = 6 [(gogoproto.enumvalue_customname) = "PACKETACKNOWLEDGEMENT"];
|
||||
// Data type for packet receipt absence verification
|
||||
DATA_TYPE_PACKET_RECEIPT_ABSENCE = 7 [(gogoproto.enumvalue_customname) = "PACKETRECEIPTABSENCE"];
|
||||
// Data type for next sequence recv verification
|
||||
DATA_TYPE_NEXT_SEQUENCE_RECV = 8 [(gogoproto.enumvalue_customname) = "NEXTSEQUENCERECV"];
|
||||
// Data type for header verification
|
||||
DATA_TYPE_HEADER = 9 [(gogoproto.enumvalue_customname) = "HEADER"];
|
||||
}
|
||||
|
||||
// HeaderData returns the SignBytes data for update verification.
|
||||
message HeaderData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// header public key
|
||||
google.protobuf.Any new_pub_key = 1 [(gogoproto.moretags) = "yaml:\"new_pub_key\""];
|
||||
// header diversifier
|
||||
string new_diversifier = 2 [(gogoproto.moretags) = "yaml:\"new_diversifier\""];
|
||||
}
|
||||
|
||||
// ClientStateData returns the SignBytes data for client state verification.
|
||||
message ClientStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
google.protobuf.Any client_state = 2 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
}
|
||||
|
||||
// ConsensusStateData returns the SignBytes data for consensus state
|
||||
// verification.
|
||||
message ConsensusStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
google.protobuf.Any consensus_state = 2 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
||||
}
|
||||
|
||||
// ConnectionStateData returns the SignBytes data for connection state
|
||||
// verification.
|
||||
message ConnectionStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
ibc.core.connection.v1.ConnectionEnd connection = 2;
|
||||
}
|
||||
|
||||
// ChannelStateData returns the SignBytes data for channel state
|
||||
// verification.
|
||||
message ChannelStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
ibc.core.channel.v1.Channel channel = 2;
|
||||
}
|
||||
|
||||
// PacketCommitmentData returns the SignBytes data for packet commitment
|
||||
// verification.
|
||||
message PacketCommitmentData {
|
||||
bytes path = 1;
|
||||
bytes commitment = 2;
|
||||
}
|
||||
|
||||
// PacketAcknowledgementData returns the SignBytes data for acknowledgement
|
||||
// verification.
|
||||
message PacketAcknowledgementData {
|
||||
bytes path = 1;
|
||||
bytes acknowledgement = 2;
|
||||
}
|
||||
|
||||
// PacketReceiptAbsenceData returns the SignBytes data for
|
||||
// packet receipt absence verification.
|
||||
message PacketReceiptAbsenceData {
|
||||
bytes path = 1;
|
||||
}
|
||||
|
||||
// NextSequenceRecvData returns the SignBytes data for verification of the next
|
||||
// sequence to be received.
|
||||
message NextSequenceRecvData {
|
||||
bytes path = 1;
|
||||
uint64 next_seq_recv = 2 [(gogoproto.moretags) = "yaml:\"next_seq_recv\""];
|
||||
}
|
189
third_party/proto/ibc/lightclients/solomachine/v2/solomachine.proto
vendored
Normal file
189
third_party/proto/ibc/lightclients/solomachine/v2/solomachine.proto
vendored
Normal file
@ -0,0 +1,189 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.lightclients.solomachine.v2;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/light-clients/06-solomachine/types";
|
||||
|
||||
import "ibc/core/connection/v1/connection.proto";
|
||||
import "ibc/core/channel/v1/channel.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
// ClientState defines a solo machine client that tracks the current consensus
|
||||
// state and if the client is frozen.
|
||||
message ClientState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// latest sequence of the client state
|
||||
uint64 sequence = 1;
|
||||
// frozen sequence of the solo machine
|
||||
bool is_frozen = 2 [(gogoproto.moretags) = "yaml:\"is_frozen\""];
|
||||
ConsensusState consensus_state = 3 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
||||
// when set to true, will allow governance to update a solo machine client.
|
||||
// The client will be unfrozen if it is frozen.
|
||||
bool allow_update_after_proposal = 4 [(gogoproto.moretags) = "yaml:\"allow_update_after_proposal\""];
|
||||
}
|
||||
|
||||
// ConsensusState defines a solo machine consensus state. The sequence of a
|
||||
// consensus state is contained in the "height" key used in storing the
|
||||
// consensus state.
|
||||
message ConsensusState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// public key of the solo machine
|
||||
google.protobuf.Any public_key = 1 [(gogoproto.moretags) = "yaml:\"public_key\""];
|
||||
// diversifier allows the same public key to be re-used across different solo
|
||||
// machine clients (potentially on different chains) without being considered
|
||||
// misbehaviour.
|
||||
string diversifier = 2;
|
||||
uint64 timestamp = 3;
|
||||
}
|
||||
|
||||
// Header defines a solo machine consensus header
|
||||
message Header {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// sequence to update solo machine public key at
|
||||
uint64 sequence = 1;
|
||||
uint64 timestamp = 2;
|
||||
bytes signature = 3;
|
||||
google.protobuf.Any new_public_key = 4 [(gogoproto.moretags) = "yaml:\"new_public_key\""];
|
||||
string new_diversifier = 5 [(gogoproto.moretags) = "yaml:\"new_diversifier\""];
|
||||
}
|
||||
|
||||
// Misbehaviour defines misbehaviour for a solo machine which consists
|
||||
// of a sequence and two signatures over different messages at that sequence.
|
||||
message Misbehaviour {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
uint64 sequence = 2;
|
||||
SignatureAndData signature_one = 3 [(gogoproto.moretags) = "yaml:\"signature_one\""];
|
||||
SignatureAndData signature_two = 4 [(gogoproto.moretags) = "yaml:\"signature_two\""];
|
||||
}
|
||||
|
||||
// SignatureAndData contains a signature and the data signed over to create that
|
||||
// signature.
|
||||
message SignatureAndData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
bytes signature = 1;
|
||||
DataType data_type = 2 [(gogoproto.moretags) = "yaml:\"data_type\""];
|
||||
bytes data = 3;
|
||||
uint64 timestamp = 4;
|
||||
}
|
||||
|
||||
// TimestampedSignatureData contains the signature data and the timestamp of the
|
||||
// signature.
|
||||
message TimestampedSignatureData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
bytes signature_data = 1 [(gogoproto.moretags) = "yaml:\"signature_data\""];
|
||||
uint64 timestamp = 2;
|
||||
}
|
||||
|
||||
// SignBytes defines the signed bytes used for signature verification.
|
||||
message SignBytes {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
uint64 sequence = 1;
|
||||
uint64 timestamp = 2;
|
||||
string diversifier = 3;
|
||||
// type of the data used
|
||||
DataType data_type = 4 [(gogoproto.moretags) = "yaml:\"data_type\""];
|
||||
// marshaled data
|
||||
bytes data = 5;
|
||||
}
|
||||
|
||||
// DataType defines the type of solo machine proof being created. This is done
|
||||
// to preserve uniqueness of different data sign byte encodings.
|
||||
enum DataType {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// Default State
|
||||
DATA_TYPE_UNINITIALIZED_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNSPECIFIED"];
|
||||
// Data type for client state verification
|
||||
DATA_TYPE_CLIENT_STATE = 1 [(gogoproto.enumvalue_customname) = "CLIENT"];
|
||||
// Data type for consensus state verification
|
||||
DATA_TYPE_CONSENSUS_STATE = 2 [(gogoproto.enumvalue_customname) = "CONSENSUS"];
|
||||
// Data type for connection state verification
|
||||
DATA_TYPE_CONNECTION_STATE = 3 [(gogoproto.enumvalue_customname) = "CONNECTION"];
|
||||
// Data type for channel state verification
|
||||
DATA_TYPE_CHANNEL_STATE = 4 [(gogoproto.enumvalue_customname) = "CHANNEL"];
|
||||
// Data type for packet commitment verification
|
||||
DATA_TYPE_PACKET_COMMITMENT = 5 [(gogoproto.enumvalue_customname) = "PACKETCOMMITMENT"];
|
||||
// Data type for packet acknowledgement verification
|
||||
DATA_TYPE_PACKET_ACKNOWLEDGEMENT = 6 [(gogoproto.enumvalue_customname) = "PACKETACKNOWLEDGEMENT"];
|
||||
// Data type for packet receipt absence verification
|
||||
DATA_TYPE_PACKET_RECEIPT_ABSENCE = 7 [(gogoproto.enumvalue_customname) = "PACKETRECEIPTABSENCE"];
|
||||
// Data type for next sequence recv verification
|
||||
DATA_TYPE_NEXT_SEQUENCE_RECV = 8 [(gogoproto.enumvalue_customname) = "NEXTSEQUENCERECV"];
|
||||
// Data type for header verification
|
||||
DATA_TYPE_HEADER = 9 [(gogoproto.enumvalue_customname) = "HEADER"];
|
||||
}
|
||||
|
||||
// HeaderData returns the SignBytes data for update verification.
|
||||
message HeaderData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// header public key
|
||||
google.protobuf.Any new_pub_key = 1 [(gogoproto.moretags) = "yaml:\"new_pub_key\""];
|
||||
// header diversifier
|
||||
string new_diversifier = 2 [(gogoproto.moretags) = "yaml:\"new_diversifier\""];
|
||||
}
|
||||
|
||||
// ClientStateData returns the SignBytes data for client state verification.
|
||||
message ClientStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
google.protobuf.Any client_state = 2 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
||||
}
|
||||
|
||||
// ConsensusStateData returns the SignBytes data for consensus state
|
||||
// verification.
|
||||
message ConsensusStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
google.protobuf.Any consensus_state = 2 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
||||
}
|
||||
|
||||
// ConnectionStateData returns the SignBytes data for connection state
|
||||
// verification.
|
||||
message ConnectionStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
ibc.core.connection.v1.ConnectionEnd connection = 2;
|
||||
}
|
||||
|
||||
// ChannelStateData returns the SignBytes data for channel state
|
||||
// verification.
|
||||
message ChannelStateData {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes path = 1;
|
||||
ibc.core.channel.v1.Channel channel = 2;
|
||||
}
|
||||
|
||||
// PacketCommitmentData returns the SignBytes data for packet commitment
|
||||
// verification.
|
||||
message PacketCommitmentData {
|
||||
bytes path = 1;
|
||||
bytes commitment = 2;
|
||||
}
|
||||
|
||||
// PacketAcknowledgementData returns the SignBytes data for acknowledgement
|
||||
// verification.
|
||||
message PacketAcknowledgementData {
|
||||
bytes path = 1;
|
||||
bytes acknowledgement = 2;
|
||||
}
|
||||
|
||||
// PacketReceiptAbsenceData returns the SignBytes data for
|
||||
// packet receipt absence verification.
|
||||
message PacketReceiptAbsenceData {
|
||||
bytes path = 1;
|
||||
}
|
||||
|
||||
// NextSequenceRecvData returns the SignBytes data for verification of the next
|
||||
// sequence to be received.
|
||||
message NextSequenceRecvData {
|
||||
bytes path = 1;
|
||||
uint64 next_seq_recv = 2 [(gogoproto.moretags) = "yaml:\"next_seq_recv\""];
|
||||
}
|
115
third_party/proto/ibc/lightclients/tendermint/v1/tendermint.proto
vendored
Normal file
115
third_party/proto/ibc/lightclients/tendermint/v1/tendermint.proto
vendored
Normal file
@ -0,0 +1,115 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package ibc.lightclients.tendermint.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/ibc-go/modules/light-clients/07-tendermint/types";
|
||||
|
||||
import "tendermint/types/validator.proto";
|
||||
import "tendermint/types/types.proto";
|
||||
import "confio/proofs.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
import "ibc/core/commitment/v1/commitment.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// ClientState from Tendermint tracks the current validator set, latest height,
|
||||
// and a possible frozen height.
|
||||
message ClientState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string chain_id = 1;
|
||||
Fraction trust_level = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"trust_level\""];
|
||||
// duration of the period since the LastestTimestamp during which the
|
||||
// submitted headers are valid for upgrade
|
||||
google.protobuf.Duration trusting_period = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.moretags) = "yaml:\"trusting_period\""];
|
||||
// duration of the staking unbonding period
|
||||
google.protobuf.Duration unbonding_period = 4 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.stdduration) = true,
|
||||
(gogoproto.moretags) = "yaml:\"unbonding_period\""
|
||||
];
|
||||
// defines how much new (untrusted) header's Time can drift into the future.
|
||||
google.protobuf.Duration max_clock_drift = 5
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.moretags) = "yaml:\"max_clock_drift\""];
|
||||
// Block height when the client was frozen due to a misbehaviour
|
||||
ibc.core.client.v1.Height frozen_height = 6
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"frozen_height\""];
|
||||
// Latest height the client was updated to
|
||||
ibc.core.client.v1.Height latest_height = 7
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"latest_height\""];
|
||||
|
||||
// Proof specifications used in verifying counterparty state
|
||||
repeated ics23.ProofSpec proof_specs = 8 [(gogoproto.moretags) = "yaml:\"proof_specs\""];
|
||||
|
||||
// Path at which next upgraded client will be committed.
|
||||
// Each element corresponds to the key for a single CommitmentProof in the
|
||||
// chained proof. NOTE: ClientState must stored under
|
||||
// `{upgradePath}/{upgradeHeight}/clientState` ConsensusState must be stored
|
||||
// under `{upgradepath}/{upgradeHeight}/consensusState` For SDK chains using
|
||||
// the default upgrade module, upgrade_path should be []string{"upgrade",
|
||||
// "upgradedIBCState"}`
|
||||
repeated string upgrade_path = 9 [(gogoproto.moretags) = "yaml:\"upgrade_path\""];
|
||||
|
||||
// This flag, when set to true, will allow governance to recover a client
|
||||
// which has expired
|
||||
bool allow_update_after_expiry = 10 [(gogoproto.moretags) = "yaml:\"allow_update_after_expiry\""];
|
||||
// This flag, when set to true, will allow governance to unfreeze a client
|
||||
// whose chain has experienced a misbehaviour event
|
||||
bool allow_update_after_misbehaviour = 11 [(gogoproto.moretags) = "yaml:\"allow_update_after_misbehaviour\""];
|
||||
}
|
||||
|
||||
// ConsensusState defines the consensus state from Tendermint.
|
||||
message ConsensusState {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// timestamp that corresponds to the block height in which the ConsensusState
|
||||
// was stored.
|
||||
google.protobuf.Timestamp timestamp = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
||||
// commitment root (i.e app hash)
|
||||
ibc.core.commitment.v1.MerkleRoot root = 2 [(gogoproto.nullable) = false];
|
||||
bytes next_validators_hash = 3 [
|
||||
(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes",
|
||||
(gogoproto.moretags) = "yaml:\"next_validators_hash\""
|
||||
];
|
||||
}
|
||||
|
||||
// Misbehaviour is a wrapper over two conflicting Headers
|
||||
// that implements Misbehaviour interface expected by ICS-02
|
||||
message Misbehaviour {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
Header header_1 = 2 [(gogoproto.customname) = "Header1", (gogoproto.moretags) = "yaml:\"header_1\""];
|
||||
Header header_2 = 3 [(gogoproto.customname) = "Header2", (gogoproto.moretags) = "yaml:\"header_2\""];
|
||||
}
|
||||
|
||||
// Header defines the Tendermint client consensus Header.
|
||||
// It encapsulates all the information necessary to update from a trusted
|
||||
// Tendermint ConsensusState. The inclusion of TrustedHeight and
|
||||
// TrustedValidators allows this update to process correctly, so long as the
|
||||
// ConsensusState for the TrustedHeight exists, this removes race conditions
|
||||
// among relayers The SignedHeader and ValidatorSet are the new untrusted update
|
||||
// fields for the client. The TrustedHeight is the height of a stored
|
||||
// ConsensusState on the client that will be used to verify the new untrusted
|
||||
// header. The Trusted ConsensusState must be within the unbonding period of
|
||||
// current time in order to correctly verify, and the TrustedValidators must
|
||||
// hash to TrustedConsensusState.NextValidatorsHash since that is the last
|
||||
// trusted validator set at the TrustedHeight.
|
||||
message Header {
|
||||
.tendermint.types.SignedHeader signed_header = 1
|
||||
[(gogoproto.embed) = true, (gogoproto.moretags) = "yaml:\"signed_header\""];
|
||||
|
||||
.tendermint.types.ValidatorSet validator_set = 2 [(gogoproto.moretags) = "yaml:\"validator_set\""];
|
||||
ibc.core.client.v1.Height trusted_height = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"trusted_height\""];
|
||||
.tendermint.types.ValidatorSet trusted_validators = 4 [(gogoproto.moretags) = "yaml:\"trusted_validators\""];
|
||||
}
|
||||
|
||||
// Fraction defines the protobuf message type for tmmath.Fraction that only
|
||||
// supports positive values.
|
||||
message Fraction {
|
||||
uint64 numerator = 1;
|
||||
uint64 denominator = 2;
|
||||
}
|
Loading…
Reference in New Issue
Block a user