Fix gov v1beta1 support for legacy propsals (#1715)

* Revert "Remove gov v1beta1 dependencies and deprecated proposals (#1646)"

This reverts commit e0da419409.

* Rename legacy propsal files

* Ensure gov store support for v1beta1 types

* Linter

* Cleanup alias
This commit is contained in:
Alexander Peters
2023-11-15 08:29:33 +01:00
committed by GitHub
parent 6f8c0a9505
commit 2a82e35243
12 changed files with 9409 additions and 409 deletions

View File

@@ -41,6 +41,21 @@
- [MsgIBCSend](#cosmwasm.wasm.v1.MsgIBCSend)
- [MsgIBCSendResponse](#cosmwasm.wasm.v1.MsgIBCSendResponse)
- [cosmwasm/wasm/v1/proposal_legacy.proto](#cosmwasm/wasm/v1/proposal_legacy.proto)
- [AccessConfigUpdate](#cosmwasm.wasm.v1.AccessConfigUpdate)
- [ClearAdminProposal](#cosmwasm.wasm.v1.ClearAdminProposal)
- [ExecuteContractProposal](#cosmwasm.wasm.v1.ExecuteContractProposal)
- [InstantiateContract2Proposal](#cosmwasm.wasm.v1.InstantiateContract2Proposal)
- [InstantiateContractProposal](#cosmwasm.wasm.v1.InstantiateContractProposal)
- [MigrateContractProposal](#cosmwasm.wasm.v1.MigrateContractProposal)
- [PinCodesProposal](#cosmwasm.wasm.v1.PinCodesProposal)
- [StoreAndInstantiateContractProposal](#cosmwasm.wasm.v1.StoreAndInstantiateContractProposal)
- [StoreCodeProposal](#cosmwasm.wasm.v1.StoreCodeProposal)
- [SudoContractProposal](#cosmwasm.wasm.v1.SudoContractProposal)
- [UnpinCodesProposal](#cosmwasm.wasm.v1.UnpinCodesProposal)
- [UpdateAdminProposal](#cosmwasm.wasm.v1.UpdateAdminProposal)
- [UpdateInstantiateConfigProposal](#cosmwasm.wasm.v1.UpdateInstantiateConfigProposal)
- [cosmwasm/wasm/v1/query.proto](#cosmwasm/wasm/v1/query.proto)
- [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse)
- [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest)
@@ -69,7 +84,6 @@
- [Query](#cosmwasm.wasm.v1.Query)
- [cosmwasm/wasm/v1/tx.proto](#cosmwasm/wasm/v1/tx.proto)
- [AccessConfigUpdate](#cosmwasm.wasm.v1.AccessConfigUpdate)
- [MsgAddCodeUploadParamsAddresses](#cosmwasm.wasm.v1.MsgAddCodeUploadParamsAddresses)
- [MsgAddCodeUploadParamsAddressesResponse](#cosmwasm.wasm.v1.MsgAddCodeUploadParamsAddressesResponse)
- [MsgClearAdmin](#cosmwasm.wasm.v1.MsgClearAdmin)
@@ -625,6 +639,316 @@ MsgIBCSendResponse
<!-- end messages -->
<!-- end enums -->
<!-- end HasExtensions -->
<!-- end services -->
<a name="cosmwasm/wasm/v1/proposal_legacy.proto"></a>
<p align="right"><a href="#top">Top</a></p>
## cosmwasm/wasm/v1/proposal_legacy.proto
<a name="cosmwasm.wasm.v1.AccessConfigUpdate"></a>
### AccessConfigUpdate
AccessConfigUpdate contains the code id and the access config to be
applied.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code to be updated |
| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply to the set of code ids |
<a name="cosmwasm.wasm.v1.ClearAdminProposal"></a>
### ClearAdminProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit ClearAdminProposal. To clear the admin of a contract,
a simple MsgClearAdmin can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `contract` | [string](#string) | | Contract is the address of the smart contract |
<a name="cosmwasm.wasm.v1.ExecuteContractProposal"></a>
### ExecuteContractProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit ExecuteContractProposal. To call execute on a contract,
a simple MsgExecuteContract can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender |
| `contract` | [string](#string) | | Contract is the address of the smart contract |
| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract as execute |
| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation |
<a name="cosmwasm.wasm.v1.InstantiateContract2Proposal"></a>
### InstantiateContract2Proposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit InstantiateContract2Proposal. To instantiate contract 2,
a simple MsgInstantiateContract2 can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's enviroment as sender |
| `admin` | [string](#string) | | Admin is an optional address that can execute migrations |
| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code |
| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. |
| `msg` | [bytes](#bytes) | | Msg json encode message to be passed to the contract on instantiation |
| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation |
| `salt` | [bytes](#bytes) | | Salt is an arbitrary value provided by the sender. Size can be 1 to 64. |
| `fix_msg` | [bool](#bool) | | FixMsg include the msg value into the hash for the predictable address. Default is false |
<a name="cosmwasm.wasm.v1.InstantiateContractProposal"></a>
### InstantiateContractProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit InstantiateContractProposal. To instantiate a contract,
a simple MsgInstantiateContract can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender |
| `admin` | [string](#string) | | Admin is an optional address that can execute migrations |
| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code |
| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. |
| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation |
| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation |
<a name="cosmwasm.wasm.v1.MigrateContractProposal"></a>
### MigrateContractProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit MigrateContractProposal. To migrate a contract,
a simple MsgMigrateContract can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text
Note: skipping 3 as this was previously used for unneeded run_as |
| `contract` | [string](#string) | | Contract is the address of the smart contract |
| `code_id` | [uint64](#uint64) | | CodeID references the new WASM code |
| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration |
<a name="cosmwasm.wasm.v1.PinCodesProposal"></a>
### PinCodesProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit PinCodesProposal. To pin a set of code ids in the wasmvm
cache, a simple MsgPinCodes can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `code_ids` | [uint64](#uint64) | repeated | CodeIDs references the new WASM codes |
<a name="cosmwasm.wasm.v1.StoreAndInstantiateContractProposal"></a>
### StoreAndInstantiateContractProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit StoreAndInstantiateContractProposal. To store and instantiate
the contract, a simple MsgStoreAndInstantiateContract can be invoked from
the x/gov module via a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender |
| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed |
| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional |
| `unpin_code` | [bool](#bool) | | UnpinCode code on upload, optional |
| `admin` | [string](#string) | | Admin is an optional address that can execute migrations |
| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. |
| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation |
| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation |
| `source` | [string](#string) | | Source is the URL where the code is hosted |
| `builder` | [string](#string) | | Builder is the docker image used to build the code deterministically, used for smart contract verification |
| `code_hash` | [bytes](#bytes) | | CodeHash is the SHA256 sum of the code outputted by builder, used for smart contract verification |
<a name="cosmwasm.wasm.v1.StoreCodeProposal"></a>
### StoreCodeProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit StoreCodeProposal. To submit WASM code to the system,
a simple MsgStoreCode can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender |
| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed |
| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional |
| `unpin_code` | [bool](#bool) | | UnpinCode code on upload, optional |
| `source` | [string](#string) | | Source is the URL where the code is hosted |
| `builder` | [string](#string) | | Builder is the docker image used to build the code deterministically, used for smart contract verification |
| `code_hash` | [bytes](#bytes) | | CodeHash is the SHA256 sum of the code outputted by builder, used for smart contract verification |
<a name="cosmwasm.wasm.v1.SudoContractProposal"></a>
### SudoContractProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit SudoContractProposal. To call sudo on a contract,
a simple MsgSudoContract can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `contract` | [string](#string) | | Contract is the address of the smart contract |
| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract as sudo |
<a name="cosmwasm.wasm.v1.UnpinCodesProposal"></a>
### UnpinCodesProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit UnpinCodesProposal. To unpin a set of code ids in the wasmvm
cache, a simple MsgUnpinCodes can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `code_ids` | [uint64](#uint64) | repeated | CodeIDs references the WASM codes |
<a name="cosmwasm.wasm.v1.UpdateAdminProposal"></a>
### UpdateAdminProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit UpdateAdminProposal. To set an admin for a contract,
a simple MsgUpdateAdmin can be invoked from the x/gov module via
a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `new_admin` | [string](#string) | | NewAdmin address to be set |
| `contract` | [string](#string) | | Contract is the address of the smart contract |
<a name="cosmwasm.wasm.v1.UpdateInstantiateConfigProposal"></a>
### UpdateInstantiateConfigProposal
Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
an explicit UpdateInstantiateConfigProposal. To update instantiate config
to a set of code ids, a simple MsgUpdateInstantiateConfig can be invoked from
the x/gov module via a v1 governance proposal.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `title` | [string](#string) | | Title is a short summary |
| `description` | [string](#string) | | Description is a human readable text |
| `access_config_updates` | [AccessConfigUpdate](#cosmwasm.wasm.v1.AccessConfigUpdate) | repeated | AccessConfigUpdate contains the list of code ids and the access config to be applied. |
<!-- end messages -->
<!-- end enums -->
@@ -1051,23 +1375,6 @@ Query provides defines the gRPC querier service
<a name="cosmwasm.wasm.v1.AccessConfigUpdate"></a>
### AccessConfigUpdate
AccessConfigUpdate contains the code id and the access config to be
applied.
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code to be updated |
| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply to the set of code ids |
<a name="cosmwasm.wasm.v1.MsgAddCodeUploadParamsAddresses"></a>
### MsgAddCodeUploadParamsAddresses

View File

@@ -0,0 +1,333 @@
syntax = "proto3";
package cosmwasm.wasm.v1;
import "gogoproto/gogo.proto";
import "cosmos_proto/cosmos.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmwasm/wasm/v1/types.proto";
import "amino/amino.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;
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit StoreCodeProposal. To submit WASM code to the system,
// a simple MsgStoreCode can be invoked from the x/gov module via
// a v1 governance proposal.
message StoreCodeProposal {
option deprecated = true;
option (amino.name) = "wasm/StoreCodeProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// WASMByteCode can be raw or gzip compressed
bytes wasm_byte_code = 4 [ (gogoproto.customname) = "WASMByteCode" ];
// Used in v1beta1
reserved 5, 6;
// InstantiatePermission to apply on contract creation, optional
AccessConfig instantiate_permission = 7;
// UnpinCode code on upload, optional
bool unpin_code = 8;
// Source is the URL where the code is hosted
string source = 9;
// Builder is the docker image used to build the code deterministically, used
// for smart contract verification
string builder = 10;
// CodeHash is the SHA256 sum of the code outputted by builder, used for smart
// contract verification
bytes code_hash = 11;
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit InstantiateContractProposal. To instantiate a contract,
// a simple MsgInstantiateContract can be invoked from the x/gov module via
// a v1 governance proposal.
message InstantiateContractProposal {
option deprecated = true;
option (amino.name) = "wasm/InstantiateContractProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Admin is an optional address that can execute migrations
string admin = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// 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;
// Msg json encoded message to be passed to the contract on instantiation
bytes msg = 7 [ (gogoproto.casttype) = "RawContractMessage" ];
// Funds coins that are transferred to the contract on instantiation
repeated cosmos.base.v1beta1.Coin funds = 8 [
(gogoproto.nullable) = false,
(amino.dont_omitempty) = true,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit InstantiateContract2Proposal. To instantiate contract 2,
// a simple MsgInstantiateContract2 can be invoked from the x/gov module via
// a v1 governance proposal.
message InstantiateContract2Proposal {
option deprecated = true;
option (amino.name) = "wasm/InstantiateContract2Proposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 enviroment as sender
string run_as = 3 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Admin is an optional address that can execute migrations
string admin = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// 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;
// Msg json encode message to be passed to the contract on instantiation
bytes msg = 7 [ (gogoproto.casttype) = "RawContractMessage" ];
// Funds coins that are transferred to the contract on instantiation
repeated cosmos.base.v1beta1.Coin funds = 8 [
(gogoproto.nullable) = false,
(amino.dont_omitempty) = true,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
// Salt is an arbitrary value provided by the sender. Size can be 1 to 64.
bytes salt = 9;
// FixMsg include the msg value into the hash for the predictable address.
// Default is false
bool fix_msg = 10;
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit MigrateContractProposal. To migrate a contract,
// a simple MsgMigrateContract can be invoked from the x/gov module via
// a v1 governance proposal.
message MigrateContractProposal {
option deprecated = true;
option (amino.name) = "wasm/MigrateContractProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// Title is a short summary
string title = 1;
// Description is a human readable text
string description = 2;
// Note: skipping 3 as this was previously used for unneeded run_as
// Contract is the address of the smart contract
string contract = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeID references the new WASM code
uint64 code_id = 5 [ (gogoproto.customname) = "CodeID" ];
// Msg json encoded message to be passed to the contract on migration
bytes msg = 6 [ (gogoproto.casttype) = "RawContractMessage" ];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit SudoContractProposal. To call sudo on a contract,
// a simple MsgSudoContract can be invoked from the x/gov module via
// a v1 governance proposal.
message SudoContractProposal {
option deprecated = true;
option (amino.name) = "wasm/SudoContractProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Msg json encoded message to be passed to the contract as sudo
bytes msg = 4 [ (gogoproto.casttype) = "RawContractMessage" ];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit ExecuteContractProposal. To call execute on a contract,
// a simple MsgExecuteContract can be invoked from the x/gov module via
// a v1 governance proposal.
message ExecuteContractProposal {
option deprecated = true;
option (amino.name) = "wasm/ExecuteContractProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Contract is the address of the smart contract
string contract = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Msg json encoded message to be passed to the contract as execute
bytes msg = 5 [ (gogoproto.casttype) = "RawContractMessage" ];
// Funds coins that are transferred to the contract on instantiation
repeated cosmos.base.v1beta1.Coin funds = 6 [
(gogoproto.nullable) = false,
(amino.dont_omitempty) = true,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit UpdateAdminProposal. To set an admin for a contract,
// a simple MsgUpdateAdmin can be invoked from the x/gov module via
// a v1 governance proposal.
message UpdateAdminProposal {
option deprecated = true;
option (amino.name) = "wasm/UpdateAdminProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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\"",
(cosmos_proto.scalar) = "cosmos.AddressString"
];
// Contract is the address of the smart contract
string contract = 4 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit ClearAdminProposal. To clear the admin of a contract,
// a simple MsgClearAdmin can be invoked from the x/gov module via
// a v1 governance proposal.
message ClearAdminProposal {
option deprecated = true;
option (amino.name) = "wasm/ClearAdminProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit PinCodesProposal. To pin a set of code ids in the wasmvm
// cache, a simple MsgPinCodes can be invoked from the x/gov module via
// a v1 governance proposal.
message PinCodesProposal {
option deprecated = true;
option (amino.name) = "wasm/PinCodesProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// Title is a short summary
string title = 1;
// Description is a human readable text
string description = 2;
// CodeIDs references the new WASM codes
repeated uint64 code_ids = 3 [
(gogoproto.customname) = "CodeIDs",
(gogoproto.moretags) = "yaml:\"code_ids\""
];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit UnpinCodesProposal. To unpin a set of code ids in the wasmvm
// cache, a simple MsgUnpinCodes can be invoked from the x/gov module via
// a v1 governance proposal.
message UnpinCodesProposal {
option deprecated = true;
option (amino.name) = "wasm/UnpinCodesProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// Title is a short summary
string title = 1;
// Description is a human readable text
string description = 2;
// CodeIDs references the WASM codes
repeated uint64 code_ids = 3 [
(gogoproto.customname) = "CodeIDs",
(gogoproto.moretags) = "yaml:\"code_ids\""
];
}
// AccessConfigUpdate contains the code id and the access config to be
// applied.
message AccessConfigUpdate {
// CodeID is the reference to the stored WASM code to be updated
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
// InstantiatePermission to apply to the set of code ids
AccessConfig instantiate_permission = 2
[ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit UpdateInstantiateConfigProposal. To update instantiate config
// to a set of code ids, a simple MsgUpdateInstantiateConfig can be invoked from
// the x/gov module via a v1 governance proposal.
message UpdateInstantiateConfigProposal {
option deprecated = true;
option (amino.name) = "wasm/UpdateInstantiateConfigProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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\"" ];
// AccessConfigUpdate contains the list of code ids and the access config
// to be applied.
repeated AccessConfigUpdate access_config_updates = 3
[ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ];
}
// Deprecated: Do not use. Since wasmd v0.40, there is no longer a need for
// an explicit StoreAndInstantiateContractProposal. To store and instantiate
// the contract, a simple MsgStoreAndInstantiateContract can be invoked from
// the x/gov module via a v1 governance proposal.
message StoreAndInstantiateContractProposal {
option deprecated = true;
option (amino.name) = "wasm/StoreAndInstantiateContractProposal";
option (cosmos_proto.implements_interface) = "cosmos.gov.v1beta1.Content";
// 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 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// WASMByteCode can be raw or gzip compressed
bytes wasm_byte_code = 4 [ (gogoproto.customname) = "WASMByteCode" ];
// InstantiatePermission to apply on contract creation, optional
AccessConfig instantiate_permission = 5;
// UnpinCode code on upload, optional
bool unpin_code = 6;
// Admin is an optional address that can execute migrations
string admin = 7;
// Label is optional metadata to be stored with a constract instance.
string label = 8;
// Msg json encoded message to be passed to the contract on instantiation
bytes msg = 9 [ (gogoproto.casttype) = "RawContractMessage" ];
// Funds coins that are transferred to the contract on instantiation
repeated cosmos.base.v1beta1.Coin funds = 10 [
(gogoproto.nullable) = false,
(amino.dont_omitempty) = true,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"
];
// Source is the URL where the code is hosted
string source = 11;
// Builder is the docker image used to build the code deterministically, used
// for smart contract verification
string builder = 12;
// CodeHash is the SHA256 sum of the code outputted by builder, used for smart
// contract verification
bytes code_hash = 13;
}

View File

@@ -254,16 +254,6 @@ message MsgClearAdmin {
// MsgClearAdminResponse returns empty data
message MsgClearAdminResponse {}
// AccessConfigUpdate contains the code id and the access config to be
// applied.
message AccessConfigUpdate {
// CodeID is the reference to the stored WASM code to be updated
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
// InstantiatePermission to apply to the set of code ids
AccessConfig instantiate_permission = 2
[ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ];
}
// MsgUpdateInstantiateConfig updates instantiate config for a smart contract
message MsgUpdateInstantiateConfig {
option (amino.name) = "wasm/MsgUpdateInstantiateConfig";

View File

@@ -35,8 +35,6 @@ import (
"github.com/CosmWasm/wasmd/x/wasm/types"
)
const firstCodeID = 1
func TestGenesisExportImport(t *testing.T) {
wasmKeeper, srcCtx := setupKeeper(t)
contractKeeper := NewGovPermissionKeeper(wasmKeeper)
@@ -187,7 +185,7 @@ func TestGenesisInit(t *testing.T) {
"happy path: code info correct": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -202,7 +200,7 @@ func TestGenesisInit(t *testing.T) {
"happy path: code ids can contain gaps": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}, {
@@ -225,7 +223,7 @@ func TestGenesisInit(t *testing.T) {
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}, {
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -240,7 +238,7 @@ func TestGenesisInit(t *testing.T) {
},
"prevent code hash mismatch": {src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: types.CodeInfoFixture(func(i *types.CodeInfo) { i.CodeHash = make([]byte, sha256.Size) }),
CodeBytes: wasmCode,
}},
@@ -249,12 +247,12 @@ func TestGenesisInit(t *testing.T) {
"prevent duplicate codeIDs": {src: types.GenesisState{
Codes: []types.Code{
{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
},
{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
},
@@ -265,7 +263,7 @@ func TestGenesisInit(t *testing.T) {
src: types.GenesisState{
Codes: []types.Code{
{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
Pinned: true,
@@ -283,7 +281,7 @@ func TestGenesisInit(t *testing.T) {
"happy path: code id in info and contract do match": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -312,7 +310,7 @@ func TestGenesisInit(t *testing.T) {
"happy path: code info with two contracts": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -371,7 +369,7 @@ func TestGenesisInit(t *testing.T) {
"prevent duplicate contract address": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -406,7 +404,7 @@ func TestGenesisInit(t *testing.T) {
"prevent duplicate contract model keys": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -462,7 +460,7 @@ func TestGenesisInit(t *testing.T) {
"prevent contract id seq init value not high enough": {
src: types.GenesisState{
Codes: []types.Code{{
CodeID: firstCodeID,
CodeID: 1,
CodeInfo: myCodeInfo,
CodeBytes: wasmCode,
}},
@@ -618,7 +616,7 @@ func TestImportContractWithCodeHistoryPreserved(t *testing.T) {
adminAddr := "cosmos1h5t8zxmjr30e9dqghtlpl40f2zz5cgey6esxtn"
expContractInfo := types.ContractInfo{
CodeID: firstCodeID,
CodeID: 1,
Creator: contractCreatorAddr,
Admin: adminAddr,
Label: "ȀĴnZV芢毤",
@@ -629,7 +627,7 @@ func TestImportContractWithCodeHistoryPreserved(t *testing.T) {
expHistory := []types.ContractCodeHistoryEntry{
{
Operation: types.ContractCodeHistoryOperationTypeInit,
CodeID: firstCodeID,
CodeID: 1,
Updated: &types.AbsoluteTxPosition{
BlockHeight: 100,
TxIndex: 10,
@@ -638,7 +636,7 @@ func TestImportContractWithCodeHistoryPreserved(t *testing.T) {
},
{
Operation: types.ContractCodeHistoryOperationTypeMigrate,
CodeID: firstCodeID,
CodeID: 1,
Updated: &types.AbsoluteTxPosition{
BlockHeight: 200,
TxIndex: 10,

View File

@@ -0,0 +1,342 @@
package keeper
import (
"bytes"
"encoding/hex"
"fmt"
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
"github.com/CosmWasm/wasmd/x/wasm/types"
)
// NewLegacyWasmProposalHandler creates a new governance Handler for wasm proposals
//
// Deprecated: Do not use v1beta1 handlers anymore. Gov v1 is the way to go
func NewLegacyWasmProposalHandler(k decoratedKeeper, enabledProposalTypes []types.ProposalType) v1beta1.Handler {
return NewLegacyWasmProposalHandlerX(NewGovPermissionKeeper(k), enabledProposalTypes)
}
// NewLegacyWasmProposalHandlerX creates a new governance Handler for wasm proposals
//
// Deprecated: Do not use v1beta1 handlers anymore. Gov v1 is the way to go
func NewLegacyWasmProposalHandlerX(k types.ContractOpsKeeper, enabledProposalTypes []types.ProposalType) v1beta1.Handler {
enabledTypes := make(map[string]struct{}, len(enabledProposalTypes))
for i := range enabledProposalTypes {
enabledTypes[string(enabledProposalTypes[i])] = struct{}{}
}
return func(ctx sdk.Context, content v1beta1.Content) error {
if content == nil {
return errorsmod.Wrap(sdkerrors.ErrUnknownRequest, "content must not be empty")
}
if _, ok := enabledTypes[content.ProposalType()]; !ok {
return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unsupported wasm proposal content type: %q", content.ProposalType())
}
switch c := content.(type) {
case *types.StoreCodeProposal:
return handleStoreCodeProposal(ctx, k, *c)
case *types.InstantiateContractProposal:
return handleInstantiateProposal(ctx, k, *c)
case *types.InstantiateContract2Proposal:
return handleInstantiate2Proposal(ctx, k, *c)
case *types.MigrateContractProposal:
return handleMigrateProposal(ctx, k, *c)
case *types.SudoContractProposal:
return handleSudoProposal(ctx, k, *c)
case *types.ExecuteContractProposal:
return handleExecuteProposal(ctx, k, *c)
case *types.UpdateAdminProposal:
return handleUpdateAdminProposal(ctx, k, *c)
case *types.ClearAdminProposal:
return handleClearAdminProposal(ctx, k, *c)
case *types.PinCodesProposal:
return handlePinCodesProposal(ctx, k, *c)
case *types.UnpinCodesProposal:
return handleUnpinCodesProposal(ctx, k, *c)
case *types.UpdateInstantiateConfigProposal:
return handleUpdateInstantiateConfigProposal(ctx, k, *c)
case *types.StoreAndInstantiateContractProposal:
return handleStoreAndInstantiateContractProposal(ctx, k, *c)
default:
return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized wasm proposal content type: %T", c)
}
}
}
//nolint:staticcheck
func handleStoreCodeProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.StoreCodeProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
if err != nil {
return errorsmod.Wrap(err, "run as address")
}
codeID, checksum, err := k.Create(ctx, runAsAddr, p.WASMByteCode, p.InstantiatePermission)
if err != nil {
return err
}
if len(p.CodeHash) != 0 && !bytes.Equal(checksum, p.CodeHash) {
return fmt.Errorf("code-hash mismatch: %X, checksum: %X", p.CodeHash, checksum)
}
// if code should not be pinned return earlier
if p.UnpinCode {
return nil
}
return k.PinCode(ctx, codeID)
}
//nolint:staticcheck
func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.InstantiateContractProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
if err != nil {
return errorsmod.Wrap(err, "run as address")
}
var adminAddr sdk.AccAddress
if p.Admin != "" {
if adminAddr, err = sdk.AccAddressFromBech32(p.Admin); err != nil {
return errorsmod.Wrap(err, "admin")
}
}
_, data, err := k.Instantiate(ctx, p.CodeID, runAsAddr, adminAddr, p.Msg, p.Label, p.Funds)
if err != nil {
return err
}
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeGovContractResult,
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
))
return nil
}
//nolint:staticcheck
func handleInstantiate2Proposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.InstantiateContract2Proposal) error {
// Validatebasic with proposal
if err := p.ValidateBasic(); err != nil {
return err
}
// Get runAsAddr as AccAddress
runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
if err != nil {
return errorsmod.Wrap(err, "run as address")
}
// Get admin address
var adminAddr sdk.AccAddress
if p.Admin != "" {
if adminAddr, err = sdk.AccAddressFromBech32(p.Admin); err != nil {
return errorsmod.Wrap(err, "admin")
}
}
_, data, err := k.Instantiate2(ctx, p.CodeID, runAsAddr, adminAddr, p.Msg, p.Label, p.Funds, p.Salt, p.FixMsg)
if err != nil {
return err
}
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeGovContractResult,
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
))
return nil
}
//nolint:staticcheck
func handleStoreAndInstantiateContractProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.StoreAndInstantiateContractProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
if err != nil {
return errorsmod.Wrap(err, "run as address")
}
var adminAddr sdk.AccAddress
if p.Admin != "" {
if adminAddr, err = sdk.AccAddressFromBech32(p.Admin); err != nil {
return errorsmod.Wrap(err, "admin")
}
}
codeID, checksum, err := k.Create(ctx, runAsAddr, p.WASMByteCode, p.InstantiatePermission)
if err != nil {
return err
}
if p.CodeHash != nil && !bytes.Equal(checksum, p.CodeHash) {
return errorsmod.Wrap(fmt.Errorf("code-hash mismatch: %X, checksum: %X", p.CodeHash, checksum), "code-hash mismatch")
}
if !p.UnpinCode {
if err := k.PinCode(ctx, codeID); err != nil {
return err
}
}
_, data, err := k.Instantiate(ctx, codeID, runAsAddr, adminAddr, p.Msg, p.Label, p.Funds)
if err != nil {
return err
}
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeGovContractResult,
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
))
return nil
}
//nolint:staticcheck
func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.MigrateContractProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
if err != nil {
return errorsmod.Wrap(err, "contract")
}
// runAs is not used if this is permissioned, so just put any valid address there (second contractAddr)
data, err := k.Migrate(ctx, contractAddr, contractAddr, p.CodeID, p.Msg)
if err != nil {
return err
}
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeGovContractResult,
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
))
return nil
}
//nolint:staticcheck
func handleSudoProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.SudoContractProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
if err != nil {
return errorsmod.Wrap(err, "contract")
}
data, err := k.Sudo(ctx, contractAddr, p.Msg)
if err != nil {
return err
}
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeGovContractResult,
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
))
return nil
}
//nolint:staticcheck
func handleExecuteProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.ExecuteContractProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
if err != nil {
return errorsmod.Wrap(err, "contract")
}
runAsAddr, err := sdk.AccAddressFromBech32(p.RunAs)
if err != nil {
return errorsmod.Wrap(err, "run as address")
}
data, err := k.Execute(ctx, contractAddr, runAsAddr, p.Msg, p.Funds)
if err != nil {
return err
}
ctx.EventManager().EmitEvent(sdk.NewEvent(
types.EventTypeGovContractResult,
sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)),
))
return nil
}
//nolint:staticcheck
func handleUpdateAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.UpdateAdminProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
if err != nil {
return errorsmod.Wrap(err, "contract")
}
newAdminAddr, err := sdk.AccAddressFromBech32(p.NewAdmin)
if err != nil {
return errorsmod.Wrap(err, "run as address")
}
return k.UpdateContractAdmin(ctx, contractAddr, nil, newAdminAddr)
}
//nolint:staticcheck
func handleClearAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.ClearAdminProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
contractAddr, err := sdk.AccAddressFromBech32(p.Contract)
if err != nil {
return errorsmod.Wrap(err, "contract")
}
err = k.ClearContractAdmin(ctx, contractAddr, nil)
return err
}
//nolint:staticcheck
func handlePinCodesProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.PinCodesProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
for _, v := range p.CodeIDs {
if err := k.PinCode(ctx, v); err != nil {
return errorsmod.Wrapf(err, "code id: %d", v)
}
}
return nil
}
//nolint:staticcheck
func handleUnpinCodesProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.UnpinCodesProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
for _, v := range p.CodeIDs {
if err := k.UnpinCode(ctx, v); err != nil {
return errorsmod.Wrapf(err, "code id: %d", v)
}
}
return nil
}
//nolint:staticcheck
func handleUpdateInstantiateConfigProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.UpdateInstantiateConfigProposal) error {
if err := p.ValidateBasic(); err != nil {
return err
}
var emptyCaller sdk.AccAddress
for _, accessConfigUpdate := range p.AccessConfigUpdates {
if err := k.SetAccessConfig(ctx, accessConfigUpdate.CodeID, emptyCaller, accessConfigUpdate.InstantiatePermission); err != nil {
return errorsmod.Wrapf(err, "code id: %d", accessConfigUpdate.CodeID)
}
}
return nil
}

View File

@@ -0,0 +1,226 @@
package keeper
import (
"encoding/hex"
"encoding/json"
"fmt"
"testing"
wasmvmtypes "github.com/CosmWasm/wasmvm/types"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
sdkmath "cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
"github.com/CosmWasm/wasmd/x/wasm/keeper/testdata"
"github.com/CosmWasm/wasmd/x/wasm/types"
)
func TestLoadStoredGovV1Beta1LegacyTypes(t *testing.T) {
pCtx, keepers := CreateTestInput(t, false, ReflectCapabilities+",iterator")
k := keepers.WasmKeeper
keepers.GovKeeper.SetLegacyRouter(v1beta1.NewRouter().
AddRoute(types.ModuleName, NewLegacyWasmProposalHandler(k, types.EnableAllProposals)),
)
myAddress := RandomAccountAddress(t)
keepers.Faucet.Fund(pCtx, myAddress, sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewIntFromUint64(100_000_000)))
keepers.Faucet.Fund(pCtx, myAddress, sdk.NewCoin("denom", sdkmath.NewIntFromUint64(100_000_000)))
reflectExample := InstantiateReflectExampleContract(t, pCtx, keepers)
burnerCodeID, _, err := k.create(pCtx, myAddress, testdata.BurnerContractWasm(), nil, DefaultAuthorizationPolicy{})
require.NoError(t, err)
hackatomExample := InstantiateHackatomExampleContract(t, pCtx, keepers)
type StealMsg struct {
Recipient string `json:"recipient"`
Amount []sdk.Coin `json:"amount"`
}
stealMsg := struct {
Steal StealMsg `json:"steal_funds"`
}{Steal: StealMsg{
Recipient: myAddress.String(),
Amount: []sdk.Coin{sdk.NewInt64Coin("denom", 75)},
}}
stealMsgBz := must(json.Marshal(stealMsg))
specs := map[string]struct {
legacyContent v1beta1.Content
}{
"store code": {
legacyContent: &types.StoreCodeProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
Source: "https://example.com/",
Builder: "cosmwasm/workspace-optimizer:v0.12.8",
RunAs: myAddress.String(),
WASMByteCode: testdata.HackatomContractWasm(),
CodeHash: must(hex.DecodeString(testdata.ChecksumHackatom)),
},
},
"instantiate": {
legacyContent: &types.InstantiateContractProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
RunAs: myAddress.String(),
Admin: myAddress.String(),
CodeID: reflectExample.CodeID,
Label: "testing",
Msg: []byte("{}"),
},
},
"instantiate2": {
legacyContent: &types.InstantiateContract2Proposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
RunAs: myAddress.String(),
Admin: myAddress.String(),
CodeID: reflectExample.CodeID,
Label: "testing",
Msg: []byte("{}"),
Salt: []byte("mySalt"),
},
},
"store and instantiate": {
legacyContent: &types.StoreAndInstantiateContractProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
RunAs: myAddress.String(),
WASMByteCode: testdata.ReflectContractWasm(),
Admin: myAddress.String(),
Label: "testing",
Msg: []byte("{}"),
Source: "https://example.com/",
Builder: "cosmwasm/workspace-optimizer:v0.12.8",
CodeHash: reflectExample.Checksum,
},
},
"migrate": {
legacyContent: &types.MigrateContractProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
Contract: reflectExample.Contract.String(),
CodeID: burnerCodeID,
Msg: []byte(fmt.Sprintf(`{"payout": "%s"}`, myAddress)),
},
},
"execute": {
legacyContent: &types.ExecuteContractProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
Contract: reflectExample.Contract.String(),
RunAs: reflectExample.CreatorAddr.String(),
Msg: must(json.Marshal(testdata.ReflectHandleMsg{
Reflect: &testdata.ReflectPayload{
Msgs: []wasmvmtypes.CosmosMsg{{
Bank: &wasmvmtypes.BankMsg{
Send: &wasmvmtypes.SendMsg{
ToAddress: myAddress.String(),
Amount: []wasmvmtypes.Coin{{Denom: "denom", Amount: "100"}},
},
},
}},
},
})),
},
},
"sudo": {
&types.SudoContractProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
Contract: hackatomExample.Contract.String(),
Msg: stealMsgBz,
},
},
"update admin": {
legacyContent: &types.UpdateAdminProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
Contract: reflectExample.Contract.String(),
NewAdmin: myAddress.String(),
},
},
"clear admin": {
legacyContent: &types.ClearAdminProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
Contract: reflectExample.Contract.String(),
},
},
"pin codes": {
legacyContent: &types.PinCodesProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
CodeIDs: []uint64{reflectExample.CodeID},
},
},
"unpin codes": {
legacyContent: &types.UnpinCodesProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
CodeIDs: []uint64{reflectExample.CodeID},
},
},
"update instantiate config": {
legacyContent: &types.UpdateInstantiateConfigProposal{ //nolint:staticcheck
Title: "Foo",
Description: "Bar",
AccessConfigUpdates: []types.AccessConfigUpdate{
{CodeID: reflectExample.CodeID, InstantiatePermission: types.AllowNobody},
},
},
},
}
for name, spec := range specs {
t.Run(name, func(t *testing.T) {
ctx, _ := pCtx.CacheContext()
propID := mustSubmitAndExecuteLegacyProposal(t, ctx, spec.legacyContent, myAddress.String(), keepers)
// when
proposal, err := keepers.GovKeeper.Proposals.Get(ctx, propID)
// then
require.NoError(t, err)
require.Len(t, proposal.Messages, 1)
assert.NotNil(t, proposal.Messages[0].GetCachedValue())
})
}
}
func mustSubmitAndExecuteLegacyProposal(t *testing.T, ctx sdk.Context, content v1beta1.Content, myActorAddress string, keepers TestKeepers) uint64 {
t.Helper()
govAuthority := keepers.AccountKeeper.GetModuleAddress(govtypes.ModuleName).String()
msgServer := govkeeper.NewMsgServerImpl(keepers.GovKeeper)
// ignore all submit events
contentMsg, rsp, err := submitLegacyProposal(t, ctx.WithEventManager(sdk.NewEventManager()), content, myActorAddress, govAuthority, msgServer)
require.NoError(t, err)
_, err = msgServer.ExecLegacyContent(ctx, v1.NewMsgExecLegacyContent(contentMsg.Content, govAuthority))
require.NoError(t, err)
return rsp.ProposalId
}
// does not fail on submit proposal
func submitLegacyProposal(t *testing.T, ctx sdk.Context, content v1beta1.Content, myActorAddress, govAuthority string, msgServer v1.MsgServer) (*v1.MsgExecLegacyContent, *v1.MsgSubmitProposalResponse, error) {
t.Helper()
contentMsg, err := v1.NewLegacyContent(content, govAuthority)
require.NoError(t, err)
proposal, err := v1.NewMsgSubmitProposal(
[]sdk.Msg{contentMsg},
sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewIntFromUint64(1_000_000))),
myActorAddress,
"",
content.GetTitle(),
content.GetDescription(),
false,
)
require.NoError(t, err)
// when stored
rsp, err := msgServer.SubmitProposal(ctx, proposal)
return contentMsg, rsp, err
}

View File

@@ -412,14 +412,14 @@ func TestQueryContractHistory(t *testing.T) {
"response with internal fields cleared": {
srcHistory: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeGenesis,
CodeID: firstCodeID,
CodeID: 1,
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
Msg: []byte(`"init message"`),
}},
req: types.QueryContractHistoryRequest{Address: myContractBech32Addr},
expContent: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeGenesis,
CodeID: firstCodeID,
CodeID: 1,
Msg: []byte(`"init message"`),
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
}},
@@ -427,7 +427,7 @@ func TestQueryContractHistory(t *testing.T) {
"response with multiple entries": {
srcHistory: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeInit,
CodeID: firstCodeID,
CodeID: 1,
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
Msg: []byte(`"init message"`),
}, {
@@ -444,7 +444,7 @@ func TestQueryContractHistory(t *testing.T) {
req: types.QueryContractHistoryRequest{Address: myContractBech32Addr},
expContent: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeInit,
CodeID: firstCodeID,
CodeID: 1,
Msg: []byte(`"init message"`),
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
}, {
@@ -462,7 +462,7 @@ func TestQueryContractHistory(t *testing.T) {
"with pagination offset": {
srcHistory: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeInit,
CodeID: firstCodeID,
CodeID: 1,
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
Msg: []byte(`"init message"`),
}, {
@@ -482,7 +482,7 @@ func TestQueryContractHistory(t *testing.T) {
"with pagination limit": {
srcHistory: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeInit,
CodeID: firstCodeID,
CodeID: 1,
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
Msg: []byte(`"init message"`),
}, {
@@ -499,7 +499,7 @@ func TestQueryContractHistory(t *testing.T) {
},
expContent: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeInit,
CodeID: firstCodeID,
CodeID: 1,
Msg: []byte(`"init message"`),
Updated: &types.AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2},
}},
@@ -508,7 +508,7 @@ func TestQueryContractHistory(t *testing.T) {
req: types.QueryContractHistoryRequest{Address: otherBech32Addr},
srcHistory: []types.ContractCodeHistoryEntry{{
Operation: types.ContractCodeHistoryOperationTypeGenesis,
CodeID: firstCodeID,
CodeID: 1,
Updated: types.NewAbsoluteTxPosition(ctx),
Msg: []byte(`"init message"`),
}},

View File

@@ -9,7 +9,7 @@ import (
"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)
// RegisterLegacyAminoCodec registers the account types and interface
// RegisterLegacyAminoCodec registers the concrete types and interface
func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
cdc.RegisterConcrete(&MsgStoreCode{}, "wasm/MsgStoreCode", nil)
cdc.RegisterConcrete(&MsgInstantiateContract{}, "wasm/MsgInstantiateContract", nil)
@@ -44,8 +44,23 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
cdc.RegisterConcrete(&StoreCodeAuthorization{}, "wasm/StoreCodeAuthorization", nil)
cdc.RegisterConcrete(&ContractExecutionAuthorization{}, "wasm/ContractExecutionAuthorization", nil)
cdc.RegisterConcrete(&ContractMigrationAuthorization{}, "wasm/ContractMigrationAuthorization", nil)
// legacy gov v1beta1 types that may be used for unmarshalling stored gov data
cdc.RegisterConcrete(&PinCodesProposal{}, "wasm/PinCodesProposal", nil)
cdc.RegisterConcrete(&UnpinCodesProposal{}, "wasm/UnpinCodesProposal", nil)
cdc.RegisterConcrete(&StoreCodeProposal{}, "wasm/StoreCodeProposal", nil)
cdc.RegisterConcrete(&InstantiateContractProposal{}, "wasm/InstantiateContractProposal", nil)
cdc.RegisterConcrete(&InstantiateContract2Proposal{}, "wasm/InstantiateContract2Proposal", nil)
cdc.RegisterConcrete(&MigrateContractProposal{}, "wasm/MigrateContractProposal", nil)
cdc.RegisterConcrete(&SudoContractProposal{}, "wasm/SudoContractProposal", nil)
cdc.RegisterConcrete(&ExecuteContractProposal{}, "wasm/ExecuteContractProposal", nil)
cdc.RegisterConcrete(&UpdateAdminProposal{}, "wasm/UpdateAdminProposal", nil)
cdc.RegisterConcrete(&ClearAdminProposal{}, "wasm/ClearAdminProposal", nil)
cdc.RegisterConcrete(&UpdateInstantiateConfigProposal{}, "wasm/UpdateInstantiateConfigProposal", nil)
cdc.RegisterConcrete(&StoreAndInstantiateContractProposal{}, "wasm/StoreAndInstantiateContractProposal", nil)
}
// RegisterInterfaces registers the concrete proto types and interfaces with the SDK interface registry
func RegisterInterfaces(registry types.InterfaceRegistry) {
registry.RegisterImplementations(
(*sdk.Msg)(nil),
@@ -69,10 +84,6 @@ func RegisterInterfaces(registry types.InterfaceRegistry) {
&MsgStoreAndMigrateContract{},
&MsgUpdateContractLabel{},
)
registry.RegisterImplementations(
(*v1beta1.Content)(nil),
)
registry.RegisterInterface("cosmwasm.wasm.v1.ContractInfoExtension", (*ContractInfoExtension)(nil))
registry.RegisterInterface("cosmwasm.wasm.v1.ContractAuthzFilterX", (*ContractAuthzFilterX)(nil))
@@ -99,4 +110,21 @@ func RegisterInterfaces(registry types.InterfaceRegistry) {
)
msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
// legacy gov v1beta1 types that may be used for unmarshalling stored gov data
registry.RegisterImplementations(
(*v1beta1.Content)(nil),
&StoreCodeProposal{},
&InstantiateContractProposal{},
&InstantiateContract2Proposal{},
&MigrateContractProposal{},
&SudoContractProposal{},
&ExecuteContractProposal{},
&UpdateAdminProposal{},
&ClearAdminProposal{},
&PinCodesProposal{},
&UnpinCodesProposal{},
&UpdateInstantiateConfigProposal{},
&StoreAndInstantiateContractProposal{},
)
}

View File

@@ -0,0 +1,804 @@
package types
import (
"encoding/base64"
"encoding/hex"
"fmt"
"strings"
errorsmod "cosmossdk.io/errors"
sdk "github.com/cosmos/cosmos-sdk/types"
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
"github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
)
type ProposalType string
const (
ProposalTypeStoreCode ProposalType = "StoreCode"
ProposalTypeInstantiateContract ProposalType = "InstantiateContract"
ProposalTypeInstantiateContract2 ProposalType = "InstantiateContract2"
ProposalTypeMigrateContract ProposalType = "MigrateContract"
ProposalTypeSudoContract ProposalType = "SudoContract"
ProposalTypeExecuteContract ProposalType = "ExecuteContract"
ProposalTypeUpdateAdmin ProposalType = "UpdateAdmin"
ProposalTypeClearAdmin ProposalType = "ClearAdmin"
ProposalTypePinCodes ProposalType = "PinCodes"
ProposalTypeUnpinCodes ProposalType = "UnpinCodes"
ProposalTypeUpdateInstantiateConfig ProposalType = "UpdateInstantiateConfig"
ProposalTypeStoreAndInstantiateContractProposal ProposalType = "StoreAndInstantiateContract"
)
// DisableAllProposals contains no wasm gov types.
// Deprecated: all gov v1beta1 types will be removed
var DisableAllProposals []ProposalType
// EnableAllProposals contains all wasm gov types as keys.
// Deprecated: all gov v1beta1 types will be removed
var EnableAllProposals = []ProposalType{
ProposalTypeStoreCode,
ProposalTypeInstantiateContract,
ProposalTypeInstantiateContract2,
ProposalTypeMigrateContract,
ProposalTypeSudoContract,
ProposalTypeExecuteContract,
ProposalTypeUpdateAdmin,
ProposalTypeClearAdmin,
ProposalTypePinCodes,
ProposalTypeUnpinCodes,
ProposalTypeUpdateInstantiateConfig,
ProposalTypeStoreAndInstantiateContractProposal,
}
// Deprecated: all gov v1beta1 types will be removed
func init() { // register new content types with the sdk
v1beta1.RegisterProposalType(string(ProposalTypeStoreCode))
v1beta1.RegisterProposalType(string(ProposalTypeInstantiateContract))
v1beta1.RegisterProposalType(string(ProposalTypeInstantiateContract2))
v1beta1.RegisterProposalType(string(ProposalTypeMigrateContract))
v1beta1.RegisterProposalType(string(ProposalTypeSudoContract))
v1beta1.RegisterProposalType(string(ProposalTypeExecuteContract))
v1beta1.RegisterProposalType(string(ProposalTypeUpdateAdmin))
v1beta1.RegisterProposalType(string(ProposalTypeClearAdmin))
v1beta1.RegisterProposalType(string(ProposalTypePinCodes))
v1beta1.RegisterProposalType(string(ProposalTypeUnpinCodes))
v1beta1.RegisterProposalType(string(ProposalTypeUpdateInstantiateConfig))
v1beta1.RegisterProposalType(string(ProposalTypeStoreAndInstantiateContractProposal))
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p StoreCodeProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *StoreCodeProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p StoreCodeProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p StoreCodeProposal) ProposalType() string { return string(ProposalTypeStoreCode) }
// ValidateBasic validates the proposal
func (p StoreCodeProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.RunAs); err != nil {
return errorsmod.Wrap(err, "run as")
}
if err := validateWasmCode(p.WASMByteCode, MaxProposalWasmSize); err != nil {
return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "code bytes %s", err.Error())
}
if p.InstantiatePermission != nil {
if err := p.InstantiatePermission.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "instantiate permission")
}
}
if err := ValidateVerificationInfo(p.Source, p.Builder, p.CodeHash); err != nil {
return errorsmod.Wrapf(err, "code verification info")
}
return nil
}
// String implements the Stringer interface.
func (p StoreCodeProposal) String() string {
return fmt.Sprintf(`Store Code Proposal:
Title: %s
Description: %s
Run as: %s
WasmCode: %X
Source: %s
Builder: %s
Code Hash: %X
`, p.Title, p.Description, p.RunAs, p.WASMByteCode, p.Source, p.Builder, p.CodeHash)
}
// MarshalYAML pretty prints the wasm byte code
func (p StoreCodeProposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
RunAs string `yaml:"run_as"`
WASMByteCode string `yaml:"wasm_byte_code"`
InstantiatePermission *AccessConfig `yaml:"instantiate_permission"`
Source string `yaml:"source"`
Builder string `yaml:"builder"`
CodeHash string `yaml:"code_hash"`
}{
Title: p.Title,
Description: p.Description,
RunAs: p.RunAs,
WASMByteCode: base64.StdEncoding.EncodeToString(p.WASMByteCode),
InstantiatePermission: p.InstantiatePermission,
Source: p.Source,
Builder: p.Builder,
CodeHash: hex.EncodeToString(p.CodeHash),
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p InstantiateContractProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *InstantiateContractProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p InstantiateContractProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p InstantiateContractProposal) ProposalType() string {
return string(ProposalTypeInstantiateContract)
}
// ValidateBasic validates the proposal
func (p InstantiateContractProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.RunAs); err != nil {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "run as")
}
if p.CodeID == 0 {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "code id is required")
}
if err := ValidateLabel(p.Label); err != nil {
return err
}
if !p.Funds.IsValid() {
return sdkerrors.ErrInvalidCoins
}
if len(p.Admin) != 0 {
if _, err := sdk.AccAddressFromBech32(p.Admin); err != nil {
return err
}
}
if err := p.Msg.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "payload msg")
}
return nil
}
// String implements the Stringer interface.
func (p InstantiateContractProposal) String() string {
return fmt.Sprintf(`Instantiate Code Proposal:
Title: %s
Description: %s
Run as: %s
Admin: %s
Code id: %d
Label: %s
Msg: %q
Funds: %s
`, p.Title, p.Description, p.RunAs, p.Admin, p.CodeID, p.Label, p.Msg, p.Funds)
}
// MarshalYAML pretty prints the init message
func (p InstantiateContractProposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
RunAs string `yaml:"run_as"`
Admin string `yaml:"admin"`
CodeID uint64 `yaml:"code_id"`
Label string `yaml:"label"`
Msg string `yaml:"msg"`
Funds sdk.Coins `yaml:"funds"`
}{
Title: p.Title,
Description: p.Description,
RunAs: p.RunAs,
Admin: p.Admin,
CodeID: p.CodeID,
Label: p.Label,
Msg: string(p.Msg),
Funds: p.Funds,
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p InstantiateContract2Proposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *InstantiateContract2Proposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p InstantiateContract2Proposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p InstantiateContract2Proposal) ProposalType() string {
return string(ProposalTypeInstantiateContract2)
}
// ValidateBasic validates the proposal
func (p InstantiateContract2Proposal) ValidateBasic() error {
// Validate title and description
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
// Validate run as
if _, err := sdk.AccAddressFromBech32(p.RunAs); err != nil {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "run as")
}
// Validate admin
if len(p.Admin) != 0 {
if _, err := sdk.AccAddressFromBech32(p.Admin); err != nil {
return err
}
}
// Validate codeid
if p.CodeID == 0 {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "code id is required")
}
// Validate label
if err := ValidateLabel(p.Label); err != nil {
return err
}
// Validate msg
if err := p.Msg.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "payload msg")
}
// Validate funds
if !p.Funds.IsValid() {
return sdkerrors.ErrInvalidCoins
}
// Validate salt
if len(p.Salt) == 0 {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "salt is required")
}
return nil
}
// String implements the Stringer interface.
func (p InstantiateContract2Proposal) String() string {
return fmt.Sprintf(`Instantiate Code Proposal:
Title: %s
Description: %s
Run as: %s
Admin: %s
Code id: %d
Label: %s
Msg: %q
Funds: %s
Salt: %X
`, p.Title, p.Description, p.RunAs, p.Admin, p.CodeID, p.Label, p.Msg, p.Funds, p.Salt)
}
// MarshalYAML pretty prints the init message
func (p InstantiateContract2Proposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
RunAs string `yaml:"run_as"`
Admin string `yaml:"admin"`
CodeID uint64 `yaml:"code_id"`
Label string `yaml:"label"`
Msg string `yaml:"msg"`
Funds sdk.Coins `yaml:"funds"`
Salt string `yaml:"salt"`
}{
Title: p.Title,
Description: p.Description,
RunAs: p.RunAs,
Admin: p.Admin,
CodeID: p.CodeID,
Label: p.Label,
Msg: string(p.Msg),
Funds: p.Funds,
Salt: base64.StdEncoding.EncodeToString(p.Salt),
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p StoreAndInstantiateContractProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *StoreAndInstantiateContractProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p StoreAndInstantiateContractProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p StoreAndInstantiateContractProposal) ProposalType() string {
return string(ProposalTypeStoreAndInstantiateContractProposal)
}
// ValidateBasic validates the proposal
func (p StoreAndInstantiateContractProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.RunAs); err != nil {
return errorsmod.Wrap(err, "run as")
}
if err := validateWasmCode(p.WASMByteCode, MaxProposalWasmSize); err != nil {
return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "code bytes %s", err.Error())
}
if err := ValidateVerificationInfo(p.Source, p.Builder, p.CodeHash); err != nil {
return errorsmod.Wrap(err, "code info")
}
if p.InstantiatePermission != nil {
if err := p.InstantiatePermission.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "instantiate permission")
}
}
if err := ValidateLabel(p.Label); err != nil {
return err
}
if !p.Funds.IsValid() {
return sdkerrors.ErrInvalidCoins
}
if len(p.Admin) != 0 {
if _, err := sdk.AccAddressFromBech32(p.Admin); err != nil {
return err
}
}
if err := p.Msg.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "payload msg")
}
return nil
}
// String implements the Stringer interface.
func (p StoreAndInstantiateContractProposal) String() string {
return fmt.Sprintf(`Store And Instantiate Coontract Proposal:
Title: %s
Description: %s
Run as: %s
WasmCode: %X
Source: %s
Builder: %s
Code Hash: %X
Instantiate permission: %s
Unpin code: %t
Admin: %s
Label: %s
Msg: %q
Funds: %s
`, p.Title, p.Description, p.RunAs, p.WASMByteCode, p.Source, p.Builder, p.CodeHash, p.InstantiatePermission, p.UnpinCode, p.Admin, p.Label, p.Msg, p.Funds)
}
// MarshalYAML pretty prints the wasm byte code and the init message
func (p StoreAndInstantiateContractProposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
RunAs string `yaml:"run_as"`
WASMByteCode string `yaml:"wasm_byte_code"`
Source string `yaml:"source"`
Builder string `yaml:"builder"`
CodeHash string `yaml:"code_hash"`
InstantiatePermission *AccessConfig `yaml:"instantiate_permission"`
UnpinCode bool `yaml:"unpin_code"`
Admin string `yaml:"admin"`
Label string `yaml:"label"`
Msg string `yaml:"msg"`
Funds sdk.Coins `yaml:"funds"`
}{
Title: p.Title,
Description: p.Description,
RunAs: p.RunAs,
WASMByteCode: base64.StdEncoding.EncodeToString(p.WASMByteCode),
InstantiatePermission: p.InstantiatePermission,
UnpinCode: p.UnpinCode,
Admin: p.Admin,
Label: p.Label,
Source: p.Source,
Builder: p.Builder,
CodeHash: hex.EncodeToString(p.CodeHash),
Msg: string(p.Msg),
Funds: p.Funds,
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p MigrateContractProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *MigrateContractProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p MigrateContractProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p MigrateContractProposal) ProposalType() string { return string(ProposalTypeMigrateContract) }
// ValidateBasic validates the proposal
func (p MigrateContractProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if p.CodeID == 0 {
return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "code_id is required")
}
if _, err := sdk.AccAddressFromBech32(p.Contract); err != nil {
return errorsmod.Wrap(err, "contract")
}
if err := p.Msg.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "payload msg")
}
return nil
}
// String implements the Stringer interface.
func (p MigrateContractProposal) String() string {
return fmt.Sprintf(`Migrate Contract Proposal:
Title: %s
Description: %s
Contract: %s
Code id: %d
Msg: %q
`, p.Title, p.Description, p.Contract, p.CodeID, p.Msg)
}
// MarshalYAML pretty prints the migrate message
func (p MigrateContractProposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
Contract string `yaml:"contract"`
CodeID uint64 `yaml:"code_id"`
Msg string `yaml:"msg"`
}{
Title: p.Title,
Description: p.Description,
Contract: p.Contract,
CodeID: p.CodeID,
Msg: string(p.Msg),
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p SudoContractProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *SudoContractProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p SudoContractProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p SudoContractProposal) ProposalType() string { return string(ProposalTypeSudoContract) }
// ValidateBasic validates the proposal
func (p SudoContractProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.Contract); err != nil {
return errorsmod.Wrap(err, "contract")
}
if err := p.Msg.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "payload msg")
}
return nil
}
// String implements the Stringer interface.
func (p SudoContractProposal) String() string {
return fmt.Sprintf(`Migrate Contract Proposal:
Title: %s
Description: %s
Contract: %s
Msg: %q
`, p.Title, p.Description, p.Contract, p.Msg)
}
// MarshalYAML pretty prints the migrate message
func (p SudoContractProposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
Contract string `yaml:"contract"`
Msg string `yaml:"msg"`
}{
Title: p.Title,
Description: p.Description,
Contract: p.Contract,
Msg: string(p.Msg),
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p ExecuteContractProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *ExecuteContractProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p ExecuteContractProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p ExecuteContractProposal) ProposalType() string { return string(ProposalTypeExecuteContract) }
// ValidateBasic validates the proposal
func (p ExecuteContractProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.Contract); err != nil {
return errorsmod.Wrap(err, "contract")
}
if _, err := sdk.AccAddressFromBech32(p.RunAs); err != nil {
return errorsmod.Wrap(err, "run as")
}
if !p.Funds.IsValid() {
return sdkerrors.ErrInvalidCoins
}
if err := p.Msg.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "payload msg")
}
return nil
}
// String implements the Stringer interface.
func (p ExecuteContractProposal) String() string {
return fmt.Sprintf(`Migrate Contract Proposal:
Title: %s
Description: %s
Contract: %s
Run as: %s
Msg: %q
Funds: %s
`, p.Title, p.Description, p.Contract, p.RunAs, p.Msg, p.Funds)
}
// MarshalYAML pretty prints the migrate message
func (p ExecuteContractProposal) MarshalYAML() (interface{}, error) {
return struct {
Title string `yaml:"title"`
Description string `yaml:"description"`
Contract string `yaml:"contract"`
Msg string `yaml:"msg"`
RunAs string `yaml:"run_as"`
Funds sdk.Coins `yaml:"funds"`
}{
Title: p.Title,
Description: p.Description,
Contract: p.Contract,
Msg: string(p.Msg),
RunAs: p.RunAs,
Funds: p.Funds,
}, nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p UpdateAdminProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *UpdateAdminProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p UpdateAdminProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p UpdateAdminProposal) ProposalType() string { return string(ProposalTypeUpdateAdmin) }
// ValidateBasic validates the proposal
func (p UpdateAdminProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.Contract); err != nil {
return errorsmod.Wrap(err, "contract")
}
if _, err := sdk.AccAddressFromBech32(p.NewAdmin); err != nil {
return errorsmod.Wrap(err, "new admin")
}
return nil
}
// String implements the Stringer interface.
func (p UpdateAdminProposal) String() string {
return fmt.Sprintf(`Update Contract Admin Proposal:
Title: %s
Description: %s
Contract: %s
New Admin: %s
`, p.Title, p.Description, p.Contract, p.NewAdmin)
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p ClearAdminProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *ClearAdminProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p ClearAdminProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p ClearAdminProposal) ProposalType() string { return string(ProposalTypeClearAdmin) }
// ValidateBasic validates the proposal
func (p ClearAdminProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if _, err := sdk.AccAddressFromBech32(p.Contract); err != nil {
return errorsmod.Wrap(err, "contract")
}
return nil
}
// String implements the Stringer interface.
func (p ClearAdminProposal) String() string {
return fmt.Sprintf(`Clear Contract Admin Proposal:
Title: %s
Description: %s
Contract: %s
`, p.Title, p.Description, p.Contract)
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p PinCodesProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *PinCodesProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p PinCodesProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p PinCodesProposal) ProposalType() string { return string(ProposalTypePinCodes) }
// ValidateBasic validates the proposal
func (p PinCodesProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if len(p.CodeIDs) == 0 {
return errorsmod.Wrap(ErrEmpty, "code ids")
}
return nil
}
// String implements the Stringer interface.
func (p PinCodesProposal) String() string {
return fmt.Sprintf(`Pin Wasm Codes Proposal:
Title: %s
Description: %s
Codes: %v
`, p.Title, p.Description, p.CodeIDs)
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p UnpinCodesProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *UnpinCodesProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p UnpinCodesProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p UnpinCodesProposal) ProposalType() string { return string(ProposalTypeUnpinCodes) }
// ValidateBasic validates the proposal
func (p UnpinCodesProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if len(p.CodeIDs) == 0 {
return errorsmod.Wrap(ErrEmpty, "code ids")
}
return nil
}
// String implements the Stringer interface.
func (p UnpinCodesProposal) String() string {
return fmt.Sprintf(`Unpin Wasm Codes Proposal:
Title: %s
Description: %s
Codes: %v
`, p.Title, p.Description, p.CodeIDs)
}
func validateProposalCommons(title, description string) error {
if strings.TrimSpace(title) != title {
return errorsmod.Wrap(govtypes.ErrInvalidProposalContent, "proposal title must not start/end with white spaces")
}
if len(title) == 0 {
return errorsmod.Wrap(govtypes.ErrInvalidProposalContent, "proposal title cannot be blank")
}
if len(title) > v1beta1.MaxTitleLength {
return errorsmod.Wrapf(govtypes.ErrInvalidProposalContent, "proposal title is longer than max length of %d", v1beta1.MaxTitleLength)
}
if strings.TrimSpace(description) != description {
return errorsmod.Wrap(govtypes.ErrInvalidProposalContent, "proposal description must not start/end with white spaces")
}
if len(description) == 0 {
return errorsmod.Wrap(govtypes.ErrInvalidProposalContent, "proposal description cannot be blank")
}
if len(description) > v1beta1.MaxDescriptionLength {
return errorsmod.Wrapf(govtypes.ErrInvalidProposalContent, "proposal description is longer than max length of %d", v1beta1.MaxDescriptionLength)
}
return nil
}
// ProposalRoute returns the routing key of a parameter change proposal.
func (p UpdateInstantiateConfigProposal) ProposalRoute() string { return RouterKey }
// GetTitle returns the title of the proposal
func (p *UpdateInstantiateConfigProposal) GetTitle() string { return p.Title }
// GetDescription returns the human readable description of the proposal
func (p UpdateInstantiateConfigProposal) GetDescription() string { return p.Description }
// ProposalType returns the type
func (p UpdateInstantiateConfigProposal) ProposalType() string {
return string(ProposalTypeUpdateInstantiateConfig)
}
// ValidateBasic validates the proposal
func (p UpdateInstantiateConfigProposal) ValidateBasic() error {
if err := validateProposalCommons(p.Title, p.Description); err != nil {
return err
}
if len(p.AccessConfigUpdates) == 0 {
return errorsmod.Wrap(ErrEmpty, "code updates")
}
dedup := make(map[uint64]bool)
for _, codeUpdate := range p.AccessConfigUpdates {
_, found := dedup[codeUpdate.CodeID]
if found {
return errorsmod.Wrapf(ErrDuplicate, "duplicate code: %d", codeUpdate.CodeID)
}
if err := codeUpdate.InstantiatePermission.ValidateBasic(); err != nil {
return errorsmod.Wrap(err, "instantiate permission")
}
dedup[codeUpdate.CodeID] = true
}
return nil
}
// String implements the Stringer interface.
func (p UpdateInstantiateConfigProposal) String() string {
return fmt.Sprintf(`Update Instantiate Config Proposal:
Title: %s
Description: %s
AccessConfigUpdates: %v
`, p.Title, p.Description, p.AccessConfigUpdates)
}
// String implements the Stringer interface.
func (c AccessConfigUpdate) String() string {
return fmt.Sprintf(`AccessConfigUpdate:
CodeID: %d
AccessConfig: %v
`, c.CodeID, c.InstantiatePermission)
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -703,53 +703,6 @@ func (m *MsgClearAdminResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgClearAdminResponse proto.InternalMessageInfo
// AccessConfigUpdate contains the code id and the access config to be
// applied.
type AccessConfigUpdate struct {
// CodeID is the reference to the stored WASM code to be updated
CodeID uint64 `protobuf:"varint,1,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"`
// InstantiatePermission to apply to the set of code ids
InstantiatePermission AccessConfig `protobuf:"bytes,2,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission"`
}
func (m *AccessConfigUpdate) Reset() { *m = AccessConfigUpdate{} }
func (m *AccessConfigUpdate) String() string { return proto.CompactTextString(m) }
func (*AccessConfigUpdate) ProtoMessage() {}
func (*AccessConfigUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{14}
}
func (m *AccessConfigUpdate) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *AccessConfigUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_AccessConfigUpdate.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *AccessConfigUpdate) XXX_Merge(src proto.Message) {
xxx_messageInfo_AccessConfigUpdate.Merge(m, src)
}
func (m *AccessConfigUpdate) XXX_Size() int {
return m.Size()
}
func (m *AccessConfigUpdate) XXX_DiscardUnknown() {
xxx_messageInfo_AccessConfigUpdate.DiscardUnknown(m)
}
var xxx_messageInfo_AccessConfigUpdate proto.InternalMessageInfo
// MsgUpdateInstantiateConfig updates instantiate config for a smart contract
type MsgUpdateInstantiateConfig struct {
// Sender is the that actor that signed the messages
@@ -764,7 +717,7 @@ func (m *MsgUpdateInstantiateConfig) Reset() { *m = MsgUpdateInstantiate
func (m *MsgUpdateInstantiateConfig) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateInstantiateConfig) ProtoMessage() {}
func (*MsgUpdateInstantiateConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{15}
return fileDescriptor_4f74d82755520264, []int{14}
}
func (m *MsgUpdateInstantiateConfig) XXX_Unmarshal(b []byte) error {
@@ -805,7 +758,7 @@ func (m *MsgUpdateInstantiateConfigResponse) Reset() { *m = MsgUpdateIns
func (m *MsgUpdateInstantiateConfigResponse) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateInstantiateConfigResponse) ProtoMessage() {}
func (*MsgUpdateInstantiateConfigResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{16}
return fileDescriptor_4f74d82755520264, []int{15}
}
func (m *MsgUpdateInstantiateConfigResponse) XXX_Unmarshal(b []byte) error {
@@ -855,7 +808,7 @@ func (m *MsgUpdateParams) Reset() { *m = MsgUpdateParams{} }
func (m *MsgUpdateParams) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateParams) ProtoMessage() {}
func (*MsgUpdateParams) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{17}
return fileDescriptor_4f74d82755520264, []int{16}
}
func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error {
@@ -899,7 +852,7 @@ func (m *MsgUpdateParamsResponse) Reset() { *m = MsgUpdateParamsResponse
func (m *MsgUpdateParamsResponse) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateParamsResponse) ProtoMessage() {}
func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{18}
return fileDescriptor_4f74d82755520264, []int{17}
}
func (m *MsgUpdateParamsResponse) XXX_Unmarshal(b []byte) error {
@@ -949,7 +902,7 @@ func (m *MsgSudoContract) Reset() { *m = MsgSudoContract{} }
func (m *MsgSudoContract) String() string { return proto.CompactTextString(m) }
func (*MsgSudoContract) ProtoMessage() {}
func (*MsgSudoContract) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{19}
return fileDescriptor_4f74d82755520264, []int{18}
}
func (m *MsgSudoContract) XXX_Unmarshal(b []byte) error {
@@ -996,7 +949,7 @@ func (m *MsgSudoContractResponse) Reset() { *m = MsgSudoContractResponse
func (m *MsgSudoContractResponse) String() string { return proto.CompactTextString(m) }
func (*MsgSudoContractResponse) ProtoMessage() {}
func (*MsgSudoContractResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{20}
return fileDescriptor_4f74d82755520264, []int{19}
}
func (m *MsgSudoContractResponse) XXX_Unmarshal(b []byte) error {
@@ -1044,7 +997,7 @@ func (m *MsgPinCodes) Reset() { *m = MsgPinCodes{} }
func (m *MsgPinCodes) String() string { return proto.CompactTextString(m) }
func (*MsgPinCodes) ProtoMessage() {}
func (*MsgPinCodes) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{21}
return fileDescriptor_4f74d82755520264, []int{20}
}
func (m *MsgPinCodes) XXX_Unmarshal(b []byte) error {
@@ -1088,7 +1041,7 @@ func (m *MsgPinCodesResponse) Reset() { *m = MsgPinCodesResponse{} }
func (m *MsgPinCodesResponse) String() string { return proto.CompactTextString(m) }
func (*MsgPinCodesResponse) ProtoMessage() {}
func (*MsgPinCodesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{22}
return fileDescriptor_4f74d82755520264, []int{21}
}
func (m *MsgPinCodesResponse) XXX_Unmarshal(b []byte) error {
@@ -1136,7 +1089,7 @@ func (m *MsgUnpinCodes) Reset() { *m = MsgUnpinCodes{} }
func (m *MsgUnpinCodes) String() string { return proto.CompactTextString(m) }
func (*MsgUnpinCodes) ProtoMessage() {}
func (*MsgUnpinCodes) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{23}
return fileDescriptor_4f74d82755520264, []int{22}
}
func (m *MsgUnpinCodes) XXX_Unmarshal(b []byte) error {
@@ -1180,7 +1133,7 @@ func (m *MsgUnpinCodesResponse) Reset() { *m = MsgUnpinCodesResponse{} }
func (m *MsgUnpinCodesResponse) String() string { return proto.CompactTextString(m) }
func (*MsgUnpinCodesResponse) ProtoMessage() {}
func (*MsgUnpinCodesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{24}
return fileDescriptor_4f74d82755520264, []int{23}
}
func (m *MsgUnpinCodesResponse) XXX_Unmarshal(b []byte) error {
@@ -1251,7 +1204,7 @@ func (m *MsgStoreAndInstantiateContract) Reset() { *m = MsgStoreAndInsta
func (m *MsgStoreAndInstantiateContract) String() string { return proto.CompactTextString(m) }
func (*MsgStoreAndInstantiateContract) ProtoMessage() {}
func (*MsgStoreAndInstantiateContract) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{25}
return fileDescriptor_4f74d82755520264, []int{24}
}
func (m *MsgStoreAndInstantiateContract) XXX_Unmarshal(b []byte) error {
@@ -1302,7 +1255,7 @@ func (m *MsgStoreAndInstantiateContractResponse) Reset() {
func (m *MsgStoreAndInstantiateContractResponse) String() string { return proto.CompactTextString(m) }
func (*MsgStoreAndInstantiateContractResponse) ProtoMessage() {}
func (*MsgStoreAndInstantiateContractResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{26}
return fileDescriptor_4f74d82755520264, []int{25}
}
func (m *MsgStoreAndInstantiateContractResponse) XXX_Unmarshal(b []byte) error {
@@ -1348,7 +1301,7 @@ func (m *MsgAddCodeUploadParamsAddresses) Reset() { *m = MsgAddCodeUploa
func (m *MsgAddCodeUploadParamsAddresses) String() string { return proto.CompactTextString(m) }
func (*MsgAddCodeUploadParamsAddresses) ProtoMessage() {}
func (*MsgAddCodeUploadParamsAddresses) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{27}
return fileDescriptor_4f74d82755520264, []int{26}
}
func (m *MsgAddCodeUploadParamsAddresses) XXX_Unmarshal(b []byte) error {
@@ -1392,7 +1345,7 @@ func (m *MsgAddCodeUploadParamsAddressesResponse) Reset() {
func (m *MsgAddCodeUploadParamsAddressesResponse) String() string { return proto.CompactTextString(m) }
func (*MsgAddCodeUploadParamsAddressesResponse) ProtoMessage() {}
func (*MsgAddCodeUploadParamsAddressesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{28}
return fileDescriptor_4f74d82755520264, []int{27}
}
func (m *MsgAddCodeUploadParamsAddressesResponse) XXX_Unmarshal(b []byte) error {
@@ -1438,7 +1391,7 @@ func (m *MsgRemoveCodeUploadParamsAddresses) Reset() { *m = MsgRemoveCod
func (m *MsgRemoveCodeUploadParamsAddresses) String() string { return proto.CompactTextString(m) }
func (*MsgRemoveCodeUploadParamsAddresses) ProtoMessage() {}
func (*MsgRemoveCodeUploadParamsAddresses) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{29}
return fileDescriptor_4f74d82755520264, []int{28}
}
func (m *MsgRemoveCodeUploadParamsAddresses) XXX_Unmarshal(b []byte) error {
@@ -1485,7 +1438,7 @@ func (m *MsgRemoveCodeUploadParamsAddressesResponse) String() string {
}
func (*MsgRemoveCodeUploadParamsAddressesResponse) ProtoMessage() {}
func (*MsgRemoveCodeUploadParamsAddressesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{30}
return fileDescriptor_4f74d82755520264, []int{29}
}
func (m *MsgRemoveCodeUploadParamsAddressesResponse) XXX_Unmarshal(b []byte) error {
@@ -1540,7 +1493,7 @@ func (m *MsgStoreAndMigrateContract) Reset() { *m = MsgStoreAndMigrateCo
func (m *MsgStoreAndMigrateContract) String() string { return proto.CompactTextString(m) }
func (*MsgStoreAndMigrateContract) ProtoMessage() {}
func (*MsgStoreAndMigrateContract) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{31}
return fileDescriptor_4f74d82755520264, []int{30}
}
func (m *MsgStoreAndMigrateContract) XXX_Unmarshal(b []byte) error {
@@ -1591,7 +1544,7 @@ func (m *MsgStoreAndMigrateContractResponse) Reset() { *m = MsgStoreAndM
func (m *MsgStoreAndMigrateContractResponse) String() string { return proto.CompactTextString(m) }
func (*MsgStoreAndMigrateContractResponse) ProtoMessage() {}
func (*MsgStoreAndMigrateContractResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{32}
return fileDescriptor_4f74d82755520264, []int{31}
}
func (m *MsgStoreAndMigrateContractResponse) XXX_Unmarshal(b []byte) error {
@@ -1639,7 +1592,7 @@ func (m *MsgUpdateContractLabel) Reset() { *m = MsgUpdateContractLabel{}
func (m *MsgUpdateContractLabel) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateContractLabel) ProtoMessage() {}
func (*MsgUpdateContractLabel) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{33}
return fileDescriptor_4f74d82755520264, []int{32}
}
func (m *MsgUpdateContractLabel) XXX_Unmarshal(b []byte) error {
@@ -1680,7 +1633,7 @@ func (m *MsgUpdateContractLabelResponse) Reset() { *m = MsgUpdateContrac
func (m *MsgUpdateContractLabelResponse) String() string { return proto.CompactTextString(m) }
func (*MsgUpdateContractLabelResponse) ProtoMessage() {}
func (*MsgUpdateContractLabelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_4f74d82755520264, []int{34}
return fileDescriptor_4f74d82755520264, []int{33}
}
func (m *MsgUpdateContractLabelResponse) XXX_Unmarshal(b []byte) error {
@@ -1729,7 +1682,6 @@ func init() {
proto.RegisterType((*MsgUpdateAdminResponse)(nil), "cosmwasm.wasm.v1.MsgUpdateAdminResponse")
proto.RegisterType((*MsgClearAdmin)(nil), "cosmwasm.wasm.v1.MsgClearAdmin")
proto.RegisterType((*MsgClearAdminResponse)(nil), "cosmwasm.wasm.v1.MsgClearAdminResponse")
proto.RegisterType((*AccessConfigUpdate)(nil), "cosmwasm.wasm.v1.AccessConfigUpdate")
proto.RegisterType((*MsgUpdateInstantiateConfig)(nil), "cosmwasm.wasm.v1.MsgUpdateInstantiateConfig")
proto.RegisterType((*MsgUpdateInstantiateConfigResponse)(nil), "cosmwasm.wasm.v1.MsgUpdateInstantiateConfigResponse")
proto.RegisterType((*MsgUpdateParams)(nil), "cosmwasm.wasm.v1.MsgUpdateParams")
@@ -1755,116 +1707,115 @@ func init() {
func init() { proto.RegisterFile("cosmwasm/wasm/v1/tx.proto", fileDescriptor_4f74d82755520264) }
var fileDescriptor_4f74d82755520264 = []byte{
// 1739 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcd, 0x6f, 0x1b, 0xd5,
0x16, 0xcf, 0xc4, 0xdf, 0x27, 0x79, 0x6d, 0x3a, 0x4d, 0x13, 0x67, 0xd2, 0xda, 0xe9, 0xf4, 0x23,
0x6e, 0x5e, 0x6a, 0x27, 0x7e, 0x6d, 0xdf, 0xab, 0x1f, 0x9b, 0x38, 0x45, 0x22, 0x15, 0x96, 0x22,
0x47, 0xa1, 0x02, 0x55, 0x0a, 0x13, 0xcf, 0xcd, 0x64, 0xd4, 0x78, 0xc6, 0xf8, 0x8e, 0xf3, 0xb1,
0x40, 0x42, 0xdd, 0x81, 0x58, 0xb0, 0x61, 0xc5, 0x12, 0x21, 0x01, 0x1b, 0xba, 0x40, 0xe2, 0x3f,
0x40, 0x15, 0x62, 0x51, 0x55, 0x20, 0xb1, 0xc1, 0x40, 0x2a, 0xd4, 0x7d, 0xd5, 0x15, 0x0b, 0x84,
0xe6, 0xde, 0x99, 0xf1, 0xf5, 0x78, 0x66, 0xfc, 0x91, 0x54, 0x65, 0xc1, 0x26, 0x99, 0x7b, 0xcf,
0xc7, 0x3d, 0xbf, 0x73, 0xce, 0x3d, 0xf7, 0x9e, 0x6b, 0x98, 0xaa, 0xe8, 0xb8, 0xba, 0x27, 0xe1,
0x6a, 0x8e, 0xfc, 0xd9, 0x5d, 0xcc, 0x19, 0xfb, 0xd9, 0x5a, 0x5d, 0x37, 0x74, 0x7e, 0xcc, 0x26,
0x65, 0xc9, 0x9f, 0xdd, 0x45, 0x21, 0x65, 0xce, 0xe8, 0x38, 0xb7, 0x29, 0x61, 0x94, 0xdb, 0x5d,
0xdc, 0x44, 0x86, 0xb4, 0x98, 0xab, 0xe8, 0xaa, 0x46, 0x25, 0x84, 0x49, 0x8b, 0x5e, 0xc5, 0x8a,
0xa9, 0xa9, 0x8a, 0x15, 0x8b, 0x30, 0xae, 0xe8, 0x8a, 0x4e, 0x3e, 0x73, 0xe6, 0x97, 0x35, 0x7b,
0xb6, 0x73, 0xed, 0x83, 0x1a, 0xc2, 0x16, 0x75, 0x8a, 0x2a, 0xdb, 0xa0, 0x62, 0x74, 0x60, 0x91,
0x4e, 0x49, 0x55, 0x55, 0xd3, 0x73, 0xe4, 0x2f, 0x9d, 0x12, 0xff, 0xe4, 0x60, 0xb4, 0x84, 0x95,
0x35, 0x43, 0xaf, 0xa3, 0x65, 0x5d, 0x46, 0xfc, 0x02, 0x44, 0x31, 0xd2, 0x64, 0x54, 0x4f, 0x72,
0x33, 0x5c, 0x26, 0x51, 0x4c, 0x3e, 0xfe, 0xfa, 0xea, 0xb8, 0xa5, 0x65, 0x49, 0x96, 0xeb, 0x08,
0xe3, 0x35, 0xa3, 0xae, 0x6a, 0x4a, 0xd9, 0xe2, 0xe3, 0x6f, 0xc0, 0x09, 0xd3, 0x8e, 0x8d, 0xcd,
0x03, 0x03, 0x6d, 0x54, 0x74, 0x19, 0x25, 0x87, 0x67, 0xb8, 0xcc, 0x68, 0x71, 0xec, 0xb0, 0x99,
0x1e, 0xbd, 0xb3, 0xb4, 0x56, 0x2a, 0x1e, 0x18, 0x44, 0x77, 0x79, 0xd4, 0xe4, 0xb3, 0x47, 0xfc,
0x3a, 0x4c, 0xa8, 0x1a, 0x36, 0x24, 0xcd, 0x50, 0x25, 0x03, 0x6d, 0xd4, 0x50, 0xbd, 0xaa, 0x62,
0xac, 0xea, 0x5a, 0x32, 0x32, 0xc3, 0x65, 0x46, 0xf2, 0xa9, 0xac, 0xdb, 0x91, 0xd9, 0xa5, 0x4a,
0x05, 0x61, 0xbc, 0xac, 0x6b, 0x5b, 0xaa, 0x52, 0x3e, 0xc3, 0x48, 0xaf, 0x3a, 0xc2, 0x85, 0xf3,
0xf7, 0x9f, 0x3e, 0x98, 0xb3, 0x6c, 0xfb, 0xe0, 0xe9, 0x83, 0xb9, 0x53, 0xc4, 0x49, 0x2c, 0xc6,
0xdb, 0xe1, 0x78, 0x68, 0x2c, 0x7c, 0x3b, 0x1c, 0x0f, 0x8f, 0x45, 0xc4, 0x3b, 0x30, 0xce, 0xd2,
0xca, 0x08, 0xd7, 0x74, 0x0d, 0x23, 0xfe, 0x02, 0xc4, 0x4c, 0x2c, 0x1b, 0xaa, 0x4c, 0x1c, 0x11,
0x2e, 0xc2, 0x61, 0x33, 0x1d, 0x35, 0x59, 0x56, 0x6e, 0x95, 0xa3, 0x26, 0x69, 0x45, 0xe6, 0x05,
0x88, 0x57, 0xb6, 0x51, 0xe5, 0x1e, 0x6e, 0x54, 0x29, 0xe8, 0xb2, 0x33, 0x16, 0x9f, 0x0f, 0xc3,
0x44, 0x09, 0x2b, 0x2b, 0x2d, 0x23, 0x97, 0x75, 0xcd, 0xa8, 0x4b, 0x15, 0x63, 0x00, 0x1f, 0x67,
0x21, 0x22, 0xc9, 0x55, 0x55, 0x23, 0xab, 0x04, 0x09, 0x50, 0x36, 0xd6, 0xfa, 0x90, 0xaf, 0xf5,
0xe3, 0x10, 0xd9, 0x91, 0x36, 0xd1, 0x4e, 0x32, 0x6c, 0x2a, 0x2d, 0xd3, 0x01, 0x9f, 0x81, 0x50,
0x15, 0x2b, 0x24, 0x06, 0xa3, 0xc5, 0x89, 0x3f, 0x9a, 0x69, 0xbe, 0x2c, 0xed, 0xd9, 0xa6, 0x97,
0x10, 0xc6, 0x92, 0x82, 0xca, 0x26, 0x0b, 0xbf, 0x05, 0x91, 0xad, 0x86, 0x26, 0xe3, 0x64, 0x74,
0x26, 0x94, 0x19, 0xc9, 0x4f, 0x65, 0x2d, 0x8b, 0xcc, 0x34, 0xcf, 0x5a, 0x69, 0x9e, 0x5d, 0xd6,
0x55, 0xad, 0x78, 0xfd, 0x61, 0x33, 0x3d, 0xf4, 0xe5, 0x2f, 0xe9, 0x8c, 0xa2, 0x1a, 0xdb, 0x8d,
0xcd, 0x6c, 0x45, 0xaf, 0x5a, 0x99, 0x69, 0xfd, 0xbb, 0x8a, 0xe5, 0x7b, 0x56, 0x16, 0x9b, 0x02,
0xf8, 0xf3, 0xa7, 0x0f, 0xe6, 0xb8, 0x32, 0x55, 0x5f, 0xf8, 0xb7, 0x2b, 0xa2, 0xd3, 0x76, 0x44,
0x3d, 0x7c, 0x2b, 0x6e, 0x43, 0xca, 0x9b, 0xe2, 0x44, 0x36, 0x0f, 0x31, 0x89, 0xfa, 0xac, 0xab,
0xfb, 0x6d, 0x46, 0x9e, 0x87, 0xb0, 0x2c, 0x19, 0x92, 0x15, 0x64, 0xf2, 0x2d, 0x7e, 0x1a, 0x82,
0x49, 0xef, 0xa5, 0xf2, 0xff, 0x44, 0xb8, 0xaf, 0x08, 0x9b, 0xee, 0xc5, 0xd2, 0x8e, 0x91, 0x8c,
0x51, 0xf7, 0x9a, 0xdf, 0xfc, 0x24, 0xc4, 0xb6, 0xd4, 0xfd, 0x0d, 0xd3, 0xd2, 0xf8, 0x0c, 0x97,
0x89, 0x97, 0xa3, 0x5b, 0xea, 0x7e, 0x09, 0x2b, 0x85, 0x79, 0x57, 0x3a, 0x9c, 0x0d, 0x48, 0x87,
0xbc, 0xa8, 0x42, 0xda, 0x87, 0x74, 0xec, 0x09, 0xf1, 0xcd, 0x30, 0xf0, 0x25, 0xac, 0xbc, 0xba,
0x8f, 0x2a, 0x8d, 0x23, 0xed, 0xf6, 0x6b, 0x10, 0xaf, 0x58, 0xd2, 0x5d, 0xd3, 0xc1, 0xe1, 0xb4,
0xc3, 0x1a, 0xea, 0x23, 0xac, 0x91, 0x17, 0xbb, 0x71, 0x67, 0x5d, 0x91, 0x9a, 0xb4, 0x23, 0xe5,
0x72, 0x91, 0xb8, 0x00, 0x42, 0xe7, 0xac, 0x13, 0x1f, 0xdb, 0xd7, 0x1c, 0xe3, 0xeb, 0xe7, 0x1c,
0xf1, 0x75, 0x49, 0x55, 0xea, 0xd2, 0x4b, 0xf0, 0x75, 0x4f, 0xbb, 0xcf, 0x0a, 0x48, 0xb8, 0x6b,
0x40, 0xfc, 0x1d, 0xe5, 0xc2, 0x67, 0x39, 0xca, 0x35, 0x1b, 0xe8, 0xa8, 0x1f, 0x38, 0x38, 0x51,
0xc2, 0xca, 0x7a, 0x4d, 0x96, 0x0c, 0xb4, 0x44, 0x4a, 0x47, 0xff, 0x4e, 0xba, 0x0e, 0x09, 0x0d,
0xed, 0x6d, 0xf4, 0x56, 0xa0, 0xe2, 0x1a, 0xda, 0xa3, 0x0b, 0xb1, 0xbe, 0x0d, 0xf5, 0xea, 0xdb,
0xc2, 0x05, 0x97, 0x33, 0x4e, 0xdb, 0xce, 0x60, 0x30, 0x88, 0x49, 0x72, 0xb8, 0x32, 0x33, 0xb6,
0x13, 0xc4, 0x4f, 0x38, 0xf8, 0x57, 0x09, 0x2b, 0xcb, 0x3b, 0x48, 0xaa, 0x0f, 0x8a, 0x77, 0x30,
0xc3, 0x45, 0x97, 0xe1, 0xbc, 0x6d, 0x78, 0xcb, 0x16, 0x71, 0x12, 0xce, 0xb4, 0x4d, 0xb0, 0x66,
0xf3, 0xec, 0xf5, 0x86, 0x42, 0xeb, 0xed, 0x1a, 0xf2, 0xb6, 0xef, 0x4d, 0x6a, 0xb8, 0x97, 0x9b,
0x54, 0x31, 0x61, 0xee, 0x72, 0xba, 0x73, 0xbd, 0x2f, 0x55, 0xe2, 0xfd, 0x61, 0x92, 0x78, 0xd4,
0xa8, 0xf6, 0x62, 0xba, 0xa5, 0x2a, 0x03, 0x78, 0x98, 0xc1, 0x35, 0xec, 0x8b, 0xeb, 0x2e, 0x08,
0x66, 0xda, 0xf9, 0x60, 0x0b, 0xf5, 0x74, 0x4b, 0x4c, 0x6a, 0x68, 0x6f, 0xc5, 0xf3, 0xa2, 0x98,
0x73, 0x85, 0x2b, 0xdd, 0x9e, 0x67, 0x1d, 0x28, 0xc5, 0x8b, 0x20, 0xfa, 0x53, 0x9d, 0x40, 0x7e,
0xc5, 0xc1, 0x49, 0x87, 0x6d, 0x55, 0xaa, 0x4b, 0x55, 0xcc, 0xdf, 0x80, 0x84, 0xd4, 0x30, 0xb6,
0xf5, 0xba, 0x6a, 0x1c, 0x74, 0x75, 0x51, 0x8b, 0x95, 0xff, 0x3f, 0x44, 0x6b, 0x44, 0x83, 0x15,
0xc8, 0x64, 0x27, 0x58, 0xba, 0x02, 0x1b, 0x42, 0x4b, 0x84, 0x16, 0x95, 0x96, 0x32, 0x13, 0xe2,
0x78, 0x3b, 0x44, 0x2a, 0x2b, 0x4e, 0x91, 0x7b, 0x0c, 0x3b, 0xe5, 0x80, 0x79, 0x4c, 0xc1, 0xac,
0x35, 0x64, 0xdd, 0xa9, 0xb1, 0x83, 0x82, 0x79, 0xc1, 0xa7, 0x5a, 0x20, 0x5e, 0x16, 0x80, 0x78,
0x95, 0xe0, 0x65, 0xa7, 0x02, 0x2b, 0xe8, 0x67, 0x1c, 0x8c, 0x94, 0xb0, 0xb2, 0xaa, 0x6a, 0x66,
0x7a, 0x0e, 0x1e, 0xcc, 0x9b, 0x26, 0x7e, 0x92, 0xf2, 0x66, 0x38, 0x43, 0x99, 0x70, 0x31, 0x75,
0xd8, 0x4c, 0xc7, 0x68, 0xce, 0xe3, 0x67, 0xcd, 0xf4, 0xc9, 0x03, 0xa9, 0xba, 0x53, 0x10, 0x6d,
0x26, 0xb1, 0x1c, 0xa3, 0xfb, 0x00, 0xd3, 0x92, 0xd8, 0x0e, 0x6d, 0xcc, 0x86, 0x66, 0xdb, 0x25,
0x9e, 0x81, 0xd3, 0xcc, 0xd0, 0x09, 0xe1, 0x17, 0xb4, 0x1e, 0xae, 0x6b, 0xb5, 0x97, 0x08, 0xe0,
0x52, 0x27, 0x00, 0xa7, 0x3a, 0xb6, 0x2c, 0xb3, 0xaa, 0x63, 0x6b, 0xc2, 0x01, 0xf1, 0x7b, 0x98,
0x5c, 0xeb, 0x49, 0x9b, 0xb6, 0xa4, 0xc9, 0x5e, 0x4d, 0xd5, 0xa0, 0xa8, 0x3a, 0xdb, 0xd7, 0xd0,
0x11, 0xdb, 0xd7, 0xf0, 0x11, 0xda, 0x57, 0xfe, 0x1c, 0x40, 0xc3, 0xc4, 0x4f, 0x4d, 0x89, 0x90,
0x9b, 0x6f, 0xa2, 0x61, 0x7b, 0xa4, 0xd5, 0x26, 0x44, 0x7b, 0x6b, 0x13, 0x9c, 0x0e, 0x20, 0xe6,
0xd1, 0x01, 0xc4, 0xfb, 0xb8, 0x2a, 0x26, 0x5e, 0x6c, 0x07, 0x30, 0x01, 0x51, 0xac, 0x37, 0xea,
0x15, 0x94, 0x04, 0x62, 0xa8, 0x35, 0xe2, 0x93, 0x10, 0xdb, 0x6c, 0xa8, 0x3b, 0xe6, 0xd1, 0x32,
0x42, 0x08, 0xf6, 0x90, 0x9f, 0x86, 0x04, 0x49, 0xb4, 0x6d, 0x09, 0x6f, 0x27, 0x47, 0xad, 0xe6,
0x5b, 0x97, 0xd1, 0x6b, 0x12, 0xde, 0x2e, 0xdc, 0xe8, 0xcc, 0xb7, 0x0b, 0x6d, 0xef, 0x00, 0xde,
0x49, 0x24, 0xd6, 0xe0, 0x72, 0x30, 0xc7, 0xb1, 0x37, 0x0d, 0xdf, 0x72, 0xa4, 0x41, 0x59, 0x92,
0x65, 0x33, 0xbe, 0xeb, 0xb5, 0x1d, 0x5d, 0x92, 0x69, 0x11, 0xb6, 0x94, 0x1c, 0x61, 0xc3, 0xe6,
0x21, 0x21, 0xd9, 0x4a, 0xc8, 0x8e, 0x4d, 0x14, 0xc7, 0x9f, 0x35, 0xd3, 0x63, 0x74, 0x9b, 0x3a,
0x24, 0xb1, 0xdc, 0x62, 0x2b, 0xfc, 0xb7, 0xd3, 0x73, 0x17, 0x6d, 0xcf, 0x05, 0x19, 0x29, 0x5e,
0x81, 0xd9, 0x2e, 0x2c, 0xce, 0x6e, 0xfe, 0x9e, 0x23, 0x27, 0x69, 0x19, 0x55, 0xf5, 0x5d, 0xf4,
0xf7, 0x80, 0x5d, 0xe8, 0x84, 0x3d, 0x6b, 0xc3, 0xee, 0x62, 0xa7, 0x38, 0x0f, 0x73, 0xdd, 0xb9,
0x1c, 0xf0, 0x3f, 0xd3, 0xab, 0x94, 0x9d, 0x63, 0xee, 0x0e, 0xe6, 0xf8, 0xca, 0xd8, 0x51, 0x5f,
0xe1, 0x42, 0x47, 0x29, 0x63, 0x02, 0x73, 0xd8, 0xd3, 0xc7, 0x87, 0x8e, 0x23, 0xbd, 0xfb, 0xfb,
0x43, 0x21, 0xdf, 0x19, 0x95, 0xb4, 0x7b, 0x1b, 0xbb, 0x5b, 0xa4, 0x03, 0x92, 0x5b, 0x3e, 0xd4,
0x63, 0x7b, 0xde, 0x73, 0xf6, 0x72, 0x88, 0xd9, 0xcb, 0xdf, 0x71, 0x4c, 0x57, 0x62, 0x2f, 0xf9,
0x3a, 0xa9, 0xb8, 0xfd, 0xdf, 0x90, 0xa7, 0x69, 0xcf, 0x45, 0xab, 0xf7, 0x30, 0x75, 0xa1, 0x86,
0xf6, 0xa8, 0xba, 0xc1, 0x1a, 0x14, 0xdf, 0x87, 0x34, 0x0f, 0x8b, 0xc5, 0x19, 0x72, 0xe2, 0x7a,
0x50, 0x6c, 0x1f, 0xe6, 0x7f, 0x3c, 0x01, 0xa1, 0x12, 0x56, 0xf8, 0x35, 0x48, 0xb4, 0xde, 0x8f,
0x3d, 0xf2, 0x85, 0x7d, 0x5f, 0x15, 0x2e, 0x07, 0xd3, 0x9d, 0x00, 0xbd, 0x03, 0xa7, 0xbd, 0x4e,
0xf9, 0x8c, 0xa7, 0xb8, 0x07, 0xa7, 0xb0, 0xd0, 0x2b, 0xa7, 0xb3, 0xa4, 0x01, 0xe3, 0x9e, 0x8f,
0x79, 0x57, 0x7a, 0xd5, 0x94, 0x17, 0x16, 0x7b, 0x66, 0x75, 0x56, 0x45, 0x70, 0xd2, 0xfd, 0x62,
0x74, 0xd1, 0x53, 0x8b, 0x8b, 0x4b, 0x98, 0xef, 0x85, 0x8b, 0x5d, 0xc6, 0x5d, 0x6a, 0xbc, 0x97,
0x71, 0x71, 0xf9, 0x2c, 0xe3, 0xb7, 0xaf, 0xde, 0x84, 0x11, 0xf6, 0xa9, 0x61, 0xc6, 0x53, 0x98,
0xe1, 0x10, 0x32, 0xdd, 0x38, 0x1c, 0xd5, 0x6f, 0x00, 0x30, 0x4d, 0x7d, 0xda, 0x53, 0xae, 0xc5,
0x20, 0xcc, 0x76, 0x61, 0x70, 0xf4, 0xbe, 0x0b, 0x93, 0x7e, 0x7d, 0xed, 0x7c, 0x80, 0x71, 0x1d,
0xdc, 0xc2, 0xb5, 0x7e, 0xb8, 0x9d, 0xe5, 0xef, 0xc2, 0x68, 0x5b, 0xaf, 0x78, 0x3e, 0x40, 0x0b,
0x65, 0x11, 0xae, 0x74, 0x65, 0x61, 0xb5, 0xb7, 0x35, 0x6f, 0xde, 0xda, 0x59, 0x16, 0x1f, 0xed,
0x9e, 0xed, 0xd2, 0x2a, 0xc4, 0x9d, 0xb6, 0xe8, 0x9c, 0xa7, 0x98, 0x4d, 0x16, 0x2e, 0x05, 0x92,
0xd9, 0x20, 0x33, 0x9d, 0x8a, 0x77, 0x90, 0x5b, 0x0c, 0x3e, 0x41, 0xee, 0x6c, 0x20, 0xf8, 0xf7,
0x39, 0x98, 0x0e, 0xea, 0x1e, 0x16, 0xfc, 0xcb, 0x92, 0xb7, 0x84, 0xf0, 0xbf, 0x7e, 0x25, 0x1c,
0x5b, 0x3e, 0xe6, 0x20, 0xdd, 0xed, 0xee, 0xe3, 0x9d, 0x4b, 0x5d, 0xa4, 0x84, 0x57, 0x06, 0x91,
0x72, 0xec, 0xfa, 0x90, 0x83, 0xb3, 0x81, 0xf7, 0x50, 0xef, 0xea, 0x16, 0x24, 0x22, 0xdc, 0xec,
0x5b, 0x84, 0xdd, 0x97, 0x7e, 0x97, 0xa4, 0xf9, 0x40, 0xdf, 0xbb, 0x2b, 0xd8, 0xb5, 0x7e, 0xb8,
0xd9, 0x03, 0xc8, 0xeb, 0x20, 0x0f, 0xaa, 0x57, 0x6d, 0x9c, 0x3e, 0x07, 0x50, 0xc0, 0x81, 0x2a,
0x44, 0xde, 0x33, 0x5b, 0xa2, 0xe2, 0xad, 0x87, 0xbf, 0xa5, 0x86, 0x1e, 0x1e, 0xa6, 0xb8, 0x47,
0x87, 0x29, 0xee, 0xd7, 0xc3, 0x14, 0xf7, 0xd1, 0x93, 0xd4, 0xd0, 0xa3, 0x27, 0xa9, 0xa1, 0x9f,
0x9e, 0xa4, 0x86, 0xde, 0xba, 0xcc, 0xf4, 0x57, 0xcb, 0x3a, 0xae, 0xde, 0xb1, 0x7f, 0x08, 0x96,
0x73, 0xfb, 0xf4, 0x07, 0x61, 0xd2, 0x63, 0x6d, 0x46, 0xc9, 0x0f, 0xbc, 0xff, 0xf9, 0x2b, 0x00,
0x00, 0xff, 0xff, 0xe6, 0xaa, 0xa3, 0xd7, 0xaa, 0x1e, 0x00, 0x00,
// 1717 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcb, 0x6f, 0x1b, 0x55,
0x17, 0xcf, 0xc4, 0xef, 0x93, 0x7c, 0x6d, 0x3a, 0x4d, 0x13, 0x67, 0xd2, 0xda, 0xe9, 0xf4, 0x11,
0x37, 0x5f, 0x6a, 0x27, 0xfe, 0xda, 0x7e, 0xd4, 0xb0, 0x89, 0x53, 0x24, 0x52, 0x61, 0x29, 0x72,
0x14, 0x2a, 0x50, 0xa5, 0x68, 0xe2, 0xb9, 0x99, 0x8c, 0x1a, 0xcf, 0x18, 0xdf, 0x71, 0x1e, 0x0b,
0x24, 0xd4, 0x1d, 0x88, 0x05, 0x1b, 0x56, 0x2c, 0x11, 0x12, 0xb0, 0xa1, 0x0b, 0x24, 0xfe, 0x03,
0x54, 0x21, 0x16, 0x55, 0x05, 0x12, 0x1b, 0x0c, 0xa4, 0x42, 0xdd, 0x57, 0x5d, 0xb1, 0x40, 0x68,
0xee, 0x9d, 0x19, 0x5f, 0x8f, 0x67, 0xc6, 0x8f, 0xa4, 0x2a, 0x0b, 0x36, 0xc9, 0xcc, 0x3d, 0x8f,
0x7b, 0xce, 0xef, 0x9c, 0x7b, 0xee, 0x39, 0x63, 0x98, 0xaa, 0xe8, 0xb8, 0xba, 0x27, 0xe1, 0x6a,
0x8e, 0xfc, 0xd9, 0x5d, 0xcc, 0x19, 0xfb, 0xd9, 0x5a, 0x5d, 0x37, 0x74, 0x7e, 0xcc, 0x26, 0x65,
0xc9, 0x9f, 0xdd, 0x45, 0x21, 0x65, 0xae, 0xe8, 0x38, 0xb7, 0x29, 0x61, 0x94, 0xdb, 0x5d, 0xdc,
0x44, 0x86, 0xb4, 0x98, 0xab, 0xe8, 0xaa, 0x46, 0x25, 0x84, 0x49, 0x8b, 0x5e, 0xc5, 0x8a, 0xa9,
0xa9, 0x8a, 0x15, 0x8b, 0x30, 0xae, 0xe8, 0x8a, 0x4e, 0x1e, 0x73, 0xe6, 0x93, 0xb5, 0x7a, 0xb6,
0x73, 0xef, 0x83, 0x1a, 0xc2, 0x16, 0x75, 0x8a, 0x2a, 0xdb, 0xa0, 0x62, 0xf4, 0xc5, 0x22, 0x9d,
0x92, 0xaa, 0xaa, 0xa6, 0xe7, 0xc8, 0x5f, 0xba, 0x24, 0xfe, 0xc5, 0xc1, 0x68, 0x09, 0x2b, 0x6b,
0x86, 0x5e, 0x47, 0xcb, 0xba, 0x8c, 0xf8, 0x05, 0x88, 0x62, 0xa4, 0xc9, 0xa8, 0x9e, 0xe4, 0x66,
0xb8, 0x4c, 0xa2, 0x98, 0x7c, 0xfc, 0xcd, 0xd5, 0x71, 0x4b, 0xcb, 0x92, 0x2c, 0xd7, 0x11, 0xc6,
0x6b, 0x46, 0x5d, 0xd5, 0x94, 0xb2, 0xc5, 0xc7, 0xdf, 0x80, 0x13, 0xa6, 0x1d, 0x1b, 0x9b, 0x07,
0x06, 0xda, 0xa8, 0xe8, 0x32, 0x4a, 0x0e, 0xcf, 0x70, 0x99, 0xd1, 0xe2, 0xd8, 0x61, 0x33, 0x3d,
0x7a, 0x67, 0x69, 0xad, 0x54, 0x3c, 0x30, 0x88, 0xee, 0xf2, 0xa8, 0xc9, 0x67, 0xbf, 0xf1, 0xeb,
0x30, 0xa1, 0x6a, 0xd8, 0x90, 0x34, 0x43, 0x95, 0x0c, 0xb4, 0x51, 0x43, 0xf5, 0xaa, 0x8a, 0xb1,
0xaa, 0x6b, 0xc9, 0xc8, 0x0c, 0x97, 0x19, 0xc9, 0xa7, 0xb2, 0x6e, 0x20, 0xb3, 0x4b, 0x95, 0x0a,
0xc2, 0x78, 0x59, 0xd7, 0xb6, 0x54, 0xa5, 0x7c, 0x86, 0x91, 0x5e, 0x75, 0x84, 0x0b, 0xe7, 0xef,
0x3f, 0x7d, 0x30, 0x67, 0xd9, 0xf6, 0xe1, 0xd3, 0x07, 0x73, 0xa7, 0x08, 0x48, 0xac, 0x8f, 0xb7,
0xc3, 0xf1, 0xd0, 0x58, 0xf8, 0x76, 0x38, 0x1e, 0x1e, 0x8b, 0x88, 0x77, 0x60, 0x9c, 0xa5, 0x95,
0x11, 0xae, 0xe9, 0x1a, 0x46, 0xfc, 0x05, 0x88, 0x99, 0xbe, 0x6c, 0xa8, 0x32, 0x01, 0x22, 0x5c,
0x84, 0xc3, 0x66, 0x3a, 0x6a, 0xb2, 0xac, 0xdc, 0x2a, 0x47, 0x4d, 0xd2, 0x8a, 0xcc, 0x0b, 0x10,
0xaf, 0x6c, 0xa3, 0xca, 0x3d, 0xdc, 0xa8, 0x52, 0xa7, 0xcb, 0xce, 0xbb, 0xf8, 0x7c, 0x18, 0x26,
0x4a, 0x58, 0x59, 0x69, 0x19, 0xb9, 0xac, 0x6b, 0x46, 0x5d, 0xaa, 0x18, 0x03, 0x60, 0x9c, 0x85,
0x88, 0x24, 0x57, 0x55, 0x8d, 0xec, 0x12, 0x24, 0x40, 0xd9, 0x58, 0xeb, 0x43, 0xbe, 0xd6, 0x8f,
0x43, 0x64, 0x47, 0xda, 0x44, 0x3b, 0xc9, 0xb0, 0xa9, 0xb4, 0x4c, 0x5f, 0xf8, 0x0c, 0x84, 0xaa,
0x58, 0x21, 0x31, 0x18, 0x2d, 0x4e, 0xfc, 0xd9, 0x4c, 0xf3, 0x65, 0x69, 0xcf, 0x36, 0xbd, 0x84,
0x30, 0x96, 0x14, 0x54, 0x36, 0x59, 0xf8, 0x2d, 0x88, 0x6c, 0x35, 0x34, 0x19, 0x27, 0xa3, 0x33,
0xa1, 0xcc, 0x48, 0x7e, 0x2a, 0x6b, 0x59, 0x64, 0xa6, 0x79, 0xd6, 0x4a, 0xf3, 0xec, 0xb2, 0xae,
0x6a, 0xc5, 0xeb, 0x0f, 0x9b, 0xe9, 0xa1, 0xaf, 0x7e, 0x4d, 0x67, 0x14, 0xd5, 0xd8, 0x6e, 0x6c,
0x66, 0x2b, 0x7a, 0xd5, 0xca, 0x4c, 0xeb, 0xdf, 0x55, 0x2c, 0xdf, 0xb3, 0xb2, 0xd8, 0x14, 0xc0,
0x5f, 0x3c, 0x7d, 0x30, 0xc7, 0x95, 0xa9, 0xfa, 0xc2, 0x7f, 0x5d, 0x11, 0x9d, 0xb6, 0x23, 0xea,
0x81, 0xad, 0xb8, 0x0d, 0x29, 0x6f, 0x8a, 0x13, 0xd9, 0x3c, 0xc4, 0x24, 0x8a, 0x59, 0x57, 0xf8,
0x6d, 0x46, 0x9e, 0x87, 0xb0, 0x2c, 0x19, 0x92, 0x15, 0x64, 0xf2, 0x2c, 0x7e, 0x16, 0x82, 0x49,
0xef, 0xad, 0xf2, 0xff, 0x46, 0xb8, 0xaf, 0x08, 0x9b, 0xf0, 0x62, 0x69, 0xc7, 0x48, 0xc6, 0x28,
0xbc, 0xe6, 0x33, 0x3f, 0x09, 0xb1, 0x2d, 0x75, 0x7f, 0xc3, 0xb4, 0x34, 0x3e, 0xc3, 0x65, 0xe2,
0xe5, 0xe8, 0x96, 0xba, 0x5f, 0xc2, 0x4a, 0x61, 0xde, 0x95, 0x0e, 0x67, 0x03, 0xd2, 0x21, 0x2f,
0xaa, 0x90, 0xf6, 0x21, 0x1d, 0x7b, 0x42, 0x7c, 0x3b, 0x0c, 0x7c, 0x09, 0x2b, 0xaf, 0xef, 0xa3,
0x4a, 0xe3, 0x48, 0xa7, 0xfd, 0x1a, 0xc4, 0x2b, 0x96, 0x74, 0xd7, 0x74, 0x70, 0x38, 0xed, 0xb0,
0x86, 0xfa, 0x08, 0x6b, 0xe4, 0xc5, 0x1e, 0xdc, 0x59, 0x57, 0xa4, 0x26, 0xed, 0x48, 0xb9, 0x20,
0x12, 0x17, 0x40, 0xe8, 0x5c, 0x75, 0xe2, 0x63, 0x63, 0xcd, 0x31, 0x58, 0x3f, 0xe7, 0x08, 0xd6,
0x25, 0x55, 0xa9, 0x4b, 0x2f, 0x01, 0xeb, 0x9e, 0x4e, 0x9f, 0x15, 0x90, 0x70, 0xd7, 0x80, 0xf8,
0x03, 0xe5, 0xf2, 0xcf, 0x02, 0xca, 0xb5, 0x1a, 0x08, 0xd4, 0x8f, 0x1c, 0x9c, 0x28, 0x61, 0x65,
0xbd, 0x26, 0x4b, 0x06, 0x5a, 0x22, 0xa5, 0xa3, 0x7f, 0x90, 0xae, 0x43, 0x42, 0x43, 0x7b, 0x1b,
0xbd, 0x15, 0xa8, 0xb8, 0x86, 0xf6, 0xe8, 0x46, 0x2c, 0xb6, 0xa1, 0x5e, 0xb1, 0x2d, 0x5c, 0x70,
0x81, 0x71, 0xda, 0x06, 0x83, 0xf1, 0x41, 0x4c, 0x92, 0xcb, 0x95, 0x59, 0xb1, 0x41, 0x10, 0x3f,
0xe5, 0xe0, 0x3f, 0x25, 0xac, 0x2c, 0xef, 0x20, 0xa9, 0x3e, 0xa8, 0xbf, 0x83, 0x19, 0x2e, 0xba,
0x0c, 0xe7, 0x6d, 0xc3, 0x5b, 0xb6, 0x88, 0x93, 0x70, 0xa6, 0x6d, 0xc1, 0x31, 0xfb, 0xfe, 0x30,
0x09, 0x2d, 0xf5, 0xa8, 0xbd, 0x5c, 0x6d, 0xa9, 0xca, 0x00, 0x3e, 0x30, 0x29, 0x3a, 0xec, 0x9b,
0xa2, 0x77, 0x41, 0x30, 0x03, 0xeb, 0xd3, 0x87, 0x85, 0x7a, 0xea, 0xc3, 0x92, 0x1a, 0xda, 0x5b,
0xf1, 0x6c, 0xc5, 0x72, 0x2e, 0x40, 0xd2, 0xed, 0x91, 0xec, 0xf0, 0x52, 0xbc, 0x08, 0xa2, 0x3f,
0xd5, 0x81, 0xea, 0x6b, 0x0e, 0x4e, 0x3a, 0x6c, 0xab, 0x52, 0x5d, 0xaa, 0x62, 0xfe, 0x06, 0x24,
0xa4, 0x86, 0xb1, 0xad, 0xd7, 0x55, 0xe3, 0xa0, 0x2b, 0x44, 0x2d, 0x56, 0xfe, 0x55, 0x88, 0xd6,
0x88, 0x06, 0x02, 0xd2, 0x48, 0x3e, 0xd9, 0xe9, 0x2c, 0xdd, 0xa1, 0x98, 0x30, 0x4b, 0x21, 0x2d,
0x6f, 0x96, 0x08, 0x3d, 0xb6, 0x2d, 0x65, 0xa6, 0x8b, 0xe3, 0xed, 0x2e, 0x52, 0x59, 0x71, 0x8a,
0x74, 0x0a, 0xec, 0x92, 0xe3, 0xcc, 0x63, 0xea, 0xcc, 0x5a, 0x43, 0xd6, 0x9d, 0x2a, 0x36, 0xa8,
0x33, 0x2f, 0xf8, 0xde, 0x08, 0xf4, 0x97, 0x75, 0x40, 0xbc, 0x4a, 0xfc, 0x65, 0x97, 0x02, 0x6b,
0xd4, 0xe7, 0x1c, 0x8c, 0x94, 0xb0, 0xb2, 0xaa, 0x6a, 0x66, 0x7a, 0x0e, 0x1e, 0xcc, 0x9b, 0xa6,
0xff, 0x24, 0xe5, 0xcd, 0x70, 0x86, 0x32, 0xe1, 0x62, 0xea, 0xb0, 0x99, 0x8e, 0xd1, 0x9c, 0xc7,
0xcf, 0x9a, 0xe9, 0x93, 0x07, 0x52, 0x75, 0xa7, 0x20, 0xda, 0x4c, 0x62, 0x39, 0x46, 0xcf, 0x01,
0xa6, 0x45, 0xa7, 0xdd, 0xb5, 0x31, 0xdb, 0x35, 0xdb, 0x2e, 0xf1, 0x0c, 0x9c, 0x66, 0x5e, 0x9d,
0x10, 0x7e, 0x49, 0x2b, 0xce, 0xba, 0x56, 0x7b, 0x89, 0x0e, 0x5c, 0xea, 0x74, 0xc0, 0xa9, 0x3f,
0x2d, 0xcb, 0xac, 0xfa, 0xd3, 0x5a, 0x70, 0x9c, 0xf8, 0x23, 0x4c, 0x1a, 0x67, 0x32, 0x08, 0x2d,
0x69, 0xb2, 0xd7, 0xd8, 0x32, 0xa8, 0x57, 0x9d, 0x03, 0x62, 0xe8, 0x88, 0x03, 0x62, 0xf8, 0x08,
0x03, 0x22, 0x7f, 0x0e, 0xa0, 0x61, 0xfa, 0x4f, 0x4d, 0x89, 0x90, 0xde, 0x32, 0xd1, 0xb0, 0x11,
0x69, 0x35, 0xe2, 0xd1, 0xde, 0x1a, 0x71, 0xa7, 0xc7, 0x8e, 0x79, 0xf4, 0xd8, 0xf1, 0x3e, 0x9a,
0xb1, 0xc4, 0x8b, 0xed, 0xb1, 0x27, 0x20, 0x8a, 0xf5, 0x46, 0xbd, 0x82, 0x92, 0x40, 0x0c, 0xb5,
0xde, 0xf8, 0x24, 0xc4, 0x36, 0x1b, 0xea, 0x8e, 0x79, 0xb5, 0x8c, 0x10, 0x82, 0xfd, 0xca, 0x4f,
0x43, 0x82, 0x24, 0xda, 0xb6, 0x84, 0xb7, 0x93, 0xa3, 0xd6, 0x78, 0xab, 0xcb, 0xe8, 0x0d, 0x09,
0x6f, 0x17, 0x6e, 0x74, 0xe6, 0xdb, 0x85, 0xb6, 0x49, 0xdb, 0x3b, 0x89, 0xc4, 0x1a, 0x5c, 0x0e,
0xe6, 0x38, 0xf6, 0xb6, 0xfc, 0x3b, 0x8e, 0x8c, 0x00, 0x4b, 0xb2, 0x6c, 0xc6, 0x77, 0xbd, 0xb6,
0xa3, 0x4b, 0x32, 0x2d, 0xc2, 0x96, 0x92, 0x23, 0x1c, 0xd8, 0x3c, 0x24, 0x24, 0x5b, 0x09, 0x39,
0xb1, 0x89, 0xe2, 0xf8, 0xb3, 0x66, 0x7a, 0x8c, 0x1e, 0x53, 0x87, 0x24, 0x96, 0x5b, 0x6c, 0x85,
0xff, 0x77, 0x22, 0x77, 0xd1, 0x46, 0x2e, 0xc8, 0x48, 0xf1, 0x0a, 0xcc, 0x76, 0x61, 0x71, 0x4e,
0xf3, 0x0f, 0x1c, 0xb9, 0x49, 0xcb, 0xa8, 0xaa, 0xef, 0xa2, 0x7f, 0x86, 0xdb, 0x85, 0x4e, 0xb7,
0x67, 0x6d, 0xb7, 0xbb, 0xd8, 0x29, 0xce, 0xc3, 0x5c, 0x77, 0x2e, 0xc7, 0xf9, 0x5f, 0x68, 0x2b,
0x65, 0xe7, 0x98, 0x7b, 0x46, 0x38, 0xbe, 0x32, 0x76, 0xd4, 0xef, 0x5c, 0xa1, 0xa3, 0x94, 0x31,
0x81, 0xb9, 0xec, 0xe9, 0x78, 0xdf, 0x71, 0xa5, 0x77, 0x9f, 0xf0, 0x0b, 0xf9, 0xce, 0xa8, 0xa4,
0xdd, 0xc7, 0xd8, 0x3d, 0x84, 0x1c, 0x90, 0xdc, 0xf2, 0xa1, 0x1e, 0xdb, 0x07, 0x34, 0xe7, 0x2c,
0x87, 0x98, 0xb3, 0xfc, 0x3d, 0xc7, 0xf4, 0xfd, 0xf6, 0x96, 0x6f, 0x92, 0x8a, 0xdb, 0x7f, 0x87,
0x3c, 0x4d, 0xa7, 0x1a, 0x5a, 0xbd, 0x87, 0x29, 0x84, 0x1a, 0xda, 0xa3, 0xea, 0x06, 0x1b, 0x01,
0x7c, 0x3f, 0x55, 0x79, 0x58, 0x2c, 0xce, 0x90, 0x1b, 0xd7, 0x83, 0x62, 0x63, 0x98, 0xff, 0xe9,
0x04, 0x84, 0x4a, 0x58, 0xe1, 0xd7, 0x20, 0xd1, 0xfa, 0x42, 0xeb, 0x91, 0x2f, 0xec, 0x17, 0x4c,
0xe1, 0x72, 0x30, 0xdd, 0x09, 0xd0, 0xbb, 0x70, 0xda, 0xeb, 0x96, 0xcf, 0x78, 0x8a, 0x7b, 0x70,
0x0a, 0x0b, 0xbd, 0x72, 0x3a, 0x5b, 0x1a, 0x30, 0xee, 0xf9, 0xb9, 0xec, 0x4a, 0xaf, 0x9a, 0xf2,
0xc2, 0x62, 0xcf, 0xac, 0xce, 0xae, 0x08, 0x4e, 0xba, 0xbf, 0xc9, 0x5c, 0xf4, 0xd4, 0xe2, 0xe2,
0x12, 0xe6, 0x7b, 0xe1, 0x62, 0xb7, 0x71, 0x97, 0x1a, 0xef, 0x6d, 0x5c, 0x5c, 0x3e, 0xdb, 0xf8,
0x9d, 0xab, 0xb7, 0x61, 0x84, 0x1d, 0xe6, 0x67, 0x3c, 0x85, 0x19, 0x0e, 0x21, 0xd3, 0x8d, 0xc3,
0x51, 0xfd, 0x16, 0x00, 0x33, 0x36, 0xa7, 0x3d, 0xe5, 0x5a, 0x0c, 0xc2, 0x6c, 0x17, 0x06, 0x47,
0xef, 0x7b, 0x30, 0xe9, 0x37, 0xd7, 0xce, 0x07, 0x18, 0xd7, 0xc1, 0x2d, 0x5c, 0xeb, 0x87, 0xdb,
0xd9, 0xfe, 0x2e, 0x8c, 0xb6, 0xcd, 0x8a, 0xe7, 0x03, 0xb4, 0x50, 0x16, 0xe1, 0x4a, 0x57, 0x16,
0x56, 0x7b, 0xdb, 0xf0, 0xe6, 0xad, 0x9d, 0x65, 0xf1, 0xd1, 0xee, 0x39, 0x2e, 0xad, 0x42, 0xdc,
0x19, 0x8b, 0xce, 0x79, 0x8a, 0xd9, 0x64, 0xe1, 0x52, 0x20, 0x99, 0x0d, 0x32, 0x33, 0xa9, 0x78,
0x07, 0xb9, 0xc5, 0xe0, 0x13, 0xe4, 0xce, 0x01, 0x82, 0xff, 0x80, 0x83, 0xe9, 0xa0, 0xe9, 0x61,
0xc1, 0xbf, 0x2c, 0x79, 0x4b, 0x08, 0xaf, 0xf4, 0x2b, 0xe1, 0xd8, 0xf2, 0x09, 0x07, 0xe9, 0x6e,
0xbd, 0x8f, 0x77, 0x2e, 0x75, 0x91, 0x12, 0x5e, 0x1b, 0x44, 0xca, 0xb1, 0xeb, 0x23, 0x0e, 0xce,
0x06, 0xf6, 0xa1, 0xde, 0xd5, 0x2d, 0x48, 0x44, 0xb8, 0xd9, 0xb7, 0x08, 0x7b, 0x2e, 0xfd, 0x9a,
0xa4, 0xf9, 0x40, 0xec, 0xdd, 0x15, 0xec, 0x5a, 0x3f, 0xdc, 0xec, 0x05, 0xe4, 0x75, 0x91, 0x07,
0xd5, 0xab, 0x36, 0x4e, 0x9f, 0x0b, 0x28, 0xe0, 0x42, 0x15, 0x22, 0xef, 0x9b, 0x23, 0x51, 0xf1,
0xd6, 0xc3, 0xdf, 0x53, 0x43, 0x0f, 0x0f, 0x53, 0xdc, 0xa3, 0xc3, 0x14, 0xf7, 0xdb, 0x61, 0x8a,
0xfb, 0xf8, 0x49, 0x6a, 0xe8, 0xd1, 0x93, 0xd4, 0xd0, 0xcf, 0x4f, 0x52, 0x43, 0xef, 0x5c, 0x66,
0xe6, 0xab, 0x65, 0x1d, 0x57, 0xef, 0xd8, 0x3f, 0xb5, 0xca, 0xb9, 0x7d, 0xfa, 0x93, 0x2b, 0x99,
0xb1, 0x36, 0xa3, 0xe4, 0x27, 0xd4, 0xff, 0xfd, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xe7, 0x91, 0xf8,
0x74, 0x0c, 0x1e, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -3235,44 +3186,6 @@ func (m *MsgClearAdminResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *AccessConfigUpdate) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *AccessConfigUpdate) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *AccessConfigUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
{
size, err := m.InstantiatePermission.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
if m.CodeID != 0 {
i = encodeVarintTx(dAtA, i, uint64(m.CodeID))
i--
dAtA[i] = 0x8
}
return len(dAtA) - i, nil
}
func (m *MsgUpdateInstantiateConfig) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@@ -3501,20 +3414,20 @@ func (m *MsgPinCodes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
var l int
_ = l
if len(m.CodeIDs) > 0 {
dAtA6 := make([]byte, len(m.CodeIDs)*10)
var j5 int
dAtA5 := make([]byte, len(m.CodeIDs)*10)
var j4 int
for _, num := range m.CodeIDs {
for num >= 1<<7 {
dAtA6[j5] = uint8(uint64(num)&0x7f | 0x80)
dAtA5[j4] = uint8(uint64(num)&0x7f | 0x80)
num >>= 7
j5++
j4++
}
dAtA6[j5] = uint8(num)
j5++
dAtA5[j4] = uint8(num)
j4++
}
i -= j5
copy(dAtA[i:], dAtA6[:j5])
i = encodeVarintTx(dAtA, i, uint64(j5))
i -= j4
copy(dAtA[i:], dAtA5[:j4])
i = encodeVarintTx(dAtA, i, uint64(j4))
i--
dAtA[i] = 0x12
}
@@ -3572,20 +3485,20 @@ func (m *MsgUnpinCodes) MarshalToSizedBuffer(dAtA []byte) (int, error) {
var l int
_ = l
if len(m.CodeIDs) > 0 {
dAtA8 := make([]byte, len(m.CodeIDs)*10)
var j7 int
dAtA7 := make([]byte, len(m.CodeIDs)*10)
var j6 int
for _, num := range m.CodeIDs {
for num >= 1<<7 {
dAtA8[j7] = uint8(uint64(num)&0x7f | 0x80)
dAtA7[j6] = uint8(uint64(num)&0x7f | 0x80)
num >>= 7
j7++
j6++
}
dAtA8[j7] = uint8(num)
j7++
dAtA7[j6] = uint8(num)
j6++
}
i -= j7
copy(dAtA[i:], dAtA8[:j7])
i = encodeVarintTx(dAtA, i, uint64(j7))
i -= j6
copy(dAtA[i:], dAtA7[:j6])
i = encodeVarintTx(dAtA, i, uint64(j6))
i--
dAtA[i] = 0x12
}
@@ -4361,20 +4274,6 @@ func (m *MsgClearAdminResponse) Size() (n int) {
return n
}
func (m *AccessConfigUpdate) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.CodeID != 0 {
n += 1 + sovTx(uint64(m.CodeID))
}
l = m.InstantiatePermission.Size()
n += 1 + l + sovTx(uint64(l))
return n
}
func (m *MsgUpdateInstantiateConfig) Size() (n int) {
if m == nil {
return 0
@@ -6632,109 +6531,6 @@ func (m *MsgClearAdminResponse) Unmarshal(dAtA []byte) error {
return nil
}
func (m *AccessConfigUpdate) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: AccessConfigUpdate: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: AccessConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field CodeID", wireType)
}
m.CodeID = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.CodeID |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InstantiatePermission", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if err := m.InstantiatePermission.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *MsgUpdateInstantiateConfig) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0