{"id":22799965,"url":"https://github.com/tangle-network/relayer","last_synced_at":"2025-08-10T01:31:37.732Z","repository":{"id":37471127,"uuid":"357599308","full_name":"tangle-network/relayer","owner":"tangle-network","description":"🕸️ The Webb Relayer Network","archived":true,"fork":false,"pushed_at":"2024-05-07T18:52:27.000Z","size":50737,"stargazers_count":23,"open_issues_count":43,"forks_count":13,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-03-29T10:33:30.504Z","etag":null,"topics":["polkadot","rust","substrate"],"latest_commit_sha":null,"homepage":"https://webb-tools.github.io/relayer/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tangle-network.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-13T15:20:18.000Z","updated_at":"2025-03-26T00:23:39.000Z","dependencies_parsed_at":"2024-10-10T22:46:31.289Z","dependency_job_id":null,"html_url":"https://github.com/tangle-network/relayer","commit_stats":{"total_commits":374,"total_committers":15,"mean_commits":"24.933333333333334","dds":0.6737967914438503,"last_synced_commit":"eb71f988c01da425c77f6e81431de8e3a246456e"},"previous_names":["tangle-network/relayer"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/tangle-network/relayer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Frelayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Frelayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Frelayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Frelayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tangle-network","download_url":"https://codeload.github.com/tangle-network/relayer/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tangle-network%2Frelayer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269663321,"owners_count":24455796,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-09T02:00:10.424Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["polkadot","rust","substrate"],"created_at":"2024-12-12T07:10:36.483Z","updated_at":"2025-08-10T01:31:36.820Z","avatar_url":"https://github.com/tangle-network.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n\u003ca href=\"https://www.webb.tools/\"\u003e\n    \n![Webb Logo](./assets/webb_banner_light.png#gh-light-mode-only)\n![Webb Logo](./assets/webb_banner_dark.png#gh-dark-mode-only)\n  \u003c/a\u003e\n\u003c/div\u003e\n\n# Webb Relayer\n\n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/webb-tools/relayer?style=flat-square)](https://github.com/webb-tools/relayer/releases/latest) [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/webb-tools/relayer/check.yml?branch=main\u0026style=flat-square)](https://github.com/webb-tools/relayer/actions) [![License Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0) [![Twitter](https://img.shields.io/twitter/follow/webbprotocol.svg?style=flat-square\u0026label=Twitter\u0026color=1DA1F2)](https://twitter.com/webbprotocol) [![Telegram](https://img.shields.io/badge/Telegram-gray?logo=telegram)](https://t.me/webbprotocol) [![Discord](https://img.shields.io/discord/833784453251596298.svg?style=flat-square\u0026label=Discord\u0026logo=discord)](https://discord.gg/cv8EfJu3Tn)\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003ch2 id=\"table-of-contents\" style=border:0!important\u003e Table of Contents\u003c/h2\u003e\n\n\u003cdetails open=\"open\"\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003cul\u003e\n    \u003cli\u003e\u003ca href=\"#start\"\u003e Getting Started\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#relayer\"\u003eHow to Run Relayer\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#api\"\u003eRelayer APIs\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#tests\"\u003eRelayer Integration E2E Tests\u003c/a\u003e\u003c/li\u003e\n  \u003c/ul\u003e  \n\u003c/details\u003e\n\n\u003ch2 id=\"start\"\u003e Getting Started \u003c/h2\u003e\n\nIn the Webb Protocol, the relayer plays a variety of roles. This repo contains code for an Anchor System oracle, transaction and data relayer, and protocol governance participant. The aim is that these can all be run exclusive to one another to ensure maximum flexibility of external participants to the Webb Protocol.\n\nThe relayer system is composed of three main components. Each of these components should be thought of as entirely separate because they could be handled by different entities entirely.\n\n1. Private transaction relaying (of user bridge transactions like Tornado Cash’s relayer)\n2. Data querying (for zero-knowledge proof generation)\n3. Event listening, proposing, and signature relaying (of DKG proposals where the relayer acts like an oracle)\n\n#### Transaction relaying role\n\nRelayers who fulfill the role of a transaction relayer are responsible with exposing an API for clients who wish to relay their zero-knowledge transactions through and with submitting them. Relayers of this role must possess enough balance on the blockchains in which they will relay these transactions, since, after all, they must possess the native balance to pay the fees for these transactions. Relayers can be configured for any number of chains and protocols from mixers to variable anchors and run for individual chains or all of them that exist for a given bridged set of anchors.\n\n#### Data querying role\n\nRelayers who fulfill this role do so in conjunction with the transaction relaying role although it is not required to possess both. Namely, this role is concerned with listening to the events occurring within an Anchor Protocol instance and storing the data for clients who wish to quickly access it through traditional HTTP methods. This role is actively maintained and sees regular updates to how we hope to store and serve data in the future.\n\n#### Oracle role\n\nRelayers who fulfill the role of an oracle listen to the Anchor Protocol instances on the various chains the anchors exist on. When they hear of insertions into the anchors' merkle trees they handle them accordingly (as is implemented in the event watchers). Those playing this role then relay the anchor update information to other connected Anchors, the DKG governance system, and any other integration that gets implemented in this repo. Oracle relayers help keep the state of an Anchor Protocol instance up to date by ensuring that all anchors within an instance know about the latest state of their neighboring anchors.\n\nFor additional information, please refer to the [Webb Relayer Rust Docs](https://webb-tools.github.io/relayer/). Have feedback on how to improve the relayer network? Or have a specific question to ask? Checkout the [Relayer Feedback Discussion](https://github.com/webb-tools/feedback/discussions/categories/webb-relayer-feedback).\n\n---\n\n### Prerequisites\n\nThis repo uses Rust so it is required to have a Rust developer environment set up. First install and configure rustup:\n\n```bash\n# Install\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n# Configure\nsource ~/.cargo/env\n```\n\nConfigure the Rust toolchain to default to the latest stable version:\n\n```bash\nrustup default stable\nrustup update\n```\n\nGreat! Now your Rust environment is ready!\n\n---\n\n\u003ch2 id=\"relayer\"\u003e How to run a relayer \u003c/h2\u003e\n\n##### 1. Relayer setup\nClone relayer \n```bash\ngit clone https://github.com/webb-tools/relayer.git\ncd relayer\ncargo build --release --features cli -p webb-relayer\n```\n\n##### 2. Relayer Configuration\nYou need to create configuration files for the relayer. You can find multiple examples [here](./config). Simplest of them is running [evm-blanknet](./config/development/evm-blanknet) configuration which connects to our development environment [Orbit](https://github.com/webb-tools/orbit).\n\nYou can either use pre defined configurations or create new config directory.\n\n```\nrelayer-config // path to dir containing relayer configuration files\n```\n\u003e **Note**: You could also use the `json` format for the config files if you prefer that!\n\n##### 3. Run Relayer\nOnce relayer configuration files are created we run relayer using following command\n\n```bash\n./target/release/webb-relayer -vvv -c ./relayer-config\n```\n- Example to run relayer with `evm-blanknet` configuration\n```bash\n./target/release/webb-relayer -vvv -c ./config/development/evm-blanknet\n```\n---\n\n\u003ch2 id=\"api\"\u003e Relayer API Documentation \u003c/h2\u003e\n\nRelayer provides API support to query cached leaves, configuration info, metrics.\n\nTo refer more about API support kindly checkout readme docs [here](./crates/relayer-handlers/src/README.md)\n\n---\n\u003ch2 id=\"tests\"\u003eRelayer Integration E2E Tests\u003c/h2\u003e\nTo ensure the proper functioning of the Relayer, integration end-to-end (E2E) tests have been provided. These tests validate the Relayer's behavior in various scenarios.\n\nTo learn how to run these integration tests, please follow the step-by-step instructions outlined in the relayer tests readme guide [here](./tests/README.md)\n\n\n---\n\n## Contributing\n\nInterested in contributing to the Webb Relayer Network? Thank you so much for your interest! We are always appreciative for contributions from the open-source community!\n\nIf you have a contribution in mind, please check out our [Contribution Guide](./.github/CONTRIBUTING.md) for information on how to do so. We are excited for your first contribution!\n\n## License\n\nLicensed under \u003ca href=\"LICENSE\"\u003eApache 2.0 license\u003c/a\u003e.\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in this crate by you, as defined in the Apache 2.0 license, shall\nbe licensed as above, without any additional terms or conditions.\n\n## Supported by\n\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n \u003cimg src=\"./assets/w3f.jpeg\" width=\"30%\" height=\"60%\" \u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftangle-network%2Frelayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftangle-network%2Frelayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftangle-network%2Frelayer/lists"}