mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 19:21:13 +00:00
Consensus Engines Implementation: Aura (#911)
* Generalize BlockImport - move ImportBlock, BlockOrigin, ImportResult into shared sr-primitives - let Consensus provide and traits again - update consensus traits to latest development - implement traits on client::Client, test_client::TestClient - update RHD to use the new import_block API * Move ImportBlock into consensus-common * Send import notification in aura tests * Integrating aura into service * Make Signatures more generic * Aura Block Production with the given key * run aura on the thread pool * start at exact step start in aura * Add needed wasm blob, in leiu of better solutions. * Make API ids consistent with traits and bring upstream for sharing. * Add decrease_free_balance to Balances module * Encode `Metadata` once instead of two times * Bitops include xor * Upgrade key module. * Default pages to somewhat bigger. * Introduce upgrade key into node * Add `Created` event
This commit is contained in:
committed by
GitHub
parent
c0f7021427
commit
50adea6220
@@ -423,6 +423,23 @@ impl<T: Trait> Module<T> {
|
||||
Self::set_free_balance_creating(who, Self::free_balance(who) + value)
|
||||
}
|
||||
|
||||
/// Substrates `value` from the free balance of `who`. If the whole amount cannot be
|
||||
/// deducted, an error is returned.
|
||||
///
|
||||
/// NOTE: This assumes that the total stake remains unchanged after this operation. If
|
||||
/// you mean to actually burn value out of existence, then use `slash` instead.
|
||||
pub fn decrease_free_balance(
|
||||
who: &T::AccountId,
|
||||
value: T::Balance
|
||||
) -> result::Result<UpdateBalanceOutcome, &'static str> {
|
||||
T::EnsureAccountLiquid::ensure_account_liquid(who)?;
|
||||
let b = Self::free_balance(who);
|
||||
if b < value {
|
||||
return Err("account has too few funds")
|
||||
}
|
||||
Ok(Self::set_free_balance(who, b - value))
|
||||
}
|
||||
|
||||
/// Deducts up to `value` from the combined balance of `who`, preferring to deduct from the
|
||||
/// free balance. This function cannot fail.
|
||||
///
|
||||
|
||||
@@ -280,6 +280,17 @@ fn balance_transfer_works() {
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn balance_reduction_works() {
|
||||
with_externalities(&mut ExtBuilder::default().build(), || {
|
||||
Balances::set_free_balance(&1, 111);
|
||||
Balances::increase_total_stake_by(111);
|
||||
assert_ok!(Balances::decrease_free_balance(&1, 69).map(|_| ()));
|
||||
assert_eq!(Balances::total_balance(&1), 42);
|
||||
assert_noop!(Balances::decrease_free_balance(&1, 69).map(|_| ()), "account has too few funds");
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn reserving_balance_should_work() {
|
||||
with_externalities(&mut ExtBuilder::default().build(), || {
|
||||
|
||||
Reference in New Issue
Block a user