Releases: OpenZeppelin/cairo-contracts
v0.3.1
This patch release mainly removes the unneeded dependency on nile(#419) thus preventing warning message when there's a version mismatch.
What's Changed
- Update documentation links to 0.3.0 by @pscott in #416
- Update pinned tox deps, remove nile from setup.cfg by @andrew-fleming in #419
- Fix docs example by @martriay in #428
- Fix account preset link in extensibility.adoc by @ivpavici in #431
- Automate docsite links bump by @andrew-fleming in #420
New Contributors
Full Changelog: v0.3.0...v0.3.1
v0.3.0
Highlights
- new docsite: https://docs.openzeppelin.com/contracts-cairo
- revamped directory structure, and therefore import paths
- new utility to deploy accounts
What's Changed
- fix: remove unused imports by @ca11ab1e in #400
- Add AccessControl docs by @andrew-fleming in #368
- style: update SPDX license identifiers by @ca11ab1e in #399
- Update ownable check to validate zero address by @JulissaDantes in #398
- Refactor directory structure by @andrew-fleming in #350
- Bump Nile version to 0.7.1 by @EvolveArt in #381
- Fix setup.cfg version by @martriay in #406
- Integrate docsite by @martriay in #396
- Deploy account util by @andrew-fleming in #339
- Update docsite links to match new docsite by @martriay in #410
- Fix docs example by @martriay in #413
- Add script to update version by @andrew-fleming in #405
New Contributors
- @ca11ab1e made their first contribution in #400
- @EvolveArt made their first contribution in #381
Full Changelog: v0.2.1...v0.3.0
v0.8.0-beta.1
This beta release introduces the ERC20Votes
extension and preset along with some of its dependencies such as Votes
, Nonces
, Checkpoints
, EIP712
, StorageArray
, as well as introducing before/after hooks to ERC20
.
v0.8.0-beta.0
What's Changed
- Fix links in doc site by @ericnordelo in #776
- Migrate SRC5 to component by @ericnordelo in #767
- Migrate ReentrancyGuard to component by @andrew-fleming in #775
- Fix typos by @xiaolou86 in #784
- Migrate Ownable to component by @ericnordelo in #768
- Migrate Initializable to component by @andrew-fleming in #764
- Migrate Pausable to component by @andrew-fleming in #773
- Migrate AccessControl to component by @ericnordelo in #770
- Add mentions to our public roadmap by @martriay in #793
- Migrate Upgrades to component by @ericnordelo in #792
- Bump Scarb and Cairo to 2.3.0 by @ericnordelo in #797
New Contributors
- @xiaolou86 made their first contribution in #784
Full Changelog: v0.7.0...v0.8.0-beta.0
v0.7.0
This is the very first release of the OpenZeppelin Contracts for Cairo 1+, and the result of ~10 months of very hard work.
It’s been a long way, and now the end of the transition feels near. A new stage of maturity is ahead 🌺🚀.
Usage
Install the library as a scarb dependency:
[dependencies]
openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.7.0" }
It requires scarb 0.7.0 and supports Cairo 2.2.0.
What has changed?
Most things! This is a brand new library written in a new language with a new type system. It exposes a new API and usage model (no more extensibility pattern), which will be continually improved.
The feature set is pretty much the same as previous versions with few notable differences:
ERC1155
andUniversalDeployer
(UDC) are still in development- no
EthAccount
library (yet) - almost no presets like
ERC20Upgradeable
,ERC721Mintable
, etc. (yet) - upgrades are now based on the
replace_class
syscall- no
Proxy
module either (can’t be implemented in Cairo 1+)
- no
This library also:
- uses SRC5 instead of ERC165 for contract introspection
- follows the great interface migration plan implementing dual interfaces (snake and camel case ones), while also providing dual-case dispatchers to interface with contracts implementing either standard
- is distributed as a scarb package
What’s in it?
This release candidate includes a revamped docsite along with the following modules:
- Account
- Upgrades
- Introspection module (SRC5)
- Dual interface ABI dispatchers
- Tokens
- ERC20
- ERC721
- Access
- AccessControl
- Ownable
- Security
- Pausable
- Initializable
- Reentrancy guard
Acknowledgements
by @martriay
The main heroes of this story are @ericnordelo and @andrew-fleming. Over 10 months of relentless work, design, discussions, reviews back and forth, hitting the wall many times with the tooling, language, bugs, missing features. None of that stopped them. And here's the result, for the entire ecosystem to build and enjoy. Thank you.
Also thank you very much to our community of contributors, with special mention for recent contributions to @milancermak who contributed not only code but also ideas, @Amxx, @frangio, @maciektr and the scarb team, and @bal7hazar. This is thanks to you too.
v0.7.0-rc.0
This is the very first (pre) release of the OpenZeppelin Contracts for Cairo 1+, and the first official release in 7 months.
It’s been a long way, but now end of the transition feels near. A new stage of maturity is ahead 🌺🚀.
Warning
This release candidate is NOT storage-compatible with previous Contracts for Cairo versions (e.g.v0.6.1
), it is not safe to upgrade previously deployed contracts to this version. This is fixed in the actual release (v0.7.0
), where contracts are storage-compatible with previous versions likev0.6.1
.
Usage
Install the library as a scarb dependency:
[dependencies]
openzeppelin = { git = "https://github.com/OpenZeppelin/cairo-contracts.git", tag = "v0.7.0-rc.0" }
It requires scarb 0.7.0 and supports Cairo 2.2.0
What has changed?
Most things! This is a brand new library written in a new language with a new type system. It exposes a new API and usage model (no more extensibility pattern), which will be continually improved.
The feature set is pretty much the same as previous versions with few notable differences:
ERC1155
andUniversalDeployer
(UDC) are still in development- no
EthAccount
library (yet) - almost no presets like
ERC20Upgradeable
,ERC721Mintable
, etc. (yet) - upgrades are now based on the
replace_class
syscall- no
Proxy
module either (can’t be implemented in Cairo 1+)
- no
This library also:
- uses SRC5 instead of ERC165 for contract introspection
- follows the great interface migration plan implementing dual interfaces (snake and camel case ones), while also providing dual-case dispatchers to interface with contracts implementing either standard
- is distributed as a scarb package
What’s in it?
This release candidate includes the following modules:
- basic account
- upgrades
- introspection module (SRC5)
- dual interface ABI dispatchers
- tokens
- ERC20
- ERC721
- access
- AccessControl
- Ownable
- security
- Pausable
- Initializable
- Reentrancy guard
v0.2.1
This release mainly fixes #386, which rendered account contracts unusable on live networks.
What's Changed
- Fix typo in tests/signers.py by @0xSachinK in #380
- Update Proxies.md by @Wave-95 in #388
- Fix account signature by @andrew-fleming in #387
- Remove old security advisory from README by @martriay in #391
- Fix proxy assertion by @andrew-fleming in #394
- Simplify paths for fetching contract classes in tests by @andrew-fleming in #377
- Update extensibility pattern by @martriay in #397
New Contributors
- @0xSachinK made their first contribution in #380
- @Wave-95 made their first contribution in #388
Full Changelog: v0.2.0...v0.2.1
v0.2.0
What's Changed
Key points:
- Improved Extensibility pattern, based on namespaces
- New accounts (improved library + new
EthAccount
preset) - AccessControl and ReentrancyGuard libraries
- Support for Cairo 0.9.0
Full changelog:
- dev: removing duplicate function by @milancermak in #234
- Set interface ids as constants by @andrew-fleming in #216
- use
tx_info.transaction_hash
instead ofhash_multicall
in Account by @juniset in #233 - Fix pytest warnings, move
event_loop
to conftest.py by @andrew-fleming in #231 - Update documentation by @andrew-fleming in #214
- Fix decorator by @andrew-fleming in #243
- Add contributing file by @JulissaDantes in #230
- Integrate safemath into token contracts by @andrew-fleming in #222
- Add memoization to erc20 by @andrew-fleming in #217
- Rename cairo contracts -> oz contracts for cairo by @martriay in #248
- Update readme by @martriay in #245
- Add parallel testing by @andrew-fleming in #235
- Update contributing by @JulissaDantes in #251
- Implement a reentrancy guard by @JulissaDantes in #236
- Remove decorator, unused function, and import by @andrew-fleming in #253
- dev: support for cairo-lang 0.8.1 in tests by @milancermak in #260
- remove src from import paths by @martriay in #264
- Update README.md by @JulissaDantes in #255
- Update links in docs by @ericglau in #270
- replace constants' TRUE and FALSE in favor of native ones by @martriay in #265
- fix: change
initialized
visibility to@view
by @0xSidius in #276 - Prefer cairo syntax highlighting in Markdown files by @rootulp in #278
- More cairo syntax highlighting by @rootulp in #280
- Pin marshmallow and cairo-lang, gitignore node.json by @andrew-fleming in #286
- Fix IAccount import by @andrew-fleming in #292
- Reformat docs and fix ERC721 import example by @andrew-fleming in #284
- Refactor erc20 around the _spendAllowance function by @Amxx in #240
- Add Solidity/Cairo upgrades comparison by @andrew-fleming in #272
- Add namespace to ERC165 by @andrew-fleming in #298
- Add namespace to Upgrades by @andrew-fleming in #300
- dockerized testing by @koloz193 in #299
- Use Nile's Signer by @andrew-fleming in #283
- Separate
Initializable
into lib/contract, integrate namespace by @andrew-fleming in #301 - Update Account to namespace, fix docs by @andrew-fleming in #297
- Integrate namespace into ReentrancyGuard by @andrew-fleming in #305
- Integrate namespace and events to Pausable by @andrew-fleming in #310
- Update extensibility pattern by @martriay in #303
- added pull request template by @koloz193 in #316
- Update cairo-lang in tox by @andrew-fleming in #325
- Add parallel testing section to readme by @andrew-fleming in #320
- Fix
is_valid_signature
decorator by @martriay in #330 - Move ERC165 (Introspection) docs to its own page by @andrew-fleming in #322
- Add missing section to extensibility docs by @andrew-fleming in #332
- Rename library constructors to initializers by @martriay in #319
- Integrate namespace in SafeMath by @andrew-fleming in #311
- Refactor Ownable by @Amxx in #244
- Fix erc165 link by @andrew-fleming in #343
- Fix Account reentrant signature reutilization bug by @andrew-fleming in #347
- Add security advisory about Account vulnerability in README by @spalladino in #349
- Add return value to is_valid_signature by @pscott in #338
- Add error message for invalid nonce error by @jonasalexander in #355
- remove unnecessary
alloc_locals
in erc20 library by @andrew-fleming in #358 - Optimize
_remove_token_from_all_tokens_enumeration
by @andrew-fleming in #326 - Add SECURITY.md by @nikitastupin in #353
- Add markdown linter to CI by @andrew-fleming in #342
- Fix erc721
transferFrom
comment by @andrew-fleming in #341 - Use of namespaces for ERC721 & ERC721Enumerable by @Amxx in #296
- Fix
TestSigner
pytest warning by @andrew-fleming in #367 - Add RELEASING.md by @martriay in #363
- Add access docs for Ownable by @andrew-fleming in #352
- Update to cairo v0.9.0 by @andrew-fleming in #364
- Eth account support by @JulissaDantes in #361
- Fix misleading instructions in README by @andrew-fleming in #371
- Remove duplicate entry in
.github/ISSUE_TEMPLATE/feature_request.md
by @nikitastupin in #375 - Implement AccessControl by @martriay in #373
- Bump SPDX Licence ids to 0.2.0 by @martriay in #376
New Contributors
- @milancermak made their first contribution in #234
- @JulissaDantes made their first contribution in #230
- @ericglau made their first contribution in #270
- @0xSidius made their first contribution in #276
- @rootulp made their first contribution in #278
- @koloz193 made their first contribution in #299
- @spalladino made their first contribution in #349
- @pscott made their first contribution in #338
- @jonasalexander made their first contribution in #355
- @nikitastupin made their first contribution in #353
Full Changelog: 0.1.0...v0.2.0
First release 🎉
Fix event param in erc20 and erc721 (#226) * fix _from param * replace _from with from_ * update _from in docs