Skip to main content

What is SUAVE?

SUAVE - Single Unifying Auction for Value Expression - is a platform for building MEV applications such as OFAs and block builders in a decentralized and private way.

Read more about SUAVE:

SUAVE is designed as an open marketplace for MEV Applications which we call "SUAPPs". A SUAPP is an application deployed on SUAVE which can utilize the following SUAVE-native functionality:

  1. Private data, e.g., auctions, block building
  2. Coordination within block times, e.g., block building, trade routing and filling
  3. Access to fresh off-chain data, e.g., trading strategies conditional on centralized exchange prices or transactions that are conditional on other transactions
  4. Commitments of various kinds, e.g., shared sequencers for rollups, new kinds of DEXes and bridges
  5. Too much gas to do on-chain because of how much compute they use.

What SUAVE is not

SUAVE does not replace other blockchains: it is intended to aggregate and coordinate all the things that ultimately change the state of other chains.

SUAVE is not a Layer 2. It does not post state roots to Ethereum or otherwise depend upon Ethereum for its security.

What is different about SUAVE

  1. SUAVE is a fork of Geth, with additional precompiles for MEV applications (SUAPPs) and a modified runtime to enable confidential computation (the MEVM).
  2. Contracts are still written in Solidity, and can be extended with the new precompiles above. We call this builder solidity.
  3. Transactions have been altered to enable confidential compute requests.
    1. All the Ethereum JSON RPC methods are there, but some are extended, like eth_call and eth_sendRawTransaction.
    2. The type returned by the SUAVE JSON RPC is always a SUAVE transaction.
    3. In practice, deploying contracts is the same (and can be done from familiar tools like Remix or Forge), but sending transactions and handling their responses requires custom code, for which we have developed two SDKs, one in Go and another in typescript.
  4. We call the primary protocol actor a Kettle, because it is a modified version of a Geth node + an extended RPC + a confidential data store.
  5. The confidential compute requests contained in the extended transactions above can be encrypted for specific actors (i.e. Kettles and/or other contracts), which enables programmable privacy.
  6. A Kettle can compute over confidential data sent to it, add that data to its local store, and only emit specific information, or hints, on the SUAVE chain itself.
    1. This means the programming model and how to think about state transitions both differ from what you may be used to.
    2. These differences are best illustrated via practical examples, which you can find in our how to guides.