An ether-rs middleware to access reth's db directly, bypassing JSON-RPC

Overview

Octane

A ether-rs middleware for reth that bypasses JSON-RPC allowing for faster db queries.

Work in Progress!

Please note that Octane is currently in its early stages of development.

Todo:

  • Full log functionality
  • Full trace functionality
  • Full debug functionality
  • Full tx pool functionality
  • Integration with Anvil: We plan to integrate with Anvil to offer super-fast simulation in fork mode
  • Improved type conversions: The type conversion is terroristic at best, we'll clean that up soon
  • Tests, waiting on node sync

Contact

For any questions or enhancements requests, please open an issue on this repository or dm me on twitter.

You might also like...
Installer for yuzu early access

This is installer is programmed for the 128BitBay Server! License 128Bit Yuzu Installer is licensed under the Apache 2.0 License, which can be found i

Drop-in Access Control via NFT Ownership
Drop-in Access Control via NFT Ownership

niftygate - Signature-Based Authenticating Proxy What is it? niftygate is a proxy for HTTP services, that validates signatures, providing an AuthN lay

Simple PoC to issue JSON Web Tokens (JWTs) with a canister on the Internet Computer.

JWT Issuer Proof of Concept Overview Simple PoC to issue JSON Web Tokens (JWTs) with a canister on the Internet Computer. It allows the issuance of tw

cryo is the easiest way to extract blockchain data to parquet, csv, or json

❄️ 🧊 cryo 🧊 ❄️ cryo is the easiest way to extract blockchain data to parquet, csv, or json cryo is also extremely flexible, with many different opti

An ether-rs middleware to craft UserOperations

Ethers UserOp An ether-rs middleware to craft UserOperations Pre-requisites Geth (tested with v1.12.2). Use To start a Silius bundler with user operat

A modern, simple TCP tunnel in Rust that exposes local ports to a remote server, bypassing standard NAT connection firewalls
A modern, simple TCP tunnel in Rust that exposes local ports to a remote server, bypassing standard NAT connection firewalls

bore A modern, simple TCP tunnel in Rust that exposes local ports to a remote server, bypassing standard NAT connection firewalls. That's all it does:

Freeze.rs is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls written in RUST
Freeze.rs is a payload toolkit for bypassing EDRs using suspended processes, direct syscalls written in RUST

Freeze.rs More Information If you want to learn more about the techniques utilized in this framework, please take a look at SourceZero Blog and the or

Futures implementation for JSON-RPC

futures-jsonrpc Futures + JSON-RPC A lightweight remote procedure call protocol. It is designed to be simple! And, with futures, even more flexible! T

Solana JSON-RPC caching server

Solana JSON-RPC caching server Disclaimer: This project is an early stage Work-In-Progress and is not ready for production use. This cache server impl

JSON-RPC endpoint proxy that dumps requests/responses for debugging
JSON-RPC endpoint proxy that dumps requests/responses for debugging

