From 8774b22d8403bc27d7db1992ec6221db8fc62d60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Tue, 15 Nov 2022 16:06:03 +0000 Subject: [PATCH] Added migration code for updating vesting contract address --- .../mixnet-contract/src/msg.rs | 4 +++- contracts/mixnet/src/contract.rs | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/common/cosmwasm-smart-contracts/mixnet-contract/src/msg.rs b/common/cosmwasm-smart-contracts/mixnet-contract/src/msg.rs index c6fb28063e..8950b10055 100644 --- a/common/cosmwasm-smart-contracts/mixnet-contract/src/msg.rs +++ b/common/cosmwasm-smart-contracts/mixnet-contract/src/msg.rs @@ -413,4 +413,6 @@ pub enum QueryMsg { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] #[serde(rename_all = "snake_case")] -pub struct MigrateMsg {} +pub struct MigrateMsg { + pub vesting_contract_address: String, +} diff --git a/contracts/mixnet/src/contract.rs b/contracts/mixnet/src/contract.rs index 1951c535de..7e4c8de786 100644 --- a/contracts/mixnet/src/contract.rs +++ b/contracts/mixnet/src/contract.rs @@ -467,10 +467,20 @@ pub fn query( #[entry_point] pub fn migrate( - _deps: DepsMut<'_>, + deps: DepsMut<'_>, _env: Env, - _msg: MigrateMsg, + msg: MigrateMsg, ) -> Result { + // due to circular dependency on contract addresses (i.e. mixnet contract requiring vesting contract address + // and vesting contract requiring the mixnet contract address), if we ever want to deploy any new fresh + // environment, one of the contracts will HAVE TO go through a migration + if !msg.vesting_contract_address.is_empty() { + let mut current_state = mixnet_params_storage::CONTRACT_STATE.load(deps.storage)?; + current_state.vesting_contract_address = + deps.api.addr_validate(&msg.vesting_contract_address)?; + mixnet_params_storage::CONTRACT_STATE.save(deps.storage, ¤t_state)?; + } + Ok(Default::default()) }