Good day, Community!
Uses component: CP3.1
Author(s): k/f
Contributor(s):@WilliamFreude, @mustermeiszer , @nuno , @cdamian , @luis
Proposal on Proposal Repository (Github): cps/cps/CP78.md at main Β· centrifuge/cps Β· GitHub
Date proposed: 2023-12-07
About this proposal
Upgrade Centrifuge Chain to Runtime Version 1024
Upgrade Priority:
- Full Nodes: High - Please upgrade as soon as possible.
- Collators: Medium - Please upgrade at your earliest convenience.
Upgrading before executing the corresponding runtime upgrade should not introduce block production issues.
Be aware that there are several breaking changes for node operators. Itβs important to read the following section carefully due to these breaking changes!
Client: Breaking Changes
The upgrade to Polkadot v0.9.43 inherited a plurality of breaking changes, mainly affecting node operators.
CLI
This release removes the following CLI parameters:
β
rpc-max-payload
(replaced by--rpc-max-request-siz
e and--rpc-max-response-size
)
βws-max-out-buffer-capacity
βws-external
(replaced by--rpc-external
)
βunsafe-ws-external
(replaced by--unsafe-rpc-external
)
βipc--path
βws-port
(replaced by--rpc-port
)
βws-max--connections
(replaced by--rpc-max-connections
)
βrpc-http
(replaced by--rpc-addr
)
βrpc-ws
(replaced by--rpc-addr
)
Relaychain folder renaming
Another inheritance from the Polkadot release is the forced default relaychain directory name. It was changede fro relaychain
to polkadot
.
For Centrifuge Chain docker clients, we have fixed the issue by renaming the directory via an entrypoint script. However, if you are running the client with another method, you need to do this manually to circumvent resyncing the entire relaychain.
Docker: Unix permissions
We optimized our docker image by decreasing the size by roughly 20%
Moreover, the security was optimized. On the one side, vulnerabilities went from 10 High and 200 Medium to 0 High and 5 Medium. On the other side, the container is not run by root
anymore. Instead, it is run by centrifuge
user with user id 1000
.
Unfortunately, the latter change is breaking for anyone using docker and assuming running as root
by default. In this case, you either need to force the container to run as root
or make sure all mounted directories have the right permissions for centrifuge
user with id 1000
. For Kubernetes, an init container can be added to modify permissions as root
before the actual container starts:
spec:
initContainers:
- name: init-container
image: busybox
command:
- 'sh'
- '-c'
- |
chown -R 1000:1000 /data
chown -R 1000:1000 /config
volumeMounts:
- mountPath: /config
name: config-volume
- mountPath: /data
name: storage-volume
Docker: New name tag syntax
In the past, the docker tags could not be linked to official releases without checking the release notes. Moreover, release and dev tags could not be distinguished. We have introduced latest
tag which pins the latest official release.
There are five types of docker tags:
- Latest official version:
latest
tag - Releases mainnet build:
${TAG}-${SHA}-${YY-MM-DD}
tag- Releases testnet build:
test-${TAG}-${SHA}-${YY-MM-DD}
tag
- Releases testnet build:
- Push to main branch mainnet build:
main-${SHA}-${YY-MM-DD}
tag- Push to main branch testnet build:
test-main-${SHA}-${YY-MM-DD}
tag
- Push to main branch testnet build:
Update: It appears that the release CI pipeline is not working as expected. This will be fixed by the next release.
Centrifuge 1024 - Release Notes Highlights
- BREAKING: Upgrade to Polkadot v0.9.43 (#1577, #1622, #1626, #1640)
- See below for details
- Feat: Add transfer allowlist pallet for local (via
balances
) and xcm transfers (viaxtokens
) (#1621)- Allows setting a filter for transfer destinations
- Feat: Debt transfer (#1615)
- Feat: InvestmentPortfolio API (#1608)
- Liquiditypools:
- CI: Rewrite & Improvements (#1551, #1611, #1619, #1624, #1625, #1628, #1636)
Migrations
No migrations for this release.
Breaking Changes
The following changes are all inherited from upgrading from Polkadot v0.9.38 to Polkadot v0.9.43
- The
balances::transfer
call will soonβ’οΈ be deprecated. It is replaces withbalances::transfer_allow_death
(paritytech/substrate#12951) - Switch from balance locks and reserves to balance freezes and holds (paritytech/substrate#12951)
- Require existential deposit for all currencies except for tranche tokens (#1596, #1577)
- The amount for each currency is taken from the
existential_deposit
field in the corresponding Asset Registry entry
- The amount for each currency is taken from the
An
ExistentialDeposit
of zero no longer works. If you need to allow any account to have a zero balance and retain associated account data, you must introduce a pallet which allows an unpermissionedframe_system::Pallet::<Runtime>::inc_providers()
. (paritytech/substrate#12951)
WASM
Since the latest srtool does not produce a WASM report due to this issue, the following WASM information is provided by subwasm v0.16.1 which is internally used by srtool as well.
ποΈ Runtime size: 1.754 MB (1,839,185 bytes)
π Compressed: Yes, 78.34%
β¨ Reserved meta: OK - [6D, 65, 74, 61]
π Metadata version: V14
π₯ Core version: centrifuge-1024 (centrifuge-1.tx2.au1)
π³οΈ system.setCode hash: 0xb84978e151aa721326b911992d7789d8a8f3b4c21c40185f86a3cb78b8fcd37f
π³οΈ authorizeUpgrade hash: 0xe6073dcc2eef6f734d2d5d946b1e1f456d8c1f449a63bc3dae9e540aea546c66
#οΈβ£ Blake2-256 hash: 0xe9ecfd39bfd01a658ba28344963c4206863e81119b361f497538a164c2ef5a97
π¦ IPFS: https://www.ipfs.io/ipfs/QmZRejYou7do4JpJcMsYM5L2XodbcFx4tTsMsjquiswCbt
Docker Image: centrifugeio/centrifugechain:main-ccbc3a1-23-12-07
Full Changelog: v0.10.34β¦v0.10.35
Release Notes v0.10.35
Governance process for this proposal
- Council Motion + fast-track
- Referendum vote open for 32,400 blocks (~4.5 days)
- If the referendum passes: the enactment will be immediately after