{"id":13470847,"url":"https://github.com/curvefi/curve-contract","last_synced_at":"2025-05-15T23:03:08.216Z","repository":{"id":37344057,"uuid":"234180319","full_name":"curvefi/curve-contract","owner":"curvefi","description":"Vyper contracts used in Curve.fi exchange pools.","archived":false,"fork":false,"pushed_at":"2024-03-20T15:35:33.000Z","size":1598,"stargazers_count":1060,"open_issues_count":48,"forks_count":394,"subscribers_count":55,"default_branch":"master","last_synced_at":"2025-05-15T23:02:01.850Z","etag":null,"topics":["defi","ethereum","vyper"],"latest_commit_sha":null,"homepage":"https://www.curve.fi/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/curvefi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-15T21:49:06.000Z","updated_at":"2025-05-13T06:51:22.000Z","dependencies_parsed_at":"2024-10-29T18:36:10.072Z","dependency_job_id":null,"html_url":"https://github.com/curvefi/curve-contract","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curvefi%2Fcurve-contract","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curvefi%2Fcurve-contract/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curvefi%2Fcurve-contract/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/curvefi%2Fcurve-contract/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/curvefi","download_url":"https://codeload.github.com/curvefi/curve-contract/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254436944,"owners_count":22070946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["defi","ethereum","vyper"],"created_at":"2024-07-31T16:00:36.519Z","updated_at":"2025-05-15T23:03:07.988Z","avatar_url":"https://github.com/curvefi.png","language":"Python","funding_links":[],"categories":["DEFI","Python","💾 INDIE-OS","Exchanges \u0026 Liquidity"],"sub_categories":[],"readme":"# curve-contract\n\nVyper contracts used in [Curve](https://www.curve.fi/) exchange pools.\n\n## Overview\n\nCurve is an exchange liquidity pool on Ethereum designed for extremely efficient stablecoin trading and low risk, supplemental fee income for liquidity providers, without an opportunity cost.\n\nCurve allows users to trade between correlated cryptocurrencies with a bespoke low slippage, low fee algorithm. The liquidity pool is also supplied to lending protocol where it generates additional income for liquidity providers.\n\n## Testing and Development\n\n### Dependencies\n\n* [python3](https://www.python.org/downloads/release/python-368/) from version 3.6 to 3.8, python3-dev\n* [brownie](https://github.com/iamdefinitelyahuman/brownie) - tested with version [1.13.2](https://github.com/eth-brownie/brownie/releases/tag/v1.13.2)\n* [ganache-cli](https://github.com/trufflesuite/ganache-cli) - tested with version [6.12.1](https://github.com/trufflesuite/ganache-cli/releases/tag/v6.12.1)\n* [brownie-token-tester](https://github.com/iamdefinitelyahuman/brownie-token-tester) - tested with version [0.1.0](https://github.com/iamdefinitelyahuman/brownie-token-tester/releases/tag/v0.1.0)\n\nCurve contracts are compiled using [Vyper](https://github.com/vyperlang/vyper), however installation of the required Vyper versions is handled by Brownie.\n\n### Setup\n\nTo get started, first create and initialize a Python [virtual environment](https://docs.python.org/3/library/venv.html). Next, clone the repo and install the developer dependencies:\n\n```bash\ngit clone https://github.com/curvefi/curve-contract.git\ncd curve-contract\npip install -r requirements.txt\n```\n\n### Organization and Workflow\n\n* New Curve pools are built from the contract templates at [`contracts/pool-templates`](contracts/pool-templates)\n* Once deployed, the contracts for a pool are added to [`contracts/pools`](contracts/pools)\n\nSee the documentation within [`contracts`](contracts) and it's subdirectories for more detailed information on how to get started developing on Curve.\n\n### Running the Tests\n\nThe [test suite](tests) contains common tests for all Curve pools, as well as unique per-pool tests. To run the entire suite:\n\n```bash\nbrownie test\n```\n\nTo run tests on a specific pool:\n\n```bash\nbrownie test tests/ --pool \u003cPOOL NAME\u003e\n```\n\nValid pool names are the names of the subdirectories within [`contracts/pools`](contracts/pools). For templates, prepend `template-` to the subdirectory names within [`contracts/pool-templates`](../contracts/pool-templates). For example, the base template is `template-base`.\n\nYou can optionally include the `--coverage` flag to view a coverage report upon completion of the tests.\n\n## Deployment\n\nTo deploy a new pool:\n\n1. Ensure the `pooldata.json` for the pool you are deploying contains all the necessary fields.\n2. Edit the configuration settings within [`scripts/deploy.py`](scripts/deploy.py).\n3. Test the deployment locally against a forked mainnet.\n\n    ```bash\n    brownie run deploy --network mainnet-fork -I\n    ```\n\n    When the script completes it will open a console. You should call the various getter methods on the deployed contracts to ensure the pool has been configured correctly.\n\n4. Deploy the pool to the mainnet.\n\n    ```bash\n    brownie run deploy --network mainnet\n    ```\n\n    Be sure to open a pull request that adds the deployment addresses to the pool `README.md`.\n\n## Audits and Security\n\nCurve smart contracts have been audited by Trail of Bits. These audit reports are made available on the [Curve website](https://www.curve.fi/audits).\n\nThere is also an active [bug bounty](https://www.curve.fi/bugbounty) for issues which can lead to substantial loss of money, critical bugs such as a broken live-ness condition, or irreversible loss of funds.\n\n## License\n\n(c) Curve.Fi, 2020 - [All rights reserved](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurvefi%2Fcurve-contract","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcurvefi%2Fcurve-contract","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcurvefi%2Fcurve-contract/lists"}