Skip to content

Review boosting code for to plan implementation of committed boosting #2428

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 903 commits into from
Jun 3, 2025

Conversation

JoeCap08055
Copy link
Collaborator

Goal

This is a dummy PR to facilitate async paired review of Provider Boosting code, in preparation for a new feature implementation

enddynayn and others added 30 commits November 1, 2023 09:27
The goal of this PR is to upgrade from v1.0.0 to v1.1.0.

Benchmarks updated for custom pallets and overhead.

References
- [Polkadot
Forum](https://forum.polkadot.network/t/polkadot-release-analysis-v1-1-0/3988)
- [Release
Notes](https://github.com/paritytech/polkadot-sdk/releases/tag/polkadot-v1.1.0)

Closes Issue #1687

Co-authored-by: Enddy Dumbrique <[email protected]>
Co-authored-by: Matthew Orris <[email protected]>
# Goal
The goal of this PR is enable `engine_createBlock` for Interval Sealing
mode.

Effectively it uses the should make empty block coming down the command
instead of making a special exception for interval sealing.

Note: This does reduce the logs in other modes when `engine_createBlock`
is called with not making an empty block and no transactions are in the
pool.
# Goal
The goal of this PR is to improve the e2e tests.

NOTE: Parallel testing locally is still flaky. Another PR coming, but
wanted to keep these separate for readability

Part of #1731 

# Discussion
- Big Change: `signAndSend` now returns a correctly typed object!
- This leads to a large number of basically the same change all over.
- the default event (previously the `response[0]` field) now is typed,
so no need to use `is` everywhere
- Using `?` (`result?.data.msaId` for example) allows for a nice
handling of the default event data
- Using `!` (`result!.data.msaId` for example) allows for a nice
throwing of the default event data when we expect it, but don't have it.
(fine for tests)
- A few small cleanups like removing unused imports
- Additional helpful comments
- Fixing an issue with handles test not being able to run more than 90
times in a row
…l review (#1752)

# Goal
The goal of this PR is clean up a few issues from the polkadot v1.1.0
upgrade.

 # Discussion
- [x] Remove `RUSTSEC-2022-0093` from `.cargo-deny.toml`.
- [x] Add `w3f` to `[sources.allow-org]` to eliminate some warnings.
- [x] Remove `substrate-wasm-builder` from `[build-dependencies]` in
`runtime/common/Cargo.toml`

# Checklist
- [ ] Chain spec updated
- [ ] Custom RPC OR Runtime API added/changed? Updated js/api-augment.
- [ ] Design doc(s) updated
- [ ] Tests added
- [ ] Benchmarks added
- [ ] Weights updated
# Goal
The goal of this PR is a small set of improvements:

- Update e2e readme
- Add additional debug logging defaults to the init.sh script for
instant and interval sealing
- Add a interval param to the interval sealing init.sh runner
- Add serial run mode for e2e tests

Part of #1731
# Goal
The goal of this PR is another pile of small e2e fixes and cleanups

Part of #1731 

# Discussion
- Correctly name time release test
- Move some msa tests into a separate file
- Staking calls should always use `signAndSend`
- Test handles for > 90 runs by using a random number generator
- createMsa helper and using it for creating un-permissioned MSAs
- Replace the rxjs with the apiPromise for rpc and state queries because
they are faster and more reliable
- getCapacity and DrainCapacity Improvements and cleanups
- Serialize BigInts for Mocha (as sometimes it needs to serialize it)
# Goal
The goal of this PR is to make nonce management easy inside of e2e
tests.

This does it via a module that caches and then keeps a local state up. 

Part of #1731 

# Discussion
- RPC errors will NOT increment nonces, so those must use the `current`
option
- Also split up some of the handles tests to make this easier
- Made sure everything was using `function ()` instead of `() =>` for
mocha
# Goal
The goal of this PR is to fix the bug with calling `StakingAccountDetails#withdraw` with more than what is in
`self.active`.

Closes #1768
# Goal
The goal of this PR is the final misc pieces of getting the e2e tests
less flaky. Does this fix all of it? No. Most? Yes.

Closes #1731 

# Discussion
- Correct batch error asserting
- Ids used as "bad" should use close to the max
- Use Immortal Eras due to issues with speed and
[AncientBirthBlock](https://substrate.stackexchange.com/questions/10411/fast-block-production-causes-mortality-checking-failing-with-ancientbirthblock)
- Cleanup before funding
- Move assertAddNewKey
- Add new assertHasMessage
# Goal
The goal of this PR is to get e2e tests under formatting and eslint
control.

Closes #1764
# Goal
The goal of this PR is to propose and implement messages v2 compatible
with PoV

Closes #198 

# Discussion
- Refactored Messages to minimize used PoV
- Added storage migration (single block)

# Migration Details
- Based on data used in rococo and main-net and calculations we don't
need to do a multi-block migration. (only around 15%) of the block is
being used.
- Was not able to test with upgrading on local due to getting errors
when running relay nodes
- Was able to successfully run try-run-time cli tool against rococo

# Checklist
- [x] Chain spec updated
- [x] Design doc(s) updated
- [x] Tests added
- [x] Benchmarks added
- [x] Weights updated
# Goal
The goal of this PR is to fix GPG binary signing error in the release
workflow.

Closes #1774
# Goal
The goal of this PR is to split schemas and the model into 2 separate
storages so that we can limit the size of PoV being accessed from other
pallets.

Closes #1742 


# Checklist
- [x] Chain spec updated
- [x] Design doc(s) updated
- [x] Tests added
- [x] Benchmarks added
- [x] Weights updated

---------

Co-authored-by: Frequency CI [bot] <[email protected]>
…1777)

# Goal
The goal of this PR is to update CI publishing of Api-Augment on RC
releases.

Closes #1776
)

# Goal
The goal of this PR is to allow the use of interval sealing mode in CI
pipelines using GitHub workflows.

The following considerations were taken into account:
* Since GitHub workflows do not allow overriding the `CMD` of a Docker
image, and overriding `ENTRYPOINT` in GitHub likewise does not allow for
passing arguments to the new entrypoint, the simplest option left is to
use environment variables.
* Since it was deemed undesirable to modify the frequency binary itself
to honor environment variables, the approach taken was to create a new
image, `frequencychain/standalone-node`. The `ENTRYPOINT` of the image
is a shell script instead of the `frequency` binary directly. The shell
script takes into account the following variables:
    * `SEALING_MODE`: `instant`, `interval`, or `manual`
* `SEALING_INTERVAL`: number of seconds between blocks in `interval`
sealing mode
* `CREATE_EMPTY_BLOCKS`: `true` means pass
`--sealing-create-empty-blocks` to allow interval sealing mode to form
empty blocks as in a live chain.

Additional arguments passed to the script are passed through to the
underlying `frequency` command-line, just as the `CMD` parameter in the
old image. Existing use cases of this image should therefore be
unaffected.
* The existing `frequencychain/instant-seal-node` image is now
deprecated and will eventually be discontinued/removed.

Closes #1780 

# Discussion
<!-- List discussion items -->

# Checklist
- [x] Doc(s) updated
- [x] Tested new image for all sealing modes: `instant`, `interval`,
`manual`

---------

Co-authored-by: Wil Wade <[email protected]>
# Goal
Refactor cargo crate dependencies into
the workspace. This facilitates updating
Polkadot versions.

issue  #1751

Co-authored-by: Enddy Dumbrique <[email protected]>
# Goal
The goal of this PR is to evaluate and minimize PoV consumption by
`stateful-storage` pallet.

Closes #1782 

# Discussion
- refactored benchmarks to calculate the max of time and PoV
- decreased `additional-trie-layers` number
- decreased `MaxItemizedPageSizeBytes ` from 64KiB to around 10KiB (will
allow around 292 of 32 bytes itemized public keys)

# Improvements
- by applying mentioned changes the PoV for `apply_item_actions` got
reduced from **45KB** to **15KB**
- by applying mentioned changes the PoV for `upsert` and `delete` pages
got reduced from **12KB** to **6KB**

# Future improvements
- by using PoV clawback we can further reduce the PoV sizes. A
[PR](paritytech/polkadot-sdk#1462) to track

# Checklist
- [x] Benchmarks added
- [x] Weights updated

---------

Co-authored-by: Frequency CI [bot] <[email protected]>
Co-authored-by: Wil Wade <[email protected]>
 separate unstaking unlock chunks into their own storage and do a storage migration which includes staking type, for
convenience of the planned Provider Boost feature so that another storage migration is not needed for that feature.
# Goal
The goal of this PR is to add support for schema names and versions.

Closes #1693

# Design
Storing the names in a map such that names are the key and points to the
list of different versions and their schema ids for that name
 
![SchemaNames
drawio](https://github.com/LibertyDSNP/frequency/assets/9152501/e4ccea6c-df6a-48fd-bd4a-f6148e0a620b)

# what is added?
- added new storage `SchemaNameToIds` which allows getting schema ids
and versions from a schema name
- added new `create_schema_v3`, `propose_to_create_schema_v2` and
`create_schema_via_governance_v2` extrinsics which support adding an
optional name during creation
- added new `propose_to_create_schema_name` and
`create_schema_name_via_governance` to assign a name to an schema
without a name
- Added migration to assign dsnp schema names to well-known schemas in
rococo and mainnet
- Added an RPC which returns the versions and schema ids for a certain
schema name or namespace

# name limitations
- only supporting ascii character of [a-z] [A-Z] or -
- name format is : `<namespace>.<descriptor>`
- namespace min size 3 characters
- descriptor min size is 1 character
- name max size 32 characters
- namespace must not start or end with -
- descriptor must not start or end with -

# Checklist
- [x] Chain spec updated
- [X] Custom RPC OR Runtime API added/changed? Updated js/api-augment.
- [X] Tests added
- [X] Benchmarks added
- [X] Weights updated

---------

Co-authored-by: Frequency CI [bot] <[email protected]>
# Goal
The goal of this PR is to create a document to guide the public about
how and what to report as a security vulnerability.

Closes #559 

# Discussions
- Should we put anything about bounty program even though it's not
ready?
- How about any legal stuff?

# Checklist
- [x] Doc(s) updated
- [x] PGP key generated
# Goal
The goal of this PR is to get Code Coverage results reporting using the
internal runners (faster, and more consistent results).

Result:
https://app.codecov.io/gh/LibertyDSNP/frequency/tree/ci-update%2Fcode-cov-grcov/

# Discussion
- grcov reads the results a bit different than llvm-cov, but llvm cov
was always running out of memory
- Lots of exclusions to get better results, but most of them are the
same as from llvm-cov
# Goal
The goal of this PR is to change some schema names based on
recommendations from dsnp foundation.

Related to #1693 

# Discussion
- renamed `dsnp.public-key` to `dsnp.public-key-key-agreement`
# Goal
The goal of this PR is to allow increase of nonce for free transactions
on existing accounts

Closes #1766 

# Checklist
- [x] Test added
- [x] e2e tests updated
# Goal
The goal of this PR is to replace the `Currency` trait with the
`fungible` trait in the `capacity` pallet.

Closes #942 
Closes #1532 

# Discussion
The following Parity issues/PRs were used as references for changes:
[Deprecate Currency - PR
12951](paritytech/substrate#12951) (Explanation
of necessary changes.)
[FRAME: Move pallets over to use fungible
traits](paritytech/polkadot-sdk#226) (Issue to
track Parity's efforts to update their pallets.)
[pallet vesting / update to use
fungible](https://github.com/paritytech/polkadot-sdk/pull/1760/files)
(Example of some necessary changes.)
[Fungibles: migrate Democracy
pallet](paritytech/polkadot-sdk#1861) (Example
of storage migration for Locks->Freezes.)

# Changes
- `.cargo-deny.toml` Added "multiformats" for `cid` crate to fix
warning.
- `vscode/settings.json` Added script that sets up the source map for
the rust std library files for debugging.
-  `Cargo.lock` cargo updated.
-  `e2e/package-lock.json` npm updated.
-  Replaced traits as needed: Use `tokens::fungible::` 
    - `InspectFungible` for `balance()` and `reducible_balance()`
    - `InspectFreeze` for `balance_frozen()`
    - `Mutate` for `set_balance()`, `mint_into()`
    - `MutateFreeze` for `set_freeze()`, and `thaw()`
- Added `pub enum FreezeReason` to support `freezes`
- Updated error handling as `set_freeze()` and `thaw()` can fail, so
errors needed to be propagated.
- Updated pallets/mocks to set MaxFreezes to 2, one for Capacity, one for TimeRelease
- Updated runtime pallet configs to use BalancesMaxXXXXXs
- Updated tests with `.expect()` where `set_freeze()` or `thaw()` can
fail.
- `FreezeIdentifier` and `RuntimeFreezeReason` configured with defaults.
- Added v3 migration to Capacity.

# Storage Migrations
The value of `BalancesMaxFreezes` has been updated, which will impact
the storage of the Balances pallet by changing `T::MaxFreezes`, see the
code here:
[substrate/frame/balances/src/lib.rs:480](https://github.com/paritytech/polkadot-sdk/blob/release-polkadot-v1.1.0/substrate/frame/balances/src/lib.rs#L480)

```rust
	/// Freeze locks on account balances.
	#[pallet::storage]
	pub type Freezes<T: Config<I>, I: 'static = ()> = StorageMap<
		_,
		Blake2_128Concat,
		T::AccountId,
		BoundedVec<IdAmount<T::FreezeIdentifier, T::Balance>, T::MaxFreezes>,
		ValueQuery,
	>;
```
The previous value of `T::MaxFreezes` was `0` so no data could be stored
in `Freezes`, therefore no storage migration for `Freezes` is needed for
this change. Even if there was data in storage, it would only need to be
migrated if `T::MaxFreezes` is *decreased*.

However, the current chain has data in `Locks` that needs to migrated to
`Freezes`. Testing has shown that these `Locks` will no longer be
accessible once the new traits are in place.

The `Balances` pallet is configured to store account data using the
`System` pallet. Therefore, these two pallets must be included when
using `try-runtime` for testing.

The migration for `Capacity` will access its storage to determine which
accounts have `Locks` that need to be translated to `Freezes`. Then, the
old `Currency` trait is used to remove the `Locks` and the new
`fungible` trait is used to set the `Freeze`.

# How to Review
- [ ] Read through [Deprecate Currency - PR
12951](paritytech/substrate#12951) to understand
context and check that Currency traits were properly replaced with
fungible traits.
- [ ] Check impact of changing to `set_freeze()` and `thaw()` which can
now fail and make sure all error states are propagated correctly without
possibility for `panic`
- [ ] Check if `balance()` is used correctly, or should be changed to
`reducible_balance()`. The calculations evaluating the Existential
Deposit (ED) have been updated and Parity comments indicate that
`reducible_balance()` is most likely the value needed.
- [ ] Ensure that the migration weights calculations are correct.
(Please let me know if you would like to walk through the migration code
path together).

# How to Test Runtime Migrations
[Install the CLI version of
try-runtime](https://paritytech.github.io/try-runtime-cli/try_runtime/#installation),
then run try-runtime to test the migration against Frequency Rococo:
```bash
cargo build --release --features frequency-rococo-testnet,try-runtime && \
try-runtime --runtime ./target/release/wbuild/frequency-runtime/frequency_runtime.wasm on-runtime-upgrade live --uri wss://rpc.rococo.frequency.xyz:443 -pallet  Capacity  --pallet Balances --pallet System
```
Alternatively, you can use the non-release version for faster compiles:
```bash
cargo build --features frequency-rococo-testnet,try-runtime && \
try-runtime --runtime ./target/debug/wbuild/frequency-runtime/frequency_runtime.wasm on-runtime-upgrade live --uri wss://rpc.rococo.frequency.xyz:443 -pallet  Capacity --pallet Balances --pallet System
```
You should see output like this:
```bash
[2023-12-16T17:03:57Z INFO  runtime::capacity] migrated 344
[2023-12-16T17:03:57Z INFO  runtime::capacity] migrated 345
[2023-12-16T17:03:57Z INFO  runtime::capacity] migrated 346
[2023-12-16T17:03:57Z INFO  runtime::capacity] migrated 347
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migration finished  
[2023-12-16T17:03:57Z INFO  runtime::capacity] Migration calculated weight = Weight { ref_time: 78200000000, proof_size: 0 }
[2023-12-16T17:03:57Z INFO  runtime::capacity] ✅ migration post_upgrade checks passed

// end of Capacity v2 migration, v3 migration follows

[2023-12-16T17:03:57Z INFO  runtime::capacity] Running pre_upgrade...
[2023-12-16T17:03:57Z INFO  runtime::capacity] Finish pre_upgrade for 347 records
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 Capacity Locks->Freezes migration started
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0xac4e66be328c4d235be27fcb0af8ccbe12dce375236f9ccc5516780522bc8870, amount:1500000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x3048b40a2e7185e510b695c7ba15f31218a1d4a501c6a71596e4f60317fc180f, amount:800000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x663ea97a6b40a51ed79f3328f9629423e5525c84bb178e63a854e4ce497fde25, amount:900000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x1488b10710285607257cbaa5f2ee273b50613358c50e443b8e43790ba7e15705, amount:900000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x283ac37222b6e34afb4b187e41e8e828c2e2d2b7f5bc027a2bf98eccbca76d47, amount:200000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x1a038c038ece2448a22096697a35905a98cc14138666432a1767142e67f76414, amount:900000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0xa848c35ccb975405ceec7d275d2cbbfe0df577f54a4e87caee5a4bf64f68ad01, amount:500000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x2aa39545e21212127c97ce1059988eb7f8dabe94f61e023bde1b85fd9625a638, amount:1000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x9404948a1b48c6818117f5803e5b868515fc88d1bcbd6fa27a1083089e5b5604, amount:900000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0xa0e340ec2c110a262b3f730c1cd333d52d6bb9fcb0b149bdd7216fb8cd4b2468, amount:100000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x28d9dadd32d1864fa4aa553a74ff82637acb131079bfec5b2777df7dea4a2e5d, amount:900000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0x4c54252a95ae9e334be70375d14d51d4d89a6ae2deeaf9ca47091d797f319620, amount:200000000
[2023-12-16T17:03:57Z INFO  runtime::capacity] 🔄 migrated account 0xe2133699b4fdc8444b98f9fddc7039374302a9a41e9ce53eafab113fd236c739, amount:200000000
```

The total weight calculated for the Capacity migration on testnet:
```bash
[2023-12-18T14:50:36Z INFO  runtime::capacity] total accounts migrated from locks to freezes: 347
[2023-12-18T14:50:36Z INFO  runtime::capacity] 🔄 Capacity Locks->Freezes migration finished
[2023-12-18T14:50:36Z INFO  runtime::capacity] Capacity Migration calculated weight = Weight { ref_time: 260375000000, proof_size: 0 }
[2023-12-18T14:50:36Z INFO  runtime::capacity] ✅ migration post_upgrade checks passed
```

The total weight calculated for the Capacity migration on main net:
```bash
[2023-12-18T14:57:04Z INFO  runtime::capacity] 🔄 Capacity Locks->Freezes migration finished
[2023-12-18T14:57:04Z INFO  runtime::capacity] Capacity Migration calculated weight = Weight { ref_time: 1625000000, proof_size: 0 }
[2023-12-18T14:57:04Z INFO  runtime::capacity] ✅ migration post_upgrade checks passed
```

# Upgrade Notes

1. `scripts/upgrade_accounts.py` should be executed to ensure that all
accounts have been upgraded before running the migration.

# Checklist
- [x] Chain spec updated
- [ ] Custom RPC OR Runtime API added/changed? Updated js/api-augment.
- [ ] Design doc(s) updated
- [x] Tests added
- [ ] Benchmarks added
- [x] Weights updated

---------

Co-authored-by: Matthew Orris <--help>
Co-authored-by: Enddy Dumbrique <[email protected]>
Co-authored-by: Frequency CI [bot] <[email protected]>
# Goal
The goal of this PR is to upgrade all the pages dependencies at once.

Replaces:
- #1821 
- #1820 
- #1804

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
# Goal
The goal of this PR is to fix the pre migration issue that somehow got
slipped into `main` branch.
An example of the error is the following:

```
2023-12-21 20:34:20 Running pre_upgrade...
2023-12-21 20:34:20 (key, value) failed to decode at [238, 198, 243, 193, 61, 38, 174, 37, 7, 201, 155, 103, 81, 225, 158, 118, 13, 72, 203, 53, 182, 108, 220, 238, 63, 151, 213, 0, 114, 204, 79, 216, 6, 164, 163, 214, 215, 161, 241, 20, 108, 0]: Error
2023-12-21 20:34:20 (key, value) failed to decode at [238, 198, 243, 193, 61, 38, 174, 37, 7, 201, 155, 103, 81, 225, 158, 118, 13, 72, 203, 53, 182, 108, 220, 238, 63, 151, 213, 0, 114, 204, 79, 216, 7, 99, 201, 131, 129, 220, 137, 171, 101, 0]: Error
[More with other at values]

```

Related to #1693 

# Discussion
<!-- List discussion items -->

# Checklist
- [X] try-runtime was updated

# verification
 The try-runtime works as expected

![Screenshot 2023-12-21 at 1 53 04
PM](https://github.com/LibertyDSNP/frequency/assets/9152501/48652d58-0a08-4133-bab3-4398fdbf999f)
# Goal
Issue #1801 reported that the local parachain wasn't making blocks when
following the directions for setting up a local relay chain.
`rococo-local.json`, the chain spec file used to setup the local relay
chain development environment was out of date with the recent versions
of the polkadot-sdk and needed to be updated.

Closes #1801 

# Checklist
- [ ] Chain spec updated
- [ ] Custom RPC OR Runtime API added/changed? Updated js/api-augment.
- [ ] Design doc(s) updated
- [ ] Tests added
- [ ] Benchmarks added
- [ ] Weights updated
# Goal
The goal of this PR is to fix errors related to StorageVersion when
running try-runtime

Closes #1826 

# Discussion
- Running try-runtime against mainnet takes hours so instead used the
following script which should have the same effect

`try-runtime --runtime
./target/release/wbuild/frequency-runtime/frequency_runtime.wasm
on-runtime-upgrade live --uri wss://1.rpc.frequency.xyz:443 --pallet
Capacity --pallet TimeRelease --pallet Balances --pallet System --pallet
Messages --pallet Preimage --pallet Democracy --pallet Scheduler
--pallet TransactionPayment --pallet Council --pallet TechnicalCommittee
--pallet Treasury --pallet CollatorSelection --pallet Multisig --pallet
FrequencyTxPayment --pallet Msa --pallet Messages --pallet
ParachainSystem`


# Verification on rococo

```
[2023-12-22T18:43:34Z INFO  runtime::schemas] Migration Calculated weights=Weight { ref_time: 375000000, proof_size: 0 }
[2023-12-22T18:43:34Z INFO  frequency_runtime] Setting version on pallet_preimage
[2023-12-22T18:43:34Z INFO  frequency_runtime] Setting version on pallet_democracy
[2023-12-22T18:43:34Z INFO  frequency_runtime] Setting version on pallet_scheduler
[2023-12-22T18:43:34Z INFO  frequency_runtime] Setting version on pallet_balances
[2023-12-22T18:43:34Z INFO  frequency_runtime] Setting version on pallet_collator_selection
[2023-12-22T18:43:34Z INFO  frequency_runtime] Setting version on pallet_multisig
[2023-12-22T18:43:34Z INFO  try-runtime::cli] PoV size (zstd-compressed compact proof): 56.2 KB. For parachains, it's your responsibility to verify that a PoV of this size fits within any relaychain constraints.
[2023-12-22T18:43:34Z INFO  try-runtime::cli] Consumed ref_time: 0.3397s (67.94% of max 0.5s)
[2023-12-22T18:43:34Z INFO  try-runtime::cli] ✅ TryRuntime_on_runtime_upgrade executed without errors or weight safety warnings. Please note this does not guarantee a successful runtime upgrade. Always test your runtime upgrade with recent state, and ensure that the weight usage of your migrations will not drastically differ between testing and actual on-chain execution.
```

# Verification on mainnet

```
[2023-12-22T18:30:34Z INFO  frequency_runtime] Setting version on pallet_preimage
[2023-12-22T18:30:34Z INFO  frequency_runtime] Setting version on pallet_democracy
[2023-12-22T18:30:34Z INFO  frequency_runtime] Setting version on pallet_scheduler
[2023-12-22T18:30:34Z INFO  frequency_runtime] Setting version on pallet_balances
[2023-12-22T18:30:34Z INFO  frequency_runtime] Setting version on pallet_collator_selection
[2023-12-22T18:30:34Z INFO  frequency_runtime] Setting version on pallet_multisig
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for System
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for ParachainSystem
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Timestamp
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for ParachainInfo
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Preimage
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Democracy
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Scheduler
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Utility
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Balances
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for TransactionPayment
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Council
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for TechnicalCommittee
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Treasury
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Authorship
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for CollatorSelection
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Session
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Aura
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for AuraExt
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Multisig
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for TimeRelease
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Msa
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Messages
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Schemas
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for StatefulStorage
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Capacity
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for FrequencyTxPayment
[2023-12-22T18:30:34Z DEBUG runtime::frame-support] ✅ no migration for Handles
[2023-12-22T18:30:34Z DEBUG wasm-heap] allocator dropped: AllocationStats { bytes_allocated: 40, bytes_allocated_peak: 792, bytes_allocated_sum: 30048, address_space_used: 1392 }
[2023-12-22T18:30:34Z DEBUG try-runtime::cli] Proof: 0x00000000000000000000... / 37 nodes
[2023-12-22T18:30:34Z DEBUG try-runtime::cli] Encoded proof size: 5.1 KB
[2023-12-22T18:30:34Z DEBUG try-runtime::cli] Compact proof size: 4.0 KB
[2023-12-22T18:30:34Z INFO  try-runtime::cli] PoV size (zstd-compressed compact proof): 3.5 KB. For parachains, it's your responsibility to verify that a PoV of this size fits within any relaychain constraints.
[2023-12-22T18:30:34Z INFO  try-runtime::cli] Consumed ref_time: 0.00345s (0.69% of max 0.5s)
[2023-12-22T18:30:34Z INFO  try-runtime::cli] ✅ TryRuntime_on_runtime_upgrade executed without errors or weight safety warnings. Please note this does not guarantee a successful runtime upgrade. Always test your runtime upgrade with recent state, and ensure that the weight usage of your migrations will not drastically differ between testing and actual on-chain execution.
```

idempotent migrations also work based on latest checks added on
try-runtime
```
[2023-12-26T19:34:02Z INFO  try_runtime_core::commands::on_runtime_upgrade] -------------------------------------------------------------------
    
    
[2023-12-26T19:34:02Z INFO  try_runtime_core::commands::on_runtime_upgrade] 🔬 Running TryRuntime_on_runtime_upgrade again to check idempotency: PreAndPost
    
    
[2023-12-26T19:34:02Z INFO  try_runtime_core::commands::on_runtime_upgrade] -------------------------------------------------------------------
[2023-12-26T19:34:02Z INFO  frequency_runtime] try-runtime::on_runtime_upgrade frequency.
[2023-12-26T19:34:02Z INFO  runtime::messages] Running pre_upgrade...
[2023-12-26T19:34:02Z INFO  runtime::messages] Running storage migration...
[2023-12-26T19:34:02Z INFO  runtime::messages] onchain_version= StorageVersion(2), current_version=StorageVersion(2)
[2023-12-26T19:34:02Z INFO  runtime::messages] Migration did not execute. This probably should be removed onchain:StorageVersion(2), current:StorageVersion(2)
[2023-12-26T19:34:02Z INFO  runtime::messages] Running post_upgrade...
[2023-12-26T19:34:02Z INFO  runtime::capacity] Old StorageAccountLedger migration attempted to run. Please remove
[2023-12-26T19:34:02Z INFO  runtime::capacity] Old Capacity Locks->Freezes migration attempted to run. Please remove
[2023-12-26T19:34:02Z INFO  runtime::schemas] Running pre_upgrade...
[2023-12-26T19:34:02Z INFO  runtime::schemas] Running storage migration...
[2023-12-26T19:34:02Z INFO  runtime::schemas] onchain_version= StorageVersion(3), current_version=StorageVersion(3)
[2023-12-26T19:34:02Z INFO  runtime::schemas] Migration did not execute. This probably should be removed onchain:StorageVersion(3), current:StorageVersion(3)
[2023-12-26T19:34:02Z INFO  runtime::schemas] Running post_upgrade...
[2023-12-26T19:34:02Z INFO  try-runtime::cli] PoV size (zstd-compressed compact proof): 3.5 KB. For parachains, it's your responsibility to verify that a PoV of this size fits within any relaychain constraints.
[2023-12-26T19:34:02Z INFO  try-runtime::cli] Consumed ref_time: 0.00345s (0.69% of max 0.5s)
[2023-12-26T19:34:02Z INFO  try-runtime::cli] ✅ No weight safety issues detected. Please note this does not guarantee a successful runtime upgrade. Always test your runtime upgrade with recent state, and ensure that the weight usage of your migrations will not drastically differ between testing and actual on-chain execution.
```
\d doesn't work as expected. Using [0-9] instead

# Goal
The goal of this PR is to fix a release tagging issue

Test in bash:

```bash
[[ "v1.10.0" =~ ^v([0-9]+)\.(0|([1-9][0-9]+))\.(0|([1-9][0-9]+))(-rc[1-9][0-9]*)?$ ]] && echo "works"
[[ "v1.0.0" =~ ^v([0-9]+)\.(0|([1-9][0-9]+))\.(0|([1-9][0-9]+))(-rc[1-9][0-9]*)?$ ]] && echo "works"
[[ "v1.01.0" =~ ^v([0-9]+)\.(0|([1-9][0-9]+))\.(0|([1-9][0-9]+))(-rc[1-9][0-9]*)?$ ]] || echo "fails correctly"
[[ "v1.1.01" =~ ^v([0-9]+)\.(0|([1-9][0-9]+))\.(0|([1-9][0-9]+))(-rc[1-9][0-9]*)?$ ]] || echo "fails correctly"
[[ "v1.1.1-rc0" =~ ^v([0-9]+)\.(0|([1-9][0-9]+))\.(0|([1-9][0-9]+))(-rc[1-9][0-9]*)?$ ]] || echo "fails correctly"
```
wilwade and others added 29 commits April 16, 2025 08:24
# Goal
The goal of this PR is to update Rust to 1.84.1 and use the new base
image

- Re-enable cargo deny (thanks to the version bump)
- Update Rust to v1.84.1
- Update nightly version
- Update srtool
- Update to use new ci base image v1.4.0
# Goal
The goal of this PR is to use benchmarks v2 macros

Closes #2328 

# Checklist
- [x] Benchmarks updated
# Goal
The goal of this PR is to upgrade Frequency to the latest Polkadot
`stable2503` release.

In addition to the base changes required by `stable2503`, a couple other
fixes/tweaks:
* Fix `schemas` pallet benchmarks that were broken by #2321 
* Since `stable2512` introduced the requirement for frame system
extensions weights to construct the runtime, add
`frame_system_extensions` to our benchmarking setup (instead of
hard-coding a copy from the polkadot-sdk repo)

Closes #2317 


# Checklist
- [x] Updated Pallet Readme?
- [x] Benchmarks added?
- [x] Spec version incremented?

---------

Co-authored-by: Aramik <[email protected]>
Co-authored-by: aramikm <[email protected]>
This updates the way benchmarks are run so that we use less time on the
benchmark runner.

Benchmark runner time is now < 20 minutes. (Total run is much longer,
but this is much easier to use spot instances with)

- Update the release workflow
- Update the benchmark runner
- Switch the benchmark runner to use `m6id.2xlarge` as the benchmark.
This is for various reasons, but it mostly is a better equivalent for
the Polkadot Validator minimum.
- Benchmark runner had been a `c7i` for the last run, so the numbers
look like they increase more than they actually did.
- Ran all benchmarks

---------

Co-authored-by: Joe Caputo <[email protected]>
Co-authored-by: wilwade <[email protected]>
)

Bumps
[softprops/action-gh-release](https://github.com/softprops/action-gh-release)
from 2.0.9 to 2.2.2.

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…5.2.0 (#2344)

Bumps
[stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action)
from 5.0.1 to 5.2.0.

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
# Goal
The goal of this PR is to update and enable a bunch of Clippy lints. 

Closes #1855

# Discussion

- Most of these things are normal clippy fixes
- Highlighted the ones that are strange
- Added `make lint-fix` that runs clippy fix

# Checklist
- [x] Spec version incremented?
# Goal
The goal of this PR is to update JS dependencies before the new release

- e2e
- api-augment
- schemas
- tools

Also:
- Removed workerpool as no longer needed
…ain (#2349)

# Goal

Use fork-aware as default pool for non-instant features.

Closes #2348
Closes #1927
# Goal
The goal of this PR is to update the paseo local chain spec.

Part of #2333

# Discussion

- Updated from
https://github.com/paseo-network/runtimes/tree/main/chain-specs/local
- This does change the genesis, so it breaks things like `make
run-frequency-docker` until the docker images are updated
# Goal
The goal of this PR is to modify accounts to be compatible with ETH keys
used inn pallet-revive.

Closes #2289 

# Discussion
- This is not a backwards compatible change but it doesn't appear that
we have any accounts with previous formatting so it should be safe.

# Checklist
- [x] Unit Tests added?
- [x] e2e modified
- [x] Spec version incremented?
# Goal
The goal of this PR is to reduce the size of the released wasm for
Testnet

## Details

Testnet wasm has always been larger than mainnet, as it includes a few
more things like the sudo pallet. However in release
[v1.14.0](https://github.com/frequency-chain/frequency/releases/tag/v1.14.0)
it increased a large amount.

This has not been an issue, but in v1.16.0, the wasm increased to over
2.5Mb which caused issues with being able to upgrade cleanly on testnet.

A reason for the increase was that the mainnet genesis was also being
included in the testnet releases. This was not needed, so this PR
removes it from those builds.

## Summary

- Fixed release notes template issues
- Removed paseo local spec from the build for paseo testnet
- Limited the `frequency_genesis_config` to just `frequency` and
benchmarks runs
- Bumped the spec version

## Result

Local builds of the Mainnet wasm are at ~1.7M and Testnet dropped from
2.6M to 2.1M

## Local Testing

- Mainnet: `make build-mainnet-release && ls -lah
target/release/wbuild/frequency-runtime/frequency_runtime*`
- Testnet: `make build-testnet-release && ls -lah
target/release/wbuild/frequency-runtime/frequency_runtime*`
# Goal
The goal of this PR is to fix the issues with running Paseo-Local, and
confirm that there are no issues with fatxpool

Part of #2333

# Discussion

- Updated the fee test to be a bit looser with the new benchmark runners
- Adding missing `with_id` to the `frequnecy-paseo-local` spec generator
- Bumped the Paseo-Local spec to the new v1.4.2
- Removed/Fixed the old generate_spec.sh script
- Added notes about `setSchedulingLookahead` for the Paseo Local chain
- Added a third tech council member for local to break ties

# Checklist
- [x] Updated Readme?
- [x] Spec version incremented?
…#2363)

# Goal
The goal of this PR is to update the check_handle Runtime RPC to
correctly use the whitespace trim and collapse

Closes #2362

# Discussion

- I thought about updating how this gets the value to be more aligned,
but in the end the simple fix won out.

# Checklist
- [x] Unit Tests added?
- [x] Spec version incremented?
# Goal
The goal of this PR is to fix the bug in offchain worker
Closes #2293 

There are 2 kinds of errors:
- Some MsaIds have multiple indexed keys which only one of them is valid
(ex: 1394377)
- Some MsaIds have no indexed keys (ex: 1414115)

The main issue is that forks cause overwrites on offchain indexed events
so we had to find a way to fix these overwrites.

# Attempted solution

We are now double indexing any event so that if one of them gets
overwritten the other one would most likely get consumed. To do this we
are getting a pseudo random index from 1 to 1000 and store that event
inside a bucket associated with that block and index. The only tradeoff
is that we have to look at all the buckets for each block inside
offchain worker to fetch these stored events since there is no
`iter_prefix` from inside offchain worker.

# Discussion
- To fix the existing wrong indices I tried to add a runtime but any
code not called from offchain worker context can not access to any
offchain worker related features such as locks and timestamps and ...
- Since adding an extrinsic was the easiest way to handle it added a new
extrinsic (similar to `remark`) which only adds an event to reindexing a
certain msa id. This is not the best solution since we have to spend
some token to reindex but it was the fastest and easiest to do.
Currently it's not free but if desired we can make it free or capacity
supported but will need to ensure it's not going to be abused
- The other way to fix this is to add a new rpc and refactor the code
such that it can be called from this rpc but it was a heavier lift

# Further attempts that didn't work
- Using the Remark event to inject the reindex data doesn't work since
the event only stores the hash of the remark not the data
- Using the Remark Extrinsic to inject the reindex data also doesn't
work since it is only stored temporarily and if the offchain worker does
not run in the the exact time-window that it's available it would be
lost.


# Checklist
- [x] Unit Tests added?
- [x] Benchmarks added?
- [x] Spec version incremented?
…from an MSA ID (#2358)

# Goal
This PR adds some internal pallet functions and custom runtime to
deterministically generate an Ethereum address from an MSA ID, and vice
versa.

The general approach is:
- Use a domain separator prefix to eliminate any possible conflict with
addresses generated by `CREATE2`
- Use a salt that is the hash of the string "MSA Generated"
- Take the last 20 bytes of the hash of `(prefix + MSA ID + salt)`
- If returning a string for the runtime query, pass through an [ERC-55
checksum
algorithm](https://github.com/ethereum/ercs/blob/master/ERCS/erc-55.md)
to alter the returned hex string

Note, although addresses generated in this manner cannot be reversed to
recover the related MSA ID, they can be verified (ie, given an address
and an MSA ID, we can determine whether or not the address is the result
of applying the above algorithm to the MSA ID). It is not envisioned
that there would ever be an _on-chain_ requirement to recover the MSA ID
from the address; if such a use case was desired for off-chain purposes,
it would be relatively trivial to populate a static lookup table mapping
all known or possible MSAs to their corresponding address, or
vice-versa.

Closes #2353 
Closes #2352 

# Discussion

- Q0: Currently returning ASCII bytes; or do we want to return the
binary address bytes?
- A: Now returning a struct containing both the binary address &
checksummed string

# Checklist
- [x] Updated Pallet Readme?
- [ ] Updated js/api-augment for Custom RPC APIs?
- [ ] Design doc(s) updated?
- [x] Unit Tests added?
- [x] e2e Tests added?
- [ ] Benchmarks added?
- [x] Spec version incremented?
# Goal
The goal of this PR is to add support for linux/arm64 in binaries and
docker images

Closes #779
# Goal
The goal of this PR is to allow encoding and verification of EIP-712
signatures for our custom signed payloads.
Related to #2278 

# Discussion
- The frontend side of these changes will be implemented in #2281 
- I didn't know which chain ID to use so used the test chainID for
pallet revive. We need to set these once we figure out those values.

# Checklist
- [x] Unit Tests added?
- [x] e2e Tests added?
- [x] Spec version incremented?
# Goal
The goal of this PR is to make the e2e tests work against Testnet on
Paseo

e2e Run against Testnet-Paseo:
https://github.com/frequency-chain/frequency/actions/runs/15022918786

All green except for non-released features!

# Discussion

The main issue is that many things need to wait until finalization for
the next thing to be able to consistently work.

- Updated JS packages
- Split up several e2e tests to parallelize
- Update the setup of many e2e tests to run in parallel
- Update the nonce setup to use Atomics so that it is "thread" safe
- Increase timeouts as the tests take longer against a chain that takes
time to finalize
- Suppress expected rpc errors on sendUnsigned
# Goal
The goal of this PR is to update the ci image to v1.5.6 (which has gpg
installed)

Also does a small verify pr commit tweak that speeds up the build by
about 1.5 minutes
# Goal
The goal of this PR is to create a ethereum utility library which can
help us dealing with ethereum addresses and signatures and etc.

Closes #2281

## What is added?
- Generates CJS and ESM and browser compatible JS.
- Be able to generate EIP-712 signatures and verify them
- Generate Ethereum keys with different address encodings


# Checklist
- [x] Unit Tests added?
- [x] e2e Tests modified
# Goal
The goal of this PR is just updating the CI image version so that it
also has gpg-agent
# Goal
The goal of this PR is to fix a typo on `js-ethereum-utils-`
# Goal
The goal of this PR is to allow adding a second key to be a
<del>free</del> subsidized capacity transaction under specific
circumstances. This change reduces the capacity fee by about 70% when
there is one key, and the new key is Ethereum-compatible.

Most of #2286 

# Discussion
Note on something easy to miss: the expiration block will default to 0,
which means this feature is off by default, until the value is set to a
block in the future. There is no on-chain monitoring of the usage of
this feature.

# Checklist
- [x] As Sudo or Council, can set the expiration block for the
<del>free</del> subsidized key addition period.
- [x] Updated frequency-tx-payment SignedExtension to use a filter for
the specific call
- [x] frequency-tx-payment uses an Msa call to determine eligibility
- [x] Updated Pallet Readme?
- [x] Unit Tests added?
- [x] e2e Tests added?
- [x] Benchmarks added?
- [x] Spec version incremented?

### not applicable
<del>
- [ ] Design doc(s) updated?
</del>

---------

Co-authored-by: Joe Caputo <[email protected]>
# Goal
The goal of this PR is to apply the hotfix from v1.16.2 to `main`

- Updates to the latest commit on Polkadot v2503 branch
- Fixes and updates to deny.toml
- Required scheduler max update

Closes #2390 
Closes #2397 
Closes #2408
# Goal
The goal of this PR is regular updates of JavaScript dependencies.
# Goal
The goal of this PR is add some missing functionality into
`ethereum-utils` which was required for other apps

Related to #2283
# Goal
The goal of this PR is to close #2416 

# Checklist
- [x] Unit Tests added?
- [x] Spec version incremented?
@JoeCap08055 JoeCap08055 merged commit f6252b9 into chore/review-boosting-for-committed-boosting Jun 3, 2025
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants