-
Notifications
You must be signed in to change notification settings - Fork 36
/
tx.proto
275 lines (237 loc) · 11.6 KB
/
tx.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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
syntax = "proto3";
package provenance.marker.v1;
import "google/protobuf/any.proto";
import "cosmos_proto/cosmos.proto";
import "gogoproto/gogo.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/bank/v1beta1/bank.proto";
import "cosmos/msg/v1/msg.proto";
import "ibc/applications/transfer/v1/tx.proto";
import "provenance/marker/v1/marker.proto";
import "provenance/marker/v1/accessgrant.proto";
option go_package = "github.com/provenance-io/provenance/x/marker/types";
option java_package = "io.provenance.marker.v1";
option java_multiple_files = true;
// Msg defines the Marker Msg service.
service Msg {
// Finalize
rpc Finalize(MsgFinalizeRequest) returns (MsgFinalizeResponse);
// Activate
rpc Activate(MsgActivateRequest) returns (MsgActivateResponse);
// Cancel
rpc Cancel(MsgCancelRequest) returns (MsgCancelResponse);
// Delete
rpc Delete(MsgDeleteRequest) returns (MsgDeleteResponse);
// Mint
rpc Mint(MsgMintRequest) returns (MsgMintResponse);
// Burn
rpc Burn(MsgBurnRequest) returns (MsgBurnResponse);
// AddAccess
rpc AddAccess(MsgAddAccessRequest) returns (MsgAddAccessResponse);
// DeleteAccess
rpc DeleteAccess(MsgDeleteAccessRequest) returns (MsgDeleteAccessResponse);
// Withdraw
rpc Withdraw(MsgWithdrawRequest) returns (MsgWithdrawResponse);
// AddMarker
rpc AddMarker(MsgAddMarkerRequest) returns (MsgAddMarkerResponse);
// Transfer marker denominated coin between accounts
rpc Transfer(MsgTransferRequest) returns (MsgTransferResponse);
// Transfer over ibc any marker(including restricted markers) between ibc accounts.
// The relayer is still needed to accomplish ibc middleware relays.
rpc IbcTransfer(MsgIbcTransferRequest) returns (MsgIbcTransferResponse);
// Allows Denom Metadata (see bank module) to be set for the Marker's Denom
rpc SetDenomMetadata(MsgSetDenomMetadataRequest) returns (MsgSetDenomMetadataResponse);
// GrantAllowance grants fee allowance to the grantee on the granter's
// account with the provided expiration time.
rpc GrantAllowance(MsgGrantAllowanceRequest) returns (MsgGrantAllowanceResponse);
// AddFinalizeActivateMarker
rpc AddFinalizeActivateMarker(MsgAddFinalizeActivateMarkerRequest) returns (MsgAddFinalizeActivateMarkerResponse);
// SupplyIncreaseProposal can only be called via gov proposal
rpc SupplyIncreaseProposal(MsgSupplyIncreaseProposalRequest) returns (MsgSupplyIncreaseProposalResponse);
// UpdateRequiredAttributes will only succeed if signer has transfer authority
rpc UpdateRequiredAttributes(MsgUpdateRequiredAttributesRequest) returns (MsgUpdateRequiredAttributesResponse);
// UpdateForcedTransfer updates the allow_forced_transfer field of a marker via governance proposal.
rpc UpdateForcedTransfer(MsgUpdateForcedTransferRequest) returns (MsgUpdateForcedTransferResponse);
}
// MsgGrantAllowanceRequest validates permission to create a fee grant based on marker admin access. If
// successful a feegrant is recorded where the marker account itself is the grantor
message MsgGrantAllowanceRequest {
string denom = 1;
string administrator = 2;
// grantee is the address of the user being granted an allowance of another user's funds.
string grantee = 3;
// allowance can be any of basic and filtered fee allowance (fee FeeGrant module).
google.protobuf.Any allowance = 4 [(cosmos_proto.accepts_interface) = "FeeAllowanceI"];
}
// MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.
message MsgGrantAllowanceResponse {}
// MsgAddMarkerRequest defines the Msg/AddMarker request type.
// If being provided as a governance proposal, set the from_address to the gov module's account address.
message MsgAddMarkerRequest {
option (cosmos.msg.v1.signer) = "from_address";
cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"];
string manager = 3;
string from_address = 4;
MarkerStatus status = 5;
MarkerType marker_type = 6;
repeated AccessGrant access_list = 7 [(gogoproto.nullable) = false];
bool supply_fixed = 8;
bool allow_governance_control = 9;
bool allow_forced_transfer = 10;
repeated string required_attributes = 11;
}
// MsgAddMarkerResponse defines the Msg/AddMarker response type
message MsgAddMarkerResponse {}
// MsgAddAccessRequest defines the Msg/AddAccess request type
message MsgAddAccessRequest {
string denom = 1;
string administrator = 2;
repeated AccessGrant access = 3 [(gogoproto.nullable) = false];
}
// MsgAddAccessResponse defines the Msg/AddAccess response type
message MsgAddAccessResponse {}
// MsgDeleteAccessRequest defines the Msg/DeleteAccess request type
message MsgDeleteAccessRequest {
string denom = 1;
string administrator = 2;
string removed_address = 3;
}
// MsgDeleteAccessResponse defines the Msg/DeleteAccess response type
message MsgDeleteAccessResponse {}
// MsgFinalizeRequest defines the Msg/Finalize request type
message MsgFinalizeRequest {
string denom = 1;
string administrator = 2;
}
// MsgFinalizeResponse defines the Msg/Finalize response type
message MsgFinalizeResponse {}
// MsgActivateRequest defines the Msg/Activate request type
message MsgActivateRequest {
string denom = 1;
string administrator = 2;
}
// MsgActivateResponse defines the Msg/Activate response type
message MsgActivateResponse {}
// MsgCancelRequest defines the Msg/Cancel request type
message MsgCancelRequest {
string denom = 1;
string administrator = 2;
}
// MsgCancelResponse defines the Msg/Cancel response type
message MsgCancelResponse {}
// MsgDeleteRequest defines the Msg/Delete request type
message MsgDeleteRequest {
string denom = 1;
string administrator = 2;
}
// MsgDeleteResponse defines the Msg/Delete response type
message MsgDeleteResponse {}
// MsgMintRequest defines the Msg/Mint request type
message MsgMintRequest {
cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"];
string administrator = 2;
}
// MsgMintResponse defines the Msg/Mint response type
message MsgMintResponse {}
// MsgBurnRequest defines the Msg/Burn request type
message MsgBurnRequest {
cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"];
string administrator = 2;
}
// MsgBurnResponse defines the Msg/Burn response type
message MsgBurnResponse {}
// MsgWithdrawRequest defines the Msg/Withdraw request type
message MsgWithdrawRequest {
string denom = 1;
string administrator = 2;
string to_address = 3;
repeated cosmos.base.v1beta1.Coin amount = 4
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
}
// MsgWithdrawResponse defines the Msg/Withdraw response type
message MsgWithdrawResponse {}
// MsgTransferRequest defines the Msg/Transfer request type
message MsgTransferRequest {
cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"];
string administrator = 3;
string from_address = 4;
string to_address = 5;
}
// MsgTransferResponse defines the Msg/Transfer response type
message MsgTransferResponse {}
// MsgIbcTransferRequest defines the Msg/IbcTransfer request type for markers.
message MsgIbcTransferRequest {
ibc.applications.transfer.v1.MsgTransfer transfer = 1 [
(gogoproto.nullable) = false,
(gogoproto.customtype) = "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types.MsgTransfer"
];
string administrator = 2;
}
// MsgIbcTransferResponse defines the Msg/IbcTransfer response type
message MsgIbcTransferResponse {}
// MsgSetDenomMetadataRequest defines the Msg/SetDenomMetadata request type
message MsgSetDenomMetadataRequest {
cosmos.bank.v1beta1.Metadata metadata = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/x/bank/types.Metadata"];
string administrator = 2;
}
// MsgSetDenomMetadataResponse defines the Msg/SetDenomMetadata response type
message MsgSetDenomMetadataResponse {}
// MsgAddFinalizeActivateMarkerRequest defines the Msg/AddFinalizeActivateMarker request type
message MsgAddFinalizeActivateMarkerRequest {
cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"];
string manager = 3;
string from_address = 4;
MarkerType marker_type = 5;
repeated AccessGrant access_list = 6 [(gogoproto.nullable) = false];
bool supply_fixed = 7;
bool allow_governance_control = 8;
bool allow_forced_transfer = 9;
repeated string required_attributes = 10;
}
// MsgAddFinalizeActivateMarkerResponse defines the Msg/AddFinalizeActivateMarker response type
message MsgAddFinalizeActivateMarkerResponse {}
// MsgSupplyIncreaseProposalRequest defines a governance proposal to administer a marker and increase total supply of
// the marker through minting coin and placing it within the marker or assigning it directly to an account
message MsgSupplyIncreaseProposalRequest {
option (gogoproto.equal) = true;
option (cosmos.msg.v1.signer) = "authority";
cosmos.base.v1beta1.Coin amount = 1
[(gogoproto.nullable) = false, (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Coin"];
string target_address = 2; // an optional target address for the minted coin from this request
string authority = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // signer of the proposal
}
// MsgSupplyIncreaseProposalResponse defines the Msg/SupplyIncreaseProposal response type
message MsgSupplyIncreaseProposalResponse {}
// MsgUpdateRequiredAttributesRequest defines a msg to update/add/remove required attributes from a resticted marker
// signer must have transfer authority to change attributes, to update attribute add current to remove list and new to
// add list
message MsgUpdateRequiredAttributesRequest {
option (gogoproto.equal) = true;
option (cosmos.msg.v1.signer) = "transfer_authority";
string denom = 1;
repeated string remove_required_attributes = 2;
repeated string add_required_attributes = 3;
string transfer_authority = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // signer of the proposal
}
// MsgUpdateRequiredAttributesResponse defines the Msg/UpdateRequiredAttributes response type
message MsgUpdateRequiredAttributesResponse {}
// MsgUpdateForcedTransferRequest defines a msg to update the allow_forced_transfer field of a marker.
// It is only usable via governance proposal.
message MsgUpdateForcedTransferRequest {
option (gogoproto.equal) = true;
option (cosmos.msg.v1.signer) = "authority";
// The denomination of the marker to update.
string denom = 1;
// Whether an admin can transfer restricted coins from a 3rd-party account without their signature.
bool allow_forced_transfer = 2;
// The signer of this message. Must be the governance module account address.
string authority = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// MsgUpdateForcedTransferResponse defines the Msg/UpdateForcedTransferResponse response type
message MsgUpdateForcedTransferResponse {}