Added lower_lookup support to checkpoint utilities (#1630)
Added BitMap struct and associated helpers to openzeppelin_utils::structs::bitmap (#1630)
ERC721ConsecutiveComponent extension (#1630)
ERC-6909 standard implementation and extensions (#1594)
Introduced ERC6909Component and extension components: ERC6909ContentURIComponent, ERC6909MetadataComponent, and ERC6909TokenSupplyComponent.
Added standard interfaces: IERC6909, IERC6909Metadata, IERC6909TokenSupply, and IERC6909ContentUri.
Added the ERC6909ABI trait, covering the full ERC-6909 token functionality, including all supported extensions.
Integration of ERC-6909 components into the with_components macro (#1594)
IERC1155Supply interface and ERC1155SupplyComponent extension for total supply tracking (#1632)
IERC721Wrapper interface to openzeppelin_interfaces::token::erc721 (#1625)
ERC721WrapperComponent providing ERC721 wrapping and unwrapping functionality (#1625)
IERC20Wrapper interface to openzeppelin_interfaces::token::erc20 for ERC20 wrappers (#1617)
ERC20WrapperComponent providing ERC20 wrapping and unwrapping functionality (#1617)
Changed
Bump scarb to v2.15.1 (#1631)
Changed (Breaking)
Added ERC721TokenOwnerTrait hook as a dependency to ERC721Component implementations (#1630)
Included ERC721OwnerOfDefaultImpl to support the default use case
Full Changes List
Chore(deps): Bump stefanzweifel/git-auto-commit-action from 6.0.1 to 7.0.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1553
Update foundry to 0.51.0 by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1555
Release openzeppelin_testing v6.0.0 by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1556
Update contract sizes benchmark by @github-actions[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1559
Remove the coverage_incompatible feature by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1558
chore: remove repetitive word in comment by @vastonus in https://github.com/OpenZeppelin/cairo-contracts/pull/1561
Chore(deps): Bump crate-ci/typos from 1.38.1 to 1.39.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1562
Bump snforge to 0.51.2 by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1563
Bump Cairo to v2.13.1 by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1565
Update contract sizes benchmark by @github-actions[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1566
Bump foundry to 0.52.0 by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1568
Release openzeppelin_testing-v6.1.0 by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1569
Chore(deps): Bump crate-ci/typos from 1.39.0 to 1.39.1 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1595
Chore(deps): Bump crate-ci/typos from 1.39.1 to 1.39.2 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1596
Chore(deps): Bump DavidAnson/markdownlint-cli2-action from 20.0.0 to 21.0.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1597
ci: bump actions/checkout to v6 by @rejected-l in https://github.com/OpenZeppelin/cairo-contracts/pull/1603
Chore(deps): Bump crate-ci/typos from 1.39.2 to 1.40.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1605
Chore(deps): Bump DavidAnson/markdownlint-cli2-action from 21.0.0 to 22.0.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1607
Fix foundry setup step in test workflow by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1609
Bump snforge to 0.53.0 by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1610
Chore(deps): Bump peter-evans/create-pull-request from 7 to 8 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1611
Chore(deps): Bump stefanzweifel/git-auto-commit-action from 7.0.0 to 7.1.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1620
Release openzeppelin_testing v6.2.0 by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1616
Add generate_spy_event_helpers macro by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1481
Bump snforge to 0.54.1 by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1621
Release openzeppelin_testing v6.3.0 by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1623
Merge v3.0.0 into main by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1622
Chore(deps): Bump crate-ci/typos from 1.40.0 to 1.40.1 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1626
Add ERC20WrapperComponent by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1617
chore: bump license year to 2026 by @rejected-l in https://github.com/OpenZeppelin/cairo-contracts/pull/1628
Chore(deps): Bump crate-ci/typos from 1.40.1 to 1.41.0 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1627
Add ERC721Wrapper by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1625
Bump scarb to 2.15.1 and snforge to 0.55.0 by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1631
Add ERC1155Supply extension by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1632
Update contract sizes benchmark by @github-actions[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1634
Enable missing components in macros by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1635
Chore(deps): Bump crate-ci/typos from 1.41.0 to 1.42.1 by @dependabot[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1636
feat: implement ERC-6909 multi-token standard (continuation of #1040) by @0xpantera in https://github.com/OpenZeppelin/cairo-contracts/pull/1594
Add ERC721Consecutive extension by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1630
Update contract sizes benchmark by @github-actions[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1637
ERC721URIStorage component by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1639
Update contract sizes benchmark by @github-actions[bot] in https://github.com/OpenZeppelin/cairo-contracts/pull/1641
ERC1155URIStorage component by @immrsd in https://github.com/OpenZeppelin/cairo-contracts/pull/1642
Add disclaimer to erc721 components by @ericnordelo in https://github.com/OpenZeppelin/cairo-contracts/pull/1638
New Contributors
@vastonus made their first contribution in https://github.com/OpenZeppelin/cairo-contracts/pull/1561
@rejected-l made their first contribution in https://github.com/OpenZeppelin/cairo-contracts/pull/1603
@0xpantera made their first contribution in https://github.com/OpenZeppelin/cairo-contracts/pull/1594
Full Changelog: https://github.com/OpenZeppelin/cairo-contracts/compare/v3.0.0...v4.0.0-alpha.0