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β
Name | Value | Unit |
---|---|---|
PERIOD | 4 | block |
EPOCH | 30000 | block |
BLOCK_TIME | 3 | second |
GAS_LIMIT | 30000000 | gas |
NUM_VALIDATORS | 5 | Nodes |
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 KettleAddress
. SUAVE transactions are valid if and only if they are signed by the KettleAddress
specified by the user in the original ConfidentialComputeRequest
, which is included as the ConfidentialComputeRecord
.
type SuaveTransaction struct {
ConfidentialComputeRequest ConfidentialComputeRecord
ConfidentialComputeResult []byte
// Kettle's signature
ChainID *big.Int
V *big.Int
R *big.Int
S *big.Int
}