mirror of https://github.com/certusone/wasmd.git
Restructure protobuf files (#466)
* Restructure protobuf dir and generation * Format protobuf definitions
This commit is contained in:
parent
547fed5632
commit
cfcfa64ecc
31
Makefile
31
Makefile
|
@ -9,8 +9,9 @@ BINDIR ?= $(GOPATH)/bin
|
|||
SIMAPP = ./app
|
||||
|
||||
# for dockerized protobuf tools
|
||||
PROTO_CONTAINER := cosmwasm/prototools-docker:v0.1.0
|
||||
DOCKER_BUF := docker run --rm -v $(shell pwd)/buf.yaml:/workspace/buf.yaml -v $(shell go list -f "{{ .Dir }}" -m github.com/cosmos/cosmos-sdk):/workspace/cosmos_sdk_dir -v $(shell pwd):/workspace/wasmd --workdir /workspace $(PROTO_CONTAINER)
|
||||
DOCKER := $(shell which docker)
|
||||
BUF_IMAGE=bufbuild/buf@sha256:9dc5d6645f8f8a2d5aaafc8957fbbb5ea64eada98a84cb09654e8f49d6f73b3e
|
||||
DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(BUF_IMAGE)
|
||||
HTTPS_GIT := https://github.com/CosmWasm/wasmd.git
|
||||
|
||||
export GO111MODULE = on
|
||||
|
@ -157,21 +158,29 @@ format:
|
|||
###############################################################################
|
||||
### Protobuf ###
|
||||
###############################################################################
|
||||
PROTO_BUILDER_IMAGE=tendermintdev/sdk-proto-gen@sha256:372dce7be2f465123e26459973ca798fc489ff2c75aeecd814c0ca8ced24faca
|
||||
PROTO_FORMATTER_IMAGE=tendermintdev/docker-build-proto@sha256:aabcfe2fc19c31c0f198d4cd26393f5e5ca9502d7ea3feafbfe972448fee7cae
|
||||
|
||||
proto-all: proto-gen proto-lint proto-check-breaking
|
||||
.PHONY: proto-all
|
||||
proto-all: proto-format proto-lint proto-gen
|
||||
|
||||
proto-gen: proto-lint
|
||||
@docker run --rm -v $(shell go list -f "{{ .Dir }}" -m github.com/cosmos/cosmos-sdk):/workspace/cosmos_sdk_dir -v $(shell pwd):/workspace --workdir /workspace --env COSMOS_SDK_DIR=/workspace/cosmos_sdk_dir $(PROTO_CONTAINER) ./scripts/protocgen.sh
|
||||
.PHONY: proto-gen
|
||||
proto-gen:
|
||||
@echo "Generating Protobuf files"
|
||||
$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(PROTO_BUILDER_IMAGE) sh ./scripts/protocgen.sh
|
||||
|
||||
proto-format:
|
||||
@echo "Formatting Protobuf files"
|
||||
$(DOCKER) run --rm -v $(CURDIR):/workspace \
|
||||
--workdir /workspace $(PROTO_FORMATTER_IMAGE) \
|
||||
find ./ -not -path "./third_party/*" -name *.proto -exec clang-format -i {} \;
|
||||
|
||||
proto-swagger-gen:
|
||||
@./scripts/protoc-swagger-gen.sh
|
||||
|
||||
proto-lint:
|
||||
@$(DOCKER_BUF) buf check lint --error-format=json
|
||||
.PHONY: proto-lint
|
||||
@$(DOCKER_BUF) check lint --error-format=json
|
||||
|
||||
proto-check-breaking:
|
||||
@$(DOCKER_BUF) buf check breaking --against-input $(HTTPS_GIT)#branch=master
|
||||
.PHONY: proto-check-breaking
|
||||
@$(DOCKER_BUF) check breaking --against-input $(HTTPS_GIT)#branch=master
|
||||
|
||||
.PHONY: all build-linux install install-debug \
|
||||
go-mod-cache draw-deps clean build format \
|
||||
|
|
13
buf.yaml
13
buf.yaml
|
@ -1,12 +1,11 @@
|
|||
version: v1beta1
|
||||
|
||||
build:
|
||||
roots:
|
||||
# Note: these are not local path. These roots are mounted into the docker container
|
||||
- wasmd/
|
||||
- cosmos_sdk_dir/third_party/proto/
|
||||
- cosmos_sdk_dir/proto/
|
||||
- proto
|
||||
- third_party/proto
|
||||
excludes:
|
||||
# - cosmos_sdk_dir
|
||||
- third_party/proto/google/protobuf
|
||||
lint:
|
||||
use:
|
||||
- DEFAULT
|
||||
|
@ -20,6 +19,8 @@ lint:
|
|||
- RPC_REQUEST_STANDARD_NAME
|
||||
- PACKAGE_DIRECTORY_MATCH
|
||||
ignore:
|
||||
- cosmos
|
||||
- ibc
|
||||
- tendermint
|
||||
- gogoproto
|
||||
- cosmos_proto
|
||||
|
@ -29,6 +30,8 @@ breaking:
|
|||
use:
|
||||
- FILE
|
||||
ignore:
|
||||
- cosmos
|
||||
- ibc
|
||||
- tendermint
|
||||
- gogoproto
|
||||
- cosmos_proto
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# Generated doc
|
||||
# Generated doc only
|
||||
|
||||
Tutorials and project doc is available on https://docs.cosmwasm.com/
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,105 @@
|
|||
<!-- This file is auto-generated. Please do not modify it yourself. -->
|
||||
# Protobuf Documentation
|
||||
<a name="top"></a>
|
||||
|
||||
## Table of Contents
|
||||
{{range .Files}}
|
||||
{{$file_name := .Name}}- [{{.Name}}](#{{.Name}})
|
||||
{{- if .Messages }}
|
||||
{{range .Messages}} - [{{.LongName}}](#{{.FullName}})
|
||||
{{end}}
|
||||
{{- end -}}
|
||||
{{- if .Enums }}
|
||||
{{range .Enums}} - [{{.LongName}}](#{{.FullName}})
|
||||
{{end}}
|
||||
{{- end -}}
|
||||
{{- if .Extensions }}
|
||||
{{range .Extensions}} - [File-level Extensions](#{{$file_name}}-extensions)
|
||||
{{end}}
|
||||
{{- end -}}
|
||||
{{- if .Services }}
|
||||
{{range .Services}} - [{{.Name}}](#{{.FullName}})
|
||||
{{end}}
|
||||
{{- end -}}
|
||||
{{end}}
|
||||
- [Scalar Value Types](#scalar-value-types)
|
||||
|
||||
{{range .Files}}
|
||||
{{$file_name := .Name}}
|
||||
<a name="{{.Name}}"></a>
|
||||
<p align="right"><a href="#top">Top</a></p>
|
||||
|
||||
## {{.Name}}
|
||||
{{.Description}}
|
||||
|
||||
{{range .Messages}}
|
||||
<a name="{{.FullName}}"></a>
|
||||
|
||||
### {{.LongName}}
|
||||
{{.Description}}
|
||||
|
||||
{{if .HasFields}}
|
||||
| Field | Type | Label | Description |
|
||||
| ----- | ---- | ----- | ----------- |
|
||||
{{range .Fields -}}
|
||||
| `{{.Name}}` | [{{.LongType}}](#{{.FullType}}) | {{.Label}} | {{if (index .Options "deprecated"|default false)}}**Deprecated.** {{end}}{{nobr .Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}} |
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{if .HasExtensions}}
|
||||
| Extension | Type | Base | Number | Description |
|
||||
| --------- | ---- | ---- | ------ | ----------- |
|
||||
{{range .Extensions -}}
|
||||
| `{{.Name}}` | {{.LongType}} | {{.ContainingLongType}} | {{.Number}} | {{nobr .Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}} |
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{end}} <!-- end messages -->
|
||||
|
||||
{{range .Enums}}
|
||||
<a name="{{.FullName}}"></a>
|
||||
|
||||
### {{.LongName}}
|
||||
{{.Description}}
|
||||
|
||||
| Name | Number | Description |
|
||||
| ---- | ------ | ----------- |
|
||||
{{range .Values -}}
|
||||
| {{.Name}} | {{.Number}} | {{nobr .Description}} |
|
||||
{{end}}
|
||||
|
||||
{{end}} <!-- end enums -->
|
||||
|
||||
{{if .HasExtensions}}
|
||||
<a name="{{$file_name}}-extensions"></a>
|
||||
|
||||
### File-level Extensions
|
||||
| Extension | Type | Base | Number | Description |
|
||||
| --------- | ---- | ---- | ------ | ----------- |
|
||||
{{range .Extensions -}}
|
||||
| `{{.Name}}` | {{.LongType}} | {{.ContainingLongType}} | {{.Number}} | {{nobr .Description}}{{if .DefaultValue}} Default: `{{.DefaultValue}}`{{end}} |
|
||||
{{end}}
|
||||
{{end}} <!-- end HasExtensions -->
|
||||
|
||||
{{range .Services}}
|
||||
<a name="{{.FullName}}"></a>
|
||||
|
||||
### {{.Name}}
|
||||
{{.Description}}
|
||||
|
||||
| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint |
|
||||
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
|
||||
{{range .Methods -}}
|
||||
| `{{.Name}}` | [{{.RequestLongType}}](#{{.RequestFullType}}){{if .RequestStreaming}} stream{{end}} | [{{.ResponseLongType}}](#{{.ResponseFullType}}){{if .ResponseStreaming}} stream{{end}} | {{nobr .Description}} | {{with (index .Options "google.api.http")}}{{range .Rules}}{{.Method}}|{{.Pattern}}{{end}}{{end}}|
|
||||
{{end}}
|
||||
{{end}} <!-- end services -->
|
||||
|
||||
{{end}}
|
||||
|
||||
## Scalar Value Types
|
||||
|
||||
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
|
||||
| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- |
|
||||
{{range .Scalars -}}
|
||||
| <a name="{{.ProtoType}}" /> {{.ProtoType}} | {{.Notes}} | {{.CppType}} | {{.JavaType}} | {{.PythonType}} | {{.GoType}} | {{.CSharp}} | {{.PhpType}} | {{.RubyType}} |
|
||||
{{end}}
|
|
@ -0,0 +1,60 @@
|
|||
syntax = "proto3";
|
||||
package cosmwasm.wasm.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmwasm/wasm/v1beta1/types.proto";
|
||||
import "cosmwasm/wasm/v1beta1/tx.proto";
|
||||
|
||||
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
|
||||
|
||||
// GenesisState - genesis state of x/wasm
|
||||
message GenesisState {
|
||||
Params params = 1 [ (gogoproto.nullable) = false ];
|
||||
repeated Code codes = 2
|
||||
[ (gogoproto.nullable) = false, (gogoproto.jsontag) = "codes,omitempty" ];
|
||||
repeated Contract contracts = 3 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.jsontag) = "contracts,omitempty"
|
||||
];
|
||||
repeated Sequence sequences = 4 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.jsontag) = "sequences,omitempty"
|
||||
];
|
||||
repeated GenMsgs gen_msgs = 5 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.jsontag) = "gen_msgs,omitempty"
|
||||
];
|
||||
|
||||
// GenMsgs define the messages that can be executed during genesis phase in
|
||||
// order. The intention is to have more human readable data that is auditable.
|
||||
message GenMsgs {
|
||||
// sum is a single message
|
||||
oneof sum {
|
||||
MsgStoreCode store_code = 1;
|
||||
MsgInstantiateContract instantiate_contract = 2;
|
||||
MsgExecuteContract execute_contract = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Code struct encompasses CodeInfo and CodeBytes
|
||||
message Code {
|
||||
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
|
||||
CodeInfo code_info = 2 [ (gogoproto.nullable) = false ];
|
||||
bytes code_bytes = 3;
|
||||
// Pinned to wasmvm cache
|
||||
bool pinned = 4;
|
||||
}
|
||||
|
||||
// Contract struct encompasses ContractAddress, ContractInfo, and ContractState
|
||||
message Contract {
|
||||
string contract_address = 1;
|
||||
ContractInfo contract_info = 2 [ (gogoproto.nullable) = false ];
|
||||
repeated Model contract_state = 3 [ (gogoproto.nullable) = false ];
|
||||
}
|
||||
|
||||
// Sequence key and value of an id generation counter
|
||||
message Sequence {
|
||||
bytes id_key = 1 [ (gogoproto.customname) = "IDKey" ];
|
||||
uint64 value = 2;
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
syntax = "proto3";
|
||||
package cosmwasm.wasm.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
|
||||
// MsgIBCSend
|
||||
message MsgIBCSend {
|
||||
// the channel by which the packet will be sent
|
||||
string channel = 2 [ (gogoproto.moretags) = "yaml:\"source_channel\"" ];
|
||||
|
||||
// Timeout height relative to the current block height.
|
||||
// The timeout is disabled when set to 0.
|
||||
uint64 timeout_height = 4
|
||||
[ (gogoproto.moretags) = "yaml:\"timeout_height\"" ];
|
||||
// Timeout timestamp (in nanoseconds) relative to the current block timestamp.
|
||||
// The timeout is disabled when set to 0.
|
||||
uint64 timeout_timestamp = 5
|
||||
[ (gogoproto.moretags) = "yaml:\"timeout_timestamp\"" ];
|
||||
|
||||
// data is the payload to transfer
|
||||
bytes data = 6 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
}
|
||||
|
||||
// MsgIBCCloseChannel port and channel need to be owned by the contract
|
||||
message MsgIBCCloseChannel {
|
||||
string channel = 2 [ (gogoproto.moretags) = "yaml:\"source_channel\"" ];
|
||||
}
|
|
@ -0,0 +1,121 @@
|
|||
syntax = "proto3";
|
||||
package cosmwasm.wasm.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmwasm/wasm/v1beta1/types.proto";
|
||||
|
||||
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
|
||||
option (gogoproto.goproto_stringer_all) = false;
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
// StoreCodeProposal gov proposal content type to submit WASM code to the system
|
||||
message StoreCodeProposal {
|
||||
// Title is a short summary
|
||||
string title = 1;
|
||||
// Description is a human readable text
|
||||
string description = 2;
|
||||
// RunAs is the address that is passed to the contract's environment as sender
|
||||
string run_as = 3;
|
||||
// WASMByteCode can be raw or gzip compressed
|
||||
bytes wasm_byte_code = 4 [ (gogoproto.customname) = "WASMByteCode" ];
|
||||
// Source is a valid absolute HTTPS URI to the contract's source code,
|
||||
// optional
|
||||
string source = 5;
|
||||
// Builder is a valid docker image name with tag, optional
|
||||
string builder = 6;
|
||||
// InstantiatePermission to apply on contract creation, optional
|
||||
AccessConfig instantiate_permission = 7;
|
||||
}
|
||||
|
||||
// InstantiateContractProposal gov proposal content type to instantiate a
|
||||
// contract.
|
||||
message InstantiateContractProposal {
|
||||
// Title is a short summary
|
||||
string title = 1;
|
||||
// Description is a human readable text
|
||||
string description = 2;
|
||||
// RunAs is the address that is passed to the contract's environment as sender
|
||||
string run_as = 3;
|
||||
// Admin is an optional address that can execute migrations
|
||||
string admin = 4;
|
||||
// CodeID is the reference to the stored WASM code
|
||||
uint64 code_id = 5 [ (gogoproto.customname) = "CodeID" ];
|
||||
// Label is optional metadata to be stored with a constract instance.
|
||||
string label = 6;
|
||||
// InitMsg json encoded message to be passed to the contract on instantiation
|
||||
bytes init_msg = 7 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
// Funds coins that are transferred to the contract on instantiation
|
||||
repeated cosmos.base.v1beta1.Coin funds = 8 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
||||
];
|
||||
}
|
||||
|
||||
// MigrateContractProposal gov proposal content type to migrate a contract.
|
||||
message MigrateContractProposal {
|
||||
// Title is a short summary
|
||||
string title = 1;
|
||||
// Description is a human readable text
|
||||
string description = 2;
|
||||
// RunAs is the address that is passed to the contract's environment as sender
|
||||
string run_as = 3;
|
||||
// Contract is the address of the smart contract
|
||||
string contract = 4;
|
||||
// CodeID references the new WASM code
|
||||
uint64 code_id = 5 [ (gogoproto.customname) = "CodeID" ];
|
||||
// MigrateMsg json encoded message to be passed to the contract on migration
|
||||
bytes migrate_msg = 6 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
}
|
||||
|
||||
// UpdateAdminProposal gov proposal content type to set an admin for a contract.
|
||||
message UpdateAdminProposal {
|
||||
// Title is a short summary
|
||||
string title = 1;
|
||||
// Description is a human readable text
|
||||
string description = 2;
|
||||
// NewAdmin address to be set
|
||||
string new_admin = 3 [ (gogoproto.moretags) = "yaml:\"new_admin\"" ];
|
||||
// Contract is the address of the smart contract
|
||||
string contract = 4;
|
||||
}
|
||||
|
||||
// ClearAdminProposal gov proposal content type to clear the admin of a
|
||||
// contract.
|
||||
message ClearAdminProposal {
|
||||
// Title is a short summary
|
||||
string title = 1;
|
||||
// Description is a human readable text
|
||||
string description = 2;
|
||||
// Contract is the address of the smart contract
|
||||
string contract = 3;
|
||||
}
|
||||
|
||||
// PinCodesProposal gov proposal content type to pin a set of code ids in the
|
||||
// wasmvm cache.
|
||||
message PinCodesProposal {
|
||||
// Title is a short summary
|
||||
string title = 1 [ (gogoproto.moretags) = "yaml:\"title\"" ];
|
||||
// Description is a human readable text
|
||||
string description = 2 [ (gogoproto.moretags) = "yaml:\"description\"" ];
|
||||
// CodeIDs references the new WASM codes
|
||||
repeated uint64 code_ids = 3 [
|
||||
(gogoproto.customname) = "CodeIDs",
|
||||
(gogoproto.moretags) = "yaml:\"code_ids\""
|
||||
];
|
||||
}
|
||||
|
||||
// UnpinCodesProposal gov proposal content type to unpin a set of code ids in
|
||||
// the wasmvm cache.
|
||||
message UnpinCodesProposal {
|
||||
// Title is a short summary
|
||||
string title = 1 [ (gogoproto.moretags) = "yaml:\"title\"" ];
|
||||
// Description is a human readable text
|
||||
string description = 2 [ (gogoproto.moretags) = "yaml:\"description\"" ];
|
||||
// CodeIDs references the WASM codes
|
||||
repeated uint64 code_ids = 3 [
|
||||
(gogoproto.customname) = "CodeIDs",
|
||||
(gogoproto.moretags) = "yaml:\"code_ids\""
|
||||
];
|
||||
}
|
|
@ -0,0 +1,206 @@
|
|||
syntax = "proto3";
|
||||
package cosmwasm.wasm.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmwasm/wasm/v1beta1/types.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
|
||||
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
option (gogoproto.equal_all) = false;
|
||||
|
||||
// Query provides defines the gRPC querier service
|
||||
service Query {
|
||||
// ContractInfo gets the contract meta data
|
||||
rpc ContractInfo(QueryContractInfoRequest)
|
||||
returns (QueryContractInfoResponse) {
|
||||
option (google.api.http).get = "/wasm/v1beta1/contract/{address}";
|
||||
}
|
||||
// ContractHistory gets the contract code history
|
||||
rpc ContractHistory(QueryContractHistoryRequest)
|
||||
returns (QueryContractHistoryResponse) {
|
||||
option (google.api.http).get = "/wasm/v1beta1/contract/{address}/history";
|
||||
}
|
||||
// ContractsByCode lists all smart contracts for a code id
|
||||
rpc ContractsByCode(QueryContractsByCodeRequest)
|
||||
returns (QueryContractsByCodeResponse) {
|
||||
option (google.api.http).get = "/wasm/v1beta1/code/{code_id}/contracts";
|
||||
}
|
||||
// AllContractState gets all raw store data for a single contract
|
||||
rpc AllContractState(QueryAllContractStateRequest)
|
||||
returns (QueryAllContractStateResponse) {
|
||||
option (google.api.http).get = "/wasm/v1beta1/contract/{address}/state";
|
||||
}
|
||||
// RawContractState gets single key from the raw store data of a contract
|
||||
rpc RawContractState(QueryRawContractStateRequest)
|
||||
returns (QueryRawContractStateResponse) {
|
||||
option (google.api.http).get =
|
||||
"/wasm/v1beta1/contract/{address}/raw/{query_data}";
|
||||
}
|
||||
// SmartContractState get smart query result from the contract
|
||||
rpc SmartContractState(QuerySmartContractStateRequest)
|
||||
returns (QuerySmartContractStateResponse) {
|
||||
option (google.api.http).get =
|
||||
"/wasm/v1beta1/contract/{address}/smart/{query_data}";
|
||||
}
|
||||
// Code gets the binary code and metadata for a singe wasm code
|
||||
rpc Code(QueryCodeRequest) returns (QueryCodeResponse) {
|
||||
option (google.api.http).get = "/wasm/v1beta1/code/{code_id}";
|
||||
}
|
||||
// Codes gets the metadata for all stored wasm codes
|
||||
rpc Codes(QueryCodesRequest) returns (QueryCodesResponse) {
|
||||
option (google.api.http).get = "/wasm/v1beta1/code";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryContractInfoRequest is the request type for the Query/ContractInfo RPC
|
||||
// method
|
||||
message QueryContractInfoRequest {
|
||||
// address is the address of the contract to query
|
||||
string address = 1;
|
||||
}
|
||||
// QueryContractInfoResponse is the response type for the Query/ContractInfo RPC
|
||||
// method
|
||||
message QueryContractInfoResponse {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
// address is the address of the contract
|
||||
string address = 1;
|
||||
ContractInfo contract_info = 2
|
||||
[ (gogoproto.embed) = true, (gogoproto.jsontag) = "" ];
|
||||
}
|
||||
|
||||
// QueryContractHistoryRequest is the request type for the Query/ContractHistory
|
||||
// RPC method
|
||||
message QueryContractHistoryRequest {
|
||||
// address is the address of the contract to query
|
||||
string address = 1;
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryContractHistoryResponse is the response type for the
|
||||
// Query/ContractHistory RPC method
|
||||
message QueryContractHistoryResponse {
|
||||
repeated ContractCodeHistoryEntry entries = 1
|
||||
[ (gogoproto.nullable) = false ];
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryContractsByCodeRequest is the request type for the Query/ContractsByCode
|
||||
// RPC method
|
||||
message QueryContractsByCodeRequest {
|
||||
uint64 code_id = 1; // grpc-gateway_out does not support Go style CodID
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// ContractInfoWithAddress adds the address (key) to the ContractInfo
|
||||
// representation
|
||||
message ContractInfoWithAddress {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string address = 1;
|
||||
ContractInfo contract_info = 2
|
||||
[ (gogoproto.embed) = true, (gogoproto.jsontag) = "" ];
|
||||
}
|
||||
// QueryContractsByCodeResponse is the response type for the
|
||||
// Query/ContractsByCode RPC method
|
||||
message QueryContractsByCodeResponse {
|
||||
repeated ContractInfoWithAddress contract_infos = 1
|
||||
[ (gogoproto.nullable) = false ];
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryAllContractStateRequest is the request type for the
|
||||
// Query/AllContractState RPC method
|
||||
message QueryAllContractStateRequest {
|
||||
// address is the address of the contract
|
||||
string address = 1;
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryAllContractStateResponse is the response type for the
|
||||
// Query/AllContractState RPC method
|
||||
message QueryAllContractStateResponse {
|
||||
repeated Model models = 1 [ (gogoproto.nullable) = false ];
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryRawContractStateRequest is the request type for the
|
||||
// Query/RawContractState RPC method
|
||||
message QueryRawContractStateRequest {
|
||||
// address is the address of the contract
|
||||
string address = 1;
|
||||
bytes query_data = 2;
|
||||
}
|
||||
|
||||
// QueryRawContractStateResponse is the response type for the
|
||||
// Query/RawContractState RPC method
|
||||
message QueryRawContractStateResponse {
|
||||
// Data contains the raw store data
|
||||
bytes data = 1;
|
||||
}
|
||||
|
||||
// QuerySmartContractStateRequest is the request type for the
|
||||
// Query/SmartContractState RPC method
|
||||
message QuerySmartContractStateRequest {
|
||||
// address is the address of the contract
|
||||
string address = 1;
|
||||
// QueryData contains the query data passed to the contract
|
||||
bytes query_data = 2;
|
||||
}
|
||||
|
||||
// QuerySmartContractStateResponse is the response type for the
|
||||
// Query/SmartContractState RPC method
|
||||
message QuerySmartContractStateResponse {
|
||||
// Data contains the json data returned from the smart contract
|
||||
bytes data = 1 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
}
|
||||
|
||||
// QueryCodeRequest is the request type for the Query/Code RPC method
|
||||
message QueryCodeRequest {
|
||||
uint64 code_id = 1; // grpc-gateway_out does not support Go style CodID
|
||||
}
|
||||
|
||||
// CodeInfoResponse contains code meta data from CodeInfo
|
||||
message CodeInfoResponse {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
uint64 code_id = 1 [
|
||||
(gogoproto.customname) = "CodeID",
|
||||
(gogoproto.jsontag) = "id"
|
||||
]; // id for legacy support
|
||||
string creator = 2;
|
||||
bytes data_hash = 3
|
||||
[ (gogoproto.casttype) =
|
||||
"github.com/tendermint/tendermint/libs/bytes.HexBytes" ];
|
||||
string source = 4;
|
||||
string builder = 5;
|
||||
}
|
||||
|
||||
// QueryCodeResponse is the response type for the Query/Code RPC method
|
||||
message QueryCodeResponse {
|
||||
option (gogoproto.equal) = true;
|
||||
CodeInfoResponse code_info = 1
|
||||
[ (gogoproto.embed) = true, (gogoproto.jsontag) = "" ];
|
||||
bytes data = 2 [ (gogoproto.jsontag) = "data" ];
|
||||
}
|
||||
|
||||
// QueryCodesRequest is the request type for the Query/Codes RPC method
|
||||
message QueryCodesRequest {
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryCodesResponse is the response type for the Query/Codes RPC method
|
||||
message QueryCodesResponse {
|
||||
repeated CodeInfoResponse code_infos = 1 [ (gogoproto.nullable) = false ];
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
|
@ -1,10 +1,9 @@
|
|||
syntax = "proto3";
|
||||
package cosmwasm.wasm.v1beta1;
|
||||
|
||||
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "x/wasm/types/types.proto";
|
||||
import "cosmwasm/wasm/v1beta1/types.proto";
|
||||
|
||||
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
|
@ -14,7 +13,8 @@ service Msg {
|
|||
// StoreCode to submit Wasm code to the system
|
||||
rpc StoreCode(MsgStoreCode) returns (MsgStoreCodeResponse);
|
||||
// Instantiate creates a new smart contract instance for the given code id.
|
||||
rpc InstantiateContract(MsgInstantiateContract) returns (MsgInstantiateContractResponse);
|
||||
rpc InstantiateContract(MsgInstantiateContract)
|
||||
returns (MsgInstantiateContractResponse);
|
||||
// Execute submits the given message data to a smart contract
|
||||
rpc ExecuteContract(MsgExecuteContract) returns (MsgExecuteContractResponse);
|
||||
// Migrate runs a code upgrade/ downgrade for a smart contract
|
||||
|
@ -30,34 +30,40 @@ message MsgStoreCode {
|
|||
// Sender is the that actor that signed the messages
|
||||
string sender = 1;
|
||||
// WASMByteCode can be raw or gzip compressed
|
||||
bytes wasm_byte_code = 2 [(gogoproto.customname) = "WASMByteCode"];
|
||||
// Source is a valid absolute HTTPS URI to the contract's source code, optional
|
||||
bytes wasm_byte_code = 2 [ (gogoproto.customname) = "WASMByteCode" ];
|
||||
// Source is a valid absolute HTTPS URI to the contract's source code,
|
||||
// optional
|
||||
string source = 3;
|
||||
// Builder is a valid docker image name with tag, optional
|
||||
string builder = 4;
|
||||
// InstantiatePermission access control to apply on contract creation, optional
|
||||
// InstantiatePermission access control to apply on contract creation,
|
||||
// optional
|
||||
AccessConfig instantiate_permission = 5;
|
||||
}
|
||||
// MsgStoreCodeResponse returns store result data.
|
||||
message MsgStoreCodeResponse{
|
||||
message MsgStoreCodeResponse {
|
||||
// CodeID is the reference to the stored WASM code
|
||||
uint64 code_id = 1 [(gogoproto.customname) = "CodeID"];
|
||||
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
|
||||
}
|
||||
|
||||
// MsgInstantiateContract create a new smart contract instance for the given code id.
|
||||
// MsgInstantiateContract create a new smart contract instance for the given
|
||||
// code id.
|
||||
message MsgInstantiateContract {
|
||||
// Sender is the that actor that signed the messages
|
||||
string sender = 1;
|
||||
// Admin is an optional address that can execute migrations
|
||||
string admin = 2;
|
||||
// CodeID is the reference to the stored WASM code
|
||||
uint64 code_id = 3 [(gogoproto.customname) = "CodeID"];
|
||||
uint64 code_id = 3 [ (gogoproto.customname) = "CodeID" ];
|
||||
// Label is optional metadata to be stored with a contract instance.
|
||||
string label = 4;
|
||||
// InitMsg json encoded message to be passed to the contract on instantiation
|
||||
bytes init_msg = 5 [(gogoproto.casttype) = "encoding/json.RawMessage"];
|
||||
bytes init_msg = 5 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
// Funds coins that are transferred to the contract on instantiation
|
||||
repeated cosmos.base.v1beta1.Coin funds = 6 [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
repeated cosmos.base.v1beta1.Coin funds = 6 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
||||
];
|
||||
}
|
||||
// MsgInstantiateContractResponse return instantiation result data
|
||||
message MsgInstantiateContractResponse {
|
||||
|
@ -74,9 +80,12 @@ message MsgExecuteContract {
|
|||
// Contract is the address of the smart contract
|
||||
string contract = 2;
|
||||
// Msg json encoded message to be passed to the contract
|
||||
bytes msg = 3 [(gogoproto.casttype) = "encoding/json.RawMessage"];
|
||||
bytes msg = 3 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
// Funds coins that are transferred to the contract on execution
|
||||
repeated cosmos.base.v1beta1.Coin funds = 5 [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
repeated cosmos.base.v1beta1.Coin funds = 5 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
|
||||
];
|
||||
}
|
||||
|
||||
// MsgExecuteContractResponse returns execution result data.
|
||||
|
@ -92,9 +101,9 @@ message MsgMigrateContract {
|
|||
// Contract is the address of the smart contract
|
||||
string contract = 2;
|
||||
// CodeID references the new WASM code
|
||||
uint64 code_id = 3 [(gogoproto.customname) = "CodeID"];
|
||||
uint64 code_id = 3 [ (gogoproto.customname) = "CodeID" ];
|
||||
// MigrateMsg json encoded message to be passed to the contract on migration
|
||||
bytes migrate_msg = 4 [(gogoproto.casttype) = "encoding/json.RawMessage"];
|
||||
bytes migrate_msg = 4 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
}
|
||||
|
||||
// MsgMigrateContractResponse returns contract migration result data.
|
||||
|
@ -115,7 +124,7 @@ message MsgUpdateAdmin {
|
|||
}
|
||||
|
||||
// MsgUpdateAdminResponse returns empty data
|
||||
message MsgUpdateAdminResponse{}
|
||||
message MsgUpdateAdminResponse {}
|
||||
|
||||
// MsgClearAdmin removes any admin stored for a smart contract
|
||||
message MsgClearAdmin {
|
||||
|
@ -126,4 +135,4 @@ message MsgClearAdmin {
|
|||
}
|
||||
|
||||
// MsgClearAdminResponse returns empty data
|
||||
message MsgClearAdminResponse{}
|
||||
message MsgClearAdminResponse {}
|
|
@ -0,0 +1,136 @@
|
|||
syntax = "proto3";
|
||||
package cosmwasm.wasm.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
// AccessType permission types
|
||||
enum AccessType {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
option (gogoproto.goproto_enum_stringer) = false;
|
||||
// AccessTypeUnspecified placeholder for empty value
|
||||
ACCESS_TYPE_UNSPECIFIED = 0
|
||||
[ (gogoproto.enumvalue_customname) = "AccessTypeUnspecified" ];
|
||||
// AccessTypeNobody forbidden
|
||||
ACCESS_TYPE_NOBODY = 1
|
||||
[ (gogoproto.enumvalue_customname) = "AccessTypeNobody" ];
|
||||
// AccessTypeOnlyAddress restricted to an address
|
||||
ACCESS_TYPE_ONLY_ADDRESS = 2
|
||||
[ (gogoproto.enumvalue_customname) = "AccessTypeOnlyAddress" ];
|
||||
// AccessTypeEverybody unrestricted
|
||||
ACCESS_TYPE_EVERYBODY = 3
|
||||
[ (gogoproto.enumvalue_customname) = "AccessTypeEverybody" ];
|
||||
}
|
||||
|
||||
// AccessTypeParam
|
||||
message AccessTypeParam {
|
||||
option (gogoproto.goproto_stringer) = true;
|
||||
AccessType value = 1 [ (gogoproto.moretags) = "yaml:\"value\"" ];
|
||||
}
|
||||
|
||||
// AccessConfig access control type.
|
||||
message AccessConfig {
|
||||
option (gogoproto.goproto_stringer) = true;
|
||||
AccessType permission = 1 [ (gogoproto.moretags) = "yaml:\"permission\"" ];
|
||||
string address = 2 [ (gogoproto.moretags) = "yaml:\"address\"" ];
|
||||
}
|
||||
|
||||
// Params defines the set of wasm parameters.
|
||||
message Params {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
AccessConfig code_upload_access = 1 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"code_upload_access\""
|
||||
];
|
||||
AccessType instantiate_default_permission = 2
|
||||
[ (gogoproto.moretags) = "yaml:\"instantiate_default_permission\"" ];
|
||||
uint64 max_wasm_code_size = 3
|
||||
[ (gogoproto.moretags) = "yaml:\"max_wasm_code_size\"" ];
|
||||
}
|
||||
|
||||
// CodeInfo is data for the uploaded contract WASM code
|
||||
message CodeInfo {
|
||||
// CodeHash is the unique identifier created by wasmvm
|
||||
bytes code_hash = 1;
|
||||
// Creator address who initially stored the code
|
||||
string creator = 2;
|
||||
// Source is a valid absolute HTTPS URI to the contract's source code,
|
||||
// optional
|
||||
string source = 3;
|
||||
// Builder is a valid docker image name with tag, optional
|
||||
string builder = 4;
|
||||
// InstantiateConfig access control to apply on contract creation, optional
|
||||
AccessConfig instantiate_config = 5 [ (gogoproto.nullable) = false ];
|
||||
}
|
||||
|
||||
// ContractInfo stores a WASM contract instance
|
||||
message ContractInfo {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
// CodeID is the reference to the stored Wasm code
|
||||
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
|
||||
// Creator address who initially instantiated the contract
|
||||
string creator = 2;
|
||||
// Admin is an optional address that can execute migrations
|
||||
string admin = 3;
|
||||
// Label is optional metadata to be stored with a contract instance.
|
||||
string label = 4;
|
||||
// Created Tx position when the contract was instantiated.
|
||||
// This data should kept internal and not be exposed via query results. Just
|
||||
// use for sorting
|
||||
AbsoluteTxPosition created = 5;
|
||||
string ibc_port_id = 6 [ (gogoproto.customname) = "IBCPortID" ];
|
||||
}
|
||||
|
||||
// ContractCodeHistoryOperationType actions that caused a code change
|
||||
enum ContractCodeHistoryOperationType {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
// ContractCodeHistoryOperationTypeUnspecified placeholder for empty value
|
||||
CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED = 0
|
||||
[ (gogoproto.enumvalue_customname) =
|
||||
"ContractCodeHistoryOperationTypeUnspecified" ];
|
||||
// ContractCodeHistoryOperationTypeInit on chain contract instantiation
|
||||
CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT = 1
|
||||
[ (gogoproto.enumvalue_customname) =
|
||||
"ContractCodeHistoryOperationTypeInit" ];
|
||||
// ContractCodeHistoryOperationTypeMigrate code migration
|
||||
CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE = 2
|
||||
[ (gogoproto.enumvalue_customname) =
|
||||
"ContractCodeHistoryOperationTypeMigrate" ];
|
||||
// ContractCodeHistoryOperationTypeGenesis based on genesis data
|
||||
CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS = 3
|
||||
[ (gogoproto.enumvalue_customname) =
|
||||
"ContractCodeHistoryOperationTypeGenesis" ];
|
||||
}
|
||||
|
||||
// ContractCodeHistoryEntry metadata to a contract.
|
||||
message ContractCodeHistoryEntry {
|
||||
ContractCodeHistoryOperationType operation = 1;
|
||||
// CodeID is the reference to the stored WASM code
|
||||
uint64 code_id = 2 [ (gogoproto.customname) = "CodeID" ];
|
||||
// Updated Tx position when the operation was executed.
|
||||
AbsoluteTxPosition updated = 3;
|
||||
bytes msg = 4 [ (gogoproto.casttype) = "encoding/json.RawMessage" ];
|
||||
}
|
||||
|
||||
// AbsoluteTxPosition is a unique transaction position that allows for global
|
||||
// ordering of transactions.
|
||||
message AbsoluteTxPosition {
|
||||
// BlockHeight is the block the contract was created at
|
||||
uint64 block_height = 1;
|
||||
// TxIndex is a monotonic counter within the block (actual transaction index,
|
||||
// or gas consumed)
|
||||
uint64 tx_index = 2;
|
||||
}
|
||||
|
||||
// Model is a struct that holds a KV pair
|
||||
message Model {
|
||||
// hex-encode key to read it better (this is often ascii)
|
||||
bytes key = 1 [ (gogoproto.casttype) =
|
||||
"github.com/tendermint/tendermint/libs/bytes.HexBytes" ];
|
||||
// base64-encode raw value
|
||||
bytes value = 2;
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
# Scripts
|
||||
|
||||
These scripts are copied from the [Cosmos-SDK](https://github.com/cosmos/cosmos-sdk/tree/v0.42.1/scripts) respository
|
||||
with minor modifications. All credits and big thanks go to the original authors.
|
||||
|
||||
Please note that a custom [fork](github.com/regen-network/protobuf) by the Regen network team is used.
|
||||
See [`go.mod`](../go.mod) for version.
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
mkdir -p ./docs/client
|
||||
proto_dirs=$(find ./proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq)
|
||||
for dir in $proto_dirs; do
|
||||
|
||||
# generate swagger files (filter query files)
|
||||
query_file=$(find "${dir}" -maxdepth 1 \( -name 'query.proto' -o -name 'service.proto' \))
|
||||
if [[ ! -z "$query_file" ]]; then
|
||||
buf protoc \
|
||||
-I "proto" \
|
||||
-I "third_party/proto" \
|
||||
"$query_file" \
|
||||
--swagger_out=./docs/client \
|
||||
--swagger_opt=logtostderr=true --swagger_opt=fqn_for_swagger_name=true --swagger_opt=simple_operation_ids=true
|
||||
fi
|
||||
done
|
|
@ -1,19 +1,38 @@
|
|||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
PROJECT_PROTO_DIR=x/wasm/types/
|
||||
COSMOS_SDK_DIR=${COSMOS_SDK_DIR:-$(go list -f "{{ .Dir }}" -m github.com/cosmos/cosmos-sdk)}
|
||||
protoc_gen_gocosmos() {
|
||||
if ! grep "github.com/gogo/protobuf => github.com/regen-network/protobuf" go.mod &>/dev/null ; then
|
||||
echo -e "\tPlease run this command from somewhere inside the cosmos-sdk folder."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Generate Go types from protobuf
|
||||
protoc \
|
||||
-I=. \
|
||||
-I="$COSMOS_SDK_DIR/third_party/proto" \
|
||||
-I="$COSMOS_SDK_DIR/proto" \
|
||||
--gocosmos_out=Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mgoogle/protobuf/empty.proto=github.com/gogo/protobuf/types,plugins=interfacetype+grpc,paths=source_relative:. \
|
||||
--grpc-gateway_out .\
|
||||
--grpc-gateway_opt logtostderr=true \
|
||||
--grpc-gateway_opt paths=Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types,Mgoogle/protobuf/empty.proto=github.com/gogo/protobuf/types,paths=source_relative \
|
||||
--doc_out=./doc \
|
||||
--doc_opt=markdown,proto.md \
|
||||
$(find "${PROJECT_PROTO_DIR}" -maxdepth 1 -name '*.proto')
|
||||
go get github.com/regen-network/cosmos-proto/protoc-gen-gocosmos@latest 2>/dev/null
|
||||
}
|
||||
|
||||
protoc_gen_gocosmos
|
||||
|
||||
proto_dirs=$(find ./proto -path -prune -o -name '*.proto' -print0 | xargs -0 -n1 dirname | sort | uniq)
|
||||
for dir in $proto_dirs; do
|
||||
buf protoc \
|
||||
-I "proto" \
|
||||
-I "third_party/proto" \
|
||||
--gocosmos_out=plugins=interfacetype+grpc,\
|
||||
Mgoogle/protobuf/any.proto=github.com/cosmos/cosmos-sdk/codec/types:. \
|
||||
--grpc-gateway_out=logtostderr=true:. \
|
||||
$(find "${dir}" -maxdepth 1 -name '*.proto')
|
||||
|
||||
done
|
||||
#
|
||||
## command to generate docs using protoc-gen-doc
|
||||
buf protoc \
|
||||
-I "proto" \
|
||||
-I "third_party/proto" \
|
||||
--doc_out=./docs/proto \
|
||||
--doc_opt=./docs/proto/protodoc-markdown.tmpl,proto-docs.md \
|
||||
$(find "$(pwd)/proto" -maxdepth 5 -name '*.proto')
|
||||
|
||||
# move proto files to the right places
|
||||
cp -r github.com/CosmWasm/wasmd/* ./
|
||||
rm -rf github.com
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
# Third party
|
||||
Contain the protobuf dependencies
|
||||
|
||||
## Cosmos-SDK
|
||||
* [/proto dir](https://github.com/cosmos/cosmos-sdk/tree/master/proto)
|
||||
* [/third_party dir](https://github.com/cosmos/cosmos-sdk/tree/master/third_party/proto)
|
||||
|
||||
Credits and :bouquet: to the original authors
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.auth.v1beta1;
|
||||
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types";
|
||||
|
||||
// BaseAccount defines a base account type. It contains all the necessary fields
|
||||
// for basic account functionality. Any custom account type should extend this
|
||||
// type for additional functionality (e.g. vesting).
|
||||
message BaseAccount {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
option (cosmos_proto.implements_interface) = "AccountI";
|
||||
|
||||
string address = 1;
|
||||
google.protobuf.Any pub_key = 2
|
||||
[(gogoproto.jsontag) = "public_key,omitempty", (gogoproto.moretags) = "yaml:\"public_key\""];
|
||||
uint64 account_number = 3 [(gogoproto.moretags) = "yaml:\"account_number\""];
|
||||
uint64 sequence = 4;
|
||||
}
|
||||
|
||||
// ModuleAccount defines an account for modules that holds coins on a pool.
|
||||
message ModuleAccount {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (cosmos_proto.implements_interface) = "ModuleAccountI";
|
||||
|
||||
BaseAccount base_account = 1 [(gogoproto.embed) = true, (gogoproto.moretags) = "yaml:\"base_account\""];
|
||||
string name = 2;
|
||||
repeated string permissions = 3;
|
||||
}
|
||||
|
||||
// Params defines the parameters for the auth module.
|
||||
message Params {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
uint64 max_memo_characters = 1 [(gogoproto.moretags) = "yaml:\"max_memo_characters\""];
|
||||
uint64 tx_sig_limit = 2 [(gogoproto.moretags) = "yaml:\"tx_sig_limit\""];
|
||||
uint64 tx_size_cost_per_byte = 3 [(gogoproto.moretags) = "yaml:\"tx_size_cost_per_byte\""];
|
||||
uint64 sig_verify_cost_ed25519 = 4
|
||||
[(gogoproto.customname) = "SigVerifyCostED25519", (gogoproto.moretags) = "yaml:\"sig_verify_cost_ed25519\""];
|
||||
uint64 sig_verify_cost_secp256k1 = 5
|
||||
[(gogoproto.customname) = "SigVerifyCostSecp256k1", (gogoproto.moretags) = "yaml:\"sig_verify_cost_secp256k1\""];
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.auth.v1beta1;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/auth/v1beta1/auth.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types";
|
||||
|
||||
// GenesisState defines the auth module's genesis state.
|
||||
message GenesisState {
|
||||
// params defines all the paramaters of the module.
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// accounts are the accounts present at genesis.
|
||||
repeated google.protobuf.Any accounts = 2;
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.auth.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/auth/v1beta1/auth.proto";
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/auth/types";
|
||||
|
||||
// Query defines the gRPC querier service.
|
||||
service Query {
|
||||
// Account returns account details based on address.
|
||||
rpc Account(QueryAccountRequest) returns (QueryAccountResponse) {
|
||||
option (google.api.http).get = "/cosmos/auth/v1beta1/accounts/{address}";
|
||||
}
|
||||
|
||||
// Params queries all parameters.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/auth/v1beta1/params";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryAccountRequest is the request type for the Query/Account RPC method.
|
||||
message QueryAccountRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// address defines the address to query for.
|
||||
string address = 1;
|
||||
}
|
||||
|
||||
// QueryAccountResponse is the response type for the Query/Account RPC method.
|
||||
message QueryAccountResponse {
|
||||
// account defines the account of the corresponding address.
|
||||
google.protobuf.Any account = 1 [(cosmos_proto.accepts_interface) = "AccountI"];
|
||||
}
|
||||
|
||||
// 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 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.bank.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";
|
||||
|
||||
// Params defines the parameters for the bank module.
|
||||
message Params {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
repeated SendEnabled send_enabled = 1 [(gogoproto.moretags) = "yaml:\"send_enabled,omitempty\""];
|
||||
bool default_send_enabled = 2 [(gogoproto.moretags) = "yaml:\"default_send_enabled,omitempty\""];
|
||||
}
|
||||
|
||||
// SendEnabled maps coin denom to a send_enabled status (whether a denom is
|
||||
// sendable).
|
||||
message SendEnabled {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
string denom = 1;
|
||||
bool enabled = 2;
|
||||
}
|
||||
|
||||
// Input models transaction input.
|
||||
message Input {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string address = 1;
|
||||
repeated cosmos.base.v1beta1.Coin coins = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// Output models transaction outputs.
|
||||
message Output {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string address = 1;
|
||||
repeated cosmos.base.v1beta1.Coin coins = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// Supply represents a struct that passively keeps track of the total supply
|
||||
// amounts in the network.
|
||||
message Supply {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
option (cosmos_proto.implements_interface) = "*github.com/cosmos/cosmos-sdk/x/bank/exported.SupplyI";
|
||||
|
||||
repeated cosmos.base.v1beta1.Coin total = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// DenomUnit represents a struct that describes a given
|
||||
// denomination unit of the basic token.
|
||||
message DenomUnit {
|
||||
// denom represents the string name of the given denom unit (e.g uatom).
|
||||
string denom = 1;
|
||||
// exponent represents power of 10 exponent that one must
|
||||
// raise the base_denom to in order to equal the given DenomUnit's denom
|
||||
// 1 denom = 1^exponent base_denom
|
||||
// (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with
|
||||
// exponent = 6, thus: 1 atom = 10^6 uatom).
|
||||
uint32 exponent = 2;
|
||||
// aliases is a list of string aliases for the given denom
|
||||
repeated string aliases = 3;
|
||||
}
|
||||
|
||||
// Metadata represents a struct that describes
|
||||
// a basic token.
|
||||
message Metadata {
|
||||
string description = 1;
|
||||
// denom_units represents the list of DenomUnit's for a given coin
|
||||
repeated DenomUnit denom_units = 2;
|
||||
// base represents the base denom (should be the DenomUnit with exponent = 0).
|
||||
string base = 3;
|
||||
// display indicates the suggested denom that should be
|
||||
// displayed in clients.
|
||||
string display = 4;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.bank.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/bank/v1beta1/bank.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";
|
||||
|
||||
// GenesisState defines the bank module's genesis state.
|
||||
message GenesisState {
|
||||
// params defines all the paramaters of the module.
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// balances is an array containing the balances of all the accounts.
|
||||
repeated Balance balances = 2 [(gogoproto.nullable) = false];
|
||||
|
||||
// supply represents the total supply.
|
||||
repeated cosmos.base.v1beta1.Coin supply = 3
|
||||
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false];
|
||||
|
||||
// denom_metadata defines the metadata of the differents coins.
|
||||
repeated Metadata denom_metadata = 4 [(gogoproto.moretags) = "yaml:\"denom_metadata\"", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Balance defines an account address and balance pair used in the bank module's
|
||||
// genesis state.
|
||||
message Balance {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// address is the address of the balance holder.
|
||||
string address = 1;
|
||||
|
||||
// coins defines the different coins this balance holds.
|
||||
repeated cosmos.base.v1beta1.Coin coins = 2
|
||||
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins", (gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,150 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.bank.v1beta1;
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/bank/v1beta1/bank.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";
|
||||
|
||||
// Query defines the gRPC querier service.
|
||||
service Query {
|
||||
// Balance queries the balance of a single coin for a single account.
|
||||
rpc Balance(QueryBalanceRequest) returns (QueryBalanceResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}/{denom}";
|
||||
}
|
||||
|
||||
// AllBalances queries the balance of all coins for a single account.
|
||||
rpc AllBalances(QueryAllBalancesRequest) returns (QueryAllBalancesResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/balances/{address}";
|
||||
}
|
||||
|
||||
// TotalSupply queries the total supply of all coins.
|
||||
rpc TotalSupply(QueryTotalSupplyRequest) returns (QueryTotalSupplyResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/supply";
|
||||
}
|
||||
|
||||
// SupplyOf queries the supply of a single coin.
|
||||
rpc SupplyOf(QuerySupplyOfRequest) returns (QuerySupplyOfResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/supply/{denom}";
|
||||
}
|
||||
|
||||
// Params queries the parameters of x/bank module.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/params";
|
||||
}
|
||||
|
||||
// DenomsMetadata queries the client metadata of a given coin denomination.
|
||||
rpc DenomMetadata(QueryDenomMetadataRequest) returns (QueryDenomMetadataResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata/{denom}";
|
||||
}
|
||||
|
||||
// DenomsMetadata queries the client metadata for all registered coin denominations.
|
||||
rpc DenomsMetadata(QueryDenomsMetadataRequest) returns (QueryDenomsMetadataResponse) {
|
||||
option (google.api.http).get = "/cosmos/bank/v1beta1/denoms_metadata";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryBalanceRequest is the request type for the Query/Balance RPC method.
|
||||
message QueryBalanceRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// address is the address to query balances for.
|
||||
string address = 1;
|
||||
|
||||
// denom is the coin denom to query balances for.
|
||||
string denom = 2;
|
||||
}
|
||||
|
||||
// QueryBalanceResponse is the response type for the Query/Balance RPC method.
|
||||
message QueryBalanceResponse {
|
||||
// balance is the balance of the coin.
|
||||
cosmos.base.v1beta1.Coin balance = 1;
|
||||
}
|
||||
|
||||
// QueryBalanceRequest is the request type for the Query/AllBalances RPC method.
|
||||
message QueryAllBalancesRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// address is the address to query balances for.
|
||||
string address = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryAllBalancesResponse is the response type for the Query/AllBalances RPC
|
||||
// method.
|
||||
message QueryAllBalancesResponse {
|
||||
// balances is the balances of all the coins.
|
||||
repeated cosmos.base.v1beta1.Coin balances = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryTotalSupplyRequest is the request type for the Query/TotalSupply RPC
|
||||
// method.
|
||||
message QueryTotalSupplyRequest {}
|
||||
|
||||
// QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC
|
||||
// method
|
||||
message QueryTotalSupplyResponse {
|
||||
// supply is the supply of the coins
|
||||
repeated cosmos.base.v1beta1.Coin supply = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// QuerySupplyOfRequest is the request type for the Query/SupplyOf RPC method.
|
||||
message QuerySupplyOfRequest {
|
||||
// denom is the coin denom to query balances for.
|
||||
string denom = 1;
|
||||
}
|
||||
|
||||
// QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.
|
||||
message QuerySupplyOfResponse {
|
||||
// amount is the supply of the coin.
|
||||
cosmos.base.v1beta1.Coin amount = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryParamsRequest defines the request type for querying x/bank parameters.
|
||||
message QueryParamsRequest {}
|
||||
|
||||
// QueryParamsResponse defines the response type for querying x/bank parameters.
|
||||
message QueryParamsResponse {
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryDenomsMetadataRequest is the request type for the Query/DenomsMetadata RPC method.
|
||||
message QueryDenomsMetadataRequest {
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC
|
||||
// method.
|
||||
message QueryDenomsMetadataResponse {
|
||||
// metadata provides the client information for all the registered tokens.
|
||||
repeated Metadata metadatas = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDenomMetadataRequest is the request type for the Query/DenomMetadata RPC method.
|
||||
message QueryDenomMetadataRequest {
|
||||
// denom is the coin denom to query the metadata for.
|
||||
string denom = 1;
|
||||
}
|
||||
|
||||
// QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC
|
||||
// method.
|
||||
message QueryDenomMetadataResponse {
|
||||
// metadata describes and provides all the client information for the requested token.
|
||||
Metadata metadata = 1 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.bank.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/bank/v1beta1/bank.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";
|
||||
|
||||
// Msg defines the bank Msg service.
|
||||
service Msg {
|
||||
// Send defines a method for sending coins from one account to another account.
|
||||
rpc Send(MsgSend) returns (MsgSendResponse);
|
||||
|
||||
// MultiSend defines a method for sending coins from some accounts to other accounts.
|
||||
rpc MultiSend(MsgMultiSend) returns (MsgMultiSendResponse);
|
||||
}
|
||||
|
||||
// MsgSend represents a message to send coins from one account to another.
|
||||
message MsgSend {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string from_address = 1 [(gogoproto.moretags) = "yaml:\"from_address\""];
|
||||
string to_address = 2 [(gogoproto.moretags) = "yaml:\"to_address\""];
|
||||
repeated cosmos.base.v1beta1.Coin amount = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// MsgSendResponse defines the Msg/Send response type.
|
||||
message MsgSendResponse {}
|
||||
|
||||
// MsgMultiSend represents an arbitrary multi-in, multi-out send message.
|
||||
message MsgMultiSend {
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
repeated Input inputs = 1 [(gogoproto.nullable) = false];
|
||||
repeated Output outputs = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// MsgMultiSendResponse defines the Msg/MultiSend response type.
|
||||
message MsgMultiSendResponse {}
|
|
@ -0,0 +1,137 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.abci.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "tendermint/abci/types.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types";
|
||||
option (gogoproto.goproto_stringer_all) = false;
|
||||
|
||||
// TxResponse defines a structure containing relevant tx data and metadata. The
|
||||
// tags are stringified and the log is JSON decoded.
|
||||
message TxResponse {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// The block height
|
||||
int64 height = 1;
|
||||
// The transaction hash.
|
||||
string txhash = 2 [(gogoproto.customname) = "TxHash"];
|
||||
// Namespace for the Code
|
||||
string codespace = 3;
|
||||
// Response code.
|
||||
uint32 code = 4;
|
||||
// Result bytes, if any.
|
||||
string data = 5;
|
||||
// The output of the application's logger (raw string). May be
|
||||
// non-deterministic.
|
||||
string raw_log = 6;
|
||||
// The output of the application's logger (typed). May be non-deterministic.
|
||||
repeated ABCIMessageLog logs = 7 [(gogoproto.castrepeated) = "ABCIMessageLogs", (gogoproto.nullable) = false];
|
||||
// Additional information. May be non-deterministic.
|
||||
string info = 8;
|
||||
// Amount of gas requested for transaction.
|
||||
int64 gas_wanted = 9;
|
||||
// Amount of gas consumed by transaction.
|
||||
int64 gas_used = 10;
|
||||
// The request transaction bytes.
|
||||
google.protobuf.Any tx = 11;
|
||||
// Time of the previous block. For heights > 1, it's the weighted median of
|
||||
// the timestamps of the valid votes in the block.LastCommit. For height == 1,
|
||||
// it's genesis time.
|
||||
string timestamp = 12;
|
||||
}
|
||||
|
||||
// ABCIMessageLog defines a structure containing an indexed tx ABCI message log.
|
||||
message ABCIMessageLog {
|
||||
option (gogoproto.stringer) = true;
|
||||
|
||||
uint32 msg_index = 1;
|
||||
string log = 2;
|
||||
|
||||
// Events contains a slice of Event objects that were emitted during some
|
||||
// execution.
|
||||
repeated StringEvent events = 3 [(gogoproto.castrepeated) = "StringEvents", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// StringEvent defines en Event object wrapper where all the attributes
|
||||
// contain key/value pairs that are strings instead of raw bytes.
|
||||
message StringEvent {
|
||||
option (gogoproto.stringer) = true;
|
||||
|
||||
string type = 1;
|
||||
repeated Attribute attributes = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Attribute defines an attribute wrapper where the key and value are
|
||||
// strings instead of raw bytes.
|
||||
message Attribute {
|
||||
string key = 1;
|
||||
string value = 2;
|
||||
}
|
||||
|
||||
// GasInfo defines tx execution gas context.
|
||||
message GasInfo {
|
||||
// GasWanted is the maximum units of work we allow this tx to perform.
|
||||
uint64 gas_wanted = 1 [(gogoproto.moretags) = "yaml:\"gas_wanted\""];
|
||||
|
||||
// GasUsed is the amount of gas actually consumed.
|
||||
uint64 gas_used = 2 [(gogoproto.moretags) = "yaml:\"gas_used\""];
|
||||
}
|
||||
|
||||
// Result is the union of ResponseFormat and ResponseCheckTx.
|
||||
message Result {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// Data is any data returned from message or handler execution. It MUST be
|
||||
// length prefixed in order to separate data from multiple message executions.
|
||||
bytes data = 1;
|
||||
|
||||
// Log contains the log information from message or handler execution.
|
||||
string log = 2;
|
||||
|
||||
// Events contains a slice of Event objects that were emitted during message
|
||||
// or handler execution.
|
||||
repeated tendermint.abci.Event events = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// SimulationResponse defines the response generated when a transaction is
|
||||
// successfully simulated.
|
||||
message SimulationResponse {
|
||||
GasInfo gas_info = 1 [(gogoproto.embed) = true, (gogoproto.nullable) = false];
|
||||
Result result = 2;
|
||||
}
|
||||
|
||||
// MsgData defines the data returned in a Result object during message
|
||||
// execution.
|
||||
message MsgData {
|
||||
option (gogoproto.stringer) = true;
|
||||
|
||||
string msg_type = 1;
|
||||
bytes data = 2;
|
||||
}
|
||||
|
||||
// TxMsgData defines a list of MsgData. A transaction will have a MsgData object
|
||||
// for each message.
|
||||
message TxMsgData {
|
||||
option (gogoproto.stringer) = true;
|
||||
|
||||
repeated MsgData data = 1;
|
||||
}
|
||||
|
||||
// SearchTxsResult defines a structure for querying txs pageable
|
||||
message SearchTxsResult {
|
||||
option (gogoproto.stringer) = true;
|
||||
|
||||
// Count of all txs
|
||||
uint64 total_count = 1 [(gogoproto.moretags) = "yaml:\"total_count\"", (gogoproto.jsontag) = "total_count"];
|
||||
// Count of txs in current page
|
||||
uint64 count = 2;
|
||||
// Index of current page, start from 1
|
||||
uint64 page_number = 3 [(gogoproto.moretags) = "yaml:\"page_number\"", (gogoproto.jsontag) = "page_number"];
|
||||
// Count of total pages
|
||||
uint64 page_total = 4 [(gogoproto.moretags) = "yaml:\"page_total\"", (gogoproto.jsontag) = "page_total"];
|
||||
// Max count txs per page
|
||||
uint64 limit = 5;
|
||||
// List of txs in current page
|
||||
repeated TxResponse txs = 6;
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.kv.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types/kv";
|
||||
|
||||
// Pairs defines a repeated slice of Pair objects.
|
||||
message Pairs {
|
||||
repeated Pair pairs = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Pair defines a key/value bytes tuple.
|
||||
message Pair {
|
||||
bytes key = 1;
|
||||
bytes value = 2;
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.query.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types/query";
|
||||
|
||||
// PageRequest is to be embedded in gRPC request messages for efficient
|
||||
// pagination. Ex:
|
||||
//
|
||||
// message SomeRequest {
|
||||
// Foo some_parameter = 1;
|
||||
// PageRequest pagination = 2;
|
||||
// }
|
||||
message PageRequest {
|
||||
// key is a value returned in PageResponse.next_key to begin
|
||||
// querying the next page most efficiently. Only one of offset or key
|
||||
// should be set.
|
||||
bytes key = 1;
|
||||
|
||||
// offset is a numeric offset that can be used when key is unavailable.
|
||||
// It is less efficient than using key. Only one of offset or key should
|
||||
// be set.
|
||||
uint64 offset = 2;
|
||||
|
||||
// limit is the total number of results to be returned in the result page.
|
||||
// If left empty it will default to a value to be set by each app.
|
||||
uint64 limit = 3;
|
||||
|
||||
// count_total is set to true to indicate that the result set should include
|
||||
// a count of the total number of items available for pagination in UIs.
|
||||
// count_total is only respected when offset is used. It is ignored when key
|
||||
// is set.
|
||||
bool count_total = 4;
|
||||
}
|
||||
|
||||
// PageResponse is to be embedded in gRPC response messages where the
|
||||
// corresponding request message has used PageRequest.
|
||||
//
|
||||
// message SomeResponse {
|
||||
// repeated Bar results = 1;
|
||||
// PageResponse page = 2;
|
||||
// }
|
||||
message PageResponse {
|
||||
// next_key is the key to be passed to PageRequest.key to
|
||||
// query the next page most efficiently
|
||||
bytes next_key = 1;
|
||||
|
||||
// total is total number of results available if PageRequest.count_total
|
||||
// was set, its value is undefined otherwise
|
||||
uint64 total = 2;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.reflection.v1beta1;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/client/grpc/reflection";
|
||||
|
||||
// ReflectionService defines a service for interface reflection.
|
||||
service ReflectionService {
|
||||
// ListAllInterfaces lists all the interfaces registered in the interface
|
||||
// registry.
|
||||
rpc ListAllInterfaces(ListAllInterfacesRequest) returns (ListAllInterfacesResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces";
|
||||
};
|
||||
|
||||
// ListImplementations list all the concrete types that implement a given
|
||||
// interface.
|
||||
rpc ListImplementations(ListImplementationsRequest) returns (ListImplementationsResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/reflection/v1beta1/interfaces/"
|
||||
"{interface_name}/implementations";
|
||||
};
|
||||
}
|
||||
|
||||
// ListAllInterfacesRequest is the request type of the ListAllInterfaces RPC.
|
||||
message ListAllInterfacesRequest {}
|
||||
|
||||
// ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.
|
||||
message ListAllInterfacesResponse {
|
||||
// interface_names is an array of all the registered interfaces.
|
||||
repeated string interface_names = 1;
|
||||
}
|
||||
|
||||
// ListImplementationsRequest is the request type of the ListImplementations
|
||||
// RPC.
|
||||
message ListImplementationsRequest {
|
||||
// interface_name defines the interface to query the implementations for.
|
||||
string interface_name = 1;
|
||||
}
|
||||
|
||||
// ListImplementationsResponse is the response type of the ListImplementations
|
||||
// RPC.
|
||||
message ListImplementationsResponse {
|
||||
repeated string implementation_message_names = 1;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.snapshots.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/snapshots/types";
|
||||
|
||||
// Snapshot contains Tendermint state sync snapshot info.
|
||||
message Snapshot {
|
||||
uint64 height = 1;
|
||||
uint32 format = 2;
|
||||
uint32 chunks = 3;
|
||||
bytes hash = 4;
|
||||
Metadata metadata = 5 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Metadata contains SDK-specific snapshot metadata.
|
||||
message Metadata {
|
||||
repeated bytes chunk_hashes = 1; // SHA-256 chunk hashes
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.store.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/store/types";
|
||||
|
||||
// CommitInfo defines commit information used by the multi-store when committing
|
||||
// a version/height.
|
||||
message CommitInfo {
|
||||
int64 version = 1;
|
||||
repeated StoreInfo store_infos = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// StoreInfo defines store-specific commit information. It contains a reference
|
||||
// between a store name and the commit ID.
|
||||
message StoreInfo {
|
||||
string name = 1;
|
||||
CommitID commit_id = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// CommitID defines the committment information when a specific store is
|
||||
// committed.
|
||||
message CommitID {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
int64 version = 1;
|
||||
bytes hash = 2;
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.store.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/store/types";
|
||||
|
||||
// SnapshotItem is an item contained in a rootmulti.Store snapshot.
|
||||
message SnapshotItem {
|
||||
// item is the specific type of snapshot item.
|
||||
oneof item {
|
||||
SnapshotStoreItem store = 1;
|
||||
SnapshotIAVLItem iavl = 2 [(gogoproto.customname) = "IAVL"];
|
||||
}
|
||||
}
|
||||
|
||||
// SnapshotStoreItem contains metadata about a snapshotted store.
|
||||
message SnapshotStoreItem {
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
// SnapshotIAVLItem is an exported IAVL node.
|
||||
message SnapshotIAVLItem {
|
||||
bytes key = 1;
|
||||
bytes value = 2;
|
||||
int64 version = 3;
|
||||
int32 height = 4;
|
||||
}
|
|
@ -0,0 +1,136 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.tendermint.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "tendermint/p2p/types.proto";
|
||||
import "tendermint/types/block.proto";
|
||||
import "tendermint/types/types.proto";
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/client/grpc/tmservice";
|
||||
|
||||
// Service defines the gRPC querier service for tendermint queries.
|
||||
service Service {
|
||||
// GetNodeInfo queries the current node info.
|
||||
rpc GetNodeInfo(GetNodeInfoRequest) returns (GetNodeInfoResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/node_info";
|
||||
}
|
||||
// GetSyncing queries node syncing.
|
||||
rpc GetSyncing(GetSyncingRequest) returns (GetSyncingResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/syncing";
|
||||
}
|
||||
// GetLatestBlock returns the latest block.
|
||||
rpc GetLatestBlock(GetLatestBlockRequest) returns (GetLatestBlockResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/blocks/latest";
|
||||
}
|
||||
// GetBlockByHeight queries block for given height.
|
||||
rpc GetBlockByHeight(GetBlockByHeightRequest) returns (GetBlockByHeightResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/blocks/{height}";
|
||||
}
|
||||
|
||||
// GetLatestValidatorSet queries latest validator-set.
|
||||
rpc GetLatestValidatorSet(GetLatestValidatorSetRequest) returns (GetLatestValidatorSetResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/validatorsets/latest";
|
||||
}
|
||||
// GetValidatorSetByHeight queries validator-set at a given height.
|
||||
rpc GetValidatorSetByHeight(GetValidatorSetByHeightRequest) returns (GetValidatorSetByHeightResponse) {
|
||||
option (google.api.http).get = "/cosmos/base/tendermint/v1beta1/validatorsets/{height}";
|
||||
}
|
||||
}
|
||||
|
||||
// GetValidatorSetByHeightRequest is the request type for the Query/GetValidatorSetByHeight RPC method.
|
||||
message GetValidatorSetByHeightRequest {
|
||||
int64 height = 1;
|
||||
// pagination defines an pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method.
|
||||
message GetValidatorSetByHeightResponse {
|
||||
int64 block_height = 1;
|
||||
repeated Validator validators = 2;
|
||||
// pagination defines an pagination for the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 3;
|
||||
}
|
||||
|
||||
// GetLatestValidatorSetRequest is the request type for the Query/GetValidatorSetByHeight RPC method.
|
||||
message GetLatestValidatorSetRequest {
|
||||
// pagination defines an pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method.
|
||||
message GetLatestValidatorSetResponse {
|
||||
int64 block_height = 1;
|
||||
repeated Validator validators = 2;
|
||||
// pagination defines an pagination for the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 3;
|
||||
}
|
||||
|
||||
// Validator is the type for the validator-set.
|
||||
message Validator {
|
||||
string address = 1;
|
||||
google.protobuf.Any pub_key = 2;
|
||||
int64 voting_power = 3;
|
||||
int64 proposer_priority = 4;
|
||||
}
|
||||
|
||||
// GetBlockByHeightRequest is the request type for the Query/GetBlockByHeight RPC method.
|
||||
message GetBlockByHeightRequest {
|
||||
int64 height = 1;
|
||||
}
|
||||
|
||||
// GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method.
|
||||
message GetBlockByHeightResponse {
|
||||
.tendermint.types.BlockID block_id = 1;
|
||||
.tendermint.types.Block block = 2;
|
||||
}
|
||||
|
||||
// GetLatestBlockRequest is the request type for the Query/GetLatestBlock RPC method.
|
||||
message GetLatestBlockRequest {}
|
||||
|
||||
// GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method.
|
||||
message GetLatestBlockResponse {
|
||||
.tendermint.types.BlockID block_id = 1;
|
||||
.tendermint.types.Block block = 2;
|
||||
}
|
||||
|
||||
// GetSyncingRequest is the request type for the Query/GetSyncing RPC method.
|
||||
message GetSyncingRequest {}
|
||||
|
||||
// GetSyncingResponse is the response type for the Query/GetSyncing RPC method.
|
||||
message GetSyncingResponse {
|
||||
bool syncing = 1;
|
||||
}
|
||||
|
||||
// GetNodeInfoRequest is the request type for the Query/GetNodeInfo RPC method.
|
||||
message GetNodeInfoRequest {}
|
||||
|
||||
// GetNodeInfoResponse is the request type for the Query/GetNodeInfo RPC method.
|
||||
message GetNodeInfoResponse {
|
||||
.tendermint.p2p.DefaultNodeInfo default_node_info = 1;
|
||||
VersionInfo application_version = 2;
|
||||
}
|
||||
|
||||
// VersionInfo is the type for the GetNodeInfoResponse message.
|
||||
message VersionInfo {
|
||||
string name = 1;
|
||||
string app_name = 2;
|
||||
string version = 3;
|
||||
string git_commit = 4;
|
||||
string build_tags = 5;
|
||||
string go_version = 6;
|
||||
repeated Module build_deps = 7;
|
||||
}
|
||||
|
||||
// Module is the type for VersionInfo
|
||||
message Module {
|
||||
// module path
|
||||
string path = 1;
|
||||
// module version
|
||||
string version = 2;
|
||||
// checksum
|
||||
string sum = 3;
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.base.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types";
|
||||
option (gogoproto.goproto_stringer_all) = false;
|
||||
option (gogoproto.stringer_all) = false;
|
||||
|
||||
// Coin defines a token with a denomination and an amount.
|
||||
//
|
||||
// NOTE: The amount field is an Int which implements the custom method
|
||||
// signatures required by gogoproto.
|
||||
message Coin {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string denom = 1;
|
||||
string amount = 2 [(gogoproto.customtype) = "Int", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// DecCoin defines a token with a denomination and a decimal amount.
|
||||
//
|
||||
// NOTE: The amount field is an Dec which implements the custom method
|
||||
// signatures required by gogoproto.
|
||||
message DecCoin {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string denom = 1;
|
||||
string amount = 2 [(gogoproto.customtype) = "Dec", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// IntProto defines a Protobuf wrapper around an Int object.
|
||||
message IntProto {
|
||||
string int = 1 [(gogoproto.customtype) = "Int", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// DecProto defines a Protobuf wrapper around a Dec object.
|
||||
message DecProto {
|
||||
string dec = 1 [(gogoproto.customtype) = "Dec", (gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.capability.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/capability/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// Capability defines an implementation of an object capability. The index
|
||||
// provided to a Capability must be globally unique.
|
||||
message Capability {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
uint64 index = 1 [(gogoproto.moretags) = "yaml:\"index\""];
|
||||
}
|
||||
|
||||
// Owner defines a single capability owner. An owner is defined by the name of
|
||||
// capability and the module name.
|
||||
message Owner {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string module = 1 [(gogoproto.moretags) = "yaml:\"module\""];
|
||||
string name = 2 [(gogoproto.moretags) = "yaml:\"name\""];
|
||||
}
|
||||
|
||||
// CapabilityOwners defines a set of owners of a single Capability. The set of
|
||||
// owners must be unique.
|
||||
message CapabilityOwners {
|
||||
repeated Owner owners = 1 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.capability.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/capability/v1beta1/capability.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/capability/types";
|
||||
|
||||
// GenesisOwners defines the capability owners with their corresponding index.
|
||||
message GenesisOwners {
|
||||
// index is the index of the capability owner.
|
||||
uint64 index = 1;
|
||||
|
||||
// index_owners are the owners at the given index.
|
||||
CapabilityOwners index_owners = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"index_owners\""];
|
||||
}
|
||||
|
||||
// GenesisState defines the capability module's genesis state.
|
||||
message GenesisState {
|
||||
// index is the capability global index.
|
||||
uint64 index = 1;
|
||||
|
||||
// owners represents a map from index to owners of the capability index
|
||||
// index key is string to allow amino marshalling.
|
||||
repeated GenesisOwners owners = 2 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.crisis.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/crisis/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
|
||||
// GenesisState defines the crisis module's genesis state.
|
||||
message GenesisState {
|
||||
// constant_fee is the fee used to verify the invariant in the crisis
|
||||
// module.
|
||||
cosmos.base.v1beta1.Coin constant_fee = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"constant_fee\""];
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.crisis.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/crisis/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// Msg defines the bank Msg service.
|
||||
service Msg {
|
||||
// VerifyInvariant defines a method to verify a particular invariance.
|
||||
rpc VerifyInvariant(MsgVerifyInvariant) returns (MsgVerifyInvariantResponse);
|
||||
}
|
||||
|
||||
// MsgVerifyInvariant represents a message to verify a particular invariance.
|
||||
message MsgVerifyInvariant {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string sender = 1;
|
||||
string invariant_module_name = 2 [(gogoproto.moretags) = "yaml:\"invariant_module_name\""];
|
||||
string invariant_route = 3 [(gogoproto.moretags) = "yaml:\"invariant_route\""];
|
||||
}
|
||||
|
||||
// MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.
|
||||
message MsgVerifyInvariantResponse {}
|
|
@ -0,0 +1,22 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.crypto.ed25519;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519";
|
||||
|
||||
// PubKey defines a ed25519 public key
|
||||
// Key is the compressed form of the pubkey. The first byte depends is a 0x02 byte
|
||||
// if the y-coordinate is the lexicographically largest of the two associated with
|
||||
// the x-coordinate. Otherwise the first byte is a 0x03.
|
||||
// This prefix is followed with the x-coordinate.
|
||||
message PubKey {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
bytes key = 1 [(gogoproto.casttype) = "crypto/ed25519.PublicKey"];
|
||||
}
|
||||
|
||||
// PrivKey defines a ed25519 private key.
|
||||
message PrivKey {
|
||||
bytes key = 1 [(gogoproto.casttype) = "crypto/ed25519.PrivateKey"];
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.crypto.multisig;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/multisig";
|
||||
|
||||
// LegacyAminoPubKey specifies a public key type
|
||||
// which nests multiple public keys and a threshold,
|
||||
// it uses legacy amino address rules.
|
||||
message LegacyAminoPubKey {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
uint32 threshold = 1 [(gogoproto.moretags) = "yaml:\"threshold\""];
|
||||
repeated google.protobuf.Any public_keys = 2
|
||||
[(gogoproto.customname) = "PubKeys", (gogoproto.moretags) = "yaml:\"pubkeys\""];
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.crypto.multisig.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/crypto/types";
|
||||
|
||||
// MultiSignature wraps the signatures from a multisig.LegacyAminoPubKey.
|
||||
// See cosmos.tx.v1betata1.ModeInfo.Multi for how to specify which signers
|
||||
// signed and with which modes.
|
||||
message MultiSignature {
|
||||
option (gogoproto.goproto_unrecognized) = true;
|
||||
repeated bytes signatures = 1;
|
||||
}
|
||||
|
||||
// CompactBitArray is an implementation of a space efficient bit array.
|
||||
// This is used to ensure that the encoded data takes up a minimal amount of
|
||||
// space after proto encoding.
|
||||
// This is not thread safe, and is not intended for concurrent usage.
|
||||
message CompactBitArray {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
uint32 extra_bits_stored = 1;
|
||||
bytes elems = 2;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.crypto.secp256k1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1";
|
||||
|
||||
// PubKey defines a secp256k1 public key
|
||||
// Key is the compressed form of the pubkey. The first byte depends is a 0x02 byte
|
||||
// if the y-coordinate is the lexicographically largest of the two associated with
|
||||
// the x-coordinate. Otherwise the first byte is a 0x03.
|
||||
// This prefix is followed with the x-coordinate.
|
||||
message PubKey {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
bytes key = 1;
|
||||
}
|
||||
|
||||
// PrivKey defines a secp256k1 private key.
|
||||
message PrivKey {
|
||||
bytes key = 1;
|
||||
}
|
|
@ -0,0 +1,157 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.distribution.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
|
||||
// Params defines the set of params for the distribution module.
|
||||
message Params {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
string community_tax = 1 [
|
||||
(gogoproto.moretags) = "yaml:\"community_tax\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
string base_proposer_reward = 2 [
|
||||
(gogoproto.moretags) = "yaml:\"base_proposer_reward\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
string bonus_proposer_reward = 3 [
|
||||
(gogoproto.moretags) = "yaml:\"bonus_proposer_reward\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
bool withdraw_addr_enabled = 4 [(gogoproto.moretags) = "yaml:\"withdraw_addr_enabled\""];
|
||||
}
|
||||
|
||||
// ValidatorHistoricalRewards represents historical rewards for a validator.
|
||||
// Height is implicit within the store key.
|
||||
// Cumulative reward ratio is the sum from the zeroeth period
|
||||
// until this period of rewards / tokens, per the spec.
|
||||
// The reference count indicates the number of objects
|
||||
// which might need to reference this historical entry at any point.
|
||||
// ReferenceCount =
|
||||
// number of outstanding delegations which ended the associated period (and
|
||||
// might need to read that record)
|
||||
// + number of slashes which ended the associated period (and might need to
|
||||
// read that record)
|
||||
// + one per validator for the zeroeth period, set on initialization
|
||||
message ValidatorHistoricalRewards {
|
||||
repeated cosmos.base.v1beta1.DecCoin cumulative_reward_ratio = 1 [
|
||||
(gogoproto.moretags) = "yaml:\"cumulative_reward_ratio\"",
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
uint32 reference_count = 2 [(gogoproto.moretags) = "yaml:\"reference_count\""];
|
||||
}
|
||||
|
||||
// ValidatorCurrentRewards represents current rewards and current
|
||||
// period for a validator kept as a running counter and incremented
|
||||
// each block as long as the validator's tokens remain constant.
|
||||
message ValidatorCurrentRewards {
|
||||
repeated cosmos.base.v1beta1.DecCoin rewards = 1
|
||||
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false];
|
||||
uint64 period = 2;
|
||||
}
|
||||
|
||||
// ValidatorAccumulatedCommission represents accumulated commission
|
||||
// for a validator kept as a running counter, can be withdrawn at any time.
|
||||
message ValidatorAccumulatedCommission {
|
||||
repeated cosmos.base.v1beta1.DecCoin commission = 1
|
||||
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards
|
||||
// for a validator inexpensive to track, allows simple sanity checks.
|
||||
message ValidatorOutstandingRewards {
|
||||
repeated cosmos.base.v1beta1.DecCoin rewards = 1 [
|
||||
(gogoproto.moretags) = "yaml:\"rewards\"",
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
}
|
||||
|
||||
// ValidatorSlashEvent represents a validator slash event.
|
||||
// Height is implicit within the store key.
|
||||
// This is needed to calculate appropriate amount of staking tokens
|
||||
// for delegations which are withdrawn after a slash has occurred.
|
||||
message ValidatorSlashEvent {
|
||||
uint64 validator_period = 1 [(gogoproto.moretags) = "yaml:\"validator_period\""];
|
||||
string fraction = 2 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// ValidatorSlashEvents is a collection of ValidatorSlashEvent messages.
|
||||
message ValidatorSlashEvents {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
repeated ValidatorSlashEvent validator_slash_events = 1
|
||||
[(gogoproto.moretags) = "yaml:\"validator_slash_events\"", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// FeePool is the global fee pool for distribution.
|
||||
message FeePool {
|
||||
repeated cosmos.base.v1beta1.DecCoin community_pool = 1 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins",
|
||||
(gogoproto.moretags) = "yaml:\"community_pool\""
|
||||
];
|
||||
}
|
||||
|
||||
// CommunityPoolSpendProposal details a proposal for use of community funds,
|
||||
// together with how many coins are proposed to be spent, and to which
|
||||
// recipient account.
|
||||
message CommunityPoolSpendProposal {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
string recipient = 3;
|
||||
repeated cosmos.base.v1beta1.Coin amount = 4
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// DelegatorStartingInfo represents the starting info for a delegator reward
|
||||
// period. It tracks the previous validator period, the delegation's amount of
|
||||
// staking token, and the creation height (to check later on if any slashes have
|
||||
// occurred). NOTE: Even though validators are slashed to whole staking tokens,
|
||||
// the delegators within the validator may be left with less than a full token,
|
||||
// thus sdk.Dec is used.
|
||||
message DelegatorStartingInfo {
|
||||
uint64 previous_period = 1 [(gogoproto.moretags) = "yaml:\"previous_period\""];
|
||||
string stake = 2 [
|
||||
(gogoproto.moretags) = "yaml:\"stake\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
uint64 height = 3 [(gogoproto.moretags) = "yaml:\"creation_height\"", (gogoproto.jsontag) = "creation_height"];
|
||||
}
|
||||
|
||||
// DelegationDelegatorReward represents the properties
|
||||
// of a delegator's delegation reward.
|
||||
message DelegationDelegatorReward {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = true;
|
||||
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
|
||||
repeated cosmos.base.v1beta1.DecCoin reward = 2
|
||||
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// CommunityPoolSpendProposalWithDeposit defines a CommunityPoolSpendProposal
|
||||
// with a deposit
|
||||
message CommunityPoolSpendProposalWithDeposit {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = true;
|
||||
|
||||
string title = 1 [(gogoproto.moretags) = "yaml:\"title\""];
|
||||
string description = 2 [(gogoproto.moretags) = "yaml:\"description\""];
|
||||
string recipient = 3 [(gogoproto.moretags) = "yaml:\"recipient\""];
|
||||
string amount = 4 [(gogoproto.moretags) = "yaml:\"amount\""];
|
||||
string deposit = 5 [(gogoproto.moretags) = "yaml:\"deposit\""];
|
||||
}
|
|
@ -0,0 +1,155 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.distribution.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/distribution/v1beta1/distribution.proto";
|
||||
|
||||
// DelegatorWithdrawInfo is the address for where distributions rewards are
|
||||
// withdrawn to by default this struct is only used at genesis to feed in
|
||||
// default withdraw addresses.
|
||||
message DelegatorWithdrawInfo {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_address is the address of the delegator.
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
|
||||
// withdraw_address is the address to withdraw the delegation rewards to.
|
||||
string withdraw_address = 2 [(gogoproto.moretags) = "yaml:\"withdraw_address\""];
|
||||
}
|
||||
|
||||
// ValidatorOutstandingRewardsRecord is used for import/export via genesis json.
|
||||
message ValidatorOutstandingRewardsRecord {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// validator_address is the address of the validator.
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
|
||||
// outstanding_rewards represents the oustanding rewards of a validator.
|
||||
repeated cosmos.base.v1beta1.DecCoin outstanding_rewards = 2 [
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"outstanding_rewards\""
|
||||
];
|
||||
}
|
||||
|
||||
// ValidatorAccumulatedCommissionRecord is used for import / export via genesis
|
||||
// json.
|
||||
message ValidatorAccumulatedCommissionRecord {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// validator_address is the address of the validator.
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
|
||||
// accumulated is the accumulated commission of a validator.
|
||||
ValidatorAccumulatedCommission accumulated = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"accumulated\""];
|
||||
}
|
||||
|
||||
// ValidatorHistoricalRewardsRecord is used for import / export via genesis
|
||||
// json.
|
||||
message ValidatorHistoricalRewardsRecord {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// validator_address is the address of the validator.
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
|
||||
// period defines the period the historical rewards apply to.
|
||||
uint64 period = 2;
|
||||
|
||||
// rewards defines the historical rewards of a validator.
|
||||
ValidatorHistoricalRewards rewards = 3 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"rewards\""];
|
||||
}
|
||||
|
||||
// ValidatorCurrentRewardsRecord is used for import / export via genesis json.
|
||||
message ValidatorCurrentRewardsRecord {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// validator_address is the address of the validator.
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
|
||||
// rewards defines the current rewards of a validator.
|
||||
ValidatorCurrentRewards rewards = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"rewards\""];
|
||||
}
|
||||
|
||||
// DelegatorStartingInfoRecord used for import / export via genesis json.
|
||||
message DelegatorStartingInfoRecord {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_address is the address of the delegator.
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
|
||||
// validator_address is the address of the validator.
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
|
||||
// starting_info defines the starting info of a delegator.
|
||||
DelegatorStartingInfo starting_info = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"starting_info\""];
|
||||
}
|
||||
|
||||
// ValidatorSlashEventRecord is used for import / export via genesis json.
|
||||
message ValidatorSlashEventRecord {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// validator_address is the address of the validator.
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
// height defines the block height at which the slash event occured.
|
||||
uint64 height = 2;
|
||||
// period is the period of the slash event.
|
||||
uint64 period = 3;
|
||||
// validator_slash_event describes the slash event.
|
||||
ValidatorSlashEvent validator_slash_event = 4 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"event\""];
|
||||
}
|
||||
|
||||
// GenesisState defines the distribution module's genesis state.
|
||||
message GenesisState {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// params defines all the paramaters of the module.
|
||||
Params params = 1 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"params\""];
|
||||
|
||||
// fee_pool defines the fee pool at genesis.
|
||||
FeePool fee_pool = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"fee_pool\""];
|
||||
|
||||
// fee_pool defines the delegator withdraw infos at genesis.
|
||||
repeated DelegatorWithdrawInfo delegator_withdraw_infos = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"delegator_withdraw_infos\""];
|
||||
|
||||
// fee_pool defines the previous proposer at genesis.
|
||||
string previous_proposer = 4 [(gogoproto.moretags) = "yaml:\"previous_proposer\""];
|
||||
|
||||
// fee_pool defines the outstanding rewards of all validators at genesis.
|
||||
repeated ValidatorOutstandingRewardsRecord outstanding_rewards = 5
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"outstanding_rewards\""];
|
||||
|
||||
// fee_pool defines the accumulated commisions of all validators at genesis.
|
||||
repeated ValidatorAccumulatedCommissionRecord validator_accumulated_commissions = 6
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_accumulated_commissions\""];
|
||||
|
||||
// fee_pool defines the historical rewards of all validators at genesis.
|
||||
repeated ValidatorHistoricalRewardsRecord validator_historical_rewards = 7
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_historical_rewards\""];
|
||||
|
||||
// fee_pool defines the current rewards of all validators at genesis.
|
||||
repeated ValidatorCurrentRewardsRecord validator_current_rewards = 8
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_current_rewards\""];
|
||||
|
||||
// fee_pool defines the delegator starting infos at genesis.
|
||||
repeated DelegatorStartingInfoRecord delegator_starting_infos = 9
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"delegator_starting_infos\""];
|
||||
|
||||
// fee_pool defines the validator slash events at genesis.
|
||||
repeated ValidatorSlashEventRecord validator_slash_events = 10
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_slash_events\""];
|
||||
}
|
|
@ -0,0 +1,218 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.distribution.v1beta1;
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/distribution/v1beta1/distribution.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types";
|
||||
|
||||
// Query defines the gRPC querier service for distribution module.
|
||||
service Query {
|
||||
// Params queries params of the distribution module.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/params";
|
||||
}
|
||||
|
||||
// ValidatorOutstandingRewards queries rewards of a validator address.
|
||||
rpc ValidatorOutstandingRewards(QueryValidatorOutstandingRewardsRequest)
|
||||
returns (QueryValidatorOutstandingRewardsResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/validators/"
|
||||
"{validator_address}/outstanding_rewards";
|
||||
}
|
||||
|
||||
// ValidatorCommission queries accumulated commission for a validator.
|
||||
rpc ValidatorCommission(QueryValidatorCommissionRequest) returns (QueryValidatorCommissionResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/validators/"
|
||||
"{validator_address}/commission";
|
||||
}
|
||||
|
||||
// ValidatorSlashes queries slash events of a validator.
|
||||
rpc ValidatorSlashes(QueryValidatorSlashesRequest) returns (QueryValidatorSlashesResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/validators/{validator_address}/slashes";
|
||||
}
|
||||
|
||||
// DelegationRewards queries the total rewards accrued by a delegation.
|
||||
rpc DelegationRewards(QueryDelegationRewardsRequest) returns (QueryDelegationRewardsResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/"
|
||||
"{validator_address}";
|
||||
}
|
||||
|
||||
// DelegationTotalRewards queries the total rewards accrued by a each
|
||||
// validator.
|
||||
rpc DelegationTotalRewards(QueryDelegationTotalRewardsRequest) returns (QueryDelegationTotalRewardsResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards";
|
||||
}
|
||||
|
||||
// DelegatorValidators queries the validators of a delegator.
|
||||
rpc DelegatorValidators(QueryDelegatorValidatorsRequest) returns (QueryDelegatorValidatorsResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/"
|
||||
"{delegator_address}/validators";
|
||||
}
|
||||
|
||||
// DelegatorWithdrawAddress queries withdraw address of a delegator.
|
||||
rpc DelegatorWithdrawAddress(QueryDelegatorWithdrawAddressRequest) returns (QueryDelegatorWithdrawAddressResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/delegators/"
|
||||
"{delegator_address}/withdraw_address";
|
||||
}
|
||||
|
||||
// CommunityPool queries the community pool coins.
|
||||
rpc CommunityPool(QueryCommunityPoolRequest) returns (QueryCommunityPoolResponse) {
|
||||
option (google.api.http).get = "/cosmos/distribution/v1beta1/community_pool";
|
||||
}
|
||||
}
|
||||
|
||||
// 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 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryValidatorOutstandingRewardsRequest is the request type for the
|
||||
// Query/ValidatorOutstandingRewards RPC method.
|
||||
message QueryValidatorOutstandingRewardsRequest {
|
||||
// validator_address defines the validator address to query for.
|
||||
string validator_address = 1;
|
||||
}
|
||||
|
||||
// QueryValidatorOutstandingRewardsResponse is the response type for the
|
||||
// Query/ValidatorOutstandingRewards RPC method.
|
||||
message QueryValidatorOutstandingRewardsResponse {
|
||||
ValidatorOutstandingRewards rewards = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryValidatorCommissionRequest is the request type for the
|
||||
// Query/ValidatorCommission RPC method
|
||||
message QueryValidatorCommissionRequest {
|
||||
// validator_address defines the validator address to query for.
|
||||
string validator_address = 1;
|
||||
}
|
||||
|
||||
// QueryValidatorCommissionResponse is the response type for the
|
||||
// Query/ValidatorCommission RPC method
|
||||
message QueryValidatorCommissionResponse {
|
||||
// commission defines the commision the validator received.
|
||||
ValidatorAccumulatedCommission commission = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryValidatorSlashesRequest is the request type for the
|
||||
// Query/ValidatorSlashes RPC method
|
||||
message QueryValidatorSlashesRequest {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = true;
|
||||
|
||||
// validator_address defines the validator address to query for.
|
||||
string validator_address = 1;
|
||||
// starting_height defines the optional starting height to query the slashes.
|
||||
uint64 starting_height = 2;
|
||||
// starting_height defines the optional ending height to query the slashes.
|
||||
uint64 ending_height = 3;
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 4;
|
||||
}
|
||||
|
||||
// QueryValidatorSlashesResponse is the response type for the
|
||||
// Query/ValidatorSlashes RPC method.
|
||||
message QueryValidatorSlashesResponse {
|
||||
// slashes defines the slashes the validator received.
|
||||
repeated ValidatorSlashEvent slashes = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegationRewardsRequest is the request type for the
|
||||
// Query/DelegationRewards RPC method.
|
||||
message QueryDelegationRewardsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_address defines the delegator address to query for.
|
||||
string delegator_address = 1;
|
||||
// validator_address defines the validator address to query for.
|
||||
string validator_address = 2;
|
||||
}
|
||||
|
||||
// QueryDelegationRewardsResponse is the response type for the
|
||||
// Query/DelegationRewards RPC method.
|
||||
message QueryDelegationRewardsResponse {
|
||||
// rewards defines the rewards accrued by a delegation.
|
||||
repeated cosmos.base.v1beta1.DecCoin rewards = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins"];
|
||||
}
|
||||
|
||||
// QueryDelegationTotalRewardsRequest is the request type for the
|
||||
// Query/DelegationTotalRewards RPC method.
|
||||
message QueryDelegationTotalRewardsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
// delegator_address defines the delegator address to query for.
|
||||
string delegator_address = 1;
|
||||
}
|
||||
|
||||
// QueryDelegationTotalRewardsResponse is the response type for the
|
||||
// Query/DelegationTotalRewards RPC method.
|
||||
message QueryDelegationTotalRewardsResponse {
|
||||
// rewards defines all the rewards accrued by a delegator.
|
||||
repeated DelegationDelegatorReward rewards = 1 [(gogoproto.nullable) = false];
|
||||
// total defines the sum of all the rewards.
|
||||
repeated cosmos.base.v1beta1.DecCoin total = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins"];
|
||||
}
|
||||
|
||||
// QueryDelegatorValidatorsRequest is the request type for the
|
||||
// Query/DelegatorValidators RPC method.
|
||||
message QueryDelegatorValidatorsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_address defines the delegator address to query for.
|
||||
string delegator_address = 1;
|
||||
}
|
||||
|
||||
// QueryDelegatorValidatorsResponse is the response type for the
|
||||
// Query/DelegatorValidators RPC method.
|
||||
message QueryDelegatorValidatorsResponse {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// validators defines the validators a delegator is delegating for.
|
||||
repeated string validators = 1;
|
||||
}
|
||||
|
||||
// QueryDelegatorWithdrawAddressRequest is the request type for the
|
||||
// Query/DelegatorWithdrawAddress RPC method.
|
||||
message QueryDelegatorWithdrawAddressRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_address defines the delegator address to query for.
|
||||
string delegator_address = 1;
|
||||
}
|
||||
|
||||
// QueryDelegatorWithdrawAddressResponse is the response type for the
|
||||
// Query/DelegatorWithdrawAddress RPC method.
|
||||
message QueryDelegatorWithdrawAddressResponse {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// withdraw_address defines the delegator address to query for.
|
||||
string withdraw_address = 1;
|
||||
}
|
||||
|
||||
// QueryCommunityPoolRequest is the request type for the Query/CommunityPool RPC
|
||||
// method.
|
||||
message QueryCommunityPoolRequest {}
|
||||
|
||||
// QueryCommunityPoolResponse is the response type for the Query/CommunityPool
|
||||
// RPC method.
|
||||
message QueryCommunityPoolResponse {
|
||||
// pool defines community pool's coins.
|
||||
repeated cosmos.base.v1beta1.DecCoin pool = 1
|
||||
[(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins", (gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.distribution.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/distribution/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
|
||||
// Msg defines the distribution Msg service.
|
||||
service Msg {
|
||||
// SetWithdrawAddress defines a method to change the withdraw address
|
||||
// for a delegator (or validator self-delegation).
|
||||
rpc SetWithdrawAddress(MsgSetWithdrawAddress) returns (MsgSetWithdrawAddressResponse);
|
||||
|
||||
// WithdrawDelegatorReward defines a method to withdraw rewards of delegator
|
||||
// from a single validator.
|
||||
rpc WithdrawDelegatorReward(MsgWithdrawDelegatorReward) returns (MsgWithdrawDelegatorRewardResponse);
|
||||
|
||||
// WithdrawValidatorCommission defines a method to withdraw the
|
||||
// full commission to the validator address.
|
||||
rpc WithdrawValidatorCommission(MsgWithdrawValidatorCommission) returns (MsgWithdrawValidatorCommissionResponse);
|
||||
|
||||
// FundCommunityPool defines a method to allow an account to directly
|
||||
// fund the community pool.
|
||||
rpc FundCommunityPool(MsgFundCommunityPool) returns (MsgFundCommunityPoolResponse);
|
||||
}
|
||||
|
||||
// MsgSetWithdrawAddress sets the withdraw address for
|
||||
// a delegator (or validator self-delegation).
|
||||
message MsgSetWithdrawAddress {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string withdraw_address = 2 [(gogoproto.moretags) = "yaml:\"withdraw_address\""];
|
||||
}
|
||||
|
||||
// MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response type.
|
||||
message MsgSetWithdrawAddressResponse {}
|
||||
|
||||
// MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator
|
||||
// from a single validator.
|
||||
message MsgWithdrawDelegatorReward {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
}
|
||||
|
||||
// MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward response type.
|
||||
message MsgWithdrawDelegatorRewardResponse {}
|
||||
|
||||
// MsgWithdrawValidatorCommission withdraws the full commission to the validator
|
||||
// address.
|
||||
message MsgWithdrawValidatorCommission {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string validator_address = 1 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
}
|
||||
|
||||
// MsgWithdrawValidatorCommissionResponse defines the Msg/WithdrawValidatorCommission response type.
|
||||
message MsgWithdrawValidatorCommissionResponse {}
|
||||
|
||||
// MsgFundCommunityPool allows an account to directly
|
||||
// fund the community pool.
|
||||
message MsgFundCommunityPool {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
repeated cosmos.base.v1beta1.Coin amount = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
string depositor = 2;
|
||||
}
|
||||
|
||||
// MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.
|
||||
message MsgFundCommunityPoolResponse {}
|
|
@ -0,0 +1,21 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.evidence.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
// Equivocation implements the Evidence interface and defines evidence of double
|
||||
// signing misbehavior.
|
||||
message Equivocation {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
int64 height = 1;
|
||||
google.protobuf.Timestamp time = 2 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
||||
int64 power = 3;
|
||||
string consensus_address = 4 [(gogoproto.moretags) = "yaml:\"consensus_address\""];
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.evidence.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types";
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
// GenesisState defines the evidence module's genesis state.
|
||||
message GenesisState {
|
||||
// evidence defines all the evidence at genesis.
|
||||
repeated google.protobuf.Any evidence = 1;
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.evidence.v1beta1;
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/api/annotations.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types";
|
||||
|
||||
// Query defines the gRPC querier service.
|
||||
service Query {
|
||||
// Evidence queries evidence based on evidence hash.
|
||||
rpc Evidence(QueryEvidenceRequest) returns (QueryEvidenceResponse) {
|
||||
option (google.api.http).get = "/cosmos/evidence/v1beta1/evidence/{evidence_hash}";
|
||||
}
|
||||
|
||||
// AllEvidence queries all evidence.
|
||||
rpc AllEvidence(QueryAllEvidenceRequest) returns (QueryAllEvidenceResponse) {
|
||||
option (google.api.http).get = "/cosmos/evidence/v1beta1/evidence";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryEvidenceRequest is the request type for the Query/Evidence RPC method.
|
||||
message QueryEvidenceRequest {
|
||||
// evidence_hash defines the hash of the requested evidence.
|
||||
bytes evidence_hash = 1 [(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes"];
|
||||
}
|
||||
|
||||
// QueryEvidenceResponse is the response type for the Query/Evidence RPC method.
|
||||
message QueryEvidenceResponse {
|
||||
// evidence returns the requested evidence.
|
||||
google.protobuf.Any evidence = 1;
|
||||
}
|
||||
|
||||
// QueryEvidenceRequest is the request type for the Query/AllEvidence RPC
|
||||
// method.
|
||||
message QueryAllEvidenceRequest {
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC
|
||||
// method.
|
||||
message QueryAllEvidenceResponse {
|
||||
// evidence returns all evidences.
|
||||
repeated google.protobuf.Any evidence = 1;
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.evidence.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/evidence/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
|
||||
// Msg defines the evidence Msg service.
|
||||
service Msg {
|
||||
// SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or
|
||||
// counterfactual signing.
|
||||
rpc SubmitEvidence(MsgSubmitEvidence) returns (MsgSubmitEvidenceResponse);
|
||||
}
|
||||
|
||||
// MsgSubmitEvidence represents a message that supports submitting arbitrary
|
||||
// Evidence of misbehavior such as equivocation or counterfactual signing.
|
||||
message MsgSubmitEvidence {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string submitter = 1;
|
||||
google.protobuf.Any evidence = 2 [(cosmos_proto.accepts_interface) = "Evidence"];
|
||||
}
|
||||
|
||||
// MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.
|
||||
message MsgSubmitEvidenceResponse {
|
||||
// hash defines the hash of the evidence.
|
||||
bytes hash = 4;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.genutil.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/genutil/types";
|
||||
|
||||
// GenesisState defines the raw genesis transaction in JSON.
|
||||
message GenesisState {
|
||||
// gen_txs defines the genesis transactions.
|
||||
repeated bytes gen_txs = 1 [
|
||||
(gogoproto.casttype) = "encoding/json.RawMessage",
|
||||
(gogoproto.jsontag) = "gentxs",
|
||||
(gogoproto.moretags) = "yaml:\"gentxs\""
|
||||
];
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
syntax = "proto3";
|
||||
|
||||
package cosmos.gov.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/gov/v1beta1/gov.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types";
|
||||
|
||||
// GenesisState defines the gov module's genesis state.
|
||||
message GenesisState {
|
||||
// starting_proposal_id is the ID of the starting proposal.
|
||||
uint64 starting_proposal_id = 1 [(gogoproto.moretags) = "yaml:\"starting_proposal_id\""];
|
||||
// deposits defines all the deposits present at genesis.
|
||||
repeated Deposit deposits = 2 [(gogoproto.castrepeated) = "Deposits", (gogoproto.nullable) = false];
|
||||
// votes defines all the votes present at genesis.
|
||||
repeated Vote votes = 3 [(gogoproto.castrepeated) = "Votes", (gogoproto.nullable) = false];
|
||||
// proposals defines all the proposals present at genesis.
|
||||
repeated Proposal proposals = 4 [(gogoproto.castrepeated) = "Proposals", (gogoproto.nullable) = false];
|
||||
// params defines all the paramaters of related to deposit.
|
||||
DepositParams deposit_params = 5 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"deposit_params\""];
|
||||
// params defines all the paramaters of related to voting.
|
||||
VotingParams voting_params = 6 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_params\""];
|
||||
// params defines all the paramaters of related to tally.
|
||||
TallyParams tally_params = 7 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"tally_params\""];
|
||||
}
|
|
@ -0,0 +1,183 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.gov.v1beta1;
|
||||
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types";
|
||||
option (gogoproto.goproto_stringer_all) = false;
|
||||
option (gogoproto.stringer_all) = false;
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
|
||||
// VoteOption enumerates the valid vote options for a given governance proposal.
|
||||
enum VoteOption {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// VOTE_OPTION_UNSPECIFIED defines a no-op vote option.
|
||||
VOTE_OPTION_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "OptionEmpty"];
|
||||
// VOTE_OPTION_YES defines a yes vote option.
|
||||
VOTE_OPTION_YES = 1 [(gogoproto.enumvalue_customname) = "OptionYes"];
|
||||
// VOTE_OPTION_ABSTAIN defines an abstain vote option.
|
||||
VOTE_OPTION_ABSTAIN = 2 [(gogoproto.enumvalue_customname) = "OptionAbstain"];
|
||||
// VOTE_OPTION_NO defines a no vote option.
|
||||
VOTE_OPTION_NO = 3 [(gogoproto.enumvalue_customname) = "OptionNo"];
|
||||
// VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.
|
||||
VOTE_OPTION_NO_WITH_VETO = 4 [(gogoproto.enumvalue_customname) = "OptionNoWithVeto"];
|
||||
}
|
||||
|
||||
// TextProposal defines a standard text proposal whose changes need to be
|
||||
// manually updated in case of approval.
|
||||
message TextProposal {
|
||||
option (cosmos_proto.implements_interface) = "Content";
|
||||
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
}
|
||||
|
||||
// Deposit defines an amount deposited by an account address to an active
|
||||
// proposal.
|
||||
message Deposit {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
uint64 proposal_id = 1 [(gogoproto.moretags) = "yaml:\"proposal_id\""];
|
||||
string depositor = 2;
|
||||
repeated cosmos.base.v1beta1.Coin amount = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// Proposal defines the core field members of a governance proposal.
|
||||
message Proposal {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
uint64 proposal_id = 1 [(gogoproto.jsontag) = "id", (gogoproto.moretags) = "yaml:\"id\""];
|
||||
google.protobuf.Any content = 2 [(cosmos_proto.accepts_interface) = "Content"];
|
||||
ProposalStatus status = 3 [(gogoproto.moretags) = "yaml:\"proposal_status\""];
|
||||
TallyResult final_tally_result = 4
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"final_tally_result\""];
|
||||
google.protobuf.Timestamp submit_time = 5
|
||||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"submit_time\""];
|
||||
google.protobuf.Timestamp deposit_end_time = 6
|
||||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"deposit_end_time\""];
|
||||
repeated cosmos.base.v1beta1.Coin total_deposit = 7 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
|
||||
(gogoproto.moretags) = "yaml:\"total_deposit\""
|
||||
];
|
||||
google.protobuf.Timestamp voting_start_time = 8
|
||||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_start_time\""];
|
||||
google.protobuf.Timestamp voting_end_time = 9
|
||||
[(gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"voting_end_time\""];
|
||||
}
|
||||
|
||||
// ProposalStatus enumerates the valid statuses of a proposal.
|
||||
enum ProposalStatus {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// PROPOSAL_STATUS_UNSPECIFIED defines the default propopsal status.
|
||||
PROPOSAL_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "StatusNil"];
|
||||
// PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit
|
||||
// period.
|
||||
PROPOSAL_STATUS_DEPOSIT_PERIOD = 1 [(gogoproto.enumvalue_customname) = "StatusDepositPeriod"];
|
||||
// PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting
|
||||
// period.
|
||||
PROPOSAL_STATUS_VOTING_PERIOD = 2 [(gogoproto.enumvalue_customname) = "StatusVotingPeriod"];
|
||||
// PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has
|
||||
// passed.
|
||||
PROPOSAL_STATUS_PASSED = 3 [(gogoproto.enumvalue_customname) = "StatusPassed"];
|
||||
// PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has
|
||||
// been rejected.
|
||||
PROPOSAL_STATUS_REJECTED = 4 [(gogoproto.enumvalue_customname) = "StatusRejected"];
|
||||
// PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has
|
||||
// failed.
|
||||
PROPOSAL_STATUS_FAILED = 5 [(gogoproto.enumvalue_customname) = "StatusFailed"];
|
||||
}
|
||||
|
||||
// TallyResult defines a standard tally for a governance proposal.
|
||||
message TallyResult {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string yes = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||
string abstain = 2 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||
string no = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||
string no_with_veto = 4 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"no_with_veto\""
|
||||
];
|
||||
}
|
||||
|
||||
// Vote defines a vote on a governance proposal.
|
||||
// A Vote consists of a proposal ID, the voter, and the vote option.
|
||||
message Vote {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
uint64 proposal_id = 1 [(gogoproto.moretags) = "yaml:\"proposal_id\""];
|
||||
string voter = 2;
|
||||
VoteOption option = 3;
|
||||
}
|
||||
|
||||
// DepositParams defines the params for deposits on governance proposals.
|
||||
message DepositParams {
|
||||
// Minimum deposit for a proposal to enter voting period.
|
||||
repeated cosmos.base.v1beta1.Coin min_deposit = 1 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
|
||||
(gogoproto.moretags) = "yaml:\"min_deposit\"",
|
||||
(gogoproto.jsontag) = "min_deposit,omitempty"
|
||||
];
|
||||
|
||||
// Maximum period for Atom holders to deposit on a proposal. Initial value: 2
|
||||
// months.
|
||||
google.protobuf.Duration max_deposit_period = 2 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.stdduration) = true,
|
||||
(gogoproto.jsontag) = "max_deposit_period,omitempty",
|
||||
(gogoproto.moretags) = "yaml:\"max_deposit_period\""
|
||||
];
|
||||
}
|
||||
|
||||
// VotingParams defines the params for voting on governance proposals.
|
||||
message VotingParams {
|
||||
// Length of the voting period.
|
||||
google.protobuf.Duration voting_period = 1 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.stdduration) = true,
|
||||
(gogoproto.jsontag) = "voting_period,omitempty",
|
||||
(gogoproto.moretags) = "yaml:\"voting_period\""
|
||||
];
|
||||
}
|
||||
|
||||
// TallyParams defines the params for tallying votes on governance proposals.
|
||||
message TallyParams {
|
||||
// Minimum percentage of total stake needed to vote for a result to be
|
||||
// considered valid.
|
||||
bytes quorum = 1 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.jsontag) = "quorum,omitempty"
|
||||
];
|
||||
|
||||
// Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.
|
||||
bytes threshold = 2 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.jsontag) = "threshold,omitempty"
|
||||
];
|
||||
|
||||
// Minimum value of Veto votes to Total votes ratio for proposal to be
|
||||
// vetoed. Default value: 1/3.
|
||||
bytes veto_threshold = 3 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.jsontag) = "veto_threshold,omitempty",
|
||||
(gogoproto.moretags) = "yaml:\"veto_threshold\""
|
||||
];
|
||||
}
|
|
@ -0,0 +1,190 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.gov.v1beta1;
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/gov/v1beta1/gov.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types";
|
||||
|
||||
// Query defines the gRPC querier service for gov module
|
||||
service Query {
|
||||
// Proposal queries proposal details based on ProposalID.
|
||||
rpc Proposal(QueryProposalRequest) returns (QueryProposalResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}";
|
||||
}
|
||||
|
||||
// Proposals queries all proposals based on given status.
|
||||
rpc Proposals(QueryProposalsRequest) returns (QueryProposalsResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals";
|
||||
}
|
||||
|
||||
// Vote queries voted information based on proposalID, voterAddr.
|
||||
rpc Vote(QueryVoteRequest) returns (QueryVoteResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}";
|
||||
}
|
||||
|
||||
// Votes queries votes of a given proposal.
|
||||
rpc Votes(QueryVotesRequest) returns (QueryVotesResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/votes";
|
||||
}
|
||||
|
||||
// Params queries all parameters of the gov module.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/params/{params_type}";
|
||||
}
|
||||
|
||||
// Deposit queries single deposit information based proposalID, depositAddr.
|
||||
rpc Deposit(QueryDepositRequest) returns (QueryDepositResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}";
|
||||
}
|
||||
|
||||
// Deposits queries all deposits of a single proposal.
|
||||
rpc Deposits(QueryDepositsRequest) returns (QueryDepositsResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits";
|
||||
}
|
||||
|
||||
// TallyResult queries the tally of a proposal vote.
|
||||
rpc TallyResult(QueryTallyResultRequest) returns (QueryTallyResultResponse) {
|
||||
option (google.api.http).get = "/cosmos/gov/v1beta1/proposals/{proposal_id}/tally";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryProposalRequest is the request type for the Query/Proposal RPC method.
|
||||
message QueryProposalRequest {
|
||||
// proposal_id defines the unique id of the proposal.
|
||||
uint64 proposal_id = 1;
|
||||
}
|
||||
|
||||
// QueryProposalResponse is the response type for the Query/Proposal RPC method.
|
||||
message QueryProposalResponse {
|
||||
Proposal proposal = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryProposalsRequest is the request type for the Query/Proposals RPC method.
|
||||
message QueryProposalsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// proposal_status defines the status of the proposals.
|
||||
ProposalStatus proposal_status = 1;
|
||||
|
||||
// voter defines the voter address for the proposals.
|
||||
string voter = 2;
|
||||
|
||||
// depositor defines the deposit addresses from the proposals.
|
||||
string depositor = 3;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 4;
|
||||
}
|
||||
|
||||
// QueryProposalsResponse is the response type for the Query/Proposals RPC
|
||||
// method.
|
||||
message QueryProposalsResponse {
|
||||
repeated Proposal proposals = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryVoteRequest is the request type for the Query/Vote RPC method.
|
||||
message QueryVoteRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// proposal_id defines the unique id of the proposal.
|
||||
uint64 proposal_id = 1;
|
||||
|
||||
// voter defines the oter address for the proposals.
|
||||
string voter = 2;
|
||||
}
|
||||
|
||||
// QueryVoteResponse is the response type for the Query/Vote RPC method.
|
||||
message QueryVoteResponse {
|
||||
// vote defined the queried vote.
|
||||
Vote vote = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryVotesRequest is the request type for the Query/Votes RPC method.
|
||||
message QueryVotesRequest {
|
||||
// proposal_id defines the unique id of the proposal.
|
||||
uint64 proposal_id = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryVotesResponse is the response type for the Query/Votes RPC method.
|
||||
message QueryVotesResponse {
|
||||
// votes defined the queried votes.
|
||||
repeated Vote votes = 1 [(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 {
|
||||
// params_type defines which parameters to query for, can be one of "voting",
|
||||
// "tallying" or "deposit".
|
||||
string params_type = 1;
|
||||
}
|
||||
|
||||
// QueryParamsResponse is the response type for the Query/Params RPC method.
|
||||
message QueryParamsResponse {
|
||||
// voting_params defines the parameters related to voting.
|
||||
VotingParams voting_params = 1 [(gogoproto.nullable) = false];
|
||||
// deposit_params defines the parameters related to deposit.
|
||||
DepositParams deposit_params = 2 [(gogoproto.nullable) = false];
|
||||
// tally_params defines the parameters related to tally.
|
||||
TallyParams tally_params = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryDepositRequest is the request type for the Query/Deposit RPC method.
|
||||
message QueryDepositRequest {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
// proposal_id defines the unique id of the proposal.
|
||||
uint64 proposal_id = 1;
|
||||
|
||||
// depositor defines the deposit addresses from the proposals.
|
||||
string depositor = 2;
|
||||
}
|
||||
|
||||
// QueryDepositResponse is the response type for the Query/Deposit RPC method.
|
||||
message QueryDepositResponse {
|
||||
// deposit defines the requested deposit.
|
||||
Deposit deposit = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryDepositsRequest is the request type for the Query/Deposits RPC method.
|
||||
message QueryDepositsRequest {
|
||||
// proposal_id defines the unique id of the proposal.
|
||||
uint64 proposal_id = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDepositsResponse is the response type for the Query/Deposits RPC method.
|
||||
message QueryDepositsResponse {
|
||||
repeated Deposit deposits = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryTallyResultRequest is the request type for the Query/Tally RPC method.
|
||||
message QueryTallyResultRequest {
|
||||
// proposal_id defines the unique id of the proposal.
|
||||
uint64 proposal_id = 1;
|
||||
}
|
||||
|
||||
// QueryTallyResultResponse is the response type for the Query/Tally RPC method.
|
||||
message QueryTallyResultResponse {
|
||||
// tally defines the requested tally.
|
||||
TallyResult tally = 1 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,75 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.gov.v1beta1;
|
||||
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/gov/v1beta1/gov.proto";
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/gov/types";
|
||||
|
||||
// Msg defines the bank Msg service.
|
||||
service Msg {
|
||||
// SubmitProposal defines a method to create new proposal given a content.
|
||||
rpc SubmitProposal(MsgSubmitProposal) returns (MsgSubmitProposalResponse);
|
||||
|
||||
// Vote defines a method to add a vote on a specific proposal.
|
||||
rpc Vote(MsgVote) returns (MsgVoteResponse);
|
||||
|
||||
// Deposit defines a method to add deposit on a specific proposal.
|
||||
rpc Deposit(MsgDeposit) returns (MsgDepositResponse);
|
||||
}
|
||||
|
||||
// MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary
|
||||
// proposal Content.
|
||||
message MsgSubmitProposal {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.stringer) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
google.protobuf.Any content = 1 [(cosmos_proto.accepts_interface) = "Content"];
|
||||
repeated cosmos.base.v1beta1.Coin initial_deposit = 2 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
|
||||
(gogoproto.moretags) = "yaml:\"initial_deposit\""
|
||||
];
|
||||
string proposer = 3;
|
||||
}
|
||||
|
||||
// MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.
|
||||
message MsgSubmitProposalResponse {
|
||||
uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (gogoproto.moretags) = "yaml:\"proposal_id\""];
|
||||
}
|
||||
|
||||
// MsgVote defines a message to cast a vote.
|
||||
message MsgVote {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.stringer) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (gogoproto.moretags) = "yaml:\"proposal_id\""];
|
||||
string voter = 2;
|
||||
VoteOption option = 3;
|
||||
}
|
||||
|
||||
// MsgVoteResponse defines the Msg/Vote response type.
|
||||
message MsgVoteResponse {}
|
||||
|
||||
// MsgDeposit defines a message to submit a deposit to an existing proposal.
|
||||
message MsgDeposit {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.stringer) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
uint64 proposal_id = 1 [(gogoproto.jsontag) = "proposal_id", (gogoproto.moretags) = "yaml:\"proposal_id\""];
|
||||
string depositor = 2;
|
||||
repeated cosmos.base.v1beta1.Coin amount = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// MsgDepositResponse defines the Msg/Deposit response type.
|
||||
message MsgDepositResponse {}
|
|
@ -0,0 +1,16 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.mint.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/mint/v1beta1/mint.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types";
|
||||
|
||||
// GenesisState defines the mint module's genesis state.
|
||||
message GenesisState {
|
||||
// minter is a space for holding current inflation information.
|
||||
Minter minter = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// params defines all the paramaters of the module.
|
||||
Params params = 2 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.mint.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// Minter represents the minting state.
|
||||
message Minter {
|
||||
// current annual inflation rate
|
||||
string inflation = 1
|
||||
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
// current annual expected provisions
|
||||
string annual_provisions = 2 [
|
||||
(gogoproto.moretags) = "yaml:\"annual_provisions\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
}
|
||||
|
||||
// Params holds parameters for the mint module.
|
||||
message Params {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// type of coin to mint
|
||||
string mint_denom = 1;
|
||||
// maximum annual change in inflation rate
|
||||
string inflation_rate_change = 2 [
|
||||
(gogoproto.moretags) = "yaml:\"inflation_rate_change\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
// maximum inflation rate
|
||||
string inflation_max = 3 [
|
||||
(gogoproto.moretags) = "yaml:\"inflation_max\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
// minimum inflation rate
|
||||
string inflation_min = 4 [
|
||||
(gogoproto.moretags) = "yaml:\"inflation_min\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
// goal of percent bonded atoms
|
||||
string goal_bonded = 5 [
|
||||
(gogoproto.moretags) = "yaml:\"goal_bonded\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
// expected blocks per year
|
||||
uint64 blocks_per_year = 6 [(gogoproto.moretags) = "yaml:\"blocks_per_year\""];
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.mint.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/mint/v1beta1/mint.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/mint/types";
|
||||
|
||||
// Query provides defines the gRPC querier service.
|
||||
service Query {
|
||||
// Params returns the total set of minting parameters.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/mint/v1beta1/params";
|
||||
}
|
||||
|
||||
// Inflation returns the current minting inflation value.
|
||||
rpc Inflation(QueryInflationRequest) returns (QueryInflationResponse) {
|
||||
option (google.api.http).get = "/cosmos/mint/v1beta1/inflation";
|
||||
}
|
||||
|
||||
// AnnualProvisions current minting annual provisions value.
|
||||
rpc AnnualProvisions(QueryAnnualProvisionsRequest) returns (QueryAnnualProvisionsResponse) {
|
||||
option (google.api.http).get = "/cosmos/mint/v1beta1/annual_provisions";
|
||||
}
|
||||
}
|
||||
|
||||
// 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 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryInflationRequest is the request type for the Query/Inflation RPC method.
|
||||
message QueryInflationRequest {}
|
||||
|
||||
// QueryInflationResponse is the response type for the Query/Inflation RPC
|
||||
// method.
|
||||
message QueryInflationResponse {
|
||||
// inflation is the current minting inflation value.
|
||||
bytes inflation = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryAnnualProvisionsRequest is the request type for the
|
||||
// Query/AnnualProvisions RPC method.
|
||||
message QueryAnnualProvisionsRequest {}
|
||||
|
||||
// QueryAnnualProvisionsResponse is the response type for the
|
||||
// Query/AnnualProvisions RPC method.
|
||||
message QueryAnnualProvisionsResponse {
|
||||
// annual_provisions is the current minting annual provisions value.
|
||||
bytes annual_provisions = 1
|
||||
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.params.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/params/types/proposal";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// ParameterChangeProposal defines a proposal to change one or more parameters.
|
||||
message ParameterChangeProposal {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
repeated ParamChange changes = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// ParamChange defines an individual parameter change, for use in
|
||||
// ParameterChangeProposal.
|
||||
message ParamChange {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
string subspace = 1;
|
||||
string key = 2;
|
||||
string value = 3;
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.params.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/params/v1beta1/params.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/params/types/proposal";
|
||||
|
||||
// Query defines the gRPC querier service.
|
||||
service Query {
|
||||
// Params queries a specific parameter of a module, given its subspace and
|
||||
// key.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/params/v1beta1/params";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryParamsRequest is request type for the Query/Params RPC method.
|
||||
message QueryParamsRequest {
|
||||
// subspace defines the module to query the parameter for.
|
||||
string subspace = 1;
|
||||
|
||||
// key defines the key of the parameter in the subspace.
|
||||
string key = 2;
|
||||
}
|
||||
|
||||
// QueryParamsResponse is response type for the Query/Params RPC method.
|
||||
message QueryParamsResponse {
|
||||
// param defines the queried parameter.
|
||||
ParamChange param = 1 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.slashing.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/slashing/v1beta1/slashing.proto";
|
||||
|
||||
// GenesisState defines the slashing module's genesis state.
|
||||
message GenesisState {
|
||||
// params defines all the paramaters of related to deposit.
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// signing_infos represents a map between validator addresses and their
|
||||
// signing infos.
|
||||
repeated SigningInfo signing_infos = 2
|
||||
[(gogoproto.moretags) = "yaml:\"signing_infos\"", (gogoproto.nullable) = false];
|
||||
|
||||
// signing_infos represents a map between validator addresses and their
|
||||
// missed blocks.
|
||||
repeated ValidatorMissedBlocks missed_blocks = 3
|
||||
[(gogoproto.moretags) = "yaml:\"missed_blocks\"", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// SigningInfo stores validator signing info of corresponding address.
|
||||
message SigningInfo {
|
||||
// address is the validator address.
|
||||
string address = 1;
|
||||
// validator_signing_info represents the signing info of this validator.
|
||||
ValidatorSigningInfo validator_signing_info = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"validator_signing_info\""];
|
||||
}
|
||||
|
||||
// ValidatorMissedBlocks contains array of missed blocks of corresponding
|
||||
// address.
|
||||
message ValidatorMissedBlocks {
|
||||
// address is the validator address.
|
||||
string address = 1;
|
||||
// missed_blocks is an array of missed blocks by the validator.
|
||||
repeated MissedBlock missed_blocks = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"missed_blocks\""];
|
||||
}
|
||||
|
||||
// MissedBlock contains height and missed status as boolean.
|
||||
message MissedBlock {
|
||||
// index is the height at which the block was missed.
|
||||
int64 index = 1;
|
||||
// missed is the missed status.
|
||||
bool missed = 2;
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.slashing.v1beta1;
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/slashing/v1beta1/slashing.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types";
|
||||
|
||||
// Query provides defines the gRPC querier service
|
||||
service Query {
|
||||
// Params queries the parameters of slashing module
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/slashing/v1beta1/params";
|
||||
}
|
||||
|
||||
// SigningInfo queries the signing info of given cons address
|
||||
rpc SigningInfo(QuerySigningInfoRequest) returns (QuerySigningInfoResponse) {
|
||||
option (google.api.http).get = "/cosmos/slashing/v1beta1/signing_infos/{cons_address}";
|
||||
}
|
||||
|
||||
// SigningInfos queries signing info of all validators
|
||||
rpc SigningInfos(QuerySigningInfosRequest) returns (QuerySigningInfosResponse) {
|
||||
option (google.api.http).get = "/cosmos/slashing/v1beta1/signing_infos";
|
||||
}
|
||||
}
|
||||
|
||||
// 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 params = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QuerySigningInfoRequest is the request type for the Query/SigningInfo RPC
|
||||
// method
|
||||
message QuerySigningInfoRequest {
|
||||
// cons_address is the address to query signing info of
|
||||
string cons_address = 1;
|
||||
}
|
||||
|
||||
// QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC
|
||||
// method
|
||||
message QuerySigningInfoResponse {
|
||||
// val_signing_info is the signing info of requested val cons address
|
||||
ValidatorSigningInfo val_signing_info = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QuerySigningInfosRequest is the request type for the Query/SigningInfos RPC
|
||||
// method
|
||||
message QuerySigningInfosRequest {
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 1;
|
||||
}
|
||||
|
||||
// QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC
|
||||
// method
|
||||
message QuerySigningInfosResponse {
|
||||
// info is the signing info of all validators
|
||||
repeated cosmos.slashing.v1beta1.ValidatorSigningInfo info = 1 [(gogoproto.nullable) = false];
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.slashing.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
// ValidatorSigningInfo defines a validator's signing info for monitoring their
|
||||
// liveness activity.
|
||||
message ValidatorSigningInfo {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
string address = 1;
|
||||
// height at which validator was first a candidate OR was unjailed
|
||||
int64 start_height = 2 [(gogoproto.moretags) = "yaml:\"start_height\""];
|
||||
// index offset into signed block bit array
|
||||
int64 index_offset = 3 [(gogoproto.moretags) = "yaml:\"index_offset\""];
|
||||
// timestamp validator cannot be unjailed until
|
||||
google.protobuf.Timestamp jailed_until = 4
|
||||
[(gogoproto.moretags) = "yaml:\"jailed_until\"", (gogoproto.stdtime) = true, (gogoproto.nullable) = false];
|
||||
// whether or not a validator has been tombstoned (killed out of validator
|
||||
// set)
|
||||
bool tombstoned = 5;
|
||||
// missed blocks counter (to avoid scanning the array every time)
|
||||
int64 missed_blocks_counter = 6 [(gogoproto.moretags) = "yaml:\"missed_blocks_counter\""];
|
||||
}
|
||||
|
||||
// Params represents the parameters used for by the slashing module.
|
||||
message Params {
|
||||
int64 signed_blocks_window = 1 [(gogoproto.moretags) = "yaml:\"signed_blocks_window\""];
|
||||
bytes min_signed_per_window = 2 [
|
||||
(gogoproto.moretags) = "yaml:\"min_signed_per_window\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
google.protobuf.Duration downtime_jail_duration = 3 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.stdduration) = true,
|
||||
(gogoproto.moretags) = "yaml:\"downtime_jail_duration\""
|
||||
];
|
||||
bytes slash_fraction_double_sign = 4 [
|
||||
(gogoproto.moretags) = "yaml:\"slash_fraction_double_sign\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
bytes slash_fraction_downtime = 5 [
|
||||
(gogoproto.moretags) = "yaml:\"slash_fraction_downtime\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.slashing.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/slashing/types";
|
||||
option (gogoproto.equal_all) = true;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
// Msg defines the slashing Msg service.
|
||||
service Msg {
|
||||
// Unjail defines a method for unjailing a jailed validator, thus returning
|
||||
// them into the bonded validator set, so they can begin receiving provisions
|
||||
// and rewards again.
|
||||
rpc Unjail(MsgUnjail) returns (MsgUnjailResponse);
|
||||
}
|
||||
|
||||
// MsgUnjail defines the Msg/Unjail request type
|
||||
message MsgUnjail {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = true;
|
||||
|
||||
string validator_addr = 1 [(gogoproto.moretags) = "yaml:\"address\"", (gogoproto.jsontag) = "address"];
|
||||
}
|
||||
|
||||
// MsgUnjailResponse defines the Msg/Unjail response type
|
||||
message MsgUnjailResponse {}
|
|
@ -0,0 +1,53 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.staking.v1beta1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/staking/v1beta1/staking.proto";
|
||||
|
||||
// GenesisState defines the staking module's genesis state.
|
||||
message GenesisState {
|
||||
// params defines all the paramaters of related to deposit.
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// last_total_power tracks the total amounts of bonded tokens recorded during
|
||||
// the previous end block.
|
||||
bytes last_total_power = 2 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.moretags) = "yaml:\"last_total_power\"",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
|
||||
// last_validator_powers is a special index that provides a historical list
|
||||
// of the last-block's bonded validators.
|
||||
repeated LastValidatorPower last_validator_powers = 3
|
||||
[(gogoproto.moretags) = "yaml:\"last_validator_powers\"", (gogoproto.nullable) = false];
|
||||
|
||||
// delegations defines the validator set at genesis.
|
||||
repeated Validator validators = 4 [(gogoproto.nullable) = false];
|
||||
|
||||
// delegations defines the delegations active at genesis.
|
||||
repeated Delegation delegations = 5 [(gogoproto.nullable) = false];
|
||||
|
||||
// unbonding_delegations defines the unbonding delegations active at genesis.
|
||||
repeated UnbondingDelegation unbonding_delegations = 6
|
||||
[(gogoproto.moretags) = "yaml:\"unbonding_delegations\"", (gogoproto.nullable) = false];
|
||||
|
||||
// redelegations defines the redelegations active at genesis.
|
||||
repeated Redelegation redelegations = 7 [(gogoproto.nullable) = false];
|
||||
|
||||
bool exported = 8;
|
||||
}
|
||||
|
||||
// LastValidatorPower required for validator set update logic.
|
||||
message LastValidatorPower {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// address is the address of the validator.
|
||||
string address = 1;
|
||||
|
||||
// power defines the power of the validator.
|
||||
int64 power = 2;
|
||||
}
|
|
@ -0,0 +1,348 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.staking.v1beta1;
|
||||
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/staking/v1beta1/staking.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types";
|
||||
|
||||
// Query defines the gRPC querier service.
|
||||
service Query {
|
||||
// Validators queries all validators that match the given status.
|
||||
rpc Validators(QueryValidatorsRequest) returns (QueryValidatorsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/validators";
|
||||
}
|
||||
|
||||
// Validator queries validator info for given validator address.
|
||||
rpc Validator(QueryValidatorRequest) returns (QueryValidatorResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}";
|
||||
}
|
||||
|
||||
// ValidatorDelegations queries delegate info for given validator.
|
||||
rpc ValidatorDelegations(QueryValidatorDelegationsRequest) returns (QueryValidatorDelegationsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations";
|
||||
}
|
||||
|
||||
// ValidatorUnbondingDelegations queries unbonding delegations of a validator.
|
||||
rpc ValidatorUnbondingDelegations(QueryValidatorUnbondingDelegationsRequest)
|
||||
returns (QueryValidatorUnbondingDelegationsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/validators/"
|
||||
"{validator_addr}/unbonding_delegations";
|
||||
}
|
||||
|
||||
// Delegation queries delegate info for given validator delegator pair.
|
||||
rpc Delegation(QueryDelegationRequest) returns (QueryDelegationResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/"
|
||||
"{delegator_addr}";
|
||||
}
|
||||
|
||||
// UnbondingDelegation queries unbonding info for given validator delegator
|
||||
// pair.
|
||||
rpc UnbondingDelegation(QueryUnbondingDelegationRequest) returns (QueryUnbondingDelegationResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/"
|
||||
"{delegator_addr}/unbonding_delegation";
|
||||
}
|
||||
|
||||
// DelegatorDelegations queries all delegations of a given delegator address.
|
||||
rpc DelegatorDelegations(QueryDelegatorDelegationsRequest) returns (QueryDelegatorDelegationsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/delegations/{delegator_addr}";
|
||||
}
|
||||
|
||||
// DelegatorUnbondingDelegations queries all unbonding delegations of a given
|
||||
// delegator address.
|
||||
rpc DelegatorUnbondingDelegations(QueryDelegatorUnbondingDelegationsRequest)
|
||||
returns (QueryDelegatorUnbondingDelegationsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/"
|
||||
"{delegator_addr}/unbonding_delegations";
|
||||
}
|
||||
|
||||
// Redelegations queries redelegations of given address.
|
||||
rpc Redelegations(QueryRedelegationsRequest) returns (QueryRedelegationsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations";
|
||||
}
|
||||
|
||||
// DelegatorValidators queries all validators info for given delegator
|
||||
// address.
|
||||
rpc DelegatorValidators(QueryDelegatorValidatorsRequest) returns (QueryDelegatorValidatorsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators";
|
||||
}
|
||||
|
||||
// DelegatorValidator queries validator info for given delegator validator
|
||||
// pair.
|
||||
rpc DelegatorValidator(QueryDelegatorValidatorRequest) returns (QueryDelegatorValidatorResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/"
|
||||
"{validator_addr}";
|
||||
}
|
||||
|
||||
// HistoricalInfo queries the historical info for given height.
|
||||
rpc HistoricalInfo(QueryHistoricalInfoRequest) returns (QueryHistoricalInfoResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/historical_info/{height}";
|
||||
}
|
||||
|
||||
// Pool queries the pool info.
|
||||
rpc Pool(QueryPoolRequest) returns (QueryPoolResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/pool";
|
||||
}
|
||||
|
||||
// Parameters queries the staking parameters.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/cosmos/staking/v1beta1/params";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryValidatorsRequest is request type for Query/Validators RPC method.
|
||||
message QueryValidatorsRequest {
|
||||
// status enables to query for validators matching a given status.
|
||||
string status = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryValidatorsResponse is response type for the Query/Validators RPC method
|
||||
message QueryValidatorsResponse {
|
||||
// validators contains all the queried validators.
|
||||
repeated Validator validators = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryValidatorRequest is response type for the Query/Validator RPC method
|
||||
message QueryValidatorRequest {
|
||||
// validator_addr defines the validator address to query for.
|
||||
string validator_addr = 1;
|
||||
}
|
||||
|
||||
// QueryValidatorResponse is response type for the Query/Validator RPC method
|
||||
message QueryValidatorResponse {
|
||||
// validator defines the the validator info.
|
||||
Validator validator = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryValidatorDelegationsRequest is request type for the
|
||||
// Query/ValidatorDelegations RPC method
|
||||
message QueryValidatorDelegationsRequest {
|
||||
// validator_addr defines the validator address to query for.
|
||||
string validator_addr = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryValidatorDelegationsResponse is response type for the
|
||||
// Query/ValidatorDelegations RPC method
|
||||
message QueryValidatorDelegationsResponse {
|
||||
repeated DelegationResponse delegation_responses = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "DelegationResponses"];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryValidatorUnbondingDelegationsRequest is required type for the
|
||||
// Query/ValidatorUnbondingDelegations RPC method
|
||||
message QueryValidatorUnbondingDelegationsRequest {
|
||||
// validator_addr defines the validator address to query for.
|
||||
string validator_addr = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryValidatorUnbondingDelegationsResponse is response type for the
|
||||
// Query/ValidatorUnbondingDelegations RPC method.
|
||||
message QueryValidatorUnbondingDelegationsResponse {
|
||||
repeated UnbondingDelegation unbonding_responses = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegationRequest is request type for the Query/Delegation RPC method.
|
||||
message QueryDelegationRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// validator_addr defines the validator address to query for.
|
||||
string validator_addr = 2;
|
||||
}
|
||||
|
||||
// QueryDelegationResponse is response type for the Query/Delegation RPC method.
|
||||
message QueryDelegationResponse {
|
||||
// delegation_responses defines the delegation info of a delegation.
|
||||
DelegationResponse delegation_response = 1;
|
||||
}
|
||||
|
||||
// QueryUnbondingDelegationRequest is request type for the
|
||||
// Query/UnbondingDelegation RPC method.
|
||||
message QueryUnbondingDelegationRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// validator_addr defines the validator address to query for.
|
||||
string validator_addr = 2;
|
||||
}
|
||||
|
||||
// QueryDelegationResponse is response type for the Query/UnbondingDelegation
|
||||
// RPC method.
|
||||
message QueryUnbondingDelegationResponse {
|
||||
// unbond defines the unbonding information of a delegation.
|
||||
UnbondingDelegation unbond = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryDelegatorDelegationsRequest is request type for the
|
||||
// Query/DelegatorDelegations RPC method.
|
||||
message QueryDelegatorDelegationsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegatorDelegationsResponse is response type for the
|
||||
// Query/DelegatorDelegations RPC method.
|
||||
message QueryDelegatorDelegationsResponse {
|
||||
// delegation_responses defines all the delegations' info of a delegator.
|
||||
repeated DelegationResponse delegation_responses = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegatorUnbondingDelegationsRequest is request type for the
|
||||
// Query/DelegatorUnbondingDelegations RPC method.
|
||||
message QueryDelegatorUnbondingDelegationsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryUnbondingDelegatorDelegationsResponse is response type for the
|
||||
// Query/UnbondingDelegatorDelegations RPC method.
|
||||
message QueryDelegatorUnbondingDelegationsResponse {
|
||||
repeated UnbondingDelegation unbonding_responses = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryRedelegationsRequest is request type for the Query/Redelegations RPC
|
||||
// method.
|
||||
message QueryRedelegationsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// src_validator_addr defines the validator address to redelegate from.
|
||||
string src_validator_addr = 2;
|
||||
|
||||
// dst_validator_addr defines the validator address to redelegate to.
|
||||
string dst_validator_addr = 3;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 4;
|
||||
}
|
||||
|
||||
// QueryRedelegationsResponse is response type for the Query/Redelegations RPC
|
||||
// method.
|
||||
message QueryRedelegationsResponse {
|
||||
repeated RedelegationResponse redelegation_responses = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegatorValidatorsRequest is request type for the
|
||||
// Query/DelegatorValidators RPC method.
|
||||
message QueryDelegatorValidatorsRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// pagination defines an optional pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegatorValidatorsResponse is response type for the
|
||||
// Query/DelegatorValidators RPC method.
|
||||
message QueryDelegatorValidatorsResponse {
|
||||
// validators defines the the validators' info of a delegator.
|
||||
repeated Validator validators = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
// pagination defines the pagination in the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 2;
|
||||
}
|
||||
|
||||
// QueryDelegatorValidatorRequest is request type for the
|
||||
// Query/DelegatorValidator RPC method.
|
||||
message QueryDelegatorValidatorRequest {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// delegator_addr defines the delegator address to query for.
|
||||
string delegator_addr = 1;
|
||||
|
||||
// validator_addr defines the validator address to query for.
|
||||
string validator_addr = 2;
|
||||
}
|
||||
|
||||
// QueryDelegatorValidatorResponse response type for the
|
||||
// Query/DelegatorValidator RPC method.
|
||||
message QueryDelegatorValidatorResponse {
|
||||
// validator defines the the validator info.
|
||||
Validator validator = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryHistoricalInfoRequest is request type for the Query/HistoricalInfo RPC
|
||||
// method.
|
||||
message QueryHistoricalInfoRequest {
|
||||
// height defines at which height to query the historical info.
|
||||
int64 height = 1;
|
||||
}
|
||||
|
||||
// QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC
|
||||
// method.
|
||||
message QueryHistoricalInfoResponse {
|
||||
// hist defines the historical info at the given height.
|
||||
HistoricalInfo hist = 1;
|
||||
}
|
||||
|
||||
// QueryPoolRequest is request type for the Query/Pool RPC method.
|
||||
message QueryPoolRequest {}
|
||||
|
||||
// QueryPoolResponse is response type for the Query/Pool RPC method.
|
||||
message QueryPoolResponse {
|
||||
// pool defines the pool info.
|
||||
Pool pool = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// QueryParamsRequest is request type for the Query/Params RPC method.
|
||||
message QueryParamsRequest {}
|
||||
|
||||
// QueryParamsResponse is response type for the Query/Params RPC method.
|
||||
message QueryParamsResponse {
|
||||
// params holds all the parameters of this module.
|
||||
Params params = 1 [(gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,334 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.staking.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "tendermint/types/types.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types";
|
||||
|
||||
// HistoricalInfo contains header and validator information for a given block.
|
||||
// It is stored as part of staking module's state, which persists the `n` most
|
||||
// recent HistoricalInfo
|
||||
// (`n` is set by the staking module's `historical_entries` parameter).
|
||||
message HistoricalInfo {
|
||||
tendermint.types.Header header = 1 [(gogoproto.nullable) = false];
|
||||
repeated Validator valset = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// CommissionRates defines the initial commission rates to be used for creating
|
||||
// a validator.
|
||||
message CommissionRates {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// rate is the commission rate charged to delegators, as a fraction.
|
||||
string rate = 1 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
// max_rate defines the maximum commission rate which validator can ever charge, as a fraction.
|
||||
string max_rate = 2 [
|
||||
(gogoproto.moretags) = "yaml:\"max_rate\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
// max_change_rate defines the maximum daily increase of the validator commission, as a fraction.
|
||||
string max_change_rate = 3 [
|
||||
(gogoproto.moretags) = "yaml:\"max_change_rate\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
}
|
||||
|
||||
// Commission defines commission parameters for a given validator.
|
||||
message Commission {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// commission_rates defines the initial commission rates to be used for creating a validator.
|
||||
CommissionRates commission_rates = 1 [(gogoproto.embed) = true, (gogoproto.nullable) = false];
|
||||
// update_time is the last time the commission rate was changed.
|
||||
google.protobuf.Timestamp update_time = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"update_time\""];
|
||||
}
|
||||
|
||||
// Description defines a validator description.
|
||||
message Description {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// moniker defines a human-readable name for the validator.
|
||||
string moniker = 1;
|
||||
// identity defines an optional identity signature (ex. UPort or Keybase).
|
||||
string identity = 2;
|
||||
// website defines an optional website link.
|
||||
string website = 3;
|
||||
// security_contact defines an optional email for security contact.
|
||||
string security_contact = 4 [(gogoproto.moretags) = "yaml:\"security_contact\""];
|
||||
// details define other optional details.
|
||||
string details = 5;
|
||||
}
|
||||
|
||||
// Validator defines a validator, together with the total amount of the
|
||||
// Validator's bond shares and their exchange rate to coins. Slashing results in
|
||||
// a decrease in the exchange rate, allowing correct calculation of future
|
||||
// undelegations without iterating over delegators. When coins are delegated to
|
||||
// this validator, the validator is credited with a delegation whose number of
|
||||
// bond shares is based on the amount of coins delegated divided by the current
|
||||
// exchange rate. Voting power can be calculated as total bonded shares
|
||||
// multiplied by exchange rate.
|
||||
message Validator {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
// operator_address defines the address of the validator's operator; bech encoded in JSON.
|
||||
string operator_address = 1 [(gogoproto.moretags) = "yaml:\"operator_address\""];
|
||||
// consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.
|
||||
google.protobuf.Any consensus_pubkey = 2
|
||||
[(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey", (gogoproto.moretags) = "yaml:\"consensus_pubkey\""];
|
||||
// jailed defined whether the validator has been jailed from bonded status or not.
|
||||
bool jailed = 3;
|
||||
// status is the validator status (bonded/unbonding/unbonded).
|
||||
BondStatus status = 4;
|
||||
// tokens define the delegated tokens (incl. self-delegation).
|
||||
string tokens = 5 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||
// delegator_shares defines total shares issued to a validator's delegators.
|
||||
string delegator_shares = 6 [
|
||||
(gogoproto.moretags) = "yaml:\"delegator_shares\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
// description defines the description terms for the validator.
|
||||
Description description = 7 [(gogoproto.nullable) = false];
|
||||
// unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.
|
||||
int64 unbonding_height = 8 [(gogoproto.moretags) = "yaml:\"unbonding_height\""];
|
||||
// unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.
|
||||
google.protobuf.Timestamp unbonding_time = 9
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"unbonding_time\""];
|
||||
// commission defines the commission parameters.
|
||||
Commission commission = 10 [(gogoproto.nullable) = false];
|
||||
// min_self_delegation is the validator's self declared minimum self delegation.
|
||||
string min_self_delegation = 11 [
|
||||
(gogoproto.moretags) = "yaml:\"min_self_delegation\"",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
}
|
||||
|
||||
// BondStatus is the status of a validator.
|
||||
enum BondStatus {
|
||||
option (gogoproto.goproto_enum_prefix) = false;
|
||||
|
||||
// UNSPECIFIED defines an invalid validator status.
|
||||
BOND_STATUS_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "Unspecified"];
|
||||
// UNBONDED defines a validator that is not bonded.
|
||||
BOND_STATUS_UNBONDED = 1 [(gogoproto.enumvalue_customname) = "Unbonded"];
|
||||
// UNBONDING defines a validator that is unbonding.
|
||||
BOND_STATUS_UNBONDING = 2 [(gogoproto.enumvalue_customname) = "Unbonding"];
|
||||
// BONDED defines a validator that is bonded.
|
||||
BOND_STATUS_BONDED = 3 [(gogoproto.enumvalue_customname) = "Bonded"];
|
||||
}
|
||||
|
||||
// ValAddresses defines a repeated set of validator addresses.
|
||||
message ValAddresses {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
option (gogoproto.stringer) = true;
|
||||
|
||||
repeated string addresses = 1;
|
||||
}
|
||||
|
||||
// DVPair is struct that just has a delegator-validator pair with no other data.
|
||||
// It is intended to be used as a marshalable pointer. For example, a DVPair can
|
||||
// be used to construct the key to getting an UnbondingDelegation from state.
|
||||
message DVPair {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
}
|
||||
|
||||
// DVPairs defines an array of DVPair objects.
|
||||
message DVPairs {
|
||||
repeated DVPair pairs = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// DVVTriplet is struct that just has a delegator-validator-validator triplet
|
||||
// with no other data. It is intended to be used as a marshalable pointer. For
|
||||
// example, a DVVTriplet can be used to construct the key to getting a
|
||||
// Redelegation from state.
|
||||
message DVVTriplet {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_src_address = 2 [(gogoproto.moretags) = "yaml:\"validator_src_address\""];
|
||||
string validator_dst_address = 3 [(gogoproto.moretags) = "yaml:\"validator_dst_address\""];
|
||||
}
|
||||
|
||||
// DVVTriplets defines an array of DVVTriplet objects.
|
||||
message DVVTriplets {
|
||||
repeated DVVTriplet triplets = 1 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Delegation represents the bond with tokens held by an account. It is
|
||||
// owned by one delegator, and is associated with the voting power of one
|
||||
// validator.
|
||||
message Delegation {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// delegator_address is the bech32-encoded address of the delegator.
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
// validator_address is the bech32-encoded address of the validator.
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
// shares define the delegation shares received.
|
||||
string shares = 3 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// UnbondingDelegation stores all of a single delegator's unbonding bonds
|
||||
// for a single validator in an time-ordered list.
|
||||
message UnbondingDelegation {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// delegator_address is the bech32-encoded address of the delegator.
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
// validator_address is the bech32-encoded address of the validator.
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
// entries are the unbonding delegation entries.
|
||||
repeated UnbondingDelegationEntry entries = 3 [(gogoproto.nullable) = false]; // unbonding delegation entries
|
||||
}
|
||||
|
||||
// UnbondingDelegationEntry defines an unbonding object with relevant metadata.
|
||||
message UnbondingDelegationEntry {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// creation_height is the height which the unbonding took place.
|
||||
int64 creation_height = 1 [(gogoproto.moretags) = "yaml:\"creation_height\""];
|
||||
// completion_time is the unix time for unbonding completion.
|
||||
google.protobuf.Timestamp completion_time = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""];
|
||||
// initial_balance defines the tokens initially scheduled to receive at completion.
|
||||
string initial_balance = 3 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"initial_balance\""
|
||||
];
|
||||
// balance defines the tokens to receive at completion.
|
||||
string balance = 4 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// RedelegationEntry defines a redelegation object with relevant metadata.
|
||||
message RedelegationEntry {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// creation_height defines the height which the redelegation took place.
|
||||
int64 creation_height = 1 [(gogoproto.moretags) = "yaml:\"creation_height\""];
|
||||
// completion_time defines the unix time for redelegation completion.
|
||||
google.protobuf.Timestamp completion_time = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdtime) = true, (gogoproto.moretags) = "yaml:\"completion_time\""];
|
||||
// initial_balance defines the initial balance when redelegation started.
|
||||
string initial_balance = 3 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"initial_balance\""
|
||||
];
|
||||
// shares_dst is the amount of destination-validator shares created by redelegation.
|
||||
string shares_dst = 4
|
||||
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Redelegation contains the list of a particular delegator's redelegating bonds
|
||||
// from a particular source validator to a particular destination validator.
|
||||
message Redelegation {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// delegator_address is the bech32-encoded address of the delegator.
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
// validator_src_address is the validator redelegation source operator address.
|
||||
string validator_src_address = 2 [(gogoproto.moretags) = "yaml:\"validator_src_address\""];
|
||||
// validator_dst_address is the validator redelegation destination operator address.
|
||||
string validator_dst_address = 3 [(gogoproto.moretags) = "yaml:\"validator_dst_address\""];
|
||||
// entries are the redelegation entries.
|
||||
repeated RedelegationEntry entries = 4 [(gogoproto.nullable) = false]; // redelegation entries
|
||||
}
|
||||
|
||||
// Params defines the parameters for the staking module.
|
||||
message Params {
|
||||
option (gogoproto.equal) = true;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
// unbonding_time is the time duration of unbonding.
|
||||
google.protobuf.Duration unbonding_time = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.moretags) = "yaml:\"unbonding_time\""];
|
||||
// max_validators is the maximum number of validators.
|
||||
uint32 max_validators = 2 [(gogoproto.moretags) = "yaml:\"max_validators\""];
|
||||
// max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).
|
||||
uint32 max_entries = 3 [(gogoproto.moretags) = "yaml:\"max_entries\""];
|
||||
// historical_entries is the number of historical entries to persist.
|
||||
uint32 historical_entries = 4 [(gogoproto.moretags) = "yaml:\"historical_entries\""];
|
||||
// bond_denom defines the bondable coin denomination.
|
||||
string bond_denom = 5 [(gogoproto.moretags) = "yaml:\"bond_denom\""];
|
||||
}
|
||||
|
||||
// DelegationResponse is equivalent to Delegation except that it contains a
|
||||
// balance in addition to shares which is more suitable for client responses.
|
||||
message DelegationResponse {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
Delegation delegation = 1 [(gogoproto.nullable) = false];
|
||||
|
||||
cosmos.base.v1beta1.Coin balance = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// RedelegationEntryResponse is equivalent to a RedelegationEntry except that it
|
||||
// contains a balance in addition to shares which is more suitable for client
|
||||
// responses.
|
||||
message RedelegationEntryResponse {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
RedelegationEntry redelegation_entry = 1 [(gogoproto.nullable) = false];
|
||||
string balance = 4 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// RedelegationResponse is equivalent to a Redelegation except that its entries
|
||||
// contain a balance in addition to shares which is more suitable for client
|
||||
// responses.
|
||||
message RedelegationResponse {
|
||||
option (gogoproto.equal) = false;
|
||||
|
||||
Redelegation redelegation = 1 [(gogoproto.nullable) = false];
|
||||
repeated RedelegationEntryResponse entries = 2 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// Pool is used for tracking bonded and not-bonded token supply of the bond
|
||||
// denomination.
|
||||
message Pool {
|
||||
option (gogoproto.description) = true;
|
||||
option (gogoproto.equal) = true;
|
||||
string not_bonded_tokens = 1 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.jsontag) = "not_bonded_tokens",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
string bonded_tokens = 2 [
|
||||
(gogoproto.jsontag) = "bonded_tokens",
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.moretags) = "yaml:\"bonded_tokens\""
|
||||
];
|
||||
}
|
|
@ -0,0 +1,126 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.staking.v1beta1;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
import "cosmos_proto/cosmos.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/staking/v1beta1/staking.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types";
|
||||
|
||||
// Msg defines the staking Msg service.
|
||||
service Msg {
|
||||
// CreateValidator defines a method for creating a new validator.
|
||||
rpc CreateValidator(MsgCreateValidator) returns (MsgCreateValidatorResponse);
|
||||
|
||||
// EditValidator defines a method for editing an existing validator.
|
||||
rpc EditValidator(MsgEditValidator) returns (MsgEditValidatorResponse);
|
||||
|
||||
// Delegate defines a method for performing a delegation of coins
|
||||
// from a delegator to a validator.
|
||||
rpc Delegate(MsgDelegate) returns (MsgDelegateResponse);
|
||||
|
||||
// BeginRedelegate defines a method for performing a redelegation
|
||||
// of coins from a delegator and source validator to a destination validator.
|
||||
rpc BeginRedelegate(MsgBeginRedelegate) returns (MsgBeginRedelegateResponse);
|
||||
|
||||
// Undelegate defines a method for performing an undelegation from a
|
||||
// delegate and a validator.
|
||||
rpc Undelegate(MsgUndelegate) returns (MsgUndelegateResponse);
|
||||
}
|
||||
|
||||
// MsgCreateValidator defines a SDK message for creating a new validator.
|
||||
message MsgCreateValidator {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
Description description = 1 [(gogoproto.nullable) = false];
|
||||
CommissionRates commission = 2 [(gogoproto.nullable) = false];
|
||||
string min_self_delegation = 3 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.moretags) = "yaml:\"min_self_delegation\"",
|
||||
(gogoproto.nullable) = false
|
||||
];
|
||||
string delegator_address = 4 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_address = 5 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
google.protobuf.Any pubkey = 6 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"];
|
||||
cosmos.base.v1beta1.Coin value = 7 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// MsgCreateValidatorResponse defines the Msg/CreateValidator response type.
|
||||
message MsgCreateValidatorResponse {}
|
||||
|
||||
// MsgEditValidator defines a SDK message for editing an existing validator.
|
||||
message MsgEditValidator {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
Description description = 1 [(gogoproto.nullable) = false];
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"address\""];
|
||||
|
||||
// We pass a reference to the new commission rate and min self delegation as
|
||||
// it's not mandatory to update. If not updated, the deserialized rate will be
|
||||
// zero with no way to distinguish if an update was intended.
|
||||
// REF: #2373
|
||||
string commission_rate = 3 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec",
|
||||
(gogoproto.moretags) = "yaml:\"commission_rate\""
|
||||
];
|
||||
string min_self_delegation = 4 [
|
||||
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
|
||||
(gogoproto.moretags) = "yaml:\"min_self_delegation\""
|
||||
];
|
||||
}
|
||||
|
||||
// MsgEditValidatorResponse defines the Msg/EditValidator response type.
|
||||
message MsgEditValidatorResponse {}
|
||||
|
||||
// MsgDelegate defines a SDK message for performing a delegation of coins
|
||||
// from a delegator to a validator.
|
||||
message MsgDelegate {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// MsgDelegateResponse defines the Msg/Delegate response type.
|
||||
message MsgDelegateResponse {}
|
||||
|
||||
// MsgBeginRedelegate defines a SDK message for performing a redelegation
|
||||
// of coins from a delegator and source validator to a destination validator.
|
||||
message MsgBeginRedelegate {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_src_address = 2 [(gogoproto.moretags) = "yaml:\"validator_src_address\""];
|
||||
string validator_dst_address = 3 [(gogoproto.moretags) = "yaml:\"validator_dst_address\""];
|
||||
cosmos.base.v1beta1.Coin amount = 4 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.
|
||||
message MsgBeginRedelegateResponse {
|
||||
google.protobuf.Timestamp completion_time = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
||||
}
|
||||
|
||||
// MsgUndelegate defines a SDK message for performing an undelegation from a
|
||||
// delegate and a validator.
|
||||
message MsgUndelegate {
|
||||
option (gogoproto.equal) = false;
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
string delegator_address = 1 [(gogoproto.moretags) = "yaml:\"delegator_address\""];
|
||||
string validator_address = 2 [(gogoproto.moretags) = "yaml:\"validator_address\""];
|
||||
cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// MsgUndelegateResponse defines the Msg/Undelegate response type.
|
||||
message MsgUndelegateResponse {
|
||||
google.protobuf.Timestamp completion_time = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
||||
}
|
|
@ -0,0 +1,79 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.tx.signing.v1beta1;
|
||||
|
||||
import "cosmos/crypto/multisig/v1beta1/multisig.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types/tx/signing";
|
||||
|
||||
// SignMode represents a signing mode with its own security guarantees.
|
||||
enum SignMode {
|
||||
// SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be
|
||||
// rejected
|
||||
SIGN_MODE_UNSPECIFIED = 0;
|
||||
|
||||
// SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is
|
||||
// verified with raw bytes from Tx
|
||||
SIGN_MODE_DIRECT = 1;
|
||||
|
||||
// SIGN_MODE_TEXTUAL is a future signing mode that will verify some
|
||||
// human-readable textual representation on top of the binary representation
|
||||
// from SIGN_MODE_DIRECT
|
||||
SIGN_MODE_TEXTUAL = 2;
|
||||
|
||||
// SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses
|
||||
// Amino JSON and will be removed in the future
|
||||
SIGN_MODE_LEGACY_AMINO_JSON = 127;
|
||||
}
|
||||
|
||||
// SignatureDescriptors wraps multiple SignatureDescriptor's.
|
||||
message SignatureDescriptors {
|
||||
// signatures are the signature descriptors
|
||||
repeated SignatureDescriptor signatures = 1;
|
||||
}
|
||||
|
||||
// SignatureDescriptor is a convenience type which represents the full data for
|
||||
// a signature including the public key of the signer, signing modes and the
|
||||
// signature itself. It is primarily used for coordinating signatures between
|
||||
// clients.
|
||||
message SignatureDescriptor {
|
||||
// public_key is the public key of the signer
|
||||
google.protobuf.Any public_key = 1;
|
||||
|
||||
Data data = 2;
|
||||
|
||||
// sequence is the sequence of the account, which describes the
|
||||
// number of committed transactions signed by a given address. It is used to prevent
|
||||
// replay attacks.
|
||||
uint64 sequence = 3;
|
||||
|
||||
// Data represents signature data
|
||||
message Data {
|
||||
// sum is the oneof that specifies whether this represents single or multi-signature data
|
||||
oneof sum {
|
||||
// single represents a single signer
|
||||
Single single = 1;
|
||||
|
||||
// multi represents a multisig signer
|
||||
Multi multi = 2;
|
||||
}
|
||||
|
||||
// Single is the signature data for a single signer
|
||||
message Single {
|
||||
// mode is the signing mode of the single signer
|
||||
SignMode mode = 1;
|
||||
|
||||
// signature is the raw signature bytes
|
||||
bytes signature = 2;
|
||||
}
|
||||
|
||||
// Multi is the signature data for a multisig public key
|
||||
message Multi {
|
||||
// bitarray specifies which keys within the multisig are signing
|
||||
cosmos.crypto.multisig.v1beta1.CompactBitArray bitarray = 1;
|
||||
|
||||
// signatures is the signatures of the multi-signature
|
||||
repeated Data signatures = 2;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.tx.v1beta1;
|
||||
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/base/abci/v1beta1/abci.proto";
|
||||
import "cosmos/tx/v1beta1/tx.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/query/v1beta1/pagination.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types/tx";
|
||||
|
||||
// Service defines a gRPC service for interacting with transactions.
|
||||
service Service {
|
||||
// Simulate simulates executing a transaction for estimating gas usage.
|
||||
rpc Simulate(SimulateRequest) returns (SimulateResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/cosmos/tx/v1beta1/simulate"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
// GetTx fetches a tx by hash.
|
||||
rpc GetTx(GetTxRequest) returns (GetTxResponse) {
|
||||
option (google.api.http).get = "/cosmos/tx/v1beta1/txs/{hash}";
|
||||
}
|
||||
// BroadcastTx broadcast transaction.
|
||||
rpc BroadcastTx(BroadcastTxRequest) returns (BroadcastTxResponse) {
|
||||
option (google.api.http) = {
|
||||
post: "/cosmos/tx/v1beta1/txs"
|
||||
body: "*"
|
||||
};
|
||||
}
|
||||
// GetTxsEvent fetches txs by event.
|
||||
rpc GetTxsEvent(GetTxsEventRequest) returns (GetTxsEventResponse) {
|
||||
option (google.api.http).get = "/cosmos/tx/v1beta1/txs";
|
||||
}
|
||||
}
|
||||
|
||||
// GetTxsEventRequest is the request type for the Service.TxsByEvents
|
||||
// RPC method.
|
||||
message GetTxsEventRequest {
|
||||
// events is the list of transaction event type.
|
||||
repeated string events = 1;
|
||||
// pagination defines an pagination for the request.
|
||||
cosmos.base.query.v1beta1.PageRequest pagination = 2;
|
||||
}
|
||||
|
||||
// GetTxsEventResponse is the response type for the Service.TxsByEvents
|
||||
// RPC method.
|
||||
message GetTxsEventResponse {
|
||||
// txs is the list of queried transactions.
|
||||
repeated cosmos.tx.v1beta1.Tx txs = 1;
|
||||
// tx_responses is the list of queried TxResponses.
|
||||
repeated cosmos.base.abci.v1beta1.TxResponse tx_responses = 2;
|
||||
// pagination defines an pagination for the response.
|
||||
cosmos.base.query.v1beta1.PageResponse pagination = 3;
|
||||
}
|
||||
|
||||
// BroadcastTxRequest is the request type for the Service.BroadcastTxRequest
|
||||
// RPC method.
|
||||
message BroadcastTxRequest {
|
||||
// tx_bytes is the raw transaction.
|
||||
bytes tx_bytes = 1;
|
||||
BroadcastMode mode = 2;
|
||||
}
|
||||
|
||||
// BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC method.
|
||||
enum BroadcastMode {
|
||||
// zero-value for mode ordering
|
||||
BROADCAST_MODE_UNSPECIFIED = 0;
|
||||
// BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for
|
||||
// the tx to be committed in a block.
|
||||
BROADCAST_MODE_BLOCK = 1;
|
||||
// BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for
|
||||
// a CheckTx execution response only.
|
||||
BROADCAST_MODE_SYNC = 2;
|
||||
// BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns
|
||||
// immediately.
|
||||
BROADCAST_MODE_ASYNC = 3;
|
||||
}
|
||||
|
||||
// BroadcastTxResponse is the response type for the
|
||||
// Service.BroadcastTx method.
|
||||
message BroadcastTxResponse {
|
||||
// tx_response is the queried TxResponses.
|
||||
cosmos.base.abci.v1beta1.TxResponse tx_response = 1;
|
||||
}
|
||||
|
||||
// SimulateRequest is the request type for the Service.Simulate
|
||||
// RPC method.
|
||||
message SimulateRequest {
|
||||
// tx is the transaction to simulate.
|
||||
cosmos.tx.v1beta1.Tx tx = 1;
|
||||
}
|
||||
|
||||
// SimulateResponse is the response type for the
|
||||
// Service.SimulateRPC method.
|
||||
message SimulateResponse {
|
||||
// gas_info is the information about gas used in the simulation.
|
||||
cosmos.base.abci.v1beta1.GasInfo gas_info = 1;
|
||||
// result is the result of the simulation.
|
||||
cosmos.base.abci.v1beta1.Result result = 2;
|
||||
}
|
||||
|
||||
// GetTxRequest is the request type for the Service.GetTx
|
||||
// RPC method.
|
||||
message GetTxRequest {
|
||||
// hash is the tx hash to query, encoded as a hex string.
|
||||
string hash = 1;
|
||||
}
|
||||
|
||||
// GetTxResponse is the response type for the Service.GetTx method.
|
||||
message GetTxResponse {
|
||||
// tx is the queried transaction.
|
||||
cosmos.tx.v1beta1.Tx tx = 1;
|
||||
// tx_response is the queried TxResponses.
|
||||
cosmos.base.abci.v1beta1.TxResponse tx_response = 2;
|
||||
}
|
|
@ -0,0 +1,181 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.tx.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/crypto/multisig/v1beta1/multisig.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/tx/signing/v1beta1/signing.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/types/tx";
|
||||
|
||||
// Tx is the standard type used for broadcasting transactions.
|
||||
message Tx {
|
||||
// body is the processable content of the transaction
|
||||
TxBody body = 1;
|
||||
|
||||
// auth_info is the authorization related content of the transaction,
|
||||
// specifically signers, signer modes and fee
|
||||
AuthInfo auth_info = 2;
|
||||
|
||||
// signatures is a list of signatures that matches the length and order of
|
||||
// AuthInfo's signer_infos to allow connecting signature meta information like
|
||||
// public key and signing mode by position.
|
||||
repeated bytes signatures = 3;
|
||||
}
|
||||
|
||||
// TxRaw is a variant of Tx that pins the signer's exact binary representation
|
||||
// of body and auth_info. This is used for signing, broadcasting and
|
||||
// verification. The binary `serialize(tx: TxRaw)` is stored in Tendermint and
|
||||
// the hash `sha256(serialize(tx: TxRaw))` becomes the "txhash", commonly used
|
||||
// as the transaction ID.
|
||||
message TxRaw {
|
||||
// body_bytes is a protobuf serialization of a TxBody that matches the
|
||||
// representation in SignDoc.
|
||||
bytes body_bytes = 1;
|
||||
|
||||
// auth_info_bytes is a protobuf serialization of an AuthInfo that matches the
|
||||
// representation in SignDoc.
|
||||
bytes auth_info_bytes = 2;
|
||||
|
||||
// signatures is a list of signatures that matches the length and order of
|
||||
// AuthInfo's signer_infos to allow connecting signature meta information like
|
||||
// public key and signing mode by position.
|
||||
repeated bytes signatures = 3;
|
||||
}
|
||||
|
||||
// SignDoc is the type used for generating sign bytes for SIGN_MODE_DIRECT.
|
||||
message SignDoc {
|
||||
// body_bytes is protobuf serialization of a TxBody that matches the
|
||||
// representation in TxRaw.
|
||||
bytes body_bytes = 1;
|
||||
|
||||
// auth_info_bytes is a protobuf serialization of an AuthInfo that matches the
|
||||
// representation in TxRaw.
|
||||
bytes auth_info_bytes = 2;
|
||||
|
||||
// chain_id is the unique identifier of the chain this transaction targets.
|
||||
// It prevents signed transactions from being used on another chain by an
|
||||
// attacker
|
||||
string chain_id = 3;
|
||||
|
||||
// account_number is the account number of the account in state
|
||||
uint64 account_number = 4;
|
||||
}
|
||||
|
||||
// TxBody is the body of a transaction that all signers sign over.
|
||||
message TxBody {
|
||||
// messages is a list of messages to be executed. The required signers of
|
||||
// those messages define the number and order of elements in AuthInfo's
|
||||
// signer_infos and Tx's signatures. Each required signer address is added to
|
||||
// the list only the first time it occurs.
|
||||
// By convention, the first required signer (usually from the first message)
|
||||
// is referred to as the primary signer and pays the fee for the whole
|
||||
// transaction.
|
||||
repeated google.protobuf.Any messages = 1;
|
||||
|
||||
// memo is any arbitrary memo to be added to the transaction
|
||||
string memo = 2;
|
||||
|
||||
// timeout is the block height after which this transaction will not
|
||||
// be processed by the chain
|
||||
uint64 timeout_height = 3;
|
||||
|
||||
// extension_options are arbitrary options that can be added by chains
|
||||
// when the default options are not sufficient. If any of these are present
|
||||
// and can't be handled, the transaction will be rejected
|
||||
repeated google.protobuf.Any extension_options = 1023;
|
||||
|
||||
// extension_options are arbitrary options that can be added by chains
|
||||
// when the default options are not sufficient. If any of these are present
|
||||
// and can't be handled, they will be ignored
|
||||
repeated google.protobuf.Any non_critical_extension_options = 2047;
|
||||
}
|
||||
|
||||
// AuthInfo describes the fee and signer modes that are used to sign a
|
||||
// transaction.
|
||||
message AuthInfo {
|
||||
// signer_infos defines the signing modes for the required signers. The number
|
||||
// and order of elements must match the required signers from TxBody's
|
||||
// messages. The first element is the primary signer and the one which pays
|
||||
// the fee.
|
||||
repeated SignerInfo signer_infos = 1;
|
||||
|
||||
// Fee is the fee and gas limit for the transaction. The first signer is the
|
||||
// primary signer and the one which pays the fee. The fee can be calculated
|
||||
// based on the cost of evaluating the body and doing signature verification
|
||||
// of the signers. This can be estimated via simulation.
|
||||
Fee fee = 2;
|
||||
}
|
||||
|
||||
// SignerInfo describes the public key and signing mode of a single top-level
|
||||
// signer.
|
||||
message SignerInfo {
|
||||
// public_key is the public key of the signer. It is optional for accounts
|
||||
// that already exist in state. If unset, the verifier can use the required \
|
||||
// signer address for this position and lookup the public key.
|
||||
google.protobuf.Any public_key = 1;
|
||||
|
||||
// mode_info describes the signing mode of the signer and is a nested
|
||||
// structure to support nested multisig pubkey's
|
||||
ModeInfo mode_info = 2;
|
||||
|
||||
// sequence is the sequence of the account, which describes the
|
||||
// number of committed transactions signed by a given address. It is used to
|
||||
// prevent replay attacks.
|
||||
uint64 sequence = 3;
|
||||
}
|
||||
|
||||
// ModeInfo describes the signing mode of a single or nested multisig signer.
|
||||
message ModeInfo {
|
||||
// sum is the oneof that specifies whether this represents a single or nested
|
||||
// multisig signer
|
||||
oneof sum {
|
||||
// single represents a single signer
|
||||
Single single = 1;
|
||||
|
||||
// multi represents a nested multisig signer
|
||||
Multi multi = 2;
|
||||
}
|
||||
|
||||
// Single is the mode info for a single signer. It is structured as a message
|
||||
// to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the
|
||||
// future
|
||||
message Single {
|
||||
// mode is the signing mode of the single signer
|
||||
cosmos.tx.signing.v1beta1.SignMode mode = 1;
|
||||
}
|
||||
|
||||
// Multi is the mode info for a multisig public key
|
||||
message Multi {
|
||||
// bitarray specifies which keys within the multisig are signing
|
||||
cosmos.crypto.multisig.v1beta1.CompactBitArray bitarray = 1;
|
||||
|
||||
// mode_infos is the corresponding modes of the signers of the multisig
|
||||
// which could include nested multisig public keys
|
||||
repeated ModeInfo mode_infos = 2;
|
||||
}
|
||||
}
|
||||
|
||||
// Fee includes the amount of coins paid in fees and the maximum
|
||||
// gas to be used by the transaction. The ratio yields an effective "gasprice",
|
||||
// which must be above some miminum to be accepted into the mempool.
|
||||
message Fee {
|
||||
// amount is the amount of coins to be paid as a fee
|
||||
repeated cosmos.base.v1beta1.Coin amount = 1
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
|
||||
// gas_limit is the maximum gas that can be used in transaction processing
|
||||
// before an out of gas error occurs
|
||||
uint64 gas_limit = 2;
|
||||
|
||||
// if unset, the first signer is responsible for paying the fees. If set, the specified account must pay the fees.
|
||||
// the payer must be a tx signer (and thus have signed this field in AuthInfo).
|
||||
// setting this field does *not* change the ordering of required signers for the transaction.
|
||||
string payer = 3;
|
||||
|
||||
// if set, the fee payer (either the first signer or the value of the payer field) requests that a fee grant be used
|
||||
// to pay fees instead of the fee payer's own balance. If an appropriate fee grant does not exist or the chain does
|
||||
// not support fee grants, this will fail
|
||||
string granter = 4;
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.upgrade.v1beta1;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
import "google/api/annotations.proto";
|
||||
import "cosmos/upgrade/v1beta1/upgrade.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/upgrade/types";
|
||||
|
||||
// Query defines the gRPC upgrade querier service.
|
||||
service Query {
|
||||
// CurrentPlan queries the current upgrade plan.
|
||||
rpc CurrentPlan(QueryCurrentPlanRequest) returns (QueryCurrentPlanResponse) {
|
||||
option (google.api.http).get = "/cosmos/upgrade/v1beta1/current_plan";
|
||||
}
|
||||
|
||||
// AppliedPlan queries a previously applied upgrade plan by its name.
|
||||
rpc AppliedPlan(QueryAppliedPlanRequest) returns (QueryAppliedPlanResponse) {
|
||||
option (google.api.http).get = "/cosmos/upgrade/v1beta1/applied_plan/{name}";
|
||||
}
|
||||
|
||||
// UpgradedConsensusState queries the consensus state that will serve
|
||||
// as a trusted kernel for the next version of this chain. It will only be
|
||||
// stored at the last height of this chain.
|
||||
// UpgradedConsensusState RPC not supported with legacy querier
|
||||
rpc UpgradedConsensusState(QueryUpgradedConsensusStateRequest) returns (QueryUpgradedConsensusStateResponse) {
|
||||
option (google.api.http).get = "/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}";
|
||||
}
|
||||
}
|
||||
|
||||
// QueryCurrentPlanRequest is the request type for the Query/CurrentPlan RPC
|
||||
// method.
|
||||
message QueryCurrentPlanRequest {}
|
||||
|
||||
// QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC
|
||||
// method.
|
||||
message QueryCurrentPlanResponse {
|
||||
// plan is the current upgrade plan.
|
||||
Plan plan = 1;
|
||||
}
|
||||
|
||||
// QueryCurrentPlanRequest is the request type for the Query/AppliedPlan RPC
|
||||
// method.
|
||||
message QueryAppliedPlanRequest {
|
||||
// name is the name of the applied plan to query for.
|
||||
string name = 1;
|
||||
}
|
||||
|
||||
// QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC
|
||||
// method.
|
||||
message QueryAppliedPlanResponse {
|
||||
// height is the block height at which the plan was applied.
|
||||
int64 height = 1;
|
||||
}
|
||||
|
||||
// QueryUpgradedConsensusStateRequest is the request type for the Query/UpgradedConsensusState
|
||||
// RPC method.
|
||||
message QueryUpgradedConsensusStateRequest {
|
||||
// last height of the current chain must be sent in request
|
||||
// as this is the height under which next consensus state is stored
|
||||
int64 last_height = 1;
|
||||
}
|
||||
|
||||
// QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState
|
||||
// RPC method.
|
||||
message QueryUpgradedConsensusStateResponse {
|
||||
google.protobuf.Any upgraded_consensus_state = 1;
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.upgrade.v1beta1;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/upgrade/types";
|
||||
option (gogoproto.goproto_stringer_all) = false;
|
||||
option (gogoproto.goproto_getters_all) = false;
|
||||
|
||||
// Plan specifies information about a planned upgrade and when it should occur.
|
||||
message Plan {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
// Sets the name for the upgrade. This name will be used by the upgraded
|
||||
// version of the software to apply any special "on-upgrade" commands during
|
||||
// the first BeginBlock method after the upgrade is applied. It is also used
|
||||
// to detect whether a software version can handle a given upgrade. If no
|
||||
// upgrade handler with this name has been set in the software, it will be
|
||||
// assumed that the software is out-of-date when the upgrade Time or Height is
|
||||
// reached and the software will exit.
|
||||
string name = 1;
|
||||
|
||||
// The time after which the upgrade must be performed.
|
||||
// Leave set to its zero value to use a pre-defined Height instead.
|
||||
google.protobuf.Timestamp time = 2 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false];
|
||||
|
||||
// The height at which the upgrade must be performed.
|
||||
// Only used if Time is not set.
|
||||
int64 height = 3;
|
||||
|
||||
// Any application specific upgrade info to be included on-chain
|
||||
// such as a git commit that validators could automatically upgrade to
|
||||
string info = 4;
|
||||
|
||||
// IBC-enabled chains can opt-in to including the upgraded client state in its upgrade plan
|
||||
// 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 = 5 [(gogoproto.moretags) = "yaml:\"upgraded_client_state\""];
|
||||
}
|
||||
|
||||
// SoftwareUpgradeProposal is a gov Content type for initiating a software
|
||||
// upgrade.
|
||||
message SoftwareUpgradeProposal {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
Plan plan = 3 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
// CancelSoftwareUpgradeProposal is a gov Content type for cancelling a software
|
||||
// upgrade.
|
||||
message CancelSoftwareUpgradeProposal {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string title = 1;
|
||||
string description = 2;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.vesting.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/auth/vesting/types";
|
||||
|
||||
// Msg defines the bank Msg service.
|
||||
service Msg {
|
||||
// CreateVestingAccount defines a method that enables creating a vesting
|
||||
// account.
|
||||
rpc CreateVestingAccount(MsgCreateVestingAccount) returns (MsgCreateVestingAccountResponse);
|
||||
}
|
||||
|
||||
// MsgCreateVestingAccount defines a message that enables creating a vesting
|
||||
// account.
|
||||
message MsgCreateVestingAccount {
|
||||
option (gogoproto.equal) = true;
|
||||
|
||||
string from_address = 1 [(gogoproto.moretags) = "yaml:\"from_address\""];
|
||||
string to_address = 2 [(gogoproto.moretags) = "yaml:\"to_address\""];
|
||||
repeated cosmos.base.v1beta1.Coin amount = 3
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
|
||||
int64 end_time = 4 [(gogoproto.moretags) = "yaml:\"end_time\""];
|
||||
bool delayed = 5;
|
||||
}
|
||||
|
||||
// MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.
|
||||
message MsgCreateVestingAccountResponse {}
|
|
@ -0,0 +1,73 @@
|
|||
syntax = "proto3";
|
||||
package cosmos.vesting.v1beta1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "cosmos/base/v1beta1/coin.proto";
|
||||
import "cosmos/auth/v1beta1/auth.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/auth/vesting/types";
|
||||
|
||||
// BaseVestingAccount implements the VestingAccount interface. It contains all
|
||||
// the necessary fields needed for any vesting account implementation.
|
||||
message BaseVestingAccount {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
cosmos.auth.v1beta1.BaseAccount base_account = 1 [(gogoproto.embed) = true];
|
||||
repeated cosmos.base.v1beta1.Coin original_vesting = 2 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
|
||||
(gogoproto.moretags) = "yaml:\"original_vesting\""
|
||||
];
|
||||
repeated cosmos.base.v1beta1.Coin delegated_free = 3 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
|
||||
(gogoproto.moretags) = "yaml:\"delegated_free\""
|
||||
];
|
||||
repeated cosmos.base.v1beta1.Coin delegated_vesting = 4 [
|
||||
(gogoproto.nullable) = false,
|
||||
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
|
||||
(gogoproto.moretags) = "yaml:\"delegated_vesting\""
|
||||
];
|
||||
int64 end_time = 5 [(gogoproto.moretags) = "yaml:\"end_time\""];
|
||||
}
|
||||
|
||||
// ContinuousVestingAccount implements the VestingAccount interface. It
|
||||
// continuously vests by unlocking coins linearly with respect to time.
|
||||
message ContinuousVestingAccount {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
||||
int64 start_time = 2 [(gogoproto.moretags) = "yaml:\"start_time\""];
|
||||
}
|
||||
|
||||
// DelayedVestingAccount implements the VestingAccount interface. It vests all
|
||||
// coins after a specific time, but non prior. In other words, it keeps them
|
||||
// locked until a specified time.
|
||||
message DelayedVestingAccount {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
||||
}
|
||||
|
||||
// Period defines a length of time and amount of coins that will vest.
|
||||
message Period {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
int64 length = 1;
|
||||
repeated cosmos.base.v1beta1.Coin amount = 2
|
||||
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
|
||||
}
|
||||
|
||||
// PeriodicVestingAccount implements the VestingAccount interface. It
|
||||
// periodically vests by unlocking coins during each specified period.
|
||||
message PeriodicVestingAccount {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
BaseVestingAccount base_vesting_account = 1 [(gogoproto.embed) = true];
|
||||
int64 start_time = 2 [(gogoproto.moretags) = "yaml:\"start_time\""];
|
||||
repeated Period vesting_periods = 3 [(gogoproto.moretags) = "yaml:\"vesting_periods\"", (gogoproto.nullable) = false];
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
syntax = "proto3";
|
||||
package cosmos_proto;
|
||||
|
||||
import "google/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "github.com/regen-network/cosmos-proto";
|
||||
|
||||
extend google.protobuf.MessageOptions {
|
||||
string interface_type = 93001;
|
||||
|
||||
string implements_interface = 93002;
|
||||
}
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
string accepts_interface = 93001;
|
||||
}
|
|
@ -0,0 +1,145 @@
|
|||
// Protocol Buffers for Go with Gadgets
|
||||
//
|
||||
// Copyright (c) 2013, The GoGo Authors. All rights reserved.
|
||||
// http://github.com/gogo/protobuf
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
syntax = "proto2";
|
||||
package gogoproto;
|
||||
|
||||
import "google/protobuf/descriptor.proto";
|
||||
|
||||
option java_package = "com.google.protobuf";
|
||||
option java_outer_classname = "GoGoProtos";
|
||||
option go_package = "github.com/gogo/protobuf/gogoproto";
|
||||
|
||||
extend google.protobuf.EnumOptions {
|
||||
optional bool goproto_enum_prefix = 62001;
|
||||
optional bool goproto_enum_stringer = 62021;
|
||||
optional bool enum_stringer = 62022;
|
||||
optional string enum_customname = 62023;
|
||||
optional bool enumdecl = 62024;
|
||||
}
|
||||
|
||||
extend google.protobuf.EnumValueOptions {
|
||||
optional string enumvalue_customname = 66001;
|
||||
}
|
||||
|
||||
extend google.protobuf.FileOptions {
|
||||
optional bool goproto_getters_all = 63001;
|
||||
optional bool goproto_enum_prefix_all = 63002;
|
||||
optional bool goproto_stringer_all = 63003;
|
||||
optional bool verbose_equal_all = 63004;
|
||||
optional bool face_all = 63005;
|
||||
optional bool gostring_all = 63006;
|
||||
optional bool populate_all = 63007;
|
||||
optional bool stringer_all = 63008;
|
||||
optional bool onlyone_all = 63009;
|
||||
|
||||
optional bool equal_all = 63013;
|
||||
optional bool description_all = 63014;
|
||||
optional bool testgen_all = 63015;
|
||||
optional bool benchgen_all = 63016;
|
||||
optional bool marshaler_all = 63017;
|
||||
optional bool unmarshaler_all = 63018;
|
||||
optional bool stable_marshaler_all = 63019;
|
||||
|
||||
optional bool sizer_all = 63020;
|
||||
|
||||
optional bool goproto_enum_stringer_all = 63021;
|
||||
optional bool enum_stringer_all = 63022;
|
||||
|
||||
optional bool unsafe_marshaler_all = 63023;
|
||||
optional bool unsafe_unmarshaler_all = 63024;
|
||||
|
||||
optional bool goproto_extensions_map_all = 63025;
|
||||
optional bool goproto_unrecognized_all = 63026;
|
||||
optional bool gogoproto_import = 63027;
|
||||
optional bool protosizer_all = 63028;
|
||||
optional bool compare_all = 63029;
|
||||
optional bool typedecl_all = 63030;
|
||||
optional bool enumdecl_all = 63031;
|
||||
|
||||
optional bool goproto_registration = 63032;
|
||||
optional bool messagename_all = 63033;
|
||||
|
||||
optional bool goproto_sizecache_all = 63034;
|
||||
optional bool goproto_unkeyed_all = 63035;
|
||||
}
|
||||
|
||||
extend google.protobuf.MessageOptions {
|
||||
optional bool goproto_getters = 64001;
|
||||
optional bool goproto_stringer = 64003;
|
||||
optional bool verbose_equal = 64004;
|
||||
optional bool face = 64005;
|
||||
optional bool gostring = 64006;
|
||||
optional bool populate = 64007;
|
||||
optional bool stringer = 67008;
|
||||
optional bool onlyone = 64009;
|
||||
|
||||
optional bool equal = 64013;
|
||||
optional bool description = 64014;
|
||||
optional bool testgen = 64015;
|
||||
optional bool benchgen = 64016;
|
||||
optional bool marshaler = 64017;
|
||||
optional bool unmarshaler = 64018;
|
||||
optional bool stable_marshaler = 64019;
|
||||
|
||||
optional bool sizer = 64020;
|
||||
|
||||
optional bool unsafe_marshaler = 64023;
|
||||
optional bool unsafe_unmarshaler = 64024;
|
||||
|
||||
optional bool goproto_extensions_map = 64025;
|
||||
optional bool goproto_unrecognized = 64026;
|
||||
|
||||
optional bool protosizer = 64028;
|
||||
optional bool compare = 64029;
|
||||
|
||||
optional bool typedecl = 64030;
|
||||
|
||||
optional bool messagename = 64033;
|
||||
|
||||
optional bool goproto_sizecache = 64034;
|
||||
optional bool goproto_unkeyed = 64035;
|
||||
}
|
||||
|
||||
extend google.protobuf.FieldOptions {
|
||||
optional bool nullable = 65001;
|
||||
optional bool embed = 65002;
|
||||
optional string customtype = 65003;
|
||||
optional string customname = 65004;
|
||||
optional string jsontag = 65005;
|
||||
optional string moretags = 65006;
|
||||
optional string casttype = 65007;
|
||||
optional string castkey = 65008;
|
||||
optional string castvalue = 65009;
|
||||
|
||||
optional bool stdtime = 65010;
|
||||
optional bool stdduration = 65011;
|
||||
optional bool wktpointer = 65012;
|
||||
|
||||
optional string castrepeated = 65013;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright (c) 2015, Google Inc.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/api/http.proto";
|
||||
import "google/protobuf/descriptor.proto";
|
||||
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "AnnotationsProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
extend google.protobuf.MethodOptions {
|
||||
// See `HttpRule`.
|
||||
HttpRule http = 72295728;
|
||||
}
|
|
@ -0,0 +1,318 @@
|
|||
// Copyright 2018 Google LLC
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
option cc_enable_arenas = true;
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "HttpProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
|
||||
// Defines the HTTP configuration for an API service. It contains a list of
|
||||
// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method
|
||||
// to one or more HTTP REST API methods.
|
||||
message Http {
|
||||
// A list of HTTP configuration rules that apply to individual API methods.
|
||||
//
|
||||
// **NOTE:** All service configuration rules follow "last one wins" order.
|
||||
repeated HttpRule rules = 1;
|
||||
|
||||
// When set to true, URL path parmeters will be fully URI-decoded except in
|
||||
// cases of single segment matches in reserved expansion, where "%2F" will be
|
||||
// left encoded.
|
||||
//
|
||||
// The default behavior is to not decode RFC 6570 reserved characters in multi
|
||||
// segment matches.
|
||||
bool fully_decode_reserved_expansion = 2;
|
||||
}
|
||||
|
||||
// `HttpRule` defines the mapping of an RPC method to one or more HTTP
|
||||
// REST API methods. The mapping specifies how different portions of the RPC
|
||||
// request message are mapped to URL path, URL query parameters, and
|
||||
// HTTP request body. The mapping is typically specified as an
|
||||
// `google.api.http` annotation on the RPC method,
|
||||
// see "google/api/annotations.proto" for details.
|
||||
//
|
||||
// The mapping consists of a field specifying the path template and
|
||||
// method kind. The path template can refer to fields in the request
|
||||
// message, as in the example below which describes a REST GET
|
||||
// operation on a resource collection of messages:
|
||||
//
|
||||
//
|
||||
// service Messaging {
|
||||
// rpc GetMessage(GetMessageRequest) returns (Message) {
|
||||
// option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
|
||||
// }
|
||||
// }
|
||||
// message GetMessageRequest {
|
||||
// message SubMessage {
|
||||
// string subfield = 1;
|
||||
// }
|
||||
// string message_id = 1; // mapped to the URL
|
||||
// SubMessage sub = 2; // `sub.subfield` is url-mapped
|
||||
// }
|
||||
// message Message {
|
||||
// string text = 1; // content of the resource
|
||||
// }
|
||||
//
|
||||
// The same http annotation can alternatively be expressed inside the
|
||||
// `GRPC API Configuration` YAML file.
|
||||
//
|
||||
// http:
|
||||
// rules:
|
||||
// - selector: <proto_package_name>.Messaging.GetMessage
|
||||
// get: /v1/messages/{message_id}/{sub.subfield}
|
||||
//
|
||||
// This definition enables an automatic, bidrectional mapping of HTTP
|
||||
// JSON to RPC. Example:
|
||||
//
|
||||
// HTTP | RPC
|
||||
// -----|-----
|
||||
// `GET /v1/messages/123456/foo` | `GetMessage(message_id: "123456" sub: SubMessage(subfield: "foo"))`
|
||||
//
|
||||
// In general, not only fields but also field paths can be referenced
|
||||
// from a path pattern. Fields mapped to the path pattern cannot be
|
||||
// repeated and must have a primitive (non-message) type.
|
||||
//
|
||||
// Any fields in the request message which are not bound by the path
|
||||
// pattern automatically become (optional) HTTP query
|
||||
// parameters. Assume the following definition of the request message:
|
||||
//
|
||||
//
|
||||
// service Messaging {
|
||||
// rpc GetMessage(GetMessageRequest) returns (Message) {
|
||||
// option (google.api.http).get = "/v1/messages/{message_id}";
|
||||
// }
|
||||
// }
|
||||
// message GetMessageRequest {
|
||||
// message SubMessage {
|
||||
// string subfield = 1;
|
||||
// }
|
||||
// string message_id = 1; // mapped to the URL
|
||||
// int64 revision = 2; // becomes a parameter
|
||||
// SubMessage sub = 3; // `sub.subfield` becomes a parameter
|
||||
// }
|
||||
//
|
||||
//
|
||||
// This enables a HTTP JSON to RPC mapping as below:
|
||||
//
|
||||
// HTTP | RPC
|
||||
// -----|-----
|
||||
// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: "foo"))`
|
||||
//
|
||||
// Note that fields which are mapped to HTTP parameters must have a
|
||||
// primitive type or a repeated primitive type. Message types are not
|
||||
// allowed. In the case of a repeated type, the parameter can be
|
||||
// repeated in the URL, as in `...?param=A¶m=B`.
|
||||
//
|
||||
// For HTTP method kinds which allow a request body, the `body` field
|
||||
// specifies the mapping. Consider a REST update method on the
|
||||
// message resource collection:
|
||||
//
|
||||
//
|
||||
// service Messaging {
|
||||
// rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
|
||||
// option (google.api.http) = {
|
||||
// put: "/v1/messages/{message_id}"
|
||||
// body: "message"
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
// message UpdateMessageRequest {
|
||||
// string message_id = 1; // mapped to the URL
|
||||
// Message message = 2; // mapped to the body
|
||||
// }
|
||||
//
|
||||
//
|
||||
// The following HTTP JSON to RPC mapping is enabled, where the
|
||||
// representation of the JSON in the request body is determined by
|
||||
// protos JSON encoding:
|
||||
//
|
||||
// HTTP | RPC
|
||||
// -----|-----
|
||||
// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" message { text: "Hi!" })`
|
||||
//
|
||||
// The special name `*` can be used in the body mapping to define that
|
||||
// every field not bound by the path template should be mapped to the
|
||||
// request body. This enables the following alternative definition of
|
||||
// the update method:
|
||||
//
|
||||
// service Messaging {
|
||||
// rpc UpdateMessage(Message) returns (Message) {
|
||||
// option (google.api.http) = {
|
||||
// put: "/v1/messages/{message_id}"
|
||||
// body: "*"
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
// message Message {
|
||||
// string message_id = 1;
|
||||
// string text = 2;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// The following HTTP JSON to RPC mapping is enabled:
|
||||
//
|
||||
// HTTP | RPC
|
||||
// -----|-----
|
||||
// `PUT /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: "123456" text: "Hi!")`
|
||||
//
|
||||
// Note that when using `*` in the body mapping, it is not possible to
|
||||
// have HTTP parameters, as all fields not bound by the path end in
|
||||
// the body. This makes this option more rarely used in practice of
|
||||
// defining REST APIs. The common usage of `*` is in custom methods
|
||||
// which don't use the URL at all for transferring data.
|
||||
//
|
||||
// It is possible to define multiple HTTP methods for one RPC by using
|
||||
// the `additional_bindings` option. Example:
|
||||
//
|
||||
// service Messaging {
|
||||
// rpc GetMessage(GetMessageRequest) returns (Message) {
|
||||
// option (google.api.http) = {
|
||||
// get: "/v1/messages/{message_id}"
|
||||
// additional_bindings {
|
||||
// get: "/v1/users/{user_id}/messages/{message_id}"
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
// message GetMessageRequest {
|
||||
// string message_id = 1;
|
||||
// string user_id = 2;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// This enables the following two alternative HTTP JSON to RPC
|
||||
// mappings:
|
||||
//
|
||||
// HTTP | RPC
|
||||
// -----|-----
|
||||
// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")`
|
||||
// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: "123456")`
|
||||
//
|
||||
// # Rules for HTTP mapping
|
||||
//
|
||||
// The rules for mapping HTTP path, query parameters, and body fields
|
||||
// to the request message are as follows:
|
||||
//
|
||||
// 1. The `body` field specifies either `*` or a field path, or is
|
||||
// omitted. If omitted, it indicates there is no HTTP request body.
|
||||
// 2. Leaf fields (recursive expansion of nested messages in the
|
||||
// request) can be classified into three types:
|
||||
// (a) Matched in the URL template.
|
||||
// (b) Covered by body (if body is `*`, everything except (a) fields;
|
||||
// else everything under the body field)
|
||||
// (c) All other fields.
|
||||
// 3. URL query parameters found in the HTTP request are mapped to (c) fields.
|
||||
// 4. Any body sent with an HTTP request can contain only (b) fields.
|
||||
//
|
||||
// The syntax of the path template is as follows:
|
||||
//
|
||||
// Template = "/" Segments [ Verb ] ;
|
||||
// Segments = Segment { "/" Segment } ;
|
||||
// Segment = "*" | "**" | LITERAL | Variable ;
|
||||
// Variable = "{" FieldPath [ "=" Segments ] "}" ;
|
||||
// FieldPath = IDENT { "." IDENT } ;
|
||||
// Verb = ":" LITERAL ;
|
||||
//
|
||||
// The syntax `*` matches a single path segment. The syntax `**` matches zero
|
||||
// or more path segments, which must be the last part of the path except the
|
||||
// `Verb`. The syntax `LITERAL` matches literal text in the path.
|
||||
//
|
||||
// The syntax `Variable` matches part of the URL path as specified by its
|
||||
// template. A variable template must not contain other variables. If a variable
|
||||
// matches a single path segment, its template may be omitted, e.g. `{var}`
|
||||
// is equivalent to `{var=*}`.
|
||||
//
|
||||
// If a variable contains exactly one path segment, such as `"{var}"` or
|
||||
// `"{var=*}"`, when such a variable is expanded into a URL path, all characters
|
||||
// except `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the
|
||||
// Discovery Document as `{var}`.
|
||||
//
|
||||
// If a variable contains one or more path segments, such as `"{var=foo/*}"`
|
||||
// or `"{var=**}"`, when such a variable is expanded into a URL path, all
|
||||
// characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables
|
||||
// show up in the Discovery Document as `{+var}`.
|
||||
//
|
||||
// NOTE: While the single segment variable matches the semantics of
|
||||
// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2
|
||||
// Simple String Expansion, the multi segment variable **does not** match
|
||||
// RFC 6570 Reserved Expansion. The reason is that the Reserved Expansion
|
||||
// does not expand special characters like `?` and `#`, which would lead
|
||||
// to invalid URLs.
|
||||
//
|
||||
// NOTE: the field paths in variables and in the `body` must not refer to
|
||||
// repeated fields or map fields.
|
||||
message HttpRule {
|
||||
// Selects methods to which this rule applies.
|
||||
//
|
||||
// Refer to [selector][google.api.DocumentationRule.selector] for syntax details.
|
||||
string selector = 1;
|
||||
|
||||
// Determines the URL pattern is matched by this rules. This pattern can be
|
||||
// used with any of the {get|put|post|delete|patch} methods. A custom method
|
||||
// can be defined using the 'custom' field.
|
||||
oneof pattern {
|
||||
// Used for listing and getting information about resources.
|
||||
string get = 2;
|
||||
|
||||
// Used for updating a resource.
|
||||
string put = 3;
|
||||
|
||||
// Used for creating a resource.
|
||||
string post = 4;
|
||||
|
||||
// Used for deleting a resource.
|
||||
string delete = 5;
|
||||
|
||||
// Used for updating a resource.
|
||||
string patch = 6;
|
||||
|
||||
// The custom pattern is used for specifying an HTTP method that is not
|
||||
// included in the `pattern` field, such as HEAD, or "*" to leave the
|
||||
// HTTP method unspecified for this rule. The wild-card rule is useful
|
||||
// for services that provide content to Web (HTML) clients.
|
||||
CustomHttpPattern custom = 8;
|
||||
}
|
||||
|
||||
// The name of the request field whose value is mapped to the HTTP body, or
|
||||
// `*` for mapping all fields not captured by the path pattern to the HTTP
|
||||
// body. NOTE: the referred field must not be a repeated field and must be
|
||||
// present at the top-level of request message type.
|
||||
string body = 7;
|
||||
|
||||
// Optional. The name of the response field whose value is mapped to the HTTP
|
||||
// body of response. Other response fields are ignored. When
|
||||
// not set, the response message will be used as HTTP body of response.
|
||||
string response_body = 12;
|
||||
|
||||
// Additional HTTP bindings for the selector. Nested bindings must
|
||||
// not contain an `additional_bindings` field themselves (that is,
|
||||
// the nesting may only be one level deep).
|
||||
repeated HttpRule additional_bindings = 11;
|
||||
}
|
||||
|
||||
// A custom pattern is used for defining custom HTTP verb.
|
||||
message CustomHttpPattern {
|
||||
// The name of this custom HTTP verb.
|
||||
string kind = 1;
|
||||
|
||||
// The path matched by this custom verb.
|
||||
string path = 2;
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
// Copyright 2018 Google LLC.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.api;
|
||||
|
||||
import "google/protobuf/any.proto";
|
||||
|
||||
option cc_enable_arenas = true;
|
||||
option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody";
|
||||
option java_multiple_files = true;
|
||||
option java_outer_classname = "HttpBodyProto";
|
||||
option java_package = "com.google.api";
|
||||
option objc_class_prefix = "GAPI";
|
||||
|
||||
// Message that represents an arbitrary HTTP body. It should only be used for
|
||||
// payload formats that can't be represented as JSON, such as raw binary or
|
||||
// an HTML page.
|
||||
//
|
||||
//
|
||||
// This message can be used both in streaming and non-streaming API methods in
|
||||
// the request as well as the response.
|
||||
//
|
||||
// It can be used as a top-level request field, which is convenient if one
|
||||
// wants to extract parameters from either the URL or HTTP template into the
|
||||
// request fields and also want access to the raw HTTP body.
|
||||
//
|
||||
// Example:
|
||||
//
|
||||
// message GetResourceRequest {
|
||||
// // A unique request id.
|
||||
// string request_id = 1;
|
||||
//
|
||||
// // The raw HTTP body is bound to this field.
|
||||
// google.api.HttpBody http_body = 2;
|
||||
// }
|
||||
//
|
||||
// service ResourceService {
|
||||
// rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);
|
||||
// rpc UpdateResource(google.api.HttpBody) returns
|
||||
// (google.protobuf.Empty);
|
||||
// }
|
||||
//
|
||||
// Example with streaming methods:
|
||||
//
|
||||
// service CaldavService {
|
||||
// rpc GetCalendar(stream google.api.HttpBody)
|
||||
// returns (stream google.api.HttpBody);
|
||||
// rpc UpdateCalendar(stream google.api.HttpBody)
|
||||
// returns (stream google.api.HttpBody);
|
||||
// }
|
||||
//
|
||||
// Use of this type only changes how the request and response bodies are
|
||||
// handled, all other features will continue to work unchanged.
|
||||
message HttpBody {
|
||||
// The HTTP Content-Type header value specifying the content type of the body.
|
||||
string content_type = 1;
|
||||
|
||||
// The HTTP request/response body as raw binary.
|
||||
bytes data = 2;
|
||||
|
||||
// Application specific response metadata. Must be set in the first response
|
||||
// for streaming APIs.
|
||||
repeated google.protobuf.Any extensions = 3;
|
||||
}
|
|
@ -0,0 +1,161 @@
|
|||
// Protocol Buffers - Google's data interchange format
|
||||
// Copyright 2008 Google Inc. All rights reserved.
|
||||
// https://developers.google.com/protocol-buffers/
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following disclaimer
|
||||
// in the documentation and/or other materials provided with the
|
||||
// distribution.
|
||||
// * Neither the name of Google Inc. nor the names of its
|
||||
// contributors may be used to endorse or promote products derived from
|
||||
// this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
syntax = "proto3";
|
||||
|
||||
package google.protobuf;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
|
||||
option csharp_namespace = "Google.Protobuf.WellKnownTypes";
|
||||
option go_package = "types";
|
||||
option java_package = "com.google.protobuf";
|
||||
option java_outer_classname = "AnyProto";
|
||||
option java_multiple_files = true;
|
||||
option objc_class_prefix = "GPB";
|
||||
|
||||
// `Any` contains an arbitrary serialized protocol buffer message along with a
|
||||
// URL that describes the type of the serialized message.
|
||||
//
|
||||
// Protobuf library provides support to pack/unpack Any values in the form
|
||||
// of utility functions or additional generated methods of the Any type.
|
||||
//
|
||||
// Example 1: Pack and unpack a message in C++.
|
||||
//
|
||||
// Foo foo = ...;
|
||||
// Any any;
|
||||
// any.PackFrom(foo);
|
||||
// ...
|
||||
// if (any.UnpackTo(&foo)) {
|
||||
// ...
|
||||
// }
|
||||
//
|
||||
// Example 2: Pack and unpack a message in Java.
|
||||
//
|
||||
// Foo foo = ...;
|
||||
// Any any = Any.pack(foo);
|
||||
// ...
|
||||
// if (any.is(Foo.class)) {
|
||||
// foo = any.unpack(Foo.class);
|
||||
// }
|
||||
//
|
||||
// Example 3: Pack and unpack a message in Python.
|
||||
//
|
||||
// foo = Foo(...)
|
||||
// any = Any()
|
||||
// any.Pack(foo)
|
||||
// ...
|
||||
// if any.Is(Foo.DESCRIPTOR):
|
||||
// any.Unpack(foo)
|
||||
// ...
|
||||
//
|
||||
// Example 4: Pack and unpack a message in Go
|
||||
//
|
||||
// foo := &pb.Foo{...}
|
||||
// any, err := ptypes.MarshalAny(foo)
|
||||
// ...
|
||||
// foo := &pb.Foo{}
|
||||
// if err := ptypes.UnmarshalAny(any, foo); err != nil {
|
||||
// ...
|
||||
// }
|
||||
//
|
||||
// The pack methods provided by protobuf library will by default use
|
||||
// 'type.googleapis.com/full.type.name' as the type URL and the unpack
|
||||
// methods only use the fully qualified type name after the last '/'
|
||||
// in the type URL, for example "foo.bar.com/x/y.z" will yield type
|
||||
// name "y.z".
|
||||
//
|
||||
//
|
||||
// JSON
|
||||
// ====
|
||||
// The JSON representation of an `Any` value uses the regular
|
||||
// representation of the deserialized, embedded message, with an
|
||||
// additional field `@type` which contains the type URL. Example:
|
||||
//
|
||||
// package google.profile;
|
||||
// message Person {
|
||||
// string first_name = 1;
|
||||
// string last_name = 2;
|
||||
// }
|
||||
//
|
||||
// {
|
||||
// "@type": "type.googleapis.com/google.profile.Person",
|
||||
// "firstName": <string>,
|
||||
// "lastName": <string>
|
||||
// }
|
||||
//
|
||||
// If the embedded message type is well-known and has a custom JSON
|
||||
// representation, that representation will be embedded adding a field
|
||||
// `value` which holds the custom JSON in addition to the `@type`
|
||||
// field. Example (for message [google.protobuf.Duration][]):
|
||||
//
|
||||
// {
|
||||
// "@type": "type.googleapis.com/google.protobuf.Duration",
|
||||
// "value": "1.212s"
|
||||
// }
|
||||
//
|
||||
message Any {
|
||||
// A URL/resource name that uniquely identifies the type of the serialized
|
||||
// protocol buffer message. This string must contain at least
|
||||
// one "/" character. The last segment of the URL's path must represent
|
||||
// the fully qualified name of the type (as in
|
||||
// `path/google.protobuf.Duration`). The name should be in a canonical form
|
||||
// (e.g., leading "." is not accepted).
|
||||
//
|
||||
// In practice, teams usually precompile into the binary all types that they
|
||||
// expect it to use in the context of Any. However, for URLs which use the
|
||||
// scheme `http`, `https`, or no scheme, one can optionally set up a type
|
||||
// server that maps type URLs to message definitions as follows:
|
||||
//
|
||||
// * If no scheme is provided, `https` is assumed.
|
||||
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
|
||||
// value in binary format, or produce an error.
|
||||
// * Applications are allowed to cache lookup results based on the
|
||||
// URL, or have them precompiled into a binary to avoid any
|
||||
// lookup. Therefore, binary compatibility needs to be preserved
|
||||
// on changes to types. (Use versioned type names to manage
|
||||
// breaking changes.)
|
||||
//
|
||||
// Note: this functionality is not currently available in the official
|
||||
// protobuf release, and it is not used for type URLs beginning with
|
||||
// type.googleapis.com.
|
||||
//
|
||||
// Schemes other than `http`, `https` (or the empty scheme) might be
|
||||
// used with implementation specific semantics.
|
||||
//
|
||||
string type_url = 1;
|
||||
|
||||
// Must be a valid serialized protocol buffer of the above specified type.
|
||||
bytes value = 2;
|
||||
|
||||
option (gogoproto.typedecl) = false;
|
||||
}
|
||||
|
||||
option (gogoproto.goproto_registration) = false;
|
|
@ -0,0 +1,18 @@
|
|||
syntax = "proto3";
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/applications/transfer/v1/transfer.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];
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
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/cosmos-sdk/x/ibc/applications/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/applications/transfer/v1beta1/denom_traces/{hash}";
|
||||
}
|
||||
|
||||
// DenomTraces queries all denomination traces.
|
||||
rpc DenomTraces(QueryDenomTracesRequest) returns (QueryDenomTracesResponse) {
|
||||
option (google.api.http).get = "/ibc/applications/transfer/v1beta1/denom_traces";
|
||||
}
|
||||
|
||||
// Params queries all parameters of the ibc-transfer module.
|
||||
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
|
||||
option (google.api.http).get = "/ibc/applications/transfer/v1beta1/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;
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
syntax = "proto3";
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/applications/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\""];
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
syntax = "proto3";
|
||||
package ibc.applications.transfer.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/applications/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 {}
|
|
@ -0,0 +1,147 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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;
|
||||
}
|
|
@ -0,0 +1,367 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
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";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types";
|
||||
|
||||
// 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/v1beta1/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/v1beta1/channels";
|
||||
}
|
||||
|
||||
// ConnectionChannels queries all the channels associated with a connection
|
||||
// end.
|
||||
rpc ConnectionChannels(QueryConnectionChannelsRequest) returns (QueryConnectionChannelsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/channel/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/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;
|
||||
}
|
||||
|
||||
// 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];
|
||||
}
|
|
@ -0,0 +1,207 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.channel.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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 {}
|
|
@ -0,0 +1,74 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.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 client is
|
||||
// updated with the provided header. The update may fail if the header is not
|
||||
// valid given certain conditions specified by the client implementation.
|
||||
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 client_id = 3 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
||||
// the header used to update the client if the proposal passes
|
||||
google.protobuf.Any header = 4;
|
||||
}
|
||||
|
||||
// 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\""];
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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\""];
|
||||
}
|
|
@ -0,0 +1,130 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.client.v1;
|
||||
|
||||
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";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types";
|
||||
|
||||
// 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/v1beta1/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/v1beta1/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/v1beta1/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/v1beta1/consensus_states/{client_id}";
|
||||
}
|
||||
|
||||
// ClientParams queries all parameters of the ibc client.
|
||||
rpc ClientParams(QueryClientParamsRequest) returns (QueryClientParamsResponse) {
|
||||
option (google.api.http).get = "/ibc/client/v1beta1/params";
|
||||
}
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
|
@ -0,0 +1,96 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.client.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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 {}
|
|
@ -0,0 +1,40 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.commitment.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/23-commitment/types";
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "confio/proofs.proto";
|
||||
|
||||
// MerkleRoot defines a merkle root hash.
|
||||
// In the Cosmos SDK, the AppHash of a block header becomes the root.
|
||||
message MerkleRoot {
|
||||
option (gogoproto.goproto_getters) = false;
|
||||
|
||||
bytes hash = 1;
|
||||
}
|
||||
|
||||
// MerklePrefix is merkle path prefixed to the key.
|
||||
// The constructed key from the Path and the key will be append(Path.KeyPath,
|
||||
// append(Path.KeyPrefix, key...))
|
||||
message MerklePrefix {
|
||||
bytes key_prefix = 1 [(gogoproto.moretags) = "yaml:\"key_prefix\""];
|
||||
}
|
||||
|
||||
// MerklePath is the path used to verify commitment proofs, which can be an
|
||||
// arbitrary structured object (defined by a commitment type).
|
||||
// MerklePath is represented from root-to-leaf
|
||||
message MerklePath {
|
||||
option (gogoproto.goproto_stringer) = false;
|
||||
|
||||
repeated string key_path = 1 [(gogoproto.moretags) = "yaml:\"key_path\""];
|
||||
}
|
||||
|
||||
// MerkleProof is a wrapper type over a chain of CommitmentProofs.
|
||||
// It demonstrates membership or non-membership for an element or set of
|
||||
// elements, verifiable in conjunction with a known commitment root. Proofs
|
||||
// should be succinct.
|
||||
// MerkleProofs are ordered from leaf-to-root
|
||||
message MerkleProof {
|
||||
repeated ics23.CommitmentProof proofs = 1;
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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;
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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\""];
|
||||
}
|
|
@ -0,0 +1,137 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
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";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/core/03-connection/types";
|
||||
|
||||
// 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/v1beta1/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/v1beta1/connections";
|
||||
}
|
||||
|
||||
// ClientConnections queries the connection paths associated with a client
|
||||
// state.
|
||||
rpc ClientConnections(QueryClientConnectionsRequest) returns (QueryClientConnectionsResponse) {
|
||||
option (google.api.http).get = "/ibc/core/connection/v1beta1/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/v1beta1/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/v1beta1/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];
|
||||
}
|
|
@ -0,0 +1,115 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.connection.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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 {}
|
|
@ -0,0 +1,22 @@
|
|||
syntax = "proto3";
|
||||
package ibc.core.types.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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\""];
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
syntax = "proto3";
|
||||
package ibc.lightclients.localhost.v1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "ibc/core/client/v1/client.proto";
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/light-clients/09-localhost/types";
|
||||
|
||||
// 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];
|
||||
}
|
|
@ -0,0 +1,186 @@
|
|||
syntax = "proto3";
|
||||
package ibc.lightclients.solomachine.v1;
|
||||
|
||||
option go_package = "github.com/cosmos/cosmos-sdk/x/ibc/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
|
||||
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\""];
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue