Experimentally replaced storage for config and layers with cw plus Item

This commit is contained in:
Jędrzej Stuczyński
2021-11-25 14:26:51 +00:00
parent 39c7b131b6
commit 1846ed3476
11 changed files with 225 additions and 213 deletions
+11
View File
@@ -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",
+1
View File
@@ -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"] }
+5 -5
View File
@@ -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)
}
+9 -12
View File
@@ -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();
+96 -89
View File
@@ -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(&current_state)
mixnet_params_storage::CONTRACT_SETTINGS
.save(deps.as_mut().storage, &current_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(&current_state)
mixnet_params_storage::CONTRACT_SETTINGS
.save(deps.as_mut().storage, &current_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);