json_rpc_snoop How to build Ensure you have cargo installed and in your PATH (the easiest way is to visit https://rustup.rs/) make This will create t

Ethereum JSON-RPC multi-transport client. Rust implementation of web3 library

Ethereum JSON-RPC multi-transport client. Rust implementation of web3 library. ENS address: rust-web3.eth

JSON parser which picks up values directly without performing tokenization in Rust
JSON parser which picks up values directly without performing tokenization in Rust

Pikkr JSON parser which picks up values directly without performing tokenization in Rust Abstract Pikkr is a JSON parser which picks up values directl

Query your Postgres databases directly using gRPC or transcoded JSON.

PostgRPC Query your Postgres databases directly using gRPC or transcoded JSON. Crates Postguard PostgRPC (release pending) postgres-services (release

Get JSON values quickly - JSON parser for Rust
Get JSON values quickly - JSON parser for Rust

get json values quickly GJSON is a Rust crate that provides a fast and simple way to get values from a json document. It has features such as one line

Schema2000 is a tool that parses exsiting JSON documents and tries to derive a JSON schema from these documents.

Schema 2000 Schema2000 is a tool that parses exsiting JSON documents and tries to derive a JSON schema from these documents. Currently, Schema2000 is

Wrapper around reqwest to allow for client middleware chains.

reqwest-middleware A crate implementing a wrapper around reqwest to allow for client middleware chains. Overview The reqwest-middleware client exposes

An Ethers middleware for submitting Flashbots bundles

Ethers Flashbots An Ethers middleware to send transactions as Flashbots bundles. Installation Add ethers-flashbots to your Cargo.toml. # This is the d

A cookie manager middleware built on top of tower.

tower-cookies A cookie manager middleware built on top of tower. Example With axum: use axum::{handler::get, Router}; use std::net::SocketAddr; use to

Handlebars middleware for Iron web framework

handlebars-iron Handlebars middleware for the Iron web framework. This library, together with handlebars, iron and hyper, works on both stable and nig

Comments
  • What should be the Middleware type when initializing RethMiddleware?

    What should be the Middleware type when initializing RethMiddleware?

    Hello, I am new to ethers-reth and would like to explore some possible options to initialize RethMiddleware::new to directly communicate with the mdbx kv store file.

    #[cfg(test)]
    mod tests {
        use std::path::Path;
        use ethers::core::rand::thread_rng;
        use ethers::signers::{LocalWallet, Signer, Wallet};
        use crate::RethMiddleware;
        use super::*;
        use ethers_middleware::*;
        use ethers_middleware::providers::{Http, Provider};
    
        #[test]
        fn test() {
            let provider = Provider::<Http>::try_from("https://ethereum-mainnet-archive.allthatnode.com").unwrap();
            let middleware = MyMiddleware(provider); // What it should be?
            let db_path = Path::new("./mdbx.dat");
            let db_path = Path::new("./mdbx.dat");
            let final_middleware = RethMiddleware::new(middleware, db_path);
    
            assert_eq!(1, 1);
        }
    }
    

    I would appreciate it if there are any examples that implement a middleware type for the RethMiddleware::new method. Thanks.

    opened by sigridjineth 3
  • Regarding the implementation of `libmdbx-rs`

    Regarding the implementation of `libmdbx-rs`

    Hello, I found that the following binding implementation seems to be actively maintained since the commits were updated in two weeks ago, as of the time in raising the issue. The repository has been listed officially on the binding list. I don't know what's the difference between the reth's implementation on libmdbx-rs, which is on the link.

    However, my idea is if there's a repository that actively maintains the binding, it could be better considering the option to utilize it. I want to open up the issue to get some ideas on it.

    opened by sigridjineth 1
  • Reth and Ethers Withdrawal data structure conversion tests

    Reth and Ethers Withdrawal data structure conversion tests

    Description

    Implement tests for converting Reth Withdrawal to Ethers Withdrawal data structure. Updated validator_index to accept correct parameter.

    Tests

    Screenshot 2023-05-20 at 1 36 11 PM

    opened by JohnChangUK 1
  • Contributing

    Contributing

    Hey just wanted to get in touch about this project, we want to use it in arbiter and are interesting in contributing and comparing this approach to our current approach. We ended up building a decent amount of custom logic for it in the simulate crate which was kinda a pain. Are you guys open to outside contributions? Do you need help with project management (issues, contribution guidelines, etc)?

    opened by 0xJepsen 2
Owner
Sorella Labs
Sorella dynamically adjusts liquidity positions synchronously with the market’s evolution, maximizing market efficiency and yield.
Sorella Labs
Ethereum JSON-RPC multi-transport client. Rust implementation of web3 library

Ethereum JSON-RPC multi-transport client. Rust implementation of web3 library. ENS address: rust-web3.eth

Tomasz Drwięga 1.2k Jan 8, 2023
Ethers-rs CCIP-Read Middleware

Ethers-rs CCIP-Read Middleware Ready to dive into the world of cross-chain data access? Look no further! This Rust library provides an Ethers middlewa

Ethereum Name Service (ENS) 14 May 28, 2023
Simple template for building smart contract(Rust) and RPC Client(web3.js) on Solana (WIP) ⛏👷🚧⚠️

Solana BPF Boilerplate Simple template for building smart contract(Rust) and RPC Client(web3.js) on Solana This boilerplate provides the following. Si

ono 6 Jan 30, 2022
This is a solana lite rpc which optimizes sending transactions and confirming transactions strategies.

Solana Lite RPC This project aims to create a lite rpc server which is responsible only for sending and confirming the transactions. The lite-rpc serv

Blockworks Foundation 7 Dec 24, 2022
RPC over mezzenger transports.

zzrpc RPC over mezzenger transports. https://crates.io/crates/zzrpc usage See zzrpc-tutorial. targeting WebAssembly See rust-webapp-template-api. furt

Daniel Zduniak 4 Dec 30, 2022
Fast way to test a Substrate Runtime via RPC (eg. PolkadotJS UI).

runstrate Fast way to test a Substrate Runtime via RPC (eg. PolkadotJS UI). Build & Run git clone https://github.com/arturgontijo/runstrate cd runstra

Artur Gontijo 3 May 9, 2023
Extract data from helium-programs via Solana RPC and serves it via HTTP

hnt-explorer This application extracts data from helium-programs via Solana RPC and serves it via HTTP. There are CLI commands meant to run and test t

Louis Thiery 3 May 4, 2023
Glommio Messaging Framework (GMF) is a high-performance RPC system designed to work with the Glommio framework.

Glommio Messaging Framework (GMF) The GMF library is a powerful and innovative framework developed for facilitating Remote Procedure Calls (RPCs) in R

Mohsen Zainalpour 29 Jun 13, 2023
All the data an IC app needs to make seamless experiences, accessible directly on the IC. DAB is an open internet service for NFT, Token, Canister, and Dapp registries.

DAB ?? Overview An Internet Computer open internet service for data. All the data an IC app needs to make a seamless experience, accessible directly o

Psychedelic 58 Oct 6, 2022
reth-indexer reads directly from the reth db and indexes the data into a postgres database all decoded with a simple config file and no extra setup alongside exposing a API ready to query the data.

reth-indexer reth-indexer reads directly from the reth db and indexes the data into a postgres database all decoded with a simple config file and no e

Josh Stevens 306 Jul 12, 2023