/astroport-core

Astroport DEX core contracts

Primary LanguageRustGNU General Public License v3.0GPL-3.0

Astroport Core

codecov

Multi pool type automated market-maker (AMM) protocol powered by smart contracts on the Terra blockchain.

Contracts diagram

contract diagram

General Contracts

Name Description
factory Pool creation factory
pair Pair with x*y=k curve
pair_stable Pair with stableswap invariant curve
pair_stable_bluna Pair with stableswap invariant curve handling bLUNA rewards for LPs
token CW20 (ERC20 equivalent) token implementation
router Multi-hop trade router
oracle TWAP oracles for x*y=k pool types
whitelist CW1 whitelist contract

Tokenomics Contracts

Tokenomics related smart contracts are hosted on ../contracts/tokenomics.

Name Description
generator Rewards generator for liquidity providers
generator_proxy_to_mirror Rewards generator proxy for liquidity providers
maker Fee collector and swapper
staking xASTRO staking contract
vesting ASTRO distributor for generator rewards
xastro_token xASTRO token contract

Building Contracts

You will need Rust 1.58.1+ with wasm32-unknown-unknown target installed.

You can run unit tests for each contract directory via:

cargo test

For a production-ready (compressed) build:

Run the following from the repository root

./scripts/build_release.sh

The optimized contracts are generated in the artifacts/ directory.

You can compile each contract:

Go to contract directory and run

RUSTFLAGS='-C link-arg=-s' cargo wasm
cp ../../target/wasm32-unknown-unknown/release/astroport_token.wasm .
ls -l astroport_token.wasm
sha256sum astroport_token.wasm

Docs

Docs can be generated using cargo doc --no-deps

Bug Bounty

The contracts in this repo are included in a bug bounty program.