Skip to content
  1. Mar 12, 2021
    • André Silva's avatar
      im-online: use EstimateNextSessionRotation to get better estimates of session progress (#8242) · 51822097
      André Silva authored
      * frame-support: add method to estimate current session progress
      
      * im-online: use EstimateNextSessionRotation trait to delay heartbeats
      
      * node: fix im-online pallet instantiation
      
      * frame-support: fix docs
      
      * frame: fix tests
      
      * pallet-session: last block of periodic session means 100% session progress
      
      * pallet-session: add test for periodic session progress
      
      * pallet-babe: fix epoch progress and add test
      
      * frame-support: return weight with session estimates
      
      * pallet-im-online: add test for session progress logic
      51822097
  2. Mar 11, 2021
    • Wei Tang's avatar
    • Peter Goodspeed-Niklaus's avatar
      Implement PJR checker (#8160) · 781f9087
      Peter Goodspeed-Niklaus authored
      
      
      * Apply.
      
      * get rid of glob import
      
      * use meaningful generic type name
      
      * pjr_check operates on `Supports` struct used elsewhere
      
      * improve algorithmic complexity of `prepare_pjr_input`
      
      * fix rustdoc warnings
      
      * improve module docs
      
      * typo
      
      * simplify debug assertion
      
      * add test finding the phase-change threshold value for a constructed scenario
      
      * add more threshold scenarios to disambiguate plausible interpretations
      
      * add link to npos paper reference
      
      * docs: staked_assignment -> supports
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * add utility method for generating npos inputs
      
      * add a fuzzer which asserts that all unbalanced seq_phragmen are PJR
      
      Note that this currently fails. I hope that this can be rectified
      by calculating the threshold instead of choosing some arbitrary number.
      
      * assert in all cases, not just debug
      
      * leverage a native solution to choose candidates
      
      * use existing helper methods
      
      * add pjr-check and incorporate into the fuzzer
      
      We should probably have one of the W3F people look at this to ensure
      we're not misconstruing any definitions, but this seems like a
      fairly straightforward implementation.
      
      * fix compilation errors
      
      * Enable manually setting iteration parameters in single run.
      
      This gives us the ability to reproducably extract cases where
      honggfuzz has discovered a panic. For example:
      
      $ cargo run --release --bin phragmen_pjr -- --candidates 569 --voters 100
      Tue 23 Feb 2021 11:23:39 AM CET
         Compiling bitflags v1.2.1
         Compiling unicode-width v0.1.8
         Compiling unicode-segmentation v1.7.1
         Compiling ansi_term v0.11.0
         Compiling strsim v0.8.0
         Compiling vec_map v0.8.2
         Compiling proc-macro-error-attr v1.0.4
         Compiling proc-macro-error v1.0.4
         Compiling textwrap v0.11.0
         Compiling atty v0.2.14
         Compiling heck v0.3.2
         Compiling clap v2.33.3
         Compiling structopt-derive v0.4.14
         Compiling structopt v0.3.21
         Compiling sp-npos-elections-fuzzer v2.0.0-alpha.5 (/home/coriolinus/Documents/Projects/paritytech/substrate/primitives/npos-elections/fuzzer)
          Finished release [optimized] target(s) in 6.15s
           Running `/home/coriolinus/Documents/Projects/paritytech/substrate/target/release/phragmen_pjr -c 569 -v 100`
      thread 'main' panicked at 'unbalanced sequential phragmen must satisfy PJR', primitives/npos-elections/fuzzer/src/phragmen_pjr.rs:133:5
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
      
      This is still not adequate proof that seq_phragmen is broken; it could
      very well be that our PJR checker is doing the wrong thing, or we've
      somehow missed a parameter of interest. Still, it's concerning.
      
      * update comment verbiage for accuracy
      
      * it is valid in PJR for an elected candidate to have 0 support
      
      * Fix phragmen_pjr fuzzer
      
      It turns out that the fundamental problem causing previous implementations
      of the fuzzer to fail wasn't in `seq_phragmen` _or_ in `pjr_check`: it was
      in the rounding errors introduced in the various conversions between the
      internal data representation and the external one.
      
      Fixing the fuzzer is then simply an issue of using the internal representation
      and staying in that representation. However, that leaves the issue that
      `seq_phragmen` occasionally produces an output which is technically not
      PJR due to rounding errors. In the future we will need to add some kind of
      "close-enough" threshold. However, that is explicitly out of scope of
      this PR.
      
      * restart ci; it appears to be stalled
      
      * use necessary import for no-std
      
      * use a more realistic distribution of voters and candidates
      
      This isn't ideal; more realistic numbers would be about twice these.
      However, either case generation or voting has nonlinear execution
      time, and doubling these values brings iteration time from ~20s to
      ~180s. Fuzzing 6x as fast should make up for fuzzing cases half the size.
      
      * identify specifically which PJR check may fail
      
      * move candidate collection comment into correct place
      
      * standard_threshold: use a calculation method which cannot overflow
      
      * Apply suggestions from code review (update comments)
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * clarify the effectiveness bounds for t-pjr check
      
      * how to spell "committee"
      
      * reorganize: high -> low abstraction
      
      * ensure standard threshold calc cannot panic
      
      Co-authored-by: default avatarKian Paimani <[email protected]>
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      
      Co-authored-by: default avatarkianenigma <[email protected]>
      Co-authored-by: default avatarKian Paimani <[email protected]>
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      781f9087
  3. Mar 01, 2021
    • Bastian Köcher's avatar
      Init `RuntimeLogger` automatically for each runtime api call (#8128) · 68390d40
      Bastian Köcher authored
      
      
      * Init `RuntimeLogger` automatically for each runtime api call
      
      This pr change the runtime api in such a way to always and automatically
      enable the `RuntimeLogger`. This enables the user to use `log` or
      `tracing` from inside the runtime to create log messages. As logging
      introduces some extra code and especially increases the size of the wasm
      blob. It is advised to disable all logging completely with
      `sp-api/disable-logging` when doing the wasm builds for the on-chain
      wasm runtime.
      
      Besides these changes, the pr also brings most of the logging found in
      frame to the same format "runtime::*".
      
      * Update frame/im-online/src/lib.rs
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Update test-utils/runtime/Cargo.toml
      
      * Fix test
      
      * Don't use tracing in the runtime, as we don't support it :D
      
      * Fixes
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      68390d40
  4. Feb 23, 2021
    • Kian Paimani's avatar
      Decouple Staking and Election - Part 2 Unsigned Phase (#7909) · 7205eea4
      Kian Paimani authored
      
      
      * Base features and traits.
      
      * pallet and unsigned phase
      
      * Undo bad formattings.
      
      * some formatting cleanup.
      
      * Small self-cleanup.
      
      * Make it all build
      
      * self-review
      
      * Some doc tests.
      
      * Some changes from other PR
      
      * Fix session test
      
      * Update Cargo.lock
      
      * Update frame/election-provider-multi-phase/src/lib.rs
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Some review comments
      
      * Rename + make encode/decode
      
      * Do an assert as well, just in case.
      
      * Fix build
      
      * Update frame/election-provider-multi-phase/src/unsigned.rs
      
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      
      * Las comment
      
      * fix staking fuzzer.
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * Add one last layer of feasibility check as well.
      
      * Last fixes to benchmarks
      
      * Some more docs.
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/election-provider-multi-phase/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * Some nits
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/staking/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * Fix doc
      
      * Mkae ci green
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      Co-authored-by: default avatarGuillaume Thiolliere <[email protected]>
      Co-authored-by: default avatarParity Benchmarking Bot <[email protected]>
      7205eea4
  5. Feb 22, 2021
  6. Jan 21, 2021
  7. Jan 20, 2021
  8. Jan 18, 2021
  9. Jan 16, 2021
  10. Jan 04, 2021
    • Bastian Köcher's avatar
      Happy new year (#7814) · e3e651f7
      Bastian Köcher authored
      * Happy new year
      
      Updates the copyright years and fixes wrong license headers.
      
      * Fix the template
      
      * Split HEADER into HEADER-APACHE & HEADER-GPL
      e3e651f7
  11. Dec 21, 2020
  12. Dec 14, 2020
  13. Dec 10, 2020
  14. Nov 30, 2020
  15. Nov 05, 2020
  16. Oct 27, 2020
    • Shawn Tabrizi's avatar
      New Weight Template + Organization (#7391) · e4cfb255
      Shawn Tabrizi authored
      
      
      * add_handlebar_template_to_benchmark
      
      - add benchmark-cli arg to take in a handlebar-template file
      
      * update to always use template
      
      * rewrite writer for handlebars
      
      * polish
      
      * pass cmd data
      
      * update docs
      
      * new weight layout
      
      * separate templates
      
      * support custom filename output
      
      * Update command.rs
      
      * Create frame-weight-template.hbs
      
      * use a vector to maintain benchmark order
      
      * bring back ()
      
      * fix tests
      
      * fix build
      
      * Custom string serializer, remove feature flag
      
      * temp
      
      * rename
      
      * nit
      
      * update docs
      
      * docs on public objects
      
      * small fix
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * remove long line
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_balances --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/balances/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=frame_system --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/system/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for system
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/staking/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for staking
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_identity --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/identity/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for identity and staking
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_collective --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/collective/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for collective
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_democracy --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/democracy/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for democracy
      
      * clean up zeros
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_elections_phragmen --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/elections-phragmen/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for elections phragmen
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_im_online --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/im-online/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for im online
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_indices --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/indices/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for indices
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_multisig --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/multisig/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for multisig
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_proxy --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/proxy/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for proxy
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_scheduler --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/scheduler/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for scheduler
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_session --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/session/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for session
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_timestamp --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/timestamp/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for timestamp
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_treasury --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/treasury/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for treasury
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_utility --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/utility/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for utility
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_vesting --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/vesting/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      * update for vesting
      
      * temp update
      
      * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_utility --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/utility/src/weights.rs --template=./.maintain/frame-weight-template.hbs
      
      Co-authored-by: default avatarEzadkiel Marbella <[email protected]>
      Co-authored-by: default avatarParity Benchmarking Bot <[email protected]>
      e4cfb255
  17. Oct 19, 2020
  18. Oct 08, 2020
  19. Oct 02, 2020
  20. Sep 23, 2020
    • Kian Paimani's avatar
      PhragMMS election. (#6685) · 313f86ec
      Kian Paimani authored
      
      
      * Revamp npos-elections and implement phragmms
      
      * Update primitives/npos-elections/src/phragmms.rs
      
      * Fix build
      
      * Some review grumbles
      
      * Add some stuff for remote testing
      
      * fix some of the grumbles.
      
      * Add remote testing stuff.
      
      * Cleanup
      
      * fix docs
      
      * Update primitives/arithmetic/src/rational.rs
      
      Co-authored-by: default avatarDan Forbes <[email protected]>
      
      * Small config change
      
      * Better handling of approval_stake == 0
      
      * Final touhces.
      
      * Clean fuzzer a bit
      
      * Clean fuzzer a bit
      
      * Update primitives/npos-elections/src/balancing.rs
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      
      * Fix fuzzer.
      
      * Better api for normalize
      
      * Add noramlize_up
      
      * A large number of small fixes.
      
      * make it merge ready
      
      * Fix warns
      
      * bump
      
      * Fix fuzzers a bit.
      
      * Fix warns as well.
      
      * Fix more tests.
      
      Co-authored-by: default avatarDan Forbes <[email protected]>
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      313f86ec
  21. Sep 16, 2020
    • Kian Paimani's avatar
      Move Staking Weights to T::WeightInfo (#7007) · 83bde4c1
      Kian Paimani authored
      
      
      * Fix the benchmarks
      
      * Migrate staking to weightInfo
      
      * Fix global benchmarks
      
      * re-calculate the submit solution weight.
      
      * Fix some refund.
      
      * Get rid of all the extra parameters.
      
      * Fix staking tests.
      
      * new values from the bench machine.
      
      * Fix some grumbles
      
      * better macro
      
      * Some better doc
      
      * Move to interpreted wasm
      
      * Make it work temporarily
      
      * Final fix of default ones.
      
      * Fix payout benchmarks
      
      * Fix payout stuff
      
      * One last fix
      
      * use benchmarking machine for numbers
      
      * update weight docs
      
      Co-authored-by: default avatarShawn Tabrizi <[email protected]>
      83bde4c1
  22. Sep 11, 2020
  23. Sep 09, 2020
    • Kian Paimani's avatar
      Make SlashingSpans Public (#6961) · c07bde8b
      Kian Paimani authored
      * Make SlashingSpans Public
      
      Offchain Applications will often need to inspect this type because it is directly used in staking election, thus worthy of being `pub`. Rest of the slashing api can remain private, only this and the `fn last_non_zero_slash()` of `SlashingSpans` are of interest.
      
      * Update frame/staking/src/lib.rs
      c07bde8b
  24. Aug 26, 2020
  25. Aug 13, 2020
  26. Aug 11, 2020
  27. Aug 10, 2020
  28. Aug 03, 2020
  29. Jul 29, 2020
  30. Jul 21, 2020
  31. Jul 20, 2020
  32. Jul 16, 2020
  33. Jul 08, 2020
    • Shawn Tabrizi's avatar
      Add `WeightInfo` to all pallets with benchmarks. (#6575) · 2302898b
      Shawn Tabrizi authored
      * Start adding weight info
      
      * More weightinfo
      
      * finish weight info
      
      * more fixes
      
      * inital update of node runtime
      
      * fix the rest of the compilation
      
      * update balances
      
      * add docs
      
      * fix balances tests
      
      * Fix more tests
      
      * Fix compile
      
      * Fix pallet-evm tests
      2302898b
  34. Jul 07, 2020
  35. Jul 06, 2020
  36. Jul 04, 2020
    • André Silva's avatar
      babe: report equivocations (#6362) · a9c21b8b
      André Silva authored
      * slots: create primitives crate for consensus slots
      
      * offences: add method to check if an offence is unknown
      
      * babe: initial equivocation reporting implementation
      
      * babe: organize imports
      
      * babe: working equivocation reporting
      
      * babe: add slot number to equivocation proof
      
      * session: move duplicate traits to session primitives
      
      * babe: move equivocation stuff to its own file
      
      * offences: fix test
      
      * session: don't have primitives depend on frame_support
      
      * babe: use opaque type for key owner proof
      
      * babe: cleanup client equivocation reporting
      
      * babe: cleanup equivocation code in pallet
      
      * babe: allow sending signed equivocation reports
      
      * node: fix compilation
      
      * fix test compilation
      
      * babe: return bool on check_equivocation_proof
      
      * babe: add test for equivocation reporting
      
      * babe: add more tests
      
      * babe: add test for validate unsigned
      
      * babe: take slot number in generate_key_ownership_proof API
      
      * babe: add benchmark for equivocation proof checking
      
      * session: add benchmark for membership proof checking
      
      * offences: fix babe benchmark
      
      * babe: add weights based on benchmark results
      
      * babe: adjust weights after benchmarking on reference hardware
      
      * babe: reorder checks in check_and_report_equivocation
      a9c21b8b
  37. Jun 25, 2020