/itachi

A high performance decentralized modular sequencer for Starknet

Primary LanguageGoGNU General Public License v3.0GPL-3.0

itachi

Welcome to itachi, the much easier and more flexible modular stack to build Layer 2 or Layer 3 chains using Cairo and the Starknet technology. It's open source for everyone to use.

Itachi is built on the Yu framework which not only makes it modular but also gives developers a simpler and more user-friendly development experience, just as simple as developing a web backend.

It is specifically easy and helpful if you want to quickly own more of the stack and get more control over your chain.

Overall Structure

image

Cairo Compatible

  • cairo-vm: 0.8.3
  • cairo-lang: 2.4.0

Build & Run

Prerequisites

  • rustc 1.74.0 (79e9716c9 2023-11-13)
  • go 1.21

Docker Pull & Run

docker pull ghcr.io/reddio-com/itachi:latest
docker-compose up

Source code Build & Run

git submodule init
git submodule update --recursive --checkout
make build

./itachi

You can see the running results on your terminal. image

Reset Chain

Reset Chain will clean all the stored history data locally.

make reset

Test

You can use more complete python tests with starknet.py: https://github.com/reddio-com/itachi-testing

You can use starknetGo for RPC unit testing. You can refer to the itachi_test branch in this fork used during RPC development:https://github.com/haisenCx/starknet.go/tree/itachi_test Files with the _test suffix in path starknet.go/rpc are unit tests for RPC.

🌐 Connect to Test Endpoint

https://itachi-dev.reddio.com/

Configs

Chain Configs

The default config file of Itachi chain is conf/cairo_cfg.toml

Genesis Configs

The genesis configs of Itachi chain is same as Madara. You can learn more details by docs

Starknet RPC

0.5.1

  • addDeclareTransaction
  • addDeployAccountTransaction
  • addInvokeTransaction
  • call
  • estimateFee
  • getTransactionReceipt
  • getTransactionByHash
  • getNonce
  • getTransactionStatus
  • getClass
  • getClassAt
  • getClassHashAt
  • blockHashAndNumber
  • getBlockWithTxHashes
  • getBlockWithTxs
  • chainId
  • syncing
  • getTransactionByBlockIdAndIndex
  • getBlockTransactionCount
  • estimateMessageFee
  • blockNumber
  • specVersion
  • traceTransaction
  • simulateTransactions
  • traceBlockTransactions
  • getStorageAt
  • getStateUpdate

0.6.0

  • addDeclareTransaction
  • addDeployAccountTransaction
  • addInvokeTransaction
  • call
  • estimateFee
  • getTransactionReceipt
  • getTransactionByHash
  • getNonce
  • getTransactionStatus
  • getClass
  • getClassAt
  • getClassHashAt
  • blockHashAndNumber
  • getBlockWithTxHashes
  • getBlockWithTxs
  • chainId
  • syncing
  • getTransactionByBlockIdAndIndex
  • getBlockTransactionCount
  • estimateMessageFee
  • blockNumber
  • specVersion
  • traceTransaction
  • simulateTransactions
  • traceBlockTransactions
  • getStorageAt
  • getStateUpdate

0.7.0

  • addDeclareTransaction
  • addDeployAccountTransaction
  • addInvokeTransaction
  • call
  • estimateFee
  • getTransactionReceipt
  • getTransactionByHash
  • getNonce
  • getTransactionStatus
  • getClass
  • getClassAt
  • getClassHashAt
  • blockHashAndNumber
  • getBlockWithTxHashes
  • getBlockWithTxs
  • chainId
  • syncing
  • getTransactionByBlockIdAndIndex
  • getBlockTransactionCount
  • estimateMessageFee
  • blockNumber
  • specVersion
  • traceTransaction
  • simulateTransactions
  • traceBlockTransactions
  • getStorageAt
  • getStateUpdate