All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- SRC9 (Outside Execution) integration to account presets (#1201)
SNIP12HashSpanImpl
toopenzeppelin_utils::cryptography::snip12
(#1180)- GovernorComponent with the following extensions: (#1180)
- GovernorCoreExecutionComponent
- GovernorCountingSimpleComponent
- GovernorSettingsComponent
- GovernorTimelockExecutionComponent
- GovernorVotesQuorumFractionComponent
- GovernorVotesComponent
is_tx_version_valid
utility function toopenzeppelin_account::utils
(#1224)
- Remove
mut
fromdata
param incompute_hash_on_elements
(#1206) - Remove
mut
fromcalls
param in__execute__
function of Account and EthAccount components (#1224) - Remove
mut
fromcalls
param in__validate__
function of Account and EthAccount components (#1224)
- The initializer in
OwnableComponent
now checks thatowner
is not the zero address (#1221) - Add
verifying_contract
member to theDelegation
struct used in Votesdelegate_by_sig
(#1214) use crate::votes::VotesComponent::VotingUnitsTrait; - VotingUnitsTrait moved from
openzeppelin_governance::votes::votes
toopenzeppelin_governance::votes::VotesComponent
(#1214) - VestingComponent
release
function won't emit an event or attempt to transfer when the amount is zero (#1209) - Bump snforge_std to v0.33.0 (#1203)
- Multisig component (#1193)
is_valid_p256_signature
utility function toopenzeppelin_account::utils::signature
(#1189)Secp256r1KeyPair
type and helpers toopenzeppelin_testing::signing
(#1189)all_tokens_of_owner
function toERC721EnumerableComponent
fetching all owner's tokens in a single call (#1196)- Embeddable impls for ERC2981 component (#1173)
ERC2981Info
with read functions for discovering the component's stateERC2981AdminOwnable
providing admin functions for a token that implements Ownable componentERC2981AdminAccessControl
providing admin functions for a token that implements AccessControl component
- Refactor
openzeppelin_account::utils::secp256k1
module toopenzeppelin_account::utils::secp256_point
(#1189)Secp256k1PointStorePacking
replaced by a genericSecp256PointStorePacking
Secp256k1PointPartialEq
replaced by a genericSecp256PointPartialEq
DebugSecp256k1Point
replaced by a genericDebugSecp256Point
- Apply underscore pattern to the internal functions of
ERC2981Component
to prevent collisions with new external functions (#1173) - Move
Hash
andPartialEq
impls ofCall
struct fromopenzeppelin_governance::timelock::utils
toopenzeppelin_governance::utils
(#1193)
VotesComponent
with implementation for ERC721 and ERC20 tokens (#1114)IUpgradeAndCall
interface (#1148)upgrade_and_call
function in UpgradeableComponent's InternalImpl (#1148)ERC20Permit
impl forERC20Component
facilitating token approvals via off-chain signatures (#1140)ISNIP12Metadata
interface for discovering name and version of a SNIP-12 impl (#1140)SNIP12MetadataExternal
impl ofISNIP12Metadata
interface forERC20Component
(#1140)
- Bump scarb to v2.8.4 (#1146)
- Remove
ERC20Votes
component in favor ofVotesComponent
(#1114)Trace
is now declared as astorage_node
and now usesVec
instead ofStorageArray
.delegate_by_sig
signature
param in theIVotes
interface updated fromArray<felt252>
toSpan<felt252>
.
- Remove
StorageArray
fromopenzeppelin_utils
(#1114) - Bump snforge to 0.31.0
- Remove openzeppelin_utils::selectors (#1163)
- Remove
DualCase dispatchers
(#1163)- Remove
try_selector_with_fallback
fromopenzeppelin_utils
- Remove
unwrap_and_cast
module fromopenzeppelin_utils
- Remove
openzeppelin_access::accesscontrol::dual_accesscontrol
- Remove
openzeppelin_access::ownable::dual_ownable
- Remove
openzeppelin_account::dual_account
- Remove
openzeppelin_account::dual_eth_account
- Remove
openzeppelin_token::erc20::dual20
- Remove
openzeppelin_token::erc721::dual721
- Remove
openzeppelin_token::erc721::dual721_receiver
- Remove
openzeppelin_token::erc1155::dual1155
- Remove
openzeppelin_token::erc1155::dual1155_receiver
- Remove
SRC9Component
now usesISRC6Dispatcher
instead ofDualCaseAccount
(#1163)ERC20VotesComponent
now usesISRC6Dispatcher
instead ofDualCaseAccount
(#1163)ERC721Component
now usesIERC721ReceiverDispatcher
instead ofDualCaseERC721Receiver
(#1163)ERC1155Component
now usesIERC1155ReceiverDispatcher
instead ofDualCaseERC1155Receiver
(#1163)
into_base_16_string_no_padding
function to the test helpers (#1137)- SRC9 (OutsideExecution) component (#1150)
- Vesting component and VestingWallet preset (#1116)
- Bump scarb to v2.8.2 (#1137)
- Bump snforge to 0.30.0 (#1137)
declare_class
,declare_and_deploy
, anddeclare_and_deploy_at
will skip declaration if the contract is already declared (#1137)- Bump edition to 2024_07 (#1138)
execute_calls
function from account utils (#1150)- calls param type changed from
Array<Call>
toSpan<Call>
- calls param type changed from
- DualCase dispatchers
- ERC721Enumerable component (#983)
- ERC2981 (NFT Royalty Standard) component (#1091)
merkle_tree
package with utilities to verify proofs and multi proofs (#1101)
- Bump snforge to v0.27.0 (#1107)
- Bump scarb to v2.8.0 (#1120)
- Changed ABI suffix to Trait in dual case account and eth account modules (#1096)
DualCaseAccountABI
renamed toDualCaseAccountTrait
DualCaseEthAccountABI
renamed toDualCaseEthAccountTrait
- Removed
_accept_ownership
fromOwnableComponent::InternalImpl
OwnableTwoStep
allowing a pending owner to accept ownership after the original owner has renounced ownership (#1119)
- Remove token dependency from account package (#1100)
- Fix docsite links (#1094)
- TimelockController component (#996)
- HashCall implementation (#996)
- Separated package for each submodule (#1065)
openzeppelin_access
openzeppelin_account
openzeppelin_governance
openzeppelin_introspection
openzeppelin_presets
openzeppelin_security
openzeppelin_token
openzeppelin_upgrades
openzeppelin_utils
- Separated packages intended as [dev-dependencies] (#1084)
openzeppelin_testing
openzeppelin_test_common
- Bump scarb to v2.7.0-rc.1 (#1025)
- Bump scarb to v2.7.0-rc.2 (#1052)
- Bump scarb to v2.7.0-rc.4 (#1064)
- Bump scarb to v2.7.0 (#1065)
- Test utilities moved out of the utils module (#1084).
- Test utilities refactored to match the snforge test runner (#1084).
Trace
,Checkpoint
, andStorageArray
structs made public.
- Removed
num_checkpoints
andcheckpoints
fromERC20VotesABI
.
-
Migrated to the
2023_11
edition (#995):- Component implementations annotated with
#[embeddable_as()]
(e.g:AccessControlComponent::AccessControl
) are not public anymore. Note that the embeddable versions are still public (e.g:AccessControlComponent::AccessControlImpl
). - Implementations that can be compiler-derived from traits are not public anymore (e.g:
DualCaseAccessControlImpl
is not public whileDualCaseAccessControlTrait
is). Secp256k1PointPartialEq
andDebugSecp256k1Point
are not public anymore.account::utils::execute_single_call
is not public anymore.- Presets are not public anymore, since they should be copied into projects, and not directly imported.
Trace
andCheckpoint
structs are not public anymore, since they are intended to be used inERC20Votes
, and not as generic utilities.StorageArray
is not public anymore, since this implementation is specific toERC20Votes
, and is not intended as a generic utility, but as a temporary solution until Starknet native implementation arrives.
- Component implementations annotated with
-
Apply underscore pattern to modules (#993):
- AccessControlComponent
_set_role_admin
function renamed toset_role_admin
- PausableComponent
_pause
function renamed topause
_unpause
function renamed tounpause
- UpgradeableComponent
_upgrade
function renamed toupgrade
- ERC20Component:
_mint
function renamed tomint
_burn
function renamed toburn
_update
function renamed toupdate
- ERC721Component:
_safe_transfer
function renamed tosafe_transfer
_safe_mint
function renamed tosafe_mint
_mint
function renamed tomint
_transfer
function renamed totransfer
_burn
function renamed toburn
_update
function renamed toupdate
- ERC1155Component:
set_base_uri
function renamed to_set_base_uri
- AccessControlComponent
- Sending transactions section in account docs (#981)
- before_update and after_update hooks to ERC721Component (#978)
- before_update and after_update hooks to ERC1155Component (#982)
- ERC721Component internal implementation to support transfer, mint, and burn flows going through an
_update
function (#978) - ERC721Component implementations now require an ERC721HooksTrait implementation in scope (#978)
- ERC1155Component implementations now require an ERC1155HooksTrait implementation in scope (#982)
- AccountComponent, preset, and dispatcher now require a
signature
param in the public-key-setter functions (#989) - EthAccountComponent, preset, and dispatcher now require a
signature
param in the public-key-setter functions (#990)
- before_update and after_update hooks to ERC20Component (#951)
- INSUFFICIENT_BALANCE and INSUFFICIENT_ALLOWANCE errors to ERC20Component (#951)
- ERC20Votes component (#951)
- Preset interfaces (#964)
- UDC docs (#954)
- Util functions to precompute addresses (#954)
- Allow testing utilities to be importable (#963)
- Utilities documentation (#963)
- Parameter name in
tests::utils::drop_events
(count
->n_events
) (#963) - Presets to include upgradeable functionality (#964)
- ERC20, ERC721, and ERC1155 presets include Ownable functionality (#964)
- EthAccount
- Expected signature format changed from
(r, s, y)
to(r, s)
(#940)
- Expected signature format changed from
- SNIP12 utilities for on-chain typed messages hash generation (#935)
- Nonces component utility (#935)
- Presets Usage guide (#949)
- UDC preset contract (#919)
- ERC1155Component and ERC1155ReceiverComponent mixins (#941)
- ERC721ReceiverComponent documentation (#945)
- ERC721ReceiverComponent mixin embeddable implementation name (#945)
- DualCase SRC5 (#882, #952)
- ERC1155 component and preset (#896)
- Mixin implementations in components (#863)
- ERC721Component functions and Storage member
InternalTrait::_set_base_uri
andInternalTrait::_base_uri
to handle ByteArrays (#857)ERC721_base_uri
Storage member to store the base URI (#857)
- Change unwrap to unwrap_syscall (#901)
- ERC20Component
IERC20::name
andIERC20::symbol
return ByteArrays instead of felts (#857)
- ERC721Component
IERC721::name
,IERC721::symbol
, andIERC721Metadata::token_uri
return ByteArrays instead of felts (#857)InternalTrait::initializer
accepts an additionalbase_uri
ByteArray parameter (#857)- IERC721Metadata SRC5 interface ID. This is changed because of the ByteArray integration (#857)
- ERC721Component function and Storage member
InternalTrait::_set_token_uri
because individual token URIs are no longer stored (#857)ERC721_token_uri
Storage member because individual token URIs are no longer stored (#857)
- EthAccount component and preset (#853)
- Ownable two-step functionality (#809)
- Bump scarb to v2.4.4 (#853)
- Bump scarb to v2.5.3 (#898)
- OwnershipTransferred event args are indexed (#809)
- Non standard increase_allowance and decrease_allowance functions in ERC20 contract (#881)
- Documentation for SRC5 migration (#821)
- Usage docs (#823)
- Utilities documentation (#825)
- Documentation for presets (#832)
- Backwards compatibility notice (#861)
- Add automatic version bump to CI (#862)
- Use ComponentState in tests (#836)
- Docsite navbar (#838)
- Account events indexed keys (#853)
- Support higher tx versions in Account (#858)
- Bump scarb to v2.4.1 (#858)
- Add security section to Upgrades docs (#861)