{"id":21231709,"url":"https://github.com/rsksmart/tokenbridge","last_synced_at":"2025-07-31T08:05:04.392Z","repository":{"id":38357270,"uuid":"175080351","full_name":"rsksmart/tokenbridge","owner":"rsksmart","description":"A bidirectional Ethereum / RSK Token Bridge implementation.","archived":false,"fork":false,"pushed_at":"2024-08-22T13:37:35.000Z","size":17434,"stargazers_count":101,"open_issues_count":23,"forks_count":71,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-04-15T20:48:02.781Z","etag":null,"topics":["bridge","erc20","ethereum","rsk","token"],"latest_commit_sha":null,"homepage":"https://tokenbridge.rsk.co/","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rsksmart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.LESSER","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-11T20:39:22.000Z","updated_at":"2025-04-03T17:10:03.000Z","dependencies_parsed_at":"2023-02-13T06:30:51.208Z","dependency_job_id":"a2e9c5ec-da52-487c-89f9-6c7de9727bae","html_url":"https://github.com/rsksmart/tokenbridge","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/rsksmart/tokenbridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsksmart%2Ftokenbridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsksmart%2Ftokenbridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsksmart%2Ftokenbridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsksmart%2Ftokenbridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rsksmart","download_url":"https://codeload.github.com/rsksmart/tokenbridge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rsksmart%2Ftokenbridge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268009926,"owners_count":24180458,"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-07-31T02:00:08.723Z","response_time":66,"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":["bridge","erc20","ethereum","rsk","token"],"created_at":"2024-11-20T23:47:59.745Z","updated_at":"2025-07-31T08:05:04.364Z","avatar_url":"https://github.com/rsksmart.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RSK \u003c-\u003e ETH Token Bridge\n\nEthereum/RSK Bridge that allows to move ERC20 tokens from one chain to the other.\n\n## Rationale\n\nCross chain events are very important in the future of crypto. Exchanging tokens between networks allows the token holders to use them in their favorite chain without beeing restricted to the contract owner network choice. Moreover this also allows layer 2 solutions to use the same tokens on different chains, this concept together with stable coins creates a great way of payment with low volatility across networks.\n\n## Overview\n\nThe smart contract on each network are connected by bridges, a bridge on one chain would receive and lock the ERC20 tokens, this action emits an event that will be served to the bridge on the other chain. This interoperability is achieved using a Federation that sends the event from one contract to the other, once the bridge on the other chain receives the event from the Federation, it mints the tokens on the mirror ERC20 contract.\nSee the [FAQ](https://developers.rsk.co/tools/tokenbridge/faq/) to know more about how it works!\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./docs/images/token-bridge-diagram.png\"/\u003e\n\u003c/p\u003e\n\nThe bridges on each contract are upgradeable, this would enable a smooth transition to a more decentralized bridge in the future. Here's is a link to the first \n[POC of the trustless decentralized bridge](https://github.com/rsksmart/decentralized-tokenbridge)\n\n## Usage\n\nYou can use the ['Token Bridge Dapp'](https://tokenbridge.rsk.co/) together with [Nifty Wallet](https://chrome.google.com/webstore/detail/nifty-wallet/jbdaocneiiinmjbjlgalhcelgbejmnid) or [Metamask with custom network](https://github.com/rsksmart/rskj/wiki/Configure-Metamask-to-connect-with-RSK) to move tokens between networks. This is the [Dapp guide](https://developers.rsk.co/tools/tokenbridge/dappguide/) if you don't know how to use it.\nOr you can use a wallet with the abi of the contracts. See the ['interaction guide using MyCrypto'](https://developers.rsk.co/tools/tokenbridge/usingmycrypto/) for more information on how to use the bridge.\n\n## Contracts deployed on RSK, Ethereum, RSK Testnet and Kovan\n\nHere are the ['addresses'](./docs/ContractAddresses.md) of the deployed contracts in the different networks.\n\n## Report Security Vulnerabilities\n\nTo report a vulnerability, please use the [vulnerability reporting guideline](./SECURITY.md) for details on how to do it.\n\n## Developers\n\n### Contracts\n\nThe smart contracts used by the bridge and the instructions to deploy them are in the ['bridge folder'](./bridge/README.md).\nThe ABI to interact with the contracts are in the ['abi folder'](./bridge/abi)\n\n### Dapp\n\nThe dapp of the token bridge can be found in the repository ['tokenbirdge-ui'](https://github.com/rsksmart/tokenbridge-ui)\n\n\n### Federation\n\nA federation sends notification of events happening in the bridge of one chain to another chain. The federation is composed of oracles listening to the events created in one chain and sending it to the other chain. When a majority of the federators votes on an event, the bridge accepts the event as valid and releases the tokens on the other chain.\nSee the ['federator'](./federator/README.md) for more information about federations.\n\n### Integration Test\n\nAn integration test is prepared for contracts and federators. To properly run integration test, you need check network config in the `truffle-config.js` and `package.json` in `bridge` folder with your test chains' configuration before run `npm run deployIntegrationTest`.\n\nFor testing purposes only, you can let `env.FEDERATOR_KEY` empty, which fulfills the role that a `FEDERATOR_KEY` key would have in production.\nAlso, a `test.local.config.js` configuration is provided in `federator/config` for the same purpose, acting as the `config.js` file would in a productive environment.\n\n1. Check `mnemonic.key` in `bridge`\n1. Check `infura.key` in `bridge` (must contain your Infura's project ID in plain text)\n1. Check your `networkName` in `bridge/migrations/4_deploy_erc1820.js` when your test network does not have **ERC1820:Pseudo-introspection Registry Contract** deployed.\n\nThen\n1. run `npm run deployIntegrationTest` in `bridge`\n1. run `npm run integrationTest` in `federator`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsksmart%2Ftokenbridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frsksmart%2Ftokenbridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frsksmart%2Ftokenbridge/lists"}