From bd7e865f7dcf1070d6778952e27f3ec479dd19db Mon Sep 17 00:00:00 2001 From: sirouk <8901571+sirouk@users.noreply.github.com> Date: Tue, 14 Nov 2023 11:44:09 -0500 Subject: [PATCH] [move] Patch locked deposits (#100) Co-authored-by: 0o-de-lally <1364012+0o-de-lally@users.noreply.github.com> --- framework/libra-framework/sources/block.move | 18 +- .../sources/modified_source/coin.move | 48 +- .../modified_source/transaction_fee.move | 499 +++++++++--------- .../modified_source/transaction_fee.spec.move | 72 +-- .../sources/ol_sources/epoch_boundary.move | 6 +- .../sources/ol_sources/genesis_migration.move | 5 +- .../sources/ol_sources/libra_coin.move | 10 +- .../sources/ol_sources/ol_account.move | 32 ++ .../sources/ol_sources/proof_of_fee.move | 2 +- .../sources/ol_sources/rewards.move | 13 +- .../sources/ol_sources/slow_wallet.move | 48 +- .../ol_sources/tests/migration.test.move | 5 +- .../ol_sources/tests/rewards.test.move | 10 +- .../ol_sources/tests/slow_wallet.test.move | 21 +- .../tests/validator_reward.test.move | 19 +- .../ol_sources/tests/vote_lib/safe.test.move | 15 +- .../ol_sources/vote_lib/donor_voice.move | 44 +- framework/releases/head.mrb | Bin 593516 -> 594562 bytes smoke-tests/dump.txt | 48 -- smoke-tests/src/helpers.rs | 2 +- tools/query/src/account_queries.rs | 2 +- tools/query/src/query_type.rs | 2 +- 22 files changed, 464 insertions(+), 457 deletions(-) delete mode 100644 smoke-tests/dump.txt diff --git a/framework/libra-framework/sources/block.move b/framework/libra-framework/sources/block.move index cd4c3150b..ce647bf2c 100644 --- a/framework/libra-framework/sources/block.move +++ b/framework/libra-framework/sources/block.move @@ -1,7 +1,6 @@ /// This module defines a struct storing the metadata of the block and new block events. module diem_framework::block { use std::error; - use std::features; use std::vector; use std::option; @@ -12,7 +11,6 @@ module diem_framework::block { use diem_framework::state_storage; use diem_framework::system_addresses; use diem_framework::timestamp; - use diem_framework::transaction_fee; // use diem_std::debug::print; //////// 0L //////// @@ -141,14 +139,14 @@ module diem_framework::block { }; emit_new_block_event(&vm, &mut block_metadata_ref.new_block_events, new_block_event); - if (features::collect_and_distribute_gas_fees()) { - // Assign the fees collected from the previous block to the previous block proposer. - // If for any reason the fees cannot be assigned, this function burns the collected coins. - transaction_fee::process_collected_fees(); - // Set the proposer of this block as the receiver of the fees, so that the fees for this - // block are assigned to the right account. - transaction_fee::register_proposer_for_fee_collection(proposer); - }; + // if (features::collect_and_distribute_gas_fees()) { + // // Assign the fees collected from the previous block to the previous block proposer. + // // If for any reason the fees cannot be assigned, this function burns the collected coins. + // transaction_fee::process_collected_fees(); + // // Set the proposer of this block as the receiver of the fees, so that the fees for this + // // block are assigned to the right account. + // transaction_fee::register_proposer_for_fee_collection(proposer); + // }; // Performance scores have to be updated before the epoch transition as the transaction that triggers the // transition is the last block in the previous epoch. diff --git a/framework/libra-framework/sources/modified_source/coin.move b/framework/libra-framework/sources/modified_source/coin.move index c6632bbad..21de941e1 100644 --- a/framework/libra-framework/sources/modified_source/coin.move +++ b/framework/libra-framework/sources/modified_source/coin.move @@ -4,7 +4,6 @@ module diem_framework::coin { use std::error; use std::option::{Self, Option}; use std::signer; - use std::fixed_point32; use diem_framework::account::{Self, WithdrawCapability}; use diem_framework::aggregator_factory; @@ -14,7 +13,6 @@ module diem_framework::coin { use diem_framework::system_addresses; use diem_std::type_info; - use diem_std::math64; // use diem_std::debug::print; friend ol_framework::gas_coin; @@ -22,7 +20,6 @@ module diem_framework::coin { friend ol_framework::ol_account; friend diem_framework::genesis; friend diem_framework::genesis_migration; - friend ol_framework::rewards; friend diem_framework::transaction_fee; @@ -241,7 +238,7 @@ module diem_framework::coin { type_info::account_address(&type_info) } - #[view] + // #[view] /// Returns the balance of `owner` for provided `CoinType`. public fun balance(owner: address): u64 acquires CoinStore { // should not abort if the VM might call this @@ -249,50 +246,7 @@ module diem_framework::coin { borrow_global>(owner).coin.value } - #[view] - /// Returns a human readable version of the balance with (integer, decimal_part) - public fun balance_human(owner: address): (u64, u64) acquires CoinStore, CoinInfo { - assert!( - is_account_registered(owner), - error::not_found(ECOIN_STORE_NOT_PUBLISHED), - ); - - let unscaled_value = borrow_global>(owner).coin.value; - assert!(unscaled_value > 0, error::out_of_range(EZERO_COIN_AMOUNT)); - - let decimal_places = decimals(); - let scaling = math64::pow(10, (decimal_places as u64)); - let value = fixed_point32::create_from_rational(unscaled_value, scaling); - // multply will TRUNCATE. - let integer_part = fixed_point32::multiply_u64(1, value); - let decimal_part = unscaled_value - (integer_part * scaling); - - (integer_part, decimal_part) - } - - #[test(source = @0x1)] - public entry fun test_human_read( - source: signer, - ) acquires CoinInfo, CoinStore { - let source_addr = signer::address_of(&source); - account::create_account_for_test(source_addr); - let (burn_cap, freeze_cap, mint_cap) = initialize_and_register_fake_money(&source, 8, true); - - let coins_minted = mint(1234567890, &mint_cap); - deposit(source_addr, coins_minted); - // assert!(balance(source_addr) == 100, 0); - - let (integer, decimal) = balance_human(source_addr); - assert!(integer == 12, 7357001); - assert!(decimal == 34567890, 7357002); - - move_to(&source, FakeMoneyCapabilities { - burn_cap, - freeze_cap, - mint_cap, - }); - } #[view] /// Returns `true` if the type `CoinType` is an initialized coin. diff --git a/framework/libra-framework/sources/modified_source/transaction_fee.move b/framework/libra-framework/sources/modified_source/transaction_fee.move index 3c537d3a5..95cbbe821 100644 --- a/framework/libra-framework/sources/modified_source/transaction_fee.move +++ b/framework/libra-framework/sources/modified_source/transaction_fee.move @@ -8,6 +8,7 @@ module diem_framework::transaction_fee { use ol_framework::gas_coin::LibraCoin as GasCoin; use ol_framework::fee_maker; use ol_framework::slow_wallet; + use ol_framework::ol_account; // use diem_std::debug::print; @@ -66,25 +67,25 @@ module diem_framework::transaction_fee { exists(@diem_framework) } - /// Sets the burn percentage for collected fees to a new value. Should be called by on-chain governance. - public fun upgrade_burn_percentage( - diem_framework: &signer, - new_burn_percentage: u8 - ) acquires GasCoinCapabilities, CollectedFeesPerBlock { - system_addresses::assert_diem_framework(diem_framework); - assert!(new_burn_percentage <= 100, error::out_of_range(EINVALID_BURN_PERCENTAGE)); - - // Prior to upgrading the burn percentage, make sure to process collected - // fees. Otherwise we would use the new (incorrect) burn_percentage when - // processing fees later! - process_collected_fees(); - - if (is_fees_collection_enabled()) { - // Upgrade has no effect unless fees are being collected. - let burn_percentage = &mut borrow_global_mut(@diem_framework).burn_percentage; - *burn_percentage = new_burn_percentage - } - } + // /// Sets the burn percentage for collected fees to a new value. Should be called by on-chain governance. + // public fun upgrade_burn_percentage( + // diem_framework: &signer, + // new_burn_percentage: u8 + // ) acquires GasCoinCapabilities, CollectedFeesPerBlock { + // system_addresses::assert_diem_framework(diem_framework); + // assert!(new_burn_percentage <= 100, error::out_of_range(EINVALID_BURN_PERCENTAGE)); + + // // Prior to upgrading the burn percentage, make sure to process collected + // // fees. Otherwise we would use the new (incorrect) burn_percentage when + // // processing fees later! + // process_collected_fees(); + + // if (is_fees_collection_enabled()) { + // // Upgrade has no effect unless fees are being collected. + // let burn_percentage = &mut borrow_global_mut(@diem_framework).burn_percentage; + // *burn_percentage = new_burn_percentage + // } + // } /// Registers the proposer of the block for gas fees collection. This function /// can only be called at the beginning of the block. @@ -95,82 +96,82 @@ module diem_framework::transaction_fee { } } - /// Burns a specified fraction of the coin. - fun burn_coin_fraction(coin: &mut Coin, burn_percentage: u8) acquires GasCoinCapabilities { - assert!(burn_percentage <= 100, error::out_of_range(EINVALID_BURN_PERCENTAGE)); - - let collected_amount = coin::value(coin); - spec { - // We assume that `burn_percentage * collected_amount` does not overflow. - assume burn_percentage * collected_amount <= MAX_U64; - }; - let amount_to_burn = (burn_percentage as u64) * collected_amount / 100; - if (amount_to_burn > 0) { - let coin_to_burn = coin::extract(coin, amount_to_burn); - coin::burn( - coin_to_burn, - &borrow_global(@diem_framework).burn_cap, - ); - } - } - - /// Calculates the fee which should be distributed to the block proposer at the - /// end of an epoch, and records it in the system. This function can only be called - /// at the beginning of the block or during reconfiguration. - public(friend) fun process_collected_fees() acquires GasCoinCapabilities, CollectedFeesPerBlock { - if (!is_fees_collection_enabled()) { - return - }; - let collected_fees = borrow_global_mut(@diem_framework); - - // If there are no collected fees, only unset the proposer. See the rationale for - // setting proposer to option::none() below. - if (coin::is_aggregatable_coin_zero(&collected_fees.amount)) { - if (option::is_some(&collected_fees.proposer)) { - let _ = option::extract(&mut collected_fees.proposer); - }; - return - }; - - // Otherwise get the collected fee, and check if it can distributed later. - let coin = coin::drain_aggregatable_coin(&mut collected_fees.amount); - // if (option::is_some(&collected_fees.proposer)) { - // // Extract the address of proposer here and reset it to option::none(). This - // // is particularly useful to avoid any undesired side-effects where coins are - // // collected but never distributed or distributed to the wrong account. - // // With this design, processing collected fees enforces that all fees will be burnt - // // unless the proposer is specified in the block prologue. When we have a governance - // // proposal that triggers reconfiguration, we distribute pending fees and burn the - // // fee for the proposal. Otherwise, that fee would be leaked to the next block. - // let proposer = option::extract(&mut collected_fees.proposer); - - // // Since the block can be produced by the VM itself, we have to make sure we catch - // // this case. - // if (proposer == @vm_reserved) { - // burn_coin_fraction(&mut coin, 100); - // coin::destroy_zero(coin); - // return - // }; - - // burn_coin_fraction(&mut coin, collected_fees.burn_percentage); - // // coin::burn() - // // stake::add_transaction_fee(proposer, coin); - // return - // }; - - // If checks did not pass, simply burn all collected coins and return none. - burn_coin_fraction(&mut coin, 100); - coin::destroy_zero(coin) - } - - /// Burn transaction fees in epilogue. - public(friend) fun burn_fee(account: address, fee: u64) acquires GasCoinCapabilities { - coin::burn_from( - account, - fee, - &borrow_global(@diem_framework).burn_cap, - ); - } + // /// Burns a specified fraction of the coin. + // fun burn_coin_fraction(coin: &mut Coin, burn_percentage: u8) acquires GasCoinCapabilities { + // assert!(burn_percentage <= 100, error::out_of_range(EINVALID_BURN_PERCENTAGE)); + + // let collected_amount = coin::value(coin); + // spec { + // // We assume that `burn_percentage * collected_amount` does not overflow. + // assume burn_percentage * collected_amount <= MAX_U64; + // }; + // let amount_to_burn = (burn_percentage as u64) * collected_amount / 100; + // if (amount_to_burn > 0) { + // let coin_to_burn = coin::extract(coin, amount_to_burn); + // coin::burn( + // coin_to_burn, + // &borrow_global(@diem_framework).burn_cap, + // ); + // } + // } + + // /// Calculates the fee which should be distributed to the block proposer at the + // /// end of an epoch, and records it in the system. This function can only be called + // /// at the beginning of the block or during reconfiguration. + // public(friend) fun process_collected_fees() acquires GasCoinCapabilities, CollectedFeesPerBlock { + // if (!is_fees_collection_enabled()) { + // return + // }; + // let collected_fees = borrow_global_mut(@diem_framework); + + // // If there are no collected fees, only unset the proposer. See the rationale for + // // setting proposer to option::none() below. + // if (coin::is_aggregatable_coin_zero(&collected_fees.amount)) { + // if (option::is_some(&collected_fees.proposer)) { + // let _ = option::extract(&mut collected_fees.proposer); + // }; + // return + // }; + + // // Otherwise get the collected fee, and check if it can distributed later. + // let coin = coin::drain_aggregatable_coin(&mut collected_fees.amount); + // // if (option::is_some(&collected_fees.proposer)) { + // // // Extract the address of proposer here and reset it to option::none(). This + // // // is particularly useful to avoid any undesired side-effects where coins are + // // // collected but never distributed or distributed to the wrong account. + // // // With this design, processing collected fees enforces that all fees will be burnt + // // // unless the proposer is specified in the block prologue. When we have a governance + // // // proposal that triggers reconfiguration, we distribute pending fees and burn the + // // // fee for the proposal. Otherwise, that fee would be leaked to the next block. + // // let proposer = option::extract(&mut collected_fees.proposer); + + // // // Since the block can be produced by the VM itself, we have to make sure we catch + // // // this case. + // // if (proposer == @vm_reserved) { + // // burn_coin_fraction(&mut coin, 100); + // // coin::destroy_zero(coin); + // // return + // // }; + + // // burn_coin_fraction(&mut coin, collected_fees.burn_percentage); + // // // coin::burn() + // // // stake::add_transaction_fee(proposer, coin); + // // return + // // }; + + // // If checks did not pass, simply burn all collected coins and return none. + // burn_coin_fraction(&mut coin, 100); + // coin::destroy_zero(coin) + // } + + // /// Burn transaction fees in epilogue. + // public(friend) fun burn_fee(account: address, fee: u64) acquires GasCoinCapabilities { + // coin::burn_from( + // account, + // fee, + // &borrow_global(@diem_framework).burn_cap, + // ); + // } /// Collect transaction fees in epilogue. public(friend) fun collect_fee(account: address, fee: u64) acquires CollectedFeesPerBlock { @@ -225,7 +226,7 @@ module diem_framework::transaction_fee { /// root account can use system fees to pay multiple accounts, e.g. for Proof of Fee reward. /// returns the actual amount that was transferred - public fun vm_multi_pay_fee(vm: &signer, list: &vector
, amount: u64): u64 acquires CollectedFeesPerBlock { + public fun vm_multi_collect(vm: &signer, list: &vector
, amount: u64): u64 acquires CollectedFeesPerBlock { system_addresses::assert_ol(vm); if (amount == 0) return 0; let actual_transferred = 0; @@ -234,7 +235,7 @@ module diem_framework::transaction_fee { while (i < vector::length(list)) { let from = vector::borrow(list, i); - let coin_option = coin::vm_withdraw(vm, *from, amount); + let coin_option = ol_account::vm_withdraw_unlimited(vm, *from, amount); if (option::is_some(&coin_option)) { let c = option::extract(&mut coin_option); actual_transferred = actual_transferred + coin::value(&c); @@ -295,156 +296,156 @@ module diem_framework::transaction_fee { assert!(collected_fees.burn_percentage == 25, 0); } - #[test(diem_framework = @diem_framework)] - fun test_burn_fraction_calculation(diem_framework: signer) acquires GasCoinCapabilities { - use ol_framework::gas_coin; - let (burn_cap, mint_cap) = gas_coin::initialize_for_test(&diem_framework); - store_diem_coin_burn_cap(&diem_framework, burn_cap); - - let c1 = coin::mint(100, &mint_cap); - assert!(*option::borrow(&coin::supply()) == 100, 0); - - // Burning 25%. - burn_coin_fraction(&mut c1, 25); - assert!(coin::value(&c1) == 75, 0); - assert!(*option::borrow(&coin::supply()) == 75, 0); - - // Burning 0%. - burn_coin_fraction(&mut c1, 0); - assert!(coin::value(&c1) == 75, 0); - assert!(*option::borrow(&coin::supply()) == 75, 0); - - // Burning remaining 100%. - burn_coin_fraction(&mut c1, 100); - assert!(coin::value(&c1) == 0, 0); - assert!(*option::borrow(&coin::supply()) == 0, 0); - - coin::destroy_zero(c1); - let c2 = coin::mint(10, &mint_cap); - assert!(*option::borrow(&coin::supply()) == 10, 0); - - burn_coin_fraction(&mut c2, 5); - assert!(coin::value(&c2) == 10, 0); - assert!(*option::borrow(&coin::supply()) == 10, 0); - - burn_coin_fraction(&mut c2, 100); - coin::destroy_zero(c2); - coin::destroy_burn_cap(burn_cap); - coin::destroy_mint_cap(mint_cap); - } - - #[test(root = @ol_framework, alice = @0xa11ce, bob = @0xb0b, carol = @0xca101)] - fun test_fees_distribution( - root: signer, - alice: signer, - bob: signer, - carol: signer, - ) acquires GasCoinCapabilities, CollectedFeesPerBlock { - //////// 0L //////// - // changed to use GasCoin for fees - use std::signer; - use ol_framework::ol_account; - use ol_framework::gas_coin; - - // Initialization. - let (burn_cap, mint_cap) = gas_coin::initialize_for_test(&root); - gas_coin::test_set_final_supply(&root, 100); - store_diem_coin_burn_cap(&root, burn_cap); - initialize_fee_collection_and_distribution(&root, 10); - - // Create dummy accounts. - let alice_addr = signer::address_of(&alice); - let bob_addr = signer::address_of(&bob); - let carol_addr = signer::address_of(&carol); - ol_account::create_account(&root, alice_addr); - ol_account::create_account(&root, bob_addr); - ol_account::create_account(&root, carol_addr); - coin::deposit(alice_addr, coin::mint(10000, &mint_cap)); - coin::deposit(bob_addr, coin::mint(10000, &mint_cap)); - coin::deposit(carol_addr, coin::mint(10000, &mint_cap)); - assert!(*option::borrow(&coin::supply()) == 30000, 0); - - // Block 1 starts. - process_collected_fees(); - register_proposer_for_fee_collection(alice_addr); - - // Check that there was no fees distribution in the first block. - let collected_fees = borrow_global(@ol_framework); - assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); - assert!(*option::borrow(&collected_fees.proposer) == alice_addr, 0); - assert!(*option::borrow(&coin::supply()) == 30000, 0); - - // Simulate transaction fee collection - here we simply collect some fees from Bob. - collect_fee(bob_addr, 100); - collect_fee(bob_addr, 500); - collect_fee(bob_addr, 400); - - // Now Bob must have 1000 less in his account. Alice and Carol have the same amounts. - assert!(coin::balance(alice_addr) == 10000, 0); - assert!(coin::balance(bob_addr) == 9000, 0); - assert!(coin::balance(carol_addr) == 10000, 0); - - // Block 2 starts. - process_collected_fees(); - register_proposer_for_fee_collection(bob_addr); - - // Collected fees from Bob must have been assigned to Alice. - // assert!(stake::get_validator_fee(alice_addr) == 900, 0); - assert!(coin::balance(alice_addr) == 10000, 0); - assert!(coin::balance(bob_addr) == 9000, 0); - assert!(coin::balance(carol_addr) == 10000, 0); - - // Also, aggregator coin is drained and total supply is slightly changed (10% of 1000 is burnt). - let collected_fees = borrow_global(@ol_framework); - assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); - assert!(*option::borrow(&collected_fees.proposer) == bob_addr, 0); - // assert!(*option::borrow(&coin::supply()) == 29900, 0); - - // Simulate transaction fee collection one more time. - collect_fee(bob_addr, 5000); - collect_fee(bob_addr, 4000); - - assert!(coin::balance(alice_addr) == 10000, 0); - assert!(coin::balance(bob_addr) == 0, 0); - assert!(coin::balance(carol_addr) == 10000, 0); - - // Block 3 starts. - process_collected_fees(); - register_proposer_for_fee_collection(carol_addr); - - // Collected fees should have been assigned to Bob because he was the peoposer. - // assert!(stake::get_validator_fee(alice_addr) == 900, 0); - assert!(coin::balance(alice_addr) == 10000, 0); - // assert!(stake::get_validator_fee(bob_addr) == 8100, 0); - assert!(coin::balance(bob_addr) == 0, 0); - assert!(coin::balance(carol_addr) == 10000, 0); - - // Again, aggregator coin is drained and total supply is changed by 10% of 9000. - let collected_fees = borrow_global(@diem_framework); - assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); - assert!(*option::borrow(&collected_fees.proposer) == carol_addr, 0); - // assert!(*option::borrow(&coin::supply()) == 29000, 0); - - // Simulate transaction fee collection one last time. - collect_fee(alice_addr, 1000); - collect_fee(alice_addr, 1000); - - // Block 4 starts. - process_collected_fees(); - register_proposer_for_fee_collection(alice_addr); - - // Check that 2000 was collected from Alice. - assert!(coin::balance(alice_addr) == 8000, 0); - assert!(coin::balance(bob_addr) == 0, 0); - - // Carol must have some fees assigned now. - let collected_fees = borrow_global(@diem_framework); - // assert!(stake::get_validator_fee(carol_addr) == 1800, 0); - assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); - assert!(*option::borrow(&collected_fees.proposer) == alice_addr, 0); - // assert!(*option::borrow(&coin::supply()) == 28800, 0); - - coin::destroy_burn_cap(burn_cap); - coin::destroy_mint_cap(mint_cap); - } + // #[test(diem_framework = @diem_framework)] + // fun test_burn_fraction_calculation(diem_framework: signer) acquires GasCoinCapabilities { + // use ol_framework::gas_coin; + // let (burn_cap, mint_cap) = gas_coin::initialize_for_test(&diem_framework); + // store_diem_coin_burn_cap(&diem_framework, burn_cap); + + // let c1 = coin::mint(100, &mint_cap); + // assert!(*option::borrow(&coin::supply()) == 100, 0); + + // // Burning 25%. + // burn_coin_fraction(&mut c1, 25); + // assert!(coin::value(&c1) == 75, 0); + // assert!(*option::borrow(&coin::supply()) == 75, 0); + + // // Burning 0%. + // burn_coin_fraction(&mut c1, 0); + // assert!(coin::value(&c1) == 75, 0); + // assert!(*option::borrow(&coin::supply()) == 75, 0); + + // // Burning remaining 100%. + // burn_coin_fraction(&mut c1, 100); + // assert!(coin::value(&c1) == 0, 0); + // assert!(*option::borrow(&coin::supply()) == 0, 0); + + // coin::destroy_zero(c1); + // let c2 = coin::mint(10, &mint_cap); + // assert!(*option::borrow(&coin::supply()) == 10, 0); + + // burn_coin_fraction(&mut c2, 5); + // assert!(coin::value(&c2) == 10, 0); + // assert!(*option::borrow(&coin::supply()) == 10, 0); + + // burn_coin_fraction(&mut c2, 100); + // coin::destroy_zero(c2); + // coin::destroy_burn_cap(burn_cap); + // coin::destroy_mint_cap(mint_cap); + // } + + // #[test(root = @ol_framework, alice = @0xa11ce, bob = @0xb0b, carol = @0xca101)] + // fun test_fees_distribution( + // root: signer, + // alice: signer, + // bob: signer, + // carol: signer, + // ) acquires GasCoinCapabilities, CollectedFeesPerBlock { + // //////// 0L //////// + // // changed to use GasCoin for fees + // use std::signer; + // use ol_framework::ol_account; + // use ol_framework::gas_coin; + + // // Initialization. + // let (burn_cap, mint_cap) = gas_coin::initialize_for_test(&root); + // gas_coin::test_set_final_supply(&root, 100); + // store_diem_coin_burn_cap(&root, burn_cap); + // initialize_fee_collection_and_distribution(&root, 10); + + // // Create dummy accounts. + // let alice_addr = signer::address_of(&alice); + // let bob_addr = signer::address_of(&bob); + // let carol_addr = signer::address_of(&carol); + // ol_account::create_account(&root, alice_addr); + // ol_account::create_account(&root, bob_addr); + // ol_account::create_account(&root, carol_addr); + // coin::deposit(alice_addr, coin::mint(10000, &mint_cap)); + // coin::deposit(bob_addr, coin::mint(10000, &mint_cap)); + // coin::deposit(carol_addr, coin::mint(10000, &mint_cap)); + // assert!(*option::borrow(&coin::supply()) == 30000, 0); + + // // Block 1 starts. + // process_collected_fees(); + // register_proposer_for_fee_collection(alice_addr); + + // // Check that there was no fees distribution in the first block. + // let collected_fees = borrow_global(@ol_framework); + // assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); + // assert!(*option::borrow(&collected_fees.proposer) == alice_addr, 0); + // assert!(*option::borrow(&coin::supply()) == 30000, 0); + + // // Simulate transaction fee collection - here we simply collect some fees from Bob. + // collect_fee(bob_addr, 100); + // collect_fee(bob_addr, 500); + // collect_fee(bob_addr, 400); + + // // Now Bob must have 1000 less in his account. Alice and Carol have the same amounts. + // assert!(coin::balance(alice_addr) == 10000, 0); + // assert!(coin::balance(bob_addr) == 9000, 0); + // assert!(coin::balance(carol_addr) == 10000, 0); + + // // Block 2 starts. + // process_collected_fees(); + // register_proposer_for_fee_collection(bob_addr); + + // // Collected fees from Bob must have been assigned to Alice. + // // assert!(stake::get_validator_fee(alice_addr) == 900, 0); + // assert!(coin::balance(alice_addr) == 10000, 0); + // assert!(coin::balance(bob_addr) == 9000, 0); + // assert!(coin::balance(carol_addr) == 10000, 0); + + // // Also, aggregator coin is drained and total supply is slightly changed (10% of 1000 is burnt). + // let collected_fees = borrow_global(@ol_framework); + // assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); + // assert!(*option::borrow(&collected_fees.proposer) == bob_addr, 0); + // // assert!(*option::borrow(&coin::supply()) == 29900, 0); + + // // Simulate transaction fee collection one more time. + // collect_fee(bob_addr, 5000); + // collect_fee(bob_addr, 4000); + + // assert!(coin::balance(alice_addr) == 10000, 0); + // assert!(coin::balance(bob_addr) == 0, 0); + // assert!(coin::balance(carol_addr) == 10000, 0); + + // // Block 3 starts. + // process_collected_fees(); + // register_proposer_for_fee_collection(carol_addr); + + // // Collected fees should have been assigned to Bob because he was the peoposer. + // // assert!(stake::get_validator_fee(alice_addr) == 900, 0); + // assert!(coin::balance(alice_addr) == 10000, 0); + // // assert!(stake::get_validator_fee(bob_addr) == 8100, 0); + // assert!(coin::balance(bob_addr) == 0, 0); + // assert!(coin::balance(carol_addr) == 10000, 0); + + // // Again, aggregator coin is drained and total supply is changed by 10% of 9000. + // let collected_fees = borrow_global(@diem_framework); + // assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); + // assert!(*option::borrow(&collected_fees.proposer) == carol_addr, 0); + // // assert!(*option::borrow(&coin::supply()) == 29000, 0); + + // // Simulate transaction fee collection one last time. + // collect_fee(alice_addr, 1000); + // collect_fee(alice_addr, 1000); + + // // Block 4 starts. + // process_collected_fees(); + // register_proposer_for_fee_collection(alice_addr); + + // // Check that 2000 was collected from Alice. + // assert!(coin::balance(alice_addr) == 8000, 0); + // assert!(coin::balance(bob_addr) == 0, 0); + + // // Carol must have some fees assigned now. + // let collected_fees = borrow_global(@diem_framework); + // // assert!(stake::get_validator_fee(carol_addr) == 1800, 0); + // assert!(coin::is_aggregatable_coin_zero(&collected_fees.amount), 0); + // assert!(*option::borrow(&collected_fees.proposer) == alice_addr, 0); + // // assert!(*option::borrow(&coin::supply()) == 28800, 0); + + // coin::destroy_burn_cap(burn_cap); + // coin::destroy_mint_cap(mint_cap); + // } } diff --git a/framework/libra-framework/sources/modified_source/transaction_fee.spec.move b/framework/libra-framework/sources/modified_source/transaction_fee.spec.move index e97797ad7..716d1ca47 100644 --- a/framework/libra-framework/sources/modified_source/transaction_fee.spec.move +++ b/framework/libra-framework/sources/modified_source/transaction_fee.spec.move @@ -16,10 +16,10 @@ spec diem_framework::transaction_fee { pragma verify=false; } - spec upgrade_burn_percentage(diem_framework: &signer, new_burn_percentage: u8) { - // TODO: missing aborts_if spec - pragma verify=false; - } + // spec upgrade_burn_percentage(diem_framework: &signer, new_burn_percentage: u8) { + // // TODO: missing aborts_if spec + // pragma verify=false; + // } spec register_proposer_for_fee_collection(proposer_addr: address) { aborts_if false; @@ -27,24 +27,24 @@ spec diem_framework::transaction_fee { option::spec_borrow(global(@diem_framework).proposer) == proposer_addr; } - spec burn_coin_fraction(coin: &mut Coin, burn_percentage: u8) { - use diem_framework::optional_aggregator; - use diem_framework::aggregator; - use diem_framework::coin::CoinInfo; - use ol_framework::gas_coin::LibraCoin as GasCoin; - requires burn_percentage <= 100; - requires exists(@diem_framework); - requires exists>(@diem_framework); - let amount_to_burn = (burn_percentage * coin::value(coin)) / 100; - let maybe_supply = coin::get_coin_supply_opt(); - aborts_if amount_to_burn > 0 && option::is_some(maybe_supply) && optional_aggregator::is_parallelizable(option::borrow(maybe_supply)) - && aggregator::spec_aggregator_get_val(option::borrow(option::borrow(maybe_supply).aggregator)) < - amount_to_burn; - aborts_if option::is_some(maybe_supply) && !optional_aggregator::is_parallelizable(option::borrow(maybe_supply)) - && option::borrow(option::borrow(maybe_supply).integer).value < - amount_to_burn; - include (amount_to_burn > 0) ==> coin::AbortsIfNotExistCoinInfo; - } + // spec burn_coin_fraction(coin: &mut Coin, burn_percentage: u8) { + // use diem_framework::optional_aggregator; + // use diem_framework::aggregator; + // use diem_framework::coin::CoinInfo; + // use ol_framework::gas_coin::LibraCoin as GasCoin; + // requires burn_percentage <= 100; + // requires exists(@diem_framework); + // requires exists>(@diem_framework); + // let amount_to_burn = (burn_percentage * coin::value(coin)) / 100; + // let maybe_supply = coin::get_coin_supply_opt(); + // aborts_if amount_to_burn > 0 && option::is_some(maybe_supply) && optional_aggregator::is_parallelizable(option::borrow(maybe_supply)) + // && aggregator::spec_aggregator_get_val(option::borrow(option::borrow(maybe_supply).aggregator)) < + // amount_to_burn; + // aborts_if option::is_some(maybe_supply) && !optional_aggregator::is_parallelizable(option::borrow(maybe_supply)) + // && option::borrow(option::borrow(maybe_supply).integer).value < + // amount_to_burn; + // include (amount_to_burn > 0) ==> coin::AbortsIfNotExistCoinInfo; + // } spec fun collectedFeesAggregator(): AggregatableCoin { global(@diem_framework).amount @@ -60,21 +60,21 @@ spec diem_framework::transaction_fee { optional_aggregator::optional_aggregator_value(option::spec_borrow(coin::get_coin_supply_opt()))); } - spec process_collected_fees() { - use diem_framework::coin::CoinInfo; - use ol_framework::gas_coin::LibraCoin as GasCoin; - requires exists(@diem_framework); - // requires exists(@diem_framework); - requires exists>(@diem_framework); - include RequiresCollectedFeesPerValueLeqBlockDiemSupply; - } + // spec process_collected_fees() { + // use diem_framework::coin::CoinInfo; + // use ol_framework::gas_coin::LibraCoin as GasCoin; + // requires exists(@diem_framework); + // // requires exists(@diem_framework); + // requires exists>(@diem_framework); + // include RequiresCollectedFeesPerValueLeqBlockDiemSupply; + // } - /// `GasCoinCapabilities` should be exists. - spec burn_fee(account: address, fee: u64) { - // TODO: complex aborts conditions in `burn_from` - pragma aborts_if_is_partial; - aborts_if !exists(@diem_framework); - } + // /// `GasCoinCapabilities` should be exists. + // spec burn_fee(account: address, fee: u64) { + // // TODO: complex aborts conditions in `burn_from` + // pragma aborts_if_is_partial; + // aborts_if !exists(@diem_framework); + // } spec collect_fee(account: address, fee: u64) { use diem_framework::aggregator; diff --git a/framework/libra-framework/sources/ol_sources/epoch_boundary.move b/framework/libra-framework/sources/ol_sources/epoch_boundary.move index 4b3455ac5..a8f51bbb0 100644 --- a/framework/libra-framework/sources/ol_sources/epoch_boundary.move +++ b/framework/libra-framework/sources/ol_sources/epoch_boundary.move @@ -22,7 +22,7 @@ module diem_framework::epoch_boundary { use std::vector; use std::error; - // use diem_std::debug::print; + use diem_std::debug::print; friend diem_framework::block; @@ -191,6 +191,10 @@ module diem_framework::epoch_boundary { // drip coins let (s_success, s_amount) = slow_wallet::on_new_epoch(root); + print(&33333); + print(&s_success); + print(&s_amount); + status.slow_wallet_drip_amount = s_amount; status.slow_wallet_drip_success = s_success; diff --git a/framework/libra-framework/sources/ol_sources/genesis_migration.move b/framework/libra-framework/sources/ol_sources/genesis_migration.move index 06fc3fa38..42d9bd35f 100644 --- a/framework/libra-framework/sources/ol_sources/genesis_migration.move +++ b/framework/libra-framework/sources/ol_sources/genesis_migration.move @@ -16,7 +16,6 @@ module ol_framework::genesis_migration { use ol_framework::gas_coin; use ol_framework::gas_coin::LibraCoin as GasCoin; use ol_framework::transaction_fee; - use ol_framework::slow_wallet; use ol_framework::pledge_accounts; use diem_framework::system_addresses; // use diem_std::debug::print; @@ -98,7 +97,7 @@ module ol_framework::genesis_migration { let escrow_pct = fixed_point32::create_from_rational(escrow_pct, 1000000); - let (unlocked, total) = slow_wallet::balance(user_addr); + let (unlocked, total) = ol_account::balance(user_addr); let locked = 0; if ((total > unlocked) && (total > 0)) { @@ -115,4 +114,4 @@ module ol_framework::genesis_migration { option::destroy_none(coin_opt); }; } -} \ No newline at end of file +} diff --git a/framework/libra-framework/sources/ol_sources/libra_coin.move b/framework/libra-framework/sources/ol_sources/libra_coin.move index e79b3c0a9..72440f3fb 100644 --- a/framework/libra-framework/sources/ol_sources/libra_coin.move +++ b/framework/libra-framework/sources/ol_sources/libra_coin.move @@ -416,11 +416,11 @@ module ol_framework::gas_coin { index } - #[view] - /// helper to get balance in gas coin - public fun get_balance(account: address): u64 { - coin::balance(account) - } + // #[view] + // /// helper to get balance in gas coin + // public fun get_balance(account: address): u64 { + // coin::balance(account) + // } #[test_only] diff --git a/framework/libra-framework/sources/ol_sources/ol_account.move b/framework/libra-framework/sources/ol_sources/ol_account.move index 82d961b55..0c3ff1ae2 100644 --- a/framework/libra-framework/sources/ol_sources/ol_account.move +++ b/framework/libra-framework/sources/ol_sources/ol_account.move @@ -8,6 +8,9 @@ module ol_framework::ol_account { use std::signer; use std::option::{Self, Option}; use diem_std::from_bcs; + use diem_std::fixed_point32; + use diem_std::math64; + use ol_framework::gas_coin::{Self, LibraCoin as GasCoin}; use ol_framework::slow_wallet; @@ -24,6 +27,7 @@ module ol_framework::ol_account { friend ol_framework::safe; friend diem_framework::genesis; friend diem_framework::resource_account; + friend diem_framework::transaction_fee; /// Account does not exist. const EACCOUNT_NOT_FOUND: u64 = 1; @@ -327,6 +331,23 @@ module ol_framework::ol_account { slow_wallet::balance(addr) } + #[view] + /// Returns a human readable version of the balance with (integer, decimal_part) + public fun balance_human(owner: address): (u64, u64) { + + let (_, unscaled_value) = balance(owner); + if (unscaled_value == 0) return (0,0); + + let decimal_places = coin::decimals(); + let scaling = math64::pow(10, (decimal_places as u64)); + let value = fixed_point32::create_from_rational(unscaled_value, scaling); + // multply will TRUNCATE. + let integer_part = fixed_point32::multiply_u64(1, value); + + let decimal_part = unscaled_value - (integer_part * scaling); + + (integer_part, decimal_part) + } // on new account creation we need the burn tracker created // note return quietly if it's already initialized, so we can use it // in the creation and tx flow @@ -423,6 +444,17 @@ module ol_framework::ol_account { maybe_update_burn_tracker_impl(to); } + /// for validator rewards and community wallet transfers, + /// the SlowWallet.unlocked DOES NOT get updated. + public fun vm_deposit_coins_locked(vm: &signer, to: address, coins: Coin) acquires + BurnTracker { + system_addresses::assert_ol(vm); + assert!(coin::is_account_registered(to), error::invalid_state(EACCOUNT_NOT_REGISTERED_FOR_GAS)); + coin::deposit(to, coins); + // the incoming coins should trigger an update in tracker + maybe_update_burn_tracker_impl(to); + } + // pass through function to guard the use of Coin public fun merge_coins(dst_coin: &mut Coin, source_coin: Coin) { // TODO: check it this is true: no tracking on merged coins since they are always withdrawn, and are a hot potato that might deposit later. diff --git a/framework/libra-framework/sources/ol_sources/proof_of_fee.move b/framework/libra-framework/sources/ol_sources/proof_of_fee.move index 28f62cd05..930666943 100644 --- a/framework/libra-framework/sources/ol_sources/proof_of_fee.move +++ b/framework/libra-framework/sources/ol_sources/proof_of_fee.move @@ -151,7 +151,7 @@ module ol_framework::proof_of_fee { public(friend) fun charge_epoch_fees(vm: &signer, auction_winners: vector
, price: u64): (u64, u64, bool) { let expected_fees = vector::length(&auction_winners) * price; - let actually_paid = transaction_fee::vm_multi_pay_fee(vm, &auction_winners, price); + let actually_paid = transaction_fee::vm_multi_collect(vm, &auction_winners, price); let fee_success = actually_paid == expected_fees; (expected_fees, actually_paid, fee_success) diff --git a/framework/libra-framework/sources/ol_sources/rewards.move b/framework/libra-framework/sources/ol_sources/rewards.move index 7a4f933ee..2359072cb 100644 --- a/framework/libra-framework/sources/ol_sources/rewards.move +++ b/framework/libra-framework/sources/ol_sources/rewards.move @@ -1,14 +1,15 @@ module ol_framework::rewards { - use diem_framework::system_addresses; - use ol_framework::gas_coin::LibraCoin as GasCoin; - use diem_framework::coin::{Self, Coin}; use std::vector; + use diem_framework::coin::{Self, Coin}; use diem_framework::stake; + use diem_framework::system_addresses; + use ol_framework::gas_coin::LibraCoin as GasCoin; + use ol_framework::ol_account; + // use diem_std::debug::print; friend diem_framework::epoch_boundary; - // friend diem_framework::stake; const REWARD_VALIDATOR: u8 = 1; const REWARD_ORACLE: u8 = 2; @@ -63,7 +64,7 @@ module ol_framework::rewards { // if we don't have enough funds, we should exit without abort. system_addresses::assert_ol(root); let amount = coin::value(&coin); - coin::deposit(addr, coin); + ol_account::vm_deposit_coins_locked(root, addr, coin); if (reward_type == REWARD_VALIDATOR) { stake::emit_distribute_reward(root, addr, amount); @@ -94,4 +95,4 @@ module ol_framework::rewards { } -} \ No newline at end of file +} diff --git a/framework/libra-framework/sources/ol_sources/slow_wallet.move b/framework/libra-framework/sources/ol_sources/slow_wallet.move index b25967096..b5e2ba919 100644 --- a/framework/libra-framework/sources/ol_sources/slow_wallet.move +++ b/framework/libra-framework/sources/ol_sources/slow_wallet.move @@ -6,13 +6,15 @@ // the unlocked amount. module ol_framework::slow_wallet { - use diem_framework::system_addresses; - use diem_framework::coin; + use std::error; + use std::event; use std::vector; use std::signer; + use diem_framework::system_addresses; + use diem_framework::coin; + use diem_framework::account; use ol_framework::gas_coin::LibraCoin as GasCoin; use ol_framework::testnet; - use std::error; use ol_framework::sacred_cows; // use diem_std::debug::print; @@ -23,8 +25,6 @@ module ol_framework::slow_wallet { /// genesis failed to initialized the slow wallet registry const EGENESIS_ERROR: u64 = 1; - - /// Maximum possible aggregatable coin value. const MAX_U64: u128 = 18446744073709551615; @@ -33,15 +33,23 @@ module ol_framework::slow_wallet { transferred: u64, } + // the drip event at end of epoch + struct DripEvent has drop, store { + value: u64, + users: u64, + } + struct SlowWalletList has key { - list: vector
+ list: vector
, + drip_events: event::EventHandle, } - public fun initialize(vm: &signer){ - system_addresses::assert_ol(vm); + public fun initialize(framework: &signer){ + system_addresses::assert_ol(framework); if (!exists(@ol_framework)) { - move_to(vm, SlowWalletList { - list: vector::empty
() + move_to(framework, SlowWalletList { + list: vector::empty
(), + drip_events: account::new_event_handle(framework) }); } } @@ -145,13 +153,27 @@ module ol_framework::slow_wallet { // success unless that was the case. accounts_updated = accounts_updated + 1; - i = i + 1; }; + emit_drip_event(vm, amount, accounts_updated); (accounts_updated==len, amount) } + + /// send a drip event notification with the totals of epoch + fun emit_drip_event(root: &signer, value: u64, users: u64) acquires SlowWalletList { + system_addresses::assert_ol(root); + let state = borrow_global_mut(@ol_framework); + event::emit_event( + &mut state.drip_events, + DripEvent { + value, + users, + }, + ); + } + /// wrapper to both attempt to adjust the slow wallet tracker /// on the sender and recipient. /// if either account is not a slow wallet no tracking @@ -213,9 +235,9 @@ module ol_framework::slow_wallet { exists(addr) } - #[view] + // #[view] /// helper to get the unlocked and total balance. (unlocked, total) - public fun balance(addr: address): (u64, u64) acquires SlowWallet{ + public(friend) fun balance(addr: address): (u64, u64) acquires SlowWallet{ // this is a normal account, so return the normal balance let total = coin::balance(addr); if (exists(addr)) { diff --git a/framework/libra-framework/sources/ol_sources/tests/migration.test.move b/framework/libra-framework/sources/ol_sources/tests/migration.test.move index 94c246546..a09954a9b 100644 --- a/framework/libra-framework/sources/ol_sources/tests/migration.test.move +++ b/framework/libra-framework/sources/ol_sources/tests/migration.test.move @@ -3,6 +3,7 @@ module ol_framework::test_migration { use ol_framework::genesis_migration; use ol_framework::infra_escrow; use ol_framework::slow_wallet; + use ol_framework::ol_account; use std::fixed_point32; use ol_framework::mock; use diem_framework::coin; @@ -52,7 +53,7 @@ module ol_framework::test_migration { // alice only has 1000 unlocked, and 100 lifetime transferred out let legacy_unlocked = 1000; slow_wallet::fork_migrate_slow_wallet(&root, &marlon_rando, legacy_unlocked, 100); - let (unlocked, total) = slow_wallet::balance(addr); + let (unlocked, total) = ol_account::balance(addr); assert!(unlocked == legacy_unlocked, 73570001); assert!(total == user_balance, 73570002); @@ -77,4 +78,4 @@ module ol_framework::test_migration { assert!((updated_balance + user_pledge) == init_balance, 73570006); } -} \ No newline at end of file +} diff --git a/framework/libra-framework/sources/ol_sources/tests/rewards.test.move b/framework/libra-framework/sources/ol_sources/tests/rewards.test.move index 92eddc0ce..51cac5be0 100644 --- a/framework/libra-framework/sources/ol_sources/tests/rewards.test.move +++ b/framework/libra-framework/sources/ol_sources/tests/rewards.test.move @@ -1,11 +1,13 @@ #[test_only] module ol_framework::test_rewards { - use ol_framework::rewards; - use ol_framework::gas_coin::{Self, LibraCoin as GasCoin}; use diem_framework::coin; - use ol_framework::mock; use diem_framework::stake; use ol_framework::burn; + use ol_framework::gas_coin::{Self, LibraCoin as GasCoin}; + use ol_framework::mock; + use ol_framework::rewards; + + // use diem_std::debug::print; #[test(root = @ol_framework)] fun test_pay_reward_single(root: signer) { @@ -56,4 +58,4 @@ module ol_framework::test_rewards { burn::burn_and_track(new_coin); } -} \ No newline at end of file +} diff --git a/framework/libra-framework/sources/ol_sources/tests/slow_wallet.test.move b/framework/libra-framework/sources/ol_sources/tests/slow_wallet.test.move index b9526b2dc..064eef7b3 100644 --- a/framework/libra-framework/sources/ol_sources/tests/slow_wallet.test.move +++ b/framework/libra-framework/sources/ol_sources/tests/slow_wallet.test.move @@ -49,12 +49,12 @@ module ol_framework::test_slow_wallet { let coin = transaction_fee::test_root_withdraw_all(&root); rewards::test_helper_pay_reward(&root, *a, coin, 0); - let (u, b) = slow_wallet::balance(*a); + let (u, b) = ol_account::balance(*a); assert!(b==100000100, 735702); assert!(u==100, 735703); slow_wallet::slow_wallet_epoch_drip(&root, 233); - let (u, b) = slow_wallet::balance(*a); + let (u, b) = ol_account::balance(*a); assert!(b==100000100, 735704); assert!(u==333, 735705); } @@ -131,4 +131,19 @@ module ol_framework::test_slow_wallet { } -} \ No newline at end of file + #[test(root = @0x1)] + public entry fun test_human_read( + root: signer, + ) { + let _set = mock::genesis_n_vals(&root, 4); + mock::ol_initialize_coin_and_fund_vals(&root, 1234567890, false); + + + let (integer, decimal) = ol_account::balance_human(@0x1000a); + + assert!(integer == 12, 7357001); + assert!(decimal == 34567890, 7357002); + + } + +} diff --git a/framework/libra-framework/sources/ol_sources/tests/validator_reward.test.move b/framework/libra-framework/sources/ol_sources/tests/validator_reward.test.move index d26fbd074..2662f1773 100644 --- a/framework/libra-framework/sources/ol_sources/tests/validator_reward.test.move +++ b/framework/libra-framework/sources/ol_sources/tests/validator_reward.test.move @@ -11,14 +11,17 @@ module ol_framework::test_reconfiguration { use ol_framework::proof_of_fee; use diem_framework::reconfiguration; use ol_framework::epoch_helper; + use ol_framework::ol_account; - // use diem_std::debug::print; + use diem_std::debug::print; // Scenario: all genesis validators make it to next epoch #[test(root = @ol_framework)] fun reconfig_reward_happy_case(root: signer) { let vals = mock::genesis_n_vals(&root, 5); - // mock::ol_initialize_coin(&root); + + + mock::pof_default(); assert!(vector::length(&vals) == 5, 7357001); let vals = stake::get_current_validators(); @@ -26,8 +29,9 @@ module ol_framework::test_reconfiguration { // all vals compliant mock::mock_all_vals_good_performance(&root); - assert!(coin::balance(@0x1000a) == 0, 7357003); - + let (unlocked, alice_bal) = ol_account::balance(@0x1000a); + assert!(unlocked==0, 7367001); + assert!(alice_bal==0, 7357002); let (reward_one, _entry_fee, _, _ ) = proof_of_fee::get_consensus_reward(); // The epoch's reward BEFORE reconfiguration @@ -38,12 +42,17 @@ module ol_framework::test_reconfiguration { let vals = stake::get_current_validators(); assert!(vector::length(&vals) == 5, 7357005); - let alice_bal = coin::balance(@0x1000a); + // let alice_bal = coin::balance(@0x1000a); + let (unlocked, alice_bal) = ol_account::balance(@0x1000a); + print(&unlocked); + print(&alice_bal); + let (_, entry_fee, _, _ ) = proof_of_fee::get_consensus_reward(); // need to check that the user paid an PoF entry fee for next epoch. // which means the balance will be the nominal reward, net of the PoF clearing price bid assert!(alice_bal == (reward_one-entry_fee), 7357006) + } #[test(root = @ol_framework)] diff --git a/framework/libra-framework/sources/ol_sources/tests/vote_lib/safe.test.move b/framework/libra-framework/sources/ol_sources/tests/vote_lib/safe.test.move index 8e6535f03..94a38a35f 100644 --- a/framework/libra-framework/sources/ol_sources/tests/vote_lib/safe.test.move +++ b/framework/libra-framework/sources/ol_sources/tests/vote_lib/safe.test.move @@ -7,13 +7,12 @@ module ol_framework::test_safe { use std::option; use ol_framework::ol_account; use diem_framework::resource_account; - use ol_framework::gas_coin; // NOTE: Most of the save.move features are tested in multi_action (e.g. governance). Here we are testing for specific APIs. #[test(root = @ol_framework, alice = @0x1000a, bob = @0x1000b, dave = @0x1000d )] fun propose_payment_happy(root: &signer, alice: &signer, bob: &signer, dave: &signer, ) { - use ol_framework::slow_wallet; + use ol_framework::ol_account; let vals = mock::genesis_n_vals(root, 2); mock::ol_initialize_coin_and_fund_vals(root, 10000000, true); @@ -36,13 +35,13 @@ module ol_framework::test_safe { // vote should pass after bob also votes let passed = safe::vote_payment(bob, new_resource_address, &prop_id); assert!(passed, 1); - let (_, total_dave) = slow_wallet::balance(@0x1000d); + let (_, total_dave) = ol_account::balance(@0x1000d); assert!(total_dave == 42, 2); } #[test(root = @ol_framework, alice = @0x1000a, bob = @0x1000b, eve = @0x1000e)] fun propose_payment_should_fail(root: &signer, alice: &signer, bob: &signer, eve: &signer) { - use ol_framework::slow_wallet; + use ol_framework::ol_account; let vals = mock::genesis_n_vals(root, 4); mock::ol_initialize_coin_and_fund_vals(root, 10000000, true); @@ -66,7 +65,7 @@ module ol_framework::test_safe { // vote should pass after bob also votes let passed = safe::vote_payment(bob, new_resource_address, &prop_id); assert!(!passed, 1); - let (_, total_dave) = slow_wallet::balance(@0x1000e); + let (_, total_dave) = ol_account::balance(@0x1000e); assert!(total_dave == 0, 2); } @@ -83,9 +82,9 @@ module ol_framework::test_safe { // fund the account ol_account::transfer(alice, new_resource_address, 1000000); - let bal = gas_coin::get_balance(new_resource_address); + let (_, bal) = ol_account::balance(new_resource_address); mock::trigger_epoch(root); - let new_bal = gas_coin::get_balance(new_resource_address); + let (_, new_bal) = ol_account::balance(new_resource_address); assert!(new_bal < bal, 735701); } -} \ No newline at end of file +} diff --git a/framework/libra-framework/sources/ol_sources/vote_lib/donor_voice.move b/framework/libra-framework/sources/ol_sources/vote_lib/donor_voice.move index cae159bf7..8a2ed1432 100644 --- a/framework/libra-framework/sources/ol_sources/vote_lib/donor_voice.move +++ b/framework/libra-framework/sources/ol_sources/vote_lib/donor_voice.move @@ -34,14 +34,15 @@ /// 7. Third party contracts can wrap the Donor Voice wallet. The outcomes of the votes can be returned to a handler in a third party contract For example, liquidiation of a frozen account is programmable: a handler can be coded to determine the outcome of the Donor Voice wallet. See in CommunityWallets the funds return to the InfrastructureEscrow side-account of the user. module ol_framework::donor_voice { - use diem_framework::system_addresses; use std::vector; use std::signer; use std::error; use std::guid; use std::fixed_point32; - use ol_framework::epoch_helper; use std::option::{Self, Option}; + use diem_framework::system_addresses; + use diem_framework::coin; + use ol_framework::epoch_helper; use ol_framework::ol_account; use ol_framework::receipts; use ol_framework::multi_action; @@ -51,6 +52,7 @@ module ol_framework::donor_voice { use ol_framework::cumulative_deposits; use ol_framework::transaction_fee; use ol_framework::match_index; + // use diem_std::debug::print; friend ol_framework::community_wallet; @@ -391,9 +393,23 @@ module ol_framework::donor_voice { // Note the VM can do this without the WithdrawCapability expected_amount = expected_amount + t.tx.value; - let (amount_transferred, _success) = ol_account::vm_transfer(vm, multisig_address, t.tx.payee, t.tx.value); - amount_processed = amount_processed + amount_transferred; + // if the account is a community wallet, then we assume + // the transfers will be locked. + let coin_opt = ol_account::vm_withdraw_unlimited(vm, multisig_address, + t.tx.value); + let amount_transferred = 0; + // TBD: transfers from DV which are not CW + // There's a circular dependency with CW which + // prevents from making a switch case here. + if (option::is_some(&coin_opt)) { + let c = option::extract(&mut coin_opt); + amount_transferred = coin::value(&c); + ol_account::vm_deposit_coins_locked(vm, t.tx.payee, c); + }; + option::destroy_none(coin_opt); + + amount_processed = amount_processed + amount_transferred; // update the records vector::push_back(&mut state.paid, t); @@ -631,19 +647,21 @@ module ol_framework::donor_voice { while (k < len) { let addr = vector::borrow(&pro_rata_addresses, k); let amount = vector::borrow(&pro_rata_amounts, k); - if (is_liquidate_to_match_index(multisig_address)) { - let coin_opt = ol_account::vm_withdraw_unlimited(vm, multisig_address, *amount); - if (option::is_some(&coin_opt)) { - let c = option::extract(&mut coin_opt); + // in the case of community wallets where it gets + // liquidated to the matching index + let coin_opt = ol_account::vm_withdraw_unlimited(vm, multisig_address, *amount); + if (option::is_some(&coin_opt)) { + let c = option::extract(&mut coin_opt); + if (is_liquidate_to_match_index(multisig_address)) { match_index::match_and_recycle(vm, &mut c); option::fill(&mut coin_opt, c); + } else { + // in the ordinary case, where it goes back to the donors + ol_account::vm_deposit_coins_locked(vm, *addr, c); }; - option::destroy_none(coin_opt); - - } else { - ol_account::vm_transfer(vm, multisig_address, *addr, *amount); }; + option::destroy_none(coin_opt); k = k + 1; }; }; @@ -827,4 +845,4 @@ module ol_framework::donor_voice { public entry fun vote_liquidation_tx(donor: &signer, multisig_address: address) acquires Freeze, Registry { liquidation_handler(donor, multisig_address); } -} \ No newline at end of file +} diff --git a/framework/releases/head.mrb b/framework/releases/head.mrb index c48254c8c88265846e886fe5d385b21b03e5dfed..0479363fb821406551173971638828da23aeeb9b 100644 GIT binary patch delta 87492 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

)EZub;k@-y>|?nn}|RS*n)c8|?v0GY3MifJ3gw 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 delta 86197 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 JXUa_#{|5 anyhow::Result { let res = client - .view_ext("0x1::slow_wallet::balance", None, Some(address.to_string())) + .view_ext("0x1::ol_account::balance", None, Some(address.to_string())) .await?; let move_tuple = serde_json::from_value::>(res)?; diff --git a/tools/query/src/account_queries.rs b/tools/query/src/account_queries.rs index 21891a3cd..94490a097 100644 --- a/tools/query/src/account_queries.rs +++ b/tools/query/src/account_queries.rs @@ -13,7 +13,7 @@ pub async fn get_account_balance_libra( client: &Client, account: AccountAddress, ) -> anyhow::Result { - let slow_balance_id = entry_function_id("slow_wallet", "balance")?; + let slow_balance_id = entry_function_id("ol_account", "balance")?; let request = ViewRequest { function: slow_balance_id, type_arguments: vec![], diff --git a/tools/query/src/query_type.rs b/tools/query/src/query_type.rs index 7d79c2f83..125d1948f 100644 --- a/tools/query/src/query_type.rs +++ b/tools/query/src/query_type.rs @@ -50,7 +50,7 @@ pub enum QueryType { Function identifier has the form

:::: Example: - 0x1::coin::balance + 0x1::ol_account::balance "#} )] function_id: String,