Experimentally replaced storage for config and layers with cw plus Item
This commit is contained in:
Generated
+11
@@ -190,6 +190,16 @@ dependencies = [
|
||||
"zeroize",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cw-storage-plus"
|
||||
version = "0.6.2"
|
||||
source = "git+https://github.com/jstuczyn/cw-plus?branch=feature/0.6.2-cosmwasm-fork#5d3e59c8327d1ab4a748c0be5ad3a376b710bfe5"
|
||||
dependencies = [
|
||||
"cosmwasm-std",
|
||||
"schemars",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "der"
|
||||
version = "0.4.4"
|
||||
@@ -493,6 +503,7 @@ dependencies = [
|
||||
"cosmwasm-schema",
|
||||
"cosmwasm-std",
|
||||
"cosmwasm-storage",
|
||||
"cw-storage-plus",
|
||||
"fixed",
|
||||
"mixnet-contract",
|
||||
"schemars",
|
||||
|
||||
@@ -40,6 +40,7 @@ config = { path = "../../common/config"}
|
||||
cosmwasm-std = { git = "https://github.com/jstuczyn/cosmwasm", branch="0.14.1-updatedk256", features = ["iterator"] }
|
||||
cosmwasm-storage = { git = "https://github.com/jstuczyn/cosmwasm", branch="0.14.1-updatedk256", features = ["iterator"] }
|
||||
|
||||
cw-storage-plus = { git = "https://github.com/jstuczyn/cw-plus", branch = "feature/0.6.2-cosmwasm-fork", features = ["iterator"] }
|
||||
#cosmwasm-std = { version = "0.14.1", features = ["iterator"] }
|
||||
#cosmwasm-storage = { version = "0.14.1", features = ["iterator"] }
|
||||
|
||||
|
||||
@@ -70,8 +70,8 @@ pub fn instantiate(
|
||||
) -> Result<Response, ContractError> {
|
||||
let state = default_initial_state(info.sender, env);
|
||||
|
||||
mixnet_params_storage::contract_settings(deps.storage).save(&state)?;
|
||||
mixnet_params_storage::layer_distribution(deps.storage).save(&Default::default())?;
|
||||
mixnet_params_storage::CONTRACT_SETTINGS.save(deps.storage, &state)?;
|
||||
mixnet_params_storage::LAYERS.save(deps.storage, &Default::default())?;
|
||||
Ok(Response::default())
|
||||
}
|
||||
|
||||
@@ -168,9 +168,9 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> Result<QueryResponse, Cont
|
||||
to_binary(&mixnode_queries::query_owns_mixnode(deps, address)?)
|
||||
}
|
||||
QueryMsg::OwnsGateway { address } => to_binary(&query_owns_gateway(deps, address)?),
|
||||
QueryMsg::StateParams {} => to_binary(&query_contract_settings_params(deps)),
|
||||
QueryMsg::CurrentRewardingInterval {} => to_binary(&query_rewarding_interval(deps)),
|
||||
QueryMsg::LayerDistribution {} => to_binary(&query_layer_distribution(deps)),
|
||||
QueryMsg::StateParams {} => to_binary(&query_contract_settings_params(deps)?),
|
||||
QueryMsg::CurrentRewardingInterval {} => to_binary(&query_rewarding_interval(deps)?),
|
||||
QueryMsg::LayerDistribution {} => to_binary(&query_layer_distribution(deps)?),
|
||||
QueryMsg::GetMixDelegations {
|
||||
mix_identity,
|
||||
start_after,
|
||||
|
||||
@@ -41,8 +41,10 @@ pub(crate) fn try_add_gateway(
|
||||
}
|
||||
}
|
||||
|
||||
let minimum_bond =
|
||||
mixnet_params_storage::read_contract_settings_params(deps.storage).minimum_gateway_bond;
|
||||
let minimum_bond = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.storage)?
|
||||
.params
|
||||
.minimum_gateway_bond;
|
||||
validate_gateway_bond(&info.funds, minimum_bond)?;
|
||||
|
||||
let bond = GatewayBond::new(
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
use super::storage;
|
||||
use cosmwasm_std::Deps;
|
||||
use cosmwasm_std::{Deps, StdResult};
|
||||
use mixnet_contract::{ContractSettingsParams, RewardingIntervalResponse};
|
||||
|
||||
pub(crate) fn query_contract_settings_params(deps: Deps) -> ContractSettingsParams {
|
||||
storage::read_contract_settings_params(deps.storage)
|
||||
pub(crate) fn query_contract_settings_params(deps: Deps) -> StdResult<ContractSettingsParams> {
|
||||
storage::CONTRACT_SETTINGS
|
||||
.load(deps.storage)
|
||||
.map(|settings| settings.params)
|
||||
}
|
||||
|
||||
pub(crate) fn query_rewarding_interval(deps: Deps) -> RewardingIntervalResponse {
|
||||
let state = storage::contract_settings_read(deps.storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
RewardingIntervalResponse {
|
||||
pub(crate) fn query_rewarding_interval(deps: Deps) -> StdResult<RewardingIntervalResponse> {
|
||||
let state = storage::CONTRACT_SETTINGS.load(deps.storage)?;
|
||||
|
||||
Ok(RewardingIntervalResponse {
|
||||
current_rewarding_interval_starting_block: state.rewarding_interval_starting_block,
|
||||
current_rewarding_interval_nonce: state.latest_rewarding_interval_nonce,
|
||||
rewarding_in_progress: state.rewarding_in_progress,
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -43,13 +44,13 @@ pub(crate) mod tests {
|
||||
rewarding_in_progress: false,
|
||||
};
|
||||
|
||||
storage::contract_settings(deps.as_mut().storage)
|
||||
.save(&dummy_state)
|
||||
storage::CONTRACT_SETTINGS
|
||||
.save(deps.as_mut().storage, &dummy_state)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
dummy_state.params,
|
||||
query_contract_settings_params(deps.as_ref())
|
||||
query_contract_settings_params(deps.as_ref()).unwrap()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,87 +4,57 @@
|
||||
use crate::mixnet_contract_settings::models::ContractSettings;
|
||||
use cosmwasm_std::StdResult;
|
||||
use cosmwasm_std::Storage;
|
||||
use cosmwasm_storage::singleton;
|
||||
use cosmwasm_storage::singleton_read;
|
||||
use cosmwasm_storage::ReadonlySingleton;
|
||||
use cosmwasm_storage::Singleton;
|
||||
use mixnet_contract::ContractSettingsParams;
|
||||
use cw_storage_plus::Item;
|
||||
use mixnet_contract::Layer;
|
||||
use mixnet_contract::LayerDistribution;
|
||||
|
||||
// storage prefixes
|
||||
const CONFIG_KEY: &[u8] = b"config";
|
||||
const LAYER_DISTRIBUTION_KEY: &[u8] = b"layers";
|
||||
|
||||
pub fn contract_settings(storage: &mut dyn Storage) -> Singleton<ContractSettings> {
|
||||
singleton(storage, CONFIG_KEY)
|
||||
}
|
||||
|
||||
pub fn contract_settings_read(storage: &dyn Storage) -> ReadonlySingleton<ContractSettings> {
|
||||
singleton_read(storage, CONFIG_KEY)
|
||||
}
|
||||
|
||||
pub(crate) fn read_contract_settings_params(storage: &dyn Storage) -> ContractSettingsParams {
|
||||
// note: In any other case, I wouldn't have attempted to unwrap this result, but in here
|
||||
// if we fail to load the stored state we would already be in the undefined behaviour land,
|
||||
// so we better just blow up immediately.
|
||||
contract_settings_read(storage).load().unwrap().params
|
||||
}
|
||||
|
||||
pub fn layer_distribution(storage: &mut dyn Storage) -> Singleton<LayerDistribution> {
|
||||
singleton(storage, LAYER_DISTRIBUTION_KEY)
|
||||
}
|
||||
|
||||
pub(crate) fn read_layer_distribution(storage: &dyn Storage) -> LayerDistribution {
|
||||
// note: In any other case, I wouldn't have attempted to unwrap this result, but in here
|
||||
// if we fail to load the stored state we would already be in the undefined behaviour land,
|
||||
// so we better just blow up immediately.
|
||||
layer_distribution_read(storage).load().unwrap()
|
||||
}
|
||||
|
||||
pub fn layer_distribution_read(storage: &dyn Storage) -> ReadonlySingleton<LayerDistribution> {
|
||||
singleton_read(storage, LAYER_DISTRIBUTION_KEY)
|
||||
}
|
||||
pub(crate) const CONTRACT_SETTINGS: Item<ContractSettings> = Item::new("config");
|
||||
pub(crate) const LAYERS: Item<LayerDistribution> = Item::new("layers");
|
||||
|
||||
pub fn increment_layer_count(storage: &mut dyn Storage, layer: Layer) -> StdResult<()> {
|
||||
let mut distribution = layer_distribution(storage).load()?;
|
||||
match layer {
|
||||
Layer::Gateway => distribution.gateways += 1,
|
||||
Layer::One => distribution.layer1 += 1,
|
||||
Layer::Two => distribution.layer2 += 1,
|
||||
Layer::Three => distribution.layer3 += 1,
|
||||
}
|
||||
layer_distribution(storage).save(&distribution)
|
||||
LAYERS
|
||||
.update(storage, |mut distribution| {
|
||||
match layer {
|
||||
Layer::Gateway => distribution.gateways += 1,
|
||||
Layer::One => distribution.layer1 += 1,
|
||||
Layer::Two => distribution.layer2 += 1,
|
||||
Layer::Three => distribution.layer3 += 1,
|
||||
}
|
||||
Ok(distribution)
|
||||
})
|
||||
.map(|_| ())
|
||||
}
|
||||
|
||||
pub fn decrement_layer_count(storage: &mut dyn Storage, layer: Layer) -> StdResult<()> {
|
||||
let mut distribution = layer_distribution(storage).load()?;
|
||||
// It can't possibly go below zero, if it does, it means there's a serious error in the contract logic
|
||||
match layer {
|
||||
Layer::Gateway => {
|
||||
distribution.gateways = distribution
|
||||
.gateways
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
Layer::One => {
|
||||
distribution.layer1 = distribution
|
||||
.layer1
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
Layer::Two => {
|
||||
distribution.layer2 = distribution
|
||||
.layer2
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
Layer::Three => {
|
||||
distribution.layer3 = distribution
|
||||
.layer3
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
};
|
||||
layer_distribution(storage).save(&distribution)
|
||||
LAYERS
|
||||
.update(storage, |mut distribution| {
|
||||
match layer {
|
||||
Layer::Gateway => {
|
||||
distribution.gateways = distribution
|
||||
.gateways
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
Layer::One => {
|
||||
distribution.layer1 = distribution
|
||||
.layer1
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
Layer::Two => {
|
||||
distribution.layer2 = distribution
|
||||
.layer2
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
Layer::Three => {
|
||||
distribution.layer3 = distribution
|
||||
.layer3
|
||||
.checked_sub(1)
|
||||
.expect("tried to subtract from unsigned zero!")
|
||||
}
|
||||
}
|
||||
Ok(distribution)
|
||||
})
|
||||
.map(|_| ())
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ pub(crate) fn try_update_contract_settings(
|
||||
info: MessageInfo,
|
||||
params: ContractSettingsParams,
|
||||
) -> Result<Response, ContractError> {
|
||||
let mut state = storage::contract_settings_read(deps.storage).load()?;
|
||||
let mut state = storage::CONTRACT_SETTINGS.load(deps.storage)?;
|
||||
|
||||
// check if this is executed by the owner, if not reject the transaction
|
||||
if info.sender != state.owner {
|
||||
@@ -35,8 +35,33 @@ pub(crate) fn try_update_contract_settings(
|
||||
}
|
||||
|
||||
state.params = params;
|
||||
storage::CONTRACT_SETTINGS.save(deps.storage, &state)?;
|
||||
|
||||
storage::contract_settings(deps.storage).save(&state)?;
|
||||
// alternative:
|
||||
|
||||
// storage::CONTRACT_SETTINGS.update(deps.storage, |mut state| {
|
||||
// // check if this is executed by the owner, if not reject the transaction
|
||||
// if info.sender != state.owner {
|
||||
// return Err(ContractError::Unauthorized);
|
||||
// }
|
||||
//
|
||||
// if params.mixnode_rewarded_set_size == 0 {
|
||||
// return Err(ContractError::ZeroRewardedSet);
|
||||
// }
|
||||
//
|
||||
// if params.mixnode_active_set_size == 0 {
|
||||
// return Err(ContractError::ZeroActiveSet);
|
||||
// }
|
||||
//
|
||||
// // note: rewarded_set = active_set + idle_set
|
||||
// // hence rewarded set must always be bigger than (or equal to) the active set
|
||||
// if params.mixnode_rewarded_set_size < params.mixnode_active_set_size {
|
||||
// return Err(ContractError::InvalidActiveSetSize);
|
||||
// }
|
||||
//
|
||||
// state.params = params;
|
||||
// Ok(state)
|
||||
// });
|
||||
|
||||
Ok(Response::default())
|
||||
}
|
||||
@@ -66,8 +91,8 @@ pub mod tests {
|
||||
// sanity check to ensure new_params are different than the default ones
|
||||
assert_ne!(
|
||||
new_params,
|
||||
storage::contract_settings_read(deps.as_ref().storage)
|
||||
.load()
|
||||
storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_ref().storage)
|
||||
.unwrap()
|
||||
.params
|
||||
);
|
||||
@@ -83,8 +108,8 @@ pub mod tests {
|
||||
assert_eq!(res, Ok(Response::default()));
|
||||
|
||||
// and the state is actually updated
|
||||
let current_state = storage::contract_settings_read(deps.as_ref().storage)
|
||||
.load()
|
||||
let current_state = storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_ref().storage)
|
||||
.unwrap();
|
||||
assert_eq!(current_state.params, new_params);
|
||||
|
||||
|
||||
@@ -46,11 +46,13 @@ pub(crate) fn try_add_mixnode(
|
||||
}
|
||||
}
|
||||
|
||||
let minimum_bond =
|
||||
mixnet_params_storage::read_contract_settings_params(deps.storage).minimum_mixnode_bond;
|
||||
let minimum_bond = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.storage)?
|
||||
.params
|
||||
.minimum_mixnode_bond;
|
||||
validate_mixnode_bond(&info.funds, minimum_bond)?;
|
||||
|
||||
let layer_distribution = query_layer_distribution(deps.as_ref());
|
||||
let layer_distribution = query_layer_distribution(deps.as_ref())?;
|
||||
let layer = layer_distribution.choose_with_fewest();
|
||||
|
||||
let stored_bond = StoredMixnodeBond::new(
|
||||
@@ -386,9 +388,7 @@ pub mod tests {
|
||||
|
||||
assert_eq!(
|
||||
LayerDistribution::default(),
|
||||
mixnet_params_storage::layer_distribution_read(&deps.storage)
|
||||
.load()
|
||||
.unwrap(),
|
||||
mixnet_params_storage::LAYERS.load(&deps.storage).unwrap(),
|
||||
);
|
||||
|
||||
let info = mock_info("mix-owner", &test_helpers::good_mixnode_bond());
|
||||
@@ -405,9 +405,7 @@ pub mod tests {
|
||||
layer1: 1,
|
||||
..Default::default()
|
||||
},
|
||||
mixnet_params_storage::layer_distribution_read(&deps.storage)
|
||||
.load()
|
||||
.unwrap()
|
||||
mixnet_params_storage::LAYERS.load(&deps.storage).unwrap()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
use crate::mixnet_contract_settings::storage as mixnet_params_storage;
|
||||
use cosmwasm_std::Deps;
|
||||
use cosmwasm_std::{Deps, StdResult};
|
||||
use mixnet_contract::LayerDistribution;
|
||||
|
||||
pub(crate) fn query_layer_distribution(deps: Deps) -> LayerDistribution {
|
||||
mixnet_params_storage::read_layer_distribution(deps.storage)
|
||||
pub(crate) fn query_layer_distribution(deps: Deps) -> StdResult<LayerDistribution> {
|
||||
mixnet_params_storage::LAYERS.load(deps.storage)
|
||||
}
|
||||
|
||||
@@ -52,10 +52,9 @@ pub(crate) mod tests {
|
||||
fn returns_empty_status_for_unrewarded_nodes() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let node_identity =
|
||||
@@ -93,10 +92,9 @@ pub(crate) mod tests {
|
||||
// with single page
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let node_identity = "bobsnode".to_string();
|
||||
@@ -216,10 +214,9 @@ pub(crate) mod tests {
|
||||
fn returns_pending_next_delegator_page_status_when_there_are_more_delegators_to_reward() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let node_identity = "bobsnode".to_string();
|
||||
|
||||
@@ -34,7 +34,7 @@ fn verify_rewarding_state(
|
||||
info: MessageInfo,
|
||||
rewarding_interval_nonce: u32,
|
||||
) -> Result<(), ContractError> {
|
||||
let state = mixnet_params_storage::contract_settings_read(storage).load()?;
|
||||
let state = mixnet_params_storage::CONTRACT_SETTINGS.load(storage)?;
|
||||
|
||||
// check if this is executed by the permitted validator, if not reject the transaction
|
||||
if info.sender != state.rewarding_validator_address {
|
||||
@@ -70,7 +70,7 @@ pub(crate) fn try_begin_mixnode_rewarding(
|
||||
info: MessageInfo,
|
||||
rewarding_interval_nonce: u32,
|
||||
) -> Result<Response, ContractError> {
|
||||
let mut state = mixnet_params_storage::contract_settings_read(deps.storage).load()?;
|
||||
let mut state = mixnet_params_storage::CONTRACT_SETTINGS.load(deps.storage)?;
|
||||
|
||||
// check if this is executed by the permitted validator, if not reject the transaction
|
||||
if info.sender != state.rewarding_validator_address {
|
||||
@@ -102,7 +102,7 @@ pub(crate) fn try_begin_mixnode_rewarding(
|
||||
state.latest_rewarding_interval_nonce = rewarding_interval_nonce;
|
||||
state.rewarding_in_progress = true;
|
||||
|
||||
mixnet_params_storage::contract_settings(deps.storage).save(&state)?;
|
||||
mixnet_params_storage::CONTRACT_SETTINGS.save(deps.storage, &state)?;
|
||||
|
||||
let mut response = Response::new();
|
||||
response.add_attribute(
|
||||
@@ -405,7 +405,7 @@ pub(crate) fn try_finish_mixnode_rewarding(
|
||||
info: MessageInfo,
|
||||
rewarding_interval_nonce: u32,
|
||||
) -> Result<Response, ContractError> {
|
||||
let mut state = mixnet_params_storage::contract_settings_read(deps.storage).load()?;
|
||||
let mut state = mixnet_params_storage::CONTRACT_SETTINGS.load(deps.storage)?;
|
||||
|
||||
// check if this is executed by the permitted validator, if not reject the transaction
|
||||
if info.sender != state.rewarding_validator_address {
|
||||
@@ -425,7 +425,30 @@ pub(crate) fn try_finish_mixnode_rewarding(
|
||||
}
|
||||
|
||||
state.rewarding_in_progress = false;
|
||||
mixnet_params_storage::contract_settings(deps.storage).save(&state)?;
|
||||
mixnet_params_storage::CONTRACT_SETTINGS.save(deps.storage, &state)?;
|
||||
|
||||
// // alternative:
|
||||
// mixnet_params_storage::CONTRACT_SETTINGS.update(storage, |mut state| {
|
||||
// // check if this is executed by the permitted validator, if not reject the transaction
|
||||
// if info.sender != state.rewarding_validator_address {
|
||||
// return Err(ContractError::Unauthorized);
|
||||
// }
|
||||
//
|
||||
// if !state.rewarding_in_progress {
|
||||
// return Err(ContractError::RewardingNotInProgress);
|
||||
// }
|
||||
//
|
||||
// // make sure the validator is in sync with the contract state
|
||||
// if rewarding_interval_nonce != state.latest_rewarding_interval_nonce {
|
||||
// return Err(ContractError::InvalidRewardingIntervalNonce {
|
||||
// received: rewarding_interval_nonce,
|
||||
// expected: state.latest_rewarding_interval_nonce,
|
||||
// });
|
||||
// }
|
||||
//
|
||||
// state.rewarding_in_progress = false;
|
||||
// Ok(state)
|
||||
// })?;
|
||||
|
||||
Ok(Response::new())
|
||||
}
|
||||
@@ -465,10 +488,9 @@ pub mod tests {
|
||||
fn can_only_be_called_by_specified_validator_address() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let res = try_begin_mixnode_rewarding(
|
||||
@@ -492,10 +514,9 @@ pub mod tests {
|
||||
fn cannot_be_called_if_rewarding_is_already_in_progress_with_little_day() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
try_begin_mixnode_rewarding(
|
||||
@@ -519,10 +540,9 @@ pub mod tests {
|
||||
fn can_be_called_if_rewarding_is_in_progress_if_sufficient_number_of_blocks_elapsed() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
try_begin_mixnode_rewarding(
|
||||
@@ -550,13 +570,12 @@ pub mod tests {
|
||||
fn provided_nonce_must_be_equal_the_current_plus_one() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let mut current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let mut current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
current_state.latest_rewarding_interval_nonce = 42;
|
||||
mixnet_params_storage::contract_settings(deps.as_mut().storage)
|
||||
.save(¤t_state)
|
||||
mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.save(deps.as_mut().storage, ¤t_state)
|
||||
.unwrap();
|
||||
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
@@ -616,8 +635,8 @@ pub mod tests {
|
||||
fn updates_contract_state() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let start_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let start_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = start_state.rewarding_validator_address;
|
||||
|
||||
@@ -629,8 +648,8 @@ pub mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let new_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let new_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
assert!(new_state.rewarding_in_progress);
|
||||
assert_eq!(
|
||||
@@ -656,10 +675,9 @@ pub mod tests {
|
||||
fn can_only_be_called_by_specified_validator_address() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
try_begin_mixnode_rewarding(
|
||||
@@ -688,10 +706,9 @@ pub mod tests {
|
||||
#[test]
|
||||
fn cannot_be_called_if_rewarding_is_not_in_progress() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let res = try_finish_mixnode_rewarding(
|
||||
@@ -706,13 +723,12 @@ pub mod tests {
|
||||
fn provided_nonce_must_be_equal_the_current_one() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let mut current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let mut current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
current_state.latest_rewarding_interval_nonce = 42;
|
||||
mixnet_params_storage::contract_settings(deps.as_mut().storage)
|
||||
.save(¤t_state)
|
||||
mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.save(deps.as_mut().storage, ¤t_state)
|
||||
.unwrap();
|
||||
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
@@ -776,10 +792,9 @@ pub mod tests {
|
||||
fn updates_contract_state() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
try_begin_mixnode_rewarding(
|
||||
@@ -797,8 +812,8 @@ pub mod tests {
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let new_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let new_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
assert!(!new_state.rewarding_in_progress);
|
||||
}
|
||||
@@ -808,8 +823,8 @@ pub mod tests {
|
||||
fn rewarding_mixnodes_outside_rewarding_period() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
@@ -856,8 +871,8 @@ pub mod tests {
|
||||
fn rewarding_mixnodes_with_incorrect_rewarding_nonce() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
@@ -925,8 +940,8 @@ pub mod tests {
|
||||
fn attempting_rewarding_mixnode_multiple_times_per_interval() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
@@ -994,8 +1009,8 @@ pub mod tests {
|
||||
fn rewarding_mixnode_blockstamp_based() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state = mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
@@ -1149,8 +1164,8 @@ pub mod tests {
|
||||
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state = mixnet_params_storage::contract_settings_read(deps.as_ref().storage)
|
||||
.load()
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_ref().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
let period_reward_pool = (INITIAL_REWARD_POOL / 100) * EPOCH_REWARD_PERCENT as u128;
|
||||
@@ -1308,10 +1323,9 @@ pub mod tests {
|
||||
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let mix_bond = Uint128(10000_000_000);
|
||||
@@ -1390,10 +1404,9 @@ pub mod tests {
|
||||
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let mix_bond = Uint128(10000_000_000);
|
||||
@@ -1474,10 +1487,9 @@ pub mod tests {
|
||||
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let mix_bond = Uint128(10000_000_000);
|
||||
@@ -1736,10 +1748,9 @@ pub mod tests {
|
||||
#[test]
|
||||
fn cannot_be_called_if_rewarding_is_not_in_progress() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let res = try_reward_next_mixnode_delegators_v2(
|
||||
@@ -1756,10 +1767,9 @@ pub mod tests {
|
||||
fn cannot_be_called_if_mixnodes_operator_wasnt_rewarded() {
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
try_begin_mixnode_rewarding(
|
||||
@@ -1790,10 +1800,9 @@ pub mod tests {
|
||||
// everything was done in a single reward call
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
try_add_mixnode(
|
||||
@@ -1942,10 +1951,9 @@ pub mod tests {
|
||||
// setup: bond > page limit delegators, reward operator + first batch
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let mix_bond = Uint128(10000_000_000);
|
||||
@@ -2041,10 +2049,9 @@ pub mod tests {
|
||||
// setup: bond > page limit delegators, reward operator + first batch
|
||||
let mut deps = test_helpers::init_contract();
|
||||
let mut env = mock_env();
|
||||
let current_state =
|
||||
mixnet_params_storage::contract_settings_read(deps.as_mut().storage)
|
||||
.load()
|
||||
.unwrap();
|
||||
let current_state = mixnet_params_storage::CONTRACT_SETTINGS
|
||||
.load(deps.as_mut().storage)
|
||||
.unwrap();
|
||||
let rewarding_validator_address = current_state.rewarding_validator_address;
|
||||
|
||||
let mix_bond = Uint128(10000_000_000);
|
||||
|
||||
Reference in New Issue
Block a user