Changelog

v0.3.0 - 2025-09-10

Added

  • UUPS Proxy: UUPSUpgradeable contract and IErc1822Proxiable trait for user-controlled upgradeable proxies.
  • Beacon Proxy: BeaconProxy contract and IBeacon interface, supporting the beacon proxy pattern for upgradeable contracts.
  • Upgradeable Beacon: UpgradeableBeacon contract, allowing upgradeable beacon-based proxies with owner-controlled implementation upgrades.
  • Enumerable Sets: Generic EnumerableSet type with implementations for Address, B256, U8, U16, U32, U64, U128, U256.
  • Token Receivers: IErc1155Receiver and IErc721Receiver traits with corresponding Erc1155Holder and Erc721Holder contracts.
  • Access Control Extensions: AccessControlEnumerable extension that supports role member enumeration.
  • Enhanced SafeERC20: Additional methods including try_safe_transfer, try_safe_transfer_from, and relaxed call variants.
  • Cryptography: EDDSA (Ed25519) signature scheme, Twisted-Edwards Curves, and enhanced elliptic curve configurations (secp256k1, Baby Jubjub, Bandersnatch, Curve25519, Jubjub).
  • Precompiles: Enhanced Precompiles trait with p256_verify wrapper function for ergonomic precompile invocation.
  • Type Conversions: Bidirectional conversions between ruint::Uint and crypto library Uint types, plus conversions between Uint and primitive integer types.

Changed

  • Type Aliases: Standardized FixedBytes<4> to B32, FixedBytes<32> to B256, and StorageFixedBytes<32> to StorageB256.
  • API Simplifications: Simplified Pedersen hash API to accept any type implementing Into<P::BaseField>.
  • Interface Compliance: Removed redundant interface ID checks in Erc1155Supply.

Changed (Breaking)

  • Interface Naming: Renamed Solidity interfaces for consistency (IERC721ReceiverIErc721ReceiverInterface, IERC1155ReceiverIErc1155ReceiverInterface).
  • Trait Bounds: Added IErc721Receiver trait bound to IErc721Wrapper trait.
  • Error Handling: Replaced associated error types with raw byte output (Vec<u8>) in receiver traits for ABI compliance.
  • Deref Removal: Removed Deref implementations for extension contracts to improve API clarity.
  • API Simplifications: Prefix ct_ removed for constant functions at openzeppelin-crypto.

Full Changelog: https://github.com/OpenZeppelin/rust-contracts-stylus/compare/v0.2.0...v0.3.0.

Changes

v0.2.0 - 2025-06-20

Added

  • ERC-1155 token (Erc1155, Burnable, MetadataUri, Supply, UriStorage).
  • ERC-4626 “Tokenized Vault Standard” and ERC-20 Flash Mint extension.
  • ERC-2981 on-chain royalties.
  • ERC-20 Utils: SafeErc20.
  • Finance: VestingWallet.
  • Ownership: Ownable2Step.
  • Token wrappers: Erc20Wrapper, Erc721Wrapper.
  • Cryptography: Poseidon2 hash, Pedersen hash (Starknet params), Short-Weierstrass Curves.
  • Math & utils: optimised Uint<_> big-integer ops (mul_div, shift-left/right, checked/unchecked add/sub).
  • Constructors now supported across all contracts.
  • All events derive Debug; contracts implement MethodError and IErc165.

Changed

  • Keccak constants pre-computed at compile-time.
  • Optimisations across contracts and crypto libraries.

Changed (Breaking)

  • Stylus SDK ↑ to v0.9.0 (cargo-stylus ↑ to v0.6.0)
  • Contracts refactored to new inheritance model.
  • Interface IDs now returned by fn interface_id(); IErc165::supports_interface takes &self; Erc165 struct removed.
  • Public state fields made private.
  • Feature std removed from libraries.

Fixed

  • Correct ERC-165 IDs for IErc721Metadata, IErc721Enumerable, etc.
  • #[interface_id] macro now propagates super-traits correctly.
  • Edge-cases in Merkle proofs, big-int overflows and re-entrancy bugs resolved.

Full Changelog: https://github.com/OpenZeppelin/rust-contracts-stylus/compare/v0.1.2...v0.2.0.

Changes

v0.1.2 - 2025-04-12

Summary

Breaking Change

  • build: in v0.1.1 bump sdk to 0.6.1. #628

Full Changelog: https://github.com/OpenZeppelin/rust-contracts-stylus/compare/v0.1.1...v0.1.2

Changes

v0.1.1 - 2024-10-28

Summary

Changed

  • Mini alloc is now used by default via the stylus-sdk. This avoids conflicts with duplicate #[global_allocator] definitions. #373
  • Removed the panic handler from the library, making it easier for std and no_std projects to use the library. #373

Full Changes List

Full Changelog: https://github.com/OpenZeppelin/rust-contracts-stylus/compare/v0.1.0...v0.1.1

Changes

v0.1.0 - 2024-10-17

First release 🎉

Changes