Skip to content

Commit

Permalink
Merge pull request #207 from multiversx/feat/sovereign-forge
Browse files Browse the repository at this point in the history
Sovereign-Forge SC
  • Loading branch information
andreiblt1304 authored Dec 13, 2024
2 parents 70fd828 + 467a819 commit 2e233d8
Show file tree
Hide file tree
Showing 63 changed files with 2,430 additions and 156 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ permissions:
jobs:
contracts:
name: Contracts
uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@v3.3.1
uses: multiversx/mx-sc-actions/.github/workflows/contracts.yml@79d7ac76e34b3208fbe07559ac276d0ea48be4da
with:
rust-toolchain: stable
coverage-args: --ignore-filename-regex='/.cargo/git' --output ./coverage.md
Expand Down
22 changes: 21 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@ members = [
"testing-sc",
"testing-sc/meta",
"sovereign-forge",
"sovereign-forge/interactor",
"sovereign-forge/meta",
]
3 changes: 3 additions & 0 deletions chain-config/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,6 @@ version = "=0.54.5"

[dependencies.transaction]
path = "../common/transaction"

[dependencies.setup-phase]
path = "../common/setup-phase"
40 changes: 0 additions & 40 deletions chain-config/src/bridge.rs

This file was deleted.

44 changes: 42 additions & 2 deletions chain-config/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@ use validator_rules::TokenIdAmountPair;

multiversx_sc::imports!();

pub mod bridge;
pub mod validator_rules;

#[multiversx_sc::contract]
pub trait ChainConfigContract:
bridge::BridgeModule + validator_rules::ValidatorRulesModule + only_admin::OnlyAdminModule
validator_rules::ValidatorRulesModule + only_admin::OnlyAdminModule + setup_phase::SetupPhaseModule
{
#[init]
fn init(
Expand Down Expand Up @@ -42,6 +41,47 @@ pub trait ChainConfigContract:
self.additional_stake_required().set(additional_stake_vec);
}

#[only_admin]
fn update_config(
&self,
opt_min_validators: Option<u64>,
opt_max_validators: Option<u64>,
opt_min_stake: Option<BigUint>,
opt_additional_stake_required: Option<MultiValueEncoded<StakeMultiArg<Self::Api>>>,
) {
if let Some(min_validators) = opt_min_validators {
self.min_validators().set(min_validators);
}
if let Some(max_validators) = opt_max_validators {
self.max_validators().set(max_validators);
}
if let Some(min_stake) = opt_min_stake {
self.min_stake().set(min_stake);
}
if let Some(additional_stake_required) = opt_additional_stake_required {
let mut additional_stake_vec = ManagedVec::new();
for multi_value in additional_stake_required {
let (token_id, amount) = multi_value.into_tuple();
let value = TokenIdAmountPair { token_id, amount };

additional_stake_vec.push(value);
}
self.additional_stake_required().set(additional_stake_vec);
}
}

#[only_owner]
fn complete_setup_phase(&self) {
if self.is_setup_phase_complete() {
return;
}

self.require_config_set();
// validator set in header verifier
// change ownership to header-verifier
self.setup_phase_complete().set(true);
}

#[upgrade]
fn upgrade(&self) {}
}
20 changes: 20 additions & 0 deletions chain-config/src/validator_rules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,25 @@ pub struct TokenIdAmountPair<M: ManagedTypeApi> {

#[multiversx_sc::module]
pub trait ValidatorRulesModule {
fn require_config_set(&self) {
require!(
!self.min_validators().is_empty(),
"The minimum number of validators is not set"
);
require!(
!self.max_validators().is_empty(),
"The maximum number of validators is not set"
);
require!(
!self.min_stake().is_empty(),
"The mininum number of stake is not set"
);
require!(
!self.additional_stake_required().is_empty(),
"The additional stake criteria is not set"
);
}

#[view(getMinValidators)]
#[storage_mapper("minValidators")]
fn min_validators(&self) -> SingleValueMapper<u64>;
Expand All @@ -26,6 +45,7 @@ pub trait ValidatorRulesModule {
#[storage_mapper("minStake")]
fn min_stake(&self) -> SingleValueMapper<BigUint>;

// NOTE: ManagedVec or MultiValueEncoded ?
// TODO: Read user stake and verify
#[view(getAdditionalStakeRequired)]
#[storage_mapper("additionalStakeRequired")]
Expand Down
8 changes: 8 additions & 0 deletions chain-config/wasm-chain-config-full/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions chain-config/wasm-chain-config-full/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

// Init: 1
// Upgrade: 1
// Endpoints: 10
// Endpoints: 9
// Async Callback (empty): 1
// Total number of exported functions: 13
// Total number of exported functions: 12

#![no_std]

Expand All @@ -20,7 +20,6 @@ multiversx_sc_wasm_adapter::endpoints! {
(
init => init
upgrade => upgrade
deployBridge => deploy_bridge
getMinValidators => min_validators
getMaxValidators => max_validators
getMinStake => min_stake
Expand Down
8 changes: 8 additions & 0 deletions chain-config/wasm-chain-config-view/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions chain-config/wasm/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions chain-config/wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

// Init: 1
// Upgrade: 1
// Endpoints: 10
// Endpoints: 9
// Async Callback (empty): 1
// Total number of exported functions: 13
// Total number of exported functions: 12

#![no_std]

Expand All @@ -20,7 +20,6 @@ multiversx_sc_wasm_adapter::endpoints! {
(
init => init
upgrade => upgrade
deployBridge => deploy_bridge
getMinValidators => min_validators
getMaxValidators => max_validators
getMinStake => min_stake
Expand Down
14 changes: 14 additions & 0 deletions chain-factory/src/complete_phases.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#[multiversx_sc::module]
pub trait CompletePhasesModule {
#[endpoint(completeChainConfigSetup)]
fn complete_chain_config_setup(&self) {}

#[endpoint(completeHeaderVerifierSetup)]
fn complete_header_verifier_setup(&self) {}

#[endpoint(completeFeeMarketSetup)]
fn complete_fee_market_setup(&self) {}

#[endpoint(completeEsdtSafeSetup)]
fn complete_esdt_safe_setup(&self) {}
}
Loading

0 comments on commit 2e233d8

Please sign in to comment.