Running Scroll SDK in Production

Overview

This guide will support DevOps teams in running Scroll SDK in a production environment. This requires many considerations beyond a local Devnet deployment.

While we build this out, we’d recommend looking at the specifics in our Digital Ocean guide, which walks through a full Kubernetes deployment using an easy-to-understand interface.

Monitoring

We’re using Prometheus and some custom tooling. More info later.

Ingress

We’re using Nginx and Cert Manager. More info later.

Secrets

We use External Secret Manager to store secrets. This is a Kubernetes-native solution that allows you to store secrets in a separate repository. This is a more secure way to store secrets than in the Scroll SDK repository, but you will still need to bring your own secret management tool. This could be Hashicorp Vault, AWS Secret Manager, or similar.

Machine Resources

In addition to 3 databases (and an optional database for Blockscout), we’ll be providing guidance on the resources needed for each Scroll service.

Sepolia Configuration

For Scroll’s Sepolia environment, we use the following resources:

ServiceQuantity (sepolia)vCPU (sepolia)Mem in Mi (sepolia)
balance-checker10.1500
bridge-history-api20.2200
bridge-history-fetcher10.2200
coordinator-api20.220000
coordinator-cron10.1200
chain-monitor10.2200
frontends 10.1500
gas-oracle10.1200
l2-bootnode3216000
l2-rpc40.54000
l2-sequencer10.11500
rollup-explorer-backend236000
rollup-node10.1200
rpc-gateway10.1100
Total2215.9120000

Accounting for L1 Fees on Alternative Gas Token Chains

On Scroll, transactions on L2 have two components — the gas costs for execution and an L1 data fee. When gas on your network is paid in a token that has no standard relationship to the currency being used to pay for data fees on the L1, you will need to introduce tooling that can set the gas caluclation “scalar” values.

At the moment, we have not built any automated tooling for this, and instead of viewing the ERC20 value as 1:1 with Sepolia Ether, we suggest setting the scalars to 0 to eliminate these overheads.

To do so, you can run the following commands using your L2 RPC URL and Owner account private key:

cast send --rpc-url http://l2-rpc.scrollsdk 0x5300000000000000000000000000000000000002 "setCommitScalar(uint256)" 0 --private-key [private-key]
cast send --rpc-url http://l2-rpc.scrollsdk 0x5300000000000000000000000000000000000002 "setBlobScalar(uint256)" 0 --private-key [private-key]
Stay up-to-date on the latest Scroll Developer news
Roadmap updates, virtual and live events, ecosystem opportunities and more
Thank you for subscribing!

Resources

Follow Us