diff --git a/common/cosmwasm-smart-contracts/coconut-dkg-contract/src/msg.rs b/common/cosmwasm-smart-contracts/coconut-dkg-contract/src/msg.rs index 31464b554a..235575ede8 100644 --- a/common/cosmwasm-smart-contracts/coconut-dkg-contract/src/msg.rs +++ b/common/cosmwasm-smart-contracts/coconut-dkg-contract/src/msg.rs @@ -1,13 +1,15 @@ // Copyright 2022 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use crate::types::{EncodedBTEPublicKeyWithProof, EncodedEd25519PublicKey}; +use crate::types::{BlockHeight, EncodedBTEPublicKeyWithProof, EncodedEd25519PublicKey}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] -pub struct InstantiateMsg {} +pub struct InstantiateMsg { + pub dealing_exchange_beginning_height: BlockHeight, +} #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] diff --git a/contracts/coconut-dkg/src/epoch/mod.rs b/contracts/coconut-dkg/src/epoch/mod.rs index 87d5c392c8..11f07ae776 100644 --- a/contracts/coconut-dkg/src/epoch/mod.rs +++ b/contracts/coconut-dkg/src/epoch/mod.rs @@ -1,2 +1,6 @@ // Copyright 2022 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 + +pub mod queries; +pub mod storage; +pub mod transactions; diff --git a/contracts/coconut-dkg/src/epoch/queries.rs b/contracts/coconut-dkg/src/epoch/queries.rs new file mode 100644 index 0000000000..87d5c392c8 --- /dev/null +++ b/contracts/coconut-dkg/src/epoch/queries.rs @@ -0,0 +1,2 @@ +// Copyright 2022 - Nym Technologies SA +// SPDX-License-Identifier: Apache-2.0 diff --git a/contracts/coconut-dkg/src/epoch/storage.rs b/contracts/coconut-dkg/src/epoch/storage.rs new file mode 100644 index 0000000000..3ba73a58c5 --- /dev/null +++ b/contracts/coconut-dkg/src/epoch/storage.rs @@ -0,0 +1,7 @@ +// Copyright 2022 - Nym Technologies SA +// SPDX-License-Identifier: Apache-2.0 + +use coconut_dkg_common::types::Epoch; +use cw_storage_plus::Item; + +pub(crate) const CURRENT_EPOCH: Item = Item::new("current_epoch"); diff --git a/contracts/coconut-dkg/src/epoch/transactions.rs b/contracts/coconut-dkg/src/epoch/transactions.rs new file mode 100644 index 0000000000..87d5c392c8 --- /dev/null +++ b/contracts/coconut-dkg/src/epoch/transactions.rs @@ -0,0 +1,2 @@ +// Copyright 2022 - Nym Technologies SA +// SPDX-License-Identifier: Apache-2.0 diff --git a/contracts/coconut-dkg/src/lib.rs b/contracts/coconut-dkg/src/lib.rs index cb0baa41b3..37158efa3d 100644 --- a/contracts/coconut-dkg/src/lib.rs +++ b/contracts/coconut-dkg/src/lib.rs @@ -3,7 +3,9 @@ use crate::error::ContractError; use coconut_dkg_common::msg::{ExecuteMsg, InstantiateMsg, MigrateMsg, QueryMsg}; +use coconut_dkg_common::types::{Epoch, EpochState}; use cosmwasm_std::{entry_point, Deps, DepsMut, Env, MessageInfo, QueryResponse, Response}; +use epoch::storage as epoch_storage; mod constants; mod dealers; @@ -18,11 +20,21 @@ mod support; /// `msg` is the contract initialization message, sort of like a constructor call. #[entry_point] pub fn instantiate( - _deps: DepsMut<'_>, - _env: Env, + deps: DepsMut<'_>, + env: Env, _info: MessageInfo, - _msg: InstantiateMsg, + msg: InstantiateMsg, ) -> Result { + epoch_storage::CURRENT_EPOCH.save( + deps.storage, + &Epoch { + id: 0, + state: EpochState::PublicKeySubmission { + begun_at: env.block.height, + finish_by: msg.dealing_exchange_beginning_height, + }, + }, + )?; Ok(Response::default()) }