Skip to main content

Configuration Reference

Complete reference for all environment variables used by L{CORE} and the Attestor service.

Supported Chains

ChainChain IDStatus
Arbitrum One42161✅ Supported (Production)
Arbitrum Sepolia421614✅ Supported (Testnet)
Locale NetworkTBD🔜 Coming Soon
Arbitrum Orbit Chains-✅ Supported

Limitations

LimitationDetails
EVM onlyCurrently requires EVM-compatible chain for settlement
Determinism requiredCartesi rollup code must be deterministic (no external network calls, no random)
TEE for productionFull security guarantees require TEE deployment (EigenCloud)
LatencyOn-chain settlement adds latency vs centralized alternatives

Quick Reference

CategoryFileDescription
Attestor.env or .env.eigencloudMain attestor service configuration
Cartesi Node.env.cartesi-eigencloudCartesi rollup node configuration

Attestor Environment Variables

Server Configuration

VariableRequiredDefaultDescription
PORTNo8001HTTP server port
APP_PORTNo-Alternative port (EigenCloud uses this)
NODE_ENVNodevelopmentEnvironment: development, production, test
LOG_LEVELNoinfoLog level: debug, info, warn, error

Database Configuration (Supabase)

VariableRequiredDefaultDescription
SUPABASE_URLYes-Supabase project URL
SUPABASE_SERVICE_KEYYes-Service role key (admin operations)
SUPABASE_ANON_KEYNo-Anonymous key (public operations)
JWT_SECRETYes-Secret for admin session tokens

Wallet Configuration

VariableRequiredDefaultDescription
PRIVATE_KEYYes*-ETH private key for signing
MNEMONICYes*-Mnemonic phrase (EigenCloud TEE mode)

*One of PRIVATE_KEY or MNEMONIC is required. PRIVATE_KEY takes precedence.

L{CORE} Configuration

