Skip to content

flashbots/suave-geth

SUAVE

Goreport status CI status

SUAVE is designed to decentralize the MEV supply chain by enabling centralized infrastructure (builders, relays, centralized RFQ routing, etc.) to be programmed as smart contracts on a decentralized blockchain.

suave-geth is a work-in-progress Golang SUAVE client consisting of two separable components: chain nodes and execution nodes. SUAVE clients offer confidential execution for smart contracts, allowing confidential processing with extended precompiles for enhanced MEV functionalities, including transaction simulation via geth RPC, block building, and relay boosting, all handled by dedicated execution nodes.

For a deeper dive, check out the following links:


Getting Started

Starting a local devnet

You can use suave-geth to start a local SUAVE devnet.

There's multiple ways to get suave-geth:

  1. Install the latest release binary
  2. Build from source
  3. Use Docker

Install the latest suave-geth release binary

curl -L https://suaveup.flashbots.net | bash

Building from source

# build the binary
$ make suave

Now you can go to /build/bin and:

Start the local devnet like this:

$ ./suave-geth --suave.dev

Start the Rigil testnet like this:

$ ./suave-geth --rigil

Using Docker

# spin up the local devnet with docker-compose
$ make devnet-up

# check that the containers are running
$ docker ps

# you can stop the local devnet like this
$ make devnet-down

Testing the devnet

Create a few example transactions:

$ go run suave/devenv/cmd/main.go

Execute a RPC request with curl like this:

$ curl 'http://localhost:8545' --header 'Content-Type: application/json' --data '{ "jsonrpc":"2.0", "method":"eth_blockNumber", "params":[], "id":83 }'

What next?

  • suapp-examples is a collection of example SUAVE apps and boilerplate to get started quickly and right-footed.
  • suave-specs is the spec repository for SUAVE which contains all the technical documentation.