Technical Details

New Data Structures

ContractInfo Enhancement

message ContractInfo {
  // ... existing fields ...
  bool require_governance = 9;  // NEW FIELD
}

Purpose: Flag indicating whether governance approval is required for migrations. Behavior: One-way ratchet (can only change from false → true)

New Message Types

MigrateContractInfo

message MigrateContractInfo {
  string address = 1;
  uint64 new_code_id = 2;
}

Purpose: Individual contract migration specification for batch operations.

MsgMigrateContractProposal

message MsgMigrateContractProposal {
  string authority = 1; // Governance module address
  string title = 2; // Proposal title
  string description = 3; // Proposal description
  repeated MigrateContractInfo contracts = 4; // Multiple contracts
}

Purpose: Governance message to authorize a specific contract migration.

Authority: Only callable by governance module.

MsgSetContractGovernance

message MsgSetContractGovernance {
  string sender = 1; // Contract admin
  string contract_address = 2; // Target contract
}

Purpose: Admin message to enable governance requirement for a contract.

Behavior: Always sets require_governance = true (simplified one-way operation).

New Query Types

QueryAuthorizedMigrationRequest/Response

message QueryAuthorizedMigrationRequest {
  string contract_address = 1;
}
message QueryAuthorizedMigrationResponse {
  uint64 new_code_id = 1; // Authorized code ID (0 if none)
}

Purpose: Query pending governance authorizations for a contract.

Last updated

Was this helpful?