owned this note
owned this note
Published
Linked with GitHub
# Coretime migration fix
Main Coretime Polkadot Launch doc: [link](https://hackmd.io/eNhqj4v7SKOpwe-Xfm4knw)
The `LeaseOffset` was not taken into consideration in the [Polkadot migration](https://github.com/polkadot-fellows/runtimes/blob/e6b9132701df4311e7d6331e3a9e051ae8de0104/relay/polkadot/src/lib.rs#L1965) that ran when [ref 1143](https://polkadot.subsquare.io/referenda/1143) enacted and upgraded the relay chain, so the end timeslices of the leases are short by about 64 days.
I got a report from Juanma from W3F that somebody had noticed their lease was short.
This lease offset does not exist on any of the testnets, and the two tools that were used to compare end timeslices for Kusama did not take it into account either. The retro is for another day, focusing on the fix is crucial before the incomplete workplan is sent to the relay in [23005200](https://polkadot.subscan.io/block/23005200) on 17th October.
Firstly thinking about the worst case scenario in terms of access to cores: there are 11 parachains affected by this on the 17th October.
6 teams would be able to renew at preferential rates before anybody else is able to buy their core, so even if we don't fix this before these leases end they will not stop making blocks.
However there are 5 teams who are not in the broker state at all, since according to the migration their leases had already ended at the time of the migration. This means this fix is crucial.
The workplan has 51 entries, 5 are system cores (1000, 1001, 1002, 1004, 1005), so 46 parachains
We're missing those 5 from above (2048, 3375, 3358, 2053, 2056)
but we DO have the other 6 who are currently in potential renewals (2040, 2094, 3333, 2106, 2101, 2093)
We need to add 11520 to every existing lease (the lease offset is 64 days, aka 921600 blocks/11520 timeslices).
## The fix:
note: separately we have also decided to add a pool core. this is the reason for the extra core and steps to add the pool core immediately.
Add 6 more cores to the system - this will take 2 sessions to kick in
Correct the lease until for the 46 leases in the system (simply +115200)
Remove the existing 6 PotentialRenewals
Add PotentialRenewals for 2048, 3375, 3358, 2053, 2056 with a when of 292605
Add 2048, 3375, 3358, 2053, 2056 to the workplan at timeslice 287565 and on 5 of the new cores
Add leases for 2040, 2094, 3333, 2106, 2101, 2093 with a properly calculated end timeslice
Make sure the core ordering is correct throughout the workplan
Reserve the system pool core (kicks in after two rotate_sales)
Add the system pool core to the workplan for the next cycle (287565) on the last new core
### Blow by blow
> Add 6 more cores to the system - this will take 2 sessions to kick in
extrinsic call on coretime chain to `request_core_count`
> Correct the lease until for the 46 leases in the system
simply +115200. set_storage or migration
> Remove the existing 6 PotentialRenewals
killstorage or migration
> Add PotentialRenewals for 2048, 3375, 3358, 2053, 2056 with a when of 292605
Add 2048, 3375, 3358, 2053, 2056 to the workplan at timeslice 287565 and on 5 of the new cores
Add leases for 2040, 2094, 3333, 2106, 2101, 2093 with a properly calculated end timeslice
migration or setstorage
>Make sure the core ordering is correct throughout the workplan
try-runtime (if we go the migration route) and chopsticks in either case
>Reserve the system pool core
extrinsic - reserve
> Add the system pool core to the workplan for the next cycle (287565) on the last new core
set_storage or migration
## Overall strategy
This is probably tidiest with a migration, since there are so many moving parts.
set storage calls are also possible, but the set storage route might just be messy and harder for people to check. however set storage would be quicker and would bypass having to make a fellowship release, migration lets us make use of try-runtime for testing
## Try runtime
Installation and snapshot setup
```shell
cargo install --git https://github.com/paritytech/try-runtime-cli --locked
try-runtime create-snapshot --uri wss://polkadot-coretime-rpc.polkadot.io:443
```
And from then on you can run
```shell
try-runtime --runtime ./runtimes/target/debug/wbuild/coretime-polkadot-runtime/coretime_polkadot_runtime.wasm on-runtime-upgrade --checks=pre-and-post snap --path coretime-polkadot-1003000@latest.snap
```
Run on the live chain as a last sanity check:
```shell
try-runtime --runtime ./runtimes/target/debug/wbuild/coretime-polkadot-runtime/coretime_polkadot_runtime.wasm on-runtime-upgrade --checks=pre-and-post live --uri wss://polkadot-coretime-rpc.polkadot.io:443
```
This requires a WASM blob compiled with the `try-runtime` feature.
PR here: https://github.com/polkadot-fellows/runtimes/pull/458
## Testing the runtime upgrade with chopsticks
Compile with `cargo build --release --features on-chain-release-build -p coretime-polkadot-runtime`.
Build the call:
authorize_upgrade on the coretime chain with the wasm we just built: [0x00096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-coretime-rpc.polkadot.io#/extrinsics/decode/0x00096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15)
check its weight: runtime_calls->transaction_payment_call_api->query_call_info
```
weight: {
refTime: 122,920,000
proofSize: 0
}
```
send an xcm from the relay with a transact with this call: [0x630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot.api.onfinality.io%2Fpublic-ws#/extrinsics/decode/0x630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15)
Create the ref calls on whitelisted caller with this final xcm call
```
❯ opengov-cli submit-referendum --network polkadot --track whitelisted-caller -p 0x630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15
No enactment time specified. Defaulting to `After(10)`.
Specify an enactment time with `--at <block>` or `--after <blocks>`.
Submit the preimage for the Fellowship referendum:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-collectives-rpc.polkadot.io#/extrinsics/decode/0x2b00d41f0004010004082f0000060342c78b76216f88170065c538cd9e02839692af8b0072f236eb701c2e67148dac6ad2b9b86006243c14
Open a Fellowship referendum to whitelist the call:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-collectives-rpc.polkadot.io#/extrinsics/decode/0x3d003e02027ee28dab9f6936fd2ff792911bb0c3c5d2490ed42e4835ae2d2cbff0993623df35000000010a000000
Submit the preimage for the public referendum:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-rpc.dwellir.com#/extrinsics/decode/0x0a00e41703630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15
Open a public referendum to dispatch the call:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-rpc.dwellir.com#/extrinsics/decode/0x1500160d02e474e5bf51fe15c6540fe1ee19d8429eaa1ee530cb48cbbd2db06e0d431d323e39000000010a000000
Batch to submit on Polkadot Relay Chain:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-rpc.dwellir.com#/extrinsics/decode/0x1a04080a00e41703630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe151500160d02e474e5bf51fe15c6540fe1ee19d8429eaa1ee530cb48cbbd2db06e0d431d323e39000000010a000000
Batch to submit on Polkadot Collectives Chain:
https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-collectives-rpc.polkadot.io#/extrinsics/decode/0x2804082b00d41f0004010004082f0000060342c78b76216f88170065c538cd9e02839692af8b0072f236eb701c2e67148dac6ad2b9b86006243c143d003e02027ee28dab9f6936fd2ff792911bb0c3c5d2490ed42e4835ae2d2cbff0993623df35000000010a000000
```
### Testing steps
We won't actually submit the referenda for this test, but we'll take the calls from both preimages and inject them into the scheduler as inline calls dispatched by the relevant origins (FellowshipOrigins: Fellows, and Origins: WhitelistedCaller respectively)
Fire up chopsticks
```shell
chopsticks xcm -r polkadot -p polkadot-coretime -p polkadot-collectives
```
dispatch the whitelist call on the [collectives js](https://polkadot.js.org/apps/?rpc=ws://localhost:8000#/js) tab:
call: 0x1f0004010004082f0000060342c78b76216f88170065c538cd9e02839692af8b0072f236eb701c2e67148dac6ad2b9b86006243c14
```javascript
// Grab the block number of the current head
// api is already imported, no need to add anything but the following.
const number = (await api.rpc.chain.getHeader()).number.toNumber()
// use chopsticks dev_setStorage to inject the call into the scheduler state for the next block. The value of `Inline` is just the call data. Crucially with this call we can set the origin to `Fellows`
await api.rpc('dev_setStorage', {
scheduler: {
agenda: [
[
[number + 1], [
{
call: {
Inline: '0x1f0004010004082f0000060342c78b76216f88170065c538cd9e02839692af8b0072f236eb701c2e67148dac6ad2b9b86006243c14'
},
origin: {
FellowshipOrigins: 'Fellows'
}
}
]
]
]
}
})
// Make a block to include the extrinsic
await api.rpc('dev_newBlock', { count: 1 })
```
Check that the whitelisted event has been emitted in the relay chain explorer.

dispatch the `authorize_upgrade` call on the [relay js](https://polkadot.js.org/apps/?rpc=ws://localhost:8002#/js) tab:
call: 0x1703630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15
```javascript
// Grab the block number of the current head
// api is already imported, no need to add anything but the following.
const number = (await api.rpc.chain.getHeader()).number.toNumber()
// use chopsticks dev_setStorage to inject the call into the scheduler state for the next block. The value of `Inline` is just the call data. Crucially with this call we can set the origin to `WhitelistedCaller`
await api.rpc('dev_setStorage', {
scheduler: {
agenda: [
[
[number + 1], [
{
call: {
Inline: '0x1703630004000100b50f04082f0000060202714e1d008800096ca7249f79950b06777a1cc3ca153a661de60ac385c6a76b5b2f47cabbcffe15'
},
origin: {
Origins: 'WhitelistedCaller'
}
}
]
]
]
}
})
// Make a block to include the extrinsic
await api.rpc('dev_newBlock', { count: 1 })
```
Check that the call has succeded and the xcm has been sent from the relay:

Ensure the upgrade has been authorized:

apply the upgrade with system.apply_authorized_upgrade and upload the wasm blob, submit unsigned
Make a couple of blocks on the coretime chain to set the code and allow the migration to run:
```javascript
await api.rpc('dev_newBlock', { count: 2 })
```
check the output on the coretime chain state:
Reservations:
```
[
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,001
}
}
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,002
}
}
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,000
}
}
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,004
}
}
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,005
}
}
]
[
{
mask: 0xffffffffffffffffffff
assignment: Pool
}
]
]
```
The pool core is there as expected.
leases:
```
[
{
until: 359,280
task: 2,035
}
{
until: 344,160
task: 3,344
}
{
until: 389,520
task: 3,370
}
{
until: 374,400
task: 3,367
}
{
until: 389,520
task: 2,086
}
{
until: 359,280
task: 2,032
}
{
until: 389,520
task: 2,051
}
{
until: 313,920
task: 3,369
}
{
until: 389,520
task: 2,008
}
{
until: 359,280
task: 2,025
}
{
until: 313,920
task: 2,000
}
{
until: 404,640
task: 2,092
}
{
until: 359,280
task: 2,002
}
{
until: 389,520
task: 3,359
}
{
until: 374,400
task: 2,030
}
{
until: 404,640
task: 3,378
}
{
until: 404,640
task: 2,104
}
{
until: 374,400
task: 2,046
}
{
until: 344,160
task: 3,345
}
{
until: 344,160
task: 3,340
}
{
until: 329,040
task: 3,338
}
{
until: 329,040
task: 2,004
}
{
until: 389,520
task: 3,377
}
{
until: 389,520
task: 3,373
}
{
until: 344,160
task: 2,031
}
{
until: 404,640
task: 3,389
}
{
until: 374,400
task: 3,366
}
{
until: 374,400
task: 2,037
}
{
until: 359,280
task: 2,034
}
{
until: 404,640
task: 2,090
}
{
until: 344,160
task: 3,346
}
{
until: 359,280
task: 2,012
}
{
until: 404,640
task: 3,397
}
{
until: 374,400
task: 2,043
}
{
until: 404,640
task: 2,091
}
{
until: 344,160
task: 2,026
}
{
until: 404,640
task: 3,388
}
{
until: 359,280
task: 3,354
}
{
until: 344,160
task: 2,006
}
{
until: 374,400
task: 2,013
}
{
until: 298,800
task: 2,094
}
{
until: 298,800
task: 2,040
}
{
until: 298,800
task: 3,333
}
{
until: 298,800
task: 2,106
}
{
until: 298,800
task: 2,093
}
{
until: 298,800
task: 2,101
}
]
```
46 leases as expected, the end timeslices of 5 sample leases are correct.
PotentialRenewals:
```
[
[
[
{
core: 57
when: 292,605
}
]
{
price: 1,000,000,000,000
completion: {
Complete: [
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,375
}
}
]
}
}
]
[
[
{
core: 58
when: 292,605
}
]
{
price: 1,000,000,000,000
completion: {
Complete: [
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,358
}
}
]
}
}
]
[
[
{
core: 56
when: 292,605
}
]
{
price: 1,000,000,000,000
completion: {
Complete: [
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,048
}
}
]
}
}
]
[
[
{
core: 60
when: 292,605
}
]
{
price: 1,000,000,000,000
completion: {
Complete: [
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,056
}
}
]
}
}
]
[
[
{
core: 59
when: 292,605
}
]
{
price: 1,000,000,000,000
completion: {
Complete: [
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,053
}
}
]
}
}
]
]
```
> Add PotentialRenewals for 2048, 3375, 3358, 2053, 2056 with a when of 292605
5 potential renewals as expected. The para_ids (above) and prices are also correct (100 DOT). The when is 287565 (next period start) + 5040 as expected.
workplan:
```
[
[
[
[
287,565
9
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,370
}
}
]
]
[
[
[
287,565
21
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,002
}
}
]
]
[
[
[
287,565
40
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,012
}
}
]
]
[
[
[
287,565
4
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,005
}
}
]
]
[
[
[
287,565
46
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,388
}
}
]
]
[
[
[
287,565
26
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,046
}
}
]
]
[
[
[
287,565
43
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,091
}
}
]
]
[
[
[
287,565
11
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,086
}
}
]
]
[
[
[
287,565
30
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,004
}
}
]
]
[
[
[
287,565
6
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,040
}
}
]
]
[
[
[
287,565
24
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,378
}
}
]
]
[
[
[
287,565
39
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,346
}
}
]
]
[
[
[
287,565
2
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,000
}
}
]
]
[
[
[
287,565
57
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,375
}
}
]
]
[
[
[
287,565
12
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,032
}
}
]
]
[
[
[
287,565
23
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,030
}
}
]
]
[
[
[
287,565
17
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,008
}
}
]
]
[
[
[
287,565
29
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,338
}
}
]
]
[
[
[
287,565
13
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,333
}
}
]
]
[
[
[
287,565
20
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,092
}
}
]
]
[
[
[
287,565
37
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,034
}
}
]
]
[
[
[
287,565
14
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,051
}
}
]
]
[
[
[
287,565
5
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,094
}
}
]
]
[
[
[
287,565
28
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,340
}
}
]
]
[
[
[
287,565
35
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,366
}
}
]
]
[
[
[
287,565
16
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,369
}
}
]
]
[
[
[
287,565
18
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,025
}
}
]
]
[
[
[
287,565
56
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,048
}
}
]
]
[
[
[
287,565
38
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,090
}
}
]
]
[
[
[
287,565
60
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,056
}
}
]
]
[
[
[
287,565
59
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,053
}
}
]
]
[
[
[
287,565
44
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,093
}
}
]
]
[
[
[
287,565
47
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,101
}
}
]
]
[
[
[
287,565
32
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,373
}
}
]
]
[
[
[
287,565
27
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,345
}
}
]
]
[
[
[
287,565
33
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,031
}
}
]
]
[
[
[
287,565
42
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,043
}
}
]
]
[
[
[
287,565
7
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,035
}
}
]
]
[
[
[
287,565
8
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,344
}
}
]
]
[
[
[
287,565
1
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,002
}
}
]
]
[
[
[
287,565
50
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,013
}
}
]
]
[
[
[
287,565
41
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,397
}
}
]
]
[
[
[
287,565
10
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,367
}
}
]
]
[
[
[
287,565
48
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,354
}
}
]
]
[
[
[
287,565
25
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,104
}
}
]
]
[
[
[
287,565
22
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,359
}
}
]
]
[
[
[
287,565
58
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,358
}
}
]
]
[
[
[
287,565
0
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,001
}
}
]
]
[
[
[
287,565
61
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: Pool
}
]
]
[
[
[
287,565
15
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,106
}
}
]
]
[
[
[
287,565
49
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,006
}
}
]
]
[
[
[
287,565
3
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 1,004
}
}
]
]
[
[
[
287,565
45
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,026
}
}
]
]
[
[
[
287,565
36
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,037
}
}
]
]
[
[
[
287,565
19
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 2,000
}
}
]
]
[
[
[
287,565
31
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,377
}
}
]
]
[
[
[
287,565
34
]
]
[
{
mask: 0xffffffffffffffffffff
assignment: {
Task: 3,389
}
}
]
]
]
```
OK this is a long one, there are:
56 tasks
1 pool
and nothing else
all assigned at timeslice 287,565 (the start of the next period as expected)
exactly one entry exists for cores 0-50 and 56-61, and nothing exists for 51-55 (all inclusive ranges). This is correct.
Cross-checking the PotentialRenewals and Workplan, the para_id and core combinations match. Therefore the PotentialRenewals will correspond to the correct para_id
And check that the 62 cores have been requested on the relay:

chain state configuration.pending_configs
```
[
[
9,534
{
maxCodeSize: 3,145,728
maxHeadDataSize: 20,480
maxUpwardQueueCount: 174,762
maxUpwardQueueSize: 1,048,576
maxUpwardMessageSize: 65,531
maxUpwardMessageNumPerCandidate: 16
hrmpMaxMessageNumPerCandidate: 10
validationUpgradeCooldown: 14,400
validationUpgradeDelay: 600
asyncBackingParams: {
maxCandidateDepth: 3
allowedAncestryLen: 2
}
maxPovSize: 5,242,880
maxDownwardMessageSize: 51,200
hrmpMaxParachainOutboundChannels: 128
hrmpSenderDeposit: 100,000,000,000
hrmpRecipientDeposit: 100,000,000,000
hrmpChannelMaxCapacity: 1,000
hrmpChannelMaxTotalSize: 102,400
hrmpMaxParachainInboundChannels: 128
hrmpChannelMaxMessageSize: 102,400
executorParams: [
{
MaxMemoryPages: 8,192
}
{
PvfExecTimeout: [
Backing
2,500
]
}
{
PvfExecTimeout: [
Approval
15,000
]
}
]
codeRetentionPeriod: 14,400
maxValidators: null
disputePeriod: 6
disputePostConclusionAcceptancePeriod: 600
noShowSlots: 3
nDelayTranches: 89
zerothDelayTrancheWidth: 0
neededApprovals: 30
relayVrfModuloSamples: 6
pvfVotingTtl: 2
minimumValidationUpgradeDelay: 20
minimumBackingVotes: 2
nodeFeatures: 0b11000000
approvalVotingParams: {
maxApprovalCoalesceCount: 6
}
schedulerParams: {
groupRotationFrequency: 10
parasAvailabilityPeriod: 10
maxValidatorsPerCore: 5
lookahead: 2
numCores: 62
maxAvailabilityTimeouts: 0
onDemandQueueMaxSize: 500
onDemandTargetQueueUtilization: 25.00%
onDemandFeeVariability: 3.00%
onDemandBaseFee: 250,000,000
ttl: 5
}
}
]
]
```
62 as expected which come into effect after two session boundaries have passed. this is a maximum of 8 hours, so as long as the referendum passes more than 8 hours before the end of the sale we are fine.
Chopsticks died repeatedly when I tried to advance to the session in question due to the usual RPC timeout, but there is no reason to believe that the notify_core_count call will fail.