/astraly-contracts

Astraly Cairo Contracts

Primary LanguagePythonCreative Commons Zero v1.0 UniversalCC0-1.0

Tests Discord Twitter

banner

☄️ Astraly Smart Contracts

Smart Contracts for Astraly, Fundraising powered by on-chain reputation on Starknet. Learn more about it here.

Documentation

You can find the latest technical documentation here

Contracts

Contract Title Description
AstralyStaking xZKP Token Lock ZKP or ZKP-LP in the vault. Follows ERC-4626 standard.
AstralyLotteryToken Lottery Ticket Lottery Ticket tokenized as ERC-1155 token.
AstralyToken ZKP Token Native token of the platform. Follows ERC-20 standard. Mintable, Burnable, Pausable.
AstralyIDO IDO Contract Handles the whole business logic of the IDO. Triggers VRF when a lottery ticket is burnt.
AstralyIDOFactory IDO Factory Instanciates AstralyIDO contracts for every new IDO.
AstralyVesting Vesting Vests Assets linearly over time for multiple payees.
AstralyFaucet IDO Factory Simple Faucet to withdraw X ERC20 every Y seconds.
AstralyVaultHarvestTask Harvest Task Yagi Task to regularly harvest vault's earnings.
AstralyTask IDO Task Yagi Task to trigger allocation computation.
AMMs AMMs Wrapper Wrappers for different AMMs pools.
Utils Cairo utils

Development Workflow

This repository has been bootstrapped using Nile and Poetry.

Note: Mac and Mac M1 have special instructions you can refer to this article

  1. Install Dependencies poetry install

  2. Spin up a node (in a separate terminal window w/ the python environment running) poetry run nile node

  3. Compile contracts poetry run nile compile

  4. Run tests poetry run pytest tests/

  5. Deploy contracts poetry run nile run scripts/deploy_all.py or cd scripts && sh deploy_all.sh

These commands will test and deploy against your local node. If you want to deploy to the goerli testnet, use --network goerli instead.

Contributing

We encourage pull requests.

  1. Create an issue to describe the improvement/issue. Provide as much detail as possible in the beginning so the team understands your improvement/issue.
  2. Fork the repo so you can make and test changes in your local repository.
  3. Test your changes Make sure your tests (manual and/or automated) pass.
  4. Create a pull request and describe the changes you made. Include a reference to the Issue you created.
  5. Monitor and respond to comments made by the team around code standards and suggestions. Most pull requests will have some back and forth.

If you have further questions, visit #technology in our discord and make sure to reference your issue number.

Thank you for taking the time to make our project better!