<p align="center"><a href="https://twitter.com/algoworld_nft/status/1450608110268211203"><img width=100% src="https://i.imgur.com/cGWGmxa.png" alt="687474703a2f2f6936332e74696e797069632e636f6d2f333031336c67342e706e67" border="0" /></a></p>
<p align="center">
<a href="https://algorand.com"><img src="https://img.shields.io/badge/Powered by-Algorand-blue.svg" /></a>
<a href="https://algoworld.io"><img src="https://img.shields.io/badge/AlgoWorld-Website-pink.svg" /></a>
<a href="https://algoworldexplorer.io"><img src="https://img.shields.io/badge/AlgoWorldExplorer-Platform-red.svg" /></a>
<a><img src="https://visitor-badge.glitch.me/badge?page_id=AlgoWorldNFT.algoworld-contracts&right_color=green" /></a>
<a href="https://github.com/AlgoWorldNFT/algoworld-contracts/actions/workflows/ci.yaml"><img src="https://github.com/AlgoWorldNFT/algoworld-contracts/actions/workflows/ci.yaml/badge.svg" /></a>
<a href="https://codecov.io/gh/AlgoWorldNFT/algoworld-contracts"><img src="https://codecov.io/gh/AlgoWorldNFT/algoworld-contracts/branch/main/graph/badge.svg?token=2O1VAOJCUD" /></a>
</p>
## ๐ 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](https://github.com/ulamlabs/OpenNFT)'s smart contracts.
_**โ ๏ธ NOTE: These contracts were created in collaboration with Solution Architect from Algorand (credits @cusma) and audited by [TENSET security](https://www.tenset.io/en/smart-contract-audits). Code is provided under MIT license.**_
## Prerequisites
- [poetry](https://python-poetry.org/)
- [pre-commit](https://pre-commit.com/)
- [Algorand Sandbox](https://github.com/algorand/sandbox)
- [Docker](https://www.docker.com/)
## ๐ 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:
```bash
pip install algoworld-contracts
```
### Example usage
```python
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 | ๐ดโ๏ธ๐ด](algoworld_contracts/swapper/asa_to_asa_swapper.py): 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 ๐](algoworld_contracts/swapper/swap_proxy.py): Smart signature that powers the [AlgoWorld Swapper](https://swapper.algoworld.io) by allowing users to issue certain transactions that contain links to swap configuration files stored as `.json` files on `ipfs`. Proxy is then used to obtain those `ipfs` files by grabbing the latest pay transaction using Algorand Indexer queries.
- [ASAs to ALGO swap | ๐ด๐ด๐ดโ๏ธ๐ฐ](algoworld_contracts/swapper/asas_to_algo_swapper.py): 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.
1. Clone the repo
```bash
git clone https://github.com/AlgoWorldNFT/algoworld-contracts
```
2. Install python requirements
```bash
poetry install # install all dependencies
poetry shell # activate virtual env
```
(OPTIONAL) 3. Configure `pre-commit` hooks
```bash
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.
```bash
(.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`](CONTRIBUTING.md)
## โญ๏ธ Stargazers
Special thanks to everyone who forked or starred the repository โค๏ธ
[![Stargazers repo roster for @AlgoWorldNFT/algoworld-contracts](https://reporoster.com/stars/dark/AlgoWorldNFT/algoworld-contracts)](https://github.com/AlgoWorldNFT/algoworld-contracts/stargazers)
[![Forkers repo roster for @AlgoWorldNFT/algoworld-contracts](https://reporoster.com/forks/dark/AlgoWorldNFT/algoworld-contracts)](https://github.com/AlgoWorldNFT/algoworld-contracts/network/members)
Raw data
{
"_id": null,
"home_page": "https://github.com/AlgoWorldNFT/algoworld-contracts",
"name": "algoworld-contracts",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9,<4.0",
"maintainer_email": "",
"keywords": "algoworld,algorand,blockchain,pyteal,smart contracts",
"author": "AlgoWorld",
"author_email": "info@algoworld.io",
"download_url": "https://files.pythonhosted.org/packages/a1/f7/f59547e75e7ea99568d32df02cfaa55eef005f7fc4b8a4b2dc2180f1de42/algoworld_contracts-1.4.0.tar.gz",
"platform": null,
"description": "<p align=\"center\"><a href=\"https://twitter.com/algoworld_nft/status/1450608110268211203\"><img width=100% src=\"https://i.imgur.com/cGWGmxa.png\" alt=\"687474703a2f2f6936332e74696e797069632e636f6d2f333031336c67342e706e67\" border=\"0\" /></a></p>\n\n<p align=\"center\">\n <a href=\"https://algorand.com\"><img src=\"https://img.shields.io/badge/Powered by-Algorand-blue.svg\" /></a>\n <a href=\"https://algoworld.io\"><img src=\"https://img.shields.io/badge/AlgoWorld-Website-pink.svg\" /></a>\n <a href=\"https://algoworldexplorer.io\"><img src=\"https://img.shields.io/badge/AlgoWorldExplorer-Platform-red.svg\" /></a>\n <a><img src=\"https://visitor-badge.glitch.me/badge?page_id=AlgoWorldNFT.algoworld-contracts&right_color=green\" /></a>\n <a href=\"https://github.com/AlgoWorldNFT/algoworld-contracts/actions/workflows/ci.yaml\"><img src=\"https://github.com/AlgoWorldNFT/algoworld-contracts/actions/workflows/ci.yaml/badge.svg\" /></a>\n <a href=\"https://codecov.io/gh/AlgoWorldNFT/algoworld-contracts\"><img src=\"https://codecov.io/gh/AlgoWorldNFT/algoworld-contracts/branch/main/graph/badge.svg?token=2O1VAOJCUD\" /></a>\n</p>\n\n## \ud83d\udcc3 About\n\nThe following repository hosts the source codes for:\n\n- `AlgoWorld Swapper`'s algorand smart signatures.\n- `AlgoWorldExplorer`'s stateful smart contracts for card auctions and card trading. Modified version of [OpenNFT](https://github.com/ulamlabs/OpenNFT)'s smart contracts.\n\n_**\u26a0\ufe0f NOTE: These contracts were created in collaboration with Solution Architect from Algorand (credits @cusma) and audited by [TENSET security](https://www.tenset.io/en/smart-contract-audits). Code is provided under MIT license.**_\n\n## Prerequisites\n\n- [poetry](https://python-poetry.org/)\n- [pre-commit](https://pre-commit.com/)\n- [Algorand Sandbox](https://github.com/algorand/sandbox)\n- [Docker](https://www.docker.com/)\n\n## \ud83d\ude80 Overview\n\nAlgoWorld currently offers several smart signatures used for swapping on AlgoWorld Swapper.\n\n---\n\nIf you are looking to install algoworld contracts into your project run the following command:\n\n```bash\npip install algoworld-contracts\n```\n\n### Example usage\n\n```python\nfrom algoworld_contracts import contracts\n\n# Replace inputParams with real values\nasa_to_asa_swap = contracts.get_swapper_teal(\n inputParams.creator_address,\n inputParams.offered_asa_id,\n inputParams.offered_asa_amount,\n inputParams.requested_asa_id,\n inputParams.requested_asa_amount,\n inputParams.incentive_wallet,\n inputParams.incentive_fee,\n )\n\n# asa_to_asa_swap is a string of TEAL code\nresponse = algod.compile(asa_to_asa_swap)\n...\n```\n\n### Swapper\n\nThere are two main types of smart signatures available:\n\n- [ASA to ASA swap | \ud83c\udfb4\u2194\ufe0f\ud83c\udfb4](algoworld_contracts/swapper/asa_to_asa_swapper.py): Smart signature that allows performing a swap of any single ASA of specified amount to any other single ASA of specified amount.\n- - [Swap Configuration Proxy \ud83d\udcdd](algoworld_contracts/swapper/swap_proxy.py): Smart signature that powers the [AlgoWorld Swapper](https://swapper.algoworld.io) by allowing users to issue certain transactions that contain links to swap configuration files stored as `.json` files on `ipfs`. Proxy is then used to obtain those `ipfs` files by grabbing the latest pay transaction using Algorand Indexer queries.\n\n- [ASAs to ALGO swap | \ud83c\udfb4\ud83c\udfb4\ud83c\udfb4\u2194\ufe0f\ud83d\udcb0](algoworld_contracts/swapper/asas_to_algo_swapper.py): Smart signature that allows performing a swap of multiple ASAs of specified amount to ALGO of specified amount.\n\n## \u2699\ufe0f Installation\n\nThis section assumes that poetry and pre-commit are installed and executed from the root folder of this repository.\n\n1. Clone the repo\n\n```bash\ngit clone https://github.com/AlgoWorldNFT/algoworld-contracts\n```\n\n2. Install python requirements\n\n```bash\npoetry install # install all dependencies\npoetry shell # activate virtual env\n```\n\n(OPTIONAL) 3. Configure `pre-commit` hooks\n\n```bash\npre-commit install\n```\n\nIf 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.\n\n## \ud83e\uddea Testing\n\nTesting 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.\n\n```bash\n(.venv) pytest\n```\n\nYou can also include `[pytest]` into your commit message to trigger the test in CI pipeline on `push` action (on pr it is triggered automatically).\n\n## \ud83d\udea7 Contribution guideline\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md)\n\n## \u2b50\ufe0f Stargazers\n\nSpecial thanks to everyone who forked or starred the repository \u2764\ufe0f\n\n[![Stargazers repo roster for @AlgoWorldNFT/algoworld-contracts](https://reporoster.com/stars/dark/AlgoWorldNFT/algoworld-contracts)](https://github.com/AlgoWorldNFT/algoworld-contracts/stargazers)\n\n[![Forkers repo roster for @AlgoWorldNFT/algoworld-contracts](https://reporoster.com/forks/dark/AlgoWorldNFT/algoworld-contracts)](https://github.com/AlgoWorldNFT/algoworld-contracts/network/members)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "AlgoWorld Smart Contracts and Signatures",
"version": "1.4.0",
"project_urls": {
"Homepage": "https://github.com/AlgoWorldNFT/algoworld-contracts",
"Repository": "https://github.com/AlgoWorldNFT/algoworld-contracts"
},
"split_keywords": [
"algoworld",
"algorand",
"blockchain",
"pyteal",
"smart contracts"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "42d3ae53beb9ed93e3a1abcccc202b7689d08984f70178db6eeab67a993bee68",
"md5": "d7c1d8f4fbb76c77bd9398d9a9619419",
"sha256": "990bcb41417a1ca76e69386fe2f88cf93da4284aa29742279c6d8b206677788a"
},
"downloads": -1,
"filename": "algoworld_contracts-1.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d7c1d8f4fbb76c77bd9398d9a9619419",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 14107,
"upload_time": "2023-08-05T11:31:37",
"upload_time_iso_8601": "2023-08-05T11:31:37.259545Z",
"url": "https://files.pythonhosted.org/packages/42/d3/ae53beb9ed93e3a1abcccc202b7689d08984f70178db6eeab67a993bee68/algoworld_contracts-1.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a1f7f59547e75e7ea99568d32df02cfaa55eef005f7fc4b8a4b2dc2180f1de42",
"md5": "d3676a4fd2b6850de298492c778697c0",
"sha256": "bd6580d922136fd0802f64d71d04c25dd0a20d000168a1622cd5247375081993"
},
"downloads": -1,
"filename": "algoworld_contracts-1.4.0.tar.gz",
"has_sig": false,
"md5_digest": "d3676a4fd2b6850de298492c778697c0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 9267,
"upload_time": "2023-08-05T11:31:38",
"upload_time_iso_8601": "2023-08-05T11:31:38.771980Z",
"url": "https://files.pythonhosted.org/packages/a1/f7/f59547e75e7ea99568d32df02cfaa55eef005f7fc4b8a4b2dc2180f1de42/algoworld_contracts-1.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-05 11:31:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AlgoWorldNFT",
"github_project": "algoworld-contracts",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "algoworld-contracts"
}