• Stars
    star
    265
  • Rank 154,577 (Top 4 %)
  • Language
    Rust
  • License
    GNU Lesser Genera...
  • Created almost 2 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An ERC-4337 Bundler in Rust

Rundler

gh_ci_badge tg_badge

High-performance, modular implementation of an ERC-4337 bundler

Rundler Banner

Run | Developer Docs

🚧 Under active development, see status below. 🚧

Overview

Rundler (Rust Bundler) is an ERC-4337 bundler implementation written in Rust. Rundler is designed to achieve high-performance and high-reliability in cloud deployments via a modular architecture.

Built, maintained, and used by Alchemy to push the limits of user experience on EVM chains via Account Abstraction.

Goals

Rundler is meant to power the ERC-4337 ecosystem with an implementation that users can rely on to scale to their needs while maintaining high reliability. As ERC-4337 is a nascent technology, Rundler strives to be on the bleeding edge of feature support and the team will be contributing to push the protocol forward.

Our goals with Rundler:

  1. ERC-4337 Specification Compliance: Rundler strives to implement the full ERC-4337 specification and to maintain support as the specification changes and new onchain components are released. This includes new Entry Point contract support, support for the upcoming P2P mempool specification, support for alternative mempools, and more.
  2. High Performance and Reliability: Rundler strives to power the most demanding workloads in cloud environments. Rust was chosen for its high performance and memory safety. Rundler's modular architecture lets providers choose to run the stateless components (RPC, builder) in a fully horizontally scalable manner connecting to the stateful components (mempool, p2p, event cache) via the network. Rundler's bundle builder is designed to be able to support the full gas throughput of the network it's building for.
  3. Extendability/Chain Support: ERC-4337 is designed to support any EVM chain. However, different EVM supporting networks have different rules around how they support things like gas usage, gas fees, precompiles, etc. Rundler is designed to be extendable and easily adapted to support any EVM chain.
  4. Modularity: Rundler is written in a modular manner, allowing its components to be run as a single integrated binary, or as a distributed system. Rundler also strives for its individual crates to be used to support future ERC-4337 tooling.

Status

Rundler is under active development. It is used in Alchemy's cloud to power Alchemy's Account Abstraction APIs. However, Rundler is rapidly being upgraded, features are being added, interfaces will have breaking changes, and the ERC-4337 spec is evolving from onchain learnings.

The documentation is work in progress, and we are working to improve it. Please reach out with any questions.

Use in production at your own risk.

ERC-4337 Support

Rundler currently supports the v0.6 release of Entry Point contract.

Chain Support

Rundler currently supports and has been tested on the following networks and their testnets:

  • Ethereum
  • Optimism
  • Base
  • Arbitrum One
  • Polygon POS

Developers

Contributing

See CONTRIBUTING.md.

Running

The easiest way to run Rundler is via a docker container. There is currently no pre-built image. See our docker documentation for further instructions.

Developing

For detailed instructions see developing.

Install prerequisites.

Clone the repository and checkout submodules:

git clone https://github.com/alchemyplatform/rundler
cd rundler
git submodule update --init --recursive

Run unit tests:

make test-unit

Run ERC-4337 spec tests:

cd test/spec-tests/bundler-spec-tests && pdm install && pdm run update-deps
make test-spec-integrated

Help

If you have questions regarding the Rundler codebase, please first look through our documentation.

With further questions:

If you have questions regarding Alchemy's APIs or service, kindly refrain from discussion here. Please join the Discord or reach out to [email protected].

Security

For security concerns do not file a public ticket, please reach out to [email protected].

See SECURITY.md for details.

Acknowledgements

The work on this project would not have been possible without the amazing contributions from:

  • ERC-4337 team: The ERC-4337 team has pioneered the standard, and has answered countless questions during our development. They developed the bundler reference implementation and spec tests that were invaluable during our development process. We are excited to continue to work with this team to push ERC-4337 ahead.
  • Reth: Shout-out to the Reth team, from which we've taken inspiration for many of our practices in this repo (including this README). They are pushing the Ethereum Rust ecosystem forward in an open way. We thank the Reth team for their continued contributions.

License

The Rundler library (i.e. all code outside of the bin directory) is licensed under the GNU Lesser General Public License v3.0, also included in our repository in the COPYING.LESSER file.

The Rundler binaries (i.e. all code inside of the bin directory) are licensed under the GNU General Public License v3.0, also included in our repository in the COPYING file.

