Skip to content

v2.0.0 - Base Denim

Latest

Choose a tag to compare

@rayyan224 rayyan224 released this 07 Oct 16:31
· 6 commits to main since this release
a2954a8

Denim contains breaking changes. It doesn't remove or rename any Beryl or Cobalt selector, event topic, or error selector. However, two B20 changes make some calls that succeed today revert after Denim activates.

Changes

B20 (Asset and Stablecoin) — Reject sends to the token's own address (breaking)
A transfer, mint, or seize to the token's own address now reverts with InvalidReceiver. Before Denim, these tokens became stuck, and only the issuer could recover them. Issuers can still use seizeWithMemo to recover tokens that are already stuck. Details

B20 (Asset and Stablecoin) — Apply the transfer executor policy to every transfer (breaking)
TRANSFER_EXECUTOR_POLICY now checks the caller on transfer, transferFrom, and their memo versions, including when holders move their own tokens. Before Denim, it checked only transferFrom calls made by a different account. Tokens that never set this policy aren't affected. Details

PolicyRegistry — Inverted policies
Any policy can now be used as its opposite, so one address list can act as an allowlist or a blocklist. Get the inverted ID with invertedPolicyId(policyId). If the original policy doesn't exist, the inverted ID authorizes no accounts. Existing policies aren't affected. Details

Full migration guidance: CHANGELOG.md