{"id":13525696,"url":"https://github.com/dfinity/evm-rpc-canister","last_synced_at":"2025-09-02T16:56:19.528Z","repository":{"id":155179173,"uuid":"623380778","full_name":"dfinity/evm-rpc-canister","owner":"dfinity","description":"Interact with EVM blockchains from the Internet Computer.","archived":false,"fork":false,"pushed_at":"2025-08-27T14:54:34.000Z","size":2728,"stargazers_count":77,"open_issues_count":20,"forks_count":21,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-08-27T20:35:53.822Z","etag":null,"topics":["alchemy","arbitrum","avalanche","cloudflare","cross-chain","dfinity","ethereum","evm","fantom","icp","integration","optimism","polygon","solana","web3"],"latest_commit_sha":null,"homepage":"https://internetcomputer.org/docs/current/developer-docs/multi-chain/ethereum/evm-rpc/overview","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/dfinity.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2023-04-04T08:59:39.000Z","updated_at":"2025-08-25T13:27:23.000Z","dependencies_parsed_at":"2023-12-18T22:23:51.836Z","dependency_job_id":"4e8b03c4-083c-4302-87b2-e0b5d40ee7c6","html_url":"https://github.com/dfinity/evm-rpc-canister","commit_stats":null,"previous_names":["internet-computer-protocol/evm-rpc-canister","internet-computer-protocol/ic-eth-rpc","dfinity/evm-rpc-canister"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/dfinity/evm-rpc-canister","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fevm-rpc-canister","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fevm-rpc-canister/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fevm-rpc-canister/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fevm-rpc-canister/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dfinity","download_url":"https://codeload.github.com/dfinity/evm-rpc-canister/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dfinity%2Fevm-rpc-canister/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273317765,"owners_count":25084037,"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-09-02T02:00:09.530Z","response_time":77,"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":["alchemy","arbitrum","avalanche","cloudflare","cross-chain","dfinity","ethereum","evm","fantom","icp","integration","optimism","polygon","solana","web3"],"created_at":"2024-08-01T06:01:21.140Z","updated_at":"2025-09-02T16:56:19.448Z","avatar_url":"https://github.com/dfinity.png","language":"Rust","funding_links":[],"categories":["Chain Fusion"],"sub_categories":["Ethereum"],"readme":"# EVM RPC \u0026nbsp;[![GitHub license](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/internet-computer-protocol/evm-rpc-canister/issues)\n\n\u003e #### Interact with [EVM blockchains](https://chainlist.org/?testnets=true) from the [Internet Computer](https://internetcomputer.org/).\n\n## Overview\n\n**EVM RPC** is an Internet Computer canister smart contract for communicating with [Ethereum](https://ethereum.org/en/) and other [EVM blockchains](https://chainlist.org/?testnets=true) using an on-chain API. \n\nThis canister facilitates API requests to JSON-RPC services such as [CloudFlare](https://www.cloudflare.com/en-gb/web3/), [Alchemy](https://www.alchemy.com/), [Ankr](https://www.ankr.com/), or [BlockPI](https://blockpi.io/) using [HTTPS outcalls](https://internetcomputer.org/https-outcalls). This enables functionality similar to traditional Ethereum dapps, including querying Ethereum smart contract states and submitting raw transactions.\n\nBeyond the Ethereum blockchain, this canister also has partial support for Polygon, Avalanche, and other popular EVM networks. Check out [ChainList.org](https://chainlist.org/?testnets=true) for an extensive list of networks and RPC providers.\n\nYou can read more about the inner workings of the EVM RPC canister [here](https://medium.com/dfinity/icp-ethereum-how-icps-evm-rpc-canister-connects-the-networks-b57909efecf6).\n\n## Documentation\n\nYou can find extensive documentation for the EVM RPC canister in the [ICP developer docs](https://internetcomputer.org/docs/current/developer-docs/multi-chain/ethereum/evm-rpc/overview).\n\n## Canister\n\nThe EVM RPC canister runs on the [fiduciary subnet](https://internetcomputer.org/docs/current/concepts/subnet-types#fiduciary-subnets) with the following principal: [`7hfb6-caaaa-aaaar-qadga-cai`](https://dashboard.internetcomputer.org/canister/7hfb6-caaaa-aaaar-qadga-cai). \n\nRefer to the [Reproducible Builds](#reproducible-builds) section for information on how to verify the hash of the deployed WebAssembly module.\n\n## Quick Start\n\nAdd the following to your `dfx.json` config file (replace the `ic` principal with any option from the list of available canisters above):\n\n```json\n{\n  \"canisters\": {\n    \"evm_rpc\": {\n      \"type\": \"custom\",\n      \"candid\": \"https://github.com/internet-computer-protocol/evm-rpc-canister/releases/latest/download/evm_rpc.did\",\n      \"wasm\": \"https://github.com/internet-computer-protocol/evm-rpc-canister/releases/latest/download/evm_rpc.wasm.gz\",\n      \"remote\": {\n        \"id\": {\n          \"ic\": \"7hfb6-caaaa-aaaar-qadga-cai\"\n        }\n      },\n      \"init_arg\": \"(record {})\"\n    }\n  }\n}\n```\n\nRun the following commands to deploy the canister in your local environment:\n\n```sh\n# Start the local replica\ndfx start --background\n\n# Locally deploy the `evm_rpc` canister\ndfx deploy evm_rpc --argument '(record {})'\n```\n\nThe EVM RPC canister also supports [`dfx deps pull`](https://internetcomputer.org/docs/current/references/cli-reference/dfx-deps). Add the following to your `dfx.json` file:\n\n```json\n{\n  \"canisters\": {\n    \"evm_rpc\": {\n      \"type\": \"pull\",\n      \"id\": \"7hfb6-caaaa-aaaar-qadga-cai\"\n    }\n  }\n}\n```\n\nNext, run the following commands:\n\n```sh\n# Start the local replica\ndfx start --background\n\n# Locally deploy the `evm_rpc` canister\ndfx deps pull\ndfx deps init evm_rpc --argument '(record {})'\ndfx deps deploy\n```\n\n## Examples\n\n### JSON-RPC (IC mainnet)\n\n```bash\ndfx canister call evm_rpc request '(variant {Chain=0x1},\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"eth_gasPrice\\\",\\\"params\\\":[],\\\"id\\\":1}\",1000)' --wallet $(dfx identity get-wallet --ic) --with-cycles 1000000000 --ic\n```\n\n### JSON-RPC (local replica)\n\n```bash\n# Use a custom provider\ndfx canister call evm_rpc request '(variant {Custom=record {url=\"https://cloudflare-eth.com\"}},\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"eth_gasPrice\\\",\\\"params\\\":[],\\\"id\\\":1}\",1000)' --wallet $(dfx identity get-wallet) --with-cycles 1000000000\ndfx canister call evm_rpc request '(variant {Custom=record {url=\"https://ethereum.publicnode.com\"}},\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"eth_gasPrice\\\",\\\"params\\\":[],\\\"id\\\":1}\",1000)' --wallet $(dfx identity get-wallet) --with-cycles 1000000000\n\n# Use a specific EVM chain\ndfx canister call evm_rpc request '(variant {Chain=0x1},\"{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"eth_gasPrice\\\",\\\"params\\\":[],\\\"id\\\":1}\",1000)' --wallet $(dfx identity get-wallet) --with-cycles 1000000000\n```\n\n## Reproducible Builds\n\nThe EVM RPC canister supports [reproducible builds](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/test/reproducible-builds):\n\n1. Ensure [Docker](https://www.docker.com/get-started/) is installed on your machine.\n2. Run `scripts/docker-build` in your terminal. \n4. Run `sha256sum evm_rpc.wasm.gz` on the generated file to view the SHA-256 hash.\n\nIn order to verify the latest EVM RPC Wasm file, please make sure to download the corresponding version of the source code from the latest GitHub release.\n\n## Contributing\n\nContributions are welcome! Please check out the [contributor guidelines](https://github.com/internet-computer-protocol/evm-rpc-canister/blob/main/.github/CONTRIBUTING.md) for more information.\n\nRun the following commands to set up a local development environment:\n\n```bash\n# Clone the repository and install dependencies\ngit clone https://github.com/internet-computer-protocol/evm-rpc-canister\ncd evm-rpc-canister\nnpm install\n\n# Deploy to the local replica\ndfx start --background\nnpm run generate\ndfx deploy evm_rpc\n\n# Alternatively, deploy and run test suite\ndfx start --background\nscripts/e2e\n```\n\nRegenerate language bindings with the `generate` [npm script](https://docs.npmjs.com/cli/v10/using-npm/scripts):\n\n```bash\nnpm run generate\n```\n\n## Learn More\n\n* [Candid interface](https://github.com/internet-computer-protocol/evm-rpc-canister/blob/main/candid/evm_rpc.did)\n\n## Related Projects\n\n* [`evm-rpc-canister-types`](https://crates.io/crates/evm-rpc-canister-types/3.0.0): Rust types for interacting with the EVM RPC canister.\n* [`ic-evm-utils`](https://crates.io/crates/ic-evm-utils): A convenience crate for interacting with the EVM RPC Canister from canisters written in Rust.\n* [chain-fusion-starter](https://github.com/letmejustputthishere/chain-fusion-starter): starter template leveraging chain fusion technology to build EVM coprocessors on the Internet Computer Protocol.\n* [Bitcoin canister](https://github.com/dfinity/bitcoin-canister): interact with the Bitcoin blockchain from the Internet Computer.\n* [ckETH](https://forum.dfinity.org/t/cketh-a-canister-issued-ether-twin-token-on-the-ic/22819): a canister-issued Ether twin token on the Internet Computer.\n* [ICP 🔗 ETH](https://github.com/dfinity/icp-eth-starter): a full-stack starter project for calling Ethereum smart contracts from an IC dapp.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfinity%2Fevm-rpc-canister","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdfinity%2Fevm-rpc-canister","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdfinity%2Fevm-rpc-canister/lists"}