wasmd/proto/cosmwasm/wasm/v1/tx.proto

522 lines
20 KiB
Protocol Buffer

syntax = "proto3";
package cosmwasm.wasm.v1;
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/msg/v1/msg.proto";
import "gogoproto/gogo.proto";
import "cosmwasm/wasm/v1/types.proto";
import "cosmos_proto/cosmos.proto";
import "amino/amino.proto";
option go_package = "github.com/CosmWasm/wasmd/x/wasm/types";
option (gogoproto.goproto_getters_all) = false;
// Msg defines the wasm Msg service.
service Msg {
option (cosmos.msg.v1.service) = true;
// StoreCode to submit Wasm code to the system
rpc StoreCode(MsgStoreCode) returns (MsgStoreCodeResponse);
// InstantiateContract creates a new smart contract instance for the given
// code id.
rpc InstantiateContract(MsgInstantiateContract)
returns (MsgInstantiateContractResponse);
// InstantiateContract2 creates a new smart contract instance for the given
// code id with a predictable address
rpc InstantiateContract2(MsgInstantiateContract2)
returns (MsgInstantiateContract2Response);
// Execute submits the given message data to a smart contract
rpc ExecuteContract(MsgExecuteContract) returns (MsgExecuteContractResponse);
// Migrate runs a code upgrade/ downgrade for a smart contract
rpc MigrateContract(MsgMigrateContract) returns (MsgMigrateContractResponse);
// UpdateAdmin sets a new admin for a smart contract
rpc UpdateAdmin(MsgUpdateAdmin) returns (MsgUpdateAdminResponse);
// ClearAdmin removes any admin stored for a smart contract
rpc ClearAdmin(MsgClearAdmin) returns (MsgClearAdminResponse);
// UpdateInstantiateConfig updates instantiate config for a smart contract
rpc UpdateInstantiateConfig(MsgUpdateInstantiateConfig)
returns (MsgUpdateInstantiateConfigResponse);
// UpdateParams defines a governance operation for updating the x/wasm
// module parameters. The authority is defined in the keeper.
//
// Since: 0.40
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
// SudoContract defines a governance operation for calling sudo
// on a contract. The authority is defined in the keeper.
//
// Since: 0.40
rpc SudoContract(MsgSudoContract) returns (MsgSudoContractResponse);
// PinCodes defines a governance operation for pinning a set of
// code ids in the wasmvm cache. The authority is defined in the keeper.
//
// Since: 0.40
rpc PinCodes(MsgPinCodes) returns (MsgPinCodesResponse);
// UnpinCodes defines a governance operation for unpinning a set of
// code ids in the wasmvm cache. The authority is defined in the keeper.
//
// Since: 0.40
rpc UnpinCodes(MsgUnpinCodes) returns (MsgUnpinCodesResponse);
// StoreAndInstantiateContract defines a governance operation for storing
// and instantiating the contract. The authority is defined in the keeper.
//
// Since: 0.40
rpc StoreAndInstantiateContract(MsgStoreAndInstantiateContract)
returns (MsgStoreAndInstantiateContractResponse);
// RemoveCodeUploadParamsAddresses defines a governance operation for
// removing addresses from code upload params.
// The authority is defined in the keeper.
rpc RemoveCodeUploadParamsAddresses(MsgRemoveCodeUploadParamsAddresses)
returns (MsgRemoveCodeUploadParamsAddressesResponse);
// AddCodeUploadParamsAddresses defines a governance operation for
// adding addresses to code upload params.
// The authority is defined in the keeper.
rpc AddCodeUploadParamsAddresses(MsgAddCodeUploadParamsAddresses)
returns (MsgAddCodeUploadParamsAddressesResponse);
// StoreAndMigrateContract defines a governance operation for storing
// and migrating the contract. The authority is defined in the keeper.
//
// Since: 0.42
rpc StoreAndMigrateContract(MsgStoreAndMigrateContract)
returns (MsgStoreAndMigrateContractResponse);
// UpdateContractLabel sets a new label for a smart contract
//
// Since: 0.43
rpc UpdateContractLabel(MsgUpdateContractLabel)
returns (MsgUpdateContractLabelResponse);
}
// MsgStoreCode submit Wasm code to the system
message MsgStoreCode {
option (amino.name) = "wasm/MsgStoreCode";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// WASMByteCode can be raw or gzip compressed
bytes wasm_byte_code = 2 [ (gogoproto.customname) = "WASMByteCode" ];
// Used in v1beta1
reserved 3, 4;
// InstantiatePermission access control to apply on contract creation,
// optional
AccessConfig instantiate_permission = 5;
}
// MsgStoreCodeResponse returns store result data.
message MsgStoreCodeResponse {
// CodeID is the reference to the stored WASM code
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
// Checksum is the sha256 hash of the stored code
bytes checksum = 2;
}
// MsgInstantiateContract create a new smart contract instance for the given
// code id.
message MsgInstantiateContract {
option (amino.name) = "wasm/MsgInstantiateContract";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Admin is an optional address that can execute migrations
string admin = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeID is the reference to the stored WASM code
uint64 code_id = 3 [ (gogoproto.customname) = "CodeID" ];
// Label is optional metadata to be stored with a contract instance.
string label = 4;
// Msg json encoded message to be passed to the contract on instantiation
bytes msg = 5 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
// 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",
(amino.encoding) = "legacy_coins"
];
}
// MsgInstantiateContractResponse return instantiation result data
message MsgInstantiateContractResponse {
// Address is the bech32 address of the new contract instance.
string address = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Data contains bytes to returned from the contract
bytes data = 2;
}
// MsgInstantiateContract2 create a new smart contract instance for the given
// code id with a predictable address.
message MsgInstantiateContract2 {
option (amino.name) = "wasm/MsgInstantiateContract2";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Admin is an optional address that can execute migrations
string admin = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeID is the reference to the stored WASM code
uint64 code_id = 3 [ (gogoproto.customname) = "CodeID" ];
// Label is optional metadata to be stored with a contract instance.
string label = 4;
// Msg json encoded message to be passed to the contract on instantiation
bytes msg = 5 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
// 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",
(amino.encoding) = "legacy_coins"
];
// Salt is an arbitrary value provided by the sender. Size can be 1 to 64.
bytes salt = 7;
// FixMsg include the msg value into the hash for the predictable address.
// Default is false
bool fix_msg = 8;
}
// MsgInstantiateContract2Response return instantiation result data
message MsgInstantiateContract2Response {
// Address is the bech32 address of the new contract instance.
string address = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Data contains bytes to returned from the contract
bytes data = 2;
}
// MsgExecuteContract submits the given message data to a smart contract
message MsgExecuteContract {
option (amino.name) = "wasm/MsgExecuteContract";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Contract is the address of the smart contract
string contract = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Msg json encoded message to be passed to the contract
bytes msg = 3 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
// Funds coins that are transferred to the contract on execution
repeated cosmos.base.v1beta1.Coin funds = 5 [
(gogoproto.nullable) = false,
(amino.dont_omitempty) = true,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
(amino.encoding) = "legacy_coins"
];
}
// MsgExecuteContractResponse returns execution result data.
message MsgExecuteContractResponse {
// Data contains bytes to returned from the contract
bytes data = 1;
}
// MsgMigrateContract runs a code upgrade/ downgrade for a smart contract
message MsgMigrateContract {
option (amino.name) = "wasm/MsgMigrateContract";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Contract is the address of the smart contract
string contract = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeID references the new WASM code
uint64 code_id = 3 [ (gogoproto.customname) = "CodeID" ];
// Msg json encoded message to be passed to the contract on migration
bytes msg = 4 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
}
// MsgMigrateContractResponse returns contract migration result data.
message MsgMigrateContractResponse {
// Data contains same raw bytes returned as data from the wasm contract.
// (May be empty)
bytes data = 1;
}
// MsgUpdateAdmin sets a new admin for a smart contract
message MsgUpdateAdmin {
option (amino.name) = "wasm/MsgUpdateAdmin";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// NewAdmin address to be set
string new_admin = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Contract is the address of the smart contract
string contract = 3 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
}
// MsgUpdateAdminResponse returns empty data
message MsgUpdateAdminResponse {}
// MsgClearAdmin removes any admin stored for a smart contract
message MsgClearAdmin {
option (amino.name) = "wasm/MsgClearAdmin";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Contract is the address of the smart contract
string contract = 3 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
}
// MsgClearAdminResponse returns empty data
message MsgClearAdminResponse {}
// MsgUpdateInstantiateConfig updates instantiate config for a smart contract
message MsgUpdateInstantiateConfig {
option (amino.name) = "wasm/MsgUpdateInstantiateConfig";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeID references the stored WASM code
uint64 code_id = 2 [ (gogoproto.customname) = "CodeID" ];
// NewInstantiatePermission is the new access control
AccessConfig new_instantiate_permission = 3;
}
// MsgUpdateInstantiateConfigResponse returns empty data
message MsgUpdateInstantiateConfigResponse {}
// MsgUpdateParams is the MsgUpdateParams request type.
//
// Since: 0.40
message MsgUpdateParams {
option (amino.name) = "wasm/MsgUpdateParams";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// params defines the x/wasm parameters to update.
//
// NOTE: All parameters must be supplied.
Params params = 2
[ (gogoproto.nullable) = false, (amino.dont_omitempty) = true ];
}
// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
//
// Since: 0.40
message MsgUpdateParamsResponse {}
// MsgSudoContract is the MsgSudoContract request type.
//
// Since: 0.40
message MsgSudoContract {
option (amino.name) = "wasm/MsgSudoContract";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Contract is the address of the smart contract
string contract = 2 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Msg json encoded message to be passed to the contract as sudo
bytes msg = 3 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
}
// MsgSudoContractResponse defines the response structure for executing a
// MsgSudoContract message.
//
// Since: 0.40
message MsgSudoContractResponse {
// Data contains bytes to returned from the contract
bytes data = 1;
}
// MsgPinCodes is the MsgPinCodes request type.
//
// Since: 0.40
message MsgPinCodes {
option (amino.name) = "wasm/MsgPinCodes";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeIDs references the new WASM codes
repeated uint64 code_ids = 2 [
(gogoproto.customname) = "CodeIDs",
(gogoproto.moretags) = "yaml:\"code_ids\""
];
}
// MsgPinCodesResponse defines the response structure for executing a
// MsgPinCodes message.
//
// Since: 0.40
message MsgPinCodesResponse {}
// MsgUnpinCodes is the MsgUnpinCodes request type.
//
// Since: 0.40
message MsgUnpinCodes {
option (amino.name) = "wasm/MsgUnpinCodes";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// CodeIDs references the WASM codes
repeated uint64 code_ids = 2 [
(gogoproto.customname) = "CodeIDs",
(gogoproto.moretags) = "yaml:\"code_ids\""
];
}
// MsgUnpinCodesResponse defines the response structure for executing a
// MsgUnpinCodes message.
//
// Since: 0.40
message MsgUnpinCodesResponse {}
// MsgStoreAndInstantiateContract is the MsgStoreAndInstantiateContract
// request type.
//
// Since: 0.40
message MsgStoreAndInstantiateContract {
option (amino.name) = "wasm/MsgStoreAndInstantiateContract";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// WASMByteCode can be raw or gzip compressed
bytes wasm_byte_code = 3 [ (gogoproto.customname) = "WASMByteCode" ];
// InstantiatePermission to apply on contract creation, optional
AccessConfig instantiate_permission = 4;
// UnpinCode code on upload, optional. As default the uploaded contract is
// pinned to cache.
bool unpin_code = 5;
// Admin is an optional address that can execute migrations
string admin = 6 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Label is optional metadata to be stored with a contract instance.
string label = 7;
// Msg json encoded message to be passed to the contract on instantiation
bytes msg = 8 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
// Funds coins that are transferred from the authority account to the contract
// on instantiation
repeated cosmos.base.v1beta1.Coin funds = 9 [
(gogoproto.nullable) = false,
(amino.dont_omitempty) = true,
(gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins",
(amino.encoding) = "legacy_coins"
];
// Source is the URL where the code is hosted
string source = 10;
// Builder is the docker image used to build the code deterministically, used
// for smart contract verification
string builder = 11;
// CodeHash is the SHA256 sum of the code outputted by builder, used for smart
// contract verification
bytes code_hash = 12;
}
// MsgStoreAndInstantiateContractResponse defines the response structure
// for executing a MsgStoreAndInstantiateContract message.
//
// Since: 0.40
message MsgStoreAndInstantiateContractResponse {
// Address is the bech32 address of the new contract instance.
string address = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// Data contains bytes to returned from the contract
bytes data = 2;
}
// MsgAddCodeUploadParamsAddresses is the
// MsgAddCodeUploadParamsAddresses request type.
message MsgAddCodeUploadParamsAddresses {
option (amino.name) = "wasm/MsgAddCodeUploadParamsAddresses";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
repeated string addresses = 2 [ (gogoproto.moretags) = "yaml:\"addresses\"" ];
}
// MsgAddCodeUploadParamsAddressesResponse defines the response
// structure for executing a MsgAddCodeUploadParamsAddresses message.
message MsgAddCodeUploadParamsAddressesResponse {}
// MsgRemoveCodeUploadParamsAddresses is the
// MsgRemoveCodeUploadParamsAddresses request type.
message MsgRemoveCodeUploadParamsAddresses {
option (amino.name) = "wasm/MsgRemoveCodeUploadParamsAddresses";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
repeated string addresses = 2 [ (gogoproto.moretags) = "yaml:\"addresses\"" ];
}
// MsgRemoveCodeUploadParamsAddressesResponse defines the response
// structure for executing a MsgRemoveCodeUploadParamsAddresses message.
message MsgRemoveCodeUploadParamsAddressesResponse {}
// MsgStoreAndMigrateContract is the MsgStoreAndMigrateContract
// request type.
//
// Since: 0.42
message MsgStoreAndMigrateContract {
option (amino.name) = "wasm/MsgStoreAndMigrateContract";
option (cosmos.msg.v1.signer) = "authority";
// Authority is the address of the governance account.
string authority = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// WASMByteCode can be raw or gzip compressed
bytes wasm_byte_code = 2 [ (gogoproto.customname) = "WASMByteCode" ];
// InstantiatePermission to apply on contract creation, optional
AccessConfig instantiate_permission = 3;
// Contract is the address of the smart contract
string contract = 4;
// Msg json encoded message to be passed to the contract on migration
bytes msg = 5 [
(gogoproto.casttype) = "RawContractMessage",
(amino.encoding) = "inline_json"
];
}
// MsgStoreAndMigrateContractResponse defines the response structure
// for executing a MsgStoreAndMigrateContract message.
//
// Since: 0.42
message MsgStoreAndMigrateContractResponse {
// CodeID is the reference to the stored WASM code
uint64 code_id = 1 [ (gogoproto.customname) = "CodeID" ];
// Checksum is the sha256 hash of the stored code
bytes checksum = 2;
// Data contains bytes to returned from the contract
bytes data = 3;
}
// MsgUpdateContractLabel sets a new label for a smart contract
message MsgUpdateContractLabel {
option (amino.name) = "wasm/MsgUpdateContractLabel";
option (cosmos.msg.v1.signer) = "sender";
// Sender is the that actor that signed the messages
string sender = 1 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
// NewLabel string to be set
string new_label = 2;
// Contract is the address of the smart contract
string contract = 3 [ (cosmos_proto.scalar) = "cosmos.AddressString" ];
}
// MsgUpdateContractLabelResponse returns empty data
message MsgUpdateContractLabelResponse {}