-
Notifications
You must be signed in to change notification settings - Fork 586
/
client.proto
118 lines (105 loc) · 4.53 KB
/
client.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
syntax = "proto3";
package ibc.core.client.v1;
option go_package = "github.com/cosmos/ibc-go/modules/core/02-client/types";
import "gogoproto/gogo.proto";
import "google/protobuf/any.proto";
import "cosmos/upgrade/v1beta1/upgrade.proto";
// IdentifiedClientState defines a client state with an additional client
// identifier field.
message IdentifiedClientState {
// client identifier
string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ];
// client state
google.protobuf.Any client_state = 2
[ (gogoproto.moretags) = "yaml:\"client_state\"" ];
}
// ConsensusStateWithHeight defines a consensus state with an additional height
// field.
message ConsensusStateWithHeight {
// consensus state height
Height height = 1 [ (gogoproto.nullable) = false ];
// consensus state
google.protobuf.Any consensus_state = 2
[ (gogoproto.moretags) = "yaml\"consensus_state\"" ];
}
// ClientConsensusStates defines all the stored consensus states for a given
// client.
message ClientConsensusStates {
// client identifier
string client_id = 1 [ (gogoproto.moretags) = "yaml:\"client_id\"" ];
// consensus states and their heights associated with the client
repeated ConsensusStateWithHeight consensus_states = 2 [
(gogoproto.moretags) = "yaml:\"consensus_states\"",
(gogoproto.nullable) = false
];
}
// ClientUpdateProposal is a governance proposal. If it passes, the substitute
// client's consensus states starting from the 'initial height' are copied over
// to the subjects client state. The proposal handler may fail if the subject
// and the substitute do not match in client and chain parameters (with
// exception to latest height, frozen height, and chain-id). The updated client
// must also be valid (cannot be expired).
message ClientUpdateProposal {
option (gogoproto.goproto_getters) = false;
// the title of the update proposal
string title = 1;
// the description of the proposal
string description = 2;
// the client identifier for the client to be updated if the proposal passes
string subject_client_id = 3
[ (gogoproto.moretags) = "yaml:\"subject_client_id\"" ];
// the substitute client identifier for the client standing in for the subject
// client
string substitute_client_id = 4
[ (gogoproto.moretags) = "yaml:\"susbtitute_client_id\"" ];
// the intital height to copy consensus states from the substitute to the
// subject
Height initial_height = 5 [
(gogoproto.moretags) = "yaml:\"initial_height\"",
(gogoproto.nullable) = false
];
}
// UpgradeProposal is a gov Content type for initiating an IBC breaking
// upgrade.
message UpgradeProposal {
option (gogoproto.goproto_getters) = false;
option (gogoproto.goproto_stringer) = false;
option (gogoproto.equal) = true;
string title = 1;
string description = 2;
cosmos.upgrade.v1beta1.Plan plan = 3 [ (gogoproto.nullable) = false ];
// An UpgradedClientState must be provided to perform an IBC breaking upgrade.
// This will make the chain commit to the correct upgraded (self) client state
// before the upgrade occurs, so that connecting chains can verify that the
// new upgraded client is valid by verifying a proof on the previous version
// of the chain. This will allow IBC connections to persist smoothly across
// planned chain upgrades
google.protobuf.Any upgraded_client_state = 4
[ (gogoproto.moretags) = "yaml:\"upgraded_client_state\"" ];
}
// Height is a monotonically increasing data type
// that can be compared against another Height for the purposes of updating and
// freezing clients
//
// Normally the RevisionHeight is incremented at each height while keeping
// RevisionNumber the same. However some consensus algorithms may choose to
// reset the height in certain conditions e.g. hard forks, state-machine
// breaking changes In these cases, the RevisionNumber is incremented so that
// height continues to be monitonically increasing even as the RevisionHeight
// gets reset
message Height {
option (gogoproto.goproto_getters) = false;
option (gogoproto.goproto_stringer) = false;
// the revision that the client is currently on
uint64 revision_number = 1
[ (gogoproto.moretags) = "yaml:\"revision_number\"" ];
// the height within the given revision
uint64 revision_height = 2
[ (gogoproto.moretags) = "yaml:\"revision_height\"" ];
}
// Params defines the set of IBC light client parameters.
message Params {
// allowed_clients defines the list of allowed client state types.
repeated string allowed_clients = 1
[ (gogoproto.moretags) = "yaml:\"allowed_clients\"" ];
}