Skip to main content

Suave Chain

This document outlines the specifications for the SUAVE Rigil chain.

In the context of the SUAVE protocol, the primary purpose of the SUAVE chain is to reach (and maintain) consensus about smart contract code for use cases such as order flow auctions, solvers, block builders, etc. Additionally, the SUAVE chain can also be used to store and broadcast data for better censorship guarantees.

In the initial phases of development, the SUAVE chain runs a proof-of-authority consensus protocol called Clique, over a network of permissioned nodes. We do so to experiment and iterate quickly during protocol development. This will change in later testnets.

Configuration

Network Parameters

  • Network ID: 16813125
  • Chain ID: 16813125

Genesis Settings

NameValueUnit
PERIOD4block
EPOCH30000block
BLOCK_TIME3second
GAS_LIMIT30000000gas
NUM_VALIDATORS5Nodes

Consensus Mechanism: Proof-of-Authority (Clique)

Clique, an Ethereum-based Proof-of-Authority consensus protocol defined here, restricts block minting to a predefined list of trusted signers. Because of this, every block header a client sees can be checked against the list of trusted signers.

Geth Version

Suave-geth is based on geth v1.12.0 (e501b3).


Suave Transaction

The SUAVE protocol adds a new transaction type to the base Ethereum protocol called a SuaveTransaction. The purpose of this new transaction type is to process fees for offchain computation and to support the new data primitives associated with confidential compute.

Blocks on the SUAVE chain consist of lists of SUAVE transactions. This new transaction type facilitates and captures key information involved in Confidential Compute Requests and their subsequent results. Any ConfidentialComputeRequest, signed by the user, specifies an ExecutionNode. SUAVE transactions are valid if and only if they are signed by the ExecutionNode specified by the user in the original ConfidentialComputeRequest, which is included as the ConfidentialComputeRecord.

type SuaveTransaction struct {
ExecutionNode common.Address
ConfidentialComputeRequest ConfidentialComputeRecord
ConfidentialComputeResult []byte

// ExecutionNode's signature
ChainID *big.Int
V *big.Int
R *big.Int
S *big.Int
}

Node Requirements and Setup

  • Hardware:
    • Minimum 8GB RAM, four cores, 50GB SSD (How big do we expect the chain to grow?)
    • These requirements will eventually incorporate Trusted Execution Environments (TEEs).
  • Software: suave-geth
  • Setup Steps:
    1. Clone suave-geth
    2. Start the devnet: make devnet-up
    3. Create transactions: go run suave/devenv/cmd/main.go

Gas and Transaction Fees

The SUAVE chain employs the same gas pricing mechanism as Ethereum pre-Cancun hardfork (no blob transactions) where gas prices adjust based on network demand. Nodes currently track Confidential Compute Request gas usage but only charge a small flat fee for it, and there is no cap for offchain compute.

Currently, SUAVE transactions can only be expressed as Legacy transaction types, but they will get converted into EIP-1559 base fee model under the hood.


Security Considerations

  • Security Risk: The protocol is unaudited. The protocol currently does not make any guarantees about the confidentiality of data in the network outside of a best effort.
  • DoS Risk: Nodes have not yet been reviewed, and there may be DoS vectors at this early stage.
  • Secure Key Management: Storing private keys on Suave is experimental and should be considered insecure.

If you find a security vulnerability in SUAVE, please email us at security@flashbots.net.