Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions frame/vesting/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,11 +190,13 @@ decl_module! {
///
/// # <weight>
/// - `O(1)`.
/// - One balance-lock operation.
/// - One storage read (codec `O(1)`) and up to one removal.
/// - One event.
/// - DbWeight: 2 Reads, 2 Writes
/// - Reads: Vesting Storage, Balances Locks, [Sender Account]
/// - Writes: Vesting Storage, Balances Locks, [Sender Account]
/// - Benchmark: 147.5 µs (min square analysis)
/// - Assuming less than 50 locks on any user, else we may want factor in number of locks.
/// # </weight>
#[weight = 0]
#[weight = 150_000_000 + T::DbWeight::get().reads_writes(2, 2)]
fn vest(origin) -> DispatchResult {
let who = ensure_signed(origin)?;
Self::update_lock(who)
Expand All @@ -211,12 +213,13 @@ decl_module! {
///
/// # <weight>
/// - `O(1)`.
/// - Up to one account lookup.
/// - One balance-lock operation.
/// - One storage read (codec `O(1)`) and up to one removal.
/// - One event.
/// - DbWeight: 3 Reads, 3 Writes
/// - Reads: Vesting Storage, Balances Locks, Target Account
/// - Writes: Vesting Storage, Balances Locks, Target Account
/// - Benchmark: 150.4 µs (min square analysis)
/// - Assuming less than 50 locks on any user, else we may want factor in number of locks.
/// # </weight>
#[weight = 0]
#[weight = 150_000_000 + T::DbWeight::get().reads_writes(3, 3)]
fn vest_other(origin, target: <T::Lookup as StaticLookup>::Source) -> DispatchResult {
ensure_signed(origin)?;
Self::update_lock(T::Lookup::lookup(target)?)
Expand All @@ -233,10 +236,14 @@ decl_module! {
/// Emits `VestingCreated`.
///
/// # <weight>
/// - Creates a new storage entry, but is protected by a minimum transfer
/// amount needed to succeed.
/// - `O(1)`.
/// - DbWeight: 3 Reads, 3 Writes
/// - Reads: Vesting Storage, Balances Locks, Target Account, [Sender Account]
/// - Writes: Vesting Storage, Balances Locks, Target Account, [Sender Account]
/// - Benchmark: 263 µs (min square analysis)
/// - Assuming less than 50 locks on any user, else we may want factor in number of locks.
/// # </weight>
#[weight = 1_000_000_000]
#[weight = 300_000_000 + T::DbWeight::get().reads_writes(3, 3)]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we have a rule of thumb for granularity or soundings? This, accurately, should have been around 260_000_000 or sth?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmarks are not that accurate to begin with, but yeah, rounding here is mostly just an opinion, as long as it does not extremely change the value.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmarks are not that accurate to begin with, but yeah, rounding here is mostly just an opinion, as long as it does not extremely change the value.

I am also taking into consideration the variability of locks. If this is a little bit larger, it is a little bit safer overall as more locks are introduced per user.

pub fn vested_transfer(
origin,
target: <T::Lookup as StaticLookup>::Source,
Expand Down