-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Fix wrong deposit amount in council voters. #2562
Conversation
Once released, I'll do another damage analysis and find the voter's who got affected by this bug (anyone who changed or removed their vote sine runtime 27) and find ways to refund them. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just wonder about https://github.com/paritytech/polkadot/pull/2562/files#r594340154
Otherwise looks good
bot merge |
Waiting for commit status. |
bot merge abort |
bot abort |
bot stop |
bot please stop |
Well, I think I can no longer stop the bot. Not a big deal. I wanted to add a further test as well, but it is fine. |
bot help |
Head SHA changed; merge aborted. |
bot merge |
Waiting for commit status. |
maybe you need to ask nicely. i.e. |
* Fix wrong deposit amount in council voters. * Fix some build * make it all compile.. so far. * Fix * break build * Okay fix it again
* master: Don't accept incoming connections for collators (#2644) Improve the logging (#2645) Update for the new substrate client API (#2570) integrate faster erasure code (#2608) Companion for #8372 (Replace 'Module' with 'Pallet' in construct_runtime macro) (#2629) Request based collation fetching (#2621) Companion for Substrate#8386 (#2634) Polkadot companion for Substrate PR #7640 (Store multiple Justifications per block) (#2358) yet another set of logging improvements (#2638) Reduce number of active leaves at startup (#2631) re benchmark (#2630) Fix wrong deposit amount in council voters. (#2562) Add /data symlink to Docker containers (#2627) Companion for sub/8176 (#2622) Remove TODO from substrate#2986 (#2628) update ring to 0.16.20 (#2626) New slots/auctions architecture (#2294) add tracing when no assignment in candidate selection (#2623) Backing and collator protocol traces including para-id (#2620) more diagnostic logs for approval-voting (#2618)
* ci: initial fuzzer job * erasure-coding: update fuzzer Cargo.lock * syntax fix * try this first * install honggfuzz deps * try not * try if else * try SIGINT * ignore hfuzz dirs * ??? * bash is growing on me * decouple builds from running * fix a typo * try copying dirs * fix indentation * try using absolute paths * another try * caching is not worth it * remove outdated needs * cleanup and add futher TODOs * Update .github/workflows/honggfuzz.yml * more diagnostic logs for approval-voting (#2618) * Backing and collator protocol traces including para-id (#2620) * improve backing/provisioner spans * span for collation requests * add para_id to unbacked candidate spans * differentiate validation-construction and find-assignment in selection * better find-assignment spans * organize unbacked-candidate spans directly under job root * Update node/core/provisioner/src/lib.rs Co-authored-by: Andronik Ordian <[email protected]> Co-authored-by: Andronik Ordian <[email protected]> * add tracing when no assignment in candidate selection (#2623) * New slots/auctions architecture (#2294) * TODOs * Add auctions.rs, comment on changes needed. * Remove cruft from slots * Remove more from auctions.rs * More logic drafting in slots. * More logic in slots.rs * patch some errors * more fixes * last nit * Cleanups in slots.rs * Cleanups in slots.rs * patches * make build * crowdloan to new api * auction compile * Use ParaId instead of FundIndex in Crowdloan (#2303) * use paraid instead of fundindex * Update crowdloan.rs * check caller is manager * Auction tests and fix build warnings. * Configurable origin for initiating auctions * Remove on_finalize * #2303 (manual merge) * Tests for Slots * some registrar tests * Apply suggestions from code review Co-authored-by: Guillaume Thiolliere <[email protected]> * Update runtime/common/src/slots.rs Co-authored-by: Guillaume Thiolliere <[email protected]> * Slots uses Registrar for CurrentChains * swap works test * on swap impl * traitify parachain cleanup * explicit lifecycle tracking for paras * initial implementation of lifecycles and upgrades * clean up a bit * Update runtime/common/src/slots.rs Co-authored-by: Guillaume Thiolliere <[email protected]> * fix doc comment * more rigid lifecycle checks * include paras which are transitioning, and lifecycle query * format guide * update api * update guide * explicit outgoing state, fix genesis * handle outgoing with transitioning paras * Revert "explicit lifecycle tracking for paras" This reverts commit 4177af7. * remove lifecycle tracking from registrar * do not include transitioning paras in identifier * Update paras_registrar.rs * final patches to registrar * Fix test * use noop in test * clean up pending swap on deregistration * finish registrar tests * Update roadmap/implementers-guide/src/runtime/paras.md * Update roadmap/implementers-guide/src/runtime/paras.md * Update roadmap/implementers-guide/src/runtime/paras.md * Apply suggestions from code review * Use matches macro * Correct terms * Apply suggestions from code review * Remove direct need for Slots and Registrar from Crowdloan * Rejig things slightly * actions queue * Revert "actions queue" This reverts commit b2e9011. * Traitify Auction interface. * Mockups and initial code for Crowdloan testing * One test... * collapse onboarding state * fix some crowdloan tests * one more * start benchmarks for auctions * benchmark bid * fix more crowdloan tests * onboard and begin retirement no longer exist * Revert "onboard and begin retirement no longer exist" This reverts commit 2e100fd. * Simplify crowdloan and make it work. * Fixes * fix some * finish merge fixes * fix refund bug in auctions * Add traits to Registrar for tests and benchmarks * fix more auction benchmarks * Fix TestAuctioneer * finish crowdloan benchmarks * start setting up full integration tests * expand integration tests * finish basic integration test * add more integration tests * begin slots benchmarks * start paras registrar benchmarks * fix merge * fix tests * clean up paras registrar * remove println * remove outdated cleanup config * update benchmarks * Add WeightInfo * enable runtime-benchmarks feature flag * complete swap benchmark * add parachains and onboarding into westend * add benchmarks and genesis * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=auctions --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=slots --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * fix benchmark execution * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=crowdloan --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=paras_registrar --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * Use `new_raise_len` in crowdloan on_initialize * Update paras_registrar.rs * fix westend merge * impl on_swap for crowdloan * Check fund exists before create * update for crowdloan sig * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=crowdloan --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * slots on_initialize * use integration tests environment for benchmarks * fix hrmp event * auction on_initialize * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=auctions --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * fix storage name in auctions * add auction_index to winning data * winning data takes into account current auction index * remove println * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=auctions --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=slots --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * Revert "add auction_index to winning data" * PastRandomness. * Fixes * Use new randomness * fix use of randomness in auctions and runtime config * expose consts * fix auction test * add deposit per byte for para registration * basic swap integration test * make swap test more comprehensive * Add WinningVec for easier retrieval in the front-end. * clean up `WinningVec` at the end * Add event for when a new best bid comes in * Fix propagation of winners in ending period * fix benchmarks, refund weight in dissolve * fix unused * remove some TODOs * setup opaque keys for paras in westend * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=crowdloan --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * remove unused * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=auctions --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * back to regular runtime config * use saturating math where user input can be * better first slot check * Update runtime/common/src/claims.rs * update westend onswap impl Co-authored-by: Shawn Tabrizi <[email protected]> Co-authored-by: Guillaume Thiolliere <[email protected]> Co-authored-by: Parity Benchmarking Bot <[email protected]> * update ring to 0.16.20 (#2626) * Remove TODO from substrate#2986 (#2628) * Companion for sub/8176 (#2622) * Merge * Fixes * Fix build * remove dep. * undo dep. * upadte substrate * cargo run --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/ * Fix lock * revert lock; cargo update -p sp-io * from_rational_approx -> from_rational * Silence more warnings Co-authored-by: Gav Wood <[email protected]> Co-authored-by: Shawn Tabrizi <[email protected]> Co-authored-by: Parity Benchmarking Bot <[email protected]> * Add /data symlink to Docker containers (#2627) * add /data symlink to Docker * fix comments * Fix wrong deposit amount in council voters. (#2562) * Fix wrong deposit amount in council voters. * Fix some build * make it all compile.. so far. * Fix * break build * Okay fix it again * re benchmark (#2630) * Change something * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=westend-dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/westend/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=polkadot-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/polkadot/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=pallet_staking --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/ * cargo run --release --features=runtime-benchmarks -- benchmark --chain=kusama-dev --steps=50 --repeat=20 --pallet=pallet_election_provider_multi_phase --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --header=./file_header.txt --output=./runtime/kusama/src/weights/ Co-authored-by: Parity Benchmarking Bot <[email protected]> * Reduce number of active leaves at startup (#2631) Currently we will take all leaves and give that to the overseer on startup, but this is a bad idea when the finality is lagging for example. There can be many of unfinalized leaves, we don't even need to look at anymore. To solve this, the pr adds a maximum of 4 leaves we forward to the overseer and the pr also checks that we only pass uncles of the best block. * yet another set of logging improvements (#2638) * Polkadot companion for Substrate PR #7640 (Store multiple Justifications per block) (#2358) * service: update for substrate PR #7640 * update substrate * Add Pallet Babe to Integration Tests Runtime Co-authored-by: André Silva <[email protected]> Co-authored-by: Shawn Tabrizi <[email protected]> * Companion for Substrate#8386 (#2634) * Companion for Substrate#8386 paritytech/substrate#8386 * "Update Substrate" Co-authored-by: parity-processbot <> * Request based collation fetching (#2621) * Introduce collation fetching protocol also move to mod.rs * Allow `PeerId`s in requests to network bridge. * Fix availability distribution tests. * Move CompressedPoV to primitives. * Request based collator protocol: validator side - Missing: tests - Collator side - don't connect, if not connected * Fixes. * Basic request based collator side. * Minor fix on collator side. * Don't connect in requests in collation protocol. Also some cleanup. * Fix PoV distribution * Bump substrate * Add back metrics + whitespace fixes. * Add back missing spans. * More cleanup. * Guide update. * Fix tests * Handle results in tests. * Fix weird compilation issue. * Add missing ) * Get rid of dead code. * Get rid of redundant import. * Fix runtime build. * Cleanup. * Fix wasm build. * Format fixes. Thanks @andronik ! * Companion for #8372 (Replace 'Module' with 'Pallet' in construct_runtime macro) (#2629) * Replace 'Module' with 'Pallet'. * "Update Substrate" * fix babe usage * fix benchmark Co-authored-by: parity-processbot <> Co-authored-by: thiolliere <[email protected]> * integrate faster erasure code (#2608) Breaks compatibility for distributing PoV and PersistentValidationData between validators. Ref #2442 * Update for the new substrate client API (#2570) * Update for the new substrate client API * Code review suggestions * Update substrate * Improve the logging (#2645) * Don't accept incoming connections for collators (#2644) * Don't accept incoming connections for collators on the `Collation` peer set. * Better docs. * fix reconstruct fuzzer name * make script more robust * REVERTME: test run * REVERTME: test run II * Revert "REVERTME: test run II" This reverts commit 58375df. * Revert "REVERTME: test run" This reverts commit 9759cb6. Co-authored-by: Robert Habermeier <[email protected]> Co-authored-by: Gavin Wood <[email protected]> Co-authored-by: Shawn Tabrizi <[email protected]> Co-authored-by: Guillaume Thiolliere <[email protected]> Co-authored-by: Parity Benchmarking Bot <[email protected]> Co-authored-by: Kian Paimani <[email protected]> Co-authored-by: Martin Pugh <[email protected]> Co-authored-by: Bastian Köcher <[email protected]> Co-authored-by: Jon Häggblad <[email protected]> Co-authored-by: André Silva <[email protected]> Co-authored-by: Robert Klotzner <[email protected]> Co-authored-by: Shaun Wang <[email protected]> Co-authored-by: Bernhard Schuster <[email protected]> Co-authored-by: Arkadiy Paronyan <[email protected]>
More description of what went wrong: In runtime 28 (first release containing the faulty #1719), we wrote a wrong deposit amount in This is problematic for two reasons:
In runtime 30 we partially fixed this. We iterated over all voters, and if any of them had 50 milli-DOTs recorded as deposit, we changed it to 5 DOTs. This means that:
An easy way to approach all the above would be to check this: If you submitted either of I will conduct an experiment to make a list of accounts affected, with the amount of funds that they have mistakenly locked in their reserved balance. Any other community member who likes to replicate this and cross-check their results with mine, I'd be happy to vouch for an on-chain tip in return ;) |
We found 189 extrinsics of type ElectionsPhragmen.vote for polkadot runtimes 28, 29 & 30. Data set here: https://gist.github.com/emielvanderhoek/0a6cf51393e8d22de364b777f98cd453 Please note we have not looked at nested calls, like: batches, proxies, multisig & schedules. These could theoretically have triggered council election votes too. Lmk if this helps. |
Updated gist: https://gist.github.com/emielvanderhoek/0a6cf51393e8d22de364b777f98cd453 We found 49 successfully executed extrinsics of type ElectionsPhragmen.vote for polkadot runtimes 28, 29 & 30. |
Hi @kianenigma, I'd be happy to contribute, but as far I can digest, we will need to check those two types of actions related to voting. Am I correct? |
My description above is pretty clear about what we are looking for, can you tell me exactly which part of it you don't understand, or need help with? Note that I have done an analysis myself and don't want to push you too much in the direction of replicating what I did. Instead, Ideally, I want someone else to come up with a different way of doing the analysis independently. |
As pointed out correctly by @AurevoirXavier
In https://github.com/paritytech/polkadot/pull/1719/files#diff-e5e76e02c0d16e79c70b024cbe3c6ea56f3249382a0f987ba203c34fcb40ed66 we made a mistake and passed in an incorrect value (5 CENT) as the old voting bond to the migration, instead of the correct value, 5 DOLLARs.
Thus, currently all council voters have 50 milli-dots in deposit recorded for them, whereas it should be 5 DOTs.