<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 are not formally audited by accredited third parties. However, contracts are a basis for certain functionality on the AlgoWorldExplorer.io platform and were created in collaboration with Solution Architect from Algorand (credits @cusma). 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 stateful contracts used for auction trading on AlgoWorldExplorer and 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.
### Auction
A set of stateful smart contracts for card auctions and card trading:
- [ASAs for ALGO with trades and bidding | ๐ด๐ฐ๐จ](src/auction/manager.py): <br> Allows trading ASA via auctions, selling or purchasing directly.
## โ๏ธ 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-legacy",
"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/4f/2e/0dc6163b5700a376e38f6a7ac790d97a8d58047b8f01a99282336a311f5b/algoworld_contracts_legacy-1.3.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- `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 are not formally audited by accredited third parties. However, contracts are a basis for certain functionality on the AlgoWorldExplorer.io platform and were created in collaboration with Solution Architect from Algorand (credits @cusma). 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 stateful contracts used for auction trading on AlgoWorldExplorer and 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### Auction\n\nA set of stateful smart contracts for card auctions and card trading:\n- [ASAs for ALGO with trades and bidding | \ud83c\udfb4\ud83d\udcb0\ud83d\udd28](src/auction/manager.py): <br> Allows trading ASA via auctions, selling or purchasing directly.\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.3.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": "8979e28f9b45a52e79a16dfcbe3806e18f69eed776a7c8a9c2ad439e666dccbd",
"md5": "a77ba9a85a21b4d0c322f2a72e0a7485",
"sha256": "bbcd25c4e23aede32f1e1b2164bc3afc0738438d4e90b82886daf3387508ec39"
},
"downloads": -1,
"filename": "algoworld_contracts_legacy-1.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a77ba9a85a21b4d0c322f2a72e0a7485",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9,<4.0",
"size": 23274,
"upload_time": "2023-08-05T11:47:27",
"upload_time_iso_8601": "2023-08-05T11:47:27.354236Z",
"url": "https://files.pythonhosted.org/packages/89/79/e28f9b45a52e79a16dfcbe3806e18f69eed776a7c8a9c2ad439e666dccbd/algoworld_contracts_legacy-1.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4f2e0dc6163b5700a376e38f6a7ac790d97a8d58047b8f01a99282336a311f5b",
"md5": "4679ea277ef86b6e2cedbc4ac92b535f",
"sha256": "bba1ccd3abc61b26eb52b48388ed1ddadd2d6f9a44e5b85050619b69f32a4b53"
},
"downloads": -1,
"filename": "algoworld_contracts_legacy-1.3.0.tar.gz",
"has_sig": false,
"md5_digest": "4679ea277ef86b6e2cedbc4ac92b535f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9,<4.0",
"size": 13101,
"upload_time": "2023-08-05T11:47:29",
"upload_time_iso_8601": "2023-08-05T11:47:29.192382Z",
"url": "https://files.pythonhosted.org/packages/4f/2e/0dc6163b5700a376e38f6a7ac790d97a8d58047b8f01a99282336a311f5b/algoworld_contracts_legacy-1.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-05 11:47:29",
"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-legacy"
}