algoworld-contracts


Namealgoworld-contracts JSON
Version 1.4.0 PyPI version JSON
download
home_pagehttps://github.com/AlgoWorldNFT/algoworld-contracts
SummaryAlgoWorld Smart Contracts and Signatures
upload_time2023-08-05 11:31:38
maintainer
docs_urlNone
authorAlgoWorld
requires_python>=3.9,<4.0
licenseMIT
keywords algoworld algorand blockchain pyteal smart contracts
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            <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"
}
        
Elapsed time: 6.42117s