Copyright 2023 Alchemy Insights, Inc.

Contact: Alchemy Insights, Inc., 548 Market St., PMB 49099, San Francisco, CA 94104; [email protected]

More Repositories

1

create-web3-dapp

The complete toolbox to create web3 applications.
TypeScript
824
star
2

alchemy-sdk-js

The easiest way to connect your dApp to the blockchain.
TypeScript
364
star
3

alchemy-web3

Web3 client extended with Alchemy integration
TypeScript
245
star
4

nft-minter-tutorial

JavaScript
236
star
5

aa-sdk

TypeScript
220
star
6

NFT-Marketplace-Tutorial

NFT marketplace tutorial by Alchemy
JavaScript
201
star
7

learn-solidity-presentations

All of the presentations in the Learn Solidity course
Solidity
198
star
8

Build-Your-NFT-Explorer

A simple demo to show case how Alchemy's NFT API works.
JavaScript
118
star
9

modular-account

Solidity
100
star
10

light-account

Solidity
95
star
11

ecdsa-node

JavaScript
81
star
12

nft-api-javascript-scripts

A collection of Javascript scripts running with Alchemy Web3.js, Fetch, or Axios
JavaScript
60
star
13

RTW3-Week2-BuyMeACoffee-Website

JavaScript
52
star
14

RTW3-Week2-BuyMeACoffee-Contracts

JavaScript
46
star
15

hardhat-ethers-react-ts-starter

A web3 starter project using Typescript, Hardhat, ethers.js and @web3-react
TypeScript
44
star
16

GiftList

Gifts under the Merkle Tree
JavaScript
40
star
17

cw3d-nft-explorer

JavaScript
39
star
18

RTW3-Week7-NFT-Marketplace

Road to Web3 Week7 tutorial on building an NFT Marketplace from Scratch
JavaScript
36
star
19

alchemy-docs

The publicly-accessible documentation for Alchemy.com!
36
star
20

hello-world-part-four-tutorial

JavaScript
36
star
21

web3-starter-projects

Fork a blockchain repo and build your dapp. Fast.
32
star
22

alchemy-flow-contracts

Cadence
31
star
23

alchemy-sdk-py

Python
30
star
24

embedded-accounts-quickstart

An application that demos how to quickly build with Alchemy Embedded Accounts.
TypeScript
28
star
25

hello-world-tutorial

Solidity
25
star
26

eth-provider-benchmark

Compare the accuracy and consistency of Ethereum service providers head to head on a suite of tests.
Python
25
star
27

Contract-Puzzles

JavaScript
20
star
28

solana-nft-tutorial

19
star
29

blockexplorer

JavaScript
19
star
30

escrow-hardhat

JavaScript
18
star
31

Alchemy-Hacker-Handbook

JavaScript
18
star
32

RTW3-Week-4-NFT-Gallery

JavaScript
16
star
33

aa-benchmarks

TypeScript
16
star
34

aa-starter-zksync

TypeScript
15
star
35

Local-Hardhat-Games

Solidity
14
star
36

uniswap-trading-example

TypeScript
14
star
37

Build-Your-NFT-Explorer-walkthrough

JavaScript
13
star
38

webhook-examples

Examples of using Alchemy Notify
Python
13
star
39

polygon-smart-contract-tutorial

A guide for coding and deploying a basic Polygon (MATIC) smart contract!
JavaScript
9
star
40

netlify-alchemy-dapp-boilerplates

JavaScript
8
star
41

create-web3-dapp-examples

JavaScript
8
star
42

docs-openapi-specs

OpenAPI Specs for methods on Alchemy docs
TypeScript
8
star
43

nft-indexer

Display all of an addresses's NFTs using Alchemy's Enhanced APIs + Alchemy SDK!
JavaScript
8
star
44

MintGovernance

JavaScript
7
star
45

nft-api-demo-scripts

Shell
7
star
46

embedded-accounts-demo

Demo for Alchemy Embedded Accounts
TypeScript
7
star
47

modular-account-plugin

A very basic ERC6900 compliant plugin
Solidity
7
star
48

multisig-plugin

Solidity
7
star
49

alchemy-web3-webpack-example

Simple project demonstrating Alchemy-Web3 in a browser
JavaScript
6
star
50

nft-api-example

Repository with some example calls to the Alchemy NFT API
TypeScript
6
star
51

