3.52.0-Mainnet API Changes

API changes for runtime users

  • pallet-balances

    • Extrinsics

      • transfer > transferAllowDeath / transferKeepAlive

  • pallet-staking

    • Extrinsics

      • If a validator has more than maxExposurePageSize nominators (512 in our case) then payoutStakers will need to be called multiple times to repay all of the nominators. The extrinsic only pays out the top one page (512) nominators at a time.

      • Alternatively, if you know which page your nominator stash belongs to, you can perform payoutStakersByPage and specify the page (0, 1, 2, etc) to pay out specific nominators that belong to that page. This can be used to avoid paying transaction fees while unintentionally paying out other accounts.

    • Storage Calls

      • erasstakers > erasStakersPaged Use the old API for eras up to the runtime upgrade, and the new api for eras after it

      • erasStakersClipped > erasStakersOverview Use the old API for eras up to the runtime upgrade, and the new api for eras after it

      • claimedRewards inside the ledger storage item has been deprecated and changed to legacyClaimedRewards. It will only reflect the rewards claimed before the runtime upgrade. Users should use the new staking.claimedRewards storage call to get the history of claimed paged rewards by era and validator

    • Storage Constants

      • maxNominatorRewardedPerValidator > maxExposurePageSize

  • pallet-nomination-pools

    • Added the ability to configure who can claim commission from nomination pools.

      • Previously, only the pool's root role was allowed to call claim_commission. This was limiting for use cases where pools wanted to allow third-party bots, external accounts, or anyone to claim commission on their behalf. This change allows pool operators to configure this behavior.

        • A new claim_permission field has been added to the Commission struct inside BondedPool.

        • If claim_permission is set to:

          • Permissionless: anyone can call claim_commission

          • Account(some_account): only the specified account can call claim_commission

          • None: falls back to current behavior (only the pool's root can call it)

      This change introduces a migration to extend existing pools with the new optional field. All existing pools will default to None, preserving the current behavior unless explicitly updated.

      To enable permissionless claiming or delegate it to another account, the pool's root role must update the claim_permission field accordingly. This could be done by:

      • Extrinsics > nominationPools > setCommissionClaimPermission

        • provide pool_id and enable CommissionClaimPermissionoption, and set it either to Permissionless or specify an Account that will have the permission to withdraw commissions

      • No action is required unless the pools want to change this behavior.

Last updated