Library for secure smart contract development written in Cairo
Project description
OpenZeppelin Cairo Contracts
A library for secure smart contract development written in Cairo for StarkNet, a decentralized ZK Rollup.
⚠️ WARNING! ⚠️
This is repo contains highly experimental code. Expect rapid iteration. Do not use in production.
Installation
First time?
Before installing Cairo on your machine, you need to install gmp
:
sudo apt install -y libgmp3-dev # linux
brew install gmp # mac
If you have any troubles installing gmp on your Apple M1 computer, here’s a list of potential solutions.
Set up the project
Clone the repository
git clone git@github.com:OpenZeppelin/cairo-contracts.git
cd
into it and create a Python virtual environment:
cd cairo-contracts
python3 -m venv env
source env/bin/activate
Install the Nile dev environment and then run install
to get the Cairo language, a local network, and a testing framework.
pip install cairo-nile
nile install
Usage
Compile the contracts
nile compile --directory openzeppelin
🤖 Compiling all Cairo contracts in the openzeppelin directory
🔨 Compiling openzeppelin/introspection/ERC165.cairo
🔨 Compiling openzeppelin/introspection/IERC165.cairo
🔨 Compiling openzeppelin/token/erc721/ERC721_Mintable_Burnable.cairo
🔨 Compiling openzeppelin/token/erc721/ERC721_Mintable_Pausable.cairo
🔨 Compiling openzeppelin/token/erc721/library.cairo
🔨 Compiling openzeppelin/token/erc721/interfaces/IERC721_Metadata.cairo
🔨 Compiling openzeppelin/token/erc721/interfaces/IERC721.cairo
🔨 Compiling openzeppelin/token/erc721/interfaces/IERC721_Receiver.cairo
🔨 Compiling openzeppelin/token/erc721/utils/ERC721_Holder.cairo
🔨 Compiling openzeppelin/token/erc20/ERC20_Mintable.cairo
🔨 Compiling openzeppelin/token/erc20/ERC20.cairo
🔨 Compiling openzeppelin/token/erc20/library.cairo
🔨 Compiling openzeppelin/token/erc20/ERC20_Pausable.cairo
🔨 Compiling openzeppelin/token/erc20/interfaces/IERC20.cairo
🔨 Compiling openzeppelin/token/erc721_enumerable/ERC721_Enumerable_Mintable_Burnable.cairo
🔨 Compiling openzeppelin/token/erc721_enumerable/library.cairo
🔨 Compiling openzeppelin/token/erc721_enumerable/interfaces/IERC721_Enumerable.cairo
🔨 Compiling openzeppelin/security/pausable.cairo
🔨 Compiling openzeppelin/security/safemath.cairo
🔨 Compiling openzeppelin/security/initializable.cairo
🔨 Compiling openzeppelin/access/ownable.cairo
🔨 Compiling openzeppelin/account/IAccount.cairo
🔨 Compiling openzeppelin/account/Account.cairo
🔨 Compiling openzeppelin/account/AddressRegistry.cairo
🔨 Compiling openzeppelin/utils/constants.cairo
✅ Done
Run tests
Run tests using tox, tox automatically creates an isolated testing environment:
tox
====================== test session starts ======================
platform linux -- Python 3.7.2, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /home/readme/cairo-contracts
plugins: asyncio-0.16.0, web3-5.24.0, typeguard-2.13.0
collected 19 items
tests/test_Account.py .... [ 21%]
tests/test_AddressRegistry.py .. [ 31%]
tests/test_ERC20.py .......... [ 84%]
tests/test_Initializable.py . [ 89%]
tests/test_Ownable.py .. [100%]
Learn
Contract documentation
Cairo
- StarkNet official documentation
- Cairo language documentation
- Perama's Cairo by example
- Cairo 101 workshops
Nile
Security
This project is still in a very early and experimental phase. It has never been audited nor thoroughly reviewed for security vulnerabilities. Do not use in production.
Please report any security issues you find to security@openzeppelin.org.
License
OpenZeppelin Cairo Contracts is released under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for openzeppelin-cairo-contracts-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef25e31fdd0a5b88bb47e13b79f51054029caf8446f79a771c005219da101ea5 |
|
MD5 | 71030819aeff1ef3811b90adadfefdb1 |
|
BLAKE2b-256 | 41c12d251ee62ed2a4f65ef8b0a6792284dc4e8717328d77f96e69848c8f9c9f |
Hashes for openzeppelin_cairo_contracts-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73ad84e59fc29b9f3275bdb4a3f30e07dee2d2c1f9cbef96c4895490d21bb096 |
|
MD5 | e46bdb80db7e38d4c300d573b7970acf |
|
BLAKE2b-256 | c8e25d3567b8b4edb89e43f687aab675e59b38ec9680e68ff6418ee18bb28f5a |