Skip to content

Commit 47ad800

Browse files
bidzyyysqalisander
andauthored
build: v0.3.0 (#844)
Co-authored-by: Alisander Qoshqosh <[email protected]>
1 parent 2177213 commit 47ad800

37 files changed

+125
-110
lines changed

CHANGELOG.md

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,39 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [v0.3.0] - 2025-09-10
9+
10+
> **Heads-up:** this is the production release after one alpha and one release candidate
11+
> (`alpha.1`, `rc.1`). The items below aggregate the _user-facing_ changes
12+
> since **v0.2.0**. For the step-by-step evolution, see the individual
13+
> pre-release sections further down.
914
1015
### Added
1116

12-
- Implement `EnumerableSet::values_slice` to prevent out-of-gas scenarios when querying large sets by returning paginated results. #827
17+
- **UUPS Proxy**: `UUPSUpgradeable` contract and `IErc1822Proxiable` trait for user-controlled upgradeable proxies.
18+
- **Beacon Proxy**: `BeaconProxy` contract and `IBeacon` interface, supporting the beacon proxy pattern for upgradeable contracts.
19+
- **Upgradeable Beacon**: `UpgradeableBeacon` contract, allowing upgradeable beacon-based proxies with owner-controlled implementation upgrades.
20+
- **Enumerable Sets**: Generic `EnumerableSet` type with implementations for `Address`, `B256`, `U8`, `U16`, `U32`, `U64`, `U128`, `U256`.
21+
- **Token Receivers**: `IErc1155Receiver` and `IErc721Receiver` traits with corresponding `Erc1155Holder` and `Erc721Holder` contracts.
22+
- **Access Control Extensions**: `AccessControlEnumerable` extension that supports role member enumeration.
23+
- **Enhanced SafeERC20**: Additional methods including `try_safe_transfer`, `try_safe_transfer_from`, and relaxed call variants.
24+
- **Cryptography**: EDDSA (Ed25519) signature scheme, Twisted-Edwards Curves, and enhanced elliptic curve configurations (secp256k1, Baby Jubjub, Bandersnatch, Curve25519, Jubjub).
25+
- **Precompiles**: Enhanced `Precompiles` trait with `p256_verify` wrapper function for ergonomic precompile invocation.
26+
- **Type Conversions**: Bidirectional conversions between `ruint::Uint` and crypto library `Uint` types, plus conversions between `Uint` and primitive integer types.
1327

14-
### Changed (Breaking)
28+
### Changed
1529

16-
- Updated the `UUPSUpgradeable` logic for determining where the call originated. #810
17-
- Prefix `ct_` removed for constant functions at `openzeppelin-crypto`. #846
30+
- **Type Aliases**: Standardized `FixedBytes<4>` to `B32`, `FixedBytes<32>` to `B256`, and `StorageFixedBytes<32>` to `StorageB256`.
31+
- **API Simplifications**: Simplified Pedersen hash API to accept any type implementing `Into<P::BaseField>`.
32+
- **Interface Compliance**: Removed redundant interface ID checks in `Erc1155Supply`.
1833

19-
### Fixed
34+
### Changed (Breaking)
2035

21-
- Proper Bandersnatch and Jubjub elliptic curves parameters. #809
22-
- `AdminChanged` event parameters no longer indexed. #794
23-
- Fix `ruint::Uint` padding for conversion to `Uint`. #808
24-
- Improved panic description for twisted edwards point conversions. #816
25-
- Fix edge case with U64 -> u128 conversion. #815
26-
- Conditional compilation in storage slot utilities causing build failures across different target architectures and feature combinations. #823
27-
- Add code check and use high-level calls in `SafeErc20::*_relaxed` calls to handle boolean decoding. #837
28-
- Add code check and use high-level calls in `SafeErc20::allowance` to handle U256 decoding. #833
29-
- Prevent ECDSA signature malleability in `P256VERIFY` precompile by rejecting high-s values. #825
30-
- Fixed zeroization for eddsa `ExpandedSecretKey` and `SigningKey`. #831
31-
- Add constant `HAS_MODULUS_SPARE_BIT` to `PrimeField`. #835
32-
- Add constant `Uint::from_uint(..)` function. `Fp::from_fp(..)` is now constant also. #834
33-
- Fixed incorrect transformation for Projective Points with Zero z-coordinate. #817
36+
- **Interface Naming**: Renamed Solidity interfaces for consistency (`IERC721Receiver``IErc721ReceiverInterface`, `IERC1155Receiver``IErc1155ReceiverInterface`).
37+
- **Trait Bounds**: Added `IErc721Receiver` trait bound to `IErc721Wrapper` trait.
38+
- **Error Handling**: Replaced associated error types with raw byte output (`Vec<u8>`) in receiver traits for ABI compliance.
39+
- **Deref Removal**: Removed `Deref` implementations for extension contracts to improve API clarity.
40+
- **API Simplifications**: Prefix `ct_` removed for constant functions at `openzeppelin-crypto`.
3441

3542
## [v0.3.0-rc.1] - 2025-08-07
3643

Cargo.lock

Lines changed: 36 additions & 36 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ authors = ["OpenZeppelin"]
9191
edition = "2021"
9292
license = "MIT"
9393
repository = "https://github.com/OpenZeppelin/rust-contracts-stylus"
94-
version = "0.3.0-rc.1"
94+
version = "0.3.0"
9595

9696
[workspace.lints.rust]
9797
missing_docs = "warn"

0 commit comments

Comments
 (0)