NIS should retain funds in reserve (#12928)

* Keep funds with receipt holder

* Counterpart is optional

* Use named reserves

* Tests

* Benchmarks

* Fixes

* Update frame/nis/src/lib.rs

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Update frame/nis/src/lib.rs

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Update frame/nis/src/tests.rs

* Update frame/nis/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/nis/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/nis/src/lib.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Update frame/nis/src/lib.rs

* Formatting

Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
This commit is contained in:
Gavin Wood
2023-01-17 11:37:59 -03:00
committed by GitHub
parent 9f6ac763a7
commit cbcde28546
7 changed files with 826 additions and 307 deletions
+195 -121
View File
@@ -1,40 +1,31 @@
// This file is part of Substrate.
// Copyright (C) 2022 Parity Technologies (UK) Ltd.
// SPDX-License-Identifier: Apache-2.0
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! Autogenerated weights for pallet_nis
//!
//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
//! DATE: 2022-11-07, STEPS: `50`, REPEAT: 20, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! HOSTNAME: `bm2`, CPU: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`
//! DATE: 2022-12-15, STEPS: `5`, REPEAT: 2, LOW RANGE: `[]`, HIGH RANGE: `[]`
//! HOSTNAME: `Workhorse.local`, CPU: `<UNKNOWN>`
//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("dev"), DB CACHE: 1024
// Executed Command:
// ./target/production/substrate
// ../../../target/release/substrate
// benchmark
// pallet
// --chain=dev
// --steps=50
// --repeat=20
// --pallet=pallet_nis
// --extrinsic=*
// --chain
// dev
// --steps
// 5
// --repeat
// 2
// --pallet
// pallet_nis
// --extrinsic
// *
// --execution=wasm
// --wasm-execution=compiled
// --template=./.maintain/frame-weight-template.hbs
// --output=./frame/nis/src/weights.rs
// --output
// ../../../frame/nis/src/weights.rs
// --template
// ../../../.maintain/frame-weight-template.hbs
#![cfg_attr(rustfmt, rustfmt_skip)]
#![allow(unused_parens)]
@@ -48,8 +39,11 @@ pub trait WeightInfo {
fn place_bid(l: u32, ) -> Weight;
fn place_bid_max() -> Weight;
fn retract_bid(l: u32, ) -> Weight;
fn thaw() -> Weight;
fn fund_deficit() -> Weight;
fn thaw_private() -> Weight;
fn thaw_communal() -> Weight;
fn privatize() -> Weight;
fn communify() -> Weight;
fn process_queues() -> Weight;
fn process_queue() -> Weight;
fn process_bid() -> Weight;
@@ -59,143 +53,223 @@ pub trait WeightInfo {
pub struct SubstrateWeight<T>(PhantomData<T>);
impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
// Storage: Nis Queues (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
/// The range of component `l` is `[0, 999]`.
fn place_bid(l: u32, ) -> Weight {
// Minimum execution time: 42_332 nanoseconds.
Weight::from_ref_time(45_584_514 as u64)
// Standard Error: 129
.saturating_add(Weight::from_ref_time(45_727 as u64).saturating_mul(l as u64))
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
// Minimum execution time: 47_000 nanoseconds.
Weight::from_ref_time(53_822_030)
// Standard Error: 4_869
.saturating_add(Weight::from_ref_time(47_431).saturating_mul(l.into()))
.saturating_add(T::DbWeight::get().reads(3))
.saturating_add(T::DbWeight::get().writes(3))
}
// Storage: Nis Queues (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
fn place_bid_max() -> Weight {
// Minimum execution time: 85_866 nanoseconds.
Weight::from_ref_time(87_171_000 as u64)
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
// Minimum execution time: 109_000 nanoseconds.
Weight::from_ref_time(109_000_000)
.saturating_add(T::DbWeight::get().reads(3))
.saturating_add(T::DbWeight::get().writes(3))
}
// Storage: Nis Queues (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
/// The range of component `l` is `[1, 1000]`.
fn retract_bid(l: u32, ) -> Weight {
// Minimum execution time: 44_605 nanoseconds.
Weight::from_ref_time(46_850_108 as u64)
// Standard Error: 135
.saturating_add(Weight::from_ref_time(34_178 as u64).saturating_mul(l as u64))
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
// Minimum execution time: 50_000 nanoseconds.
Weight::from_ref_time(54_479_879)
// Standard Error: 4_891
.saturating_add(Weight::from_ref_time(38_224).saturating_mul(l.into()))
.saturating_add(T::DbWeight::get().reads(3))
.saturating_add(T::DbWeight::get().writes(3))
}
// Storage: Nis Active (r:1 w:1)
// Storage: Nis ActiveTotal (r:1 w:1)
fn thaw() -> Weight {
// Minimum execution time: 55_143 nanoseconds.
Weight::from_ref_time(55_845_000 as u64)
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
}
// Storage: Nis Active (r:1 w:1)
// Storage: Nis ActiveTotal (r:1 w:1)
// Storage: Nis Summary (r:1 w:0)
// Storage: System Account (r:1 w:1)
fn fund_deficit() -> Weight {
Weight::from_ref_time(47_753_000 as u64)
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
// Minimum execution time: 57_000 nanoseconds.
Weight::from_ref_time(62_000_000)
.saturating_add(T::DbWeight::get().reads(2))
.saturating_add(T::DbWeight::get().writes(1))
}
// Storage: Nis ActiveTotal (r:1 w:0)
// Storage: Nis Receipts (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: System Account (r:1 w:0)
// Storage: Balances Reserves (r:1 w:1)
fn thaw_private() -> Weight {
// Minimum execution time: 84_000 nanoseconds.
Weight::from_ref_time(85_000_000)
.saturating_add(T::DbWeight::get().reads(4))
.saturating_add(T::DbWeight::get().writes(3))
}
// Storage: Nis Receipts (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: Assets Asset (r:1 w:1)
// Storage: Assets Account (r:1 w:1)
// Storage: System Account (r:1 w:1)
fn thaw_communal() -> Weight {
// Minimum execution time: 108_000 nanoseconds.
Weight::from_ref_time(115_000_000)
.saturating_add(T::DbWeight::get().reads(5))
.saturating_add(T::DbWeight::get().writes(5))
}
// Storage: Nis Receipts (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: System Account (r:1 w:1)
// Storage: Assets Asset (r:1 w:1)
// Storage: Assets Account (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
fn privatize() -> Weight {
// Minimum execution time: 107_000 nanoseconds.
Weight::from_ref_time(110_000_000)
.saturating_add(T::DbWeight::get().reads(6))
.saturating_add(T::DbWeight::get().writes(6))
}
// Storage: Nis Receipts (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
// Storage: System Account (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: Assets Asset (r:1 w:1)
// Storage: Assets Account (r:1 w:1)
fn communify() -> Weight {
// Minimum execution time: 89_000 nanoseconds.
Weight::from_ref_time(89_000_000)
.saturating_add(T::DbWeight::get().reads(6))
.saturating_add(T::DbWeight::get().writes(6))
}
// Storage: Nis Summary (r:1 w:1)
// Storage: System Account (r:1 w:0)
// Storage: Nis QueueTotals (r:1 w:1)
fn process_queues() -> Weight {
Weight::from_ref_time(1_663_000 as u64)
.saturating_add(T::DbWeight::get().reads(1 as u64))
// Minimum execution time: 34_000 nanoseconds.
Weight::from_ref_time(38_000_000)
.saturating_add(T::DbWeight::get().reads(3))
.saturating_add(T::DbWeight::get().writes(2))
}
// Storage: Nis ActiveTotal (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
// Storage: Nis Queues (r:1 w:1)
// Storage: Nis Active (r:0 w:1)
fn process_queue() -> Weight {
Weight::from_ref_time(40_797_000 as u64)
// Standard Error: 1_000
.saturating_add(T::DbWeight::get().reads(3 as u64))
.saturating_add(T::DbWeight::get().writes(3 as u64))
// Minimum execution time: 6_000 nanoseconds.
Weight::from_ref_time(7_000_000)
.saturating_add(T::DbWeight::get().reads(1))
.saturating_add(T::DbWeight::get().writes(1))
}
// Storage: Nis ActiveTotal (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
// Storage: Nis Queues (r:1 w:1)
// Storage: Nis Active (r:0 w:1)
// Storage: Nis Receipts (r:0 w:1)
fn process_bid() -> Weight {
Weight::from_ref_time(14_944_000 as u64)
// Standard Error: 6_000
.saturating_add(T::DbWeight::get().reads(2 as u64))
.saturating_add(T::DbWeight::get().writes(2 as u64))
// Minimum execution time: 14_000 nanoseconds.
Weight::from_ref_time(15_000_000)
.saturating_add(T::DbWeight::get().writes(1))
}
}
// For backwards compatibility and tests
impl WeightInfo for () {
// Storage: Nis Queues (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
/// The range of component `l` is `[0, 999]`.
fn place_bid(l: u32, ) -> Weight {
// Minimum execution time: 42_332 nanoseconds.
Weight::from_ref_time(45_584_514 as u64)
// Standard Error: 129
.saturating_add(Weight::from_ref_time(45_727 as u64).saturating_mul(l as u64))
.saturating_add(RocksDbWeight::get().reads(2 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
// Minimum execution time: 47_000 nanoseconds.
Weight::from_ref_time(53_822_030)
// Standard Error: 4_869
.saturating_add(Weight::from_ref_time(47_431).saturating_mul(l.into()))
.saturating_add(RocksDbWeight::get().reads(3))
.saturating_add(RocksDbWeight::get().writes(3))
}
// Storage: Nis Queues (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
fn place_bid_max() -> Weight {
// Minimum execution time: 85_866 nanoseconds.
Weight::from_ref_time(87_171_000 as u64)
.saturating_add(RocksDbWeight::get().reads(2 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
// Minimum execution time: 109_000 nanoseconds.
Weight::from_ref_time(109_000_000)
.saturating_add(RocksDbWeight::get().reads(3))
.saturating_add(RocksDbWeight::get().writes(3))
}
// Storage: Nis Queues (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
/// The range of component `l` is `[1, 1000]`.
fn retract_bid(l: u32, ) -> Weight {
// Minimum execution time: 44_605 nanoseconds.
Weight::from_ref_time(46_850_108 as u64)
// Standard Error: 135
.saturating_add(Weight::from_ref_time(34_178 as u64).saturating_mul(l as u64))
.saturating_add(RocksDbWeight::get().reads(2 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
// Minimum execution time: 50_000 nanoseconds.
Weight::from_ref_time(54_479_879)
// Standard Error: 4_891
.saturating_add(Weight::from_ref_time(38_224).saturating_mul(l.into()))
.saturating_add(RocksDbWeight::get().reads(3))
.saturating_add(RocksDbWeight::get().writes(3))
}
// Storage: Nis Active (r:1 w:1)
// Storage: Nis ActiveTotal (r:1 w:1)
fn thaw() -> Weight {
// Minimum execution time: 55_143 nanoseconds.
Weight::from_ref_time(55_845_000 as u64)
.saturating_add(RocksDbWeight::get().reads(2 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
}
// Storage: Nis Active (r:1 w:1)
// Storage: Nis ActiveTotal (r:1 w:1)
// Storage: Nis Summary (r:1 w:0)
// Storage: System Account (r:1 w:1)
fn fund_deficit() -> Weight {
Weight::from_ref_time(47_753_000 as u64)
.saturating_add(RocksDbWeight::get().reads(2 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
// Minimum execution time: 57_000 nanoseconds.
Weight::from_ref_time(62_000_000)
.saturating_add(RocksDbWeight::get().reads(2))
.saturating_add(RocksDbWeight::get().writes(1))
}
// Storage: Nis ActiveTotal (r:1 w:0)
// Storage: Nis Receipts (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: System Account (r:1 w:0)
// Storage: Balances Reserves (r:1 w:1)
fn thaw_private() -> Weight {
// Minimum execution time: 84_000 nanoseconds.
Weight::from_ref_time(85_000_000)
.saturating_add(RocksDbWeight::get().reads(4))
.saturating_add(RocksDbWeight::get().writes(3))
}
// Storage: Nis Receipts (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: Assets Asset (r:1 w:1)
// Storage: Assets Account (r:1 w:1)
// Storage: System Account (r:1 w:1)
fn thaw_communal() -> Weight {
// Minimum execution time: 108_000 nanoseconds.
Weight::from_ref_time(115_000_000)
.saturating_add(RocksDbWeight::get().reads(5))
.saturating_add(RocksDbWeight::get().writes(5))
}
// Storage: Nis Receipts (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: System Account (r:1 w:1)
// Storage: Assets Asset (r:1 w:1)
// Storage: Assets Account (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
fn privatize() -> Weight {
// Minimum execution time: 107_000 nanoseconds.
Weight::from_ref_time(110_000_000)
.saturating_add(RocksDbWeight::get().reads(6))
.saturating_add(RocksDbWeight::get().writes(6))
}
// Storage: Nis Receipts (r:1 w:1)
// Storage: Balances Reserves (r:1 w:1)
// Storage: System Account (r:1 w:1)
// Storage: Nis Summary (r:1 w:1)
// Storage: Assets Asset (r:1 w:1)
// Storage: Assets Account (r:1 w:1)
fn communify() -> Weight {
// Minimum execution time: 89_000 nanoseconds.
Weight::from_ref_time(89_000_000)
.saturating_add(RocksDbWeight::get().reads(6))
.saturating_add(RocksDbWeight::get().writes(6))
}
// Storage: Nis Summary (r:1 w:1)
// Storage: System Account (r:1 w:0)
// Storage: Nis QueueTotals (r:1 w:1)
fn process_queues() -> Weight {
Weight::from_ref_time(1_663_000 as u64)
.saturating_add(RocksDbWeight::get().reads(1 as u64))
// Minimum execution time: 34_000 nanoseconds.
Weight::from_ref_time(38_000_000)
.saturating_add(RocksDbWeight::get().reads(3))
.saturating_add(RocksDbWeight::get().writes(2))
}
// Storage: Nis ActiveTotal (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
// Storage: Nis Queues (r:1 w:1)
// Storage: Nis Active (r:0 w:1)
fn process_queue() -> Weight {
Weight::from_ref_time(40_797_000 as u64)
// Standard Error: 1_000
.saturating_add(RocksDbWeight::get().reads(3 as u64))
.saturating_add(RocksDbWeight::get().writes(3 as u64))
// Minimum execution time: 6_000 nanoseconds.
Weight::from_ref_time(7_000_000)
.saturating_add(RocksDbWeight::get().reads(1))
.saturating_add(RocksDbWeight::get().writes(1))
}
// Storage: Nis ActiveTotal (r:1 w:1)
// Storage: Nis QueueTotals (r:1 w:1)
// Storage: Nis Queues (r:1 w:1)
// Storage: Nis Active (r:0 w:1)
// Storage: Nis Receipts (r:0 w:1)
fn process_bid() -> Weight {
Weight::from_ref_time(14_944_000 as u64)
// Standard Error: 6_000
.saturating_add(RocksDbWeight::get().reads(2 as u64))
.saturating_add(RocksDbWeight::get().writes(2 as u64))
// Minimum execution time: 14_000 nanoseconds.
Weight::from_ref_time(15_000_000)
.saturating_add(RocksDbWeight::get().writes(1))
}
}