diff --git a/.gitignore b/.gitignore index 9221429079..7cc4110b02 100644 --- a/.gitignore +++ b/.gitignore @@ -70,9 +70,4 @@ key_store.json #vs code .vscode/ -*.swp - -# prevent mv files from being committed -*.mv -diem-move/diem-framework/DPN/releases/artifacts -*/artifacts/ \ No newline at end of file +*.swp \ No newline at end of file diff --git a/config/management/genesis/src/builder.rs b/config/management/genesis/src/builder.rs index b615018f65..cb7a4dd1b6 100644 --- a/config/management/genesis/src/builder.rs +++ b/config/management/genesis/src/builder.rs @@ -10,7 +10,6 @@ use diem_global_constants::{ use diem_management::constants::{self, VALIDATOR_CONFIG, VALIDATOR_OPERATOR}; use diem_secure_storage::{KVStorage, Namespaced}; use diem_types::{ - account_address::AccountAddress, chain_id::ChainId, on_chain_config::{OnChainConsensusConfig, VMPublishingOption}, transaction::{ @@ -135,9 +134,8 @@ impl GenesisBuilder { let mut validators = Vec::new(); for owner in &layout.owners { let name = owner.as_bytes().to_vec(); - let address = AccountAddress::from_hex(owner)?; - // let address = diem_config::utils::default_validator_owner_auth_key_from_name(&name) - // .derived_address(); + let address = diem_config::utils::default_validator_owner_auth_key_from_name(&name) + .derived_address(); let auth_key = self .owner_key(owner) .map_or(AuthenticationKey::zero(), |k| { diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/BuildInfo.yaml b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/BuildInfo.yaml index 83f1cf23d7..9cafe5a824 100644 --- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/BuildInfo.yaml +++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/BuildInfo.yaml @@ -313,7 +313,7 @@ compiled_package_info: ? address: "00000000000000000000000000000001" name: XUS : DiemFramework - source_digest: C858C8D4197D82103F1F6F229A8539BACFA2CFF36186C713926E1C43A373A2D4 + source_digest: 6FE88762F2E1A750B12C4166250C66AAE205A92570EF975EEBA86738CABDE2A2 build_flags: dev_mode: false test_mode: false diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/abis/DiemAccount/test_harness_create_user.abi b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/abis/DiemAccount/test_harness_create_user.abi new file mode 100644 index 0000000000..6a35c2dd3b Binary files /dev/null and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/abis/DiemAccount/test_harness_create_user.abi differ diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/abis/ol_oracle/ol_revoke_vote.abi b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/abis/ol_oracle/ol_revoke_vote.abi new file mode 100644 index 0000000000..ec798b0160 Binary files /dev/null and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/abis/ol_oracle/ol_revoke_vote.abi differ diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/DemoBonding.mv b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/DemoBonding.mv new file mode 100644 index 0000000000..5a82c5d5d5 Binary files /dev/null and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/DemoBonding.mv differ diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/EpochBoundary.mv b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/EpochBoundary.mv index 3559442f1c..59509f57ed 100644 Binary files a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/EpochBoundary.mv and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/EpochBoundary.mv differ diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/Jail.mv b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/Jail.mv new file mode 100644 index 0000000000..8538b73583 Binary files /dev/null and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/Jail.mv differ diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/MigrateJail.mv b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/MigrateJail.mv new file mode 100644 index 0000000000..23c97fe437 Binary files /dev/null and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/bytecode_modules/MigrateJail.mv differ diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DiemAccount.md b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DiemAccount.md index 7d0e38f413..2968101e48 100644 --- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DiemAccount.md +++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DiemAccount.md @@ -6107,6 +6107,7 @@ based on the conditions checked in the prologue, should never fail. let gas_used = txn_max_gas_units - gas_units_remaining; let transaction_fee_amount = txn_gas_price * gas_used; let coin = global<Balance<Token>>(sender).coin; + ensures global<DiemAccount>(sender).sequence_number == old(global<DiemAccount>(sender).sequence_number) + 1; include (transaction_fee_amount > 0) ==> TransactionFee::PayFeeEnsures<Token>{coin: Diem<Token>{value: transaction_fee_amount}}; } diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DualAttestation.md b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DualAttestation.md index 8a27d07ab9..316e863cda 100644 --- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DualAttestation.md +++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/DualAttestation.md @@ -1283,6 +1283,7 @@ Travel rule limit set during genesis let initial_limit = INITIAL_DUAL_ATTESTATION_LIMIT * Diem::spec_scaling_factor<GAS>(); aborts_if initial_limit > MAX_U64 with Errors::LIMIT_EXCEEDED; include Diem::AbortsIfNoCurrency<GAS>; +ensures global<Limit>(@DiemRoot).micro_xdx_limit == initial_limit; diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/EpochBoundary.md b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/EpochBoundary.md index 68f5b3d9a2..f85fe14d84 100644 --- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/EpochBoundary.md +++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/EpochBoundary.md @@ -234,6 +234,7 @@ while (i < Vector::length<address>(&previous_set)) { let addr = *Vector::borrow(&previous_set, i); let case = Cases::get_case(vm, addr, height_start, height_now); + if ( // we care about nodes that are performing consensus correctly, case 1 and 2. case < 3 && @@ -243,6 +244,7 @@ // also reset the jail counter for any successful unjails Jail::remove_consecutive_fail(vm, addr); } else { + Jail::jail(vm, addr); }; i = i+ 1; @@ -277,8 +279,12 @@ let addr = *Vector::borrow(&top_accounts, i); let mined_last_epoch = TowerState::node_above_thresh(addr); let case = Cases::get_case(vm, addr, height_start, height_now); + print(&44444444); print(&addr); print(&case); + print(&Jail::is_jailed(addr)); + print(&Audit::val_audit_passing(addr)); + print(&Vouch::unrelated_buddies_above_thresh(addr)); if ( // ignore proven nodes already on list @@ -296,7 +302,8 @@ // has proven themselves in the previous round. If your // vouchers fall out of the set, you may also fall out, // and this chain reaction would cause instability in the network. - Vouch::unrelated_buddies_above_thresh(addr) ) { + Vouch::unrelated_buddies_above_thresh(addr) + ) { print(&99990901); Vector::push_back(&mut proposed_set, addr); }; diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/Jail.md b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/Jail.md index 3ffcc120a4..e1a43971d8 100644 --- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/Jail.md +++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/docs/Jail.md @@ -151,7 +151,6 @@
public fun jail(vm: &signer, validator: address) acquires Jail{
   CoreAddresses::assert_vm(vm);
-
   if (exists<Jail>(validator)) {
     let j = borrow_global_mut<Jail>(validator);
     j.is_jailed = true;
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DiemAccount.mvsm b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DiemAccount.mvsm
index f14e773c73..ccea86eba5 100644
Binary files a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DiemAccount.mvsm and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DiemAccount.mvsm differ
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DualAttestation.mvsm b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DualAttestation.mvsm
index c3e070b328..8388b2606b 100644
Binary files a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DualAttestation.mvsm and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/DualAttestation.mvsm differ
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/EpochBoundary.mvsm b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/EpochBoundary.mvsm
index 0413042324..e23f8ce144 100644
Binary files a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/EpochBoundary.mvsm and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/EpochBoundary.mvsm differ
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/Jail.mvsm b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/Jail.mvsm
index 9fc0aa2818..83b46e96cc 100644
Binary files a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/Jail.mvsm and b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/source_maps/Jail.mvsm differ
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DiemAccount.move b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DiemAccount.move
index 3eabec88c6..bfd49a3714 100644
--- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DiemAccount.move
+++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DiemAccount.move
@@ -3042,6 +3042,7 @@ module DiemFramework::DiemAccount {
         let gas_used = txn_max_gas_units - gas_units_remaining;
         let transaction_fee_amount = txn_gas_price * gas_used;
         let coin = global>(sender).coin;
+        ensures global(sender).sequence_number == old(global(sender).sequence_number) + 1;
         include (transaction_fee_amount > 0) ==> TransactionFee::PayFeeEnsures{coin: Diem{value: transaction_fee_amount}};
     }
 
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DualAttestation.move b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DualAttestation.move
index bd654d9765..6c02a97020 100644
--- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DualAttestation.move
+++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/DualAttestation.move
@@ -504,6 +504,7 @@ module DiemFramework::DualAttestation {
         let initial_limit = INITIAL_DUAL_ATTESTATION_LIMIT * Diem::spec_scaling_factor();
         aborts_if initial_limit > MAX_U64 with Errors::LIMIT_EXCEEDED;
         include Diem::AbortsIfNoCurrency; // for scaling_factor.
+        ensures global(@DiemRoot).micro_xdx_limit == initial_limit;
     }
 
     /// Return the current dual attestation limit in microdiem
diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/EpochBoundary.move b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/EpochBoundary.move
index c8e23e95a3..0db6d840d4 100644
--- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/EpochBoundary.move
+++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/EpochBoundary.move
@@ -154,6 +154,7 @@ module EpochBoundary {
         while (i < Vector::length
(&previous_set)) { let addr = *Vector::borrow(&previous_set, i); let case = Cases::get_case(vm, addr, height_start, height_now); + if ( // we care about nodes that are performing consensus correctly, case 1 and 2. case < 3 && @@ -163,6 +164,7 @@ module EpochBoundary { // also reset the jail counter for any successful unjails Jail::remove_consecutive_fail(vm, addr); } else { + Jail::jail(vm, addr); }; i = i+ 1; @@ -197,8 +199,12 @@ module EpochBoundary { let addr = *Vector::borrow(&top_accounts, i); let mined_last_epoch = TowerState::node_above_thresh(addr); let case = Cases::get_case(vm, addr, height_start, height_now); + print(&44444444); print(&addr); print(&case); + print(&Jail::is_jailed(addr)); + print(&Audit::val_audit_passing(addr)); + print(&Vouch::unrelated_buddies_above_thresh(addr)); if ( // ignore proven nodes already on list @@ -216,7 +222,8 @@ module EpochBoundary { // has proven themselves in the previous round. If your // vouchers fall out of the set, you may also fall out, // and this chain reaction would cause instability in the network. - Vouch::unrelated_buddies_above_thresh(addr) ) { + Vouch::unrelated_buddies_above_thresh(addr) + ) { print(&99990901); Vector::push_back(&mut proposed_set, addr); }; diff --git a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/Jail.move b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/Jail.move index 110e2f1aa3..b34782c295 100644 --- a/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/Jail.move +++ b/diem-move/diem-framework/DPN/releases/artifacts/current/build/DPNFramework/sources/Jail.move @@ -61,7 +61,6 @@ address DiemFramework { public fun jail(vm: &signer, validator: address) acquires Jail{ CoreAddresses::assert_vm(vm); - if (exists(validator)) { let j = borrow_global_mut(validator); j.is_jailed = true; diff --git a/diem-move/vm-genesis/src/lib.rs b/diem-move/vm-genesis/src/lib.rs index 283ccf7f5c..e37f25ace5 100644 --- a/diem-move/vm-genesis/src/lib.rs +++ b/diem-move/vm-genesis/src/lib.rs @@ -198,7 +198,7 @@ pub fn encode_genesis_change_set( //////// 0L //////// pub fn encode_recovery_genesis_changeset( val_assignments: &[ValStateRecover], - operator_registrations: &[OperRecover], + operator_recovers: &[OperRecover], val_set: &[AccountAddress], chain: u8, ) -> Result { @@ -234,7 +234,7 @@ pub fn encode_recovery_genesis_changeset( // generate the genesis WriteSet recovery_owners_operators( - &mut session, val_assignments, operator_registrations, val_set + &mut session, val_assignments, operator_recovers, val_set ); //////// 0L //////// @@ -606,7 +606,7 @@ pub struct OperRecover { fn recovery_owners_operators( session: &mut Session>, val_assignments: &[ValStateRecover], - operator_registrations: &[OperRecover], + operator_recovers: &[OperRecover], val_set: &[AccountAddress], ) { let diem_root_address = account_config::diem_root_address(); @@ -668,7 +668,7 @@ fn recovery_owners_operators( ]), ); - // let all_vals: Vec = operator_registrations.iter() + // let all_vals: Vec = operator_recovers.iter() // .map(|a|{ a.validator_to_represent }).collect(); // let mut vals = all_vals.clone(); // vals.retain(|el|{ el != &i.val_account}); @@ -687,7 +687,7 @@ fn recovery_owners_operators( println!("1 ======== Create OP Accounts"); // Create accounts for each validator operator - for i in operator_registrations { + for i in operator_recovers { let create_operator_script = transaction_builder::encode_create_validator_operator_account_script_function( 0, @@ -704,25 +704,24 @@ fn recovery_owners_operators( } println!("2 ======== Link owner to OP"); - // Authorize an operator for a validator/owner - for i in val_assignments { + // Set the validator operator for each validator owner + for val in val_assignments { let create_operator_script = - transaction_builder::encode_set_validator_operator_with_nonce_admin_script_function( - 0, - i.operator_delegated_account.to_vec(), - i.operator_delegated_account, + transaction_builder::encode_set_validator_operator_script_function( + val.operator_delegated_account.to_vec(), + val.operator_delegated_account ) .into_script_function(); exec_script_function( session, - i.val_account, //TODO: check the signer is correct + val.val_account, //TODO: check the signer is correct &create_operator_script, ); } println!("3 ======== OP sends network info to Owner config"); // Set the validator operator configs for each owner - for i in operator_registrations { + for i in operator_recovers { let create_operator_script = transaction_builder::encode_register_validator_config_script_function( i.validator_to_represent, diff --git a/language/diem-framework/releases/artifacts/current/modules/023_StagingNet.mv b/language/diem-framework/releases/artifacts/current/modules/023_StagingNet.mv new file mode 100644 index 0000000000..e83a2a6717 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/023_StagingNet.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/024_GAS.mv b/language/diem-framework/releases/artifacts/current/modules/024_GAS.mv new file mode 100644 index 0000000000..a793c6e901 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/024_GAS.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/025_Globals.mv b/language/diem-framework/releases/artifacts/current/modules/025_Globals.mv new file mode 100644 index 0000000000..1d097072d0 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/025_Globals.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/026_Stats.mv b/language/diem-framework/releases/artifacts/current/modules/026_Stats.mv new file mode 100644 index 0000000000..028902cbbe Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/026_Stats.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/027_Hash.mv b/language/diem-framework/releases/artifacts/current/modules/027_Hash.mv new file mode 100644 index 0000000000..cd88b742d2 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/027_Hash.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/028_Debug.mv b/language/diem-framework/releases/artifacts/current/modules/028_Debug.mv new file mode 100644 index 0000000000..e4184a1294 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/028_Debug.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/029_TowerState.mv b/language/diem-framework/releases/artifacts/current/modules/029_TowerState.mv new file mode 100644 index 0000000000..62caf96cb4 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/029_TowerState.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/030_ValidatorUniverse.mv b/language/diem-framework/releases/artifacts/current/modules/030_ValidatorUniverse.mv new file mode 100644 index 0000000000..2922511442 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/030_ValidatorUniverse.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/031_NodeWeight.mv b/language/diem-framework/releases/artifacts/current/modules/031_NodeWeight.mv new file mode 100644 index 0000000000..18563eec66 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/031_NodeWeight.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/032_Cases.mv b/language/diem-framework/releases/artifacts/current/modules/032_Cases.mv new file mode 100644 index 0000000000..11cb8b8c3c Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/032_Cases.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/033_DiemSystem.mv b/language/diem-framework/releases/artifacts/current/modules/033_DiemSystem.mv new file mode 100644 index 0000000000..fbfee1bdb2 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/033_DiemSystem.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/034_Wallet.mv b/language/diem-framework/releases/artifacts/current/modules/034_Wallet.mv new file mode 100644 index 0000000000..9185b57c48 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/034_Wallet.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/041_Jail.mv b/language/diem-framework/releases/artifacts/current/modules/041_Jail.mv new file mode 100644 index 0000000000..9ffb9bd3df Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/041_Jail.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/042_FIFO.mv b/language/diem-framework/releases/artifacts/current/modules/042_FIFO.mv new file mode 100644 index 0000000000..8e62817c20 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/042_FIFO.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/043_DualAttestation.mv b/language/diem-framework/releases/artifacts/current/modules/043_DualAttestation.mv new file mode 100644 index 0000000000..decdf95dc3 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/043_DualAttestation.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/044_DiemTransactionPublishingOption.mv b/language/diem-framework/releases/artifacts/current/modules/044_DiemTransactionPublishingOption.mv new file mode 100644 index 0000000000..89458a077f Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/044_DiemTransactionPublishingOption.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/045_DiemId.mv b/language/diem-framework/releases/artifacts/current/modules/045_DiemId.mv new file mode 100644 index 0000000000..ccc09f733b Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/045_DiemId.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/046_DesignatedDealer.mv b/language/diem-framework/releases/artifacts/current/modules/046_DesignatedDealer.mv new file mode 100644 index 0000000000..46693753d8 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/046_DesignatedDealer.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/047_ChainId.mv b/language/diem-framework/releases/artifacts/current/modules/047_ChainId.mv new file mode 100644 index 0000000000..73de198ea9 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/047_ChainId.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/048_AccountFreezing.mv b/language/diem-framework/releases/artifacts/current/modules/048_AccountFreezing.mv new file mode 100644 index 0000000000..0409c251fb Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/048_AccountFreezing.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/049_DiemAccount.mv b/language/diem-framework/releases/artifacts/current/modules/049_DiemAccount.mv new file mode 100644 index 0000000000..59abc69e93 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/049_DiemAccount.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/050_Authenticator.mv b/language/diem-framework/releases/artifacts/current/modules/050_Authenticator.mv new file mode 100644 index 0000000000..14a53b0620 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/050_Authenticator.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/051_SharedEd25519PublicKey.mv b/language/diem-framework/releases/artifacts/current/modules/051_SharedEd25519PublicKey.mv new file mode 100644 index 0000000000..b81928fba7 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/051_SharedEd25519PublicKey.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/052_RecoveryAddress.mv b/language/diem-framework/releases/artifacts/current/modules/052_RecoveryAddress.mv new file mode 100644 index 0000000000..8dc08dca32 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/052_RecoveryAddress.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/053_AccountAdministrationScripts.mv b/language/diem-framework/releases/artifacts/current/modules/053_AccountAdministrationScripts.mv new file mode 100644 index 0000000000..05d4dde980 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/053_AccountAdministrationScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/054_AccountCreationScripts.mv b/language/diem-framework/releases/artifacts/current/modules/054_AccountCreationScripts.mv new file mode 100644 index 0000000000..33ea766784 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/054_AccountCreationScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/055_MakeWhole.mv b/language/diem-framework/releases/artifacts/current/modules/055_MakeWhole.mv new file mode 100644 index 0000000000..0f7ef547c1 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/055_MakeWhole.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/056_AccountScripts.mv b/language/diem-framework/releases/artifacts/current/modules/056_AccountScripts.mv new file mode 100644 index 0000000000..9555fe80e3 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/056_AccountScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/057_AutoPay.mv b/language/diem-framework/releases/artifacts/current/modules/057_AutoPay.mv new file mode 100644 index 0000000000..99e0f71325 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/057_AutoPay.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/058_Audit.mv b/language/diem-framework/releases/artifacts/current/modules/058_Audit.mv new file mode 100644 index 0000000000..0c709b46e0 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/058_Audit.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/059_AutoPayScripts.mv b/language/diem-framework/releases/artifacts/current/modules/059_AutoPayScripts.mv new file mode 100644 index 0000000000..ff70db0a19 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/059_AutoPayScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/060_Decimal.mv b/language/diem-framework/releases/artifacts/current/modules/060_Decimal.mv new file mode 100644 index 0000000000..3ad9a9111d Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/060_Decimal.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/061_Bonding.mv b/language/diem-framework/releases/artifacts/current/modules/061_Bonding.mv new file mode 100644 index 0000000000..91903bfc5a Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/061_Bonding.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/062_Burn.mv b/language/diem-framework/releases/artifacts/current/modules/062_Burn.mv new file mode 100644 index 0000000000..894e7c8257 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/062_Burn.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/063_BurnScript.mv b/language/diem-framework/releases/artifacts/current/modules/063_BurnScript.mv new file mode 100644 index 0000000000..881cf839a3 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/063_BurnScript.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/064_DemoScripts.mv b/language/diem-framework/releases/artifacts/current/modules/064_DemoScripts.mv new file mode 100644 index 0000000000..f65fa5d02f Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/064_DemoScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/065_Migrations.mv b/language/diem-framework/releases/artifacts/current/modules/065_Migrations.mv new file mode 100644 index 0000000000..4ed56e4755 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/065_Migrations.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/066_MigrateJail.mv b/language/diem-framework/releases/artifacts/current/modules/066_MigrateJail.mv new file mode 100644 index 0000000000..fc6021fafb Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/066_MigrateJail.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/067_Subsidy.mv b/language/diem-framework/releases/artifacts/current/modules/067_Subsidy.mv new file mode 100644 index 0000000000..bb5e521c58 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/067_Subsidy.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/068_RecoveryMode.mv b/language/diem-framework/releases/artifacts/current/modules/068_RecoveryMode.mv new file mode 100644 index 0000000000..3a81ef163d Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/068_RecoveryMode.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/069_FullnodeSubsidy.mv b/language/diem-framework/releases/artifacts/current/modules/069_FullnodeSubsidy.mv new file mode 100644 index 0000000000..48af2bd30f Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/069_FullnodeSubsidy.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/070_Epoch.mv b/language/diem-framework/releases/artifacts/current/modules/070_Epoch.mv new file mode 100644 index 0000000000..4cc1517cd3 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/070_Epoch.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/071_EpochBoundary.mv b/language/diem-framework/releases/artifacts/current/modules/071_EpochBoundary.mv new file mode 100644 index 0000000000..bafd1d1f0f Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/071_EpochBoundary.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/072_DiemBlock.mv b/language/diem-framework/releases/artifacts/current/modules/072_DiemBlock.mv new file mode 100644 index 0000000000..f0882fcbe2 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/072_DiemBlock.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/073_DiemConsensusConfig.mv b/language/diem-framework/releases/artifacts/current/modules/073_DiemConsensusConfig.mv new file mode 100644 index 0000000000..494070b2f2 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/073_DiemConsensusConfig.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/074_DiemVMConfig.mv b/language/diem-framework/releases/artifacts/current/modules/074_DiemVMConfig.mv new file mode 100644 index 0000000000..b61c9200f2 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/074_DiemVMConfig.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/075_DiemVersion.mv b/language/diem-framework/releases/artifacts/current/modules/075_DiemVersion.mv new file mode 100644 index 0000000000..1bf007e669 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/075_DiemVersion.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/076_Upgrade.mv b/language/diem-framework/releases/artifacts/current/modules/076_Upgrade.mv new file mode 100644 index 0000000000..1ecbe5f987 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/076_Upgrade.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/077_Oracle.mv b/language/diem-framework/releases/artifacts/current/modules/077_Oracle.mv new file mode 100644 index 0000000000..0ab4b9b6b4 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/077_Oracle.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/078_Genesis.mv b/language/diem-framework/releases/artifacts/current/modules/078_Genesis.mv new file mode 100644 index 0000000000..0d9d1b02bc Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/078_Genesis.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/079_Mock.mv b/language/diem-framework/releases/artifacts/current/modules/079_Mock.mv new file mode 100644 index 0000000000..2dee45a01b Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/079_Mock.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/080_OracleScripts.mv b/language/diem-framework/releases/artifacts/current/modules/080_OracleScripts.mv new file mode 100644 index 0000000000..c758cc74fe Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/080_OracleScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/081_PaymentScripts.mv b/language/diem-framework/releases/artifacts/current/modules/081_PaymentScripts.mv new file mode 100644 index 0000000000..a564af72be Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/081_PaymentScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/082_PersistenceDemo.mv b/language/diem-framework/releases/artifacts/current/modules/082_PersistenceDemo.mv new file mode 100644 index 0000000000..35907e9e54 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/082_PersistenceDemo.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/083_SystemAdministrationScripts.mv b/language/diem-framework/releases/artifacts/current/modules/083_SystemAdministrationScripts.mv new file mode 100644 index 0000000000..5e3fbcd555 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/083_SystemAdministrationScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/084_TestFixtures.mv b/language/diem-framework/releases/artifacts/current/modules/084_TestFixtures.mv new file mode 100644 index 0000000000..c0cf26011a Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/084_TestFixtures.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/085_TowerStateScripts.mv b/language/diem-framework/releases/artifacts/current/modules/085_TowerStateScripts.mv new file mode 100644 index 0000000000..3e2787ddbf Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/085_TowerStateScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/086_TransferScripts.mv b/language/diem-framework/releases/artifacts/current/modules/086_TransferScripts.mv new file mode 100644 index 0000000000..0c4803b076 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/086_TransferScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/087_TreasuryComplianceScripts.mv b/language/diem-framework/releases/artifacts/current/modules/087_TreasuryComplianceScripts.mv new file mode 100644 index 0000000000..e852d94b48 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/087_TreasuryComplianceScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/088_ValidatorAdministrationScripts.mv b/language/diem-framework/releases/artifacts/current/modules/088_ValidatorAdministrationScripts.mv new file mode 100644 index 0000000000..f5f1b77087 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/088_ValidatorAdministrationScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/089_ValidatorScripts.mv b/language/diem-framework/releases/artifacts/current/modules/089_ValidatorScripts.mv new file mode 100644 index 0000000000..a6f72ff4b4 Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/089_ValidatorScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/090_VouchScripts.mv b/language/diem-framework/releases/artifacts/current/modules/090_VouchScripts.mv new file mode 100644 index 0000000000..1c90068cee Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/090_VouchScripts.mv differ diff --git a/language/diem-framework/releases/artifacts/current/modules/091_WalletScripts.mv b/language/diem-framework/releases/artifacts/current/modules/091_WalletScripts.mv new file mode 100644 index 0000000000..51061c191a Binary files /dev/null and b/language/diem-framework/releases/artifacts/current/modules/091_WalletScripts.mv differ diff --git a/ol/genesis-tools/Readme.md b/ol/genesis-tools/Readme.md index 601171bf3f..a3137d8493 100644 --- a/ol/genesis-tools/Readme.md +++ b/ol/genesis-tools/Readme.md @@ -1,9 +1,10 @@ -# Generate genesis blob from epoch -Sample command: -```cargo run -p ol-genesis-tools -- --path ${FULL_PATH_TO_PROJECT_ROOT}/ol/fixtures/state-snapshot/194/state_ver_74694920.0889/``` -# Start swarm with a custom genesis blob file -Sample command: -```NODE_ENV="test" cargo run -p libra-swarm -- --libra-node target/debug/libra-node -c ${SWARM_TEMP_PATH} -n 1 -s --cli-path target/debug/cli --genesis-blob-path ${FULL_PATH_TO_BLOB_FILE}``` +### JSON export from snapshot +cargo r -p ol-genesis-tools -- --recover /opt/rec.json --snapshot-path /opt/state_ver* +state_ver: https://github.com/OLSF/epoch-archive/tree/main/359/state_ver_76353076.a0ff ---genesis-blob-path is the additional parameter added to libra-swarm module. +### Create genesis blob from JSON export: +cargo r -p ol-genesis-tools -- --fork --recovery-json-path /opt/rec.json --output-path /opt/genesis_from_recovery.blob + +### Verify the validity of genesis blob by starting a node in test mode: +cargo r -p diem-node -- --test --genesis-modules /opt/genesis_from_recovery.blob diff --git a/ol/genesis-tools/src/fork_genesis.rs b/ol/genesis-tools/src/fork_genesis.rs index f02417895e..ffea0fcfbf 100644 --- a/ol/genesis-tools/src/fork_genesis.rs +++ b/ol/genesis-tools/src/fork_genesis.rs @@ -22,17 +22,27 @@ use ol_types::fullnode_counter::FullnodeCounterResource; use ol_types::wallet::{CommunityWalletsResource, SlowWalletResource}; use vm_genesis::encode_recovery_genesis_changeset; -/// Make a recovery genesis blob -pub async fn make_recovery_genesis( +/// Make a recovery genesis blob from archive +pub async fn make_recovery_genesis_from_archive( genesis_blob_path: PathBuf, archive_path: PathBuf, append: bool, is_legacy: bool, ) -> Result<(), Error> { - //TODO: have option to "swarmify" this so that the authkey and network addresses. - // get the legacy data from archive let recovery = archive_into_recovery(&archive_path, is_legacy).await?; + + make_recovery_genesis_from_recovery(recovery, genesis_blob_path, append) +} + +/// Make a recovery genesis blob +pub fn make_recovery_genesis_from_recovery( + recovery: Vec, + genesis_blob_path: PathBuf, + append: bool, +) -> Result<(), Error> { + //TODO: have option to "swarmify" this so that the authkey and network addresses. + // get consensus accounts let genesis_accounts = recover_consensus_accounts(&recovery)?; // create baseline genesis diff --git a/ol/genesis-tools/src/main.rs b/ol/genesis-tools/src/main.rs index 46e8bbf6b2..bb34b15147 100644 --- a/ol/genesis-tools/src/main.rs +++ b/ol/genesis-tools/src/main.rs @@ -2,7 +2,16 @@ use anyhow::Result; use std::{path::PathBuf, process::exit}; use gumdrop::Options; -use ol_genesis_tools::{fork_genesis::make_recovery_genesis, swarm_genesis::make_swarm_genesis}; +use ol_genesis_tools::{ + fork_genesis::{ + make_recovery_genesis_from_archive, + make_recovery_genesis_from_recovery + }, + process_snapshot::archive_into_recovery, + recover::save_recovery_file, + recover::read_from_recovery_file, + swarm_genesis::make_swarm_genesis +}; #[tokio::main] async fn main() -> Result<()> { @@ -10,53 +19,73 @@ async fn main() -> Result<()> { struct Args { #[options(help = "what epoch to restore from archive")] epoch: Option, + #[options(help = "path to snapshot dir to read")] snapshot_path: Option, + + #[options(help = "path to recovery JSON dir to read")] + recovery_json_path: Option, + #[options(help = "write genesis from snapshot")] output_path: Option, + #[options(help = "create a genesis for a fork")] fork: bool, + #[options(help = "create a genesis from Libra legacy")] legacy: bool, + #[options(help = "optional, write recovery file from snapshot")] recover: Option, - #[options(help = "optional, get baseline genesis without changes, for dubugging")] + + #[options(help = "optional, get baseline genesis without changes, for debugging")] debug_baseline: bool, + #[options(help = "live fork mode")] daemon: bool, + #[options(help = "swarm simulation mode")] swarm: bool, } let opts = Args::parse_args_default_or_exit(); if opts.fork { - if let Some(g_path) = opts.output_path { - if let Some(s_path) = opts.snapshot_path { - if !s_path.exists() { - println!("ERROR: snapshot directory does not exist: {:?}", &s_path); - exit(1); - } - // create a genesis file from archive file - match make_recovery_genesis(g_path, s_path, !opts.debug_baseline, opts.legacy).await - { - Ok(_) => return Ok(()), - Err(e) => { - println!( - "ERROR: could not create genesis from snapshot, message: {:?}", - e - ); - exit(1); - } - }; - } else { - println!("ERROR: must provide a path with --snapshot, exiting."); - exit(1); + let output_path = opts.output_path + .expect("ERROR: must provide output-path for genesis.blob, exiting."); + + if let Some(snapshot_path) = opts.snapshot_path { + if !snapshot_path.exists() { + panic!("ERROR: snapshot directory does not exist"); } + // create a genesis file from archive file + make_recovery_genesis_from_archive( + output_path.clone(), snapshot_path, !opts.debug_baseline, opts.legacy + ).await.expect("ERROR: could not create genesis from snapshot"); + return Ok(()); } - println!("ERROR: must provide --output-path for genesis.blob, exiting."); - exit(1); - } else if let Some(_a_path) = opts.recover { + else if let Some(recovery_json_path) = opts.recovery_json_path { + if !recovery_json_path.exists() { + panic!("ERROR: recovery_json_path does not exist"); + } + let recovery = read_from_recovery_file(&recovery_json_path); + make_recovery_genesis_from_recovery( + recovery, output_path, opts.legacy + ).expect("ERROR: failed to create genesis from recovery file"); + return Ok(()); + } + else { + panic!("ERROR: must provide --snapshot-path or --recovery-json-path, exiting."); + } + } else if let Some(recovery_path) = opts.recover { // just create recovery file + let snapshot_path = opts.snapshot_path + .expect("ERROR: must provide snapshot path, exiting."); + if !snapshot_path.exists() { + panic!("ERROR: snapshot_path does not exist"); + } + let recovery = archive_into_recovery(&snapshot_path, false).await.unwrap(); + save_recovery_file(&recovery, &recovery_path) + .expect("ERROR: failed to create recovery from snapshot,"); return Ok(()); } else if opts.daemon { diff --git a/ol/genesis-tools/src/recover.rs b/ol/genesis-tools/src/recover.rs index 1aa952f36a..b53564568d 100644 --- a/ol/genesis-tools/src/recover.rs +++ b/ol/genesis-tools/src/recover.rs @@ -46,7 +46,9 @@ pub enum WalletType { } /// The basic structs needed to recover account state in a new network. -/// This is necessary for catastrophic recoveries, when the source code changes too much. Like what is going to happen between v4 and v5, where the source code of v5 will not be able to work with objects from v4. We need an intermediary file. +/// This is necessary for catastrophic recoveries, when the source code changes too much. +/// Like what is going to happen between v4 and v5, where the source code of v5 +/// will not be able to work with objects from v4. We need an intermediary file. #[derive(Debug, Serialize, Deserialize)] pub struct LegacyRecovery { /// @@ -90,14 +92,15 @@ impl Default for RecoverConsensusAccounts { } } -/// make the writeset for the genesis case. Starts with an unmodified account state and make into a writeset. +/// make the writeset for the genesis case. Starts with an unmodified account +/// state and make into a writeset. pub fn accounts_into_recovery( account_state_blobs: &Vec, ) -> Result, Error> { let mut to_recover = vec![]; for blob in account_state_blobs { let account_state = AccountState::try_from(blob)?; - dbg!(&account_state); + // dbg!(&account_state); match parse_recovery(&account_state) { Ok(gr) => to_recover.push(gr), Err(e) => println!( @@ -271,11 +274,16 @@ pub fn recover_consensus_accounts( pub fn save_recovery_file(data: &Vec, path: &PathBuf) -> Result<(), Error> { let j = serde_json::to_string(data)?; let mut file = fs::File::create(path).expect("Could not genesis_recovery create file"); - file.write_all(j.as_bytes()) - .expect("Could not write account recovery"); + file.write_all(j.as_bytes()).expect("Could not write account recovery"); Ok(()) } +/// Read from genesis recovery file +pub fn read_from_recovery_file(path: &PathBuf) -> Vec { + let data = fs::read_to_string(path).expect("Unable to read file"); + serde_json::from_str(&data).expect("Unable to parse") +} + // Note: 0L v4.3.3 has a number of malformed network addresses. This is a one-time migration. // let fn_addr = config.validator_config.unwrap().fullnode_network_addresses(); fn maybe_migrate_fn_address(resource: &mut ValidatorConfigResource) -> &ValidatorConfigResource { diff --git a/ol/util/build-stdlib.sh b/ol/util/build-stdlib.sh index 935ce44d51..ad1f9bd494 100755 --- a/ol/util/build-stdlib.sh +++ b/ol/util/build-stdlib.sh @@ -7,7 +7,8 @@ printf "This builds: diem-move/diem-framework/DPN/sources/0L/* diem-move/diem-framework/DPN/sources/0L_transaction_scripts/* \n\n" -cargo r --release -p diem-framework -- $1 -# cargo r --release -p diem-framework -- $1 --no-doc # for dev. quick iteration +cd diem-move/diem-framework +cargo r --release -- $1 +# cargo r --release -- $1 --no-doc # for dev. quick iteration printf "Done\n" \ No newline at end of file