https://github.com/blockful/swaplace-contracts
Swaplace is an open-source, ownerless and feeless token swap protocol
https://github.com/blockful/swaplace-contracts
blockchain ethereum evm otc publicgoods solidity swap typescript
Last synced: 3 months ago
JSON representation
Swaplace is an open-source, ownerless and feeless token swap protocol
- Host: GitHub
- URL: https://github.com/blockful/swaplace-contracts
- Owner: blockful
- License: mit
- Created: 2022-12-14T14:17:01.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-04T16:36:48.000Z (over 1 year ago)
- Last Synced: 2025-07-11T15:54:19.518Z (6 months ago)
- Topics: blockchain, ethereum, evm, otc, publicgoods, solidity, swap, typescript
- Language: TypeScript
- Homepage: https://app.swaplace.xyz/
- Size: 1.31 MB
- Stars: 34
- Watchers: 4
- Forks: 34
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: docs/CODE_OF_CONDUCT.md
- Audit: Audit.md
- Codeowners: CODEOWNERS
- Security: docs/SECURITY.md
Awesome Lists containing this project
README
# Swaplace
[](https://github.com/blockful-io/swaplace-contracts/actions/workflows/tests.yml)
[](https://github.com/blockful-io/swaplace-contracts/actions/workflows/fuzz-testing.yml)
This repository contains the core smart contracts for the Swaplace Protocol; The lightest Swap protocol in the market.
### TL;DR
- Contracts cannot be upgraded.
- Contracts have no ownership.
- Contracts don't charge fees.
- There are no external contract dependencies.
- The protocol operates using available allowances.
## Incentives
This repository is subjected to incentives for the community to contribute to the project. The incentive distribution and amount are being discussed but the eligibility has already started.
## Features
- **Create Swaps**: A Swap has an `owner` and an `allowed` address. The `owner` is the one that can cancel the swap while the `allowed` address is the one that can execute the swap but anyone can accept if it's set as the Zero Address. A Swap also has an `expiry` period in seconds. The Swap can only be executed before the expiry period is reached. The `Asset` type represents on one hand the bidding assets and on the other hand the asking assets.
```
struct Swap {
address owner;
address allowed;
uint256 expiry;
Asset[] biding;
Asset[] asking;
}
```
- **Accept Swaps**: You can accept swaps that have an `allowed` address equal to your or the `Zero Address`. As long as you provide the asked assets.
- **Cancel Swaps**: You can cancel swaps that haven't been `expired`.
- **Swap Factory**: Aids new swap creations to be used on Swaplace. Check `contracts/SwapFactory.sol`.
## Setup
You should install the dependencies using Yarn (used in the project) or npm to deploy this code. The project uses Hardhat as a development environment. Which relies on Node.js (Recommended version [v18.16.0](https://nodejs.org/download/release/v18.16.0/)).
To make sure that NodeJS is installed correctly, open the integrated terminal and run the following command:
```
node -v
```
### Yarn:
Install Yarn globally and check if the version appears:
```
npm install --global yarn
yarn --version
```
Install the dependencies using Yarn:
```
yarn install
```
### npm:
Install the dependencies using npm:
```
npm install
```
### Environment Variables
The project comes with a `.env.example` file. You should rename it to `.env` and fill the variables with your values. Most RPC providers offer free testnet nodes. You can use [Alchemy](https://www.alchemy.com/) or [Infura](https://infura.io/) to get a free node.
WARNING: The private keys used in the `.env` file are from hardhat accounts. They are not meant to be used in production.
### Testing and Deploying
Run the tests in `localhost` or try the contracts in a desired network by specifying the network name in `hardhat.config.js`.
```
yarn test
yarn testnet
```
Deploy the contracts in the desired network according to the networks available in `hardhat.config.js`.
```
yarn deploy
```
## Contributing
- To know more about how you can contribute [see our notion page](https://blockful.notion.site/Swaplace-Call-for-Contributors-6e4895d2a7264f679439ab2c124603fe).