Astroport Core
Multi pool type automated market-maker (AMM) protocol powered by smart contracts on the Terra blockchain.
Contracts 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.