https://github.com/ctrlc03/cairo1-random-code
https://github.com/ctrlc03/cairo1-random-code
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/ctrlc03/cairo1-random-code
- Owner: ctrlc03
- License: mit
- Created: 2023-02-21T21:28:06.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-21T21:28:09.000Z (over 3 years ago)
- Last Synced: 2025-01-29T14:32:44.310Z (over 1 year ago)
- Language: Rust
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Minimal Cairo 1.0 Template 
[Built with **`auditless/cairo-template`**](https://github.com/auditless/cairo-template)
A minimal template for building smart contracts with Cairo 1.0
using the [Quaireaux](https://github.com/keep-starknet-strange/quaireaux) project defaults.
## How it works
- No submodules, forks or other heavy machinery
- Uses the [`cairo-test-runner`](https://github.com/starkware-libs/cairo/blob/main/crates/cairo-lang-test-runner/README.md) binary for running tests
- Built as a [Scarb](https://github.com/software-mansion/scarb) package for reusability
- Has reproducible builds using GitHub Actions
- Includes a standard Makefile for commonly used commands
## Installing dependencies
### Step 1: Install Cairo 1.0 (guide by [Abdel](https://github.com/abdelhamidbakhta))
If you are on an x86 Linux system and able to use the release binary,
you can download Cairo here https://github.com/starkware-libs/cairo/releases.
For everyone, else, we recommend compiling Cairo from source like so:
```bash
# Install stable Rust
$ rustup override set stable && rustup update
# Clone the Cairo compiler in $HOME/Bin
$ cd ~/Bin && git clone git@github.com:starkware-libs/cairo.git
# Generate release binaries
$ cargo build —all —release
```
**NOTE: Keeping Cairo up to date**
Now that your Cairo compiler is in a cloned repository, all you will need to do
is pull the latest changes and rebuild as follows:
```bash
$ cd ~/Bin && git fetch && git pull && cargo build --all --release
```
### Step 2: Add Cairo 1.0 executables to your path
```bash
export PATH="$HOME/Bin/cairo/target/release:$PATH”
```
**NOTE: If installing from a Linux binary, adapt the destination path accordingly.**
This will make available several binaries. The one we use is called `cairo-test`.
### Step 3: Install the Cairo package manager Scarb
Follow the installation guide in [Scarb's Repository](https://github.com/software-mansion/scarb).
## How to use this template
First you will need to clone the repository or click the `Use this template` button
at the top of the page to create a new repository based on the template.
Next, you will want to update the configuration files with the name of your project:
```
├── .cairo_project.toml
└── .Scarb.toml
```
## Working with your project
The Cairo template currently supports building and testing contracts.
### Build
Build the contracts.
```bash
$ make build
```
### Test
Run the tests in `src/test`:
```bash
$ make test
```
### Format
Format the Cairo source code (using Scarb):
```bash
$ make fmt
```
## Thanks to
- The [Quaireaux](https://github.com/keep-starknet-strange/quaireaux) team for coming up with
this configuration and especially [Abdel](https://github.com/abdelhamidbakhta) for helping me with Cairo 1.0 installation
- [Paul Berg](https://github.com/PaulRBerg) and the [foundry-template](https://github.com/paulrberg/foundry-template) project which served as inspiration
- Last but not least, the StarkWare team for building the first smart contract language that is a joy to use
## Other templates
- [ArgentX template](https://github.com/argentlabs/starknet-build/tree/main/cairo1.0) is built as a fork of the compiler
- [Eni's cairo1-template](https://github.com/msaug/cairo1-template) uses git submodules for installation
- [Shramee's Starklings](https://github.com/shramee/starklings-cairo1) use the cairo1 crates as libraries and builds its own framework
## License
[MIT](https://github.com/auditless/cairo-template/blob/main/LICENSE) © [Auditless Limited](https://www.auditless.com)