AlgoWorld Smart Contracts and Signatures
Project description
📃 About
The following repository hosts the source codes for:
AlgoWorld Swapper
's algorand smart signatures.AlgoWorldExplorer
's stateful smart contracts for card auctions and card trading. Modified version of OpenNFT's smart contracts.
⚠️ NOTE: These contracts were created in collaboration with Solution Architect from Algorand (credits @cusma) and audited by TENSET security. Code is provided under MIT license.
Prerequisites
🚀 Overview
AlgoWorld currently offers several smart signatures used for swapping on AlgoWorld Swapper.
If you are looking to install algoworld contracts into your project run the following command:
pip install algoworld-contracts
Example usage
from algoworld_contracts import contracts
# Replace inputParams with real values
asa_to_asa_swap = contracts.get_swapper_teal(
inputParams.creator_address,
inputParams.offered_asa_id,
inputParams.offered_asa_amount,
inputParams.requested_asa_id,
inputParams.requested_asa_amount,
inputParams.incentive_wallet,
inputParams.incentive_fee,
)
# asa_to_asa_swap is a string of TEAL code
response = algod.compile(asa_to_asa_swap)
...
Swapper
There are two main types of smart signatures available:
-
ASA to ASA swap | 🎴↔️🎴: Smart signature that allows performing a swap of any single ASA of specified amount to any other single ASA of specified amount.
-
- Swap Configuration Proxy 📝: Smart signature that powers the AlgoWorld Swapper by allowing users to issue certain transactions that contain links to swap configuration files stored as
.json
files onipfs
. Proxy is then used to obtain thoseipfs
files by grabbing the latest pay transaction using Algorand Indexer queries.
- Swap Configuration Proxy 📝: Smart signature that powers the AlgoWorld Swapper by allowing users to issue certain transactions that contain links to swap configuration files stored as
-
ASAs to ALGO swap | 🎴🎴🎴↔️💰: Smart signature that allows performing a swap of multiple ASAs of specified amount to ALGO of specified amount.
⚙️ Installation
This section assumes that poetry and pre-commit are installed and executed from the root folder of this repository.
- Clone the repo
git clone https://github.com/AlgoWorldNFT/algoworld-contracts
- Install python requirements
poetry install # install all dependencies
poetry shell # activate virtual env
(OPTIONAL) 3. Configure pre-commit
hooks
pre-commit install
If you are not going to setup pre-commit
locally, there is a Github Actions plugin that will autoformat your branch if you are opening a PR with commits that contain un-formatted code.
🧪 Testing
Testing assumes that docker-compose is installed and available. Project is relying on pytest-docker-compose
plugin that automatically boots up temporary algorand sandbox and destroys the containers after the tests are finished.
(.venv) pytest
You can also include [pytest]
into your commit message to trigger the test in CI pipeline on push
action (on pr it is triggered automatically).
🚧 Contribution guideline
See CONTRIBUTING.md
⭐️ Stargazers
Special thanks to everyone who forked or starred the repository ❤️
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for algoworld_contracts-1.4.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd6580d922136fd0802f64d71d04c25dd0a20d000168a1622cd5247375081993 |
|
MD5 | d3676a4fd2b6850de298492c778697c0 |
|
BLAKE2b-256 | a1f7f59547e75e7ea99568d32df02cfaa55eef005f7fc4b8a4b2dc2180f1de42 |
Hashes for algoworld_contracts-1.4.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 990bcb41417a1ca76e69386fe2f88cf93da4284aa29742279c6d8b206677788a |
|
MD5 | d7c1d8f4fbb76c77bd9398d9a9619419 |
|
BLAKE2b-256 | 42d3ae53beb9ed93e3a1abcccc202b7689d08984f70178db6eeab67a993bee68 |