Changelog
v0.3.0 - 2025-09-10
Added
- UUPS Proxy:
UUPSUpgradeable
contract andIErc1822Proxiable
trait for user-controlled upgradeable proxies. - Beacon Proxy:
BeaconProxy
contract andIBeacon
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 forAddress
,B256
,U8
,U16
,U32
,U64
,U128
,U256
. - Token Receivers:
IErc1155Receiver
andIErc721Receiver
traits with correspondingErc1155Holder
andErc721Holder
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 withp256_verify
wrapper function for ergonomic precompile invocation. - Type Conversions: Bidirectional conversions between
ruint::Uint
and crypto libraryUint
types, plus conversions betweenUint
and primitive integer types.
Changed
- Type Aliases: Standardized
FixedBytes<4>
toB32
,FixedBytes<32>
toB256
, andStorageFixedBytes<32>
toStorageB256
. - 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 (
IERC721Receiver
→IErc721ReceiverInterface
,IERC1155Receiver
→IErc1155ReceiverInterface
). - Trait Bounds: Added
IErc721Receiver
trait bound toIErc721Wrapper
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 atopenzeppelin-crypto
.
Full Changelog: https://github.com/OpenZeppelin/rust-contracts-stylus/compare/v0.2.0...v0.3.0.
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 implementMethodError
andIErc165
.
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.
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
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
andno_std
projects to use the library. #373
Full Changes List
- fix: reference-types error on nightly version by @qalisander in #375
- fix: use mini-alloc by default and remove panic handler by @qalisander and @ggonzalez94 in #373
- build: bump v0.1.1 by @bidzyyys in #382
Full Changelog: https://github.com/OpenZeppelin/rust-contracts-stylus/compare/v0.1.0...v0.1.1
v0.1.0 - 2024-10-17
First release 🎉