Stackr Config
The stackr.config.ts
file is the main configuration file for the micro-rollup. It contains all the parameters that are used to configure the micro-rollup.
Example
const stackrConfig: StackrConfig = {
sequencer: {
blockSize: 16,
blockTime: 10,
allowEmptyBlocks: true,
},
syncer: {
slotTime: 1000,
vulcanRPC: process.env.VULCAN_RPC as string,
L1RPC: process.env.L1_RPC as string,
},
operator: {
accounts: [
{
privateKey: process.env.PRIVATE_KEY as string,
purpose: KeyPurpose.BATCH,
scheme: SignatureScheme.ECDSA,
},
],
},
domain: {
name: "Stackr MVP v0",
version: "1",
salt: "0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
},
datastore: {
type: "sqlite",
uri: process.env.DATABASE_URI,
},
registryContract: REGISTRY_CONTRACT,
preferredDA: DA.AVAIL,
logLevel: "log",
};
where the type definition of StackrConfig
is as follows:
interface StackrConfig {
isSandbox?: boolean;
deploymentFile?: string;
sequencer: {
blockSize: number;
blockTime: number;
allowEmptyBlocks?: boolean;
disableBuilder?: boolean;
};
syncer: {
slotTime?: number;
vulcanRPC: string;
L1RPC: string;
disableVulcanSync?: boolean;
disableL1Sync?: boolean;
};
registryContract: string;
operator: {
accounts: Account[];
};
domain: {
name: string;
version: string;
salt: string;
};
datastore: {
type?: "sqlite" | "postgres" | "mysql" | "mariadb";
uri: string;
};
preferredDA?: "avail" | "celestia";
logLevel?: "log" | "error" | "warn" | "debug" | "verbose";
}
Parameters
isSandbox
: A boolean flag to indicate if the rollup is running in a sandbox environment. Defaults tofalse
.
When running an MRU in sandbox mode, the rollup creates a temporary SQLite database to store data and the blocks are not sent to Vulcan or L1 for verification. Vulcan and L1 Syncers are disabled in sandbox mode and therefore the only confirmation you get on an action is C1
.
deploymentFile
: Relative path to the deployment file containing theappId
,appInbox
andchainId
of the micro-rollup. Defaults todeployment.json
.
This file is created automatically during registration of the micro-rollup with the registry contract using stackr register
command.
sequencer
: Contains the parameters for the sequencer module.
blockSize
: The number of actions that the sequencer picks up from the pool to build a block.blockTime
: The time interval (in milliseconds) after which the sequencer picks up actions from the pool to build a block.allowEmptyBlocks
: A flag to allow creation of empty blocks (the one with no actions). Defaults tofalse
.disableBuilder
: A flag to indicate if the rollup should not use the builder to generate new blocks. This is useful for functionally generating blocks when needed. Defaults tofalse
.
syncer
: Contains the parameters for the syncer module.
slotTime
: The time interval (in milliseconds) after which the rollup sends a block to Vulcan for verification and finalization.vulcanRPC
: The RPC endpoint of the Vulcan chain. Can be found in Network Configuration.L1RPC
: The RPC endpoint of the L1 chain. Can be found in Network Configuration.disableVulcanSync
: A flag to indicate if the rollup should not sync with Vulcan. Defaults tofalse
, except in Sandbox mode, where it defaults totrue
.disableL1Sync
: A flag to indicate if the rollup should not sync with the L1 chain. Defaults tofalse
, except in Sandbox mode, where it defaults totrue
.
operator
: Contains the parameters for the operator module.
accounts
: Contains the private key of the operator account. This private key is used for registration, deployment, and signing on incoming actions and proposed blocks.
domain
: Contains the parameters for the EIP-712 domain.
name
: The name of the micro-rollupversion
: The version of the micro-rollupsalt
: A random salt value
The other fields, chainId
and verifyingContract
, required by EIP-712 domain definition are taken automatically from the given deployment file.
This is used for EIP-712 Typed Signature over the action payloads submitted by users.
datastore
: Contains the parameters for the datastore module.
This is used for local storage of the micro-rollup state, actions and blocks.
registryContract
: The address of the registry contract.
Can be found in Network Configuration.
preferredDA
: The preferred data availability layer
We currently support two data availability layers -
- Avail (default)
- Celestia
with more support of data availability layers coming soon. No additional configuration is required beyond selecting the preferred data availability layer.
logLevel
: The log level of the micro-rollup. Defaults tolog
.
This is used for viewing the logs of the micro-rollup during runtime. Logs are a useful tool for debugging and monitoring the micro-rollup and checking for any errors.
Accessing config values
It's not recommended to use the stackrConfig
object defined above directly in your rollup code, other than for initializing MicroRollup
.
Instead, to read any value from the config, use the MicroRollupResponse.config
object which returns a Readonly<ExternalConfig>
object whose type definition is:
type ExternalConfig = {
appId: number;
appInbox: string;
chainId: number;
disableBuilder: boolean;
blockSize: number;
blockTime: number;
allowEmptyBlocks: boolean;
disableVulcanSync: boolean;
disableL1Sync: boolean;
slotTime: number;
vulcanRPC: string;
L1RPC: string;
isSandbox: boolean;
domain: Domain;
registryContract: string;
preferredDA: DA;
accounts: PublicAccount[];
logLevel: LogLevel;
sdkVersion: string;
};