erc20-indexer

Index all of an address's ERC-20 token balances in an instant using Alchemy's Enhanced APIs!
JavaScript
6
star
52

smart-accounts-from-scratch

JavaScript
6
star
53

accountkit-react-native-boilerplate

Alchemy AA-SDK React Native boilerplate with Typescript, Viem, and Wagmi
TypeScript
5
star
54

zksync-paymaster-example

Solidity
5
star
55

MintNFT

Mint Your Own NFT!
JavaScript
5
star
56

nft-explorer-vercel

JavaScript
5
star
57

aa-virtual-cold-storage

Supercharging smart contract account security with custom virtual cold storage plugin functionalities | Built with @alchemyplatform Modular Smart Contract Account (ERC 6900) & aa-sdk | Learn More: https://accountkit.alchemy.com/
Solidity
5
star
58

solana-hello-world

Alchemy's Introductory Tutorial for Solana
TypeScript
4
star
59

polygon-nft-finder

Simple demo for finding NFT drops on Polygon (MATIC) via Alchemy Transfers API
HTML
4
star
60

token-api-javascript-scripts

A collection of Javascript scripts running with Alchemy Web3.js, Fetch, or Axios Topics Resources
JavaScript
4
star
61

Transaction-Lifecycle-via-SMS

Python
4
star
62

transfers_api_javascript_scripts

A collection for scripts for using the Alchemy Transfers API
JavaScript
3
star
63

historical_transactions_polygon_scripts

Script for querying historical transactions on Polygon (MATIC) via Alchemy Transfers API
Python
3
star
64

cw3d-evm-boilerplate

JavaScript
3
star
65

entrypoint-hash-poc

Solidity
3
star
66

viem-speedrun

TypeScript
3
star
67

netlify-alchemy-nft-explorer-template

JavaScript
3
star
68

alchemy-multichain-demo

Demo on how to manage multiple chains when using the Alchemy SDK
TypeScript
2
star
69

get-nfts-script

JavaScript script to get all NFTs owned by a specified address
JavaScript
2
star
70

netlify-alchemy-dapp-boilerplates-w-hardhat

JavaScript
2
star
71

vercel-alchemy-dapp-boilerplates

JavaScript
2
star
72

AWS-serverless-blockchain-data-ingesting-infrastructure

JavaScript
2
star
73

alchemy-chainlink-spring-hackathon-nft

JavaScript
2
star
74

block-race

A simple script for comparing how quickly Eth providers publish new blocks.
TypeScript
2
star
75

alchemy-asset-transfers-benchmark

TypeScript
2
star
76

Alchemy-Notify-Tutorial

Tutorial for integrating transaction activity notifications into your dApp.
JavaScript
2
star
77

spearmint-sdk

An SDK for Alchemy's free and automated web3 allowlist platform.
2
star
78

gasless-minter-tutorial

Tutorial on setting up a full-stack application with account abstraction to enable gasless minting.
TypeScript
2
star
79

aa-simple-dapp

A simple Next.js app allows for gas-less ERC-20 mints using Account Abstraction.
TypeScript
2
star
80

creating-smart-contract-and-sending-userops

TypeScript
2
star
81

aa-sdk-rn-expo

Example repo using aa-sdk with react native and expo
TypeScript
2
star
82

aa-sdk-userops

TypeScript
2
star
83

erc20-example-foundry

A simple Foundry Repo to build, test, and deploy an ERC-20 token.
Solidity
2
star
84

try-alchemy-sdk

super quick repo to get started with the alchemy-sdk
JavaScript
1
star
85

transaction-receipts-scripts

A collection of Ethereum transaction receipt scripts
Python
1
star
86

usdc-token-gate

Demo project for ETH Denver!
JavaScript
1
star
87

gm

JavaScript
1
star
88

Alchemy-Transfers-Tutorial

Tutorial for integrating historical transaction activity into your dApp dashboard.
Python
1
star
89

vercel-alchemy-dapp-boilerplates-w-hardhat

JavaScript
1
star
90

sponsoring-userops

TypeScript
1
star
91

aa-demo

Demo of account abstraction functionality using CW3D + Userbase.
TypeScript
1
star
92

creating-light-smart-account-and-sending-user-ops

TypeScript
1
star
93

token_api_javascript_scripts

Javascript Scripts for Token API tutorials
JavaScript
1
star