Client v0.10.35: Centrifuge 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
Mutual
Exhaustive list of all changes
- refactor: add moonbeam alpha spec, remove algol by @wischli in #1587
- Integration test: Generic runtime and environment by @lemunozm in #1583
- Loans: Moment as Seconds & Millis explicitly by @lemunozm in #1575
- Mock builder: use foss3 dependency by @lemunozm in #1592
- feat: add demo spec by @wischli in #1593
- AssetRegistry: protect asset_registry migration by @lemunozm in #1594
- Integration tests: fudge support for the generic environment by @lemunozm in #1588
- lp: Add
compute_at
toUpdateTrancheTokenPrice
by @NunoAlexandre in #1598 - chore: post v0.10.34 release cleanup by @wischli in #1595
- Currencies: ED consistent between tokens and assets by @lemunozm in #1596
- Loans: Integration tests by @lemunozm in #1600
- fix: typos by @omahs in #1568
- Polkadot v0.9.43 by @NunoAlexandre in #1577
- GHA pipeline rewrite for ease and speed by @gpmayorga in #1551
- LiquidityPools: Add
restriction_set
field toAddTranche
message by @NunoAlexandre in #1610 - feat: add InvestmentPortfolio Runtime API by @wischli in #1608
- CI release bug fixes by @gpmayorga in #1611
- Fix: Transfer debt by @mustermeiszer in #1615
- chore(deps): bump google-github-actions/auth from 1.1.1 to 1.2.0 by @dependabot in #1614
- chore(deps): bump actions/github-script from 6.4.1 to 7.0.1 by @dependabot in #1613
- Runtimes workspace dependencies & cleaning by @lemunozm in #1609
- Fix: Loans adjustments by @lemunozm in #1616
- fix: enable rocksdb for frontier backend by @wischli in #1622
- CI bug fixes - Part II by @gpmayorga in #1619
- CI bug fixes - Part III by @gpmayorga in #1625
- Dockerfile review after CI changes by @gpmayorga in #1624
- Fees API Improvement by @lemunozm in #1623
- chore(deps): bump google-github-actions/auth from 1.2.0 to 2.0.0 by @dependabot in #1631
- Docker: solve polkadot relay folder renaming and other small fixes by @gpmayorga in #1628
- Modify
RuntimeChange
to support easily new additions by @lemunozm in #1637 - feat: cash valuation method by @mustermeiszer in #1638
- fix: docker-compose by @wischli in #1626
- Feat/restricted transfers closure by @mustermeiszer in #1621
- Fix benchmark issue in development by @lemunozm in #1640
- Sanity checks: re-activate Taplo by @gpmayorga in #1636
Docker Image: centrifugeio/centrifuge-chain:main-ccbc3a1-23-12-07
Full Changelog: v0.10.34...v0.10.35