Structured, dependable legos for Starknet development.

Overview

cairomate • Tests Lints GitHub GitHub package.json version

Structured, dependable legos for starknet development.

Directory Structure

contracts
├─ defi
│  ├─ ChainlinkPriceOracle"Simple price oracle using Chainlink's V3 Aggregator"
│  └─ StakingRewards"Flexible, stripped staking rewards measured by blocks"
├─ interfaces
│  ├─ IAccount"Account Interface"
│  ├─ IAggregatorV3"Chainlink V3 Aggregator Interface"
│  ├─ IERC20"ERC20 Contract Interface"
│  ├─ IERC165"ERC165 Contract Interface"
│  ├─ IERC721"ERC721 Contract Interface"
|  ├─ INERC721"N-ERC721 Contract Interface (felt-based ERC721)"
│  └─ IERC1155"ERC1155 Contract Interface"
├─ tokens
│  ├─ ERC20"Modern and gas efficient ERC20 + EIP-2612 implementation"
│  ├─ ERC721
│  │  ├─ ERC721 - "Modern and gas efficient ERC721 | Uint256-based + EIP-2612 implementation"
│  │  └─ N-ERC721 - "Modern and gas efficient ERC721 | felt-based + EIP-2612 implementation"
│  └─ ERC1155"Modern and gas efficient ERC1155 + EIP-165 implementation"
├─ utils
│  ├─ Account"Stripped account"
│  ├─ Ownable"Minimal, ownable contract instance"
│  ├─ Context"Port of OZ's Solidity Context Abstraction"
│  └─ Pausible"Pausible Solidity Functionality"
tests
├─ test_StakingRewards — "Flexible, stripped staking rewards measured by blocks"
├─ test_ERC20 - "Test ERC20 contract"
├─ test_ERC721 - "Test ERC721 contract"
└─ test_Ownable - "Test Ownable contract"

Installation

First time?

Further installation instructions provided in the cairo-lang docs

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.

For VSCode support:

Download cairo-0.6.2.vsix from https://github.com/starkware-libs/cairo-lang/releases/tag/v0.6.2

And run:

code --install-extension cairo-0.6.2.vsix

Set up the project

Clone the repository

git clone [email protected]:abigger87/cairomate.git

cd into it and create a Python virtual environment:

cd cairomate
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.

pip3 install cairo-nile
nile install

Usage

Compile the contracts

nile compile

Run tests

pytest

Running a specific test file (eg tests/test_ERC20.py):

pytest tests/test_ERC20.py

Test a specific test case:

pytest tests/test_ERC20.py -k 'test_mint'

Extending Cairo contracts

There's no clear contract extensibility pattern for Cairo smart contracts yet. In the meantime the best way to extend our contracts is copypasting and modifying them at your own risk. Remember this contracts are still under development and they have not gone through any audit or security review whatsoever.

Acknowledgements

Big thanks to:

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 by opening up an issue in this reposisitory.

License

Cairomate Contracts are released under the AGPL-3.0-only.

Owner
andreas
andreas
Repo to store back end infrastructure for Message in a Bottle

Message in a Bottle Backend API RESTful API for Message in a Bottle frontend application consumption. About The Project • Tools Used • Local Set Up •

4 Dec 05, 2021
A Google sheet which keeps track of the locations that want to visit and a price cutoff

FlightDeals Here's how the program works. First, I have a Google sheet which keeps track of the locations that I want to visit and a price cutoff. It

Lynne Munini 5 Nov 21, 2022
Covid 19 status. Flask application. CovidAPI. Heroku.

Covid 19 In this project we see total count of people who got this virus and total death. How does it works Written in Python. Web app, Flask. package

AmirHossein Mohammadi 12 Jan 16, 2022
This is a practice on Airflow, which is building virtual env, installing Airflow and constructing data pipeline (DAGs)

airflow-test This is a practice on Airflow, which is Builing virtualbox env and setting Airflow on that env Installing Airflow using python virtual en

Jaeyoung 1 Nov 01, 2021
Demo scripts for the Kubernetes Security Webinar

Kubernetes Security Webinar [in Russian] YouTube video (October 13, 2021) Authors: Artem Yushkovsky (LinkedIn, GitHub) Maxim Mosharov @ Whitespots.io

Slurm 34 Dec 06, 2022
A dot matrix rendered using braille characters.

⣿ dotmatrix A dot matrix rendered using braille characters. Description This library provides class called Matrix which represents a dot matrix that c

Tim Fischer 25 Dec 12, 2022
Simple GUI menu for micropython using a rotary encoder and basic display.

Micropython encoder based menu This is a simple menu system written in micropython. It uses a switch, a rotary encoder and an OLED display.

80 Jan 07, 2023
Automatic certificate unpinning for Android apps

What is this? Script used to perform automatic certificate unpinning of an APK by adding a custom network security configuration that permits user-add

Antoine Neuenschwander 5 Jul 28, 2021
A compilation of useful scripts to automate common tasks

Scripts-To-Automate-This A compilation of useful scripts for common tasks Name What it does Type Add file extensions Adds ".png" to a list of file nam

0 Nov 05, 2021
⚙️ Compile, Read and update your .conf file in python

⚙️ Compile, Read and update your .conf file in python

Reece Harris 2 Aug 15, 2022
Minimalistic Gridworld Environment (MiniGrid)

Minimalistic Gridworld Environment (MiniGrid) There are other gridworld Gym environments out there, but this one is designed to be particularly simple

Maxime Chevalier-Boisvert 1.7k Jan 03, 2023
HSPyLib is a Python library that will elevate your experience to another level.

HomeSetup Python Library - HSPyLib Your mature python application HSPyLib is a Python library that will elevate your experience to another level. It r

Hugo Saporetti Junior 4 Dec 14, 2022
Mangá downloader (para leitura offline) voltado para sites e scans brasileiros.

yonde! yonde! (読んで!) é um mangá downloader (para leitura offline) voltado para sites e scans brasileiros. Também permite que você converta os capítulo

Yonde 8 Nov 28, 2021
This is some simple code to scrape vistbook's system to get an overview of the different cabins availability.

DNT_cabin_availability_system This is some simple code to scrape visbook's system to get an overview of the different cabins availability. The system

Andreas Lorentzen 1 Sep 25, 2022
Taxonomy addition for complete trees

TACT: Taxonomic Addition for Complete Trees TACT is a Python app for stochastic polytomy resolution. It uses birth-death-sampling estimators across an

Jonathan Chang 3 Jun 07, 2022
HSPICE can not perform Monte Carlo (MC) simulations while considering aging effects

HSPICE can not perform Monte Carlo (MC) simulations while considering aging effects. I developed a python wrapper that automatically performs MC and aging simulations using HPSICE to save engineering

Habib Kazemi 2 Nov 22, 2021
Security-related flags and options for C compilers

Getting the maximum of your C compiler, for security

135 Nov 11, 2022
BinCat is an innovative login system, with which the account you register will be more secure.

BinCat is an innovative login system, with which the account you register will be more secure. This project is inspired by a conventional token system.

Hipotesi 2 May 22, 2022
pyshell is a Linux subprocess module

pyshell A Linux subprocess module, An easier way to interact with the Linux shell pyshell should be cross platform but has only been tested with linux

4 Mar 02, 2022
Repository to store sample python programs for python learning

py Repository to store sample Python programs. This repository is meant for beginners to assist them in their learning of Python. The repository cover

codebasics 5.8k Dec 30, 2022