VariableRequiredDefaultDescription
LCORE_ENABLEDNo0Enable L{CORE} integration (1 to enable)
LCORE_NODE_URLYes*-Cartesi node URL (e.g., http://${CARTESI_NODE_IP}:10000)
LCORE_RPC_URLYes*-Blockchain RPC for InputBox transactions
LCORE_DAPP_ADDRESSYes*-DApp contract address
LCORE_INPUTBOX_ADDRESSYes*-InputBox contract address
LCORE_ADMIN_PUBLIC_KEYYes*-NaCl public key (base64) for encryption
LCORE_ADMIN_PRIVATE_KEYYes*-NaCl private key (base64) for decryption

*Required when LCORE_ENABLED=1.

TOPRF Configuration

VariableRequiredDefaultDescription
TOPRF_SHARE_PRIVATE_KEYNo-Threshold signature private key share
TOPRF_SHARE_PUBLIC_KEYNo-Threshold signature public key share
TOPRF_PUBLIC_KEYNo-Overall threshold signature public key

Chain Configuration

VariableRequiredDefaultDescription
CHAIN_IDNo-Chain ID for contract deployment
TASK_CONTRACT_ADDRESSNo-Task contract address
GOVERNANCE_CONTRACT_ADDRESSNo-Governance contract address

Monitoring & Observability

VariableRequiredDefaultDescription
ELASTIC_APM_SERVER_URLNo-Elastic APM server URL
ELASTIC_APM_SECRET_TOKENNo-Elastic APM authentication token
ELASTIC_APM_SAMPLE_RATENo-Fraction of requests to sample

Other Settings

VariableRequiredDefaultDescription
HTTPS_PROXY_URLNo-Geo-specified proxy URL template
ZK_CONCURRENCYNo10Number of concurrent ZK proofs
LOCALE_PUBLIC_URLNo-Public WebSocket URL for clients
DISABLE_BGP_CHECKSNo0Disable BGP checks (testing only)
ACCEPT_CLAIM_PAYMENT_REQUESTSNo0Allow attestor to pay for claims
AUTHENTICATION_PUBLIC_KEYNo-Public key for private auth

Cartesi Node Environment Variables

These variables configure the Cartesi rollup node when deployed to EigenCloud.

Critical Configuration

VariableRequiredDefaultDescription
CARTESI_HTTP_ADDRESSYES127.0.0.1MUST be 0.0.0.0 for EigenCloud
CARTESI_HTTP_PORTNo10000HTTP server port

Contract Addresses

VariableRequiredDefaultDescription
CARTESI_CONTRACTS_APPLICATION_ADDRESSYes-DApp contract address
CARTESI_CONTRACTS_INPUT_BOX_ADDRESSYes-InputBox contract address
CARTESI_CONTRACTS_AUTHORITY_ADDRESSYes-Authority contract address
CARTESI_CONTRACTS_HISTORY_ADDRESSYes-History contract address
CARTESI_CONTRACTS_INPUT_BOX_DEPLOYMENT_BLOCK_NUMBERYes-Block number when InputBox was deployed

Chain Configuration

VariableRequiredDefaultDescription
CARTESI_BLOCKCHAIN_IDYes-Chain ID (421614 for Arbitrum Sepolia)
CARTESI_BLOCKCHAIN_HTTP_ENDPOINTYes-HTTP RPC endpoint
CARTESI_BLOCKCHAIN_WS_ENDPOINTYes-WebSocket RPC endpoint
CARTESI_BLOCKCHAIN_FINALITY_OFFSETNo1Blocks to wait for finality
CARTESI_EPOCH_LENGTHNo43200Epoch length in blocks

Node Wallet

VariableRequiredDefaultDescription
CARTESI_AUTH_MNEMONICYes-Mnemonic for node wallet

Database

VariableRequiredDefaultDescription
CARTESI_POSTGRES_ENDPOINTNo-PostgreSQL connection string

Other

VariableRequiredDefaultDescription
CARTESI_EXPERIMENTAL_DISABLE_CONFIG_LOGNofalseDisable config logging

Example Configurations

Attestor (.env.eigencloud)

# L\{CORE\} Production Configuration
LCORE_ENABLED=1
LCORE_NODE_URL=http://${CARTESI_NODE_IP}:10000
LCORE_RPC_URL=https://arb-sepolia.g.alchemy.com/v2/YOUR_KEY
LCORE_DAPP_ADDRESS=0xAE0863401D5B953b89cad8a5E7c98f5136E9C26d
LCORE_INPUTBOX_ADDRESS=0x59b22D57D4f067708AB0c00552767405926dc768

# Encryption Keys
LCORE_ADMIN_PUBLIC_KEY=your-base64-public-key
LCORE_ADMIN_PRIVATE_KEY=your-base64-private-key

# Server
NODE_ENV=production
PORT=8001

Cartesi Node (.env.cartesi-eigencloud)

# CRITICAL: Bind to all interfaces
CARTESI_HTTP_ADDRESS=0.0.0.0

# Contract Addresses
CARTESI_CONTRACTS_APPLICATION_ADDRESS=0xAE0863401D5B953b89cad8a5E7c98f5136E9C26d
CARTESI_CONTRACTS_AUTHORITY_ADDRESS=0x08cC70a34EA78F35a871822F685dCB99EE079A08
CARTESI_CONTRACTS_HISTORY_ADDRESS=0xF1A186AFC0C794dA242fcE50052592dDA30F0457
CARTESI_CONTRACTS_INPUT_BOX_ADDRESS=0x59b22D57D4f067708AB0c00552767405926dc768
CARTESI_CONTRACTS_INPUT_BOX_DEPLOYMENT_BLOCK_NUMBER=2838409

# Chain Configuration (Arbitrum Sepolia)
CARTESI_BLOCKCHAIN_ID=421614
CARTESI_BLOCKCHAIN_FINALITY_OFFSET=1
CARTESI_EPOCH_LENGTH=43200

# RPC Endpoints
CARTESI_BLOCKCHAIN_HTTP_ENDPOINT=https://arb-sepolia.g.alchemy.com/v2/YOUR_KEY
CARTESI_BLOCKCHAIN_WS_ENDPOINT=wss://arb-sepolia.g.alchemy.com/v2/YOUR_KEY

# Node Wallet
CARTESI_AUTH_MNEMONIC=your twelve word mnemonic phrase here

# Security
CARTESI_EXPERIMENTAL_DISABLE_CONFIG_LOG=true

Development (Local)

PRIVATE_KEY=0x...development-key...
LCORE_RPC_URL=https://arb-sepolia.g.alchemy.com/v2/YOUR_KEY
LCORE_DAPP_ADDRESS=0xAE0863401D5B953b89cad8a5E7c98f5136E9C26d
LCORE_ADMIN_PUBLIC_KEY=...
LCORE_ADMIN_PRIVATE_KEY=...
PROOF_SIGNING_KEY=...
LOG_LEVEL=debug

Generating Keys

NaCl Keypair (L{CORE} Admin)

node -e "
const nacl = require('tweetnacl');
const keypair = nacl.box.keyPair();
console.log('LCORE_ADMIN_PUBLIC_KEY=' + Buffer.from(keypair.publicKey).toString('base64'));
console.log('LCORE_ADMIN_PRIVATE_KEY=' + Buffer.from(keypair.secretKey).toString('base64'));
"

Proof Signing Key

node -e "console.log('PROOF_SIGNING_KEY=' + require('crypto').randomBytes(32).toString('hex'))"

Private Key (for testing only)

node -e "console.log('PRIVATE_KEY=0x' + require('crypto').randomBytes(32).toString('hex'))"

Docker Image Hash (TEE Registration)

docker build -f attestor.dockerfile -t attestor . && \
docker inspect --format='{{.Id}}' attestor | cut -d: -f2 | sed 's/^/0x/'

Network Reference

Contract Addresses (Arbitrum Sepolia)

ContractAddress
DApp0xAE0863401D5B953b89cad8a5E7c98f5136E9C26d
InputBox0x59b22D57D4f067708AB0c00552767405926dc768
Authority0x08cC70a34EA78F35a871822F685dCB99EE079A08
History0xF1A186AFC0C794dA242fcE50052592dDA30F0457

Arbitrum Sepolia (Testnet)

SettingValue
Chain ID421614
InputBox Deployment Block2838409
Block Explorerhttps://sepolia.arbiscan.io
Faucethttps://sepoliafaucet.com

Arbitrum One (Mainnet)

SettingValue
Chain ID42161
InputBoxCheck Cartesi docs
Block Explorerhttps://arbiscan.io

Security Notes

  1. Never commit .env to git - It's in .gitignore by default
  2. Use different keys per environment - Dev, staging, production
  3. Rotate keys regularly - Especially PROOF_SIGNING_KEY
  4. Secure your private key - Consider hardware wallets for production
  5. Limit RPC access - Use IP allowlists when possible