AirSwap is a peer-to-peer trading network. This repository contains smart contracts for use by developers and traders on the AirSwap network.
- Discord → https://chat.airswap.io/
- X → https://x.com/airswap
- Website → https://www.airswap.io/
- About → https://about.airswap.io/
Package | Version | Description |
---|---|---|
@airswap/registry |
Server Registry | |
@airswap/swap |
Atomic Token Swap | |
@airswap/swap-erc20 |
Atomic Token Swap (ERC20) | |
@airswap/wrapper |
Wrapper for Native Tokens | |
@airswap/staking |
Staking for Members | |
@airswap/pool |
Rewards Pool for Members | |
@airswap/batch-call |
Batch Token and Order Calls |
Package | Version | Description |
---|---|---|
@airswap/libraries |
Libraries for Developers | |
@airswap/utils |
Utils for Developers |
Command | Description |
---|---|
yarn compile |
Compile all contracts to build folders. |
yarn clean |
Clean all contract build folders. |
yarn test |
Run all contract tests in test folders. |
yarn lint:fix |
Run eslint for all JavaScript code. |
yarn pretty:fix |
Run prettier for all JavaScript code. |
Flow for contracts and associated tools: Branch from Develop; Merge Feature → Develop → Beta → Main
Flow for tool updates (not contracts): Branch from Main; Merge Feature → Main → Develop
Regular development process for a complete release
-
New work and features are cut from and merged to "develop"
- Cut feature branches from develop
- Merge feature branches into develop (Squash and Merge)
-
Merge "develop" into "beta" to publish beta packages. (Semver: x.x.x-beta.x)
- Merge develop into beta (Merge Commit): this will publish NPM with "beta" tag.
- Tag beta release from beta branch. (x.x.x-beta.x)
- Share tagged release with auditors if auditing.
-
Merge "develop" into "main" to publish latest packages. (Semver: x.x.x)
- Merge develop into main (Merge Commit): this will publish NPM with "latest" tag.
- Merge main into beta: this will update the beta with latest.
- Tag release from main branch. (x.x.x)
Each deploys.js
must be limited to contracts deployed from that package version.
Individual package features or patches
- Cut a feature or fix branch from main.
- Merge fix into main (Squash and Merge): this will publish to NPM with "latest" tag.
- Merge main into develop.
Each package has commands yarn deploy
and yarn verify
. Each command takes a --network
flag. For example:
yarn deploy --network sepolia
yarn verify --network sepolia
The source of these scripts can be found in the scripts
folder of each package. The account used to deploy and verify is derived from the PRIVATE_KEY
environment variable in .env
in the repository root.