diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index b808e2e93a..0000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,16 +0,0 @@ -# Lines starting with '#' are comments. -# Each line is a file pattern followed by one or more owners. -# See [Github Documentation](https://help.github.com/articles/about-codeowners/). - -* @celo-org/devrel -/docs/cli/ @celo-org/devrel @celo-org/devtooling -/docs/cel2/ @celo-org/blockchain -/docs/contracts/ @celo-org/primitives -/docs/developer/contractkit/ @celo-org/devrel @celo-org/devtooling -/docs/developer/deploy/ @celo-org/devrel @celo-org/primitives -/docs/developer/rainbowkit-celo/ @celo-org/devrel @celo-org/devtooling -/docs/developer/sdks/ @celo-org/devrel @celo-org/devtooling -/docs/developer/viem/ @celo-org/devrel @celo-org/devtooling -/docs/network/ @celo-org/devrel @celo-org/blockchain -/docs/protocol/identity/ @celo-org/devrel @celo-org/primitives -/docs/what-is-celo/using-celo/ @celo-org/blockchain @celo-org/primitives diff --git a/.github/renovate.json5 b/.github/renovate.json5 deleted file mode 100644 index 2674a9662e..0000000000 --- a/.github/renovate.json5 +++ /dev/null @@ -1,4 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["github>celo-org/.github:renovate-config"] -} diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml deleted file mode 100644 index 119e09062d..0000000000 --- a/.github/workflows/links.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Check Broken Links - -on: - workflow_dispatch: - schedule: - - cron: "0 5 * * SUN" # at 5am on Sundays - -jobs: - linkChecker: - runs-on: ubuntu-latest - - steps: - - name: Restore lychee cache - id: restore-cache - uses: actions/cache@v4 - with: - path: .lycheecache - key: cache-lychee-${{ github.sha }} - restore-keys: cache-lychee- - - - uses: actions/checkout@v4 - - - name: Link Checker - id: lychee - uses: lycheeverse/lychee-action@v2 - with: - fail: false - args: >- - --verbose - --no-progress - --cache --max-cache-age 1d - './**/*.html' - './**/*.js' - './**/*.md' - './**/*.rst' - './**/*.tsx' - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - - - name: Check Output Size and Exit If Too Large - id: wc - shell: bash - run: | - # See https://github.com/peter-evans/create-issue-from-file/issues/1049 - if [ "$(wc -m < ./lychee/out.md)" -gt 65536 ]; then - echo "Link Checker output is too big (> 65536 characters) for a GitHub Issue descriptions." - exit 1 - fi - - - name: Create Issue From File - if: steps.lychee.outputs.exit_code != 0 - uses: peter-evans/create-issue-from-file@v5 - with: - title: Link Checker Report - content-filepath: ./lychee/out.md - labels: bug, automated issue diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 7408c345d8..0000000000 --- a/.gitignore +++ /dev/null @@ -1,25 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local -.env - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Translations -i18n/ -.netlify \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 2fa44adf5c..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "submodules/developer-tooling"] - path = submodules/developer-tooling - url = https://github.com/celo-org/developer-tooling.git diff --git a/.lycheeignore b/.lycheeignore deleted file mode 100644 index c5576d06dd..0000000000 --- a/.lycheeignore +++ /dev/null @@ -1,5 +0,0 @@ -https://alfajores-forno.celo-testnet.org/ -https://forno.celo-sepolia.celo-testnet.org/ -https://baklava-forno.celo-testnet.org/ -https://forno.celo.org/ -https://gateway-arbitrum.network.thegraph.com/api/ diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/.prettierrc.json +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9e9f..0000000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/README.md b/README.md index 38c9de0d58..66c5f11f43 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,44 @@ -# Welcome +# Mintlify Starter Kit -Welcome to the technical documentation site for the Celo project! You can check out the live site at https://docs.celo.org. +Use the starter kit to get your docs deployed and ready to customize. -## Getting Started +Click the green **Use this template** button at the top of this repo to copy the Mintlify starter kit. The starter kit contains examples with -This documentation site is built using [Docusaurus v2](https://github.com/facebook/docusaurus). +- Guide pages +- Navigation +- Customizations +- API reference pages +- Use of popular components -You can run the site locally by cloning this repository, installing dependencies and starting docusaurus. +**[Follow the full quickstart guide](https://starter.mintlify.com/quickstart)** -```sh -git clone https://github.com/celo-org/docs.git -cd docs -yarn -yarn start -``` - -Edit files in the `/docs` directory to make updates to the documentation pages. Pages will be automatically updated when you are running the development server. - -## Files - -- `.gitignore` - This specifies which files Git should ignore when committing and pushing to remote repositories. -- `docusaurus.config.js` - This is the configuration file for Docusaurus. You can manage the links in the header and footer, and site metadata here. A more in-depth introduction to this configuration file is available on the [Docusaurus website](https://docusaurus.io/docs/configuration) and full documentation for the API is [here](https://docusaurus.io/docs/docusaurus.config.js). -- `package.json` - This specifies the dependencies for the website and the commands that you can run with yarn. -- `sidebars.js` - This specifies the sidebars for your documentation. The full documentation for this file is available on the [Docusaurus website](https://docusaurus.io/docs/sidebar). -- `yarn.lock` - This specifies the full dependencies for the website including the dependencies of the dependencies listed in `package.json`. Do not edit this file directly. Edit `package.json` instead, then run `yarn` as described above. - -The .md files in the docs directory are the docs. See the [Docusaurus website](https://docusaurus.io/docs/docs-introduction) for the full documentation on how to create docs and to manage the metadata. - -## Contributing +## Development -We welcome contributions from the community. Please review our [contribution guidelines](docs/what-is-celo/joining-celo/contributors/documentation-contributors.md) for more information. +Install the [Mintlify CLI](https://www.npmjs.com/package/mint) to preview your documentation changes locally. To install, use the following command: -You can find many of the other main Celo project repositories at https://github.com/celo-org. - -### Internationalization +``` +npm i -g mint +``` -We are managing translations using [Crowdin](https://crowdin.com/). You can find the [Celo Docs Crowdin project here](https://crowdin.com/project/celo-docs). From here, click on the language that you would like to help translate the docs into. +Run the following command at the root of your documentation, where your `docs.json` is located: -Due to inconsistencies with managing the source code in 2 places (Github and Crowdin), only the English source code is stored in this repo. The translation sources are stored on Crowdin and are fetched when the site is built. +``` +mint dev +``` -Some files are marked as high priority. In the following image you can see the up arrow on the right side of the file line, indicating the file is a higher priority than others. Please focus on files marked as high priority. +View your local preview at `http://localhost:3000`. -![](https://github.com/critesjosh/images/blob/main/docs_translations/high_priority_files.png?raw=true) +## Publishing changes -If you have any questions, please post in the [project discussions tab here](https://crowdin.com/project/celo-docs/discussions). +Install our GitHub app from your [dashboard](https://dashboard.mintlify.com/settings/organization/github-app) to propagate changes from your repo to your deployment. Changes are deployed to production automatically after pushing to the default branch. -## Contact +## Need help? -Join us on [Discord](https://chat.celo.org) or file an issue. +### Troubleshooting -## Code of Conduct +- If your dev environment isn't running: Run `mint update` to ensure you have the most recent version of the CLI. +- If a page loads as a 404: Make sure you are running in a folder with a valid `docs.json`. -Please review the [code of conduct](https://github.com/celo-org/docs?tab=coc-ov-file#celo-community-code-of-conduct) before contributing. +### Resources +- [Mintlify documentation](https://mintlify.com/docs) +- [Mintlify community](https://mintlify.com/community) diff --git a/mintlify-migration/_deprecated/cel2/faq.mdx b/_deprecated/cel2/faq.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/faq.mdx rename to _deprecated/cel2/faq.mdx diff --git a/mintlify-migration/_deprecated/cel2/index.mdx b/_deprecated/cel2/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/index.mdx rename to _deprecated/cel2/index.mdx diff --git a/mintlify-migration/_deprecated/cel2/notices/celo-sepolia-launch.mdx b/_deprecated/cel2/notices/celo-sepolia-launch.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/notices/celo-sepolia-launch.mdx rename to _deprecated/cel2/notices/celo-sepolia-launch.mdx diff --git a/mintlify-migration/_deprecated/cel2/notices/eigenda-v2-upgrade.mdx b/_deprecated/cel2/notices/eigenda-v2-upgrade.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/notices/eigenda-v2-upgrade.mdx rename to _deprecated/cel2/notices/eigenda-v2-upgrade.mdx diff --git a/mintlify-migration/_deprecated/cel2/notices/isthmus-upgrade.mdx b/_deprecated/cel2/notices/isthmus-upgrade.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/notices/isthmus-upgrade.mdx rename to _deprecated/cel2/notices/isthmus-upgrade.mdx diff --git a/mintlify-migration/_deprecated/cel2/notices/l2-migration.mdx b/_deprecated/cel2/notices/l2-migration.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/notices/l2-migration.mdx rename to _deprecated/cel2/notices/l2-migration.mdx diff --git a/mintlify-migration/_deprecated/cel2/operators/architecture.mdx b/_deprecated/cel2/operators/architecture.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/operators/architecture.mdx rename to _deprecated/cel2/operators/architecture.mdx diff --git a/mintlify-migration/_deprecated/cel2/operators/migrate-node.mdx b/_deprecated/cel2/operators/migrate-node.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/operators/migrate-node.mdx rename to _deprecated/cel2/operators/migrate-node.mdx diff --git a/mintlify-migration/_deprecated/cel2/operators/overview.mdx b/_deprecated/cel2/operators/overview.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/operators/overview.mdx rename to _deprecated/cel2/operators/overview.mdx diff --git a/mintlify-migration/_deprecated/cel2/operators/run-node.mdx b/_deprecated/cel2/operators/run-node.mdx similarity index 100% rename from mintlify-migration/_deprecated/cel2/operators/run-node.mdx rename to _deprecated/cel2/operators/run-node.mdx diff --git a/mintlify-migration/_deprecated/integration/checklist.mdx b/_deprecated/integration/checklist.mdx similarity index 100% rename from mintlify-migration/_deprecated/integration/checklist.mdx rename to _deprecated/integration/checklist.mdx diff --git a/mintlify-migration/_deprecated/integration/cloud-hsm.mdx b/_deprecated/integration/cloud-hsm.mdx similarity index 100% rename from mintlify-migration/_deprecated/integration/cloud-hsm.mdx rename to _deprecated/integration/cloud-hsm.mdx diff --git a/mintlify-migration/_deprecated/integration/custody.mdx b/_deprecated/integration/custody.mdx similarity index 100% rename from mintlify-migration/_deprecated/integration/custody.mdx rename to _deprecated/integration/custody.mdx diff --git a/mintlify-migration/_deprecated/integration/general.mdx b/_deprecated/integration/general.mdx similarity index 100% rename from mintlify-migration/_deprecated/integration/general.mdx rename to _deprecated/integration/general.mdx diff --git a/mintlify-migration/_deprecated/integration/index.mdx b/_deprecated/integration/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/integration/index.mdx rename to _deprecated/integration/index.mdx diff --git a/mintlify-migration/_deprecated/integration/listings.mdx b/_deprecated/integration/listings.mdx similarity index 100% rename from mintlify-migration/_deprecated/integration/listings.mdx rename to _deprecated/integration/listings.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/node/run-alfajores.mdx b/_deprecated/what-is-celo/about-celo-l1/node/run-alfajores.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/node/run-alfajores.mdx rename to _deprecated/what-is-celo/about-celo-l1/node/run-alfajores.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/node/run-baklava.mdx b/_deprecated/what-is-celo/about-celo-l1/node/run-baklava.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/node/run-baklava.mdx rename to _deprecated/what-is-celo/about-celo-l1/node/run-baklava.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/node/run-mainnet.mdx b/_deprecated/what-is-celo/about-celo-l1/node/run-mainnet.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/node/run-mainnet.mdx rename to _deprecated/what-is-celo/about-celo-l1/node/run-mainnet.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/index.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/index.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/consensus/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/locating-nodes.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/locating-nodes.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/locating-nodes.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/consensus/locating-nodes.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/validator-set-differences.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/validator-set-differences.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/consensus/validator-set-differences.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/consensus/validator-set-differences.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/contracts/add-contract.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/contracts/add-contract.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/contracts/add-contract.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/contracts/add-contract.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/encrypted-cloud-backup.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/encrypted-cloud-backup.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/encrypted-cloud-backup.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/encrypted-cloud-backup.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/index.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/index.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/metadata.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/metadata.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/metadata.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/metadata.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain-sequential-delay-domain.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain-sequential-delay-domain.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain-sequential-delay-domain.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain-sequential-delay-domain.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-domain.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-key-hardening.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-key-hardening.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-key-hardening.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-key-hardening.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-phone-number-privacy.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-phone-number-privacy.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-phone-number-privacy.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/odis-use-case-phone-number-privacy.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/odis.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/odis.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/privacy-research.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/privacy-research.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/privacy-research.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/privacy-research.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/smart-contract-accounts.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/identity/smart-contract-accounts.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/identity/smart-contract-accounts.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/identity/smart-contract-accounts.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/becoming-a-validator.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/becoming-a-validator.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/becoming-a-validator.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/becoming-a-validator.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-locked-gold.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-locked-gold.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-locked-gold.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-locked-gold.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-validator.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-validator.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-validator.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards-validator.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/epoch-rewards.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/index.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/index.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/locked-gold.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/locked-gold.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/locked-gold.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/locked-gold.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/penalties.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/penalties.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/penalties.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/penalties.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-elections.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-elections.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-elections.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-elections.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-groups.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-groups.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-groups.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/pos/validator-groups.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/randomness.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/randomness.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/randomness.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/randomness.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/adding-stable-assets.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/stability/adding-stable-assets.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/adding-stable-assets.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/stability/adding-stable-assets.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/doto.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/stability/doto.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/doto.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/stability/doto.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/granda-mento.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/stability/granda-mento.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/granda-mento.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/stability/granda-mento.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/index.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/stability/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/index.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/stability/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/oracles.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/stability/oracles.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/oracles.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/stability/oracles.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/stability-fees.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/stability/stability-fees.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/stability/stability-fees.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/stability/stability-fees.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/erc20-transaction-fees.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/erc20-transaction-fees.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/erc20-transaction-fees.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/erc20-transaction-fees.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/escrow.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/escrow.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/escrow.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/escrow.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/gas-pricing.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/gas-pricing.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/gas-pricing.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/gas-pricing.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/index.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/index.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/native-currency.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/native-currency.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/native-currency.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/native-currency.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/transaction-types.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/transaction-types.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/transaction-types.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/transaction-types.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/tx-comment-encryption.mdx b/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/tx-comment-encryption.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/protocol/transaction/tx-comment-encryption.mdx rename to _deprecated/what-is-celo/about-celo-l1/protocol/transaction/tx-comment-encryption.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/celo-foundation-voting-policy.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/celo-foundation-voting-policy.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/celo-foundation-voting-policy.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/celo-foundation-voting-policy.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/celo-website.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/celo-website.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/celo-website.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/celo-website.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/devops-best-practices.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/devops-best-practices.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/devops-best-practices.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/devops-best-practices.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/discord.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/discord.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/discord.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/discord.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/index.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/index.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/key-management/detailed.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/key-management/detailed.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/key-management/detailed.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/key-management/detailed.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/key-management/key-rotation.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/key-management/key-rotation.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/key-management/key-rotation.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/key-management/key-rotation.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/key-management/summary.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/key-management/summary.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/key-management/summary.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/key-management/summary.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/monitoring.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/monitoring.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/monitoring.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/monitoring.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/node-upgrade.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/node-upgrade.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/node-upgrade.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/node-upgrade.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/proxy.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/proxy.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/proxy.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/proxy.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/run/mainnet.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/run/mainnet.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/run/mainnet.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/run/mainnet.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/security.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/security.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/security.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/security.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/troubleshooting-faq.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/troubleshooting-faq.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/troubleshooting-faq.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/troubleshooting-faq.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/validator-explorer.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/validator-explorer.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/validator-explorer.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/validator-explorer.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/voting.mdx b/_deprecated/what-is-celo/about-celo-l1/validator/voting.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/about-celo-l1/validator/voting.mdx rename to _deprecated/what-is-celo/about-celo-l1/validator/voting.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/celo-website.mdx b/_deprecated/what-is-celo/celo-website.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/celo-website.mdx rename to _deprecated/what-is-celo/celo-website.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/builders.mdx b/_deprecated/what-is-celo/joining-celo/builders.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/builders.mdx rename to _deprecated/what-is-celo/joining-celo/builders.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/code-of-conduct.mdx b/_deprecated/what-is-celo/joining-celo/code-of-conduct.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/code-of-conduct.mdx rename to _deprecated/what-is-celo/joining-celo/code-of-conduct.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/cip-contributors.mdx b/_deprecated/what-is-celo/joining-celo/contributors/cip-contributors.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/cip-contributors.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/cip-contributors.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/code-contributors.mdx b/_deprecated/what-is-celo/joining-celo/contributors/code-contributors.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/code-contributors.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/code-contributors.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/documentation-contributors.mdx b/_deprecated/what-is-celo/joining-celo/contributors/documentation-contributors.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/documentation-contributors.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/documentation-contributors.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/overview.mdx b/_deprecated/what-is-celo/joining-celo/contributors/overview.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/overview.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/overview.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/attestation-service.mdx b/_deprecated/what-is-celo/joining-celo/contributors/release-process/attestation-service.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/attestation-service.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/release-process/attestation-service.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/base-cli-contractkit-dappkit-utils.mdx b/_deprecated/what-is-celo/joining-celo/contributors/release-process/base-cli-contractkit-dappkit-utils.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/base-cli-contractkit-dappkit-utils.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/release-process/base-cli-contractkit-dappkit-utils.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/blockchain-client.mdx b/_deprecated/what-is-celo/joining-celo/contributors/release-process/blockchain-client.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/blockchain-client.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/release-process/blockchain-client.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/index.mdx b/_deprecated/what-is-celo/joining-celo/contributors/release-process/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/index.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/release-process/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/smart-contracts.mdx b/_deprecated/what-is-celo/joining-celo/contributors/release-process/smart-contracts.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/contributors/release-process/smart-contracts.mdx rename to _deprecated/what-is-celo/joining-celo/contributors/release-process/smart-contracts.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/daos.mdx b/_deprecated/what-is-celo/joining-celo/daos.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/daos.mdx rename to _deprecated/what-is-celo/joining-celo/daos.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/joining-celo/index.mdx b/_deprecated/what-is-celo/joining-celo/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/joining-celo/index.mdx rename to _deprecated/what-is-celo/joining-celo/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/bridged_tokens/tokens.mdx b/_deprecated/what-is-celo/using-celo/bridged_tokens/tokens.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/bridged_tokens/tokens.mdx rename to _deprecated/what-is-celo/using-celo/bridged_tokens/tokens.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/index.mdx b/_deprecated/what-is-celo/using-celo/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/index.mdx rename to _deprecated/what-is-celo/using-celo/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/manage/asset.mdx b/_deprecated/what-is-celo/using-celo/manage/asset.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/manage/asset.mdx rename to _deprecated/what-is-celo/using-celo/manage/asset.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/manage/exchange.mdx b/_deprecated/what-is-celo/using-celo/manage/exchange.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/manage/exchange.mdx rename to _deprecated/what-is-celo/using-celo/manage/exchange.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/manage/release-gold.mdx b/_deprecated/what-is-celo/using-celo/manage/release-gold.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/manage/release-gold.mdx rename to _deprecated/what-is-celo/using-celo/manage/release-gold.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/manage/self-custody.mdx b/_deprecated/what-is-celo/using-celo/manage/self-custody.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/manage/self-custody.mdx rename to _deprecated/what-is-celo/using-celo/manage/self-custody.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/celo-token.mdx b/_deprecated/what-is-celo/using-celo/protocol/celo-token.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/celo-token.mdx rename to _deprecated/what-is-celo/using-celo/protocol/celo-token.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/consensus.mdx b/_deprecated/what-is-celo/using-celo/protocol/consensus.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/consensus.mdx rename to _deprecated/what-is-celo/using-celo/protocol/consensus.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/escrow.mdx b/_deprecated/what-is-celo/using-celo/protocol/escrow.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/escrow.mdx rename to _deprecated/what-is-celo/using-celo/protocol/escrow.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/governable-parameters.mdx b/_deprecated/what-is-celo/using-celo/protocol/governance/governable-parameters.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/governable-parameters.mdx rename to _deprecated/what-is-celo/using-celo/protocol/governance/governable-parameters.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/governance-toolkit.mdx b/_deprecated/what-is-celo/using-celo/protocol/governance/governance-toolkit.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/governance-toolkit.mdx rename to _deprecated/what-is-celo/using-celo/protocol/governance/governance-toolkit.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/overview.mdx b/_deprecated/what-is-celo/using-celo/protocol/governance/overview.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/overview.mdx rename to _deprecated/what-is-celo/using-celo/protocol/governance/overview.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/smart-contracts-upgrades.mdx b/_deprecated/what-is-celo/using-celo/protocol/governance/smart-contracts-upgrades.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/smart-contracts-upgrades.mdx rename to _deprecated/what-is-celo/using-celo/protocol/governance/smart-contracts-upgrades.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance-using-mondo.mdx b/_deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance-using-mondo.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance-using-mondo.mdx rename to _deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance-using-mondo.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance.mdx b/_deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance.mdx rename to _deprecated/what-is-celo/using-celo/protocol/governance/voting-in-governance.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/index.mdx b/_deprecated/what-is-celo/using-celo/protocol/index.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/index.mdx rename to _deprecated/what-is-celo/using-celo/protocol/index.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/transaction/overview.mdx b/_deprecated/what-is-celo/using-celo/protocol/transaction/overview.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/transaction/overview.mdx rename to _deprecated/what-is-celo/using-celo/protocol/transaction/overview.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/transaction/transaction-types.mdx b/_deprecated/what-is-celo/using-celo/protocol/transaction/transaction-types.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/transaction/transaction-types.mdx rename to _deprecated/what-is-celo/using-celo/protocol/transaction/transaction-types.mdx diff --git a/mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/transaction/tx-comment-encryption.mdx b/_deprecated/what-is-celo/using-celo/protocol/transaction/tx-comment-encryption.mdx similarity index 100% rename from mintlify-migration/_deprecated/what-is-celo/using-celo/protocol/transaction/tx-comment-encryption.mdx rename to _deprecated/what-is-celo/using-celo/protocol/transaction/tx-comment-encryption.mdx diff --git a/mintlify-migration/about-celo/bridged-tokens/bridges.mdx b/about-celo/bridged-tokens/bridges.mdx similarity index 100% rename from mintlify-migration/about-celo/bridged-tokens/bridges.mdx rename to about-celo/bridged-tokens/bridges.mdx diff --git a/mintlify-migration/about-celo/bridged-tokens/native-ETH-bridging.mdx b/about-celo/bridged-tokens/native-ETH-bridging.mdx similarity index 100% rename from mintlify-migration/about-celo/bridged-tokens/native-ETH-bridging.mdx rename to about-celo/bridged-tokens/native-ETH-bridging.mdx diff --git a/mintlify-migration/about-celo/exchanges.mdx b/about-celo/exchanges.mdx similarity index 100% rename from mintlify-migration/about-celo/exchanges.mdx rename to about-celo/exchanges.mdx diff --git a/mintlify-migration/about-celo/gas-fees.mdx b/about-celo/gas-fees.mdx similarity index 100% rename from mintlify-migration/about-celo/gas-fees.mdx rename to about-celo/gas-fees.mdx diff --git a/mintlify-migration/about-celo/history.mdx b/about-celo/history.mdx similarity index 100% rename from mintlify-migration/about-celo/history.mdx rename to about-celo/history.mdx diff --git a/mintlify-migration/about-celo/index.mdx b/about-celo/index.mdx similarity index 100% rename from mintlify-migration/about-celo/index.mdx rename to about-celo/index.mdx diff --git a/mintlify-migration/about-celo/manage/asset.mdx b/about-celo/manage/asset.mdx similarity index 100% rename from mintlify-migration/about-celo/manage/asset.mdx rename to about-celo/manage/asset.mdx diff --git a/mintlify-migration/about-celo/manage/exchange.mdx b/about-celo/manage/exchange.mdx similarity index 100% rename from mintlify-migration/about-celo/manage/exchange.mdx rename to about-celo/manage/exchange.mdx diff --git a/mintlify-migration/about-celo/manage/release-gold.mdx b/about-celo/manage/release-gold.mdx similarity index 100% rename from mintlify-migration/about-celo/manage/release-gold.mdx rename to about-celo/manage/release-gold.mdx diff --git a/mintlify-migration/about-celo/manage/self-custody.mdx b/about-celo/manage/self-custody.mdx similarity index 100% rename from mintlify-migration/about-celo/manage/self-custody.mdx rename to about-celo/manage/self-custody.mdx diff --git a/mintlify-migration/about-celo/protocol/celo-token.mdx b/about-celo/protocol/celo-token.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/celo-token.mdx rename to about-celo/protocol/celo-token.mdx diff --git a/mintlify-migration/about-celo/protocol/consensus.mdx b/about-celo/protocol/consensus.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/consensus.mdx rename to about-celo/protocol/consensus.mdx diff --git a/mintlify-migration/about-celo/protocol/epoch-rewards/carbon-offsetting-fund.mdx b/about-celo/protocol/epoch-rewards/carbon-offsetting-fund.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/epoch-rewards/carbon-offsetting-fund.mdx rename to about-celo/protocol/epoch-rewards/carbon-offsetting-fund.mdx diff --git a/mintlify-migration/about-celo/protocol/epoch-rewards/community-fund.mdx b/about-celo/protocol/epoch-rewards/community-fund.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/epoch-rewards/community-fund.mdx rename to about-celo/protocol/epoch-rewards/community-fund.mdx diff --git a/mintlify-migration/about-celo/protocol/epoch-rewards/index.mdx b/about-celo/protocol/epoch-rewards/index.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/epoch-rewards/index.mdx rename to about-celo/protocol/epoch-rewards/index.mdx diff --git a/mintlify-migration/about-celo/protocol/escrow.mdx b/about-celo/protocol/escrow.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/escrow.mdx rename to about-celo/protocol/escrow.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/create-governance-proposal.mdx b/about-celo/protocol/governance/create-governance-proposal.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/create-governance-proposal.mdx rename to about-celo/protocol/governance/create-governance-proposal.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/governable-parameters.mdx b/about-celo/protocol/governance/governable-parameters.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/governable-parameters.mdx rename to about-celo/protocol/governance/governable-parameters.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/governance-toolkit.mdx b/about-celo/protocol/governance/governance-toolkit.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/governance-toolkit.mdx rename to about-celo/protocol/governance/governance-toolkit.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/overview.mdx b/about-celo/protocol/governance/overview.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/overview.mdx rename to about-celo/protocol/governance/overview.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/smart-contracts-upgrades.mdx b/about-celo/protocol/governance/smart-contracts-upgrades.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/smart-contracts-upgrades.mdx rename to about-celo/protocol/governance/smart-contracts-upgrades.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/voting-in-governance-using-mondo.mdx b/about-celo/protocol/governance/voting-in-governance-using-mondo.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/voting-in-governance-using-mondo.mdx rename to about-celo/protocol/governance/voting-in-governance-using-mondo.mdx diff --git a/mintlify-migration/about-celo/protocol/governance/voting-in-governance.mdx b/about-celo/protocol/governance/voting-in-governance.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/governance/voting-in-governance.mdx rename to about-celo/protocol/governance/voting-in-governance.mdx diff --git a/mintlify-migration/about-celo/protocol/index.mdx b/about-celo/protocol/index.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/index.mdx rename to about-celo/protocol/index.mdx diff --git a/mintlify-migration/about-celo/protocol/transactions/overview.mdx b/about-celo/protocol/transactions/overview.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/transactions/overview.mdx rename to about-celo/protocol/transactions/overview.mdx diff --git a/mintlify-migration/about-celo/protocol/transactions/transaction-types.mdx b/about-celo/protocol/transactions/transaction-types.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/transactions/transaction-types.mdx rename to about-celo/protocol/transactions/transaction-types.mdx diff --git a/mintlify-migration/about-celo/protocol/transactions/tx-comment-encryption.mdx b/about-celo/protocol/transactions/tx-comment-encryption.mdx similarity index 100% rename from mintlify-migration/about-celo/protocol/transactions/tx-comment-encryption.mdx rename to about-celo/protocol/transactions/tx-comment-encryption.mdx diff --git a/mintlify-migration/about-celo/ramps.mdx b/about-celo/ramps.mdx similarity index 100% rename from mintlify-migration/about-celo/ramps.mdx rename to about-celo/ramps.mdx diff --git a/mintlify-migration/about-celo/wallets.mdx b/about-celo/wallets.mdx similarity index 100% rename from mintlify-migration/about-celo/wallets.mdx rename to about-celo/wallets.mdx diff --git a/mintlify-migration/assets/dark-hero.png b/assets/dark-hero.png similarity index 100% rename from mintlify-migration/assets/dark-hero.png rename to assets/dark-hero.png diff --git a/mintlify-migration/assets/light-hero.png b/assets/light-hero.png similarity index 100% rename from mintlify-migration/assets/light-hero.png rename to assets/light-hero.png diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index bfd75dbdfc..0000000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve("@docusaurus/core/lib/babel/preset")], -}; diff --git a/mintlify-migration/broken.mdx b/broken.mdx similarity index 100% rename from mintlify-migration/broken.mdx rename to broken.mdx diff --git a/mintlify-migration/broken.txt b/broken.txt similarity index 100% rename from mintlify-migration/broken.txt rename to broken.txt diff --git a/mintlify-migration/build/build-on-minipay/code-library.mdx b/build/build-on-minipay/code-library.mdx similarity index 100% rename from mintlify-migration/build/build-on-minipay/code-library.mdx rename to build/build-on-minipay/code-library.mdx diff --git a/mintlify-migration/build/build-on-minipay/deeplinks.mdx b/build/build-on-minipay/deeplinks.mdx similarity index 100% rename from mintlify-migration/build/build-on-minipay/deeplinks.mdx rename to build/build-on-minipay/deeplinks.mdx diff --git a/mintlify-migration/build/build-on-minipay/overview.mdx b/build/build-on-minipay/overview.mdx similarity index 100% rename from mintlify-migration/build/build-on-minipay/overview.mdx rename to build/build-on-minipay/overview.mdx diff --git a/mintlify-migration/build/build-on-minipay/prerequisites/ngrok-setup.mdx b/build/build-on-minipay/prerequisites/ngrok-setup.mdx similarity index 100% rename from mintlify-migration/build/build-on-minipay/prerequisites/ngrok-setup.mdx rename to build/build-on-minipay/prerequisites/ngrok-setup.mdx diff --git a/mintlify-migration/build/build-on-minipay/quickstart.mdx b/build/build-on-minipay/quickstart.mdx similarity index 100% rename from mintlify-migration/build/build-on-minipay/quickstart.mdx rename to build/build-on-minipay/quickstart.mdx diff --git a/mintlify-migration/build/build-on-socialconnect.mdx b/build/build-on-socialconnect.mdx similarity index 100% rename from mintlify-migration/build/build-on-socialconnect.mdx rename to build/build-on-socialconnect.mdx diff --git a/mintlify-migration/build/build-with-ai/build-with-goat/mint-nft-agent.mdx b/build/build-with-ai/build-with-goat/mint-nft-agent.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/build-with-goat/mint-nft-agent.mdx rename to build/build-with-ai/build-with-goat/mint-nft-agent.mdx diff --git a/mintlify-migration/build/build-with-ai/build-with-goat/send-token-agent.mdx b/build/build-with-ai/build-with-goat/send-token-agent.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/build-with-goat/send-token-agent.mdx rename to build/build-with-ai/build-with-goat/send-token-agent.mdx diff --git a/mintlify-migration/build/build-with-ai/build-with-goat/token-swap-agent.mdx b/build/build-with-ai/build-with-goat/token-swap-agent.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/build-with-goat/token-swap-agent.mdx rename to build/build-with-ai/build-with-goat/token-swap-agent.mdx diff --git a/mintlify-migration/build/build-with-ai/examples/ai-memecoins.mdx b/build/build-with-ai/examples/ai-memecoins.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/examples/ai-memecoins.mdx rename to build/build-with-ai/examples/ai-memecoins.mdx diff --git a/mintlify-migration/build/build-with-ai/examples/build-with-nebula.mdx b/build/build-with-ai/examples/build-with-nebula.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/examples/build-with-nebula.mdx rename to build/build-with-ai/examples/build-with-nebula.mdx diff --git a/mintlify-migration/build/build-with-ai/examples/building_with_goat.mdx b/build/build-with-ai/examples/building_with_goat.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/examples/building_with_goat.mdx rename to build/build-with-ai/examples/building_with_goat.mdx diff --git a/mintlify-migration/build/build-with-ai/mcp/celo-mcp.mdx b/build/build-with-ai/mcp/celo-mcp.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/mcp/celo-mcp.mdx rename to build/build-with-ai/mcp/celo-mcp.mdx diff --git a/mintlify-migration/build/build-with-ai/mcp/composer-mcp.mdx b/build/build-with-ai/mcp/composer-mcp.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/mcp/composer-mcp.mdx rename to build/build-with-ai/mcp/composer-mcp.mdx diff --git a/mintlify-migration/build/build-with-ai/mcp/index.mdx b/build/build-with-ai/mcp/index.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/mcp/index.mdx rename to build/build-with-ai/mcp/index.mdx diff --git a/mintlify-migration/build/build-with-ai/multi-agent-systems.mdx b/build/build-with-ai/multi-agent-systems.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/multi-agent-systems.mdx rename to build/build-with-ai/multi-agent-systems.mdx diff --git a/mintlify-migration/build/build-with-ai/overview.mdx b/build/build-with-ai/overview.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/overview.mdx rename to build/build-with-ai/overview.mdx diff --git a/mintlify-migration/build/build-with-ai/resources.mdx b/build/build-with-ai/resources.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/resources.mdx rename to build/build-with-ai/resources.mdx diff --git a/mintlify-migration/build/build-with-ai/tools.mdx b/build/build-with-ai/tools.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/tools.mdx rename to build/build-with-ai/tools.mdx diff --git a/mintlify-migration/build/build-with-ai/usecases.mdx b/build/build-with-ai/usecases.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/usecases.mdx rename to build/build-with-ai/usecases.mdx diff --git a/mintlify-migration/build/build-with-ai/vibe-coding.mdx b/build/build-with-ai/vibe-coding.mdx similarity index 100% rename from mintlify-migration/build/build-with-ai/vibe-coding.mdx rename to build/build-with-ai/vibe-coding.mdx diff --git a/mintlify-migration/build/build-with-defi.mdx b/build/build-with-defi.mdx similarity index 100% rename from mintlify-migration/build/build-with-defi.mdx rename to build/build-with-defi.mdx diff --git a/mintlify-migration/build/build-with-local-stablecoin.mdx b/build/build-with-local-stablecoin.mdx similarity index 100% rename from mintlify-migration/build/build-with-local-stablecoin.mdx rename to build/build-with-local-stablecoin.mdx diff --git a/mintlify-migration/build/build-with-self.mdx b/build/build-with-self.mdx similarity index 100% rename from mintlify-migration/build/build-with-self.mdx rename to build/build-with-self.mdx diff --git a/mintlify-migration/build/build-with-thirdweb/celo-nft-drop-tutorial.mdx b/build/build-with-thirdweb/celo-nft-drop-tutorial.mdx similarity index 100% rename from mintlify-migration/build/build-with-thirdweb/celo-nft-drop-tutorial.mdx rename to build/build-with-thirdweb/celo-nft-drop-tutorial.mdx diff --git a/mintlify-migration/build/build-with-thirdweb/one-click quickstart.mdx b/build/build-with-thirdweb/one-click quickstart.mdx similarity index 100% rename from mintlify-migration/build/build-with-thirdweb/one-click quickstart.mdx rename to build/build-with-thirdweb/one-click quickstart.mdx diff --git a/mintlify-migration/build/build-with-thirdweb/overview.mdx b/build/build-with-thirdweb/overview.mdx similarity index 100% rename from mintlify-migration/build/build-with-thirdweb/overview.mdx rename to build/build-with-thirdweb/overview.mdx diff --git a/mintlify-migration/build/build-with-zk-identity.mdx b/build/build-with-zk-identity.mdx similarity index 100% rename from mintlify-migration/build/build-with-zk-identity.mdx rename to build/build-with-zk-identity.mdx diff --git a/mintlify-migration/build/cel2-architecture.mdx b/build/cel2-architecture.mdx similarity index 100% rename from mintlify-migration/build/cel2-architecture.mdx rename to build/cel2-architecture.mdx diff --git a/mintlify-migration/build/fund-your-project.mdx b/build/fund-your-project.mdx similarity index 100% rename from mintlify-migration/build/fund-your-project.mdx rename to build/fund-your-project.mdx diff --git a/mintlify-migration/build/index.mdx b/build/index.mdx similarity index 100% rename from mintlify-migration/build/index.mdx rename to build/index.mdx diff --git a/mintlify-migration/build/launch-checklist.mdx b/build/launch-checklist.mdx similarity index 100% rename from mintlify-migration/build/launch-checklist.mdx rename to build/launch-checklist.mdx diff --git a/mintlify-migration/build/quickstart.mdx b/build/quickstart.mdx similarity index 100% rename from mintlify-migration/build/quickstart.mdx rename to build/quickstart.mdx diff --git a/mintlify-migration/build/support.mdx b/build/support.mdx similarity index 100% rename from mintlify-migration/build/support.mdx rename to build/support.mdx diff --git a/mintlify-migration/cli/account.mdx b/cli/account.mdx similarity index 100% rename from mintlify-migration/cli/account.mdx rename to cli/account.mdx diff --git a/mintlify-migration/cli/autocomplete.mdx b/cli/autocomplete.mdx similarity index 100% rename from mintlify-migration/cli/autocomplete.mdx rename to cli/autocomplete.mdx diff --git a/mintlify-migration/cli/commands.mdx b/cli/commands.mdx similarity index 100% rename from mintlify-migration/cli/commands.mdx rename to cli/commands.mdx diff --git a/mintlify-migration/cli/config.mdx b/cli/config.mdx similarity index 100% rename from mintlify-migration/cli/config.mdx rename to cli/config.mdx diff --git a/mintlify-migration/cli/dkg.mdx b/cli/dkg.mdx similarity index 100% rename from mintlify-migration/cli/dkg.mdx rename to cli/dkg.mdx diff --git a/mintlify-migration/cli/election.mdx b/cli/election.mdx similarity index 100% rename from mintlify-migration/cli/election.mdx rename to cli/election.mdx diff --git a/mintlify-migration/cli/epochs.mdx b/cli/epochs.mdx similarity index 100% rename from mintlify-migration/cli/epochs.mdx rename to cli/epochs.mdx diff --git a/mintlify-migration/cli/exchange.mdx b/cli/exchange.mdx similarity index 100% rename from mintlify-migration/cli/exchange.mdx rename to cli/exchange.mdx diff --git a/mintlify-migration/cli/governance.mdx b/cli/governance.mdx similarity index 100% rename from mintlify-migration/cli/governance.mdx rename to cli/governance.mdx diff --git a/mintlify-migration/cli/help.mdx b/cli/help.mdx similarity index 100% rename from mintlify-migration/cli/help.mdx rename to cli/help.mdx diff --git a/mintlify-migration/cli/identity.mdx b/cli/identity.mdx similarity index 100% rename from mintlify-migration/cli/identity.mdx rename to cli/identity.mdx diff --git a/mintlify-migration/cli/index.mdx b/cli/index.mdx similarity index 100% rename from mintlify-migration/cli/index.mdx rename to cli/index.mdx diff --git a/mintlify-migration/cli/lockedcelo.mdx b/cli/lockedcelo.mdx similarity index 100% rename from mintlify-migration/cli/lockedcelo.mdx rename to cli/lockedcelo.mdx diff --git a/mintlify-migration/cli/lockedgold.mdx b/cli/lockedgold.mdx similarity index 100% rename from mintlify-migration/cli/lockedgold.mdx rename to cli/lockedgold.mdx diff --git a/mintlify-migration/cli/multisig.mdx b/cli/multisig.mdx similarity index 100% rename from mintlify-migration/cli/multisig.mdx rename to cli/multisig.mdx diff --git a/mintlify-migration/cli/network.mdx b/cli/network.mdx similarity index 100% rename from mintlify-migration/cli/network.mdx rename to cli/network.mdx diff --git a/mintlify-migration/cli/node.mdx b/cli/node.mdx similarity index 100% rename from mintlify-migration/cli/node.mdx rename to cli/node.mdx diff --git a/mintlify-migration/cli/oracle.mdx b/cli/oracle.mdx similarity index 100% rename from mintlify-migration/cli/oracle.mdx rename to cli/oracle.mdx diff --git a/mintlify-migration/cli/plugins.mdx b/cli/plugins.mdx similarity index 100% rename from mintlify-migration/cli/plugins.mdx rename to cli/plugins.mdx diff --git a/mintlify-migration/cli/releasecelo.mdx b/cli/releasecelo.mdx similarity index 100% rename from mintlify-migration/cli/releasecelo.mdx rename to cli/releasecelo.mdx diff --git a/mintlify-migration/cli/rewards.mdx b/cli/rewards.mdx similarity index 100% rename from mintlify-migration/cli/rewards.mdx rename to cli/rewards.mdx diff --git a/mintlify-migration/cli/transfer.mdx b/cli/transfer.mdx similarity index 100% rename from mintlify-migration/cli/transfer.mdx rename to cli/transfer.mdx diff --git a/mintlify-migration/cli/utils.mdx b/cli/utils.mdx similarity index 100% rename from mintlify-migration/cli/utils.mdx rename to cli/utils.mdx diff --git a/mintlify-migration/cli/validator.mdx b/cli/validator.mdx similarity index 100% rename from mintlify-migration/cli/validator.mdx rename to cli/validator.mdx diff --git a/mintlify-migration/cli/validatorgroup.mdx b/cli/validatorgroup.mdx similarity index 100% rename from mintlify-migration/cli/validatorgroup.mdx rename to cli/validatorgroup.mdx diff --git a/mintlify-migration/contracts/core-contracts.mdx b/contracts/core-contracts.mdx similarity index 100% rename from mintlify-migration/contracts/core-contracts.mdx rename to contracts/core-contracts.mdx diff --git a/mintlify-migration/contracts/token-contracts.mdx b/contracts/token-contracts.mdx similarity index 100% rename from mintlify-migration/contracts/token-contracts.mdx rename to contracts/token-contracts.mdx diff --git a/mintlify-migration/contracts/uniswap-contracts.mdx b/contracts/uniswap-contracts.mdx similarity index 100% rename from mintlify-migration/contracts/uniswap-contracts.mdx rename to contracts/uniswap-contracts.mdx diff --git a/mintlify-migration/contribute-to-celo/builders.mdx b/contribute-to-celo/builders.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/builders.mdx rename to contribute-to-celo/builders.mdx diff --git a/mintlify-migration/contribute-to-celo/code-of-conduct.mdx b/contribute-to-celo/code-of-conduct.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/code-of-conduct.mdx rename to contribute-to-celo/code-of-conduct.mdx diff --git a/mintlify-migration/contribute-to-celo/community-rpc-nodes/community-rpc-node.mdx b/contribute-to-celo/community-rpc-nodes/community-rpc-node.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/community-rpc-nodes/community-rpc-node.mdx rename to contribute-to-celo/community-rpc-nodes/community-rpc-node.mdx diff --git a/mintlify-migration/contribute-to-celo/community-rpc-nodes/how-it-works.mdx b/contribute-to-celo/community-rpc-nodes/how-it-works.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/community-rpc-nodes/how-it-works.mdx rename to contribute-to-celo/community-rpc-nodes/how-it-works.mdx diff --git a/mintlify-migration/contribute-to-celo/community-rpc-nodes/penalties.mdx b/contribute-to-celo/community-rpc-nodes/penalties.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/community-rpc-nodes/penalties.mdx rename to contribute-to-celo/community-rpc-nodes/penalties.mdx diff --git a/mintlify-migration/contribute-to-celo/community-rpc-nodes/registering-as-rpc-node.mdx b/contribute-to-celo/community-rpc-nodes/registering-as-rpc-node.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/community-rpc-nodes/registering-as-rpc-node.mdx rename to contribute-to-celo/community-rpc-nodes/registering-as-rpc-node.mdx diff --git a/mintlify-migration/contribute-to-celo/community-rpc-nodes/validator-rpc-faq.mdx b/contribute-to-celo/community-rpc-nodes/validator-rpc-faq.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/community-rpc-nodes/validator-rpc-faq.mdx rename to contribute-to-celo/community-rpc-nodes/validator-rpc-faq.mdx diff --git a/mintlify-migration/contribute-to-celo/contributors/cip-contributors.mdx b/contribute-to-celo/contributors/cip-contributors.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/contributors/cip-contributors.mdx rename to contribute-to-celo/contributors/cip-contributors.mdx diff --git a/mintlify-migration/contribute-to-celo/contributors/code-contributors.mdx b/contribute-to-celo/contributors/code-contributors.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/contributors/code-contributors.mdx rename to contribute-to-celo/contributors/code-contributors.mdx diff --git a/mintlify-migration/contribute-to-celo/contributors/documentation-contributors.mdx b/contribute-to-celo/contributors/documentation-contributors.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/contributors/documentation-contributors.mdx rename to contribute-to-celo/contributors/documentation-contributors.mdx diff --git a/mintlify-migration/contribute-to-celo/contributors/overview.mdx b/contribute-to-celo/contributors/overview.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/contributors/overview.mdx rename to contribute-to-celo/contributors/overview.mdx diff --git a/mintlify-migration/contribute-to-celo/daos.mdx b/contribute-to-celo/daos.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/daos.mdx rename to contribute-to-celo/daos.mdx diff --git a/mintlify-migration/contribute-to-celo/index.mdx b/contribute-to-celo/index.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/index.mdx rename to contribute-to-celo/index.mdx diff --git a/mintlify-migration/contribute-to-celo/release-process/attestation-service.mdx b/contribute-to-celo/release-process/attestation-service.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/release-process/attestation-service.mdx rename to contribute-to-celo/release-process/attestation-service.mdx diff --git a/mintlify-migration/contribute-to-celo/release-process/base-cli-contractkit-dappkit-utils.mdx b/contribute-to-celo/release-process/base-cli-contractkit-dappkit-utils.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/release-process/base-cli-contractkit-dappkit-utils.mdx rename to contribute-to-celo/release-process/base-cli-contractkit-dappkit-utils.mdx diff --git a/mintlify-migration/contribute-to-celo/release-process/blockchain-client.mdx b/contribute-to-celo/release-process/blockchain-client.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/release-process/blockchain-client.mdx rename to contribute-to-celo/release-process/blockchain-client.mdx diff --git a/mintlify-migration/contribute-to-celo/release-process/index.mdx b/contribute-to-celo/release-process/index.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/release-process/index.mdx rename to contribute-to-celo/release-process/index.mdx diff --git a/mintlify-migration/contribute-to-celo/release-process/smart-contracts.mdx b/contribute-to-celo/release-process/smart-contracts.mdx similarity index 100% rename from mintlify-migration/contribute-to-celo/release-process/smart-contracts.mdx rename to contribute-to-celo/release-process/smart-contracts.mdx diff --git a/crowdin.yml b/crowdin.yml deleted file mode 100644 index 1dbe5eb06c..0000000000 --- a/crowdin.yml +++ /dev/null @@ -1,21 +0,0 @@ -project_id: "9" -api_token_env: "CROWDIN_PERSONAL_TOKEN" -preserve_hierarchy: true -base_url: "https://celo.crowdin.com" -files: [ - # JSON translation files - { - source: "/i18n/en/**/*", - translation: "/i18n/%two_letters_code%/**/%original_file_name%", - }, - # Docs Markdown files - { - source: "/docs/**/*", - translation: "/i18n/%two_letters_code%/docusaurus-plugin-content-docs/current/**/%original_file_name%", - }, - # Blog Markdown files - { - source: "/blog/**/*", - translation: "/i18n/%two_letters_code%/blog/**/%original_file_name%", - }, - ] diff --git a/mintlify-migration/developer/bridges/bridges.mdx b/developer/bridges/bridges.mdx similarity index 100% rename from mintlify-migration/developer/bridges/bridges.mdx rename to developer/bridges/bridges.mdx diff --git a/mintlify-migration/developer/bridges/cross-chain-messaging.mdx b/developer/bridges/cross-chain-messaging.mdx similarity index 100% rename from mintlify-migration/developer/bridges/cross-chain-messaging.mdx rename to developer/bridges/cross-chain-messaging.mdx diff --git a/mintlify-migration/developer/contractkit/contracts-wrappers-registry.mdx b/developer/contractkit/contracts-wrappers-registry.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/contracts-wrappers-registry.mdx rename to developer/contractkit/contracts-wrappers-registry.mdx diff --git a/mintlify-migration/developer/contractkit/data-encryption-key.mdx b/developer/contractkit/data-encryption-key.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/data-encryption-key.mdx rename to developer/contractkit/data-encryption-key.mdx diff --git a/mintlify-migration/developer/contractkit/index.mdx b/developer/contractkit/index.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/index.mdx rename to developer/contractkit/index.mdx diff --git a/mintlify-migration/developer/contractkit/migrating-to-contractkit-v1.mdx b/developer/contractkit/migrating-to-contractkit-v1.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/migrating-to-contractkit-v1.mdx rename to developer/contractkit/migrating-to-contractkit-v1.mdx diff --git a/mintlify-migration/developer/contractkit/migrating-to-contractkit-v2.mdx b/developer/contractkit/migrating-to-contractkit-v2.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/migrating-to-contractkit-v2.mdx rename to developer/contractkit/migrating-to-contractkit-v2.mdx diff --git a/mintlify-migration/developer/contractkit/migrating-to-viem.mdx b/developer/contractkit/migrating-to-viem.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/migrating-to-viem.mdx rename to developer/contractkit/migrating-to-viem.mdx diff --git a/mintlify-migration/developer/contractkit/notes-web3-with-contractkit.mdx b/developer/contractkit/notes-web3-with-contractkit.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/notes-web3-with-contractkit.mdx rename to developer/contractkit/notes-web3-with-contractkit.mdx diff --git a/mintlify-migration/developer/contractkit/odis.mdx b/developer/contractkit/odis.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/odis.mdx rename to developer/contractkit/odis.mdx diff --git a/mintlify-migration/developer/contractkit/setup.mdx b/developer/contractkit/setup.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/setup.mdx rename to developer/contractkit/setup.mdx diff --git a/mintlify-migration/developer/contractkit/usage.mdx b/developer/contractkit/usage.mdx similarity index 100% rename from mintlify-migration/developer/contractkit/usage.mdx rename to developer/contractkit/usage.mdx diff --git a/mintlify-migration/developer/deploy/foundry.mdx b/developer/deploy/foundry.mdx similarity index 100% rename from mintlify-migration/developer/deploy/foundry.mdx rename to developer/deploy/foundry.mdx diff --git a/mintlify-migration/developer/deploy/hardhat.mdx b/developer/deploy/hardhat.mdx similarity index 100% rename from mintlify-migration/developer/deploy/hardhat.mdx rename to developer/deploy/hardhat.mdx diff --git a/mintlify-migration/developer/deploy/index.mdx b/developer/deploy/index.mdx similarity index 100% rename from mintlify-migration/developer/deploy/index.mdx rename to developer/deploy/index.mdx diff --git a/mintlify-migration/developer/deploy/remix.mdx b/developer/deploy/remix.mdx similarity index 100% rename from mintlify-migration/developer/deploy/remix.mdx rename to developer/deploy/remix.mdx diff --git a/mintlify-migration/developer/deploy/thirdweb/one-click-deploy.mdx b/developer/deploy/thirdweb/one-click-deploy.mdx similarity index 100% rename from mintlify-migration/developer/deploy/thirdweb/one-click-deploy.mdx rename to developer/deploy/thirdweb/one-click-deploy.mdx diff --git a/mintlify-migration/developer/deploy/thirdweb/overview.mdx b/developer/deploy/thirdweb/overview.mdx similarity index 100% rename from mintlify-migration/developer/deploy/thirdweb/overview.mdx rename to developer/deploy/thirdweb/overview.mdx diff --git a/mintlify-migration/developer/deploy/thirdweb/thirdweb.mdx b/developer/deploy/thirdweb/thirdweb.mdx similarity index 100% rename from mintlify-migration/developer/deploy/thirdweb/thirdweb.mdx rename to developer/deploy/thirdweb/thirdweb.mdx diff --git a/mintlify-migration/developer/dynamic/index.mdx b/developer/dynamic/index.mdx similarity index 100% rename from mintlify-migration/developer/dynamic/index.mdx rename to developer/dynamic/index.mdx diff --git a/mintlify-migration/developer/ethers/index.mdx b/developer/ethers/index.mdx similarity index 100% rename from mintlify-migration/developer/ethers/index.mdx rename to developer/ethers/index.mdx diff --git a/mintlify-migration/developer/explorers/analytics.mdx b/developer/explorers/analytics.mdx similarity index 100% rename from mintlify-migration/developer/explorers/analytics.mdx rename to developer/explorers/analytics.mdx diff --git a/mintlify-migration/developer/explorers/block-explorers.mdx b/developer/explorers/block-explorers.mdx similarity index 100% rename from mintlify-migration/developer/explorers/block-explorers.mdx rename to developer/explorers/block-explorers.mdx diff --git a/mintlify-migration/developer/explorers/blockscout.mdx b/developer/explorers/blockscout.mdx similarity index 100% rename from mintlify-migration/developer/explorers/blockscout.mdx rename to developer/explorers/blockscout.mdx diff --git a/mintlify-migration/developer/explorers/celoscan.mdx b/developer/explorers/celoscan.mdx similarity index 100% rename from mintlify-migration/developer/explorers/celoscan.mdx rename to developer/explorers/celoscan.mdx diff --git a/mintlify-migration/developer/explorers/overview.mdx b/developer/explorers/overview.mdx similarity index 100% rename from mintlify-migration/developer/explorers/overview.mdx rename to developer/explorers/overview.mdx diff --git a/mintlify-migration/developer/faucet.mdx b/developer/faucet.mdx similarity index 100% rename from mintlify-migration/developer/faucet.mdx rename to developer/faucet.mdx diff --git a/mintlify-migration/developer/fee-abstraction.mdx b/developer/fee-abstraction.mdx similarity index 100% rename from mintlify-migration/developer/fee-abstraction.mdx rename to developer/fee-abstraction.mdx diff --git a/mintlify-migration/developer/index.mdx b/developer/index.mdx similarity index 100% rename from mintlify-migration/developer/index.mdx rename to developer/index.mdx diff --git a/mintlify-migration/developer/indexers/envio.mdx b/developer/indexers/envio.mdx similarity index 100% rename from mintlify-migration/developer/indexers/envio.mdx rename to developer/indexers/envio.mdx diff --git a/mintlify-migration/developer/indexers/overview.mdx b/developer/indexers/overview.mdx similarity index 100% rename from mintlify-migration/developer/indexers/overview.mdx rename to developer/indexers/overview.mdx diff --git a/mintlify-migration/developer/indexers/subquery.mdx b/developer/indexers/subquery.mdx similarity index 100% rename from mintlify-migration/developer/indexers/subquery.mdx rename to developer/indexers/subquery.mdx diff --git a/mintlify-migration/developer/indexers/the-graph.mdx b/developer/indexers/the-graph.mdx similarity index 100% rename from mintlify-migration/developer/indexers/the-graph.mdx rename to developer/indexers/the-graph.mdx diff --git a/mintlify-migration/developer/migrate/from-ethereum.mdx b/developer/migrate/from-ethereum.mdx similarity index 100% rename from mintlify-migration/developer/migrate/from-ethereum.mdx rename to developer/migrate/from-ethereum.mdx diff --git a/mintlify-migration/developer/oracles/band-protocol.mdx b/developer/oracles/band-protocol.mdx similarity index 100% rename from mintlify-migration/developer/oracles/band-protocol.mdx rename to developer/oracles/band-protocol.mdx diff --git a/mintlify-migration/developer/oracles/chainlink-oracles.mdx b/developer/oracles/chainlink-oracles.mdx similarity index 100% rename from mintlify-migration/developer/oracles/chainlink-oracles.mdx rename to developer/oracles/chainlink-oracles.mdx diff --git a/mintlify-migration/developer/oracles/index.mdx b/developer/oracles/index.mdx similarity index 100% rename from mintlify-migration/developer/oracles/index.mdx rename to developer/oracles/index.mdx diff --git a/mintlify-migration/developer/oracles/quex-oracles.mdx b/developer/oracles/quex-oracles.mdx similarity index 100% rename from mintlify-migration/developer/oracles/quex-oracles.mdx rename to developer/oracles/quex-oracles.mdx diff --git a/mintlify-migration/developer/oracles/redstone.mdx b/developer/oracles/redstone.mdx similarity index 100% rename from mintlify-migration/developer/oracles/redstone.mdx rename to developer/oracles/redstone.mdx diff --git a/mintlify-migration/developer/oracles/run.mdx b/developer/oracles/run.mdx similarity index 100% rename from mintlify-migration/developer/oracles/run.mdx rename to developer/oracles/run.mdx diff --git a/mintlify-migration/developer/oracles/supra.mdx b/developer/oracles/supra.mdx similarity index 100% rename from mintlify-migration/developer/oracles/supra.mdx rename to developer/oracles/supra.mdx diff --git a/mintlify-migration/developer/oracles/wit-oracle.mdx b/developer/oracles/wit-oracle.mdx similarity index 100% rename from mintlify-migration/developer/oracles/wit-oracle.mdx rename to developer/oracles/wit-oracle.mdx diff --git a/mintlify-migration/developer/particle-network/index.mdx b/developer/particle-network/index.mdx similarity index 100% rename from mintlify-migration/developer/particle-network/index.mdx rename to developer/particle-network/index.mdx diff --git a/mintlify-migration/developer/portal/index.mdx b/developer/portal/index.mdx similarity index 100% rename from mintlify-migration/developer/portal/index.mdx rename to developer/portal/index.mdx diff --git a/mintlify-migration/developer/rainbowkit-celo/index.mdx b/developer/rainbowkit-celo/index.mdx similarity index 100% rename from mintlify-migration/developer/rainbowkit-celo/index.mdx rename to developer/rainbowkit-celo/index.mdx diff --git a/mintlify-migration/developer/reown/index.mdx b/developer/reown/index.mdx similarity index 100% rename from mintlify-migration/developer/reown/index.mdx rename to developer/reown/index.mdx diff --git a/mintlify-migration/developer/sdks/celo-sdks.mdx b/developer/sdks/celo-sdks.mdx similarity index 100% rename from mintlify-migration/developer/sdks/celo-sdks.mdx rename to developer/sdks/celo-sdks.mdx diff --git a/mintlify-migration/developer/sdks/composer-kit.mdx b/developer/sdks/composer-kit.mdx similarity index 100% rename from mintlify-migration/developer/sdks/composer-kit.mdx rename to developer/sdks/composer-kit.mdx diff --git a/mintlify-migration/developer/setup/development-chain.mdx b/developer/setup/development-chain.mdx similarity index 100% rename from mintlify-migration/developer/setup/development-chain.mdx rename to developer/setup/development-chain.mdx diff --git a/mintlify-migration/developer/setup/mac.mdx b/developer/setup/mac.mdx similarity index 100% rename from mintlify-migration/developer/setup/mac.mdx rename to developer/setup/mac.mdx diff --git a/mintlify-migration/developer/setup/overview.mdx b/developer/setup/overview.mdx similarity index 100% rename from mintlify-migration/developer/setup/overview.mdx rename to developer/setup/overview.mdx diff --git a/mintlify-migration/developer/setup/replit.mdx b/developer/setup/replit.mdx similarity index 100% rename from mintlify-migration/developer/setup/replit.mdx rename to developer/setup/replit.mdx diff --git a/mintlify-migration/developer/setup/wallet.mdx b/developer/setup/wallet.mdx similarity index 100% rename from mintlify-migration/developer/setup/wallet.mdx rename to developer/setup/wallet.mdx diff --git a/mintlify-migration/developer/setup/windows.mdx b/developer/setup/windows.mdx similarity index 100% rename from mintlify-migration/developer/setup/windows.mdx rename to developer/setup/windows.mdx diff --git a/mintlify-migration/developer/thirdweb-sdk/index.mdx b/developer/thirdweb-sdk/index.mdx similarity index 100% rename from mintlify-migration/developer/thirdweb-sdk/index.mdx rename to developer/thirdweb-sdk/index.mdx diff --git a/mintlify-migration/developer/verify/blockscout.mdx b/developer/verify/blockscout.mdx similarity index 100% rename from mintlify-migration/developer/verify/blockscout.mdx rename to developer/verify/blockscout.mdx diff --git a/mintlify-migration/developer/verify/celoscan.mdx b/developer/verify/celoscan.mdx similarity index 100% rename from mintlify-migration/developer/verify/celoscan.mdx rename to developer/verify/celoscan.mdx diff --git a/mintlify-migration/developer/verify/foundry.mdx b/developer/verify/foundry.mdx similarity index 100% rename from mintlify-migration/developer/verify/foundry.mdx rename to developer/verify/foundry.mdx diff --git a/mintlify-migration/developer/verify/hardhat.mdx b/developer/verify/hardhat.mdx similarity index 100% rename from mintlify-migration/developer/verify/hardhat.mdx rename to developer/verify/hardhat.mdx diff --git a/mintlify-migration/developer/verify/index.mdx b/developer/verify/index.mdx similarity index 100% rename from mintlify-migration/developer/verify/index.mdx rename to developer/verify/index.mdx diff --git a/mintlify-migration/developer/verify/remix.mdx b/developer/verify/remix.mdx similarity index 100% rename from mintlify-migration/developer/verify/remix.mdx rename to developer/verify/remix.mdx diff --git a/mintlify-migration/developer/viem/index.mdx b/developer/viem/index.mdx similarity index 100% rename from mintlify-migration/developer/viem/index.mdx rename to developer/viem/index.mdx diff --git a/mintlify-migration/developer/web3/index.mdx b/developer/web3/index.mdx similarity index 100% rename from mintlify-migration/developer/web3/index.mdx rename to developer/web3/index.mdx diff --git a/mintlify-migration/docs.json b/docs.json similarity index 100% rename from mintlify-migration/docs.json rename to docs.json diff --git a/docs/.node-version b/docs/.node-version deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/build/build-on-minipay/code-library.mdx b/docs/build/build-on-minipay/code-library.mdx deleted file mode 100644 index eac6562346..0000000000 --- a/docs/build/build-on-minipay/code-library.mdx +++ /dev/null @@ -1,599 +0,0 @@ ---- -title: MiniPay Code Library -description: Snippets of code that can be used to implement flows inside MiniPay ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - -### Snippets of code that can be used to implement flows inside MiniPay - -:::warning -Make sure you are using Typescript v5 or above and Viem v2 or above. -::: - -### Get the connected user's address without any Library - -```js -// The code must run in a browser environment and not in node environment -if (window && window.ethereum) { - // User has a injected wallet - - if (window.ethereum.isMiniPay) { - // User is using Minipay - - // Requesting account addresses - let accounts = await window.ethereum.request({ - method: "eth_requestAccounts", - params: [], - }); - - // Injected wallets inject all available addresses, - // to comply with API Minipay injects one address but in the form of array - console.log(accounts[0]); - } - - // User is not using MiniPay -} - -// User does not have a injected wallet -``` - -To use the code snippets below, install the following packages: - -{/* prettier-ignore-start */} - - - - - ```bash - yarn add @celo/abis @celo/identity viem@1 - ``` - - - - - ```bash - npm install @celo/abis @celo/identity viem@1 - ``` - - - - -### Check cUSD Balance of an address - - ```js - const { getContract, formatEther, createPublicClient, http } = require("viem"); - const { celo } = require("viem/chains"); - const { stableTokenABI } = require("@celo/abis"); - - const STABLE_TOKEN_ADDRESS = "0x765DE816845861e75A25fCA122bb6898B8B1282a"; - - async function checkCUSDBalance(publicClient, address) { - let StableTokenContract = getContract({ - abi: stableTokenABI, - address: STABLE_TOKEN_ADDRESS, - publicClient, - }); - - let balanceInBigNumber = await StableTokenContract.read.balanceOf([ - address, - ]); - - let balanceInWei = balanceInBigNumber.toString(); - - let balanceInEthers = formatEther(balanceInWei); - - return balanceInEthers; - } - - const publicClient = createPublicClient({ - chain: celo, - transport: http(), - }); // Mainnet - - let balance = await checkCUSDBalance(publicClient, address); // In Ether unit - ``` - - - -### Check If a transaction succeeded - -```js -const { createPublicClient, http } = require("viem"); -const { celo } = require("viem/chains"); - -async function checkIfTransactionSucceeded(publicClient, transactionHash) { - let receipt = await publicClient.getTransactionReceipt({ - hash: transactionHash, - }); - - return receipt.status === "success"; -} - -const publicClient = createPublicClient({ - chain: celo, - transport: http(), -}); // Mainnet - -let transactionStatus = await checkIfTransactionSucceeded( - publicClient, - transactionHash -); -``` - - -### Estimate Gas for a transaction (in Celo) - -```js -const { createPublicClient, http } = require("viem"); -const { celo } = require("viem/chains"); - -async function estimateGas(publicClient, transaction, feeCurrency = "") { - return await publicClient.estimateGas({ - ...transaction, - feeCurrency: feeCurrency ? feeCurrency : "", - }); -} - -const publicClient = createPublicClient({ - chain: celo, - transport: http(), -}); - -let gasLimit = await estimateGas(publicClient, { - account: "0x8eb02597d85abc268bc4769e06a0d4cc603ab05f", - to: "0x4f93fa058b03953c851efaa2e4fc5c34afdfab84", - value: "0x1", - data: "0x", -}); -``` - - - - - -### Estimate Gas for a transaction (in cUSD) - - -```js -const { createPublicClient, http } = require("viem"); -const { celo } = require("viem/chains"); - -async function estimateGas(publicClient, transaction, feeCurrency = "") { - return await publicClient.estimateGas({ - ...transaction, - feeCurrency: feeCurrency ? feeCurrency : "", - }); -} - -const publicClient = createPublicClient({ - chain: celo, - transport: http(), -}); - -const STABLE_TOKEN_ADDRESS = "0x765DE816845861e75A25fCA122bb6898B8B1282a"; - -let gasLimit = await estimateGas( - publicClient, - { - account: "0x8eb02597d85abc268bc4769e06a0d4cc603ab05f", - to: "0x4f93fa058b03953c851efaa2e4fc5c34afdfab84", - value: "0x1", - data: "0x", - }, - STABLE_TOKEN_ADDRESS -); -``` - - - -### Estimate Gas Price for a transaction (in Celo) - -```js -const { createPublicClient, http } = require("viem"); -const { celo } = require("viem/chains"); - -async function estimateGasPrice(publicClient, feeCurrency = "") { - return await publicClient.request({ - method: "eth_gasPrice", - params: feeCurrency ? [feeCurrency] : [], - }); -} - -const publicClient = createPublicClient({ - chain: celo, - transport: http(), -}); - -let gasPrice = await estimateGasPrice(publicClient); -``` - -### Estimate Gas Price for a transaction (in cUSD) - - -```js -const { createPublicClient, http } = require("viem"); -const { celo } = require("viem/chains"); - -async function estimateGasPrice(publicClient, feeCurrency = "") { - return await publicClient.request({ - method: "eth_gasPrice", - params: feeCurrency ? [feeCurrency] : [], - }); -} - -const publicClient = createPublicClient({ - chain: celo, - transport: http(), -}); - -const STABLE_TOKEN_ADDRESS = "0x765DE816845861e75A25fCA122bb6898B8B1282a"; - -let gasPrice = await estimateGasPrice(publicClient, STABLE_TOKEN_ADDRESS); -``` - - -### Calculate cUSD to be spent for transaction fees - - - - ```js -const { createPublicClient, http, formatEther } = require("viem"); -const { celo } = require("viem/chains"); - -const publicClient = createPublicClient({ - chain: celo, - transport: http(), -}); - -const STABLE_TOKEN_ADDRESS = "0x765DE816845861e75A25fCA122bb6898B8B1282a"; - -// `estimateGas` implemented above -let gasLimit = await estimateGas( - publicClient, - { - account: "0x8eb02597d85abc268bc4769e06a0d4cc603ab05f", - to: "0x4f93fa058b03953c851efaa2e4fc5c34afdfab84", - value: "0x1", - data: "0x", - }, - STABLE_TOKEN_ADDRESS -); - -// `estimateGasPrice` implemented above -let gasPrice = await estimateGasPrice(publicClient, STABLE_TOKEN_ADDRESS); - -let transactionFeesInCUSD = formatEther(gasLimit * hexToBigInt(gasPrice)); - ``` - - - -### Resolve Minipay phone numbers to Addresses - -This code snippet is meant for MiniPay developer, having access to the MiniPay Registry. An example for builders will be added soon. - - - - - - ```js - const { createPublicClient, http } = require("viem"); - const { celo } = require("viem/chains"); - const { privateKeyToAccount } = require("viem/accounts"); - const { SocialConnectIssuer } = require("./SocialConnect.js"); - - let account = privateKeyToAccount(process.env.ISSUER_PRIVATE_KEY); - - let walletClient = createWalletClient({ - account, - transport: http(), - chain, - }); - - const issuer = new SocialConnectIssuer(walletClient, { - authenticationMethod: AuthenticationMethod.ENCRYPTION_KEY, - rawKey: process.env.DEK_PRIVATE_KEY, - }); - - await issuer.initialize(); - - const identifierType = IdentifierPrefix.PHONE_NUMBER; - - /** - * Any phone number you want to lookup - * - * The below phone number is registered on the testnet issuer mentioned below. - */ - const identifier = "+911234567890"; - - /** - * You can lookup under multiple issuers in one request. - * - * Below is the MiniPay issuer address on Mainnet. - * - * Note: Remember to make your environment variable ENVIRONMENT=MAINNET - */ - let issuerAddresses = ["0x7888612486844Bb9BE598668081c59A9f7367FBc"]; - - // A testnet issuer we setup for you to lookup on testnet. - // let issuerAddresses = ["0xDF7d8B197EB130cF68809730b0D41999A830c4d7"]; - - let results = await issuer.lookup(identifier, identifierType, issuerAddresses); - ``` - - - - - - ```js - const { - federatedAttestationsABI, - odisPaymentsABI, - stableTokenABI, - } = require("@celo/abis"); - - const { getContract } = require("viem"); - const { OdisUtils } = require("@celo/identity"); - const { OdisContextName } = require("@celo/identity/lib/odis/query"); - - const ONE_CENT_CUSD = parseEther("0.01"); - - const SERVICE_CONTEXT = - process.env.ENVIRONMENT === "TESTNET" - ? OdisContextName.ALFAJORES - : OdisContextName.MAINNET; - - - class SocialConnectIssuer { - walletClient; - authSigner; - - federatedAttestationsContractAddress; - federatedAttestationsContract; - - odisPaymentsContractAddress; - odisPaymentsContract; - - stableTokenContractAddress; - stableTokenContract; - - serviceContext; - initialized = false; - - constructor(walletClient, authSigner) { - this.walletClient = walletClient; - this.authSigner = authSigner; - this.serviceContext = - OdisUtils.Query.getServiceContext(SERVICE_CONTEXT); - } - - async initialize() { - this.federatedAttestationsContractAddress = - await getCoreContractAddress("FederatedAttestations"); - - this.federatedAttestationsContract = getContract({ - address: this.federatedAttestationsContractAddress, - abi: federatedAttestationsABI, - - // Needed for lookup - publicClient, - - // Needed for registeration and de-registration - walletClient: this.walletClient, - }); - - this.odisPaymentsContractAddress = await getCoreContractAddress( - "OdisPayments" - ); - this.odisPaymentsContract = getContract({ - address: this.odisPaymentsContractAddress, - abi: odisPaymentsABI, - walletClient: this.walletClient, - }); - - this.stableTokenContractAddress = await getCoreContractAddress( - "StableToken" - ); - this.stableTokenContract = getContract({ - address: this.stableTokenContractAddress, - abi: stableTokenABI, - walletClient: this.walletClient, - }); - - this.initialized = true; - } - - async #getObfuscatedId(plaintextId, identifierType) { - // TODO look into client side blinding - const { obfuscatedIdentifier } = - await OdisUtils.Identifier.getObfuscatedIdentifier( - plaintextId, - identifierType, - this.walletClient.account.address, - this.authSigner, - this.serviceContext - ); - return obfuscatedIdentifier; - } - - async #checkAndTopUpODISQuota() { - const remainingQuota = await this.checkODISQuota(); - - if (remainingQuota < 1) { - // TODO make threshold a constant - let approvalTxHash = - await this.stableTokenContract.write.increaseAllowance([ - this.odisPaymentsContractAddress, - ONE_CENT_CUSD, // TODO we should increase by more - ]); - - let approvalTxReceipt = - await publicClient.waitForTransactionReceipt({ - hash: approvalTxHash, - }); - - let odisPaymentTxHash = - await this.odisPaymentsContract.write.payInCUSD([ - this.walletClient.account, - ONE_CENT_CUSD, // TODO we should increase by more - ]); - - let odisPaymentReceipt = - await publicClient.waitForTransactionReceipt({ - hash: odisPaymentTxHash, - }); - } - } - - async getObfuscatedIdWithQuotaRetry(plaintextId, identifierType) { - if (this.initialized) { - try { - return await this.#getObfuscatedId(plaintextId, identifierType); - } catch { - await this.#checkAndTopUpODISQuota(); - return this.#getObfuscatedId(plaintextId, identifierType); - } - } - throw new Error("SocialConnect instance not initialized"); - } - - async registerOnChainIdentifier(plaintextId, identifierType, address) { - if (this.initialized) { - const obfuscatedId = await this.getObfuscatedIdWithQuotaRetry( - plaintextId, - identifierType - ); - - const hash = - await this.federatedAttestationsContract.write.registerAttestationAsIssuer( - [ - // TODO check if there are better code patterns for sending txs - obfuscatedId, - address, - NOW_TIMESTAMP, - ] - ); - - const receipt = await publicClient.waitForTransactionReceipt({ - hash, - }); - - return receipt; - } - throw new Error("SocialConnect instance not initialized"); - } - - async deregisterOnChainIdentifier(plaintextId, identifierType, address) { - if (this.initialized) { - const obfuscatedId = await this.getObfuscatedIdWithQuotaRetry( - plaintextId, - identifierType - ); - const hash = - await this.federatedAttestationsContract.write.revokeAttestation( - [obfuscatedId, this.walletClient.account.address, address] - ); - - const receipt = await publicClient.waitForTransactionReceipt({ - hash, - }); - - return receipt; - } - throw new Error("SocialConnect instance not initialized"); - } - - async checkODISQuota() { - if (this.initialized) { - const { remainingQuota } = await OdisUtils.Quota.getPnpQuotaStatus( - this.walletClient.account.address, - this.authSigner, - this.serviceContext - ); - console.log("Remaining Quota", remainingQuota); - return remainingQuota; - } - throw new Error("SocialConnect instance not initialized"); - } - - async lookup(plaintextId, identifierType, issuerAddresses) { - if (this.initialized) { - const obfuscatedId = await this.getObfuscatedIdWithQuotaRetry( - plaintextId, - identifierType - ); - - const attestations = - await this.federatedAttestationsContract.read.lookupAttestations( - [obfuscatedId, issuerAddresses] - ); - - return { - accounts: attestations[1], // Viem returns data as is from contract not in JSON - obfuscatedId, - }; - } - throw new Error("SocialConnect instance not initialized"); - } - } - - ``` - - - - - -### Request an ERC20 token transfer - -```js -import { createWalletClient, custom } from 'viem' -// import { celo } from 'viem/chains' -import { celoAlfajores } from 'viem/chains' - -const client = createWalletClient({ - chain: celoAlfajores, - // chain: celo, - transport: custom(window.ethereum!) -}) - -const publicClient = createPublicClient({ - chain: celoAlfajores, - // chain: celo, - transport: http() -}) - -async function requestTransfer(tokenAddress, transferValue, tokenDecimals) { - - let hash = await client.sendTransaction({ - to: tokenAddress, - // to: '0x765DE816845861e75A25fCA122bb6898B8B1282a' // cUSD (Mainnet) - // to: '0xcebA9300f2b948710d2653dD7B07f33A8B32118C' // USDC (Mainnet) - // to: '0x48065fbbe25f71c9282ddf5e1cd6d6a887483d5e' // USDT (Mainnet) - data: encodeFunctionData({ - abi: stableTokenAbi, // Token ABI can be fetched from Explorer. - functionName: "transfer", - args: [ - receiverAddress, - // Different tokens can have different decimals, cUSD (18), USDC (6) - parseUnits(`${Number(transferValue)}`, tokenDecimals), - ], - }), - // If the wallet is connected to a different network then you get an error. - chain: celoAlfajores, - // chain: celo, - }); - - const transaction = await publicClient.waitForTransactionReceipt({ - hash, // Transaction hash that can be used to search transaction on the explorer. - }); - - if (transaction.status === "success") { - // Do something after transaction is successful. - } else { - // Do something after transaction has failed. - } -} -``` - -{/* prettier-ignore-end */} diff --git a/docs/build/build-on-minipay/deeplinks.mdx b/docs/build/build-on-minipay/deeplinks.mdx deleted file mode 100644 index 090ce20bb9..0000000000 --- a/docs/build/build-on-minipay/deeplinks.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: MiniPay Deeplinks -description: Special links that open up a relevant MiniPay screen based on intent ---- - -## Trigger add cash screen - -To trigger or redirect a MiniPay user to the add cash screen inside Minipay you can use the following link: - -[https://minipay.opera.com/add_cash](https://minipay.opera.com/add_cash) - -![add cash minipay deeplink](../../../static/img/developer/build-on-minipay/deeplinks/add-cash-deeplink.gif) diff --git a/docs/build/build-on-minipay/overview.mdx b/docs/build/build-on-minipay/overview.mdx deleted file mode 100644 index ca9ef04ed0..0000000000 --- a/docs/build/build-on-minipay/overview.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Build on MiniPay -description: A guide for building on MiniPay and Celo. ---- - -## Create a Mini App for the MiniPay Stablecoin Wallet - ---- - -[MiniPay](https://www.opera.com/products/minipay) is a stablecoin wallet with a built-in Mini App discovery page, integrated directly within the popular Opera Mini Android browser and also available as a standalone application on Android and iOS. - -Since launching, MiniPay is the fastest growing non-custodial wallet in the Global South—accounting for 25% of new USDT addresses in Q4 2024 and over 5M+ activations. - -:::info -Install the new [MiniPay standalone app](https://play.google.com/store/apps/details?id=com.opera.minipay) now! 🎉 📥 -::: - -## Why Build on MiniPay? - -- **Useful Applications:** MiniPay focuses on practical uses in everyday life, especially in emerging markets, where most of their users are located. -- **Integrated App Discovery:** MiniPay includes a built-in app discovery page, allowing users to interact with selected Mini Apps directly within their wallet, without needing to switch to other platforms. -- **Access to Opera’s Large User Base** Developers can tap into MiniPay’s growing user base and Opera browser distribution. - -## Key Features of MiniPay - -- **Phone Number mapping:** Uses mobile phone numbers as wallet addresses. -- **Fast, Low-Cost Transactions:** Offers fast P2P stablecoin transactions with sub-cent fees. -- **Lightweight Design:** At just 2MB, users can use the wallet with limited data. - -## Opportunities for MiniPay Builders - -- **Raising Funding?** Reach out to team@verda.ventures with a deck and/or product demo. -- **Still Building?** Register your project for [Build With Celo: Proof-of-Ship](https://github.com/celo-org/Proof-of-Ship) for monthly rewards. diff --git a/docs/build/build-on-minipay/prerequisites/ngrok-setup.mdx b/docs/build/build-on-minipay/prerequisites/ngrok-setup.mdx deleted file mode 100644 index 44e36728c8..0000000000 --- a/docs/build/build-on-minipay/prerequisites/ngrok-setup.mdx +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Ngrok Setup -description: Ngrok Setup to share localhost project with MiniPay app ---- - -When builidng dApps for MiniPay locally, you want to test the dApp inside MiniPay wallet on your phone. - -But since the dApp is running locally, you cannot simply visit localhost on your phone to open the dApp on your phone. - -To solve this, we use `ngrok`. - -`ngrok` allows us to share our localhost by providing us with a temporary web url that can be used on any device! - -## Installing Ngrok - -1. Visit [ngrok.com](https://ngrok.com) - -![ngrok.com](/img/developer/build-on-minipay/ngrok-setup/1.png) - -2. Sign up - -![sign up ngrok](/img/developer/build-on-minipay/ngrok-setup/2.png) - -3. The dashboard will have instructions based on your OS on how to install and use ngrok! - -![dashboard](/img/developer/build-on-minipay/ngrok-setup/3.png) - -4. Once installed you can use the following command to share your localhost port. - -```bash -> ngrok http [PORT] -``` - -The output looks something like this. - -![ngrok output](/img/developer/build-on-minipay/ngrok-setup/4.png) - -You can use the highlighted url to launch the localhost dApp on the [MiniPay's Site Tester](http://docs.celo.org/developer/build-on-minipay/overview#test-your-dapp-inside-minipay). diff --git a/docs/build/build-on-minipay/quickstart.md b/docs/build/build-on-minipay/quickstart.md deleted file mode 100644 index 144cad44eb..0000000000 --- a/docs/build/build-on-minipay/quickstart.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: Build on MiniPay Quickstart -description: A quickstart guide for building on MiniPay and Celo. ---- - -# Get Started Building on MiniPay - -A step-by-step guide to setting up, building, and testing your MiniPay Mini App. - ---- - -## 1. Installing MiniPay - -MiniPay is designed for mainstream adoption, making digital payments simple and easy to use. - -#### Key Features: -- **Currency Display**: Balances appear in your local currency. -- **Stablecoin Support**: Only stablecoins (cUSD, USDC, and USDT) are supported. -- **Simple Swaps**: The pocket swap feature allows for easy swaps between stablecoins by dragging one pocket into another. - -:::info -MiniPay is only available on Celo and Celo Alfajores Testnet. Other blockchain networks are not supported. -::: - -#### How to Access MiniPay: -- [**Opera Mini Browser**](https://www.opera.com/pl/products/minipay) (Android) -- [**Standalone App Android**](https://play.google.com/store/apps/details?id=com.opera.minipay) -- [**Standalone App iOS**](https://apps.apple.com/de/app/minipay-easy-global-wallet/id6504087257?l=en-GB) - -#### Set Up MiniPay: - -- **Install the MiniPay Standalone App:** Download for [Android](https://play.google.com/store/apps/details?id=com.opera.minipay) and [iOS](https://apps.apple.com/de/app/minipay-easy-global-wallet/id6504087257?l=en-GB) -- **Create an Account:** Sign up using your Google account and phone number. - -## 2. Build Your MiniPay Mini App - -#### For creating a new app: - -- Use the [Celo Composer MiniPay Template](https://github.com/celo-org/minipay-template) to start building. - -```bash -npx @celo/celo-composer@latest create -t minipay -``` -- Follow the [Quickstart Guide](/build/quickstart.md) for a step-by-step tutorial. - -#### For integrating an existing app: - -- Follow the [Helpful Tips Guide](#helpful-tips-to-make-your-mini-app-minipay-compatible) to ensure your app is MiniPay compatible. - -## 3. Get Testnet Tokens - -Request testnet tokens from the Celo [faucet](https://faucet.celo.org/celo-sepolia/) to test your Mini App. - -## 4. Test your Mini App inside MiniPay - -:::warning -You cannot test MiniPay using the Android Studio Emulator. Use an Android or iOS mobile device. -::: - -### Enable Developer Mode: -1. Open the MiniPay app on your phone and navigate to settings. - -Open MiniPay dApp store - -2. In the **About** section, tap the **Version** number repeatedly until the confirmation message appears. - -Open MiniPay dApp test page - -3. Return to **Settings**, then select **Developer Settings**. - -MiniPay dApp testing - -4. Enable **Developer Mode** and toggle **Use Testnet** to connect to Alfajores L2 testnet. - -MiniPay dApp testing - - -### Load Your Mini App: -1. In **Developer Settings,** tap **Load Test Page.** -2. Enter your **Mini App URL.** - - If testing a local deployment, use [ngrok](#testing-local-development-with-minipay) to expose your localhost. - -MiniPay dApp testing - -6. Click **Go** to launch and test your Mini App. - -MiniPay dApp testing - ---- - -## Helpful Tips to Make Your Mini App MiniPay Compatible - -:::warning -MiniPay uses Custom [Fee Abstraction](/developer/fee-abstraction) based transactions. We recommend using viem or wagmi as they provide native support for fee currency. -::: - -#### 1. Using Viem - -```js -import { createWalletClient, custom } from "viem"; -import { celo, celoAlfajores } from "viem/chains"; - -const client = createWalletClient({ - chain: celo, - // chain: celoAlfajores, // For Celo Testnet - transport: custom(window.ethereum), -}); - -const [address] = await client.getAddresses(); -``` - -#### 2. Using Wagmi - -```js -import { useConnect } from "wagmi"; -import { InjectedConnector } from "wagmi/connectors/injected"; - -const { connect } = useConnect({ - connector: new InjectedConnector(), -}); - -useEffect(() => { - connect(); -}, []); -``` - -This code sets up an `InjectedConnector` and then utilizes the `connect` method from the `useConnect` hook. The `useEffect` ensures that the connection is established when the page loads. - -In the Viem example, we're creating a wallet client that specifies the chain and a custom transport using `window.ethereum`. The `getAddresses` method then retrieves the connected addresses. - -### Important Notes - -Ensure the "Connect Wallet" button is hidden when your DApp is loaded inside the MiniPay app, as the wallet connection is implicit. - -_Code Example to hide Connect Wallet button if the user is using MiniPay wallet_ - -```jsx -export default function Header() { - // State variable that determines whether to hide the button or not. - const [hideConnectBtn, setHideConnectBtn] = useState(false); - const { connect } = useConnect(); - - useEffect(() => { - if (window.ethereum && window.ethereum.isMiniPay) { - // User is using MiniPay so hide connect wallet button. - setHideConnectBtn(true); - - connect({ connector: injected({ target: "metaMask" }) }); - } - }, []); - - return ( -
- {/* Conditional rendering of Connect Wallet button */} - {!hideConnectBtn && ( - - )} -
- ); -} -``` - -- Always verify the existence of `window.provider` before initializing your web3 library to ensure seamless compatibility with the MiniPay wallet. -- When using `ngrok`, remember that the tunneling URL is temporary. You'll get a new URL every time you restart ngrok. -- Be cautious about exposing sensitive information or functionality when using public tunneling services like ngrok. Always use them in a controlled environment. -- MiniPay currently supports setting the `feeCurrency` property when running `eth_sendTransaction`. However, currency support is limited to `cUSD`. More currencies might be supported in future. -- MiniPay only accepts legacy transactions at the moment. EIP-1559 properties won't be considered when handling requests. - - -## Testing Local Development with MiniPay - -If you're developing your MiniApp locally (e.g., on `localhost:3000`), use `ngrok` to tunnel traffic over HTTP, for real-time testing. - -#### Set Up ngrok -- **Install ngrok:** If you haven't already, install ngrok. You can find instructions on their [official website](https://ngrok.com/download). -- **Start Your Local Server:** Ensure your local development server is running. For instance, if you're using Next.js, you might run `npm run dev` to start your server at `localhost:3000`. -- **Tunnel Traffic with ngrok:** In your terminal, run the following command to start an ngrok tunnel: - -```bash -ngrok http 3000 -``` - -This will provide you with a public URL that tunnels to your localhost. - -For a more in depth guide, check out the official [ngrok setup](./prerequisites/ngrok-setup.mdx). - -- **Test in MiniPay:** Copy the provided ngrok URL and use it inside the MiniPay app to test your DApp. \ No newline at end of file diff --git a/docs/build/build-on-socialconnect.md b/docs/build/build-on-socialconnect.md deleted file mode 100644 index eebe0261fc..0000000000 --- a/docs/build/build-on-socialconnect.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Introduction to SocialConnect -description: A beginner's guide to understanding and using SocialConnect ---- - -By the conclusion of this guide, you will have a basic understanding of SocialConnect and how to get started with it. - -This document will cover: - -- What is SocialConnect? -- Key Features -- Getting Started -- Further Reading - -## 🚀 What is SocialConnect? - -SocialConnect is an open-source protocol that maps off-chain personal identifiers (such as phone numbers, Twitter handles, etc.) to on-chain account addresses. This enables a convenient and interoperable user experience for various use cases, including: - -- **Payments**: Send money directly to your friend's phone number. -- **Social Discovery**: Find someone's account based on their Twitter handle or other identity applications. - -For a short demo of a payment from a Kaala wallet user to a Libera wallet user using only a phone number, check out the [SocialConnect documentation](https://socialconnect-docs.vercel.app/). - -## 🔑 Key Features - -- **Interoperability**: Seamlessly map off-chain identifiers to on-chain addresses. -- **Convenience**: Simplify user interactions by using familiar identifiers like phone numbers and social media handles. -- **Privacy**: Ensure user privacy with features like phone number privacy and key hardening. - -## 🛠️ Getting Started - -To start using SocialConnect, follow these steps: - -1. **Buy Odis Quota and Check Balance**: Learn how to purchase Odis quota and check your balance. -2. **Lookup Identifier**: Find on-chain addresses using off-chain identifiers. -3. **Register Identifier**: Register new identifiers to map them to on-chain addresses. -4. **Revoke Identifier**: Remove mappings of identifiers when they are no longer needed. -5. **Setup Issuer**: Configure an issuer for managing identifiers. - -For detailed guides and examples, refer to the [SocialConnect documentation](https://socialconnect-docs.vercel.app/). - -## 📚 Further Reading - -To dive deeper into SocialConnect, explore the following sections in the documentation: - -- **Introduction to SocialConnect**: [Read more](https://socialconnect-docs.vercel.app/) -- **Guides**: Step-by-step instructions for various tasks. -- **Protocol**: Detailed information about the protocol's architecture and components. -- **Examples**: Practical examples, including a Next.js example. -- **Contracts**: Information about the smart contracts used in SocialConnect. diff --git a/docs/build/build-with-ai/build-with-goat/mint-nft-agent.md b/docs/build/build-with-ai/build-with-goat/mint-nft-agent.md deleted file mode 100644 index 23d9295ccf..0000000000 --- a/docs/build/build-with-ai/build-with-goat/mint-nft-agent.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -title: Build an AI-Powered NFT Minting Agent on Celo ---- - -# Tutorial: Build an AI-Powered NFT Minting Agent on Celo - -This tutorial guides you through building an AI-powered agent capable of minting NFTs on the Celo blockchain. We will adapt the structure from the previous [token swapping tutorial](./token-swap-agent.md) to create an agent that can mint NFTs based on natural language prompts. - -This approach provides direct control over the minting process and utilizes core blockchain interaction libraries. We will use `@ai-sdk/openai` for AI capabilities, `viem` for direct blockchain interaction, and `@goat-sdk` for agent framework components. - -### Understanding the Code: AI Agent for NFT Minting (Direct Contract Interaction) - -Let's examine the code structure, building upon the token swapping agent example and focusing on NFT minting. - -#### 1. Importing Libraries: - -```javascript -import readline from "node:readline"; - -import { openai } from "@ai-sdk/openai"; -import { generateText } from "ai"; - -import { http } from "viem"; -import { createWalletClient } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; -import { celo } from "viem/chains"; // Using Celo chain - -import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; - -import { viem } from "@goat-sdk/wallet-viem"; - -require("dotenv").config(); -``` - -- **Libraries**: We use the core libraries: readline, @ai-sdk/openai, ai, viem, and @goat-sdk. -- **Chain Import**: We directly import celo from viem/chains to configure for the Celo network. -- **Focused Approach**: We are focusing solely on NFT minting in this version with a generic mintNFT tool. - -#### 2. Wallet Client Creation: - -```javascript -// 1. Create a wallet client -const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`); - -const walletClient = createWalletClient({ - account: account, - transport: http(process.env.RPC_PROVIDER_URL), - chain: celo, // Using Celo chain -}); -``` - -- **Wallet Client**: This section sets up a viem wallet client connected to the Celo network. - -#### 3. Getting On-Chain Tools (NFT Minting Focus): - -```javascript -// 2. Get your onchain tools for your wallet -const tools = await getOnChainTools({ - wallet: viem(walletClient), - plugins: [ - // We define a custom mintNFT tool here - { - name: "mintNFT", - description: - "Use this tool to mint an NFT to a specified address. Input should be the recipient address and (optionally) NFT metadata.", - async execute({ recipientAddress, metadata }) { - // Implementation for minting NFT will be added here using viem - // This is a placeholder - actual minting logic needs to be implemented - console.log( - `Minting NFT to address: ${recipientAddress} with metadata:`, - metadata, - ); - return "NFT minting initiated (placeholder - not actually minted). Implement actual minting logic in the execute function."; - }, - }, - ], -}); -``` - -- **On-Chain Tools for NFT Minting**: We define a custom mintNFT tool directly within the plugins array. - - **name: "mintNFT"**: The name of the tool, which the AI agent will use to identify and call it. - - **description**: A crucial description that tells the AI agent when and how to use this tool. It specifies that the tool is for minting NFTs and expects recipientAddress and optional metadata as input. - - **execute(recipientAddress, metadata)**: This is the function that will be executed when the AI agent decides to use the mintNFT tool. - - **Placeholder Implementation**: Currently, the execute function is a placeholder. It logs a message indicating that NFT minting is initiated but does not contain actual minting logic. - - **Implementation using viem** (To be added - see "Implementing the mintNFT Tool" section below): The actual implementation of NFT minting within this execute function will involve using viem to interact with an NFT smart contract on Celo. This will include: - - Connecting to the NFT Contract: Using viem to get an instance of your deployed NFT contract using its address and ABI. - - Calling the Mint Function: Using viem to call the minting function of your NFT contract. This will likely involve sending a transaction from your walletClient and paying gas fees in CELO. - - Handling NFT Metadata: If your NFT contract supports metadata, you'll need to incorporate the metadata input into the minting transaction. - -#### 4. Command Line Interface and AI Interaction Loop: - -```javascript -// 3. Create a readline interface to interact with the agent -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, -}); - -while (true) { - const prompt = - (await new Promise()) < - string > - ((resolve) => { - rl.question('Enter your prompt (or "exit" to quit): ', resolve); - }); - - if (prompt === "exit") { - rl.close(); - break; - } - - console.log("\n-------------------\n"); - console.log("TOOLS CALLED"); - console.log("\n-------------------\n"); - try { - const result = await generateText({ - model: openai("gpt-4o-mini"), - tools: tools, - maxSteps: 10, // Maximum number of tool invocations per request - prompt: prompt, - onStepFinish: (event) => { - console.log(event.toolResults); - }, - }); - - console.log("\n-------------------\n"); - console.log("RESPONSE"); - console.log("\n-------------------\n"); - console.log(result.text); - } catch (error) { - console.error(error); - } - console.log("\n-------------------\n"); -} -``` - -- **Interactive Loop**: This provides the command-line interface and AI interaction using generateText. - -### Setup Guide for Celo NFT Minting Agent - -Follow these steps to set up the AI-powered NFT minting agent on Celo: - -#### 1. Clone Repository and Navigate to Example Directory: - -Follow steps 1-5 from the [previous tutorial](./token-swap-agent.md) to clone the GOAT repository, navigate to the typescript directory, install dependencies, build the project, and go to the example directory: examples/by-use-case/evm-mint-nft. - -#### 2. Configure Environment Variables: - -```bash -cp .env.template .env -``` - -Copy .env.template to .env and populate the following environment variables: - -- **OPENAI_API_KEY**: Your OpenAI API key from OpenAI. -- **WALLET_PRIVATE_KEY**: Your private key for the wallet that will mint NFTs on Celo. Security Best Practices: Use a test wallet and handle private keys with extreme caution. -- **RPC_PROVIDER_URL**: The RPC URL for the Celo network (e.g., Celo Sepolia Testnet: https://forno.celo-sepolia.celo-testnet.org/). See previous articles for more Celo RPC options. - -Example .env file (for Celo Sepolia Testnet): - -``` -OPENAI_API_KEY=YOUR_OPENAI_API_KEY -WALLET_PRIVATE_KEY=YOUR_PRIVATE_KEY -RPC_PROVIDER_URL=https://forno.celo-sepolia.celo-testnet.org/ -``` - -#### 3. Adapt Code for Celo and NFT Minting: - -- **Chain Configuration**: In index.ts, ensure you have celo chain imported and configured in createWalletClient as shown in the code examples above. - -- **Implement the mintNFT Tool's execute Function**: This is the crucial step to enable actual NFT minting. You need to replace the placeholder implementation in the mintNFT tool's execute function with the actual logic to interact with your NFT smart contract on Celo using viem. - -**Implementing the mintNFT Tool's execute Function (Conceptual Steps):** - -```javascript -// ... inside the plugins array in getOnChainTools: -{ - name: "mintNFT", - description: "...", - async execute({ recipientAddress, metadata }) { - try { - // 1. NFT Contract Address and ABI: - const nftContractAddress = "YOUR_NFT_CONTRACT_ADDRESS"; // Replace with your NFT contract address on Celo - const nftContractAbi = [...]; // Replace with your NFT contract ABI (interface) - - // 2. Get Contract Instance using viem: - const nftContract = getContract({ - address: nftContractAddress, - abi: nftContractAbi, - publicClient: walletClient, // or use publicClient if you only need to read - }); - - // 3. Call the mint function (Adapt to your contract's mint function name and parameters): - const mintTxHash = await walletClient.writeContract({ - address: nftContractAddress, - abi: nftContractAbi, - functionName: 'mint', // Replace with your contract's mint function name - account: walletClient.account, - args: [recipientAddress, metadata], // Adapt arguments based on your contract's mint function parameters - gas: 2000000, // Adjust gas limit as needed - }); - - console.log("Mint Transaction Hash:", mintTxHash); - return `NFT mint transaction initiated. Transaction hash: ${mintTxHash}. (Remember to check transaction status on a Celo block explorer.)`; - - - } catch (error) { - console.error("Error minting NFT:", error); - return `NFT minting failed. Error: ${error.message}`; - } - }, -} -``` - -**Explanation of mintNFT Tool Implementation:** - -- **NFT Contract Address and ABI**: - - - **nftContractAddress**: You MUST replace "YOUR_NFT_CONTRACT_ADDRESS" with the actual address of your deployed NFT smart contract on the Celo network (Celo Sepolia testnet or Mainnet). - - **nftContractAbi**: You MUST replace [...] with the ABI (Application Binary Interface) of your NFT smart contract. The ABI defines how to interact with your contract's functions. You can usually get the ABI from your smart contract compilation output (e.g., from Hardhat or Truffle). - -- **getContract**: We use viem's getContract function to create a contract instance, allowing us to interact with your deployed NFT contract. We provide the address, abi, and publicClient (or walletClient if you need to send transactions). - -- **walletClient.writeContract**: This is the core viem function to send a transaction to your smart contract to call the minting function. - - - **address**: NFT contract address. - - **abi**: NFT contract ABI. - - **functionName**: 'mint': Replace 'mint' with the actual name of your minting function in your NFT contract. - - **account**: walletClient.account: Specifies the account (your wallet) that will send the transaction. - - **args**: [recipientAddress, metadata]: Adapt args to match the parameters of your NFT contract's mint function. The example assumes your mint function takes a recipientAddress and metadata. You might need to adjust this based on your contract. Metadata handling will also depend on how your NFT contract stores or handles metadata (e.g., you might pass a URI, or metadata might be handled differently). - - **gas**: 2000000: Sets a gas limit for the transaction. Adjust this value as needed based on your contract's gas requirements. You can estimate gas using viem functions or start with a generous limit and adjust down if needed. - -- **Transaction Hash and Error Handling**: The code logs the transaction hash and returns a message. It also includes basic error handling. - -**Important Considerations for mintNFT Implementation:** - -- **NFT Contract Deployment**: You need to have a deployed NFT smart contract on Celo (Celo Sepolia testnet or Mainnet) to use this agent. You'll need the contract address and ABI. -- **NFT Contract mint Function**: Understand the exact function name, parameters, and any access control or requirements of your NFT contract's minting function. -- **Metadata Handling**: Determine how your NFT contract handles metadata. You might need to adjust the metadata parameter and how you pass it to the mint function. -- **Gas Fees**: Minting transactions require CELO to pay for gas fees. Ensure your wallet has sufficient CELO. -- **Error Handling**: Implement more robust error handling in the execute function to catch potential issues during contract interaction. -- **Security**: Be extremely cautious when dealing with smart contracts and blockchain transactions, especially in production. Thoroughly test your contract and agent in a test environment before deploying to mainnet. - -#### 4. Usage Instructions: - -**Run the Interactive CLI:** - -From the examples/by-use-case/evm-mint-nft directory, run: - -```bash -pnpm ts-node index.ts -``` - -**Chat with the Agent for NFT Minting:** - -Interact with the agent using natural language prompts to mint NFTs. Here are example prompts: - -- "Mint an NFT for address 0x1234...5678" - Instruct the agent to mint an NFT to the specified recipient address. (Replace 0x1234...5678 with an actual Celo address). -- "Mint an NFT with metadata `{'name': 'My NFT', 'description': 'A test NFT'}`" - Instruct the agent to mint an NFT with specific metadata. (The exact format of metadata and how it's handled will depend on your mintNFT tool implementation and NFT contract). - -**Example Interaction:** - -``` -Enter your prompt (or "exit" to quit): Mint an NFT for address 0xRecipientAddressHere -------------------- -TOOLS CALLED -------------------- -// Output of tool calls will be logged here (from onStepFinish callback) -------------------- -RESPONSE -------------------- -// AI agent's response based on the prompt and tool execution -------------------- -Enter your prompt (or "exit" to quit): exit -``` - -### Conclusion - -This tutorial has provided a guide to building an AI-powered NFT minting agent on Celo. By directly interacting with an NFT smart contract using viem, you gain more control over the minting process. - -Remember that the provided mintNFT tool's execute function is a placeholder. You MUST implement the actual NFT minting logic using viem and your deployed NFT smart contract on Celo as described in the "Implementing the mintNFT Tool" section. - -Thoroughly test your agent and smart contract in a test environment before deploying to the Celo mainnet. Explore the viem documentation and experiment with different prompts and metadata handling to create a powerful and user-friendly AI-driven NFT minting experience on Celo! diff --git a/docs/build/build-with-ai/build-with-goat/send-token-agent.md b/docs/build/build-with-ai/build-with-goat/send-token-agent.md deleted file mode 100644 index b4275b6d04..0000000000 --- a/docs/build/build-with-ai/build-with-goat/send-token-agent.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: Build an AI Agent to Send Tokens on Celo ---- - -# Tutorial: Build an AI Agent to Send Tokens on Celo - -This tutorial will guide you through creating an AI-powered agent capable of sending tokens on the Celo blockchain. We will adapt the provided code, which demonstrates sending tokens on the Sepolia test network, to function seamlessly on Celo. This will allow you to build an interactive agent that can send both native CELO and ERC20 tokens based on natural language prompts. - -We will utilize `@ai-sdk/openai` for AI capabilities, `viem` for blockchain interaction, and `@goat-sdk` to simplify the development of our on-chain agent. We will be using `@goat-sdk/wallet-evm` for sending native tokens and `@goat-sdk/plugin-erc20` for handling ERC20 tokens. - -### Understanding the Code: AI Agent for Sending Tokens - -Let's dissect the provided code, which forms the foundation for our token sending agent. - -**1. Importing Libraries:** - -```javascript -import readline from "node:readline"; - -import { openai } from "@ai-sdk/openai"; -import { generateText } from "ai"; - -import { http } from "viem"; -import { createWalletClient } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; -import { baseSepolia } from "viem/chains"; // We will change 'baseSepolia' to 'celo' - -import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; -import { PEPE, USDC, erc20 } from "@goat-sdk/plugin-erc20"; - -import { sendETH } from "@goat-sdk/wallet-evm"; // We will adapt sendETH for CELO -import { viem } from "@goat-sdk/wallet-viem"; - -require("dotenv").config(); -``` - -- **Libraries:** The imports are similar to previous examples, including `readline`, `@ai-sdk/openai`, `ai`, `viem`, and `@goat-sdk`. -- **Chain Import:** `baseSepolia` is imported from `viem/chains`, which we will replace with `celoSepolia` to target the Celo network. -- **Token Imports:** `PEPE` and `USDC` are imported from `@goat-sdk/plugin-erc20`. We will need to ensure these or similar tokens are relevant and available on Celo, or configure for other ERC20 tokens on Celo. -- **`sendETH` Import:** `sendETH` from `@goat-sdk/wallet-evm` is imported to enable sending native tokens. We will adapt this to send CELO. - -**2. Wallet Client Creation:** - -```javascript -// 1. Create a wallet client -const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`); - -const walletClient = createWalletClient({ -    account: account, -    transport: http(process.env.RPC_PROVIDER_URL), -    chain: baseSepolia, // We will change 'baseSepolia' to 'celoSepolia' -}); -``` - -- **Wallet Client Setup:** This section sets up a `viem` wallet client, retrieving the private key from the `WALLET_PRIVATE_KEY` environment variable and connecting to the blockchain using the `RPC_PROVIDER_URL`. We will modify `chain` to `celoSepolia` for Celo. - -**3. Getting On-Chain Tools (Token Sending Focus):** - -```javascript -// 2. Get your onchain tools for your wallet -const tools = await getOnChainTools({ - wallet: viem(walletClient), - plugins: [ - sendETH(), // Enable ETH transfers - Adapt for CELO - erc20({ tokens: [USDC, PEPE] }), // Enable ERC20 token operations - Review for Celo tokens - ], -}); -``` - -- **On-Chain Tools for Token Sending:** This section configures the tools for sending tokens: - - `sendETH()`: Enables sending native ETH on Base Sepolia. We will adapt this to send native CELO on Celo Sepolia. - - `erc20({ tokens: [USDC, PEPE] })`: Enables ERC20 token operations for USDC and PEPE. We will need to review and potentially replace these tokens with relevant ERC20 tokens on Celo Sepolia. - -**4. Command Line Interface and AI Interaction Loop:** - -```javascript -// 3. Create a readline interface to interact with the agent -    const rl = readline.createInterface({ -        input: process.stdin, -        output: process.stdout, -    }); - -    while (true) { -        const prompt = await new Promise((resolve) => { -            rl.question('Enter your prompt (or "exit" to quit): ', resolve); -        }); - -        if (prompt === "exit") { -            rl.close(); -            break; -        } - -        console.log("\n-------------------\n"); -        console.log("TOOLS CALLED"); -        console.log("\n-------------------\n"); -        try { -            const result = await generateText({ -                model: openai("gpt-4o-mini"), -                tools: tools, -                maxSteps: 10, // Maximum number of tool invocations per request -                prompt: prompt, -                onStepFinish: (event) => { -                    console.log(event.toolResults); -                }, -            }); - -            console.log("\n-------------------\n"); -            console.log("RESPONSE"); -            console.log("\n-------------------\n"); -            console.log(result.text); -        } catch (error) { -            console.error(error); -        } -        console.log("\n-------------------\n"); -    } -})(); -``` - -- **Interactive Loop:** This section sets up the command-line interface and the AI interaction loop, identical to previous examples, using `generateText` to process prompts and interact with the configured tools. - -### Setup Guide for Celo Sepolia Token Sending Agent - -Follow these steps to set up the AI-powered token sending agent on Celo Sepolia: - -**1. Clone Repository and Navigate to Example Directory:** - -Follow steps 1-5 from the [NFT minting tutorial](./mint-nft-agent.md) (or previous tutorials) to clone the GOAT repository, navigate to the `typescript` directory, install dependencies, build the project, and go to the example directory: `examples/by-use-case/evm-mint-nft`. You can reuse this directory or create a new one if you prefer. - -**2. Configure Environment Variables:** - -```bash -cp .env.template .env -``` - -Copy `.env.template` to `.env` and populate the following environment variables in the `.env` file: - -- **`OPENAI_API_KEY`**: Your OpenAI API key from [OpenAI](https://platform.openai.com/). -- **`WALLET_PRIVATE_KEY`**: Your private key for the wallet that will send tokens on Celo. **Security Best Practices:** Use a test wallet and handle private keys with extreme caution. -- **`RPC_PROVIDER_URL`**: The RPC URL for the Celo Sepolia network. Use a Celo Sepolia RPC URL for testing (e.g., `https://forno.celo-sepolia.celo-testnet.org/`). Refer to previous articles for more Celo Sepolia RPC options. - -**Example `.env` file (for Celo Sepolia Testnet):** - -```text -OPENAI_API_KEY=YOUR_OPENAI_API_KEY -WALLET_PRIVATE_KEY=YOUR_PRIVATE_KEY -RPC_PROVIDER_URL=https://forno.celo-sepolia.celo-testnet.org/ -OPENAI_API_KEY=YOUR_OPENAI_API_KEY -WALLET_PRIVATE_KEY=YOUR_PRIVATE_KEY -RPC_PROVIDER_URL=[https://forno.celo-sepolia.celo-testnet.org/](https://forno.celo-sepolia.celo-testnet.org/) -``` - -**Note:** We only need `OPENAI_API_KEY`, `WALLET_PRIVATE_KEY`, and `RPC_PROVIDER_URL` for this token sending agent. - -**3. Adapt Code for Celo Token Sending:** - -1. **Chain Configuration:** In `index.ts`, replace `baseSepolia` with `celo` from `viem/chains`: - - ```javascript - import { celoSepolia } from "viem/chains"; // Import Celo chain - - // ... - - const walletClient = createWalletClient({ - account: account, - transport: http(process.env.RPC_PROVIDER_URL), - chain: celo, // Use Celo chain configuration - }); - ``` - -2. **Adapt `sendETH()` to `sendCELO()`:** The `@goat-sdk/wallet-evm` might have a function specifically for sending CELO. Check the `@goat-sdk` documentation for `sendCELO()`. If it exists, replace `sendETH()` with `sendCELO()` in the `plugins` array: - - ```javascript - plugins: [ - sendCELO(), // Enable CELO transfers (if available in @goat-sdk) - erc20({ tokens: [USDC, PEPE] }), // ERC20 token operations - Review tokens for Celo - // ... - ]; - ``` - - If `sendCELO()` is not directly available in `@goat-sdk/wallet-evm`, it's likely that `sendETH()` is designed to be chain-aware and will send the native token of the configured chain (`celo` in this case). In that case, you might not need to change `sendETH()`. **Test sending CELO after setup to confirm if `sendETH()` works for CELO or if you need to find an alternative.** If `sendETH()` does not work for CELO, you might need to create a custom tool using `viem`'s `sendTransaction` function to send CELO directly. - -3. **Review ERC20 Tokens for Celo:** `USDC` and `PEPE` might not be ideal for Celo. Research popular ERC20 tokens on Celo Sepolia Testnet or Celo Mainnet (e.g., `cUSD`, `cEUR`, `USDT`, `DAI` on Celo). Update the `erc20` plugin configuration with relevant tokens: - - ```javascript - erc20({ tokens: [cUSD, cEUR, USDT] }), // Example: Use cUSD, cEUR, USDT if relevant on Celo - ``` - - You might need to define or import configurations for `cUSD`, `cEUR`, `USDT` similar to `USDC` and `PEPE`, potentially using their token contract addresses on Celo. For a more generic approach, you can remove the `tokens` array to allow the agent to handle any ERC20 token specified by symbol or address in the prompt. - -**4. Usage Instructions:** - -1. **Run the Interactive CLI:** - - From the `examples/by-use-case/evm-mint-nft` directory (or your chosen directory), run: - - ```bash - pnpm ts-node index.ts - ``` - -2. **Chat with the Agent for Token Sending:** - - Interact with the agent using natural language prompts to send tokens. Here are example prompts: - - - **Send CELO:** - - `"Send 1 CELO to 0xRecipientAddressHere"` (Replace `0xRecipientAddressHere` with a Celo address) - - `"Transfer 0.5 CELO to my friend at 0xFriendAddress"` - - **Send ERC20 Tokens (e.g., cUSD, cEUR, USDT - adjust based on your configuration):** - - `"Send 10 cUSD to 0xRecipientAddress"` (Assuming `cUSD` is configured) - - `"Transfer 5 EURC to address 0xAnotherAddress"` (Assuming `cEUR` is configured) - - `"Send 2 USDT to 0xYetAnotherAddress"` (Assuming `USDT` is configured) - -**Example Interaction:** - -``` -Enter your prompt (or "exit" to quit): Send 0.1 CELO to 0xRecipientAddressHere -------------------- -TOOLS CALLED -------------------- -// Output of tool calls will be logged here (from onStepFinish callback) - will show details of the sendETH/sendCELO tool execution. -------------------- -RESPONSE -------------------- -// AI agent's response based on the prompt and tool execution - will confirm the token sending action or indicate success/failure. -------------------- -Enter your prompt (or "exit" to quit): exit -``` - -### Conclusion - -This tutorial has guided you through building an AI-powered agent capable of sending tokens on the Celo Sepolia blockchain. By adapting the provided code, configuring for Celo Sepolia, and utilizing the `@goat-sdk/wallet-evm` and `@goat-sdk/plugin-erc20` tools, you can create an interactive agent that can understand natural language prompts to send both native CELO and ERC20 tokens. Remember to test thoroughly on the Celo Sepolia Testnet before using on Mainnet and always handle private keys securely. Explore the `@goat-sdk` documentation to understand more advanced configurations and error handling for your token sending agent on Celo! - diff --git a/docs/build/build-with-ai/build-with-goat/token-swap-agent.md b/docs/build/build-with-ai/build-with-goat/token-swap-agent.md deleted file mode 100644 index 85afe89c0a..0000000000 --- a/docs/build/build-with-ai/build-with-goat/token-swap-agent.md +++ /dev/null @@ -1,238 +0,0 @@ ---- -title: Build an AI-Powered Token Swap Agent on Celo Using GOAT SDK ---- - - -# Build an AI-Powered Token Swap Agent on Celo Using GOAT SDK - -This article provides a detailed guide on how to build an AI-powered token swap agent on the Celo blockchain using GOAT SDK. You'll learn how to create an interactive agent capable of performing token swaps through natural language prompts. - -## Understanding GOAT SDK for Token Swapping - -GOAT SDK provides tools to simplify on-chain interactions for AI agents. This example demonstrates how to use GOAT to swap ERC-20 tokens on Celo. You can use this approach with any EVM-compatible blockchain by simply changing the chain configuration and RPC URL. - -Let's examine the code step-by-step: - -### 1. Importing Libraries - -```javascript -import readline from "node:readline"; -import { openai } from "@ai-sdk/openai"; -import { generateText } from "ai"; -import { http } from "viem"; -import { createWalletClient } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; -import { celo } from "viem/chains"; // Using Celo chain -import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; -import { cUSD, CELO, erc20 } from "@goat-sdk/plugin-erc20"; // Celo tokens -import { uniswap } from "@goat-sdk/plugin-uniswap"; -import { sendETH } from "@goat-sdk/wallet-evm"; -import { viem } from "@goat-sdk/wallet-viem"; -require("dotenv").config(); -``` - -#### Library Descriptions: - -- **readline**: This Node.js module is used to create an interactive command-line interface, allowing the user to input prompts and interact with the agent. -- **@ai-sdk/openai and ai**: These libraries facilitate the integration with OpenAI's models (like gpt-4o-mini) to generate text responses and process natural language prompts. -- **viem**: A popular Javascript library for interacting with Ethereum-compatible blockchains, including Celo. -- **http, createWalletClient, privateKeyToAccount**: These are viem modules used to create a wallet client for blockchain interactions. -- **celo**: This imports the chain configuration for the Celo blockchain. -- **@goat-sdk**: This SDK provides tools to simplify on-chain interactions for AI agents. -- **getOnChainTools**: A function to bundle various on-chain tools for the agent. -- **@goat-sdk/plugin-erc20, erc20, cUSD, CELO**: Modules for handling ERC20 tokens on Celo. -- **@goat-sdk/plugin-uniswap, uniswap**: Modules for interacting with decentralized exchanges. -- **@goat-sdk/wallet-evm, viem**: Wallet adapters to connect viem wallet client with @goat-sdk tools. -- **dotenv**: This library loads environment variables from a .env file. - -### 2. Wallet Client Creation - -```javascript -// 1. Create a wallet client -const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`); - -const walletClient = createWalletClient({ - account: account, - transport: http(process.env.RPC_PROVIDER_URL), - chain: celo, // Using Celo chain configuration -}); -``` - -This section creates a viem wallet client: - -- It retrieves the private key from the `WALLET_PRIVATE_KEY` environment variable. -- `privateKeyToAccount` converts the private key into a viem account object. -- `createWalletClient` initializes a wallet client connected to the Celo blockchain using the RPC URL from the `RPC_PROVIDER_URL` environment variable. - -### 3. Setting Up On-Chain Tools for Token Swapping - -```javascript -// 2. Get your onchain tools for your wallet -const tools = await getOnChainTools({ - wallet: viem(walletClient), - plugins: [ - sendETH(), // Enable CELO transfers (native token) - erc20({ tokens: [cUSD, CELO] }), // Enable Celo token operations - uniswap({ - baseUrl: process.env.UNISWAP_BASE_URL as string, - apiKey: process.env.UNISWAP_API_KEY as string, - }), - ], -}); -``` - -`getOnChainTools` is used to assemble the tools the AI agent can use for token swapping: - -- `wallet: viem(walletClient)`: Provides the viem wallet client to the toolset. -- `plugins`: An array of plugins that extend the agent's capabilities: - - `sendETH()`: Enables sending native CELO (although named ETH in the function, it handles the native token). - - `erc20({ tokens: [cUSD, CELO] })`: Enables ERC20 token operations for Celo-specific tokens. - - `uniswap(...)`: Enables interaction with Uniswap, configured with a baseUrl and apiKey from environment variables. - -### 4. Command Line Interface and AI Interaction Loop - -```javascript -// 3. Create a readline interface to interact with the agent -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, -}); - -while (true) { - const prompt = - (await new Promise()) < - string > - ((resolve) => { - rl.question('Enter your prompt (or "exit" to quit): ', resolve); - }); - - if (prompt === "exit") { - rl.close(); - break; - } - - console.log("\n-------------------\n"); - console.log("TOOLS CALLED"); - console.log("\n-------------------\n"); - try { - const result = await generateText({ - model: openai("gpt-4o-mini"), - tools: tools, - maxSteps: 10, // Maximum number of tool invocations per request - prompt: prompt, - onStepFinish: (event) => { - console.log(event.toolResults); - }, - }); - - console.log("\n-------------------\n"); - console.log("RESPONSE"); - console.log("\n-------------------\n"); - console.log(result.text); - } catch (error) { - console.error(error); - } - console.log("\n-------------------\n"); -} -``` - -This sets up the interactive loop where users can input natural language prompts to swap tokens: - -- The agent accepts commands like "Swap cUSD for CELO" or "Check my token balance" -- `generateText()` processes these commands through the AI model (gpt-4o-mini) -- The AI determines which tools to call to fulfill the request -- Results are returned in natural language - -## Setting Up Your Celo Token Swap Agent - -Follow these steps to set up your own token swap agent on Celo: - -### 1. Clone the Repository - -```bash -git clone https://github.com/goat-sdk/goat.git && cd goat -``` - -### 2. Install and Build Dependencies - -```bash -cd typescript -pnpm install -pnpm build -``` - -### 3. Navigate to the Example Directory - -```bash -cd examples/by-use-case/evm-swap-tokens -``` - -### 4. Configure Environment Variables - -Create a `.env` file with your credentials: - -```bash -cp .env.template .env -``` - -Edit the `.env` file to include: - -```plaintext -OPENAI_API_KEY=your_openai_api_key -WALLET_PRIVATE_KEY=your_wallet_private_key -RPC_PROVIDER_URL=https://forno.celo.org # Celo Mainnet -# or use https://forno.celo-sepolia.celo-testnet.org/ for Testnet -UNISWAP_BASE_URL=provided_value # Will be populated from template -UNISWAP_API_KEY=provided_value # Will be populated from template -``` - -For production use, you can get your own Uniswap API key from [Uniswap Hub](https://www.uniswap.org/developers). - -### 5. Run the Interactive CLI - -```bash -pnpm ts-node index.ts -``` - -## Using the Token Swap Agent on Celo - -Once your agent is running, you can interact with it using natural language. Here are some examples specifically for Celo tokens: - -``` -Swap cUSD for CELO -Swap CELO for cUSD -Check my token balance -What's the current exchange rate between cUSD and CELO? -``` - -The agent will interpret your commands, call the appropriate tools, and execute the token swaps on your behalf. - -## Production Considerations for Token Swap Agents - -When deploying token swap agents in production environments, consider using smart wallets to: - -### Enhance Security with Programmable Permissions - -- Limit fund amounts for transactions -- Restrict contract interactions to trusted protocols -- Define required signatures for high-value transactions - -### Maintain Regulatory Compliance with Non-Custodial Wallets - -- Ensure agent platforms never have access to users' wallets -- Avoid money transmitter license requirements -- Improve user trust and control - -### Celo-Specific Considerations - -When implementing token swap functionality on Celo, keep these additional considerations in mind: - -- **Gas Fees**: Celo uses CELO as gas for transactions, so ensure your wallet has sufficient CELO. -- **Liquidity Sources**: Consider using Celo-specific DEXes like Ubeswap or Uniswap. -- **Stable Tokens**: Celo offers several stable tokens (cUSD, cEUR, cREAL) that might be useful for your swap use cases. - -## Conclusion - -By following this guide, you've learned how to create an AI-powered token swap agent on Celo using GOAT SDK. This agent can understand natural language commands and execute token swaps on your behalf, providing a seamless bridge between AI and blockchain functionality. - -As Celo continues to grow as an ecosystem, these types of AI agents can significantly improve user experience by abstracting away the complexities of interacting with DeFi protocols and token swaps, making blockchain technology more accessible to everyone. diff --git a/docs/build/build-with-ai/examples/ai-memecoins.md b/docs/build/build-with-ai/examples/ai-memecoins.md deleted file mode 100644 index 5c1060b938..0000000000 --- a/docs/build/build-with-ai/examples/ai-memecoins.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Launching Tokens on Celo using Gaia AI Agent Framework ---- - -## Prerequisites - -- Node (v20 or higher) -- A wallet with some test tokens (more on this later) - -## Create a Wallet and get your Gaia API Keys - -1. Visit the [Gaia Homepage](https://www.gaianet.ai/) and click **`Launch App`**. -2. Click **`Connect`**, then install the [MetaMask](https://metamask.io/download/) extension. -3. Once installed, create your wallet and securely store your recovery keys. -4. Finally, navigate to [Gaia API Keys](https://www.gaianet.ai/setting/gaia-api-keys) to generate your API keys. - -## Create you Celo Private Key - -1. Install the [Celo CLI](npm install -g @celo/celocli) -2. Make sure you're working on Celo Sepolia testnet -``` -celocli config:set --rpc-url https://forno.celo-sepolia.celo-testnet.org -``` -3. Create an account and store it well formatted in an .env file -``` -celocli account:new | sed -E 's/: (.+)/="\1"/g' | grep '=' > .env` -source .env -``` -4. Copy the account address to your clipboard -``` -echo $accountAddress | pbcopy -``` -5. Head to the faucet to get some money and paste your account address there -``` -open https://faucet.celo.org/celo-sepolia -``` -6. Verify you got money successfully -``` -celocli account:balance $accountAddress -``` -7. Register your account -``` -celocli account:register --from $accountAddress -k $privateKey -``` - -If you open your **`.env`** file, you will find your **`Celo private key`** - -## Clone the Celo Meme Token Generator - -1. Clone this repository -``` -git clone https://github.com/harishkotra/celo-token-agent -cd celo-token-agent -``` -2. Install dependencies -``` -npm install -``` -3. Create a .env file: -``` -PRIVATE_KEY=your_celo_private_key -GAIA_API_KEY=your_gaia_api_keys -``` -4. Compile the contract -``` -npx hardhat compile -``` -5. Deploy your token -``` -node deploy.js -``` - -The script will - -1. Generate a token name -2. Check your balance -3. Deploy the contract -4. Provide you with the contract address and transaction details - -## Understanding the Code - -The project uses three main components - -1. Token Generation **`(tokenGenerator.js)`** - - Generates creative token names - - Uses AI with a fallback to random generation - - Configures initial token supply -2. Contract Deployment **`(tokenDeployer.sol)`** - - Uses viem to interact with Celo - - Handles gas estimation and transaction monitoring - - Provides deployment status updates -3. Smart Contract **`(tokenDeployer.js)`** - - Standard ERC20 implementation - - Built with OpenZeppelin for security - - Deployable to Celo Sepolia testnet - -## Example response - -``` -Generated fallback token: { name: 'Mega Gem', symbol: 'MG' } -Reading artifacts from: /Users/blag/Documents/GitHub/celo-token-agent/artifacts/contracts/MemeToken.sol/MemeToken.json -Deploying from account: 0x5A96d23F76440C099F22327D1324786f6abe459A -Account balance: -S-CELO: 1.08303052 S-CELO -Sending deployment transaction... -Transaction sent! Hash: 0x035457c46ef5118db065b0a2ccc6bae1ce62f1c8ef688bbaf2d2596a6dd0fbd8 -Deployment confirmed in block: 38170881 -Token deployed successfully! -{ - name: 'Mega Gem', - symbol: 'MG', - address: '0x5e473F7650ABD9B6A5b28b2B0B64ebBd1ef01D94', - transactionHash: '0x035457c46ef5118db065b0a2ccc6bae1ce62f1c8ef688bbaf2d2596a6dd0fbd8', - explorer: 'https://alfajores.celoscan.io/address/0x5e473F7650ABD9B6A5b28b2B0B64ebBd1ef01D94' -} -``` - -## Support - -Join the [Celo Discord server](https://chat.celo.org). Reach out in the #general-dev channel with your questions and feedback. \ No newline at end of file diff --git a/docs/build/build-with-ai/examples/build-with-nebula.md b/docs/build/build-with-ai/examples/build-with-nebula.md deleted file mode 100644 index ac557f178b..0000000000 --- a/docs/build/build-with-ai/examples/build-with-nebula.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: ERC20 Telegram Mini-app Token Deployer with Nebula -description: Learn how to use thirdweb's LLM Nebula to create a token deployer ---- - - -import YouTube from '@components/YouTube'; - -# What is Nebula? - -Nebula, part of the developer suite build by [thirdweb](https://portal.thirdweb.com/), is a natural language model with improved blockchain reasoning, autonomous transaction capabilities, and real-time access to the blockchain. [Learn more about Nebula](https://blog.thirdweb.com/introducing-nebula-a-powerful-blockchain-model-to-read-write-and-reason-onchain/). - -Watch this workshop to learn more about Nebula and how to create a Telegram bot for app developers to access daily and weekly stats of the dApp. - - - -## Get started building - -Follow this [guide](https://github.com/thirdweb-example/erc20-token-deployer) to test out Nebula and build your own token deployer. diff --git a/docs/build/build-with-ai/examples/building_with_goat.md b/docs/build/build-with-ai/examples/building_with_goat.md deleted file mode 100644 index c0f52692c5..0000000000 --- a/docs/build/build-with-ai/examples/building_with_goat.md +++ /dev/null @@ -1,296 +0,0 @@ ---- -title: Building a conversational AI agent for Celo transactions with GOAT ---- - -## Introduction - -This tutorial guides you through creating a Node.js application using TypeScript that leverages the GOAT AI agent framework to interact with the Celo blockchain. GOAT allows you to use natural language prompts to perform on-chain actions, such as transferring tokens and checking allowances. We'll cover setup, configuration, code explanation, and common usage scenarios. - -## Prerequisites - -Before you begin, ensure you have the following: - -- **Node.js (v16 or higher) and npm (or yarn) installed.** You can download Node.js from [https://nodejs.org/](https://nodejs.org/). -- **A Celo wallet with a private key.** You'll need a wallet with some CELO and cUSD for testing. _Never commit your private key to version control._ -- **An RPC provider URL for the Celo network.** We'll use [Forno](https://forno.celo.org/) in this example, which is a public provider. For production, consider using a dedicated RPC provider like [Ankr](https://www.ankr.com/), [QuickNode](https://www.quicknode.com/), or others. -- **An OpenAI API key.** GOAT utilizes OpenAI's language models. Obtain an API key from [https://platform.openai.com/](https://platform.openai.com/). -- **A code editor or IDE.** VS Code, Sublime Text, or any other code editor will work. - -## Project Setup - -1. **Create a new project directory:** - - ```bash - mkdir goat-celo-tutorial - cd goat-celo-tutorial - ``` - -2. **Initialize a Node.js project:** - - ```bash - npm init -y - ``` - -3. **Install dependencies:** - - ```bash - npm install typescript @ai-sdk/openai @goat-sdk/adapter-vercel-ai @goat-sdk/plugin-erc20 @goat-sdk/wallet-viem ai dotenv viem @types/node - ``` - - - `typescript`: For using TypeScript. - - `@ai-sdk/openai`: The OpenAI adapter for AI-SDK. - - `@goat-sdk/adapter-vercel-ai`: GOAT's adapter for using AI-SDK. - - `@goat-sdk/plugin-erc20`: GOAT plugin for interacting with ERC-20 tokens. - - `@goat-sdk/wallet-viem`: GOAT's wallet integration using Viem. - - `ai`: The core AI-SDK library. - - `dotenv`: For loading environment variables from a `.env` file. - - `viem`: A lightweight Ethereum library for interacting with the blockchain. - - `@types/node`: TypeScript definitions for Node.js. - -4. **Initialize TypeScript configuration:** - - ```bash - npx tsc --init - ``` - -5. **Configure `tsconfig.json`:** - - Open `tsconfig.json` and update it with the following settings (adjusting paths as needed): - - ```json - { - "compilerOptions": { - "target": "ES2020", // Or a later version if supported by your environment - "module": "commonjs", - "lib": ["ESNext"], - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "outDir": "./dist", // Output directory for compiled JavaScript - "rootDir": "./src", // Source directory for TypeScript files - "moduleResolution": "node", - "resolveJsonModule": true, - "sourceMap": true - }, - "include": ["src/**/*"], - "exclude": ["node_modules"] - } - ``` - - - `outDir`: Specifies where the compiled JavaScript files will be placed. - - `rootDir`: Specifies the root directory for your TypeScript source files. - - `sourceMap`: Enables source map generation, helpful for debugging. - - `resolveJsonModule`: allows importing JSON files - - `moduleResolution`: Specifies how modules are resolved. "node" is standard for Node.js projects. - -## Project Structure - -Organize your project files as follows: - -```text -goat-celo-tutorial/ -├── src/ -│ ├── index.ts <- Main application file -│ └── tokens.ts <- Definitions for Celo tokens -├── .env <- Environment variables (KEEP THIS PRIVATE) -├── package.json -├── package-lock.json -└── tsconfig.json -``` - -## Code Implementation - -### 1. `src/tokens.ts`: - -This file defines the Celo tokens we'll be interacting with (CELO, cUSD, and USDC). - -```typescript -// src/tokens.ts -import { Token } from "@goat-sdk/plugin-erc20"; - -export const tokens: Token[] = [ - { - decimals: 6, - symbol: "USDC", - name: "USD Coin", - chains: { - "42220": { - contractAddress: "0xcebA9300f2b948710d2653dD7B07f33A8B32118C", - }, - }, - }, - { - decimals: 18, - symbol: "CELO", - name: "Celo", - chains: { - "42220": { - contractAddress: "0x471EcE3750Da237f93B8E339c536989b8978a438", - }, - }, - }, - { - decimals: 18, - symbol: "cUSD", - name: "Celo Dollar", - chains: { - "42220": { - contractAddress: "0x765de816845861e75a25fca122bb6898b8b1282a", - }, - }, - }, -]; -``` - -### 2. `src/index.ts`: - -This is the main application file where we set up GOAT, the wallet, and the interactive prompt. - -```typescript -// src/index.ts -import { openai } from "@ai-sdk/openai"; -import { getOnChainTools } from "@goat-sdk/adapter-vercel-ai"; -import { erc20 } from "@goat-sdk/plugin-erc20"; -import { viem } from "@goat-sdk/wallet-viem"; -import { generateText } from "ai"; -import dotenv from "dotenv"; -import readline from "node:readline"; -import { createWalletClient, http } from "viem"; -import { privateKeyToAccount } from "viem/accounts"; -import { celo } from "viem/chains"; -import { tokens } from "./tokens"; - -dotenv.config(); - -// --- Wallet Setup --- -const account = privateKeyToAccount( - process.env.WALLET_PRIVATE_KEY as `0x${string}`, -); - -const walletClient = createWalletClient({ - account: account, - transport: http(process.env.RPC_PROVIDER_URL), - chain: celo, -}); - -(async () => { - // --- GOAT Setup --- - const tools = await getOnChainTools({ - wallet: viem(walletClient), - plugins: [erc20({ tokens })], - }); - - // --- Interactive Prompt --- - const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, - }); - - while (true) { - const prompt = await new Promise((resolve) => { - rl.question('Enter your prompt (or "exit" to quit): ', resolve); - }); - - if (prompt === "exit") { - rl.close(); - break; - } - - try { - const result = await generateText({ - model: openai("gpt-4o"), // Use "gpt-4o" for better performance, or another model - tools: tools, - maxSteps: 10, // Maximum number of tool invocations per request - prompt: prompt, - onStepFinish: (event) => { - console.log(event.toolResults); // Log the results of each tool invocation - }, - }); - console.log(result.text); - } catch (error) { - console.error("An error occurred:", error); // Improved error handling - } - console.log("\n-------------------\n"); - } -})(); -``` - -### 3. `.env` - -Create a `.env` file in the root of your project and add the following, replacing the placeholders with your actual values: - -```bash -WALLET_PRIVATE_KEY=your_wallet_private_key -RPC_PROVIDER_URL=https://forno.celo.org # Or your preferred provider -OPENAI_API_KEY=your_openai_api_key -``` - -Important Security Note: Never commit your `.env` file or your private key to version control (e.g., Git). Add `.env` to your `.gitignore` file. - -## Running the Application - -Compile the TypeScript code: - -```bash -pnpm dev -``` - -The application will start, and you'll see the prompt: `Enter your prompt (or "exit" to quit):`. You can now enter natural language commands. - -## Example Prompts and Explanations - -Here are some example prompts you can use and explanations of what's happening: - -- "Transfer 1 cUSD to 0x13F6b54c5491cd4745fF4cFfaA9EfEe59E628657" - - - GOAT uses the `get_address` tool (implicitly, you don't need to specify it). - - It then uses `get_token_info_by_symbol` to find the cUSD token details. - - `convert_to_base_unit` converts 1 cUSD to its base unit (1 \* 10^18). - - Finally, the `transfer` tool is called with the token address, recipient, and amount. - - The transaction hash is returned. - -- "What is my allowance on USDC?" - - - `get_address` is called to get the user's address. - - `get_token_info_by_symbol` finds the USDC token. - - `get_chain` is used to get the current chain - - `get_token_allowance` is called to check the allowance of your address to spend USDC. The spender, in this case, is also your address, so you get 0. This is by design. - - The allowance amount is returned. - -- "Approve 0x13F6b54c5491cd4745fF4cFfaA9EfEe59E628657 to spend 10 USDC on my behalf" - - - This prompt would use the `approve` tool from the ERC-20 plugin. You'd see similar steps to the transfer, but instead of transferring, it would set an allowance for the specified address to spend your USDC. - -- "What is my CELO balance?" - - - `get_address` will be used to get the current user address. - - `get_token_info_by_symbol` finds the CELO token. - - `get_balance` is used to get the current address balance. - - The balance amount is returned. - -## Troubleshooting - -- `TypeError: Cannot read properties of undefined (reading 'call')` or similar errors: Double-check your `tsconfig.json` settings, particularly `module`, `target`, and `lib`. Make sure your Node.js version is compatible. Reinstall your dependencies (`rm -rf node_modules && npm install`). - -- `Error: Invalid ABI`: Ensure your contract addresses in `tokens.ts` are correct for the Celo network (chain ID 42220). - -- OpenAI API errors (e.g., 401 Unauthorized): Verify your `OPENAI_API_KEY` is correct and that your OpenAI account has sufficient credits. - -- Transaction failures: - - - Check that your wallet has enough CELO to pay for gas. - - Verify your `RPC_PROVIDER_URL` is correct and functioning. - - If you're using a custom RPC provider, ensure it supports the necessary methods. - -- Type errors after installation: If you encounter persistent type errors, you can try adding `// @ts-ignore` comments above the lines causing issues as a temporary workaround. However, it's best to resolve the underlying type issues if possible. The provided code avoids this, but it's a useful debugging technique. - -## Conclusion - -This tutorial demonstrated how to build a Celo blockchain AI agent with GOAT, Node.js, and TypeScript. You've learned to set up a project, integrate a wallet, define tokens, and use natural language to execute on-chain actions. This provides a foundation for creating powerful, user-friendly Web3 applications that simplify complex blockchain interactions. Remember to prioritize security and continue exploring the possibilities! - -## Next Steps - -- Explore more examples and documentation for GOAT and the ERC-20 plugin and ERC-721 plugin. -- Build a more complex application using GOAT and other Celo tools. -- Contribute to the GOAT project and provide feedback. diff --git a/docs/build/build-with-ai/multi-agent-systems.md b/docs/build/build-with-ai/multi-agent-systems.md deleted file mode 100644 index a70f98cbf9..0000000000 --- a/docs/build/build-with-ai/multi-agent-systems.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Multi-Agent Systems -description: A production-grade multi-agent system built with LangGraph and LangChain, featuring a web search agent and a Celo blockchain agent powered by Google's Gemini. ---- -import YouTube from '@components/YouTube'; - - -# Multi-Agent Systems - -Learn how to build a [production-grade multi-agent system](https://github.com/celo-org/example-multi-agent-system) built with LangGraph and LangChain, featuring a web search agent and a Celo blockchain agent powered by Google's Gemini. - - - -## Features - -- 🤖 **Supervisor agent** that orchestrates specialized agents -- 🔍 **Web search agent** for retrieving real-time information -- ⛓️ **Blockchain agent** for fetching Celo blockchain data -- 📊 **Memory management** for conversation history -- 🤖 **Gemini AI** for intelligent agent capabilities -- 🧵 **Thread support** for maintaining conversation state - -## What are Multi-Agent Systems? - -Sure! Here's a simplified and accessible **concept module**-style intro to **multiagent systems**, tailored to fit the Celo Docs style: - ---- - -## What Are Multiagent Systems? - -Multiagent systems (MAS) are groups of independent software agents that work together to solve complex problems. Instead of relying on one big, centralized program, MAS use many smaller agents—each with their own goals and responsibilities. These agents can **collaborate**, **compete**, or **coordinate** to get things done more efficiently. - -In Web3, this is especially powerful. Agents can perform tasks like: - -* Optimizing DeFi yields -* Voting in governance protocols -* Bridging assets across blockchains -* Managing liquidity in real-time - -Because these agents are **autonomous** and can operate in **parallel**, the system becomes more scalable and resilient. If one agent fails, others can keep running. That means fewer single points of failure—an important trait in decentralized systems. - -Multiagent architectures help developers build apps that respond to changing network conditions, user demands, or even market dynamics without needing centralized control. This makes them a great match for Celo’s L2 ecosystem and the broader Web3 world. - - -## Architecture - -The system uses a hierarchical multi-agent architecture with a supervisor agent orchestrating specialized agents. - -![AI](/img/developer/multi-agents.png) - -## Setup - -1. Clone the [repository](https://github.com/celo-org/example-multi-agent-system) -2. Install dependencies: - -```bash -pip install -e ".[dev]" -``` - -3. Set up environment variables: - -```bash -export GOOGLE_API_KEY=your_google_api_key -export TAVILY_API_KEY=your_tavily_api_key -``` - -You can also create a `.env` file in the project root (the application uses python-dotenv to load variables automatically). - -## Usage - -Run the main application: - -```bash -python main.py -``` - -The application maintains conversation state using thread IDs, allowing for coherent multi-turn interactions. - -## Project Structure - -``` -multi-agent-system/ -├── src/ -│ ├── agents/ -│ │ ├── __init__.py -│ │ ├── blockchain_agent.py # Agent for Celo blockchain interactions -│ │ ├── search_agent.py # Agent for web search capabilities -│ │ └── supervisor.py # Orchestrates specialized agents -│ ├── tools/ -│ │ ├── __init__.py -│ │ ├── blockchain_tools.py # Tools for interacting with Celo blockchain -│ │ └── search_tools.py # Tools for web search using Tavily -│ └── utils/ -│ ├── __init__.py -│ └── config.py # Configuration and environment variables -├── main.py # Application entry point -├── pyproject.toml # Dependencies and project metadata -└── README.md -``` - -## How It Works - -1. The **Supervisor Agent** analyzes user queries and determines which specialized agent to use -2. For blockchain-related queries, the **Blockchain Agent** fetches real-time data from the Celo blockchain -3. For information retrieval, the **Search Agent** uses Tavily to search the web for relevant information -4. All conversation state is maintained using **thread IDs** for coherent multi-turn interactions -5. The system uses Google's **Gemini** models for intelligent natural language understanding and generation - -## License - -MIT \ No newline at end of file diff --git a/docs/build/build-with-ai/overview.mdx b/docs/build/build-with-ai/overview.mdx deleted file mode 100644 index 7ba58e27a7..0000000000 --- a/docs/build/build-with-ai/overview.mdx +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: Getting Started with AI Agents ---- - -# Getting Started with AI Agents - -## Table of Contents -- [Introduction](#introduction) -- [Why AI Agents?](#why-ai-agent) -- [What is an AI Agent?](#what-is-an-ai-agent) -- [Types of AI Agents](#types-of-ai-agents) - -## Introduction {#introduction} - -Welcome to the world of AI Agents. This guide provides an overview of AI agents, the tools and infrastructure needed to build them, and examples to help get you started. Whether you’re starting with simple automation or building complex systems, this guide will help you navigate the ecosystem. - -## Why AI Agents? {#why-ai-agent} - -AI Agents are making blockchain interactions more accessible and user friendly. - -| Feature | Without AI Agents ❌ | With AI Agents ✅ | -|---------|----------------------|-------------------| -| **Easier Onchain Transactions** | Users manually open wallets, find bridges, navigate menus, and execute swaps. | Users prompt AI Agents to swap tokens automatically. | -| **24/7 Participation in Global Markets** | Users manually track DeFi yields and farming opportunities. | AI Agents operate nonstop, detect high-yield options, and reallocate funds. | -| **Fewer Scams and Errors** | Users are vulnerable to phishing attacks and human errors. | AI Agents detect scams, block malicious contracts, and prevent errors. | - -## What is an AI Agent? {#what-is-an-ai-agent} - -AI Agents are software systems that perceive environments, make decisions, and take actions to achieve specific goals. Shaw (creator of Eliza/ai16z) describes them as "a new kind of website" offering interfaces that interact with APIs for solving complex tasks more effectively than traditional interfaces. - -**Key Characteristics:** -- Goal-oriented behavior -- Environment perception and interaction -- Decision-making capabilities -- Ability to learn and adapt (in advanced implementations) - -AI agents are particularly relevant to blockchain builders, as they simplify complex tasks like managing smart contracts, automating transactions, and interacting with decentralized protocols. They bridge the gap between blockchain infrastructure and intuitive user experiences. - -## Types of AI Agents {#types-of-ai-agents} - -**1. Basic AI Agents** -- Simple tasks like chatbots with decision trees. -- Examples: Command processors, basic I/O automation. - -**2. Functional Agents** -- Specialized agents with defined purposes. -- Examples: Code review agents, research assistants, or domain-specific solvers. - -**3. Autonomous Agents** -- Operate with minimal human intervention. -- Capabilities: Multi-step reasoning, task automation, self-improvement. - -**4. Multi-Agent Systems** -- Collaborative systems where agents work together. -- Examples: Collective problem-solving, distributed decision-making, or agent-to-agent communication. diff --git a/docs/build/build-with-ai/resources.md b/docs/build/build-with-ai/resources.md deleted file mode 100644 index 58e4730a44..0000000000 --- a/docs/build/build-with-ai/resources.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Resources for Building AI Agents on Celo -description: Resources for learning how to craft intelligent, blockchain-powered agents on Celo. ---- - - -# Resources for Building AI Agents on Celo - -Resources for learning how to craft intelligent, blockchain-powered agents on Celo. - ---- - -# Learning Resources - -### 📝 Tutorials - -- [Machine Learning](https://www.coursera.org/specializations/machine-learning-introduction?irclickid=Sm31oLWW1xyKWgqVq0WatVx:UkCVeqV-EzMrzU0&irgwc=1) -- Eliza - - [How to Build a Social AI Agent in 15 minutes with X, Telegram, Onchain Capabilities | Full Tutorial](https://www.youtube.com/watch?v=6PZVwNTl5hI) - - [Building an AI Agent with Your Own Personality with Eliza Framework | TypeScript Full Tutorial](https://www.youtube.com/watch?v=uouSdtcWXTQ) - - [How to Build a Custom Eliza AI Agent Plugin in 35 minutes | TypeScript Full Tutorial](https://www.youtube.com/watch?v=25FxjscBHuo) - - [Eliza - AI Agent Dev School](https://www.youtube.com/playlist?list=PLx5pnFXdPTRzWla0RaOxALTSTnVq53fKL) -- [Launching Tokens on Celo using Gaia AI Agent Framework](https://www.youtube.com/watch?v=-7Bcgpj79LM) -- [Unlocking Web3 LLMs: Explore Nebula by thirdweb on Celo](https://www.youtube.com/watch?v=FeubfHwfJcM) - -### 🎓 Courses - -- [Web3 AI Agents Guide](https://www.aiagenttoolkit.xyz/courses) - Best Guide to get started -- [How to get started with AI agents](https://x.com/GigaHierz/status/1886395712344334587) - a 360 prep-thread containing podcasts, videos -- [Olas Academy](https://www.youtube.com/playlist?list=PLXztsZv11CTfXiQK9OJhMwBkfgf4ETZkl) - -### 🤖 Famous Agents - -- Luna - Virtuals - - first agent to pay another agent for doing work -- [aixbt](https://x.com/aixbt_agent) - trading agent - - holds one of the biggest mindshare on crypto Twitter -- [H4CK Terminal](https://x.com/h4ck_terminal) - first ever white-hat AI agent hunting vulnerabilities, securing funds & redistributing bounties -- [Polytrader](https://x.com/polytraderAI) -- [artto](https://x.com/artto_ai): Agent that collects NFTs -- [Soleng](https://x.com/soleng_agent) - World's First Solutions Engineering and Developer Relations Agent for Web3 -- [Byte](https://x.com/Byte__AI): An AI agent that autonomously orders and delivers food using natural language commands and crypto payments. -- [opencordai](https://x.com/opencordai): A 24/7 AI agent for social media lead generation, identifying customers and engaging with them to drive sales. -- [Infinite Regen](https://x.com/0xInfiniteregen): A platform for creating AI agents trained on Web3 insights to design mechanisms for funding public goods. - - -For a full comprehensive list, checkout the [AI Agent Demo Days](https://x.com/GigaHierz/status/1881401460082274395) hosted by Nader Dabit. - -### 💡 Project Ideas -- [25+ AI Agent Product Ideas](https://x.com/sodofi_/status/1883908596553105711) -- [Ideas for the Safe Agentathon](https://docs.google.com/document/d/1HSBfxkb5AWPZo6YDefDVjBrHVl-Nh4DQVElyLhy4y7A/edit?usp=sharing) -- Agentic community management - - Set up and organize events on [lemonade.social](http://lemonade.social) as mentioned in this [podcast](https://open.spotify.com/episode/40XcJxe9RfwtPIOq3KHy7s?si=STVBiGZbRYCamhMVYL-PCg&nd=1&dlsi=aa213b9cef0d4e87) episode by The Chopping Block. -- Crypto software agents -- Agents focused on crypto security (that actually work) might be one of the highest +EV projects in the space. 24/7 security, patching ability, monitoring systems, etc. would totally change the narrative on how crypto is perceived. -- Agent verifiability - - identity - - data - - models - -### 🛠️ Technical Resources - -- Starter Kit (including Lit + Gaia): https://github.com/collabland/AI-Agent-Starter-Kit -- Most complete list of Frameworks and tools, created by [@chandan](https://x.com/chandan1_) - - [AIAgentToolkit.xyz](http://aiagenttoolkit.xyz/) -- Celo - [Getting Started with AI Agents](https://docs.celo.org/build/build-with-ai/overview) -- [Mode Network Hackathon Starter Kit](https://www.notion.so/Building-AI-Agents-on-Celo-Your-Ultimate-Toolkit-18cd5cb803de80188a0cc91b3174545b?pvs=21) -- [The AI Model Layer of Crypto](https://cryptopond.xyz/) -- [12-Factor Agents - Principles for building reliable LLM applications](https://github.com/humanlayer/12-factor-agents) - - -### 📖 Articles - -- [AI Real World Use Cases for ReFi](https://www.daviddao.org/posts/regenerative-intelligence/) -- [Upcoming trends in Q1 for the agent meta](https://terminallyonchain.xyz/q1trends) -- [Allora Powers Virtuals](https://www.allora.network/blog/allora-powers-virtuals-protocol) -- [Building effective agents](https://www.anthropic.com/research/building-effective-agents) - -### 🎙️ Podcasts - -- Learn about the history of the first viral AI Agent with a token: The Truth Terminal - - [Bankless: How Crypto Al Agents Will Take Over the World | Ejaaz Ahamadeen](https://open.spotify.com/episode/5jVhVuzb5HNZdZz11b1cc1?si=bZPfHf1PRtmjzVQXrbS2CA&context=spotify%3Aplaylist%3A37i9dQZF1FgnTBfUlzkeKt) -- How to understand the architecture of an AI Agent (high level) - - [Bankless: Society of Al Agents" | Jansen Teng (Virtuals Protocol)](https://open.spotify.com/episode/4kMubklNG3xBMYR0mWijNy?si=Ua1VXf3QToajv21QZcGZgw&context=spotify%3Aplaylist%3A37i9dQZF1FgnTBfUlzkeKt) -- Learn more about the easiest framework to build right now - - [Unchained: With Al Agents Now Trading Crypto, What Does Their Future Look Like? - Ep. 758](https://open.spotify.com/episode/5UDhqnOziBkcfaQ55ZJ7Bg?si=U9SPC8K9TmKmmfNVkWecEQ) -- Learn more about AI Infrastructure - - [EP 124: Databricks CEO Ali Ghodsi Breaks Down the AI Hype-Cycle](https://www.notion.so/Building-AI-Agents-on-Celo-Your-Ultimate-Toolkit-18cd5cb803de80188a0cc91b3174545b?pvs=21) -- Predictions for the industry - - [AI + a16z](https://podcasts.apple.com/in/podcast/ai-a16z/id1740178076) - - -### 🏆 Start Building Now - -- [Proof of Ship](https://celoplatform.notion.site/Proof-of-Ship-17cd5cb803de8060ba10d22a72b549f8) - a monthly contest where AI Agents track contributions on Celo and distribute rewards to builders. - -Have another resource you want to add? Click the ['Edit this page'](https://github.com/celo-org/docs/edit/main/docs/build/build-with-ai/usecases.md) button below to submit a PR. diff --git a/docs/build/build-with-ai/tools.md b/docs/build/build-with-ai/tools.md deleted file mode 100644 index 15288c83a2..0000000000 --- a/docs/build/build-with-ai/tools.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: AI Agents Tools & Infrastructure -description: This article provides an overview of essential tools for building AI agents. ---- - -# AI Agents Tools & Infrastructure - -This article provides an overview of essential tools for building AI agents. Given the rapid advancements in this space, this is not an exhaustive list but rather a snapshot of tools available on Celo. - -## AI Agent Frameworks - -Frameworks define how AI agents interact, collaborate, and execute tasks. For a full list of frameworks, tools, and infrastructure, check out this [comprehensive table](https://www.aiagenttoolkit.xyz/). - -**On Celo:** -- [**Olas**](https://docs.autonolas.network/open-autonomy/): Framework for autonomous economic agents in decentralized markets. - - [Implement MECH client into your dApp](https://www.youtube.com/watch?v=fuDteQqsf2A) - - [Celo Trader Agent](https://www.youtube.com/watch?v=WSB0H0dDc78&t=1740s) - - can do transfers (for advanced Python developers) -- [**Gaia**](https://www.gaianet.ai/): Building intelligent ecosystems for evolving AI applications - - Meme Token Generator - an AI Agent that autonomously deploys tokens on Celo. - - [Twitter Thread](https://github.com/harishkotra/celo-token-agent) - short intro - - [Video Tutorial](https://www.youtube.com/watch?v=-7Bcgpj79LM) - - [Example Repository](https://github.com/harishkotra/celo-token-agent/) - - [EternalAI](https://eternalai.org/): A Decentralized Autonomous Agent protocol running AI agents on Solidity smart contracts — exactly as programmed — without censorship, interference, or downtime. - - [GT Protocol](https://www.gt-protocol.io/): AI Agents Builder, powered by GT Protocol AI Executive Technology, delivers customized AI agents tailored to enhance both business operations and personal daily tasks. - - [**ElizaOS**](https://elizaos.github.io/eliza/): TypeScript-based framework with multi-agent simulation capabilities. - - -**Other:** -- [**LangChain**](https://www.langchain.com/): Framework for LLM-powered applications. -- [**MetaGPT**](https://github.com/geekan/MetaGPT): Multi-agent meta programming framework, mimicks organizational roles at a software company. - -## Launchpads - -No-code platforms simplify AI agent deployment, making it easier to integrate social agents with tokens. - -- [**Virtuals**](https://app.virtuals.io/): No-code AI Launchpad with LLP context system. -- [**Vapor**](https://alpha.vaporware.fun/): Platform built on ai16z Eliza Framework - -## Essential Tools - -A variety of tools are available for building autonomous agents, including blockchain integration, machine learning, memory systems, simulation, monitoring, and security. - -For a quick start, focus on: -- Blockchain tools for onchain operations. -- Memory systems for learning and adapting. -- LLMs optimized for Web3 data. - -When scaling, consider: - -- Frameworks for multi-agent systems. -- Access controls and prompt verification. -- Support for videos, PDFs, and research papers. -- Effective use of LLMs, NLP, and RAG tools. - -## Intelligence Tools - -**Machine Learning Tools:** -- **Purpose**: Training, deploying, debugging and managing ML models -- **Examples**: LiteLLM, ModelZoo, TensorServe, GPT-Explorer -- **Use Cases**: Pattern recognition, classification, prediction - -**Natural Language Processing Tools:** -- **Purpose**: Language understanding and processing -- **Examples**: NeuralSpace, LangFlow -- **Use Cases**: Text analysis, grammar checking, entity recognition - -**Retrieval Augmented Generation Tools:** -- **Purpose**: Combining LLMs with knowledge bases -- **Examples**: Autonomous RAG, Agentic RAG, Local RAG Agent -- **Use Cases**: Enhanced chatbots, documentation search, context-aware responses - -## Infrastructure - -**Blockchain Tools:** -- **[GOAT](https://ohmygoat.dev/introduction)**: GOAT 🐐 (Great Onchain Agent Toolkit) is an open-source framework for adding blockchain capabilities like wallets and smart contracts to AI agents. -- **[Nebula](https://portal.thirdweb.com/nebula)**: Web3 LLM by thirdweb - - [Tutorial](https://www.youtube.com/watch?v=FeubfHwfJcM) - - [Example Respository](https://github.com/cromewar/nebula-telegram-demo) -- **[Kaito](https://www.kaito.ai/)**: Unified crypto news data. -- **[GOAT](https://ohmygoat.dev/introduction)**: GOAT 🐐 (Great Onchain Agent Toolkit) is an open-source framework for adding blockchain capabilities like wallets and smart contracts to AI agents. -- **[ChainGPT](https://www.chaingpt.org/)**: Is an advanced AI infrastructure that develops AI-powered technologies for the Web3, Blockchain, and Crypto space, developing solutions from Chatbots, NFT, Smart Contract Generators and AI Trading Assistants -- [EigenLayer](https://www.eigenlayer.xyz/): Autonomous Verifiable Service (AVS) on EigenLayer is a decentralized service built on Ethereum that provides custom verification mechanisms of off-chain operations. -- **[Nebula](https://portal.thirdweb.com/nebula)**: Web3 LLM by thirdweb - - [Tutorial](https://www.youtube.com/watch?v=FeubfHwfJcM) - - [Example Respository](https://github.com/cromewar/nebula-telegram-demo) -- [Safe](https://safe.global/safenet): Smart Accounts for Agents -- **[Kaito](https://www.kaito.ai/)**: Unified crypto news data. - -**Memory Systems:** -- **[Mem0](https://github.com/mem0ai/mem0)**: Intelligent memory layer for AI assistants. -- **[Eliza Agent Memory](https://github.com/elizaOS/agentmemory)**: Knowledge graphing and document search. -- **[Mem0](https://github.com/mem0ai/mem0)**: Intelligent memory layer for AI assistants. -- **[Eliza Agent Memory](https://github.com/elizaOS/agentmemory)**: Knowledge graphing and document search. - - -**Security and Policy:** -- **[Predicate](https://x.com/0xPredicate)**: Define rules for onchain interactions -- **[Functor Network](https://www.functor.sh/)**: Policy framework for autonomous agents -- **Access Controls**: Environmental permissions -- **[Langfuse](https://langfuse.com/) - Prompt Verification**: Traces, evals, prompt management and metrics to debug and improve your LLM application. -- **[LiteLLM](https://www.litellm.ai/#features) - LLM Access**: Manage LLM access for your developer - - - -**Data:** -When working with AI agents, it's essential to train models and collect the right data. For unique character creation, ensure you have sufficient training data. Some useful tools include: -- **[DataSphere](https://github.com/datasphere/datasphere)**: Visualizes large datasets for analysis. -- **[JinAI's LLM-friendly Markdown Tool](https://github.com/jina-ai/serve)**: Converts websites into LLM-friendly markdown. -- **[Masa](https://www.masa.ai/)**: The #1 real-time data network for AI Agents & Apps -- **[Vana](https://www.vana.org/)**: The first open protocol for data sovereignty. User-owned AI through user-owned data. Growing the DataDAO ecosystem. -- **[DataSphere](https://github.com/datasphere/datasphere)**: Visualizes large datasets for analysis. -- **[JinAI's LLM-friendly Markdown Tool](https://github.com/jina-ai/serve)**: Converts websites into LLM-friendly markdown. \ No newline at end of file diff --git a/docs/build/build-with-ai/usecases.md b/docs/build/build-with-ai/usecases.md deleted file mode 100644 index 0beee8164c..0000000000 --- a/docs/build/build-with-ai/usecases.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: AI Agents Examples -description: Learn more about AI Agents by reviewing these 25 examples. ---- - -# AI Agents Examples - -## Use Cases -AI Agents are transforms how people interact with onchain applications. Here's a list of 25+ use cases. - -![AI](/img/developer/ai-agent-ideas.png) - -Do you have an AI Agent project, tool, or hackathon you want to share? Add it to the GitHub resources list [here](https://github.com/celo-org/ai-agent-ideas). - - -## Ideas to Build - -#### Onchain Foreign Exchange (FX) Trading with Autonomous Agents -- Celo, known as the "Home of Stablecoins," supports several dollar-pegged stablecoins like USDT, USDC, and 13 native stablecoins tracking currencies such as the US Dollar, Euro, Brazilian Real, and Kenyan Shilling. -- Build AI agents that facilitate seamless onchain FX trading, leveraging Celo's native stable assets and incentivized liquidity pairs on [Uniswap](https://app.uniswap.org/explore/pools/celo) (powered by [Merkl campaigns](https://merkl.angle.money/?chain=42220) and managed through Steer Protocol). -- **Arbitrage Bots** - - Develop AI-driven arbitrage bots that identify and execute profitable trades across decentralized exchanges (DEXs) on Celo, optimizing for low fees and fast transaction times. -- **Liquidity Pool (LP) Management** - - Create AI tools to automate LP management, ensuring optimal allocation of assets, rebalancing, and yield maximization. -- **Merkle Rewards Optimization with Steer Protocol** - - Find the Merkl campaigns with the highest rewards and provide liquidity through Steer Protocol. - -#### Prediction Markets -- Design AI-powered prediction markets that leverage Celo's stablecoins for low-cost, high-efficiency betting and forecasting. - -#### Automated Savings and Dollar-Cost Averaging (DCA) -- Develop AI agents that help users automate savings strategies or execute DCA plans using Celo's stablecoins, making financial planning effortless. - -#### Automated Data Collection Payments -- Today, 82.7% of collected biodiversity data comes from North America and Europe, leaving massive data gaps in emerging markets. -- AI agents can automate payments for individuals and communities in Celo’s ecosystem, ensuring fair, real-time compensation for valuable data collection. - - See a [case study](https://www.daviddao.org/posts/regenerative-intelligence/) on how GainForest is using AI to drive regenerative finance and intelligent data economies. - -#### Optimized Retroactive Funding -- The Celo ecosystem has hosted multiple retroactive funding rounds to reward top contributors for their impact. -- AI agents can automate and optimize this process by analyzing onchain activity, GitHub contributions, and deployed contracts to fairly distribute funding. - - Check out [Proof-of-Ship](https://github.com/celo-org/Proof-of-Ship) for a list of projects deployed on Celo this month. - - Check out [EasyRetroPGF](https://easyretropgf.xyz/celo-citizen-retro/stats) for a list of all contributors who received retroactive funding on Celo last month. - - diff --git a/docs/build/build-with-ai/vibe-coding.md b/docs/build/build-with-ai/vibe-coding.md deleted file mode 100644 index abb40463ea..0000000000 --- a/docs/build/build-with-ai/vibe-coding.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Vibe Coding -description: Learn how to set up your environment for Vibe Coding and discover tools that enhance your development workflow ---- -import YouTube from '@components/YouTube'; - -# Vibe Coding Tools - -Vibe Coding refers to an approach to software development where you use chat agents inside your IDE and build an application mainly by using prompts. This guide introduces you to a curated collection of tools that can significantly improve your development process, from full-stack application development to code editing and research. - -Watch a quick intro to Vibe Coding with the Celo MCP Servers. You can find out more about them in the [MCP section](../mcp/mcp.md). - - - -:::info -Make sure you watch some tutorials and check out some X threads to understand other people's setup. Being successful with Vibe Coding relies on your preparation and setup. -::: - -## Full Stack Development Tools - -These tools help you build complete applications with minimal setup and maximum efficiency. We list here our favorite tools but this list will be updated continuously. Feel free to create a PR with your favorite tool and let us know why you think it's useful. - -### Create a frontend with AI tools, no code - -#### [Bolt](https://bolt.new/) - -- **Design Integration**: Native Figma support -- **IDE Compatibility**: Runs directly in your development environment -- **Backend Solutions**: Supabase integration for auth and database operations -- **Version Control**: GitHub integration - -#### [Lovable](https://lovable.dev/) - -- **Beginner-Friendly**: Simplified development process -- **Backend Integration**: Supabase for authentication and database -- **Version Control**: GitHub integration -- **Learning Resources**: Comprehensive documentation - -### Development Environments - -#### [Replit](https://replit.com/) - -- **Production-Ready**: Built-in production server -- **Collaboration**: Real-time coding with team members -- **Deployment**: One-click deployment options -- **Package Management**: Integrated package handling - -#### [Base44](https://base44.app/) - -For advanced developers seeking: - -- **Customization**: Advanced configuration options -- **Performance**: Optimized development environment -- **Integration**: Extensive tool compatibility -- **Scalability**: Enterprise-grade features - -## AI-Enhanced IDEs - -Modern code editors with AI capabilities to enhance your development workflow. - -### [Cursor](https://www.cursor.com/) - -An AI-powered code editor featuring: - -- **Code Assistance**: Direct code modification suggestions -- **MCP Integration**: Native MCP server support -- **Customization**: Rules and context files for personalized guidance -- **AI Features**: Smart code completion and refactoring - -### [Windsurf](https://windsurf.com/) - -A development environment with: - -- **Code Editing**: AI-assisted code modifications -- **MCP Support**: Integrated MCP server capabilities -- **Live Preview**: In-editor application preview -- **Real-time Collaboration**: Team coding features - -## Research & Context Enhancement Tools - MCP Servers - -Tools that help you gather and process information effectively, mainly MCPs. Add these to your Cursor!s - -### AI-Powered Research - HIGHLY Recommended - -- [Perplexity MCP](https://www.perplexity.ai/) - - Web search capabilities - - AI-powered reasoning - - Context-aware responses - - Research synthesis - -### Data Collection - -- [Firecrawl MCP](https://www.firecrawl.dev/mcp) - - Web scraping capabilities - - Data extraction - - Automated data collection - - Structured output - -## Additional Resources - -- [MCP Server Guide](../mcp/mcp.md) - Learn more about MCP integration diff --git a/docs/build/build-with-defi.md b/docs/build/build-with-defi.md deleted file mode 100644 index c9dfdd65b2..0000000000 --- a/docs/build/build-with-defi.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Build with DeFi -description: A beginner's guide to building DeFi applications on Celo ---- - -# Build with DeFi - -In this guide you can explore tooling and infrastructure for building DeFi on Celo. - -## Overview - -Stablecoins play a crucial role in decentralized finance (DeFi) by providing price stability, reducing volatility, and enabling seamless financial transactions. Celo has built an ecosystem optimized for stablecoins, making it a leading platform for real-world DeFi applications. With a focus on financial inclusion, building on Celo means enabling accessible and affordable financial tools for people around the world. - -## Why Stablecoins Matter - -Stablecoins are digital assets pegged to a stable reserve, such as fiat currency or a basket of assets. They provide key benefits in DeFi and financial transactions and financial inclusion: - -- **Price Stability** – Unlike volatile cryptocurrencies, stablecoins maintain a predictable value. -- **Low-Cost Transactions** – Sending stablecoins on Celo costs significantly less than on traditional blockchains. -- **Borderless Access** – Users can send and receive stablecoins globally, without needing a bank account. -- **Programmability** – Stablecoins can be used in smart contracts to enable lending, savings, and remittances. -- **Financial Inclusion** – Stablecoins empower unbanked and underbanked populations with access to digital financial services. - -Celo is uniquely positioned to advance the adoption of stable digital assets through the [Mento](https://www.mento.org/) Protocol—a decentralized stablecoin platform built on Celo. [Mento](https://www.mento.org/) enables the creation of local stablecoins that are algorithmically stabilized and backed by crypto collateral. This approach helps users access a price-stable digital currency that is aligned with their local economy. - -The goal of Mento is simple: to provide a stable asset for every country in the world. These stable assets can be used for everyday payments, savings, remittances, and commerce—empowering individuals in regions with high inflation or limited access to traditional banking infrastructure. - -### Celo Stablecoin Ecosystem - -Celo offers multiple stablecoin options for different use cases: - -| Stablecoin | Issuer | Use Case | -| ---------------- | ----------------------------------------------------------------------- | ------------------------------------------------- | -| **cUSD** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | US Dollar-pegged digital cash | -| **cEUR** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Euro-pegged stablecoin | -| **cREAL** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Brazilian Real-pegged stablecoin | -| **eXOF** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | CFA Franc-pegged stablecoin | -| **cKES** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Kenya Shilling-pegged stablecoin | -| **PUSO** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Philippine Peso-pegged stablecoin | -| **cCOP** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Colombia Peso-pegged stablecoin | -| **cGBP** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | British Pound-pegged stablecoin | -| **cCAD** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Canadian Dollar-pegged stablecoin | -| **cAUD** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Australian Dollar-pegged stablecoin | -| **cZAR** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | South African Rand-pegged stablecoin | -| **cGHS** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Ghanaian Cedi-pegged stablecoin | -| **cNGN** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Nigerian Naira-pegged stablecoin | -| **cJPY** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Japanese Yen-pegged stablecoin | -| **cCHF** | [Mento](https://www.mentolabs.xyz/blog/3-new-decentralized-stablecoins) | Swiss Franc-pegged stablecoin | -| **USDT** | [Tether](https://tether.to/en/) | Popular stablecoin on multiple blockchains | -| **USDC** | [Circle](https://www.circle.com/usdc) | Widely used stablecoin with high liquidity | -| **vEUR** | [VNX](https://vnx.li/) | Euro-pegged stablecoin | -| **vGBP** | [VNX](https://vnx.li/) | British Pound-pegged stablecoin | -| **vCHF** | [VNX](https://vnx.li/) | Swiss Franc-pegged stablecoin | -| **USDM** | [Mountain Protocol](https://mountainprotocol.com/) | Yield-bearing stablecoin | -| **USDA** | [Angle](https://www.angle.money/) | Yield-bearing USD stablecoin | -| **EURA** | [Angle](https://www.angle.money/) | Yield-bearing Euro stablecoin | -| **USDGLO** | [Glo Foundation](https://www.glodollar.org/) | Impact-driven stablecoin supporting global causes | -| **BRLA Digital** | [BRLA](https://brla.digital/) | Brazil-based stablecoin | -| **COPM** | [Minteo](https://minteo.com/) | Fiat-backed Colombian Peso Stablecoin | -| **G$** | [GoodDollar](https://www.gooddollar.org/) | UBI-focused stablecoin for financial inclusion | - -## Examples of DeFi Applications on Celo - -Celo supports a vibrant ecosystem of DeFi protocols that utilize stablecoins: - -### Lending & Borrowing - -- **[Aave](https://aave.com/)** – Decentralized lending and borrowing using stablecoins. -- **[PWN](https://pwn.xyz/)** - Fixed rate lending - -### Exchanges - -Find all Exchanges [here](/what-is-celo/using-celo/exchanges). For cross-chain exchanges check out the [bridges](/developer/bridges) and [cross-chain messaging](/developer/bridges/cross-chain-messaging) pages. - -- **[Velodrome](https://velodrome.finance/)** – Velodrome is a decentralized exchange where you can execute low-fee swaps, deposit tokens to earn rewards, and actively participate in the onchain economy. -- **[Uniswap](https://app.uniswap.org/)** – Swaps and liquidity pools for stablecoins. -- **[Ubeswap](https://ubeswap.org/)** – A Celo-native DEX optimized for mobile users. -- **[Carbon DeFi by Bancor](https://www.carbondefi.xyz/)** – Empowering users with onchain automation and superior orderbook-like features. -- - -### Liquidity Incentives - -- **[Steer Protocol](https://steer.finance/)** – Automated liquidity strategies. -- **[Merkl](https://app.merkl.xyz/)** – Rewarding liquidity providers with stablecoin incentives. -- **[Ichi](https://www.ichi.org/)** – Automated Liquidity Strategies for DeFi Yield. - -### Oracles - -Oracles are a crucial part to get real time price information on tokens. Speed is crucial when it comes to building DeFi applications, and you should not rely on web2 APIs for price feeds. Find all Oracles in the [tooling section](/developer/oracles). - -- [RedStone Oracles](/developer/oracles/redstone) -- [Chainlink, Price Feed Oracles](https://docs.chain.link/data-feeds/price-feeds/addresses?network=celo) - -### Human-Centered Security Tools - -- **[Noves](https://docs.noves.fi/reference/api-overview)** - Deciphering onchain activity and standardizing the results - - Human‑readable DeFi, ReFi & bridge txs - - Pre‑sign safety simulations in any Celo wallet - - Real‑time CELO / cUSD / stCELO pricing - -## Get Started - -Developers and entrepreneurs can leverage Celo's infrastructure to build next-generation stablecoin applications. - -By building on Celo, you're not just creating DeFi applications, you're enabling real-world financial inclusion and empowering users globally. diff --git a/docs/build/build-with-self.md b/docs/build/build-with-self.md deleted file mode 100644 index 846e2d9efb..0000000000 --- a/docs/build/build-with-self.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Build with Self -description: A beginner's guide to understanding and using Self ---- - -By the conclusion of this guide, you will have a basic understanding of Self and how to get started with it. - -This document will cover: - -- What is Self? -- Technical Resources -- Opportunities for Builders - -## What is Self? - -[Self](https://self.xyz/) is a privacy-first, open-source identity protocol that uses zero-knowledge proofs for secure identity verification. - -It enables Sybil resistance and selective disclosure using real-world attestations like passports. With a few lines of code, developers can easily check if their users are humans, while preserving their privacy. - -Access the [Self developer docs](https://docs.self.xyz/), explore APIs, and start building today. - -## Verify Your Digital Identity - -Seamlessly and securely verify your digital identity with Self. It allows you to: - -- **Prove Your Humanity:** Confirm you are human without revealing personal information. -- **Proof your identity, age, nationality or :** Demonstrate where you're from while maintaining privacy. Securely capture the first page data and RFID from your passport to verify your identity. -- **Privacy-preserving technology:** Protect your users private information. They will only disclose credentials and information that they allow. -- **Streamline Verification:** Enjoy a smooth and efficient identity verification process. -- **Optimized for Web3 and Universal Apps:** Harness zero-knowledge proofs and one-tap verifications in Web3 apps - -## Technical Resources - -- [Self Website](https://self.xyz/) -- [Self Documentation](https://docs.self.xyz/) -- [Self Playground](https://playground.self.xyz/) -- [Self Quickstart](https://docs.self.xyz/use-self/quickstart) - -## What to build? - -- Airdrop Protection -- Quadratic Funding -- Wallet Recovery -- Social Media & Marketplaces -- Country-Specific Functionality -- AI Protection for Smart Contracts -- Sanction List Checking -- Age Verification -- Sybil-Resistant Polling diff --git a/docs/build/build-with-thirdweb/celo-nft-drop-tutorial.md b/docs/build/build-with-thirdweb/celo-nft-drop-tutorial.md deleted file mode 100644 index 9b9cd72a01..0000000000 --- a/docs/build/build-with-thirdweb/celo-nft-drop-tutorial.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Celo NFT Drop Tutorial ---- - -Create and deploy your own Web3 app effortlessly with Thirdweb and Celo. - ---- - -## Objectives - -By the end of this tutorial, you will: - -* Have a set of **NFT Drops**. -* Build an **NFT gallery** with **`Thirdweb`** and **`Celo`**. - -## Prerequisites - -* Node (v20 or higher) -* A wallet with some test tokens (more on this later) - -## Fund Your Wallet - -1. Ensure you have sufficient funds to cover the transaction fees. -2. Visit the [Alfajores Faucet](https://faucet.celo.org/alfajores) to claim test tokens using your wallet address. ***Remember to claim only what you need.*** - -## Create a Contract on Thirdweb - -1. Visit [Thirdweb](https://thirdweb.com/login) and log in or create a new account. -2. Navigate to **`Contracts`** and click **`Deploy Contract`**. -3. Since multiple smart contracts have already been audited, we don’t need to write them from scratch. -4. Select **`NFT Drop`** and click **`Deploy`**. -5. Configure your token by setting its **Name** (mandatory), **Symbol**, and optionally adding an **Image** and **Description**. -6. In the **Deploy Options** section, choose **`Celo Alfajores`** as the Chain (if not selected by default). -7. Click **`Deploy Now`** to finalize the process. -8. After deployment, you’ll be redirected to the dashboard to upload your NFTs. -9. Provide a **name**, upload an **image**, add a **description**, and define **traits** for your NFT. -10. **Lazy Mint** your NFT. -11. Repeat steps 9 and 10 a few times—we need at least **3 NFTs**. -12. Copy your **`contract address`** from the NFT dashboard. - -## Get a Thirdweb Client ID - -1. Open the **Thirdweb Dashboard** and click **`Add New`** in the **Projects** section. -2. Select **`Project`** from the dropdown menu. -3. Enter a **project name** and add **`localhost:5173`** under **`Allowed Domains`**. Click **`Create`**. -4. A **`Client ID`** and **`Secret ID`** will be generated. Copy both to a secure location—we’ll only need the **`Client ID`**. - -## Clone the Thirdweb Celo NFT Repository - -1. Clone the repository: - - ```sh - git clone https://github.com/atejada/thirdweb-celo-nft - cd celo-token-agent - ``` -2. Install dependencies: - - - ```sh - npm install - ``` -3. Create a .env file with the following content: - - - ```sh - VITE_CLIENTID=your_thirdweb_client_id - VITE_ADDRESS=your_nft_contract_address - ``` - -4. Run the project: - - - ```sh - npm run dev - ``` - -Once the project is running, you’ll see the first NFT displayed along with a dropdown menu. You can select any other NFT from your collection to view its image, name, and description. - -## Join Build with Celo - Proof of Ship - -1. Create a project profile on [Karma GAP](https://docs.gap.karmahq.xyz/how-to-guides/integrations/celo-proof-of-ship)**. -2. Sign up to join [Proof of Ship](https://celo-devs.beehiiv.com/subscribe). -3. You can win up to **`5k cUSD`** + Track Bounties. -4. Build with **`Celo`**. diff --git a/docs/build/build-with-thirdweb/one-click quickstart.md b/docs/build/build-with-thirdweb/one-click quickstart.md deleted file mode 100644 index 24940be2de..0000000000 --- a/docs/build/build-with-thirdweb/one-click quickstart.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: One-Click Quickstart ---- - -Create and deploy Web3 apps effortlessly with Thirdweb and Celo. - ---- - -## Objectives - -By the end of this tutorial, you will: - -* Be able to transfer Celo to another address -* Have a mintable **NFT Drop**. - -## Prerequisites - -* Node (v20 or higher) -* A wallet with some test tokens (more on this later) - -## Fund Your Wallet - -1. Ensure you have sufficient funds to cover the transaction fees. -2. Visit the [Alfajores Faucet](https://faucet.celo.org/alfajores) to claim test tokens using a wallet address. ***Remember to claim only what you need.*** - -## Create a Contract on Thirdweb - -1. Visit [Thirdweb](https://thirdweb.com/login) and log in or create a new account. -2. Navigate to **`Contracts`** and click **`Deploy Contract`**. -3. Since multiple smart contracts have already been audited, there's no need to write them from scratch. -4. Select **`NFT Drop`** and click **`Deploy`**. -5. Configure the token by setting its **Name** (mandatory), **Symbol**, and optionally adding an **Image** and **Description**. -6. In the **Deploy Options** section, choose **`Celo Alfajores`** as the Chain (if not selected by default). -7. Click **`Deploy Now`** to finalize the process. -8. After deployment, well’ll be redirected to the dashboard to upload your NFTs. -9. Provide a **name**, upload an **image**, add a **description**, and define **traits** for the NFT. -10. **Lazy Mint** the NFT. -11. Copy the **`contract address`** from the NFT dashboard. - -## Make the NFT Mintable - -1. On the dashboard, go to **Claim Conditions** -2. Click on **Add Phase**. -2. Specify the **Default Price (0.1)** and the **Limit per wallet (3)**. -3. Click on **Save Phases**. - -## Get a Thirdweb Client ID - -1. Open the **Thirdweb Dashboard** and click **`Add New`** in the **Projects** section. -2. Select **`Project`** from the dropdown menu. -3. Enter a **project name** and add **`localhost:5173`** under **`Allowed Domains`**. Click **`Create`**. -4. A **`Client ID`** and **`Secret ID`** will be generated. Copy both to a secure location—we’ll only need the **`Client ID`**. - -## Clone the Thirdweb Celo NFT Repository - -1. Clone the repository: - - ```sh - git clone https://github.com/celo-org/one-click-quickstart - cd one-click-quickstart - ``` - -2. Install dependencies: - - - ```sh - npm install - ``` - -3. Create a .env file with the following content: - - - ```sh - VITE_CLIENTID=your_thirdweb_client_id - VITE_ADDRESS=your_nft_contract_address - VITE_ADRESS_TO=your_wallet_address - ``` - -4. Run the project: - - - ```sh - npm run dev - ``` - -Once the project is running, there will be two links, the first named **Send Celo** and the second named **Mint NFT**. -The first one will be displayed by default. Click on the **Connect** button to connect the wallet. Enter an -address and an amount of Celo to transfer. The second link will display an NFT along with its description and by pressing -the mint button, 0.1 Celo will be paid. - -## Join Build with Celo - Proof of Ship - -1. Create a project profile on [Karma GAP](https://docs.gap.karmahq.xyz/how-to-guides/integrations/celo-proof-of-ship)**. -2. Sign up to join [Proof of Ship](https://celo-devs.beehiiv.com/subscribe). -3. You can win up to **`5k cUSD`** + Track Bounties. -4. Build with **`Celo`**. - diff --git a/docs/build/build-with-thirdweb/overview.md b/docs/build/build-with-thirdweb/overview.md deleted file mode 100644 index 51b6904d6e..0000000000 --- a/docs/build/build-with-thirdweb/overview.md +++ /dev/null @@ -1,27 +0,0 @@ -# Getting Started with Thirdweb - ---- - -## Table of Contents -- [Introduction](#introduction) -- [Why Thirdweb?](#why-thirdweb) -- [Resources](#resources) - -## Introduction {#introduction} - -Thirdweb streamlines blockchain development with pre-built contracts, SDKs, and a user-friendly dashboard. Deploy dApps, NFTs, and tokens effortlessly across multiple chains—fast, secure, and developer-friendly. - -## Why Thirdweb? {#why-thirdweb} - -Using Thirdweb is recommended because it eliminates the complexity of Web3 development, focusing on building rather than managing blockchain intricacies. - -* Pre-built Smart Contracts -* SDKs & APIs -* Multi-chain Support -* Wallet & Payments -* Dashboard Management - -## Resources {#resources} - -* [Thirdweb main page](https://thirdweb.com/) -* [Thirdweb Docs](https://portal.thirdweb.com/) diff --git a/docs/build/composer-kit.md b/docs/build/composer-kit.md deleted file mode 100644 index 3ba3ffd4f1..0000000000 --- a/docs/build/composer-kit.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Composer Kit UI ---- - -Composer Kit (@composer-kit/ui) is a **ready-to-use React component library** designed specifically for building web3 applications on the **Celo blockchain**. It provides a comprehensive set of modular, accessible, and customizable UI components that make it easy to integrate wallet connections, token balances, payments, NFT interactions, and more into your dApp. - -Visit the [official Composer Kit website](https://www.composerkit.xyz/) to explore interactive examples and get started quickly. - -## Key Features - -- 🔧 **Plug-and-play React components** for Celo dApps -- 💼 **Wallet connection, payment, swap, NFT, and identity modules** -- ⚡ **Simple installation and configuration** -- ♿ **Optimized for accessibility and responsive design** -- 📚 **Comprehensive documentation and real-world usage examples** - -## Prerequisites - -- Node.js (v16 or higher) -- React (v17 or higher) -- A Celo dApp project - -## Installation - -Install Composer Kit UI using your preferred package manager: - -```bash -# npm -npm install @composer-kit/ui - -# pnpm -pnpm add @composer-kit/ui - -# yarn -yarn add @composer-kit/ui -``` - -## Getting Started - -To use Composer Kit in your React application, you'll need to configure the `ComposerKitProvider` at the root of your app: - -```jsx -import { ComposerKitProvider } from "@composer-kit/ui"; - -function App() { - return {/* Your app content */}; -} -``` - -## Core Components - -Composer Kit UI provides several categories of components to accelerate your Celo dApp development: - -### Wallet Components - -- **Wallet**: Connect and display wallet information -- **Connect Button**: Simplified wallet connection -- **Avatar & Name**: Display user identity - -### Payment & Transaction Components - -- **Payment**: Send payments with built-in dialog and error handling -- **Transaction**: Execute blockchain transactions with status tracking -- **Balance**: Display and manage token balances - -### Token & DeFi Components - -- **Swap**: Token exchange interface -- **TokenSelect**: Search and select from available tokens -- **Address**: Display Ethereum addresses with copy functionality - -### NFT Components - -- **NFTCard**: Display NFT details -- **NFTMint**: Mint NFTs with a user-friendly interface -- **NFTImage & NFTMeta**: NFT display components - -### Identity Components - -- **Identity**: Display user information with social links -- **Social Links**: Integration with Twitter, GitHub, Farcaster, and more - -## Quick Example - -Here's a simple example of using the Payment component: - -```jsx -import { useState } from "react"; -import { Payment, PaymentDialog, PaymentError } from "@composer-kit/ui/payment"; -import { celo } from "viem/chains"; - -export const PaymentExample = () => { - const [isOpen, setIsOpen] = useState(false); - const [txHash, setTxHash] = useState(""); - - return ( - { - setTxHash(hash); - setIsOpen(false); - }} - onError={(error) => { - console.error("Payment error", error); - }} - recipientAddress="0x717F8A0b80CbEDe59EcA195F1E3D8E142C84d4d6" - tokenAddress="0x765de816845861e75a25fca122bb6898b8b1282a" - > - - setIsOpen(!isOpen)} open={isOpen} /> - - - ); -}; -``` - -## Component Categories - -### 🔗 **Address Components** - -Display Ethereum addresses with truncation and copy-to-clipboard functionality. - -### 💰 **Balance Components** - -Manage and display token balances with precision control and token selection. - -### 👤 **Identity Components** - -Show user profiles with avatars, names, balances, and social media links. - -### 🖼️ **NFT Components** - -Display, preview, and mint NFTs with comprehensive metadata support. - -### 💸 **Payment Components** - -Handle payments with built-in transaction dialogs and error management. - -### 🔄 **Swap Components** - -Facilitate token swaps with intuitive interfaces and token selection. - -### 🪙 **Token Select Components** - -Search and select tokens from comprehensive token lists. - -### 📊 **Transaction Components** - -Execute smart contract interactions with status tracking and error handling. - -### 👛 **Wallet Components** - -Connect wallets and display user information seamlessly. - -## Advanced Usage - -Composer Kit UI is designed to be modular and composable. You can combine multiple components to create complex interfaces: - -```jsx -import { Wallet, Identity, Balance, Swap } from "@composer-kit/ui"; - -export const DashboardExample = () => { - return ( -
- - - - - - - - - - - - - -
- ); -}; -``` - -## Styling and Customization - -All components accept standard HTML attributes including `className` and `style` props, making them easy to customize with your preferred CSS framework: - -```jsx -
-``` - -## Examples and Documentation - -For comprehensive examples and detailed API documentation for each component: - -- 🌐 **Official Website**: [composerkit.xyz](https://www.composerkit.xyz/) - Interactive examples and documentation -- 📚 **GitHub Repository**: [celo-org/composer-kit](https://github.com/celo-org/composer-kit) - Source code and detailed README -- 💻 **Live Examples**: Explore the interactive examples in the documentation - -## Support - -- 📖 **Documentation**: Detailed component APIs and examples -- 💬 **Discord**: Join the [Celo Discord server](https://chat.celo.org) and ask questions in the #general-dev channel -- 🐛 **Issues**: Report bugs or request features on [GitHub](https://github.com/celo-org/composer-kit) -- 🌐 **Community**: Connect with other developers building on Celo - -## Next Steps - -- Check out the [quickstart guide](./quickstart) to get started with Celo development -- Explore [building on MiniPay](./build-on-minipay/overview) for mobile-first experiences -- Learn about [DeFi integration](./build-with-defi) for financial applications diff --git a/docs/build/fund-your-project.md b/docs/build/fund-your-project.md deleted file mode 100644 index 8499a9ee7b..0000000000 --- a/docs/build/fund-your-project.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Fund your Project -description: Learn how to get funding for your project on Celo ---- - - -# Fund your Project - -Discover funding opportunities in the Celo ecosystem. - ---- - -The Celo ecosystem offers a variety of funding mechanisms, with a strong focus on retroactive funding, rewarding impactful contributions after they’ve been made. Grants and sustainable revenue models are also available to support projects at different stages. - -Explore these opportunities to maximize your funding potential. - -## Build Your Onchain Reputation - -Establishing a strong onchain reputation increases your chances of securing retroactive funding. - -Here’s how you can get started: - - 1. **Create a project profile on [Karma GAP](https://docs.gap.karmahq.xyz/how-to-guides/integrations/celo-proof-of-ship)**: Build credibility by showcasing your contributions and activity. - - 1. **Apply for monthly rewards with [Proof of Ship](https://celo-devs.beehiiv.com/subscribe)** Demonstrate consistent progress for automated retroactive rewards. - -## Apply for Grant Opportunities - -There are various grant opportunities for builders in the Celo ecosystem, with funding available at different stages of your project. To maximize your chances of receiving rewards, include your Karma GAP project profile when applying. - - 1. **[Prezenti Grants](https://www.prezenti.xyz/)** - - 2. **[Celo Support Streams](https://www.celopg.eco/programs)**: Submit your Support Stream application and earn bi-weekly CELO incentive budgets - - 3. **[CPG Retroactive Funding](https://www.celopg.eco/programs)** - -## Ecosystem-Led Funding Opportunities - -Expand your funding sources with ecosystem partner initiatives. - - 1. **[Proof of Impact](https://www.divvi.xyz/)**: Automate gas fee revenue splits to fund your app. - - 2. [Builder Rewards - Celo PG x Talent Protocol](https://www.celopg.eco/programs) - 10.000 CELO/ month - - 3. **[Commons Builder Income](https://www.commonsprotocol.xyz/)**: Apply for CBI and earn daily rewards - - 4. **[GoodBuilders Program](https://gooddollar.notion.site/GoodBuilders-Program-1a6f258232f080fea8a6e3760bb8f53d)**: A year-long initiative offering \$220k in rewards for building with G$. - - 5. **[Glo Dollar Liquidity Flywheel](https://www.glodollar.org/articles/glo-dollar-and-celo-public-goods)**: Around $40,000 will be donated to Celo Public Goods, thanks to a $1M Glo Dollar (USDGLO) holding from Mento. Projects that increase Glo Dollar liquidity will receive more funding. - -## Accelerators/ Incubators - - 1. **[Celo Camp](https://www.celocamp.com/)**: The ecosystem’s flagship accelerator that helps elevate projects to the next level. - - 2. **[Celo Africa DAO Incubator](https://docs.google.com/forms/d/e/1FAIpQLSdRgbeFNKulww_-8w-LsK7-3lAR72NUVCinvyr2MUHW9MfsIg/viewform)**: Supports projects by priming them for usage and adoption. - -## Funds - - 1. **[Verda Ventures](https://verda.ventures/)**: Building for MiniPay & raising funding? Reach out to [team@verda.ventures](mailto:team@verda.ventures) with a deck and product demo. - -If you want to add another ecosystem-led funding program, [edit this page](https://github.com/celo-org/docs/edit/main/docs/build/fund-your-project.md) to include it. - -## Get Funding Updates - -Stay up to date with the latest funding opportunities by [joining our newsletter](https://embeds.beehiiv.com/eeadfef4-2f0c-45ce-801c-b920827d5cd2). diff --git a/docs/build/index.md b/docs/build/index.md deleted file mode 100644 index fef48694a3..0000000000 --- a/docs/build/index.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: Building dApps on Celo -description: A guide for building on Celo. ---- -import ColoredText from '/src/components/ColoredText'; - -Celo was created to enable real-world uses cases on Ethereum. - -Whether you're building your first dApp or looking to integrate an existing protocol onto Celo, we have all the resources and tools you need to get started. - ---- - -## Why Build on Celo? - -- **EVM Compatibile:** Celo is fully EVM-compatible, offering the same development experience as Ethereum with improved scalability and lower costs. -- **Fast Transactions:** After the migrations to an L2 Celo now has a **1-second block finality** compared to formerly 5 seconds. -- **Easy, Low-Cost Payments:** Celo's seamless payment infrastructure, including [Fee Abstraction](/developer/fee-abstraction), **sub-cent fees**, and **native stablecoins**, enables simple and affordable transactions. -- **Global Reach:** Celo provides access to more than **8 million real-world users** with some dApps having more than **200,000 DAUs**. - -
- -

- Getting Started -

-
- -
diff --git a/docs/build/mcp/celo-mcp.md b/docs/build/mcp/celo-mcp.md deleted file mode 100644 index e0e4c26034..0000000000 --- a/docs/build/mcp/celo-mcp.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Celo MCP Server ---- - -The **Celo MCP Server** is a Model Context Protocol (MCP) server that provides comprehensive access to the Celo blockchain. This powerful tool enables AI assistants and development environments to interact directly with Celo blockchain data, execute token operations, manage NFTs, handle smart contract interactions, process transactions, and participate in governance operations. - -## Key Features - -- 🔗 **Blockchain Data Access**: Real-time access to blocks, transactions, and account information -- 💰 **Token Operations**: Complete ERC20 and Celo stable token support (cUSD, cEUR, cREAL) -- 🖼️ **NFT Management**: Support for ERC721 and ERC1155 standards with metadata fetching -- 📄 **Smart Contract Interactions**: Call functions, estimate gas, and manage ABIs -- 📊 **Transaction Handling**: Gas estimation, EIP-1559 support, and transaction simulation -- 🏛️ **Governance Operations**: Access to Celo governance proposals and voting data - -## Prerequisites - -- Python 3.11 or higher -- Git (v2.38 or higher) -- An IDE that supports MCP (Cursor or Claude Desktop) - -## Installation - -### Method 1: Direct Installation - -Clone the repository and install dependencies: - -```bash -git clone https://github.com/celo-org/celo-mcp -cd celo-mcp -pip install -e . -``` - -### Method 2: Using pipx (Recommended) - -```bash -pip install pipx -pipx install celo-mcp -``` - -## Configuration - -Set up optional environment variables for custom RPC endpoints: - -```bash -export CELO_RPC_URL="https://forno.celo.org" # Default: Celo mainnet -export CELO_TESTNET_RPC_URL="https://forno.celo-sepolia.celo-testnet.org/" # Celo Sepolia testnet -``` - -## MCP Client Integration - -### Cursor IDE Setup - -Add the following configuration to your MCP settings file (`~/.cursor/mcp.json`): - -```json -{ - "mcpServers": { - "celo-mcp": { - "command": "uvx", - "args": ["--refresh", "celo-mcp"] - } - } -} -``` - -The `--refresh` flag ensures the latest code is always loaded when the MCP server starts. - -### Claude Desktop Setup - -For Claude Desktop, add this configuration to your MCP settings file: - -- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` -- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - -```json -{ - "mcpServers": { - "celo-mcp": { - "command": "uvx", - "args": ["--refresh", "celo-mcp"] - } - } -} -``` - -## Available Tools - -### Blockchain Data Operations - -#### Network and Block Information - -- **`get_network_status`**: Get current network status and connection information -- **`get_block`**: Fetch block information by number, hash, or "latest" -- **`get_latest_blocks`**: Get information about recent blocks (up to 100) - -#### Account and Transaction Data - -- **`get_account`**: Get account information including balance and nonce -- **`get_transaction`**: Get detailed transaction information by hash - -### Token Operations - -#### Token Information and Balances - -- **`get_token_info`**: Get detailed token information (name, symbol, decimals, supply) -- **`get_token_balance`**: Get token balance for a specific address -- **`get_celo_balances`**: Get CELO and stable token balances for an address - -### NFT Operations - -#### NFT Management - -- **`get_nft_info`**: Get NFT information including metadata and collection details -- **`get_nft_balance`**: Get NFT balance for an address (supports ERC721 and ERC1155) - -### Smart Contract Operations - -#### Contract Interactions - -- **`call_contract_function`**: Call read-only contract functions -- **`estimate_contract_gas`**: Estimate gas for contract function calls - -### Transaction Operations - -#### Transaction Management - -- **`estimate_transaction`**: Estimate gas and cost for transactions -- **`get_gas_fee_data`**: Get current gas fee data including EIP-1559 fees - -### Governance Operations - -#### Celo Governance - -- **`get_governance_proposals`**: Get Celo governance proposals with pagination -- **`get_proposal_details`**: Get detailed information about specific governance proposals - -## Development - -### Running Tests - -```bash -# Install development dependencies -pip install -e ".[dev]" - -# Run tests -pytest - -# Run with coverage -pytest --cov=celo_mcp -``` - -### Code Quality - -```bash -# Format code -black src/ -isort src/ - -# Lint code -flake8 src/ -mypy src/ -``` - -## Running the Server - -Start the MCP server directly: - -```bash -# Run the MCP server -python -m celo_mcp.server - -``` diff --git a/docs/build/mcp/composer-mcp.md b/docs/build/mcp/composer-mcp.md deleted file mode 100644 index 1e6ea5a6a6..0000000000 --- a/docs/build/mcp/composer-mcp.md +++ /dev/null @@ -1,272 +0,0 @@ ---- -title: Composer Kit MCP Server ---- - -import YouTube from '@components/YouTube'; - -The **Composer Kit MCP Server** is a Model Context Protocol (MCP) server that provides comprehensive access to Composer Kit UI components documentation, examples, and usage information. This powerful tool enables AI assistants and development environments to access the complete Composer Kit React component library designed for building web3 applications on the Celo blockchain. - -> Watch [this step-by-step vibe coding tutorial](https://www.youtube.com/watch?v=QOCO1G8cJyI) using the Celo Composer Kit MCP to create a token claim dApp in minutes! -> - - - -## Key Features - -- 🧩 **Component Library Access**: Complete documentation for all Composer Kit UI components -- 📚 **Code Examples**: Ready-to-use code snippets and implementation patterns -- 🔍 **Semantic Search**: Find components by functionality or use case -- 🏗️ **Celo Composer Integration**: Template management and project creation guides -- 📖 **Step-by-Step Guides**: Comprehensive tutorials for development and deployment -- 🎯 **Category Organization**: Components organized by functionality and use case - -## Prerequisites - -- Python 3.11 or higher -- UV (Fast Python package and project manager) -- An IDE that supports MCP (Cursor or Claude Desktop) -- Basic knowledge of React and web3 development - -## Installation - -### Method 1: Using pip - -```bash -pip install composer-kit-mcp -``` - -### Method 2: Using pipx (Recommended for isolation) - -```bash -# Install pipx if you haven't already -pip install pipx - -# Install composer-kit-mcp in an isolated environment -pipx install composer-kit-mcp -``` - -### Method 3: Development Installation - -```bash -git clone https://github.com/celo-org/composer-kit-mcp -cd composer-kit-mcp -pip install -e . -``` - -### Requires UV (Fast Python package and project manager) - -If uv isn't installed. - -``` -# Using Homebrew on macOS -brew install uv -``` - -or - -``` -# On macOS and Linux. -curl -LsSf https://astral.sh/uv/install.sh | sh - -# On Windows. -powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" -``` - -## MCP Client Integration - -### Cursor IDE Setup - -1. **Install the MCP server** (if not already done): - - ```bash - pip install composer-kit-mcp - ``` - -2. **Configure Cursor** by adding the MCP server to your settings: - - - Open Cursor Settings (Cmd/Ctrl + ,) - - Navigate to "Features" → "Model Context Protocol" - - Add a new MCP server: - - ```json - { - "mcpServers": { - "composer-kit-mcp": { - "command": "uvx", - "args": ["composer-kit-mcp"] - } - } - } - ``` - -3. **Restart Cursor** and verify the setup by asking: - - "What Composer Kit components are available?" - - "Show me how to use the Wallet component" - - "Search for payment-related components" - -### Claude Desktop Setup - -1. **Install the MCP server**: - - ```bash - pip install composer-kit-mcp - ``` - -2. **Locate your Claude Desktop config file**: - - - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - -3. **Edit the config file**: - - ```json - { - "mcpServers": { - "composer-kit-mcp": { - "command": "uvx", - "args": ["composer-kit-mcp"] - } - } - } - ``` - -4. **Restart Claude Desktop** and verify setup by looking for the 🔌 icon - -## Available Tools - -### Component Information - -#### Component Discovery - -- **`list_components`**: List all available Composer Kit components with descriptions and categories -- **`get_component`**: Get detailed information about a specific component including source code, props, and usage - -#### Component Search - -- **`search_components`**: Search for components by functionality, description, or category -- **`get_component_by_category`**: Get all components in a specific category - -### Celo Composer Integration - -#### Project Management - -- **`list_celo_composer_templates`**: List all available Celo Composer templates (Minipay, Valora, Social Connect) -- **`get_celo_composer_template`**: Get detailed information about a specific template -- **`create_celo_composer_project`**: Generate CLI commands for creating new projects - -#### Development Guides - -- **`get_step_by_step_guides`**: Get comprehensive guides for common development tasks -- **`search_guides`**: Search for specific development guides and tutorials - -### Documentation Access - -#### Code Examples - -- **`get_component_examples`**: Get usage examples for specific components -- **`get_integration_examples`**: Get examples of combining multiple components - -## Component Categories - -### Core Components - -Essential UI components for basic dApp functionality: - -- **Address**: Display Ethereum addresses with copy functionality -- **Balance**: Token balance display and management -- **Transaction**: Smart contract interaction components - -### Wallet Integration - -Components for wallet connection and user management: - -- **Wallet**: Complete wallet connection interface -- **Connect**: Simplified wallet connection buttons -- **Avatar & Name**: User identity display components - -### Payment & Transactions - -Components for handling payments and blockchain transactions: - -- **Payment**: Complete payment flow with dialogs and error handling -- **Transaction**: Transaction execution with status tracking -- **Swap**: Token exchange interfaces - -### Token Management - -Components for token selection and management: - -- **TokenSelect**: Token search and selection components -- **Balance**: Advanced balance management with precision control - -### NFT Components - -Components for NFT display and interaction: - -- **NFTCard**: NFT display components -- **NFTMint**: NFT minting interfaces -- **NFTImage & NFTMeta**: NFT metadata display - -### Identity Components - -Components for user identity and social features: - -- **Identity**: User profile display with social links -- **Social**: Integration with Twitter, GitHub, Farcaster - -## Celo Composer Templates - -### Minipay Template - -- **Purpose**: Pre-configured for building mini-payment dApps on Celo -- **Use Cases**: Mobile-first payment applications, micro-transactions, P2P payments -- **Features**: Mobile-optimized UI, payment flow components, PWA support - -### Valora Template - -- **Purpose**: Designed for easy Valora wallet integration -- **Use Cases**: Valora wallet integration, social payments, DeFi applications -- **Features**: Valora connectivity, social features, multi-token support - -### Social Connect Template - -- **Purpose**: Applications with social identity features -- **Use Cases**: Social identity verification, phone number authentication -- **Features**: Social Connect integration, identity verification, phone mapping - -## Development Features - -### Semantic Search - -Find components by describing what you need: - -- "payment form with error handling" -- "wallet connection button" -- "token swap interface" -- "NFT gallery display" - -### Code Generation - -Get ready-to-use code snippets: - -- Complete component implementations -- Integration patterns -- Best practices examples -- Error handling patterns - -### Template Integration - -Seamlessly combine Composer Kit with Celo Composer: - -- Template-specific configurations -- Component recommendations by use case -- Integration guides and examples - -## Running the Server - -Start the MCP server directly for testing: - -```bash -# Run the MCP server -python -m composer_kit_mcp.server -``` diff --git a/docs/build/mcp/mcp.md b/docs/build/mcp/mcp.md deleted file mode 100644 index fe34f1da75..0000000000 --- a/docs/build/mcp/mcp.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: MCP Server -description: Learn how to get started with MCP servers and implement the Model Context Protocol ---- - -import YouTube from '@components/YouTube'; - -# Model Context Protocol (MCP) - -[The Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). It was developed by Anthropic, the AI company behind Claude, to solve the challenge of consistently and efficiently connecting AI models with various data sources and tools. This makes Claude natively compatible with all MPC servers. OpenAI has announced compatibility with the MCP standard, ensuring broad adoption across major AI platforms. - -## Celo specific MCPs: - -- [Celo MPC Server](./celo-mcp.md) - - Chain Info - - Governance Proposals -- [Composer Kit MCP](./composer-mcp.md) - - starterkit - - components - - set up your project on Celo in minutes - - - -## Why MCP? - -MCP helps you build agents and complex workflows on top of LLMs by providing: - -- A growing list of pre-built integrations that your LLM can directly plug into -- The flexibility to switch between LLM providers and vendors -- Best practices for securing your data within your infrastructure - -## Core Architecture - -MCP follows a client-server architecture where a host application can connect to multiple servers: - -### Components - -- **MCP Hosts**: Programs like Claude Desktop, IDEs, or AI tools that want to access data through MCP -- **MCP Clients**: Protocol clients that maintain 1:1 connections with servers -- **MCP Servers**: Lightweight programs that each expose specific capabilities through the standardized Model Context Protocol -- **Local Data Sources**: Your computer's files, databases, and services that MCP servers can securely access -- **Remote Services**: External systems available over the internet (e.g., through APIs) that MCP servers can connect to - -## Discover MCP Servers - -Explore existing MCP server implementations: - -- [Awesome MCP Servers](https://mcpservers.org/) - Technical implementations -- [Awesome MCP Servers](https://github.com/punkpeye/awesome-mcp-servers) - Technical, art, marketing, and more - -## Additional Resources - -- [Official MCP Documentation](https://modelcontextprotocol.io/introduction) -- [MCP Community Forum](https://community.modelcontextprotocol.io) - - diff --git a/docs/build/quickstart.md b/docs/build/quickstart.md deleted file mode 100644 index 07ee195d83..0000000000 --- a/docs/build/quickstart.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Quickstart ---- - -To test out deploying a dApp on Celo, we recommend using [Celo Composer](https://github.com/celo-org/celo-composer), which allows you to quickly build, deploy, and iterate on decentralized applications using Celo. It provides a number of frameworks, examples, templates and Celo specific functionality to help you get started with your next dApp. - -## Prerequisites - -- Node (v20 or higher) -- Git (v2.38 or higher) - -## How to use Celo Composer - -The easiest way to start with Celo Composer is using `@celo/celo-composer`. This CLI tool lets you quickly start building dApps on Celo for multiple frameworks, including React (and rainbowkit). To get started, just run the following command, and follow the steps: - -```bash -npx @celo/celo-composer@latest create -``` - -### Provide the Project Name: - -You will be prompted to enter the name of your project - -```bash -What is your project name: -``` - -### Choose a smart contract development environment: - -You will be asked if you want to use Hardhat. Select Yes or No - -```bash -Do you want to use Hardhat? (Y/n) -``` - -### Choose to Use a Pre-Built Template, highlighting Celo's unique features: - -You will be asked if you want to use a [template](#supported-templates), check [below](#supported-templates) for the options. Select Yes or No - -```bash -Do you want to use a template? -``` - -### Select a Template: - -If you chose to use a template, you will be prompted to select a template from the list provided - -```bash -# built in frontend logic to use your dapp in MiniPay, pre-built example functions for sign, transact and mint -- MiniPay -# template built for easy Valora connectivity -- Valora -``` - -### Provide the Project Owner's Name: - -You will be asked to enter the project owner's name - -```bash -Project Owner name: -``` - -### Wait for Project Creation: - -The CLI will now create the project based on your inputs. This may take a few minutes. - -### Follow the instructions to start the project. - -The same will be displayed on the console after the project is created - -```bash -🚀 Your starter project has been successfully created! - -Before you start the project, please follow these steps: - -1. Rename the file: - packages/react-app/.env.template - to - packages/react-app/.env - -2. Open the newly renamed .env file and add all the required environment variables. - -Once you've done that, you're all set to start your project! - -Run the following commands from the packages/react-app folder to start the project: - - yarn install - yarn dev - -If you prefer npm, you can run: - - npm install - npm run dev - -Thank you for using Celo Composer! If you have any questions or need further assistance, please refer to the README or reach out to our team. -``` - -🔥Voila, you have a dApp ready to go. Start building your dApp on Celo. - -Once your custom dApp has been created, just install dependencies, either with yarn or npm i, and run the respective script from the package.json file. - -## Supported Templates - -### MiniPay - -- Pre-built template for creating a mini-payment application. -- Seamless integration with Celo blockchain for handling payments. - -Checkout [minipay docs](https://docs.celo.org/developer/build-on-minipay/overview) to learn more about it. - -### Valora - -- Template designed for Valora wallet integration. -- Facilitates easy wallet connectivity and transaction management. - -Checkout [valora docs](https://docs.valora.xyz/) to learn more about it. - -## Support - -Join the [Celo Discord server](https://chat.celo.org). Reach out in the #general-dev channel with your questions and feedback. diff --git a/docs/build/support.md b/docs/build/support.md deleted file mode 100644 index 3102172c60..0000000000 --- a/docs/build/support.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Get Support -description: A comprehensive guide on how to reach out for support ---- - -import ColoredText from '/src/components/ColoredText'; - -# Get Support - -This section explains how you can get support and stay up-to-date with Celo developer news. - ---- - -:::tip -Help us improve by sharing your feedback on missing tools, unclear sections, or any challenges you encounter by creating an [issue](https://github.com/celo-org/docs/issues/new) or by clicking on "Edit this page" on the bottom of each page. -::: - -## How to Get Support? - -- For general questions, join our [Discord](https://discord.com/invite/celo) and claim the developer role to ask questions in our #build-with-celo channel. Our moderators can provide guidance and answers. - -- For advanced questions, create issues and participate in [GitHub Discussions](https://github.com/orgs/celo-org/discussions). - -For the latest updates, sign up for the [DevDesk Mailing List](https://embeds.beehiiv.com/eeadfef4-2f0c-45ce-801c-b920827d5cd2) and follow [CeloDevs on X](https://x.com/CeloDevs). - -## Additional Resources - -- [Celo specification](https://specs.celo.org/) -- [Transaction types on Celo](https://github.com/celo-org/txtypes) -- [Celo Forum](https://forum.celo.org/) diff --git a/docs/cel2/faq.md b/docs/cel2/faq.md deleted file mode 100644 index 3a81ae1c22..0000000000 --- a/docs/cel2/faq.md +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Cel2 FAQ -description: Frequently Asked Questions about Cel2 ---- - -## Isthmus - -### My Alfajores node stalled at the Isthmus hardfork block (49908280) - -If you reached the hardfork block before upgrading to v2.1.0 your node can get stuck. - -This can be resolved by upgrading both op-geth and op-node to v2.1.0, stopping -op-node, rewinding the op-geth head to before the hardfork and starting -op-node again. - -To rewind the head you can use: - -``` -cast rpc -r debug_setHead 49908270 -``` - -## Mainnet - -### My node is having trouble keeping up to date with the chain head / having trouble connecting to and finding peers - -A couple of issues could be causing this. - -* If you are running multiple instances of op-node, make sure to check that they each have a unique and persisted private key at `--p2p.priv.path` -* Ensure that your node is accessible to other nodes, check the __Configure P2P for external network access__ section under [Running a full node](/cel2/operators/run-node.md#running-a-full-node) - -### How do I run a node or upgrade an existing node? - -See the guides for [running a node](/cel2/operators/run-node.md) or the guide on [how to migrate an L1 node](/cel2/operators/migrate-node.md). - -### Do I need to run my own EigenDA proxy? - -Yes. This is part of [running a node](/cel2/operators/run-node.md). -If you're using the [Docker Compose Setup](https://github.com/celo-org/celo-l2-node-docker-compose), it's included. - -### What happened to funds on Celo L1 after the migration to L2? - -All balances have been carried over to the L2, unchanged. - -### How do ERC-20 tokens and the native CELO token work after the migration to L2? - -There is no change and it continues to work in the same way as before. - -### Is Celo able to support Solidity versions above 0.8.19? - -Yes, same as with Ethereum. - -### What data model changes happened in the RPC specs (esp. which gas tokens) between Celo L1 and L2? - -Have a look at the [changes from L1 to L2 in the specs](https://specs.celo.org/l2_migration.html#changes-for-json-rpc-users). - -### What happens to Validators? - -Validators are becoming [Community RPC providers](/cel2/operators/community-rpc-node). - -### Where can I see those [Community RPC providers](/cel2/operators/community-rpc-node)? - -There are multiple options. - -* Install [Celo CLI](/cli/index.md) at version 6.1.0 or later. Then run: `celocli network:community-rpc-nodes`. -* [Vido Node Explorer](https://dev.vido.atalma.io/celo/rpc) -* [Celo Community RPC Gateway](https://celo-community.org/) - -### What happened to governance, since the migration from Celo L1 to L2? - -[Governance](/what-is-celo/using-celo/protocol/governance/overview) remains a pillar of the Celo blockchain. The Validator Hotfix process has been adapted, see [Updated Governance Hotfix](https://specs.celo.org/l2_migration.html#updated-governance-hotfix) for the changes. - -### What happened to these features? - -* CELO token duality? Supported, see [Token Duality](https://specs.celo.org/token_duality.html). -* Fee currencies? Supported, see [Fee Abstraction](https://specs.celo.org/fee_abstraction.html). -* Epoch rewards? Epochs now work differently, but rewards stay, see [Epochs and Rewards](https://specs.celo.org/smart_contract_updates_from_l1.html#epochs-and-rewards). - -### How is the Celo L2 different to Optimism? - -See [What's Changed Optimism -> Celo L2](./whats-changed/op-l2). -Also see [Celo L2 Specification](https://specs.celo.org/root.html) for greater detail. - -### What are the costs for L1 data and how are they paid? - -See [What's changed section covering L1 fees](/cel2/whats-changed/op-l2#l1-fees). - -### What's the block time? - -The block period is 1 second. - -### What's the throughput? - -The gas limit per block is 30 million, so the maximum throughput is 30M gas/s. - -### Is there anything that used to work on Celo L1 that doesn’t anymore on L2? - -See [What's Changed Celo L1 -> L2](/cel2/whats-changed/l1-l2.md) and [L1 -> L2 Migration Changes](https://specs.celo.org/l2_migration.html) in the spec for greater detail. - -## Testnets - -### What’s the difference between Dango and Alfajores? - -Dango was a short-lived testnet forked from Alfajores at block [24940100](https://celo-alfajores.blockscout.com/block/0xc0e521a7b7326064ec12f51449de16d3218de161335daaa4ae8bbed1790b4a6c) to test the migration to L2. It was shut down in October 2024. - -Alfajores is a long running Celo network testnet that was [launched in July 2019](https://blog.celo.org/introducing-alfajores-1b162ebcb44d) and upgraded to L2 in September 2024. - -See the [Alfajores network info here](/network#celo-alfajores-testnet). diff --git a/docs/cel2/guides/bridging-celo-from-l1-to-l2.mdx b/docs/cel2/guides/bridging-celo-from-l1-to-l2.mdx deleted file mode 100644 index 134766a691..0000000000 --- a/docs/cel2/guides/bridging-celo-from-l1-to-l2.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: Bridging CELO from L1 to L2 ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - -In this guide, you'll learn how to programmatically bridge CELO from Sepolia to Celo Sepolia using the [viem OP Stack](https://viem.sh/op-stack). - -## Steps to Bridge CELO - -Before transferring tokens, you must authorize the `OptimismPortalProxy` contract to spend CELO on your behalf. Without this approval, the bridging transaction cannot proceed. - -Call the [`depositERC20Transaction`](https://viem.sh/op-stack/actions/depositTransaction#deposittransaction) function on the `OptimismPortalProxy` contract on Sepolia. This function moves CELO tokens from your account to the Celo Sepolia. - -## Code Example -The following example demonstrates how to configure a file with all the details you need for interacting with the Celo Sepolia. - - - - - - ```js - import { createWalletClient, createPublicClient, http, parseEther } from "viem"; - import { privateKeyToAccount } from "viem/accounts"; - import { celoSepolia, sepolia } from "viem/chains"; - import { getL2TransactionHashes, publicActionsL2 } from "viem/op-stack"; - - const CELOL1 = "0xDEd08f6Ec0A57cE6Be62d1876d2CE92AF37eddA0"; - - // https://docs.celo.org/cel2/contract-addresses - const OptimismPortalProxy = "0xB29597c6866c6C2870348f1035335B75eEf79d07"; - - const account = privateKeyToAccount( - "...", - ); - - export const walletClientL1 = createWalletClient({ - account, - chain: sepolia, - transport: http(), - }); - - export const publicClientL1 = createPublicClient({ - account, - chain: sepolia, - transport: http(), - }); - - export const publicClientL2 = createPublicClient({ - chain: celoSepolia, - transport: http(), - }).extend(publicActionsL2()); - - async function main() { - // Approve OptimismPortal to pull CELO on Sepolia - const approve = await walletClientL1.writeContract({ - address: CELOL1, - abi: [ - { - inputs: [ - { name: "spender", type: "address" }, - { name: "amount", type: "uint256" }, - ], - name: "approve", - type: "function", - }, - ], - functionName: "approve", - args: [OptimismPortalProxy, parseEther("0.0001")], - }); - - console.log(`Approval TX Hash: ${approve}`); - - let approveReceipt = await publicClientL1.waitForTransactionReceipt({ - hash: approve, - }); - console.log(`Approve Transaction Receipt: ${approveReceipt}`); - - // Call depositERC20Transaction on OptimismPortal - const deposit = await walletClientL1.writeContract({ - address: OptimismPortalProxy, - abi: [ - { - inputs: [ - { - name: "_to", - type: "address", - }, - { - name: "mint", - type: "uint256", - }, - { - name: "_value", - type: "uint256", - }, - { - name: "_gasLimit", - type: "uint64", - }, - { - name: "_isCreation", - type: "bool", - }, - { - name: "_data", - type: "bytes", - }, - ], - name: "depositERC20Transaction", - type: "function", - }, - ], - functionName: "depositERC20Transaction", - args: [ - account.address, // Account where you want to receive CELO on L2 - parseEther("0.0001"), // Amount you are transferring to the Portal - parseEther("0.0001"), // Amount you want on L2 - 100_000, // Amount of L2 gas to purchase by burning gas on L1. - false, // Whether the transaction is a contract creation - "", // Data to trigger the recipient with - ], - }); - - console.log(`Deposit Transaction: ${deposit}`); - - - let depositReceipt = await publicClientL1.waitForTransactionReceipt({ - hash: deposit, - }); - console.log(`Deposit Transaction Receipt: ${depositReceipt}`); - - // Get the L2 transaction hash from the L1 transaction receipt. - const [l2Hash] = getL2TransactionHashes(depositReceipt); - - // Wait for the L2 transaction to be processed. - const l2Receipt = await publicClientL2.waitForTransactionReceipt({ - hash: l2Hash, - }); - - console.log(`L2Receipt: ${l2Receipt}`); - } - - main(); - ``` - - diff --git a/docs/cel2/guides/withdrawing-celo-from-l2-to-l1.mdx b/docs/cel2/guides/withdrawing-celo-from-l2-to-l1.mdx deleted file mode 100644 index 4acb3ec91b..0000000000 --- a/docs/cel2/guides/withdrawing-celo-from-l2-to-l1.mdx +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Withdrawing CELO from L2 to L1 ---- - -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - -In this tutorial, you will learn how to programmatically withdraw CELO from Celo Sepolia to Sepolia using the [viem OP Stack](https://viem.sh/op-stack). - -## Steps to Withdraw CELO - -Withdrawals require the user to submit three transactions: - -1. [Withdrawal initiating a transaction](https://viem.sh/op-stack/actions/initiateWithdrawal), which the user submits on L2. -2. [Withdrawal proving transaction](https://viem.sh/op-stack/actions/proveWithdrawal), which the user submits on L1 to prove that the withdrawal is legitimate. -3. [Withdrawal finalizing transaction](https://viem.sh/op-stack/actions/finalizeWithdrawal), which the user submits on L1 after the fault challenge period has passed, to actually run the transaction on L1. - -## Code Example - -The following example demonstrates how to configure a file with all the details you need for interacting with the Celo Sepolia. - - - - - ```js - import { - createPublicClient, - createWalletClient, - http, - parseEther, - } from "viem"; - import { privateKeyToAccount } from "viem/accounts"; - import { celoSepolia, sepolia } from "viem/chains"; - import { - publicActionsL1, - walletActionsL2, - walletActionsL1, - publicActionsL2, - } from "viem/op-stack"; - - const account = privateKeyToAccount( - "[PRIVATE_KEY]", - ); - - const value = parseEther("0.0001"); // Amount to Withdraw - - export const publicClientL1 = createPublicClient({ - chain: sepolia, - transport: http(), - }).extend(publicActionsL1()); - - export const publicClientL2 = createPublicClient({ - chain: celoSepolia, - transport: http(), - }).extend(publicActionsL2()); - - export const walletClientL1 = createWalletClient({ - chain: sepolia, - transport: http(), - account, - }).extend(walletActionsL1()); - - export const walletClientL2 = createWalletClient({ - chain: celoSepolia, - transport: http(), - account, - }).extend(walletActionsL2()); - - export default async function main() { - console.log("Building Initiate Withdrawal..."); - const args = await publicClientL1.buildInitiateWithdrawal({ - account, - to: account.address, // Receive on the same address on L1. - value, - }); - - console.log("Initiaiting Withdrawal..."); - const hash = await walletClientL2.initiateWithdrawal(args); - - const initiateWithdrawalReceipt = await publicClientL2.waitForTransactionReceipt({ - hash - }); - console.log(`Withdrawal Initiated: ${initiateWithdrawalReceipt}`); - - /** - * The below step can take upto 2 hours! - * - * Hence, you may want to use viem's `getTimeToProve`. - * - * https://viem.sh/op-stack/actions/getTimeToProve - * - * Store the wait time in a database - * and let the user know to come back later. - * - * */ - console.log("Waiting to prove..."); - const { output, withdrawal } = await publicClientL1.waitToProve({ - receipt: initiateWithdrawalReceipt, - targetChain: walletClientL2.chain, - }); - - console.log("Building Prove Withdrawal..."); - const proveArgs = await publicClientL2.buildProveWithdrawal({ - output, - withdrawal, - }); - - console.log("Proving Withdrawal..."); - const proveHash = await walletClientL1.proveWithdrawal(proveArgs); - - const proveReceipt = await publicClientL1.waitForTransactionReceipt({ - hash: proveHash, - }); - console.log(`Withdrawal Proved: ${proveReceipt}`); - - /** - * The below step can take a few minutes, ideally 2 minutes. - * - * Hence, you may want to use viem's `getTimeToFinalize`. - * - * https://viem.sh/op-stack/actions/getTimeToFinalize - * - * Store the wait time in a database - * and let the user know to come back later. - * - * - */ - console.log("Waiting To Finalize..."); - await publicClientL1.waitToFinalize({ - targetChain: walletClientL2.chain, - withdrawalHash: withdrawal.withdrawalHash, - }); - - console.log("Finalizing Withdrawal..."); - const finalizeWithdrawalHash = await walletClientL1.finalizeWithdrawal({ - targetChain: walletClientL2.chain, - withdrawal, - }); - - const finalizeWithdrawalReceipt = await publicClientL1.waitForTransactionReceipt({ - hash: finalizeWithdrawalHash, - }); - console.log(`Withdrawal Finalized: ${finalizeWithdrawalReceipt}`) - } - - - ``` - - - diff --git a/docs/cel2/index.md b/docs/cel2/index.md deleted file mode 100644 index 85e7e7a809..0000000000 --- a/docs/cel2/index.md +++ /dev/null @@ -1,63 +0,0 @@ -# Overview - -## Celo L2 Mainnet - -Celo has transitioned from a standalone EVM-compatible Layer 1 blockchain to an Ethereum Layer 2. -This shift, [proposed by cLabs in July 2023](https://forum.celo.org/t/clabs-proposal-for-celo-to-transition-to-an-ethereum-l2/6109), aims to maintain the seamless user experience that Celo is known for—characterized by speed, low costs, and ease of use—while leveraging Ethereum’s security and ecosystem. - -## What does this mean for our ecosystem? - -Celo's evolution from an L1 EVM-compatible chain to an L2 solution marks a significant milestone in our ongoing relationship with the Ethereum ecosystem. As an L1 chain, Celo has always maintained close ties with Ethereum, sharing its commitment to decentralization, security, and innovation. By transitioning to an L2, Celo strengthens this bond, allowing our developers and protocols to immerse themselves even deeper into the vibrant, collaborative Ethereum community. This integration enhances opportunities for open-source contributions, joint initiatives, and the development of public goods, ensuring that Celo's impact resonates widely across the blockchain space. - -### Technical Changes - -The table below summarizes the technical changes involved in transitioning from Celo's Layer 1 to Layer 2: - -| **Aspect** | **Layer 1** | **Layer 2** | -|----------------------|---------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------| -| **Architecture** | Single service, providing execution, consensus, and data availability. | Multiple services built on the op-stack with separate execution, data availability, and settlement layers. | -| **Bridging** | Third-party bridges connecting to various chains. | Additional native bridge with Ethereum alongside existing third-party bridges. | -| **CELO Token** | Lived on the Celo L1. | Lives on Ethereum; CELO on L2 represents CELO bridged from Ethereum. | -| **Blocks** | 5s long, 50M gas. | 1s long, 30M gas. | -| **Extra Fields** | — | Withdrawals & withdrawalsRoot, blobGasUsed & excessBlobGas, parentBeaconBlockRoot. | -| **Removed Fields** | — | Randomness, epochSnarkData. | -| **Validator Duties**| Operated the consensus protocol. | Validators will temporarily operate community RPC nodes. | -| **Validator Rewards**| Distributed at epoch blocks. | Distributed periodically via smart contract execution. | -| **Sequencing** | Determined by the output of consensus, run by validators. | Initially handled by a centralized sequencer with plans for decentralized sequencing later. | -| **Precompiles** | — | All Celo precompiles removed except for the transfer precompile which supports token duality. | -| **EIP1559** | Governable implementation on-chain. | Upgraded implementation with modified parameters across networks. | -| **Hardforks** | — | Cel2 hardfork for transition to L2 alongside other op-stack hardforks. | -| **Transactions** | — | Deprecated transactions include Type 0 with feeCurrency field and Type 124. | -| **Finality** | One block finality, instantaneous once block is produced. | Finality depends on trust in sequencer, batcher, proposer, and eigenDA, or ultimately on Ethereum. | - -For more detailed technical changes, see [Celo's L2 Migration Documentation](https://specs.celo.org/l2_migration.html). - -## Important Dates - -### Early July, 2024: Dango L2 Testnet Launch - -The Dango Testnet announced on the 7th of July 2024, Celo’s first L2 public test network, went live. Dango allowed developers and infrastructure providers to familiarize themselves with the L2 environment. It was shut down on the 9th of October 2024. - -### 26th September, 2024: Alfajores L2 Testnet Launch - -The Celo L2 testnet, Alfajores, went live! This provides a testing environment for node operators and developers to ensure compatibility before the Mainnet launch. - -### October 2024: Code Freeze and Audits - -The core dev team froze all feature development by mid-October and underwent a thorough external audit. The result is available at https://celo.org/audits. - -### 20th February, 2025: Baklava L2 Testnet Launch - -Using the final audited release, the Celo validator community performed a dry run of the L2 upgrade on the Baklava network. - -### 26th March, 2025: Celo L2 Mainnet Launch - -Following a successful Baklava upgrade, the Celo L2 Mainnet officially went live. - -## Useful Links - -* [Layer 2 Specification](https://specs.celo.org/root.html) -* [Node Operator Guide](./operators/overview.md) -* [What's Changed?](./whats-changed/overview.md) -* [Cel2 Code](https://github.com/celo-org/optimism) -* [FAQ](/cel2/faq) diff --git a/docs/cel2/notices/celo-sepolia-launch.md b/docs/cel2/notices/celo-sepolia-launch.md deleted file mode 100644 index 25173f52a2..0000000000 --- a/docs/cel2/notices/celo-sepolia-launch.md +++ /dev/null @@ -1,86 +0,0 @@ -# Celo Sepolia Testnet Launch - -Celo Sepolia is a new developer testnet that will replace Alfajores when Holesky sunsets in September 2025. The Baklava testnet will also sunset with Holesky, with no replacement planned. - -:::info Key Information -This page will be kept updated with key information about the transition. - -- **Chain ID**: 11142220 -- **Status**: testnet live -- **Built on**: Ethereum Sepolia L1 -- **Phases**: - - Jul 23, 2025: Celo Sepolia launch ✅ - - Jul 24, 2025—Jul 31, 2025: Internal testing ✅ - - Aug 1, 2025—Aug 12, 2025: Early access phase ✅ - - Aug 13, 2025: Public announcement ✅ - - **Aug 14, 2025—Sep 14, 2025: Transition period :round_pushpin:** - - Sep 30, 2025: Planned Alfajores and Baklava sunset, aligned with Holesky deprecation - -**Node Providers**: Please support both Alfajores and Celo Sepolia during the transition period. - -**Developers**: Verify that your dependencies support Celo Sepolia, then go ahead and deploy all contracts. -::: - -## What is Celo Sepolia? - -Celo Sepolia is the new developer testnet for Celo running as an Ethereum Layer 2 on Sepolia. It starts with a clean slate (no inherited state from Alfajores) and is designed for long-term use following Ethereum Sepolia's testnet lifecycle. - -## Call to Action - -### For Node Providers - -Please support both Alfajores and Celo Sepolia in parallel during the early access and transition phases to ensure a smooth migration for developers. See the [node setup guide](/cel2/operators/run-node) for technical details and our recommended [Docker Compose Setup](https://github.com/celo-org/celo-l2-node-docker-compose). - -Release versions: - -- `op-geth` at [v2.1.2](https://github.com/celo-org/op-geth/releases/tag/celo-v2.1.2) -- `op-node` at [v2.1.0](https://github.com/celo-org/optimism/releases/tag/celo-v2.1.0) -- `eigenda-proxy` at [v1.8.2](https://github.com/layr-labs/eigenda/pkgs/container/eigenda-proxy/437919973?tag=v1.8.2) - -### For Developers - -- Update applications to support chain ID 11142220. -- Redeploy contracts on Celo Sepolia. -- Get testnet CELO tokens from the faucets. - -Since Celo Sepolia starts with a clean slate, there is no historical data or contracts carried over from Alfajores, providing a pristine testing environment. - -## Key Characteristics and Resources - -- Chain ID: 11142220 -- L1 Foundation: Ethereum Sepolia -- EigenDA: v2 (Blazar) -- Contracts: [see the L1 and L2 contracts in the specification](https://specs.celo.org/core_contracts.html?#celo-sepolia-testnet) -- RPC endpoint: [Celo Sepolia Forno](https://forno.celo-sepolia.celo-testnet.org) -- Block explorer: [Blockscout](https://celo-sepolia.blockscout.com) -- Faucets: - - [Google Cloud Web3 Faucet](https://cloud.google.com/application/web3/faucet/celo/sepolia) - - [Celo Sepolia Token Faucet](https://faucet.celo.org/celo-sepolia) -- Bridge: [Superbridge for Celo Sepolia](https://testnets.superbridge.app/?fromChainId=11155111&toChainId=11142220) - -## Key Differences from Alfajores - -| Aspect | Alfajores | Celo Sepolia | -|--------|-----------|--------------| -| L1 Foundation | Ethereum Holesky | Ethereum Sepolia | -| Chain ID | 44787 | 11142220 | -| State | Historical from L1 migration | Fresh start | -| Longevity | Sunset planned Sept 2025 | Long-term testnet | - -## Early Adopters - -Thank you to the first wave of our ecosystem partners supporting Celo Sepolia already: - -- **Google Cloud** – [Google Cloud Web3 Faucet](https://cloud.google.com/application/web3/faucet/celo/sepolia) -- **Blockscout** – [Block Explorer](https://celo-sepolia.blockscout.com/) -- **EigenDA v2** – Data Availability -- **Superbridge** – Bridging Infrastructure -- **Ankr** – Node & RPC Provider -- **AllThatNode by DSRV** – Node & RPC Provider -- **Redstone** – Oracle Services -- **Talent Protocol** – Web3 Professional Network -- **Prosperity Pass** – Celo PG Onchain Access Pass - -## Getting Help - -Please reach out to our team on [Discord](https://chat.celo.org) in the [#celo-L2-support](https://discord.com/channels/600834479145353243/1286649605798367252) channel if you have any questions. diff --git a/docs/cel2/notices/eigenda-v2-upgrade.md b/docs/cel2/notices/eigenda-v2-upgrade.md deleted file mode 100644 index fed044efbf..0000000000 --- a/docs/cel2/notices/eigenda-v2-upgrade.md +++ /dev/null @@ -1,71 +0,0 @@ -# Ice Cream Hardfork 🍦 - -This page outlines changes related to the EigenDA v2 upgrade for node operators. - -:::info - -This page will be kept updated with key information about the upgrade. As this upgrade is activated on the sequencer, no detailed activation times can be given. - -- Baklava testnet activation was executed on Wed, Jul 30, 2025. -- Alfajores testnet activation was executed on Wed, Aug 20, 2025. -- **Mainnet** activation is planned for Wed, Sep 10, 2025. - -::: - -## What is the Ice Cream Hardfork? - -As part of [Celo’s continued growth as an Ethereum L2](https://forum.celo.org/t/celo-as-an-ethereum-l2-a-frontier-chain-for-global-impact/11376), Celo is integrating [EigenDA v2](https://docs.eigencloud.xyz/products/eigenda/releases/blazar), also known as [Blazar](https://docs.eigencloud.xyz/products/eigenda/releases/blazar), to further innovate and strengthen the network’s data availability layer. - -Blazar represents a major architectural upgrade to the EigenDA protocol, introducing improved system throughput and stability, alongside new capabilities like permissionless DA payments and enhanced resource throttling. - -Most notably for Celo: - -- End-to-end confirmation latency is significantly reduced, moving from minutes to near real-time. Blazar’s design enables rollups to reference blocks in their own logic without waiting for L1 confirmations. -- System throughput and network stability are greatly improved through more efficient chunk distribution, optimized request routing, and horizontal scalability of DA nodes. -Support for decentralized dispersal is unlocked by eliminating DDoS attack surfaces inherent in the original push-based mode. - -## For Node Operators - -Node operators need to upgrade the [EigenDA proxy](https://github.com/Layr-Labs/eigenda/tree/master/api/proxy) to version [v1.8.2](https://github.com/Layr-Labs/eigenda/pkgs/container/eigenda-proxy/437919973?tag=v1.8.2) before the activation date. The version is backwards compatible with EigenDA v1 and can be updated beforehand. - -The new proxy version will require to *add* the following new flags for each network (remember to fill the `eigenda.v2.eth-rpc` and `eigenda.v2.signer-payment-key-hex` from your own set up) - -### Mainnet -``` - --storage.backends-to-enable="V1,V2" \ - --eigenda.v2.disperser-rpc=disperser.eigenda.xyz:443 \ - --eigenda.v2.eth-rpc= \ - --eigenda.v2.signer-payment-key-hex= \ - --eigenda.v2.max-blob-length="16MiB" \ - --eigenda.v2.cert-verifier-addr="0xE1Ae45810A738F13e70Ac8966354d7D0feCF7BD6" \ - --eigenda.v2.service-manager-addr="0x870679e138bcdf293b7ff14dd44b70fc97e12fc0" \ - --eigenda.v2.bls-operator-state-retriever-addr="0xEC35aa6521d23479318104E10B4aA216DBBE63Ce" \ -``` - -### Alfajores and Baklava -``` - --storage.backends-to-enable="V1,V2" \ - --eigenda.v2.disperser-rpc=disperser-holesky.eigenda.xyz:443 \ - --eigenda.v2.eth-rpc= \ - --eigenda.v2.signer-payment-key-hex= \ - --eigenda.v2.max-blob-length="16MiB" \ - --eigenda.v2.cert-verifier-addr="0xFe52fE1940858DCb6e12153E2104aD0fDFbE1162" \ - --eigenda.v2.service-manager-addr="0xD4A7E1Bd8015057293f0D0A557088c286942e84b" \ - --eigenda.v2.bls-operator-state-retriever-addr="0xB4baAfee917fb4449f5ec64804217bccE9f46C67" \ -``` - -### Celo Sepolia -``` - --storage.backends-to-enable="V1,V2" \ - --eigenda.v2.disperser-rpc=disperser-testnet-sepolia.eigenda.xyz:443 \ - --eigenda.v2.eth-rpc= \ - --eigenda.v2.signer-payment-key-hex= \ - --eigenda.v2.max-blob-length="16MiB" \ - --eigenda.v2.cert-verifier-addr="0x73818fed0743085c4557a736a7630447fb57c662" \ - --eigenda.v2.service-manager-addr="0x3a5acf46ba6890B8536420F4900AC9BC45Df4764" \ - --eigenda.v2.bls-operator-state-retriever-addr="0x22478d082E9edaDc2baE8443E4aC9473F6E047Ff" \ -``` - -:::tip Docker Compose -The required configuration for each service can be found in our [Docker Compose Setup](https://github.com/celo-org/celo-l2-node-docker-compose), where every network has a corresponding `.env` file. -::: diff --git a/docs/cel2/notices/isthmus-upgrade.md b/docs/cel2/notices/isthmus-upgrade.md deleted file mode 100644 index 5935953f2a..0000000000 --- a/docs/cel2/notices/isthmus-upgrade.md +++ /dev/null @@ -1,65 +0,0 @@ -# L2 Isthmus Hardfork - -This page outlines breaking changes related to the Isthmus network upgrade for node operators. - -:::info - -This page will be kept updated with key information about the hardfork. - -- Baklava testnet activation was executed at timestamp `1749654000` ([block 37881140](https://celo-baklava.blockscout.com/block/0xec4a86ed28d74090b71cb59c34e4b31b8a49ef00b09880d67034dc56237e4b1d)) on Wed, Jun 11, 2025, 15:00:00 UTC. -- Alfajores testnet activation was executed at timestamp `1750863600` ([block 49908280](https://celo-alfajores.blockscout.com/block/0x643b5ce0b59b83ffd8a9b9cfc13a91eeb1228094e0dbb3e1927ec2afc28dfbcb)) on Wed, Jun 25, 2025, 15:00:00 UTC. -- **Mainnet** activation was executed at timestamp **`1752073200`** ([block 40172442](https://celo.blockscout.com/block/0xdef57aaf634a3de07e7763db9b21d5e192e784316b8c233a2a4cd1eea6bf4f41)) on Wed, Jul 9, 2025, 15:00:00 UTC. - -::: - -:::warning -If you're encountering a stuck node after Alfajores hardfork block (49908280), see the [FAQ](../faq.md#my-alfajores-node-stalled-at-the-isthmus-hardfork-block-49908280). -::: - -## What's included in Isthmus - -Isthmus contains these main changes: - -- **Implement Prague features on the OP Stack**: This includes the EIPs that are relevant to the L2 that are being added to Ethereum with its Pectra activation. Learn more about this [here](https://gov.optimism.io/t/proposal-preview-implement-prague-features-on-the-op-stack/9703). - - Notable EIP's included: - - [EIP-7702](https://github.com/ethereum/EIPs/blob/f27ddf2b0af7e862a967ee38ceeaa7d980786ca1/EIPS/eip-7702.md): Set code transaction - - [EIP-2537](https://github.com/ethereum/EIPs/blob/f27ddf2b0af7e862a967ee38ceeaa7d980786ca1/EIPS/eip-2537.md): BLS12-381 precompiles - - [EIP-2935](https://github.com/ethereum/EIPs/blob/f27ddf2b0af7e862a967ee38ceeaa7d980786ca1/EIPS/eip-2935.md): Block hashes contract predeploy - - [EIP-7623](https://github.com/ethereum/EIPs/blob/f27ddf2b0af7e862a967ee38ceeaa7d980786ca1/EIPS/eip-7623.md): Increase calldata cost - -- **L2 Withdrawals Root in Block Header**: This lowers the lift for chain operators by allowing them to run a full node to operate op-dispute-mon, making it easier to guarantee the security of the fault proofs for the chains in the Superchain as the number of chains scales. Learn more about this [here](https://gov.optimism.io/t/proposal-preview-l2-withdrawals-root-in-block-header/9730). - -For more information on the Isthmus implementation details, please review [OP's Isthmus specification](https://specs.optimism.io/protocol/isthmus/overview.html). - -Isthmus additionally enables the [Holocene hardfork](https://docs.optimism.io/notices/holocene-changes) with the following changes: - -- **Holocene block derivation**: A set of changes that render the derivation pipeline stricter and simpler, improving worst-case scenarios for the Fault Proof System and Interoperability. -- **EIP-1559 configurability**: The elasticity and denominator EIP-1559 parameters become configurable via the SystemConfig L1 contract, allowing the gas target and gas limit to be configured independently. - -For more information on the Holocene details, please review [OP's Holocene specification](https://specs.optimism.io/protocol/holocene/overview.html). - -## For node operators - -Node operators will need to upgrade to the respective Isthmus releases before the activation dates. - -### Update to the latest release - -The release contains the activation timestamps for Celo Mainnet, Baklava and Alfajores. - -- `op-geth` at [v2.1.0](https://github.com/celo-org/op-geth/releases/tag/celo-v2.1.0) -- `op-node` at [v2.1.0](https://github.com/celo-org/optimism/releases/tag/celo-v2.1.0) - -#### Updating the EigenDA proxy - -The Isthmus hardfork also prepares the Celo networks for the EigenDA v2 update. - -This means that operators need to make sure to upgrade the [EigenDA proxy](https://github.com/Layr-Labs/eigenda/tree/master/api/proxy) to version [v1.8.2](https://github.com/Layr-Labs/eigenda/pkgs/container/eigenda-proxy/437919973?tag=v1.8.2). - -### Verify Your Configuration - -Make the following checks to verify that your node is properly configured. - -- op-node and op-geth will log their configurations at startup -- Check that the Isthmus time is set to `activation-timestamp` in the `op-node` startup logs -- Check that the Isthmus time is set to `activation-timestamp` in the `op-geth` startup logs diff --git a/docs/cel2/notices/l2-migration.md b/docs/cel2/notices/l2-migration.md deleted file mode 100644 index 74bab373f7..0000000000 --- a/docs/cel2/notices/l2-migration.md +++ /dev/null @@ -1,13 +0,0 @@ -# Celo L2 Migration - -:::info - -* Mainnet has been migrated on block **31056500**, March 26, 2025, 3:00 AM UTC. -* The Baklava testnet has been migrated on block **28308600**, February 20, 2025. -* The Alfajores testnet has been migrated on block **26384000**, September 26, 2024. - -::: - -The instructions for migrating a Celo node from Layer 1 to Layer 2 are outlined [in this guide](/cel2/operators/migrate-node). This process is necessary to transition your Celo L1 node to the new Celo L2 architecture based on the OP-Stack. - -If you wish to run a Celo L2 node from scratch, you can follow the instructions in the [Running a Celo Node](/cel2/operators/run-node) guide. diff --git a/docs/cel2/operators/architecture.md b/docs/cel2/operators/architecture.md deleted file mode 100644 index de07f0ea18..0000000000 --- a/docs/cel2/operators/architecture.md +++ /dev/null @@ -1,16 +0,0 @@ -# Node architecture - -This page reviews node architecture for all nodes running on the Celo network. All L2 Celo nodes are composed of two core software services, the Rollup Node and the Execution Client. Celo also optionally supports a third component, Legacy L1 Celo, that can serve stateful queries for blocks and transactions created before the L2 Upgrade. - -## Rollup node - -The Rollup Node is responsible for deriving L2 block payloads from L1 data and passing those payloads to the Execution Client. The Rollup Node can also optionally participate in a peer-to-peer network to receive blocks directly from the Sequencer before those blocks are submitted to L1. The Rollup Node is largely analogous to a [consensus client](https://ethereum.org/en/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) in Ethereum. - -## Execution client - -The Execution Client is responsible for executing the block payloads it receives from the Rollup Node over JSON-RPC via the standard [Ethereum Engine API](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md#engine-api----common-definitions). The Execution Client exposes the standard JSON-RPC API that Ethereum developers are familiar with, and can be used to query blockchain data and submit transactions to the network. The Execution Client is largely analogous to an [execution client](https://ethereum.org/en/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) in Ethereum. - -## Next steps - -- To get your node up and running, start with the [operator guide](run-node.md). -- If you've already got a Celo node up and running, check out [how to migrate it to a L2 node](migrate-node.md). diff --git a/docs/cel2/operators/community-rpc-node.md b/docs/cel2/operators/community-rpc-node.md deleted file mode 100644 index 0006e646af..0000000000 --- a/docs/cel2/operators/community-rpc-node.md +++ /dev/null @@ -1,55 +0,0 @@ -# Operating a Community RPC Node - -This guide covers how to operate a community RPC node on Celo. - ---- - -:::info **Terminology** -The term "validator" appears in code and documentation due to historical reasons, but refers to community RPC providers. -::: - -To be eligible for rewards, registered and elected nodes must operate independent RPC endpoints. This guide assumes your node has been properly [registered](/cel2/operators/registering-as-rpc-node). - -## Running the RPC Service - -To operate the required RPC endpoint, follow the [Running a node guide](run-node.md). - -## Rewards - -### Claiming Rewards - -Validator rewards for RPC nodes must be claimed, which is possible anytime after allocation. Use this CLI command: - -```bash -celocli epochs:send-validator-payment --from $YOUR_ADDRESS --for $VALIDATOR_ADDRESS -``` - -Where: - -- `$YOUR_ADDRESS` is your Celo account address sending the transaction -- `$VALIDATOR_ADDRESS` is your validator's Celo account address - -Note: anyone can run this command, but rewards distribute according to your validator group's commission rate. - -### Verifying Rewards - -Confirm successful reward distribution by checking for `ValidatorEpochPaymentDistributed` events on a block explorer like [CeloScan](https://celoscan.io/address/0xf424b5e85b290b66ac20f8a9eab75e25a526725e). - -### Tracking Rewards - -For accounting purposes, you can: - -- Query Celo nodes for `ValidatorEpochPaymentDistributed` events. -- Query the [EpochManager contract](/contracts/core-contracts) for `validatorPendingPayments` to view total allocated payments. - -### Group Commission Settings - -Validator rewards distribution is affected by the validator group's commission rate. A commission rate of `1` means the entire reward goes to the validator group. Ensure you understand your group's commission settings to correctly anticipate reward allocations. - -Check commission settings with: - -```bash -celocli validatorgroup:show $CELO_GROUP_ADDRESS -``` - -Update commission settings with the [celocli validatorgroup:commission](/cli/validatorgroup) command. diff --git a/docs/cel2/operators/how-it-works.md b/docs/cel2/operators/how-it-works.md deleted file mode 100644 index 508139e73e..0000000000 --- a/docs/cel2/operators/how-it-works.md +++ /dev/null @@ -1,43 +0,0 @@ -# How it works - -## Context - -Following Celo's migration to L2, validators have evolved to serve as RPC node providers for the community. The initial active RPC providers were established in Celo L2's genesis block. Subsequently, elections occur at each epoch's conclusion (approximately every 24 hours) to potentially add or remove nodes from the active set. - -This system is based on the [proposal for validator engagement during the transition to L2](https://forum.celo.org/t/proposal-validator-engagement-during-the-transition-to-celo-l2/9700) and [Set The Great Celo Halvening Parameters](https://forum.celo.org/t/set-the-great-celo-halvening-parameters/10455/3). For additional details, see [Epoch Rewards](/what-is-celo/using-celo/protocol/epoch-rewards) and the related [forum discussion: The Great Celo Halvening – Proposed Tokenomics in the Era of Celo L2](https://forum.celo.org/t/the-great-celo-halvening-proposed-tokenomics-in-the-era-of-celo-l2/9701). For updates make sure to refer to the [Celo Forum](https://forum.celo.org). - -:::info **Terminology** -The term "validator" is used in the code and corresponding explanation due to historical reasons, but refers to the community RPC providers. -::: - -## RPC Elections - -In Celo's RPC elections (formerly [validator elections](/what-is-celo/about-celo-l1/protocol/pos/validator-elections)), holders of the native asset CELO participate in the process to support network operations and earn rewards for voting. - -The election process follows these steps: - -1. **Lock CELO tokens**: Holders must first move their CELO balances into the [Locked Celo](/what-is-celo/about-celo-l1/protocol/pos/locked-gold) (formerly "Celo Gold") smart contract before participating in elections. - -2. **Vote for Groups**: Rather than voting directly for individual node providers, accounts cast their votes for validator groups that manage collections of nodes. - -3. **Earn rewards**: Participants receive rewards for their involvement, and validators and groups can also vote and earn rewards using their own stake. - -The same Locked CELO can simultaneously be used for multiple purposes: voting in RPC node elections, maintaining Community RPC stakes, and participating in on-chain [Governance](/what-is-celo/using-celo/protocol/governance/overview/) proposals. - -:::tip No voter slashing -Unlike in other proof-of-stake systems, holding Locked Gold or voting for a group does not put that amount 'at risk' from slashing due to the behavior of node providers. Only the stake put up by a node provider or group may be slashed. -::: - -## Implementation - -Elections are handled my smart contracts, and as such can be changed through Celo's on-chain [Governance](/what-is-celo/using-celo/protocol/governance/overview/) process. - -- [`Accounts.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/common/Accounts.sol) manages key delegation and metadata for all accounts including Validators, Groups and Locked Gold holders. - -- [`LockedGold.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/LockedGold.sol) manages the lifecycle of Locked Gold. - -- [`Validators.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/Validators.sol) handles registration, deregistration, staking, key management and epoch rewards for validators and validator groups, as well as routines to manage the members of groups. - -- [`Election.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/governance/Election.sol) manages Locked Gold voting and epoch rewards and runs Validator Elections. - -- [`EpochManager.sol`](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts-0.8/common/EpochManager.sol) handles the epoch processing logic, including starting and finishing epoch transitions, reward calculations, and validator elections through permissionless functions. diff --git a/docs/cel2/operators/migrate-node.md b/docs/cel2/operators/migrate-node.md deleted file mode 100644 index adf073e6c8..0000000000 --- a/docs/cel2/operators/migrate-node.md +++ /dev/null @@ -1,270 +0,0 @@ -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -# Migrating a Celo L1 Node - -:::tip -Unless you need to migrate your own Celo L1 data, we recommend using a snapshot instead. -You can find the latest snapshot in the [Network Config & Assets](/cel2/operators/run-node.md#network-config--assets) section. -::: - -This guide helps Celo L1 node operators migrate their nodes to Celo L2. It describes how to use the [migration tool](https://github.com/celo-org/optimism/tree/celo-rebase-12/op-chain-ops/cmd/celo-migrate) to transform pre-migration database snapshots into a format that Celo L2 nodes can use for a `full` sync. - -**Alternative options:** - -- **Fresh L2 node**: Skip to the [node operator guide](/cel2/operators/run-node.md) for `snap` sync from scratch -- **Pre-migrated data**: Download migrated datadirs from [Network Config & Assets](/cel2/operators/run-node.md#network-config--assets) - -:::note Terminology -The terms L1 and pre-hardfork are used interchangeably to reference Celo before the L2 transition. L1 does not refer to Ethereum in this document. -::: - -## Migration Overview - -Migrating a pre-hardfork datadir involves these high-level steps: - -1. Upgrade your L1 node to the [latest client release](run-node.md#network-config--assets) so it will stop producing blocks at the hardfork. -2. 1-2 days before the hardfork, stop your node and run a pre-migration to migrate the majority of data. This is not required, but is highly recommended for minimizing downtime. See [Preparing for the L2 migration](../notices/l2-migration.md). -3. Restart your node and wait for the hardfork. -4. Shut down your node once the hardfork block number is reached. -5. Run the migration tool to migrate your L1 datadir and produce the hardfork block. -6. Launch your L2 node with the migrated datadir. - -### Important Notes - -- The migration tool can be run multiple times as the L1 chain data grows and will continue migrating from where it last left off. -- While the pre-migration can be run multiple times and will get faster each time, you should avoid running the full migration more than once as it will be slower the second time. -- All migrations writing to a given destination datadir must use the same node's source datadir. That is, you should not run the pre-migration with a db snapshot from node A and then run the full migration with a db snapshot from node B. -- Your node must be stopped before the migration tool is run, even once it has reached the hardfork. -- You should not attempt to migrate archive node data, only full node data. - -## Preparation Steps - -### 1. Upgrade L1 Nodes - -All node operators must upgrade their L1 (`celo-blockchain`) nodes to the required version before the hardfork. This release defines migration block numbers so nodes will stop producing blocks at the right time. - -### 2. Run a Pre-Migration (Recommended) - -:::warning Archive Node Limitation -Both pre-migration and full migration require **full node data only**. If you only have archive nodes, sync a full node before the hardfork. You cannot migrate archive data, even for L2 archive nodes. See [Running an archive node](/cel2/operators/run-node.md#running-an-archive-node) for details. -::: - -You can use either Docker or build from source. -The pre-migration may take several hours to complete. - -#### Using Docker (Recommended) - -1. Stop your L1 node -2. Clone the migration repository: - - ```bash - git clone https://github.com/celo-org/celo-l2-node-docker-compose.git - cd celo-l2-node-docker-compose - ``` - -3. Run the pre-migration where `` is `alfajores`, `baklava`, or `mainnet`: - - ```bash - ./migrate pre [] - ``` - - If a destination datadir is specified, ensure that `DATADIR_PATH` inside `.env` is updated to match when you start your node. - -4. Restart your L1 node and wait for the hardfork - -#### Using Source Code - -1. Stop your L1 node -2. Build the migration tool: - - ```bash - git clone https://github.com/celo-org/optimism.git - cd optimism/op-chain-ops - make celo-migrate - ``` - -3. Run the pre-migration: - - ```bash - go run ./cmd/celo-migrate pre \ - --old-db /celo/chaindata \ - --new-db /geth/chaindata - ``` - -4. Restart your L1 node and wait for the hardfork - -### Key Information - -#### Alfajores testnet - -- Block number: `26384000` -- Date: September 26, 2024 -- Minimum `celo-blockchain` version: [v1.8.7](https://github.com/celo-org/celo-blockchain/releases/tag/v1.8.7) -- `op-geth`: [celo-v2.0.0-rc4](https://github.com/celo-org/op-geth/releases/tag/celo-v2.0.0-rc4) -- `op-node`: [celo-v2.0.0-rc4](https://github.com/celo-org/optimism/releases/tag/celo-v2.0.0-rc4) - -#### Baklava testnet - -- Block number: `28308600` -- Date: February 20, 2025 -- Minimum `celo-blockchain` version: [v1.8.8](https://github.com/celo-org/celo-blockchain/releases/tag/v1.8.8) -- `op-geth`: [celo-v2.0.0-rc4](https://github.com/celo-org/op-geth/releases/tag/celo-v2.0.0-rc4) -- `op-node`: [celo-v2.0.0-rc4](https://github.com/celo-org/optimism/releases/tag/celo-v2.0.0-rc4) - -#### Mainnet - -- Block number: `31056500` -- Date: March 26, 2025 (3:00 AM UTC) -- Minimum `celo-blockchain` version: [v1.8.9](https://github.com/celo-org/celo-blockchain/releases/tag/v1.8.9) -- `op-geth`: [celo-v2.0.0](https://github.com/celo-org/op-geth/releases/tag/celo-v2.0.0) -- `op-node`: [celo-v2.0.0](https://github.com/celo-org/optimism/releases/tag/celo-v2.0.0) - -## Full Migration Process - -When the hardfork block number is reached, complete the migration using either Docker (recommended) or source code. - -### Hardware Requirements - -- Make sure you have enough storage to accomodate 2x the pre-hardfork chaindata. Chaindata size can vary, so please double check your node. -- We recommend using local storage for the source and destination datadirs. -- 16GB+ RAM recommended - -### Run Migration with Docker - -Once the hardfork block is reached, run the full migration using the same repository: - -1. Stop your L1 node when the hardfork block number is reached - -2. If you haven't already, clone the migration repository: - - ```bash - git clone https://github.com/celo-org/celo-l2-node-docker-compose.git - cd celo-l2-node-docker-compose - ``` - -3. Run the full migration where `` is `alfajores`, `baklava`, or `mainnet`: - - ```bash - ./migrate full [] - ``` - - If a destination datadir is specified, ensure that `DATADIR_PATH` inside `.env` is updated to match when you start your node. - -### Run Migration from Source - -If you prefer not to use Docker, run the migration directly from source: - -1. Stop your L1 node when the hardfork block number is reached - -2. If you haven't already, build the migration tool: - - ```bash - git clone https://github.com/celo-org/optimism.git - cd optimism/op-chain-ops - make celo-migrate - ``` - -3. Run the full migration: - - - - ```bash - go run ./cmd/celo-migrate full \ - --deploy-config \ - --l1-deployments \ - --l1-rpc \ - --l2-allocs \ - --outfile.rollup-config \ - --outfile.genesis \ - --migration-block-number \ - --old-db /celo/chaindata \ - --new-db /geth/chaindata \ - --l1-beacon-rpc= - ``` - - Note the L1-beacon-RPC-URL must support querying historical `finality_checkpoints`. We are using https://ethereum-beacon-api.publicnode.com in [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose). - - You can check support for historical `finality_checkpoints` by retrieving some suitably old finality_checkpoints, for example slot 5000000. - - ```bash - curl https://ethereum-beacon-api.publicnode.com/eth/v1/beacon/states/5000000/finality_checkpoints | jq - ``` - - - - ```bash - go run ./cmd/celo-migrate full \ - --deploy-config \ - --l1-deployments \ - --l1-rpc \ - --l2-allocs \ - --outfile.rollup-config \ - --outfile.genesis \ - --migration-block-number \ - --old-db /celo/chaindata \ - --new-db /geth/chaindata - ``` - - - - You can find the required input artifacts in the [Network config & Assets](/cel2/operators/run-node.md#network-config--assets) section. - - We recommend using the [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) codebase as an additional reference for running the migration from source. - -The full migration process will take at least 5 minutes to complete for mainnet, assuming most data has been pre-migrated. If no pre-migration was performed, it could take several hours. - -Congrats! Your datadir is now ready to use with a Celo L2 node. See [Running a Celo Node](run-node.md) for instructions on how to start your Celo L2 node. - -## Troubleshooting - -If you encounter difficulties during the migration that are not covered below, please reach out to our team. You can also check the `celo-l2-node-docker-compose` [README](https://github.com/celo-org/celo-l2-node-docker-compose/blob/main/README.md) and the `celo-migrate` [README](https://github.com/celo-org/optimism/blob/celo-rebase-12/op-chain-ops/cmd/celo-migrate/README.md) for more information on how the migration tooling works. - -### Database Error (EOF) - -If you encounter this error during migration: - -```shell -CRIT [03-19|10:38:17.229] error in celo-migrate err="failed to run full migration: failed to get head header: failed to open database at \"/datadir/celo/chaindata\" err: failed to open leveldb: EOF" -``` - -**Solution:** Start up the celo-blockchain client with the same datadir, wait for it to fully load, then shut it down. This repairs inconsistent shutdown states. - -Alternatively, open a console and exit: - -```bash -geth console --datadir -# Wait for console to load, then exit -``` - -It seems that this issue is caused by the celo-blockchain client sometimes shutting down in an inconsistent state, which is repaired upon the next startup. - -### Missing Data / DB Continuity Check Failures - -Both the `pre` and `full` migration commands will first run a script to check whether the source db provided has any gaps in data. This check may fail with an error indicating that data is missing from your source db. - -To resolve this: - -- Try re-running the migration with a different source datadir if available. - - We will post a full pre-hardfork database snapshot in the [Network config & Assets](./run-node.md#network-config--assets) section shortly after the hardfork, but we recommend having your own backup datadir available as well. -- Ensure the datadir is fully synced to just before the hardfork block. - -To check if a db has gaps, you can simply re-run the migration command which will automatically perform the check each time. - -If needed, you can also run the `check-db` script on its own as follows. - -1. Check out and build the latest version of the script in [celo optimism monorepo](https://github.com/celo-org/optimism). - - ```bash - git clone https://github.com/celo-org/optimism - cd optimism/op-chain-ops - make celo-migrate - ``` - -2. Run the script - - ```bash - go run ./cmd/celo-migrate check-db --db-path [--fail-fast] - ``` - - This command takes in an optional `--fail-fast` flag that will make it exit at the first gap detected like it does when run via [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose). If the `--fail-fast` flag is not provided then the script will collect all the gaps it finds and print them out at the end. diff --git a/docs/cel2/operators/overview.md b/docs/cel2/operators/overview.md deleted file mode 100644 index 5adc33b27e..0000000000 --- a/docs/cel2/operators/overview.md +++ /dev/null @@ -1,9 +0,0 @@ -# Node operators & Validators - -While most applications should remain unaffected, node operators, validators, and RPC providers must ensure their systems are prepared for the transition to maintain seamless operations. - -See the following document for more details: - -* [Celo L2 migration](../notices/l2-migration.md) - -See the guides for [running a node](./run-node.md) or the guide on [how to migrate a L1 node](./migrate-node.md). diff --git a/docs/cel2/operators/penalties.md b/docs/cel2/operators/penalties.md deleted file mode 100644 index f0fce67fc0..0000000000 --- a/docs/cel2/operators/penalties.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Community RPC Provider Penalties -description: Introduction to Community RPC provider penalties, enforcement mechanisms, and conditions. ---- - -# Community RPC Provider Penalties - -Introduction to Community RPC provider penalties, enforcement mechanisms, and conditions. - ---- - -:::info -This page is a work in progress based on the [proposal for validator engagement during the transition to L2](https://forum.celo.org/t/proposal-validator-engagement-during-the-transition-to-celo-l2/9700) and [Set The Great Celo Halvening Parameters](https://forum.celo.org/t/set-the-great-celo-halvening-parameters/10455/3). For updates make sure to refer to the [Celo Forum](https://forum.celo.org). -::: - -## Overview - -The Celo community has established penalties for Community RPC providers who fail to maintain their RPC nodes. These penalties ensure providers maintain reliable and consistent service to the network. - -## How It Works - -Community RPC providers receive 82.19178082 cUSD per day at a perfect score of 1. Scores are monitored off-chain by the Score Management Committee, an independent working group running custom software based on [Vido by Atalma](https://dev.vido.atalma.io/celo/rpc). This committee operates a Safe Multisig with permissions to manage the on-chain `ScoreManager.sol` smart contract. - -Weekly, the committee collates measurements and averages scores for each provider. Scores below 1 are updated and apply to the following week's payments. - -**Running a Community RPC is mandatory for elected providers.** Insufficient uptime results in slashing - a portion of locked CELO is forfeited. - -### The Score Management Committee - -The Committee controls a multisig with governance-granted powers to call functions on the `ScoreManager` and `GovernanceSlasher` contracts. Each member receives $2k cUSD monthly for operational expenses. - -**Responsibilities:** - -- Running open-source and verifiable monitoring infrastructure for uptime tracking -- Performance evaluation, collaboration, and multisig operations -- Transparent communication - -### Metrics - -Rewards are allocated automatically after each epoch based on `ScoreManager` contract scores and claimed manually by providers. - -Weekly score breakdown: - -| RPC Uptime | Score | -|------------|-------| -| 80% - 100% | 1.00 | -| 60% - 79% | 0.80 | -| 40% - 59% | 0.60 | -| 20% - 39% | 0.40 | -| 0% - 19% | 0 and Slash | - -Providers with uptime below 20% for 7 days are slashed. - -### References in the Specification - -- [Overview of rewards and epochs in L2](https://specs.celo.org/smart_contract_updates_from_l1.html#overview-of-rewards-and-epochs-in-l2) -- [Scoring](https://specs.celo.org/smart_contract_updates_from_l1.html#scoring) -- [Slashing](https://specs.celo.org/smart_contract_updates_from_l1.html#slashing) diff --git a/docs/cel2/operators/registering-as-rpc-node.md b/docs/cel2/operators/registering-as-rpc-node.md deleted file mode 100644 index 77aa0fedc5..0000000000 --- a/docs/cel2/operators/registering-as-rpc-node.md +++ /dev/null @@ -1,326 +0,0 @@ -# Registering a Community RPC provider - -Step-by-step instructions on how to register a RPC node on chain to be eligible for rewards. - ---- - -:::info **Terminology** -The term "validator" is used in the code and corresponding explanation due to historical reasons, but refers to the community RPC providers. -::: - -## Prerequisites - -### Software Requirements - -Install the Celo CLI following the [Command Line Interface (CLI)](/cli/) setup instructions. Ensure you're using Node.js version 18 or higher. - -### Staking Requirements - -To register as a community RPC provider, you need: - -- **10,000 CELO** to register an RPC node -- **10,000 CELO per member RPC** to register an RPC Group - -If you don't have enough CELO, you can practice the registration process on the [Celo Sepolia Testnet](/network/celo-sepolia). Use the [testnet faucet](https://faucet.celo.org/celo-sepolia) to get test CELO - select "Advanced Needs" when requesting funds for RPC provider testing. - -### Key Management - -:::danger -Private keys are the central primitive of any cryptographic system and need to be handled with extreme care. Loss of your private key can lead to irreversible loss of assets. -::: - -This guide contains a large number of keys, so it is important to understand the purpose of each key. [Read more about key management.](/what-is-celo/about-celo-l1/validator/key-management/summary) - -### Account and Signer Keys - -Running an RPC node involves managing multiple keys with different security levels and permissions. Keys used frequently (like those for updating URLs) are more vulnerable to compromise and therefore have limited permissions. Keys used less often (such as for locking CELO) can be stored more securely and have broader permissions. - -Below is a summary of the different keys used in the Celo network and their specific permissions: - -| Name of the key | Purpose | -| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Account key | This is the key with the highest level of permissions, and is thus the most sensitive. It can be used to lock and unlock CELO, and authorize vote, validator, and attestation keys. Note that the account key also has all of the permissions of the other keys. | -| Validator signer key | This is the key that has permission to register and manage a node or a Group. | -| Vote signer key | This key can be used to vote in Validator elections and on-chain governance. | - -## Addresses Used - -In this guide, the following addresses will be used: - -| Address name | Purpose | Owner entity | Recommended storage | -|------------------------|--------------------------------------------------------------------------------------------------------|---------------|---------------------| -| CELO_GROUP_ADDRESS | Address representing a group, with up to five nodes. It's the account that will receive votes. | Group | Cold | -| CELO_NODE_ADDRESS | Address that represent a node. | Node | Cold | -| CELO_VALIDATOR_SIGNER | Address authorized to generate signers or deregister members or join/leave a group. It can be rotated. | Node operator | Hot | - -Groups and validators may be run by different entities. This guide assumes they are running by the same entity, but you can skip those if not relevant to your specific setup. - -## Setting Up Accounts - -This amount (10,000 CELO) represents the minimum amount needed to be locked in order to register a Validator and Validator group. - -:::warning -Note that you will want to be sure to leave enough CELO unlocked to be able to continue to pay transaction fees for future transactions (such as those issued by running some CLI commands). -::: - -Check that your CELO was successfully locked with the following commands: - -```bash -celocli lockedcelo:show $CELO_GROUP_ADDRESS -celocli lockedcelo:show $CELO_NODE_ADDRESS -``` - -### Setting Up the Group Account - -#### Lock CELO - -Lock up CELO for both accounts to secure the right to register a Validator and Validator Group. You need 10,000 CELO to register a node. This CELO stays locked for approximately 60 days after deregistration. - -```bash -celocli lockedcelo:lock --from $CELO_GROUP_ADDRESS --value 10000e18 -``` - -:::info -The Celo CLI needs an RPC address. You can use the Celo Community RPC gateway with `-n https://rpc.celo-community.org`. -::: - -:::info -You can use the Celo CLI with a Ledger hardware wallet (see [CLI docs](/wallet/ledger/to-celo-cli)) or pass a private key directly with the `--privateKey` flag. Both options work with any transaction-signing command. -::: - -### Setting Up the Node Account - -#### Lock CELO - -Lock up CELO for the node account to secure the right to register a Validator. You need 10,000 CELO to register a node. This CELO stays locked for approximately 180 days after removal of the Nth validator from the group. - -```bash -celocli lockedcelo:lock --from $CELO_NODE_ADDRESS --value 10000e18 -``` - -#### Create a Validator Signer - -To register as a node, you need to generate a validator signer key. You can create this account by: - -- Exporting a private key from a wallet (like MetaMask) -- Using a hardware wallet -- Running the command below: - -```bash -# On the validator machine -celocli account:new -``` - -:::warning -Make sure to safely store the signer key. -::: - -#### Create a Validator Signer Proof-of-Possession - -Next, create a proof-of-possession to verify you control the validator signer private key. This involves signing a message containing the validator account address. - -```bash -celocli account:proof-of-possession --signer $CELO_VALIDATOR_SIGNER_ADDRESS --account $CELO_NODE_ADDRESS -``` - -#### Register Node Metadata On-Chain - -Before proceeding with the election process, you need to register your node's metadata on-chain. This step is critical - nodes without proper metadata are at risk of being slashed. - -For detailed instructions on registering your node URL and metadata, see [Registering the Node URL](#registering-the-node-url). - -## Register the Nodes and Group - -To participate in elections as an RPC provider, you must register both your group and individual node. When registering a Group, you'll need to specify a [commission](/what-is-celo/about-celo-l1/protocol/pos/validator-groups#group-share) - this is the percentage of epoch rewards that group members pay to the group. - -Since we want to keep our account key secure, we'll first authorize the validator signing key instead of using the account key for validation: - -#### Authorize Signer - -```bash -celocli account:authorize --from $CELO_NODE_ADDRESS --role validator --signature 0x$CELO_VALIDATOR_SIGNER_SIGNATURE --signer 0x$CELO_VALIDATOR_SIGNER_ADDRESS -``` - -Confirm by checking the authorized Validator signer for your Validator: - -```bash -celocli account:show $CELO_NODE_ADDRESS -``` - -#### Registering the Group - -Register your Group using the following command. Since we haven't authorized a validator signer for the Group account, use the account key for registration. - -```bash -celocli validatorgroup:register --from $CELO_GROUP_ADDRESS --commission 0.1 -``` - -View your Validator Group information: - -```bash -celocli validatorgroup:show $CELO_GROUP_ADDRESS -``` - -#### Registering the Node - -Register your node with the following command. Since we authorized a validator signer, this step can be performed on the validator machine. Running it locally avoids installing the [Celo CLI](/cli/) on the validator machine. - -```bash -celocli validator:register --from $CELO_NODE_ADDRESS --ecdsaKey $CELO_VALIDATOR_SIGNER_PUBLIC_KEY -``` - -#### Affiliate the Node to the Group - -Link your node to your Group. Note that you won't be a group member until the Group accepts the affiliation. This command can also be run from the validator signer on the validator machine. - -```bash -celocli validator:affiliate $CELO_GROUP_ADDRESS --from $CELO_NODE_ADDRESS -``` - -Accept the affiliation request: - -```bash -celocli validatorgroup:member --accept $CELO_NODE_ADDRESS --from $CELO_GROUP_ADDRESS -``` - -Verify that your node is now a member of your Group: - -```bash -celocli validator:show $CELO_NODE_ADDRESS -celocli validatorgroup:show $CELO_GROUP_ADDRESS -``` - -## Registering the Node URL - -To register your node as an RPC provider, you must register a public HTTPS URL on-chain through a signed metadata file in your Celo Account. - -The `--from` flag in the CLI commands can use either the validator account itself or the validator signer. - -#### Create Metadata File - -Create a new metadata file for your node. If you need to update an existing metadata file, download it instead of creating a new one. - -```bash -celocli account:create-metadata ./metadata.json --from $CELO_VALIDATOR_SIGNER_ADDRESS -``` - -#### Claim RPC URL - -Register your public RPC URL in the metadata file: - -```bash -celocli account:claim-rpc-url ./metadata.json --from $CELO_VALIDATOR_SIGNER_ADDRESS --rpcUrl $RPC_URL -``` - -#### Upload Metadata - -Upload the metadata file to a publicly available URL with high availability. - -#### Register Metadata URL - -Link the metadata URL to your validator Celo account: - -```bash -celocli account:register-metadata --url $METADATA_URL --from $CELO_NODE_ADDRESS -``` - -:::info -If your account is a [ReleaseGold contract](/what-is-celo/using-celo/manage/release-gold), use the command `celocli releasecelo:set-account` instead. Documentation can be found [here](/cli/releasecelo#celocli-releaseceloset-account). -::: - -#### Verify Registration - -Confirm that the metadata registration was successful: - -```bash -celocli account:get-metadata $CELO_NODE_ADDRESS -``` - -You can also list all registered RPC URLs on the network: - -```bash -celocli network:rpc-urls -``` - -## Voting - -As an optional step, you can use both accounts to vote for your Group. - -#### Vote With All Accounts - -Since we haven't authorized a vote signer for either account, these transactions must be sent using the account keys. - -:::info -You can only run these commands with accounts you control. All commands are listed here for the sake of completeness. -::: - -```bash -celocli election:vote --from $CELO_NODE_ADDRESS --for $CELO_GROUP_ADDRESS --value 10000e18 -celocli election:vote --from $CELO_GROUP_ADDRESS --for $CELO_GROUP_ADDRESS --value 10000e18 -``` - -Verify that your votes were cast successfully: - -```bash -celocli election:show $CELO_NODE_ADDRESS --voter -celocli election:show $CELO_GROUP_ADDRESS --group -celocli election:show $CELO_GROUP_ADDRESS --voter -``` - -#### Activate Your Votes - -Users voting in the Celo protocol receive epoch rewards only after submitting a special transaction to activate their votes. This must be done every time new votes are cast, and can only be executed after the most recent epoch has ended. Use the following command, which waits until the epoch ends before sending the transaction: - -```bash -# Note: This may take time as the epoch needs to end before votes can be activated -celocli election:activate --from $CELO_NODE_ADDRESS --wait && -celocli election:activate --from $CELO_GROUP_ADDRESS --wait -``` - -Confirm that your votes were activated by running: - -```bash -celocli election:show $CELO_NODE_ADDRESS --voter -celocli election:show $CELO_GROUP_ADDRESS --voter -``` - -## Watching the Election Process - -You're all set! Elections are finalized at the end of each epoch, roughly once a day on Mainnet. If elected, your node will start participating. After the first epoch of participation, you'll receive your first epoch rewards. - -You can view current election status and the minimum votes needed on [Mondo](https://mondo.celo.org/). - -Inspect the current validator elections: - -```bash -celocli election:list -``` - -Check your node's status, including election status: - -```bash -celocli validator:status --validator $CELO_NODE_ADDRESS -``` - -View additional node information, including uptime score: - -```bash -celocli validator:show $CELO_NODE_ADDRESS -``` - -## Rewards - -### CELO Rewards - -If your Validator Group elects validators, you'll receive epoch rewards as additional Locked CELO voting for your Validator Group. You can monitor these rewards using the previous commands and: - -```bash -celocli lockedcelo:show $CELO_GROUP_ADDRESS -celocli lockedcelo:show $CELO_NODE_ADDRESS -``` - -### cUSD Rewards - -Active validators receive cUSD rewards based on their validator score, calculated as part of the L2 epoch rewards process (see `EpochRewards.calculateTargetEpochRewards()`). For more details, refer to the [L2 Epoch Rewards documentation](../../what-is-celo/using-celo/protocol/epoch-rewards/index.md). - -For reward claiming instructions, see [Claiming Rewards](./community-rpc-node#claiming-rewards). diff --git a/docs/cel2/operators/run-node.md b/docs/cel2/operators/run-node.md deleted file mode 100644 index 2ad816e3f7..0000000000 --- a/docs/cel2/operators/run-node.md +++ /dev/null @@ -1,407 +0,0 @@ -# Running a Celo Node - -This guide is designed to help node operators run a Celo L2 node. - -:::note L1 to L2 data migration -If you wish to migrate data from a Celo L1 node and have not yet done so, please see the [migration guide](migrate-node.md) before continuing. Alternatively, you can `snap` sync from scratch without migrating existing L1 data. -::: - -## Recommended Hardware - -### Mainnet - -- 16GB+ RAM -- 1TB+ SSD (NVME Recommended) -- Minimum 4 CPU, recommended 8 CPU -- 100mb/s+ Download - -### Testnets (Alfajores, Baklava, and Celo Sepolia) - -- 16GB+ RAM -- 500GB SSD (NVME Recommended) -- Minimum 4 CPU, recommended 8 CPU -- 100mb/s+ Download - -:::warning Storage Requirements -Storage size requirements will increase over time, especially for archive nodes. - -If running an archive node, please make sure you also have enough storage for the legacy Celo L1 archive datadir. See [Running an archive node](#running-an-archive-node). -::: - -## Run Node with Docker - -To simplify running nodes, Celo has created the [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) repository with all the necessary configuration files and docker compose templates to make running a Celo L2 node easy. - -See the [README](https://github.com/celo-org/celo-l2-node-docker-compose/blob/main/README.md) for instructions on installing docker and docker compose if needed. - -:::note Docker Desktop on MacOS -You will most likely need to increase the virtual disk limit in order to accomodate the chaindata directory. This can be done by opening Docker Desktop, going to Settings -> Resources -> Advanced and increasing the disk image size. -::: - -### Running a Full Node - -Follow these steps to run a full node. If you would like to run an archive node, see [below](#running-an-archive-node). - -1. Pull the latest version of [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) and `cd` into the root of the project. - - ```bash - git clone https://github.com/celo-org/celo-l2-node-docker-compose.git - cd celo-l2-node-docker-compose - ``` - -2. Configure your `.env` file. - - __Copy default configurations__ - - The [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) repo contains a `.env` file for each Celo network (`alfajores`, `baklava`, `celo-sepolia`, and `mainnet`). Start by copying the default configuration for the appropriate network. - - ```bash - export NETWORK= - cp $NETWORK.env .env - ``` - - __Configure sync mode__ - - By default, [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) will start your node with `snap` sync. This allows your node to start without a migrated L1 datadir, as pre-hardfork block data will be automatically downloaded from peers during syncing. This is the easiest way to start an L2 node. - - Alternatively, you can start your node with `full` sync if you have a migrated L1 datadir. For instructions on obtaining a migrated L1 datadir, please see [Migrating an L1 Node](migrate-node.md). - - To use `full` sync, configure `.env` as follows: - - ```text - OP_GETH__SYNCMODE=full - DATADIR_PATH= - ``` - - __Configure node type__ - - Your node will run as a `full` node by default, but can also be configured as an `archive` node if you wish to preserve access to all historical state. Note that `full` has a different meaning here than in the context of syncing. See [Running an archive node](#running-an-archive-node) for more information. - - __Configure P2P for external network access__ - - :::warning Network Configuration - If the following options are not configured correctly, your node will not be discoverable or reachable to other nodes on the network. This is likely to impair your node's ability to stay reliably connected to and synced with the network. - ::: - - - `OP_NODE__P2P_ADVERTISE_IP` - Specifies the public IP to be shared via discovery so that other nodes can connect to your node. If unset op-node other nodes on the network will not be able to discover and connect to your node. - - `PORT__OP_NODE_P2P` - Specifies the port to be shared via discovery so that other nodes can connect to your node. Defaults to 9222. - - `OP_GETH__NAT` - Controls how op-geth determines its public IP that is shared via the discovery mechanism. If the public IP is not correctly configured then other nodes on the network will not be able to discover and connect to your node. The default value of `any` will try to automatically determine the public IP, but the most reliable approach is to explicitly set the public IP using `extip:`. Other acceptable values are `(any|none|upnp|pmp|pmp:|extip:|stun:)`. - - `PORT__OP_GETH_P2P` - Specifies the port to be shared via discovery so that other nodes can connect to your node. Defaults to 30303. - -3. Start the node. - - ```bash - docker-compose up -d --build - ``` - -4. Check the progress of the node as it syncs. - - ```bash - docker-compose logs -n 50 -f op-geth - ``` - - This will display and follow the last 50 lines of logs. In a syncing node, you would expect to see `Syncing beacon headers downloaded=...` where the downloaded number is increasing and later lines such as `"Syncing: chain download in progress","synced":"21.07%"` where the percentage is increasing. Once the percentage reaches 100%, the node should be synced. - -5. Check that node is fully synced. - - Once the node is fully synced, you can validate that it's following the network by fetching the current block number via the RPC API and seeing that it's increasing as expected. - - ```bash - cast block-number --rpc-url http://localhost:9993 - ``` - - Note that until fully synced, the RPC API will return 0 for the head block number. - -### Running an Archive Node - -#### Overview - -To run an L2 archive node, you need to start the L2 execution client in archive mode. This allows the node to accept RPC requests that require archive data for blocks created after the L2 transition. For historical data from before the L2 transition, you can configure your node to forward those requests to a legacy Celo L1 archive node that contains the historical blockchain state. - -#### Instructions - -:::note Prerequisites -These instructions assume you already have - -1. A migrated full node datadir that has been synced to the migration block. See [Migrating an L1 Node](migrate-node.md) if you do not have this. -2. A non-migrated Celo L1 archive node datadir. Do not attempt to migrate an archive datadir. - -Please ensure neither datadir is being used by a running node before proceeding. -::: - -1. Pull the latest version of [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) and `cd` into the root of the project. - - ```bash - git clone https://github.com/celo-org/celo-l2-node-docker-compose.git - cd celo-l2-node-docker-compose - ``` - -2. Configure your `.env` file. - - __Copy default configurations__ - - The [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) repo contains a `.env` file for each Celo network (`alfajores`, `baklava`, `celo-sepolia`, and `mainnet`). Start by copying the default configuration for the appropriate network. - - ```bash - export NETWORK= - cp $NETWORK.env .env - ``` - - __Configure sync mode__ - - By default, [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) will start your node with `snap` sync. While `archive` nodes can technically run with `snap` sync, they will only store archive data from the point that `snap` sync completes. This will leave a gap in the archive data after the hardfork, so we recommend running archive nodes with `full` sync and a migrated pre-hardfork datadir. - - To use `full` sync, configure `.env` as follows: - - ```text - OP_GETH__SYNCMODE=full - DATADIR_PATH= - ``` - - __Configure node type__ - - To enable `archive` mode, configure `.env` as follows: - - ```text - NODE_TYPE=archive - ``` - - __Configure Historical RPC Service__ - - To handle RPC requests for pre-hardfork state and execution, an L2 archive node proxies to a legacy archive node or "Historical RPC Service". - There are two ways to configure a Historical RPC Service for your archive node: - - 1. Supply a pre-hardfork archive datadir and let [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) start a legacy archive node. To do this configure `.env` as follows: - - ```text - HISTORICAL_RPC_DATADIR_PATH= - ``` - - When you start your L2 node, a legacy archive node will also start using the pre-hardfork archive datadir. Your L2 node will be configured to use the legacy archive node as its Historical RPC Service. - - 2. Start the legacy archive node yourself and configure `.env` as follows: - - ```text - OP_GETH__HISTORICAL_RPC= - ``` - - This will cause any value you set for `HISTORICAL_RPC_DATADIR_PATH` to be ignored. The tool will not start a legacy archive node when it starts your L2 archive node. - - If you choose to run your own legacy archive node, you should do so with different flags than before the hardfork, as the node will no longer be syncing blocks or communicating with other nodes. To see how we recommend re-starting a legacy archive node as a Historical RPC Service, see [this script](https://github.com/celo-org/celo-l2-node-docker-compose/blob/30ee2c4ec2dacaff10aaba52e59969053c652f05/scripts/start-historical-rpc-node.sh#L19). - - __Configure P2P for external network access__ - - :::warning Network Configuration - If the following options are not configured correctly, your node will not be discoverable or reachable to other nodes on the network. This is likely to impair your node's ability to stay reliably connected to and synced with the network. - ::: - - - `OP_NODE__P2P_ADVERTISE_IP` - Specifies the public IP to be shared via discovery so that other nodes can connect to your node. If unset op-node other nodes on the network will not be able to discover and connect to your node. - - `PORT__OP_NODE_P2P` - Specifies the port to be shared via discovery so that other nodes can connect to your node. Defaults to 9222. - - `OP_GETH__NAT` - Controls how op-geth determines its public IP that is shared via the discovery mechanism. If the public IP is not correctly configured then other nodes on the network will not be able to discover and connect to your node. The default value of `any` will try to automatically determine the public IP, but the most reliable approach is to explicitly set the public IP using `extip:`. Other acceptable values are `(any|none|upnp|pmp|pmp:|extip:|stun:)`. - - `PORT__OP_GETH_P2P` - Specifies the port to be shared via discovery so that other nodes can connect to your node. Defaults to 30303. - -3. Start the node(s). - - ```bash - docker-compose up -d --build - ``` - -4. Check the progress of your L2 archive node as it syncs. - - ```bash - docker-compose logs -n 50 -f op-geth - ``` - - This will display and follow the last 50 lines of logs. In a syncing node, you would expect to see `Syncing beacon headers downloaded=...` where the downloaded number is increasing and later lines such as `"Syncing: chain download in progress","synced":"21.07%"` where the percentage is increasing. Once the percentage reaches 100%, the node should be synced. - -5. Check that node is fully synced. - - Once the node is fully synced, you can validate that it's following the network by fetching the current block number via the RPC API and seeing that it's increasing as expected. - - ```bash - cast block-number --rpc-url http://localhost:9993 - ``` - - Note that until fully synced, the RPC API will return 0 for the head block number. - -6. Try querying historical state to test archive functionality. - - ```bash - cast balance --block
--rpc-url http://localhost:9993 - ``` - -## Building a Node from Source - -Docker images are the easiest way to run a Celo node, but you can always build your own node from source code. You might wish to do this if you want to run on a specific architecture or inspect the source code. - -The [celo-l2-node-docker-compose](https://github.com/celo-org/celo-l2-node-docker-compose) codebase is still the best reference for how to run your nodes from source, and below you can find all the [Network config & Assets](#network-config--assets) needed to participate in the hardfork. - -## Network Config & Assets - -### Mainnet - -- [Full migrated chaindata](https://storage.googleapis.com/cel2-rollup-files/celo/celo-mainnet-migrated-chaindata.tar.zst) -- [Rollup deploy config](https://storage.googleapis.com/cel2-rollup-files/celo/config.json) -- [L1 contract addresses](https://storage.googleapis.com/cel2-rollup-files/celo/deployment-l1.json) -- [L2 allocs](https://storage.googleapis.com/cel2-rollup-files/celo/l2-allocs.json) -- [rollup.json](https://storage.googleapis.com/cel2-rollup-files/celo/rollup.json) -- [Genesis](https://storage.googleapis.com/cel2-rollup-files/celo/genesis.json) used for snap syncing -- P2P peers - - op-geth bootnode/peers, to be used with op-geth `--bootnodes` flag: - - ```text - enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303 - enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303 - enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303 - enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303 - enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303 - enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303 - enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303 - enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303 - enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303 - enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303 - enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303 - enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303 - ``` - - - op-node bootnodes, to be used with op-node `--p2p.bootnodes` flag: - - ```text - enr:-J64QJipvmFhMq6DVh6RR4HvIiiBtyy1NUg_QlnAAbf18SMqCxCPZtLgUiWED5p0HRVPv69Wth4YPsvdKXSUyh57mWuGAZXRp6HjgmlkgnY0gmlwhCJTtG-Hb3BzdGFja4TsyQIAiXNlY3AyNTZrMaECKPT8t_OMGwEgh_eu8l3LChJXzPHNxMqohYTcJUFhKQaDdGNwgiQGg3VkcIIkBg - enr:-J64QCxBGS49IQbkbwsUuVWt9CkMctMCRe0b-4dqRsLr4QJ1S52urWPUk2uhBU5uerRGpxWTZZW5FtJC-9gSBHN3cSiGAZXRp4rbgmlkgnY0gmlwhCKph0CHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaECqQd8PgMCBpVMXH8izBajLLUBMRKqiYXjV1-t2niEpQiDdGNwgiQGg3VkcIIkBg - enr:-J64QLG71bmmljNbLFx3qim6zXohKA3jbK_4C4d1cwixI-7VMoBIlnM6kWZVvvdWcbjTQ6QXB1LAO39eZWC4Heztj1-GAZXRpzUGgmlkgnY0gmlwhCKpySSHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEDApsAenpWrLqo6lDsYs2ieUhL84Q_rhZG9pBWb3hKylCDdGNwgiQGg3VkcIIkBg - enr:-J64QKFU-u1x1gt3WmNP88EDUMQ316ymbzdGy83QjkBDqVSsJBn6-nipuqYQDeHYoLBLVJUMdyAiwxVbbDm14qQSf5qGAZXRppmIgmlkgnY0gmlwhCJTfzOHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEC88lrc6V3LF77SNWjO_GT5YCA2Ca6fwPp1b3vIMBjSk-DdGNwgiQGg3VkcIIkBg - enr:-J64QIXTVl0Opbdn20TSrkzpIZ4xQ54bERRlTmSeZ05dFLdlSbuRY7yn5tJeTPzsSldTw5V5E0qjEQcsfr20vMjTUDyGAZXRpiWygmlkgnY0gmlwhCPjrx6Hb3BzdGFja4TsyQIAiXNlY3AyNTZrMaED2qWtZdFrywlnz0eNnyBUS_G23mF2NORS3_e5RyefQfSDdGNwgiQGg3VkcIIkBg - enr:-J64QFAsbeR4xRSyVyQOk7bILUCoMjI2EnbZvo4UAK3842HMYw41-UZXdnQJH8lwvzWn7qsY3Vu73NuxzxWKn4XB5wiGAZXRpYPAgmlkgnY0gmlwhCJSxmKHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEDx51ZbXcmg4flmWldI-lBwUwiB0UFLqZkKnHvffMaE4eDdGNwgiQGg3VkcIIkBg - enr:-J64QFQSrL3mfG-i64T-5DgVE5V9dGKC5A0JrEvD6CRpZvuLK3feg4bPaqFWfqXyNN_6IgY2z1Jkr4Mf2Zx-GdWlWquGAZXQkMdSgmlkgnY0gmlwhCImtd-Hb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEDQVEzYHXdCOtsdb_WOFXopL1v0Pka5KgbFJMPJnHhau6DdGNwgiQGg3VkcIIkBg - enr:-J64QAp3g1m-5uX-_mBXWyo6ZQqAlnRcAt11Xwy0-ZzqaSrDSlg4adyOz6v9flzLgxYkVvXI50nJGs8GjLgT5bwDLtyGAZXQrD69gmlkgnY0gmlwhCJMJgaHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaECq5mdt1EmXHFLFxNE3hly7XQ0gWLeRloERPVuULjP0EiDdGNwgiQGg3VkcIIkBg - enr:-J64QFCZs1ePThNEsRxIIzbfDxYfap1nEyuPPpSUeeWOoPFWOp0zSEPwLEtXhG1eH-ipsB5CgtaVzcXOyT9hKeAeVVaGAZXQkaZ3gmlkgnY0gmlwhCO7ajaHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEDnYbZL7OKQpMwVG_hrvziZOH1XF1AJJtjFT5990QAX6ODdGNwgiQGg3VkcIIkBg - enr:-J64QJ9LY8m9AjNgujuVT0juX8T6PHKojZEIqd-7_vhBasfiT2xUUJoUfWga_xVJGFECFcN6hPKB4TjihmYFxHXelwOGAZXQkclrgmlkgnY0gmlwhCJMELeHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEDyCwx8h3Vu7jcNWhv9npDUzgrQBfJ7HZgo4PMtbjjsEyDdGNwgiQGg3VkcIIkBg - enr:-J64QGJFPZzLj2GLFgB4JhTde7rXChMNFERNbzrwYYTG7CY2SCSggFrU3VXczzWBvOoJWdbOMOzPuCI2klknGjruUxeGAZXQkf1LgmlkgnY0gmlwhGjHJzuHb3BzdGFja4TsyQIAiXNlY3AyNTZrMaEDO61fV62N5lQfAuNtgGuH5-nKbVM8lW6JpWswVK6F1giDdGNwgiQGg3VkcIIkBg - enr:-J64QEXleDl25w0qEG__wmDgwnzB0F5zapu00D_jM4qkCbA3WIcLC8rXPm8dcrKdZNBuNXJOtNE6c2_ZDkuQMvIuhjCGAZXQwDjFgmlkgnY0gmlwhCKMdU-Hb3BzdGFja4TsyQIAiXNlY3AyNTZrMaECHezzuLmg0LgzLRUhjzvwzrlgaw7-GPNSxR7_wUu_H0-DdGNwgiQGg3VkcIIkBg - ``` - -- Container images: - - [Celo L1 client](https://us-docker.pkg.dev/celo-org/us.gcr.io/geth-all:1.8.9) - - [op-geth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.1.0) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.1.0) - - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v1.8.2) - -### Alfajores - -- [Full migrated chaindata](https://storage.googleapis.com/cel2-rollup-files/alfajores/alfajores-migrated-datadir.tar.zst) -- [Rollup deploy config](https://storage.googleapis.com/cel2-rollup-files/alfajores/config.json) -- [L1 contract addresses](https://storage.googleapis.com/cel2-rollup-files/alfajores/deployment-l1.json) -- [L2 allocs](https://storage.googleapis.com/cel2-rollup-files/alfajores/l2-allocs.json) -- [rollup.json](https://storage.googleapis.com/cel2-rollup-files/alfajores/rollup.json) -- [Genesis](https://storage.googleapis.com/cel2-rollup-files/alfajores/genesis.json) used for snap syncing -- P2P peers: - - op-geth bootnode/peers, to be used with op-geth `--bootnodes` flag: - - ```text - enode://ac0f42fa46f8cc10bd02a103894d71d495537465133e7c442bc02dc76721a5f41761cc2d8c69e7ba1b33e14e28f516436864d3e0836e2dcdaf032387f72447dd@34.83.164.192:30303 - enode://596002969b8b269a4fa34b4709b9600b64201e7d02e2f5f1350affd021b0cbda6ce2b913ebe24f0fb1edcf66b6c730a8a3b02cd940f4de995f73d3b290a0fc92@34.82.177.77:30303 - enode://3619455064ef1ce667171bba1df80cfd4c097f018cf0205aaad496f0d509611b7c40396893d9e490ee390cd098888279e177a4d9bb09c58387bb0a6031d237f1@34.19.90.27:30303 - enode://e3c54db6004a92d4ee87504f073f3234a25759b485274cc224037e3e5ee792f3b482c3f4fffcb764af6e1859a1aea9710b71e1991e32c1dee7f40352124bb182@35.233.249.87:30303 - enode://674410b34fd54c8406a4f945292b96111688d4bab49aecdc34b4f1b346891f4673dcb03ed44c38ab467ef7bec0b20f6031ad88aa1d35ce1333b343d00fa19fb1@34.168.43.76:30303 - ``` - - - op-node static peers, to be used with op-node `--p2p.bootnodes` flag: - - ```text - enr:-J64QOpbyT0wCfa37PO5qirwmbRsdHy_nMy8-Yam8-SaeK4oL6S-5Z0YKE6TphhZWjfux-EfjxedIbqdiXDEd2bRrNiGAZX2gzlHgmlkgnY0gmlwhCPFGTSHb3BzdGFja4Tz3QIAiXNlY3AyNTZrMaEDrA9C-kb4zBC9AqEDiU1x1JVTdGUTPnxEK8Atx2chpfSDdGNwgiQGg3VkcIIkBg - enr:-J64QI8egoBPlV8cBO9xhBK1wg2ZJj3UH_nw9DjA_mfyYNY2ewDNJ88uCKXV5Kmlj15p3OpdbdUiyXBI9OuxU0LEBtmGAZX2gyNbgmlkgnY0gmlwhCJpFgSHb3BzdGFja4Tz3QIAiXNlY3AyNTZrMaECWWAClpuLJppPo0tHCblgC2QgHn0C4vXxNQr_0CGwy9qDdGNwgiQGg3VkcIIkBg - enr:-J64QCnvpKsWBbrZEzJXQYraWh6XpAI4ygdtrjRPxBKsrdPwHOaN2OcN1w7eBdA2vyXEicxseNVpIFQfvB3nKKzSBo2GAZX2gtNGgmlkgnY0gmlwhCJT0aiHb3BzdGFja4Tz3QIAiXNlY3AyNTZrMaEDNhlFUGTvHOZnFxu6HfgM_UwJfwGM8CBaqtSW8NUJYRuDdGNwgiQGg3VkcIIkBg - enr:-J64QLMeHf5MBmx06LfYEVAB2-5BfvChT-uf3_cKiUFwoA8BI6yjQVSGQMe8F-Oqd662lPaa62Aikq-ra9a_J82852iGAZX2grXVgmlkgnY0gmlwhCJT1pWHb3BzdGFja4Tz3QIAiXNlY3AyNTZrMaEC48VNtgBKktTuh1BPBz8yNKJXWbSFJ0zCJAN-Pl7nkvODdGNwgiQGg3VkcIIkBg - enr:-J64QH2pBtdN_th8TLGEEMjmz5lMsU7nxcY2hpRGUtbPb7McP4VD089C72g0Ms8eztJzf5u3S-3ooH9S3Q0Qj1BYnbKGAZX2gn8tgmlkgnY0gmlwhCKpBTSHb3BzdGFja4Tz3QIAiXNlY3AyNTZrMaEDZ0QQs0_VTIQGpPlFKSuWERaI1Lq0muzcNLTxs0aJH0aDdGNwgiQGg3VkcIIkBg - ``` - -- Container images: - - [Celo L1 client](https://us-docker.pkg.dev/celo-org/us.gcr.io/geth-all:1.8.7) - - [op-geth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.1.0-rc2) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.1.0-rc) - - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v1.8.2) - -### Baklava - -- [Final Celo L1 chaindata](https://storage.googleapis.com/cel2-rollup-files/baklava/baklava-l1-final.tar.zst) -- [Full migrated chaindata](https://storage.googleapis.com/cel2-rollup-files/baklava/baklava-migrated-datadir.tar.zst) -- [Rollup deploy config](https://storage.googleapis.com/cel2-rollup-files/baklava/config.json) -- [L1 contract addresses](https://storage.googleapis.com/cel2-rollup-files/baklava/deployment-l1.json) -- [L2 allocs](https://storage.googleapis.com/cel2-rollup-files/baklava/l2-allocs.json) -- [rollup.json](https://storage.googleapis.com/cel2-rollup-files/baklava/rollup.json) -- [Genesis](https://storage.googleapis.com/cel2-rollup-files/baklava/genesis.json) used for snap syncing -- P2P peers: - - op-geth bootnode/peers, to be used with op-geth `--bootnodes` flag: - - ```text - enode://6017c373a4151250e166ee7205b78cf845caff6a2003b3be38af8a09a569e413e31b21667d38a065f747a3662aec4920f122ad1bf1d46605cacf2d3d19f0ff5b@34.19.52.198:30303 - enode://e0ab5ed2071b0ea0d57a52e3cd3da7c97db1a0754e00e91a32a1ca9dab6bf040fa1dd8775e8d6812a557d75760b1b90d18a8d69cbf8cfc2b7acdacf0b47fce96@34.168.70.112:30303 - enode://b6d21edf251da32ffc1527092045ad3beba435f8ba27373dba8ce35f3ee54a411dc8327b57ebce9dc5c53e29825ea9e62356289a849fc4a048cce64da771aed8@34.82.194.102:30303 - enode://339acdcbc3961b11f5458bab3c931e1bbb41548d9cea7692311db1543deac1f4a9efc1e6cff93f745865988d16bdc6bbb38cd59a8dde71bafd236eec0d5e0fea@34.82.75.77:30303 - enode://616429f584575f8da463c18e5e2d38ec028b95446bffd607ebf8ac3d2dd3bbe9b859c91efbbbea6cf51ad78fb0d5db178f66ca57e647bd46bfe6692cc06127e9@34.53.24.17:30303 - ``` - - - op-node static peers, to be used with op-node `--p2p.bootnodes` flag: - - ```text - enr:-J64QKvLBbIvoGzKERuQQuFGDttUj_Yww7s0JBR6BGvI6utnGIHyUuHX87XEbHBDUk71XhkKb3N_kpFlrbOljK8yqO2GAZXyJxGRgmlkgnY0gmlwhCJpeVSHb3BzdGFja4Tw5gMAiXNlY3AyNTZrMaEDYBfDc6QVElDhZu5yBbeM-EXK_2ogA7O-OK-KCaVp5BODdGNwgiQGg3VkcIIkBg - enr:-J64QJIRPy9nuK8uc1s3UnyimNCBp2neviwNseTF70lHBkRYMv6GaioffcV_0s5TRL6JoDdLehW4gtUuy5Y45gETTP-GAZXTuoo-gmlkgnY0gmlwhCPHp8iHb3BzdGFja4Tw5gMAiXNlY3AyNTZrMaEC4Kte0gcbDqDVelLjzT2nyX2xoHVOAOkaMqHKnatr8ECDdGNwgiQGg3VkcIIkBg - enr:-J64QGsGoqQCyPbkzIUG-fxqC6uo1WE7akbchrMTNXVn1KPqUEwq03AlRYzmyyM22WAP69-vZfdMIx1J-A2OL-1t2R-GAZXTurk8gmlkgnY0gmlwhCKRbx6Hb3BzdGFja4Tw5gMAiXNlY3AyNTZrMaECttIe3yUdoy_8FScJIEWtO-ukNfi6Jzc9uozjXz7lSkGDdGNwgiQGg3VkcIIkBg - enr:-J64QHJ0ygyqmw5Tvli7SzMujhP8GxhQ672vF_C-7hcRQudZe5J2SxAton0wMt3C47jyHq2fvaTEh029mzwYQ3jHhCGGAZXTuuivgmlkgnY0gmlwhCPp9oGHb3BzdGFja4Tw5gMAiXNlY3AyNTZrMaECM5rNy8OWGxH1RYurPJMeG7tBVI2c6naSMR2xVD3qwfSDdGNwgiQGg3VkcIIkBg - enr:-J64QPX27ur5gkXOhje9MU7p6AD_C26n-vcBiKq8adst3WkpAyVgo-sWCIAikqDyX-i94hoOYxOOAV1Mx5pIQ5xgHUmGAZXTuxj7gmlkgnY0gmlwhCJ_LRWHb3BzdGFja4Tw5gMAiXNlY3AyNTZrMaEDYWQp9YRXX42kY8GOXi047AKLlURr_9YH6_isPS3Tu-mDdGNwgiQGg3VkcIIkBg - ``` - -- Container images: - - [Celo L1 client](https://us-docker.pkg.dev/celo-org/us.gcr.io/geth-all:1.8.8) - - [op-geth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.1.0-rc2) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.1.0-rc) - - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v1.8.2) - -### Celo Sepolia - -- [L1 contract addresses](https://storage.googleapis.com/cel2-rollup-files/celo-sepolia/deployment-l1.json) -- [rollup.json](https://storage.googleapis.com/cel2-rollup-files/celo-sepolia/rollup.json) -- [Genesis](https://storage.googleapis.com/cel2-rollup-files/celo-sepolia/genesis.json) used for snap syncing -- P2P peers: - - op-geth bootnode/peers, to be used with op-geth `--bootnodes` flag: - - ```text - enode://7fd35dfea27042fe008c74ea97c7a41254b293152730419a6e9bcd84bb03c7ced418c1043e2ef6ad63d2facca6fbdacfbf7c4bfcf33ee7e9a0e6b7eb0617595d@34.169.104.197:30303 - enode://151bcf170585971fc78129d9c16af355a1a53e1c825ce1ac20700ea754aa33eda60ca83de6f954bfed8d36c53f33295d93dbc3da9d549d6547d09467806b4b3d@104.199.124.11:30303 - enode://aa5fb766438ac5a0354eb2eec1c0c002b56bb2ce7ed44f0e76e019cbb931222faa9ecfb0fa0055c0c62a2fcf04492d4129349a1045dfef140585250281885e4b@34.83.115.97:30303 - enode://27c81ca466c99016d1595429afc68d66afb3ed9d5a2dd7f6a7797db23a4c826546a177b69b4932f3a75ce374b09d8ccc5b52dad615b3c47dbb8f6217d79ded22@35.247.1.226:30303 - ``` - - - op-node static peers, to be used with op-node `--p2p.bootnodes` flag: - - ```text - enr:-J-4QF7_9Y18cQSQ2wXHD_e65Qy82L1DpfVK4TlOuTDC9oAxeFxmvAn877A2ZXXfc08eLFgZP1mrRjkF4Kts1eGPGbKGAZg2ao5CgmlkgnY0gmlwhCKRF6aHb3BzdGFja4XMiKgFAIlzZWNwMjU2azGhA3_TXf6icEL-AIx06pfHpBJUspMVJzBBmm6bzYS7A8fOg3RjcIIkBoN1ZHCCJAY - enr:-J-4QEbMTKrBfyAeq9hWlEchulzvt1gWA-wAGa_kUdWw1K-faR-AjFNzhcVGG7yDnRb1RptLDGWVpl-WXWhrgJ4TKEaGAZg2XFFugmlkgnY0gmlwhCKotN-Hb3BzdGFja4XMiKgFAIlzZWNwMjU2azGhAxUbzxcFhZcfx4Ep2cFq81WhpT4cglzhrCBwDqdUqjPtg3RjcIIkBoN1ZHCCJAY - enr:-J-4QEawPak_hVU3h1wPZEGu7zLOv1C3k4WI8nHLUc83RqsRMauPtOPt8hYDFyxeJeaUyp0OUM0oyq-_9CEdshE1oWaGAZg2XLgDgmlkgnY0gmlwhCJSX5OHb3BzdGFja4XMiKgFAIlzZWNwMjU2azGhA6pft2ZDisWgNU6y7sHAwAK1a7LOftRPDnbgGcu5MSIvg3RjcIIkBoN1ZHCCJAY - enr:-J-4QCDpfivb0y0Sne1sZOqm1_WOKWWyJ6fo9j93jrxGVm0CcG6tScy3oQAaUuUbh-SmS_cQTO9ciw0_R3q1rpcjGLmGAZg2cWjGgmlkgnY0gmlwhCPFR5uHb3BzdGFja4XMiKgFAIlzZWNwMjU2azGhAifIHKRmyZAW0VlUKa_GjWavs-2dWi3X9qd5fbI6TIJlg3RjcIIkBoN1ZHCCJAY - ``` - -- Container images: - - [op-geth](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.1.2) - - [op-node](https://us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.1.0) - - [eigenda-proxy](https://ghcr.io/layr-labs/eigenda-proxy:v1.8.2) - -## Troubleshooting - -### Transactions Are Not Being Executed When Submitted to a Node - -If your node is synced but transactions submitted to it are not executed, make sure the `--rollup.sequencerhttp` flag is correctly set. - -- Mainnet: `--rollup.sequencerhttp=https://cel2-sequencer.celo.org/` -- Alfajores: `--rollup.sequencerhttp=https://sequencer.alfajores.celo-testnet.org` -- Baklava: `--rollup.sequencerhttp=https://sequencer.baklava.celo-testnet.org` -- Celo Sepolia: `--rollup.sequencerhttp=https://sequencer.celo-sepolia.celo-testnet.org` - -### Self-Hosted Public RPC Does Not Retrieve Transactions by Hash - -If you are hosting a public RPC node, please make sure the flag `--history.transactions` is set to 0 in op-geth (i.e. `--history.transactions=0`), so all transactions are indexed. Otherwise, transactions will not be retrievable by hash. - -## Getting Help - -Please reach out to our team on [Discord](https://chat.celo.org) in the [#celo-L2-support](https://discord.com/channels/600834479145353243/1286649605798367252) channel if you have any questions. diff --git a/docs/cel2/operators/validator-rpc-faq.md b/docs/cel2/operators/validator-rpc-faq.md deleted file mode 100644 index b171db2cd8..0000000000 --- a/docs/cel2/operators/validator-rpc-faq.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: Community RPC Provider FAQ -description: Frequently Asked Questions about Community RPC Providers ---- - -### Where can I see all the Community RPC Providers? - -- Install [Celo CLI](/cli/index.md) at version 6.1.0 or later. Then run: `celocli network:community-rpc-nodes`. -- [Vido Node Explorer](https://dev.vido.atalma.io/celo/rpc) -- [Celo Community RPC Gateway](https://celo-community.org/) - -### After the migration, validators will no longer validate any blocks, but they’ll still hold CELO, receive delegations, and vote on governance, is that correct? - -Correct. Validators will move to become Community RPC providers. - -### Does migrating a validator node to an RPC node automatically transfers the stake? Is that enabled by the token duality mechanism? - -The status onchain does not change after the migration, only the kind of node you’re supposed to run will change. This is not related to token duality. - -### Can operators migrate after the hardfork (i.e. register an RPC node after March 26th, 3:00AM UTC)? - -Operators will need to register their RPC or deregister completely before the migration block, however, the actual RPC node can only be started after the L2 starts. -[See Running a Community RPC Node](https://docs.celo.org/cel2/operators/community-rpc-node#register-as-rpc-provider) - -### Are there any penalties, of any kind, for validators who chose not to migrate/register RPC nodes? Slashing, jailing, any impact on staked funds? - -If a validator chooses to not run the RPC nodes after the transition, and does not deregister, they will get slashed and rewards will eventually drop to zero for the voters and the validators. - -### In order to fulfill the role of an RPC provider, does the RPC node need to be a full node, an archive node, or a L1 legacy node? - -Only full node or archive node. - -### For those who do not migrate, do they continue operating as validators alongside RPC nodes, just without any validating responsibilities? - -No, there will no longer be any validator nodes on the L2. - -### How will rewards be distributed after the hard fork, will earnings be limited to delegators (stakers) and RPC node operators? - -Rewards are limited to validators who register as a community RPC provider. There is a proposal in draft that will outline all thhe details on the monitoring. - -### What will happen to the staked CELO if a validator does not migrate the validator node by March March 26th, 3:00AM UTC? - -Migrations need to happen by the time the L2 is activated. If RPC is consistently offline / unregistered, it will eventually get slashed. - -### If validators who haven’t migrated are subject to slashing, would they need to deregister their validator before the hard fork? - -You can make the group ineligible for election by removing all its members, after that you can move forward with deregistering and waiting for the unlock period. - -### Are there penalties for validators who choose not to migrate to RPC nodes, can they remain in their current state and continue earning rewards from their staked CELO? - -If validators choose to not run the RPC nodes after the transition, rewards will eventually drop to zero for the voters and the validators. diff --git a/docs/cel2/whats-changed/cel2-architecture.md b/docs/cel2/whats-changed/cel2-architecture.md deleted file mode 100644 index 872635d7dd..0000000000 --- a/docs/cel2/whats-changed/cel2-architecture.md +++ /dev/null @@ -1,75 +0,0 @@ -# L2 Architecture - -Celo’s architecture is a multi-layered system that includes a Layer 2 blockchain, core smart contracts, user applications, and a dynamic network topology, all optimized for scalability, security, and ease of use. - ---- - -## Introduction to the Celo Stack - -The Celo stack consists of three main components that work together to deliver a seamless blockchain experience: - -### Celo Blockchain - -The Celo blockchain operates as a Layer 2 (L2) solution using the OP Stack, with distinct layers for optimal performance and security: - -- **Execution Layer**: EVM-compatible, allowing easy deployment of Ethereum smart contracts. -- **Data Availability Layer**: Utilizes EigenDA to ensure transaction data is accessible and cost-efficient. -- **Settlement Layer**: Leverages Ethereum to finalize transactions, benefiting from its security. - -### Celo Core Contracts - -Celo Core Contracts are essential smart contracts on the Celo blockchain, managed through decentralized governance. Key contracts include: - -- **Attestations**: Links users' phone numbers to their blockchain addresses for secure identity verification and Social Connect features. -- **Governance**: Allows community voting on protocol upgrades and changes. -- **StableToken** (e.g., cUSD, cEUR): Manages native stablecoin issuance and stability for seamless transactions. -- **Exchange**: Facilitates asset trading and liquidity within the Celo ecosystem. -- **SortedOracles**: Provides external data, like price feeds, critical for stability and DeFi applications. -- **Validators**: Manages validator operations and network security. - -### Applications - -The Application Layer connects users directly to the blockchain. Developers can build user-friendly applications that are secure, transparent, and decentralized by utilizing Celo’s blockchain. - -## Our Network Topology - -The Celo network topology consists of various nodes running the Celo blockchain software in different configurations to support the decentralized infrastructure of the network. - -### Sequencers - -Sequencers replace the traditional validator role in the L2 architecture. They are responsible for: - -- Gathering transactions from other nodes -- Executing associated smart contracts to form new blocks -- Submitting these blocks to the Ethereum L1 for final settlement - -Sequencers operate on a faster 2-second block time, improving transaction speed and throughput. - -### Full Nodes - -Full nodes in the Celo L2 network serve multiple important functions: - -- Relaying transactions and responding to queries from light clients -- Maintaining a copy of the L2 blockchain state -- Interacting with Ethereum L1 to read and verify L2 block data -- Optionally running an Ethereum node or using a third-party Ethereum node service - -Full nodes can join or leave the network at any time, providing a decentralized infrastructure for the network. - -### Light Clients - -Light clients, such as those running on mobile apps with limited data, continue to play a crucial role: - -- Connecting to full nodes to request account and transaction data -- Signing and submitting new transactions -- Operating without maintaining a full copy of the blockchain state - -Light clients benefit from the improved speed and lower costs of the L2 architecture while maintaining a similar user experience. - -### Data Availability Layer - -Celo L2 incorporates EigenDA as its Data Availability (DA) layer: - -- Ensures transaction data remains accessible and cost-efficient -- Operates separately from the execution and settlement layers -- Contributes to lower transaction costs and improved scalability diff --git a/docs/cel2/whats-changed/l1-l2.md b/docs/cel2/whats-changed/l1-l2.md deleted file mode 100644 index 6b2258d686..0000000000 --- a/docs/cel2/whats-changed/l1-l2.md +++ /dev/null @@ -1,99 +0,0 @@ -# Celo L1 → L2 - -## Node operators - -In the Celo L1 node, operators simply needed to run the celo-blockchain client, a single service that was a fork of go-ethereum. Moving to the Celo L2 node operators need to run an op-geth instance for execution, an op-node instance for consensus and an eigenda-proxy for data availability. Instructions on operating nodes are [here](../operators/overview.md). - -## Deprecated transaction types - -Sending these transaction types is no longer be supported, however you can still retrieve any historical instances of these transactions. - -- **Type 0 (`0x0`) _Celo_ legacy transaction**. These are type 0 transactions that had some combination of the following fields set ("feeCurrency", "gatewayFee", "gatewayFeeRecipient") and "ethCompatible" set to false. -- **Type 124 (`0x7c`) Celo dynamic fee transaction**. - -More details on supported transaction types [here](https://specs.celo.org/tx_types.html). - -## Native bridge to Ethereum - -An important benefit of becoming an L2 is having a native bridge to Ethereum. -CELO is now an ERC20 token native on Ethereum and users will be able to use the native bridge to move between the Celo L2 and Ethereum. -The Celo Mainnet bridge can be accessed at [Superbridge](https://superbridge.app/celo). - -## Consensus - -The BFT consensus protocol has been removed and replaced with a centralized sequencer. Although validators are no longer needed to secure consensus, the election / voting mechanism and validator set will remain for the time being. - -This is a temporary situation, and we will be working on re-introducing active roles for validators after Mainnet launch. For now, validators will serve as community rpc providers and do not need to run any special L2 infrastructure beyond full nodes. - -## Validator fees and staking rewards - -After the L2 transition, transaction fees will go to the sequencer but validators and stakers will still receive some rewards. Previously, rewards were emitted on epoch blocks but as Celo L2 does not have epoch blocks, rewards will be distributed through periodic calls to a smart contract. -The amount of rewards to be distributed has not been decided. However, rewards will likely be lower than in the Celo L1 to reflect lower infrasture requirements. - -## Hardforks - -See [here](https://specs.celo.org/l2_migration.html#changes-for-contracts-developers) for the list of hardforks that will be enabled in the first block of the L2. - -## Precompiled contracts - -All Celo specific precompiles have been removed except for the transfer precompile which supports Celo [token duality](https://specs.celo.org/token_duality.html) (the native asset CELO is also an ERC20 token) - -## Randomness - -The random contract has been removed. If randomness is needed then the PREVRANDAO opcode can be used. See [here](https://specs.celo.org/l2_migration.html#deactivated-random-contract) for more details. - -## Blocks - -- Block interval has changed from 5s to 1s -- Block gas limit has changed from 50m to 30m - -:::note -Note this results in a 300% increase in gas per second due to the shortened block time -::: - -### Added fields - -- **withdrawals** & **withdrawalsRoot** - These fields are inherited from Ethereum but not used by the op-stack or Celo. Withdrawals will always be an empty list and `withdrawalsRoot` will always be the empty withdrawals root (`0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421`). -- **blobGasUsed** & **excessBlobGas** - These fields are also inherited from Ethereum but not used by the op-stack or Celo. They will always be zero. -- **parentBeaconBlockRoot** - Set to the `parentBeaconRoot` of the L1 origin block. - -### Removed fields - -- **randomness** - Not needed since the [randomness](#randomness) feature has been removed -- **epochSnarkData** - Not needed since the Celo L2 does not support Plumo. -- **extraData** - The BLS aggregated signature has been removed as it is no longer required. - -## EIP-1559 implementation - -Previously our implementation used a smart contract [(here)](https://github.com/celo-org/celo-monorepo/blob/faca88f6a48cc7c8e6104393e49ddf7c2d7d20e3/packages/protocol/contracts-0.8/common/GasPriceMinimum.sol#L162) to calculate the base fee which allowed for governable parameters. Now we use the standard EIP1559 algorithm with the parameter values being defined in the chain config. - -For chain specific parameters see the [deployment information in the Celo specs](https://specs.celo.org/deployments.html). - -## RPC API - -### Pre-transition data - -Old blocks, transactions, receipts and logs are still be accessible via the RPC API but differ a bit from the corresponding objects retrieved from the L1 RPC API. - -In general the changes involve additional extra unset fields that have been added upstream but were not present on historical Celo L1 objects, and the removal of some unnecessarily set fields on Celo L1 objects. - -For in depth details of what has changed see [here](https://specs.celo.org/l2_migration.html). - -### Block receipts - -Historically, the Celo L1 generated block receipts when system contract calls emitted logs. The Celo L2 does not have block receipts, but pre-migration block receipts are still retrievable via the RPC API `eth_getBlockReceipt` method. - -### Pre-transition execution and state access - -RPC API calls for pre-transition blocks that are performing execution or accessing state are not directly supported by the new Celo L2 implementation. However, you can configure your Celo L2 node to proxy to an archive Celo L1 node for these calls. See the [archive node docs](../operators/run-node.md#running-an-archive-node). - -## Unsupported geth keystore API - -The old geth keystore API is not supported anymore, but you can extract your private key by using [cast](https://book.getfoundry.sh/cast/)'s `decrypt-keystore` keystore command. -Just give it the path to your keystore and the name of your key, e.g. - -``` -> cast wallet decrypt-keystore -k validator-00/keystore/ testkey -Enter password: -testkey's private key is: 0x2089e0db913b30b1c4084f3bd32ca3fd53e28437d76dbd0e609b0884b2c540ef -``` diff --git a/docs/cel2/whats-changed/op-l2.md b/docs/cel2/whats-changed/op-l2.md deleted file mode 100644 index 04db3ee628..0000000000 --- a/docs/cel2/whats-changed/op-l2.md +++ /dev/null @@ -1,51 +0,0 @@ -# Optimism → Celo L2 - -## Blocks - -Celo L2 block times are 1s as opposed to 2s for Optimism. The gas limit per block remains the same. - -## Native token - -The native token is CELO as opposed to ETH. The native token is also an ERC20 token. - -## New transaction type - -Type 123 (`0x7b`) transaction type allows paying for gas in currencies other than the native asset (CELO). It has an additional field `feeCurrency` which allows the sender to choose the gas currency. See [here](https://specs.celo.org/fee_abstraction.html) for details on using fee currencies. - -The fee currencies available at Mainnet launch will be: - - - USDC (USDC) - - Tether USD (USD₮) - - PUSO (PUSO) - - ECO CFA (eXOF) - - Celo Kenyan Shilling (cKES) - - Celo Dollar (cUSD) - - Celo Euro (cEUR) - - Celo Brazilian Real (cREAL) - -More details on supported transaction types [here](https://specs.celo.org/tx_types.html). - -## L1 fees - -In the Optimism model, an extra fee is added in order to cover the cost of transactions on the L1. This can be surprising to users as it is not included in the results of calling `eth_estimateGas` and is challenging to predict. - -The Celo L2 improves upon this experience by always keeping the L1 fee at zero. The L1 costs are covered by raising or lowering the [base fee floor](#eip-1559-implementation). This approach allows the full transaction cost to be estimated ahead of time. - -## EIP-1559 implementation - -The Celo L2 adds a base fee floor, which imposes a lower limit on the base fee. This is currently configured via the chain config. - -The starting base fee floor values are: - -- Alfajores testnet: - - base fee floor: 25 gwei -- Baklava testnet: - - base fee floor: 25 gwei - -## MaxCodeSize - -The hardcoded protocol parameter `MaxCodeSize` is raised from 24576 to 65536. - -## Improved finality guarantees - -Celo L2 blocks reference L1 blocks that are finalized, which fully protects against L1 re-orgs. In contrast, Optimism blocks reference only 4 blocks behind the L1 head. diff --git a/docs/cel2/whats-changed/overview.md b/docs/cel2/whats-changed/overview.md deleted file mode 100644 index b3871ab1bd..0000000000 --- a/docs/cel2/whats-changed/overview.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: What's changed? -description: Changes from L1 to L2 and from op-stack to L2 ---- - -# What's changed - -Celo is moving from being a POS (proof of stake) based L1 blockchain to an L2 built on the OP Stack. In Celo L1 both ordering and data availability were provided by the validators participating in the POS consensus mechanism, being an L2 means that Celo will instead rely on the L1 (Ethereum) for ordering and on [EigenDA](https://www.eigenda.xyz/) for data availability. Outsourcing those components allows Celo to offer increased scalability while focussing on providing value for users. See below for more details about all the changes involved. - -## Details - -* [Celo L1 → L2 changes](l1-l2.md) -* [Optimism → Celo L2 changes](./op-l2.md) diff --git a/docs/cli/account.md b/docs/cli/account.md deleted file mode 100644 index 9544e69226..0000000000 --- a/docs/cli/account.md +++ /dev/null @@ -1,2056 +0,0 @@ -`celocli account` -================= - -Manage your account, keys, and metadata - -* [`celocli account:authorize`](#celocli-accountauthorize) -* [`celocli account:balance ARG1`](#celocli-accountbalance-arg1) -* [`celocli account:claim-account ARG1`](#celocli-accountclaim-account-arg1) -* [`celocli account:claim-domain ARG1`](#celocli-accountclaim-domain-arg1) -* [`celocli account:claim-keybase ARG1`](#celocli-accountclaim-keybase-arg1) -* [`celocli account:claim-name ARG1`](#celocli-accountclaim-name-arg1) -* [`celocli account:claim-rpc-url ARG1`](#celocli-accountclaim-rpc-url-arg1) -* [`celocli account:claim-storage ARG1`](#celocli-accountclaim-storage-arg1) -* [`celocli account:create-metadata ARG1`](#celocli-accountcreate-metadata-arg1) -* [`celocli account:deauthorize`](#celocli-accountdeauthorize) -* [`celocli account:delete-payment-delegation`](#celocli-accountdelete-payment-delegation) -* [`celocli account:get-metadata ARG1`](#celocli-accountget-metadata-arg1) -* [`celocli account:get-payment-delegation`](#celocli-accountget-payment-delegation) -* [`celocli account:list`](#celocli-accountlist) -* [`celocli account:lock ARG1`](#celocli-accountlock-arg1) -* [`celocli account:new`](#celocli-accountnew) -* [`celocli account:offchain-read ARG1`](#celocli-accountoffchain-read-arg1) -* [`celocli account:offchain-write`](#celocli-accountoffchain-write) -* [`celocli account:proof-of-possession`](#celocli-accountproof-of-possession) -* [`celocli account:register`](#celocli-accountregister) -* [`celocli account:register-data-encryption-key`](#celocli-accountregister-data-encryption-key) -* [`celocli account:register-metadata`](#celocli-accountregister-metadata) -* [`celocli account:set-name`](#celocli-accountset-name) -* [`celocli account:set-payment-delegation`](#celocli-accountset-payment-delegation) -* [`celocli account:set-wallet`](#celocli-accountset-wallet) -* [`celocli account:show ARG1`](#celocli-accountshow-arg1) -* [`celocli account:show-claimed-accounts ARG1`](#celocli-accountshow-claimed-accounts-arg1) -* [`celocli account:show-metadata ARG1`](#celocli-accountshow-metadata-arg1) -* [`celocli account:unlock ARG1`](#celocli-accountunlock-arg1) -* [`celocli account:verify-proof-of-possession`](#celocli-accountverify-proof-of-possession) - -## `celocli account:authorize` - -Keep your locked Gold more secure by authorizing alternative keys to be used for signing attestations, voting, or validating. By doing so, you can continue to participate in the protocol while keeping the key with access to your locked Gold in cold storage. You must include a "proof-of-possession" of the key being authorized, which can be generated with the "account:proof-of-possession" command. - -``` -USAGE - $ celocli account:authorize --from 0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d -r - vote|validator|attestation --signature 0x --signer - 0xc1912fEE45d61C87Cc5EA59DaE31190FFFFf232d [-k | --useLedger | ] [-n - ] [--gasCurrency 0x1234567890123456789012345678901234567890] - [--ledgerAddresses ] [--ledgerLiveMode ] [--globalHelp] - -FLAGS - -k, --privateKey= - Use a private key to sign local transactions with - - -n, --node= - URL of the node to run commands against or an alias - - -r, --role=