{"id":13751237,"url":"https://github.com/kkrt-labs/kakarot-rpc","last_synced_at":"2025-05-09T18:31:05.982Z","repository":{"id":65272525,"uuid":"554756922","full_name":"kkrt-labs/kakarot-rpc","owner":"kkrt-labs","description":"Kakarot ZK EVM Ethereum RPC adapter","archived":false,"fork":false,"pushed_at":"2024-10-29T11:38:29.000Z","size":10865,"stargazers_count":135,"open_issues_count":41,"forks_count":96,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-10-29T13:11:37.331Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/kkrt-labs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-20T10:44:54.000Z","updated_at":"2024-10-29T11:38:33.000Z","dependencies_parsed_at":"2023-01-16T03:30:48.533Z","dependency_job_id":"f8f7a168-39d8-4e17-b499-48601a151f1f","html_url":"https://github.com/kkrt-labs/kakarot-rpc","commit_stats":null,"previous_names":["kkrt-labs/kakarot-rpc"],"tags_count":90,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkrt-labs%2Fkakarot-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkrt-labs%2Fkakarot-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkrt-labs%2Fkakarot-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkrt-labs%2Fkakarot-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kkrt-labs","download_url":"https://codeload.github.com/kkrt-labs/kakarot-rpc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224876988,"owners_count":17384699,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T09:00:39.523Z","updated_at":"2025-05-09T18:31:05.950Z","avatar_url":"https://github.com/kkrt-labs.png","language":"Rust","funding_links":[],"categories":["Layer 2 ##"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eKakarot RPC\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"docs/images/kakarot_github_banner.png\" width=\"700\"\u003e\n  \u003c/p\u003e\n  \u003cbr /\u003e\n  \u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/issues/new?assignees=\u0026labels=bug\u0026template=01_BUG_REPORT.md\u0026title=bug%3A+\"\u003e\n  Report a Bug\n  \u003c/a\u003e\n  -\n  \u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/issues/new?assignees=\u0026labels=enhancement\u0026template=02_FEATURE_REQUEST.md\u0026title=feat%3A+\"\u003e\n  Request a Feature\n  \u003c/a\u003e\n  -\n  \u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/discussions\"\u003eAsk a Question\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cbr /\u003e\n\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/kkrt-labs/kakarot-rpc/push.yml?branch=main)\n[![Project license](https://img.shields.io/github/license/sayajin-labs/kakarot-rpc.svg?style=flat-square)](LICENSE)\n[![Pull Requests welcome](https://img.shields.io/badge/PRs-welcome-ff69b4.svg?style=flat-square)](https://github.com/sayajin-labs/kakarot-rpc/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\n\n\u003c/div\u003e\n\n\u003cdetails open=\"open\"\u003e\n\u003csummary\u003eTable of Contents\u003c/summary\u003e\n\n- [Report a Bug](https://github.com/sayajin-labs/kakarot-rpc/issues/new?assignees=\u0026labels=bug\u0026template=01_BUG_REPORT.md\u0026title=bug%3A+\")\n- [Request a Feature](https://github.com/sayajin-labs/kakarot-rpc/issues/new?assignees=\u0026labels=enhancement\u0026template=02_FEATURE_REQUEST.md\u0026title=feat%3A+≠≠≠≠≠≠≠)\n- [About](#about)\n- [Architecture](#architecture)\n  - [High level](#high-level)\n  - [Low level](#low-level)\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n- [Installation](#installation)\n  - [Setup the project](#setup-the-project)\n  - [Build from source](#build-from-source)\n  - [Environment variables](#environment-variables)\n  - [Dev mode with Katana](#dev-mode-with-katana)\n  - [Building a Docker Image](#building-a-docker-image)\n  - [Sending transactions to RPC using forge script](#sending-transactions-to-rpc-using-forge-script)\n  - [Configuration](#configuration)\n- [Running a Node in Various Environments](#running-a-node-in-various-environments)\n  - [Local Environment](#local-environment)\n  - [Staging Environment](#staging-environment)\n  - [Production Environment](#production-environment)\n  - [Potential Pitfalls, Caveats, and Requirements](#potential-pitfalls-caveats-and-requirements)\n    - [Requirements](#requirements)\n    - [Potential Pitfalls](#potential-pitfalls)\n    - [Caveats](#caveats)\n  - [API](#api)\n- [Testing](#testing)\n  - [Rust tests](#rust-tests)\n  - [Apibara indexer tests](#apibara-indexer-tests)\n  - [Hive](#hive)\n- [Project assistance](#project-assistance)\n- [Contributing](#contributing)\n- [Glossary](#glossary)\n- [Authors \\\u0026 contributors](#authors--contributors)\n- [Security](#security)\n- [License](#license)\n- [Acknowledgements](#acknowledgements)\n- [Benchmarks](#benchmarks)\n- [Contributors ✨](#contributors-)\n\n\u003c/details\u003e\n\n---\n\n## Update\n\nThe development of `kakarot-rpc` is halted for now. This repository - an\nEthereum RPC gateway to Starknet EVM - is frozen, mainly to halt creation of new\nissues and pull requests. It is MIT licensed, not audited.\n\n## About\n\nKakarot RPC fits in the three-part architecture of the Kakarot zkEVM rollup\n([Kakarot EVM Cairo Programs](https://github.com/kkrt-labs/kakarot), Kakarot\nRPC, [Kakarot Indexer](indexer/README.md)). It is the implementation of the\nEthereum JSON-RPC specification made to interact with Kakarot zkEVM in a fully\nEthereum-compatible way.\n\n![Kakarot zkEVM architecture](./docs/images/Kakarot%20zkEVM.png)\n\nThe Kakarot RPC layer's goal is to receive and output EVM-compatible payloads \u0026\ncalls while interacting with an underlying StarknetOS client. This enables\nKakarot zkEVM to interact with the usual Ethereum tooling: Metamask, Hardhat,\nFoundry, etc.\n\nNote that this is necessary because Kakarot zkEVM is implemented as a set of\nCairo Programs that run on an underlying CairoVM (so-called StarknetOS) chain.\n\nThis adapter layer is based on:\n\n- [The Ethereum JSON-RPC spec](https://github.com/ethereum/execution-apis/tree/main/src/eth)\n- [The Starknet JSON-RPC spec](https://github.com/starkware-libs/starknet-specs/blob/master/api/starknet_api_openrpc.json)\n- [And their differences](https://github.com/starkware-libs/starknet-specs/blob/master/starknet_vs_ethereum_node_apis.md)\n\n## Architecture\n\n### High level\n\nHere is a high level overview of the architecture of Kakarot RPC.\n\n![Kakarot RPC Adapter flow](\u003c./docs/images/Kakarot%20RPC%20(lower%20level).png\u003e)\n\n### Low level\n\nBelow is a lower level detailed overview of the internal architecture.\n![Kakarot RPC Adapter flow](https://github.com/kkrt-labs/ef-tests/assets/82421016/4b34cbbb-df50-4ce3-9aaa-ed42b80ecd3b)\n\n## Getting Started\n\nTL;DR:\n\n- Run `make setup` to build dependencies.\n- Run `cargo build` to build Kakarot RPC.\n- Test with `make test`.\n- Run Kakarot RPC in dev mode:\n  - Run dev RPC: `make run-dev` (you'll need a StarknetOS instance running in\n    another process and Kakarot contracts deployed)\n- Run with Docker Compose:\n  - `make local-rpc-up`\n  - To kill these processes, `make docker-down`\n- Build the docker image for the RPC:\n  - `make docker-build`\n\n### Prerequisites\n\n- [Rust](https://www.rust-lang.org/tools/install): The codebase is written in\n  Rust to ensure high performance, maintainability, and a developer-friendly\n  experience.\n- [Docker](https://docs.docker.com/engine/install): Required for containerizing\n  and running the various services and components in a consistent environment.\n- [Python](https://www.python.org/): Used primarily for interacting with and\n  building our Kakarot programs.\n- [UV](https://github.com/astral-sh/uv): An extremely fast Python package and\n  project manager, written in Rust. Used for managing the dependencies of our\n  Kakarot programs.\n- [Deno](https://docs.deno.com/runtime/manual/): A JavaScript runtime used for\n  our indexing service, based on the [Apibara](https://www.apibara.com/docs)\n  third-party service.\n- Make: Utilized to interact with the `Makefile` for running commands such as\n  building the project or executing tests.\n\n## Installation\n\n### Setup the project\n\nTo set up the repository (pulling git submodule and building Cairo\ndependencies), run:\n\n```console\nmake setup\n```\n\nCaveats:\n\n1. the `setup` make command uses linux (MacOs compatible) commands to allow\n   running the `./scripts/extract_abi.sh`. This script is used to use strongly\n   typed Rust bindings for Cairo programs. If you encounter problems when\n   building the project, try running `./scripts/extract_abi.sh`.\n2. the [kakarot](https://github.com/kkrt-labs/kakarot) submodule uses Python to\n   build and deploy Kakarot contracts. If you don't have the right version\n   available, we recommend to use [pyenv](https://github.com/pyenv/pyenv) to\n   install it.\n3. We use a pre-commit hook to ensure code quality and consistency. The hook are\n   managed and automatically installed by trunk.\n\n### Build from source\n\nTo build the project from source (in release mode):\n\n```console\ncargo build --release\n```\n\nNote that there are sometimes issues with some dependencies (notably scarb or\ncairo related packages, there are sometimes needs to `cargo clean` and\n`cargo build`)\n\n### Environment variables\n\nCopy the `.env.example` file to a `.env` file and populate each variable\n\n```console\ncp .env.example .env\n```\n\nMeanwhile you can just use unit tests to dev.\n\n```console\nmake test\n```\n\nThe binaries will be located in `target/release/`.\n\n### Dev mode with [Katana](https://github.com/dojoengine/dojo/tree/main/crates/katana)\n\nTo run a local Starknet sequencer, you can use Katana. Katana, developed by the\nDojo team, is a sequencer designed to aid in local development. It allows you to\nperform all Starknet-related activities in a local environment, making it an\nefficient platform for development and testing. To run Katana and deploy the\nKakarot zkEVM (a set of Cairo smart contracts implementing the EVM):\n\n```console\nmake run-katana\n```\n\nThis command will install Katana and generate a genesis file at\n`.katana/genesis.json`. Katana's genesis configuration feature is a way to\ndefine the initial state and settings of the Kakarot blockchain network locally,\nproviding a customizable starting point for the chain. Among other things, it\nallows you to:\n\n- Specify the token used for network fees.\n- Allocate initial token balances to accounts.\n- Pre-declare classes at the start of the chain.\n- Pre-deploy smart contracts at the start of the chain.\n\nTo deploy Kakarot Core EVM (set of Cairo Programs):\n\n```console\n make deploy-kakarot\n```\n\nTo run the Kakarot RPC pointing to this local devnet:\n\n```console\nSTARKNET_NETWORK=katana make run-dev\n```\n\nSome notes on this local devnet:\n\n- this will run a devnet by running katana, **with contracts automatically\n  deployed**, so you don't have to do them manually (see in\n  `./lib/kakarot/kakarot_scripts/deploy_kakarot.py` for the list of contracts).\n\n- the deployments and declarations for the devnet will be written to the\n  `deployments/katana` folder inside your project root after a successful run of\n  the `make deploy-kakarot` command.\n\n### Building a [Docker Image](https://docs.docker.com/reference/cli/docker/image/build/)\n\nIn order to build a Docker Image for the RPC, you can run the below command\nwhich will setup the local environment and compile the binary:\n\n```console\nmake docker-build\n```\n\n### Sending transactions to RPC using [forge script](https://book.getfoundry.sh/reference/forge/forge-script)\n\nAn example script to run which uses a pre-funded EOA account with private key\n`EVM_PRIVATE_KEY`\n\n```console\nforge script scripts/PlainOpcodes.s.sol --broadcast --legacy --slow\n```\n\n### Configuration\n\nKakarot RPC is configurable through environment variables. Check out\n`.env.example` file to see the environment variables.\n\n## Running a Node in Various Environments\n\nThis section outlines how to run a complete node in different environments:\nlocal, staging, and production. Running a node involves several critical\ncomponents to ensure the system operates effectively:\n\n- **Starknet Engine**: Interacts with the Starknet ecosystem and processes\n  transactions.\n- **Kakarot Programs**: Implement the EVM logic using Cairo.\n- **RPC Node**: Manages the Ethereum RPC logic, facilitating smooth interaction\n  with the Kakarot chain.\n- **Apibara Service**: Monitors the Kakarot chain and indexes its data.\n- **MongoDB**: Serves as the database for storing transactions after indexing\n  and acts as the core component for fetching information.\n\nBy correctly configuring these components, you can ensure that the node\nfunctions as a robust part of the system.\n\nIn the following sections we have tried to provide the most important parameters\nuseful for understanding and configuring the node. However for the sake of\nbrevity, certain parameters deemed less important are omitted and can all be\nfound in the corresponding Docker compose files:\n\n- Local: `docker-compose.yaml`\n- Staging: `docker-compose.staging.yaml`\n- Production: `docker-compose.prod.yaml`\n\n### Local Environment\n\nTo start the entire infrastructure locally, use the following command:\n\n```console\nmake local-rpc-up\n```\n\nThis command will use the `docker-compose.yaml` file to set up the whole\ninfrastructure locally utilizing the following elements:\n\n- **Katana (local sequencer)**:\n\n  - Fees disabled (ETH and STRK gas price set to 0).\n  - Maximum steps for account validation logic set to 16,777,216.\n  - Maximum steps for account execution logic set to 16,777,216.\n  - Chain ID set to KKRT (0x4b4b5254 in ASCII).\n\n- **Kakarot EVM Programs**:\n\n  - Prefunded Katana account with:\n    - Account address:\n      `0xb3ff441a68610b30fd5e2abbf3a1548eb6ba6f3559f2862bf2dc757e5828ca`.\n    - Private key:\n      `0x2bbf4f9fd0bbb2e60b0316c1fe0b76cf7a4d0198bd493ced9b8df2a3a24d68a`.\n  - Anvil (local Ethereum node):\n    - Private key:\n      `0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80`.\n  - Katana RPC URL: `http://starknet:5050`.\n  - Network: `STARKNET_NETWORK=katana`.\n\n- **Kakarot RPC Node** on port 3030:\n\n  - MongoDB connection string:\n    `MONGO_CONNECTION_STRING=mongodb://mongo:mongo@mongo:27017`.\n  - Database name: `MONGO_DATABASE_NAME=kakarot-local`.\n  - Max calldata felts: 30,000.\n  - Pending transactions stored in MongoDB, with a retry service running every\n    second.\n  - Currently, Kakarot does not support pre-EIP-155 transactions, except for a\n    whitelist of specific transaction hashes that can be found in the\n    corresponding Docker compose file.\n\n- **Apibara Indexer Service** on port 7171:\n\n  - Uses the Starknet node URL for RPC.\n  - Configured with MongoDB and Kakarot addresses.\n\n- **MongoDB** with Mongo Express on port 27017 for data management.\n- **Blockscout** on port 4000, provides a web interface for exploring and\n  analyzing blockchain data.\n\n### Staging Environment\n\nTo start the entire infrastructure in the staging environment, use the following\ncommand:\n\n```console\nmake staging-rpc-up\n```\n\nThis command will use the `docker-compose.staging.yaml` file to set up the whole\ninfrastructure in the staging configuration utilizing the following elements:\n\n- **Starknet Full-Node (Juno)** on port 6060:\n\n  - Pending block is synced to the head of the chain every second.\n  - Ethereum node websocket endpoint to be specified by env variable\n    `ETH_NODE_WS` (for example\n    `ETH_NODE_WS=wss://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY`).\n  - Network configuration:\n    - Network name: `KKRT_BETA`.\n    - Network feeder URL:\n      `https://gateway-beta.kakarot.sw-dev.io/feeder_gateway/`.\n    - Network gateway URL: `https://gateway-beta.kakarot.sw-dev.io/gateway/`.\n    - L1 chain ID: `11155111` (Ethereum Sepolia).\n    - L2 chain ID: `kkrt`.\n    - Core contract address: `0xc7c9ea7fD0921Cb6EDd9a3184F88cF1b821aA82B`.\n    - Network range of blocks to skip hash verifications: `0` to `0`.\n\n- **Starknet Explorer** on port 4000:\n\n  - RPC API hosts.\n  - Database connection details for Postgres.\n  - Secret key base for security.\n  - Listener enabled for synchronizing with the Starknet node.\n\n- **Starknet Explorer Database (Postgres)** on port 5432.\n\n- **Kakarot RPC Node** on port 3030:\n\n  - Starknet network URL: `http://starknet:6060`.\n  - MongoDB connection string: `mongodb://mongo:mongo@mongo:27017`.\n  - Database name: `kakarot-local`.\n  - Kakarot address:\n    `0x2824d6ed6759ac4c4a54a39b78d04c0e48be8937237026bf8c3bf46a8bea722`.\n  - Uninitialized account class hash:\n    `0x600f6862938312a05a0cfecba0dcaf37693efc9e4075a6adfb62e196022678e`.\n  - Max calldata felts: 30,000.\n  - Pending transactions stored in MongoDB, with a retry service running every\n    10 second.\n  - Whitelisted pre-EIP-155 transaction hashes (see the corresponding Docker\n    compose file).\n\n- **Apibara DNA Indexer Service** on port 7171:\n\n  - Uses the Starknet node URL for RPC.\n  - Configured with MongoDB and Kakarot addresses.\n\n- **MongoDB** with Mongo Express on port 27017 for data management.\n- **Blockscout** on port 4001, provides a web interface for exploring and\n  analyzing blockchain data.\n\n### Production Environment\n\nTo start the entire infrastructure in the production environment, use the\nfollowing command:\n\n```console\nmake testnet-rpc-up\n```\n\nThis command will use the `docker-compose.prod.yaml` file to set up the whole\ninfrastructure in the production configuration utilizing the following elements:\n\n- **Starknet Full-Node (Juno)** on port 6060:\n\n  - Synchronizes pending blocks to the head of the chain every second.\n  - Ethereum node websocket endpoint specified by `ETH_NODE_WS` (for example\n    `ETH_NODE_WS=wss://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY`).\n  - Network configuration:\n    - Network name: `kakarot-sepolia`.\n    - Network feeder URL: `https://gateway.kakarot.sw-dev.io/feeder_gateway/`.\n    - Network gateway URL: `https://gateway.kakarot.sw-dev.io/gateway/`.\n    - L1 chain ID: `11155111` (Ethereum Sepolia).\n    - L2 chain ID: `kkrt`.\n    - Core contract address: `0x74Ca1aC5BD4c3c97006d2B7b9375Dd3B6C17ACcD`.\n    - Network range of blocks to skip hash verifications: `0` to `1000000`.\n\n- **Starknet Explorer** on port 4000:\n\n  - RPC API hosts.\n  - Database connection details for Postgres.\n  - Secret key base for security.\n  - Listener enabled for synchronizing with the Starknet node.\n\n- **Starknet Explorer Database (Postgres)** on port 5432.\n\n- **Kakarot RPC Node** on port 3030:\n\n  - Starknet network URL: `http://starknet:6060`.\n  - MongoDB connection string: `mongodb://mongo:mongo@mongo:27017`.\n  - Database name: `kakarot-local`.\n  - Kakarot address:\n    `0x11c5faab8a76b3caff6e243b8d13059a7fb723a0ca12bbaadde95fb9e501bda`.\n  - Uninitialized account class hash:\n    `0x600f6862938312a05a0cfecba0dcaf37693efc9e4075a6adfb62e196022678e`.\n  - Account contract class hash:\n    `0x1276d0b017701646f8646b69de6c3b3584edce71879678a679f28c07a9971cf`.\n  - Max calldata felts: 30,000.\n  - Pending transactions stored in MongoDB, with a retry service running every\n    10 seconds.\n  - Whitelisted pre-EIP-155 transaction hashes (see local environment).\n\n- **Apibara DNA Indexer Service** on port 7171:\n\n  - Uses the Starknet node URL for RPC.\n  - Configured with MongoDB and Kakarot addresses.\n\n- **MongoDB** with Mongo Express on port 27017 for data management.\n- **Blockscout** on port 4001, provides a web interface for exploring and\n  analyzing blockchain data.\n\n### Potential Pitfalls, Caveats, and Requirements\n\nWhen setting up the Kakarot node in any environment, it's important to be aware\nof the following:\n\n#### Requirements\n\n- **Hardware**: Ensure your system meets the necessary hardware requirements for\n  running Docker containers efficiently. A modern multi-core CPU, at least 16GB\n  of RAM, and ample storage space are recommended.\n- **Software**: Install the latest versions of Docker and Docker Compose to\n  ensure compatibility with the provided configuration.\n- **Network**: Stable internet connection for downloading images and\n  communicating with remote services if needed. We have noticed difficulties on\n  networks with low bandwidth.\n\n#### Potential Pitfalls\n\n- **Resource Limits**: Docker containers might consume significant system\n  resources. Monitor system performance and consider adjusting container\n  resource limits if necessary.\n- **Network Configuration**: Ensure no port conflicts on your local machine,\n  especially with ports 3030, 5050, 6060, 7171, 27017... used by the services.\n- **Volume Persistence**: Docker volumes are used for data persistence. Ensure\n  they are properly managed and backed up to prevent data loss.\n\n#### Caveats\n\n- **Pre-EIP-155 Transactions**: Kakarot does not natively support pre-EIP-155\n  transactions, except for those whitelisted. Be cautious about transaction\n  compatibility.\n- **Environment Configuration**: Double-check environment variables and their\n  values, particularly those related to security, such as private keys and\n  database credentials.\n- **Service Dependencies**: The order of service initialization is crucial.\n  Dependencies between services must be respected to avoid runtime errors.\n\n### API\n\nYou can take a look at `rpc-call-examples` directory. Please note the following:\n\n- `sendRawTransaction.hurl`: the raw transaction provided allows to call the\n  `inc()` function for the Counter contract. However, given that this\n  transaction is signed for the EOA's nonce at the current devnet state (0x2),\n  the call will only work once. If you want to keep incrementing (or\n  decrementing) the counter, you need to regenerate the payload for the call\n  with an updated nonce using the\n  [provided python script](https://github.com/kkrt-labs/kakarot/blob/main/kakarot_scripts/utils/kakarot.py).\n\n## Testing\n\n### Rust tests\n\nIn order to execute the Rust tests, follow the below instructions:\n\n- Run `make setup` in order to setup the project.\n- Run `make test` which will create a Genesis test file for Kakarot and launch\n  tests.\n- If you which to only run a specific test, be sure to first at least run\n  `make katana-genesis` once, then run\n  `make test-target TARGET=test_you_want_to_run`.\n\n### Apibara indexer tests\n\nIn order to run the Typescript unit tests, you will need to have\n[Deno](https://docs.deno.com/runtime/manual/) installed. Then you can run\n`KAKAROT_ADDRESS=ADDRESS_YOU_WANT_TO_USE_FOR_KAKAROT deno test --allow-env`.\n\n### Hive\n\nThe [Hive](https://github.com/ethereum/hive/tree/master) end-to-end test suite\nis set up in the Github Continuous Integration (CI) flow of the repository. This\nensures a safe guard when modifying the current RPC implementation and/or the\n[execution layer](https://github.com/kkrt-labs/kakarot).\n\nDue to the current existing differences between the Kakarot EVM implementation\nwhich aims to be a type 2 ZK-EVM (see the blog post from\n[Vitalik](https://vitalik.eth.limo/general/2022/08/04/zkevm.html) for more\ndetails), some of the Hive tests need to be skipped or slightly modified in\norder to pass.\n\nFor the\n[hive rpc tests](https://github.com/kkrt-labs/hive/tree/master/simulators/ethereum/rpc),\nall the websockets related tests are skipped as websockets aren't currently\nsupported by the Kakarot RPC.\n\nFor the\n[hive rpc compatibility tests](https://github.com/kkrt-labs/hive/tree/master/simulators/ethereum/rpc-compat),\nthe following tests are skipped:\n\n- debug_getRawBlock/get-block-n: the Kakarot implementation currently doesn't\n  compute the block hash following EVM standards.\n- debug_getRawBlock/get-genesis: see `debug_getRawBlock/get-block-n`.\n- debug_getRawHeader/get-block-n: debug API is currently not supported by the\n  Kakarot RPC.\n- debug_getRawHeader/get-genesis: debug API is currently not supported by the\n  Kakarot RPC.\n- debug_getRawHeader/get-invalid-number: debug API is currently not supported by\n  the Kakarot RPC.\n- debug_getRawTransaction/get-invalid-hash: the Kakarot implementation of the\n  debug_getRawTransaction endpoint uses `alloy_primitives::B256` type when\n  deserializing the hash. This test is expected to fail as the provided hash in\n  the query doesn't start with `0x`. As this test doesn't bring much, we decide\n  to skip it.\n- eth_createAccessList/create-al-multiple-reads: the createAccessList endpoint\n  is currently not supported by the Kakarot RPC.\n- eth_createAccessList/create-al-simple-contract: the createAccessList endpoint\n  is currently not supported by the Kakarot RPC.\n- eth_createAccessList/create-al-simple-transfer: the createAccessList endpoint\n  is currently not supported by the Kakarot RPC.\n- eth_feeHistory/fee-history: the Kakarot implementation doesn't currently set\n  the block gas limit dynamically, which causes some disparity in the returned\n  data. Additionally, the rewards of the blocks aren't available.\n- eth_getBalance/get-balance-blockhash: see `debug_getRawBlock/get-block-n`.\n- eth_getBlockByHash/get-block-by-hash: see `debug_getRawBlock/get-block-n`.\n- eth_getBlockReceipts/get-block-receipts-by-hash: see\n  `debug_getRawBlock/get-block-n`.\n- eth_getBlockTransactionCountByHash/get-block-n: see\n  `debug_getRawBlock/get-block-n`.\n- eth_getBlockTransactionCountByHash/get-genesis: see\n  `debug_getRawBlock/get-block-n`.\n- eth_getProof/get-account-proof-blockhash: the getProof endpoint is currently\n  not supported by the Kakarot RPC.\n- eth_getProof/get-account-proof-with-storage: the getProof endpoint is\n  currently not supported by the Kakarot RPC.\n- eth_getProof/get-account-proof: the getProof endpoint is currently not\n  supported by the Kakarot RPC.\n- eth_getStorage/get-storage-invalid-key-too-large: the Kakarot implementation\n  of the eth_getStorage endpoint uses `alloy_primitives::U256` type when\n  deserializing the number. This test is expected to fail as the provided block\n  number in the query doesn't start with exceeds 32 bytes. As this test doesn't\n  bring much, we decide to skip it.\n- eth_getStorage/get-storage-invalid-key: the Kakarot implementation uses the\n  `jsonrpsee` crate's macro `rpc` in order to generate the server implementation\n  of the ETH API. This test passes an invalid block hash `0xasdf` and expects\n  the server to return with an error code `-32000` which corresponds to an\n  invalid input error. The code derived from the `rpc` macro returns an error\n  code of `-32602` which corresponds to an invalid parameters error, whenever it\n  encounters issues when deserializing the input. We decide to ignore this test\n  as the only issue is the error code returned.\n- eth_getTransactionByBlockHashAndIndex/get-block-n: see\n  `debug_getRawBlock/get-block-n`.\n\nIn addition to the tests we skip, some of the objects fields need to be ignored\nin the passing tests:\n\n- For blocks: the hash, parent hash, timestamp, base fee per gas, difficulty,\n  gas limit, miner, size, state root, total difficulty and withdrawals are all\n  skipped. Due to the difference between a type 1 and a type 2 ZK-EVM, these\n  fields are currently not computed according to the EVM specifications and need\n  to be skipped.\n- For receipts, transactions and logs: the block hash is skipped.\n\nIf you which to run our hive test suite locally, the following steps should be\ntaken:\n\n- Set up the repo: `make setup`.\n- Build a local docker image of the RPC. Check the hive\n  [Dockerfile](docker/hive/Dockerfile) for the values for `xxx` and `yyy`:\n\n  ```shell\n  docker build --build-arg APIBARA_STARKNET_BIN_DIR=xxx --build-arg APIBARA_SINK_BIN_DIR=yyy  -t hive . -f docker/hive/Dockerfile\n  ```\n\n- Checkout the Kakarot fork of hive:\n  `git clone https://github.com/kkrt-labs/hive`\n- Build the hive binary: `go build hive.go`\n- Run the full rpc test suite against Kakarot:\n  `./hive --sim \"ethereum/rpc\" --client kakarot`\n- Additional filtering can be provided using `--sim.limit` if you which to run a\n  certain limited set of tests.\n\n## Project assistance\n\nIf you want to say **thank you** or/and support active development of Kakarot\nRPC:\n\n- Add a [GitHub Star](https://github.com/kkrt-labs/kakarot-rpc) to the project.\n- Tweet about the Kakarot RPC: \u003chttps://x.com/KakarotZkEvm\u003e.\n\n## Contributing\n\nFirst off, thanks for taking the time to contribute! Contributions are what make\nthe open-source community such an amazing place to learn, inspire, and create.\nAny contributions you make will benefit everybody else and are **greatly\nappreciated**.\n\nPlease read [our contribution guidelines](docs/CONTRIBUTING.md), and thank you\nfor being involved!\n\n## Glossary\n\n- StarknetOS chain: also called CairoVM chain, or Starknet appchain, it is a\n  full-node (or sequencer) that is powered by the Cairo VM (Cairo smart\n  contracts can be deployed to it). It a chain that behaves in most ways\n  similarly to Starknet L2.\n- Kakarot Core EVM: The set of Cairo Programs that implement the Ethereum\n  Virtual Machine instruction set.\n- Katana: A StarknetOS sequencer developed by the Dojo team. Serves as the\n  underlying StarknetOS client for Kakarot zkEVM locally. It is built with speed\n  and minimalism in mind.\n- Madara: A StarknetOS sequencer and full-node developed by the Madara (e.g.\n  Pragma Oracle, Deoxys, etc.) and Starkware exploration teams. Based on the\n  Substrate framework, it is built with decentralization and robustness in mind.\n- Kakarot zkEVM: the entire system that forms the Kakarot zkRollup: the core EVM\n  Cairo Programs and the StarknetOS chain they are deployed to, the RPC layer\n  (this repository), and the Kakarot Indexer (the backend service that ingests\n  Starknet data types and formats them in EVM format for RPC read requests).\n\n## Authors \u0026 contributors\n\nFor a full list of all authors and contributors, see\n[the contributors page](https://github.com/sayajin-labs/kakarot-rpc/contributors).\n\n## Security\n\nKakarot RPC follows good practices of security, but 100% security cannot be\nassured. Kakarot RPC is provided **\"as is\"** without any **warranty**. Use at\nyour own risk.\n\n_For more information and to report security issues, please refer to our\n[security documentation](docs/SECURITY.md)._\n\n## License\n\nThis project is licensed under the **MIT license**.\n\nSee [LICENSE](LICENSE) for more information.\n\n## Acknowledgements\n\nWe warmly thank all the people who made this project possible.\n\n- [Reth](https://github.com/paradigmxyz/reth) (Rust Ethereum), Thank you for\n  providing open source libraries for us to reuse.\n- [jsonrpsee](https://github.com/paritytech/jsonrpsee)\n- Starkware and its exploration team, thank you for helping and providing a\n  great test environment with Madara.\n- [Lambdaclass](https://github.com/lambdaclass)\n- [Dojo](https://github.com/dojoengine/dojo), thank you for providing great test\n  utils.\n- [starknet-rs](https://github.com/xJonathanLEI/starknet-rs), thank you for a\n  great SDK.\n- All our contributors. This journey wouldn't be possible without you.\n\n## Benchmarks\n\nFor now, Kakarot RPC provides a minimal benchmarking methodology. You'll need\n[Bun](https://bun.sh/) installed locally.\n\n- Run a Starknet node locally (Katana or Madara), e.g.\n  `katana --block-time 6000 --disable-fee` if you have the dojo binary locally,\n  or `make madara-rpc-up` for Madara.\n- Deploy the Kakarot smart contract (`make deploy-kakarot`)\n- Run the Kakarot RPC binary (`make run-dev`)\n- Run `make benchmark-katana` or `make benchmark-madara`\n\n## Contributors ✨\n\nThanks goes to these wonderful people\n([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/AbdelStark\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/45264458?v=4?s=100\" width=\"100px;\" alt=\"Abdel @ StarkWare \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAbdel @ StarkWare \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=AbdelStark\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.silika.studio/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/112415316?v=4?s=100\" width=\"100px;\" alt=\"etash\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eetash\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=etashhh\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/0xMentorNotAPseudo\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4404287?v=4?s=100\" width=\"100px;\" alt=\"Mentor Reka\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMentor Reka\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=0xMentorNotAPseudo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://bezier.fi/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/66029824?v=4?s=100\" width=\"100px;\" alt=\"Flydexo\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFlydexo\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=Flydexo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Eikix\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/66871571?v=4?s=100\" width=\"100px;\" alt=\"Elias Tazartes\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eElias Tazartes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=Eikix\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/greged93\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/82421016?v=4?s=100\" width=\"100px;\" alt=\"greged93\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003egreged93\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=greged93\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bajpai244\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/41180869?v=4?s=100\" width=\"100px;\" alt=\"Harsh Bajpai\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHarsh Bajpai\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=bajpai244\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ftupas\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/35031356?v=4?s=100\" width=\"100px;\" alt=\"ftupas\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eftupas\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=ftupas\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/clementwalter/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18620296?v=4?s=100\" width=\"100px;\" alt=\"Clément Walter\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eClément Walter\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=ClementWalter\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/jobez\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/615197?v=4?s=100\" width=\"100px;\" alt=\"johann bestowrous\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ejohann bestowrous\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=jobez\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/danilowhk\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/12735159?v=4?s=100\" width=\"100px;\" alt=\"danilowhk\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003edanilowhk\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=danilowhk\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/irisdv\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/8224462?v=4?s=100\" width=\"100px;\" alt=\"Iris\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIris\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=irisdv\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://aniketpr01.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46114123?v=4?s=100\" width=\"100px;\" alt=\"Aniket Prajapati\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAniket Prajapati\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=aniketpr01\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tekkac\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/98529704?v=4?s=100\" width=\"100px;\" alt=\"Trunks @ Carbonable\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTrunks @ Carbonable\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=tekkac\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/alex-sumner\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46249612?v=4?s=100\" width=\"100px;\" alt=\"Alex Sumner\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlex Sumner\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=alex-sumner\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/raphdeknop\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/49572419?v=4?s=100\" width=\"100px;\" alt=\"Raphaël Deknop\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRaphaël Deknop\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=raphdeknop\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/bhavyagosai\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/64588227?v=4?s=100\" width=\"100px;\" alt=\"Bhavya Gosai\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBhavya Gosai\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=bhavyagosai\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/apoorvsadana\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/95699312?v=4?s=100\" width=\"100px;\" alt=\"apoorvsadana\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eapoorvsadana\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=apoorvsadana\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.linkedin.com/in/paul-henrykajfasz/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/42912740?v=4?s=100\" width=\"100px;\" alt=\"Paul-Henry Kajfasz\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePaul-Henry Kajfasz\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=phklive\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/khaeljy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1810456?v=4?s=100\" width=\"100px;\" alt=\"Khaeljy\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKhaeljy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=khaeljy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://nodeguardians.io/character/98995858fd55\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/122918260?v=4?s=100\" width=\"100px;\" alt=\"Tristan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTristan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=TAdev0\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/glihm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/7962849?v=4?s=100\" width=\"100px;\" alt=\"glihm\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eglihm\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=glihm\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/omahs\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/73983677?v=4?s=100\" width=\"100px;\" alt=\"omahs\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eomahs\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=omahs\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/MartianGreed\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11038484?v=4?s=100\" width=\"100px;\" alt=\"valdo.carbonaboyz.stark\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evaldo.carbonaboyz.stark\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=MartianGreed\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dpinones\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/30808181?v=4?s=100\" width=\"100px;\" alt=\"Damián Piñones\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDamián Piñones\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=dpinones\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/zarboq\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/37303126?v=4?s=100\" width=\"100px;\" alt=\"zarboq\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ezarboq\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=zarboq\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dubzn\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/58611754?v=4?s=100\" width=\"100px;\" alt=\"Santiago Galván (Dub)\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSantiago Galván (Dub)\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=dubzn\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://droak.sh/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/5263301?v=4?s=100\" width=\"100px;\" alt=\"Oak\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOak\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sayajin-labs/kakarot-rpc/commits?author=d-roak\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n  \u003ctfoot\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" size=\"13px\" colspan=\"7\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg\"\u003e\n          \u003ca href=\"https://all-contributors.js.org/docs/en/bot/usage\"\u003eAdd your contributions\u003c/a\u003e\n        \u003c/img\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tfoot\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the\n[all-contributors](https://github.com/all-contributors/all-contributors)\nspecification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkrt-labs%2Fkakarot-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkkrt-labs%2Fkakarot-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkrt-labs%2Fkakarot-rpc/lists"}