Skip to content

Configuration

marie-fourier edited this page Jan 1, 2025 · 1 revision

Configuration

Basic configuration

Default config.json file with basic configuration

{
  "entryPoints": [
    "0x9b5d240EF1bc8B4930346599cDDFfBD7d7D56db9"
  ],
  "relayers": [
    "test test test test test test test test test test test junk",
    "0x0101010101010101010101010101010101010101010101010101010101010101"
  ],
  "rpcEndpoint": "http://localhost:8545"
}

Configuration params

  • entryPoints: string[] - Array of supported ERC-4337 entry point contract addresses (required)
  • relayers: string[] - Private keys of relayers. One bundler can have multiple relayers (required)
  • beneficiary: string - Address of beneficiary. If not set, relayers address will be used
  • rpcEndpoint: string - Chain's RPC endpoint (required)
  • minInclusionDenominator: number - Parameter for EIP-4337 inclusion rules (default: 10)
  • throttlingSlack: number - Throttling slack (default: 10)
  • banSlack: number - Banning slack (default: 10)
  • minSignerBalance: BigNumberish - If the balance of a relayer is lower than this value, that relayer will be beneficiary even if beneficiary param is set (default: 0.1 ETH in wei)
  • minStake: BigNumberish - Minimum required stake for entities (factories, paymasters, account) (default: 0.01 ETH in wei)
  • minUnstakeDelay: number - Minimum unstaking delay period for entities (default: 0)
  • receiptLookupRange: number - Limits the block range of getUserOperationByHash and getUserOperationReceipt. If requests to those endpoints are timing out, reduce this value (default: 1024)
  • etherscanApiKey: string - Etherscan API key (used for fetching gas prices) (default: "")
  • conditionalTransactions: boolean - Bundles will be submitted as conditional transactions. See EIP-7796 (default: false)
  • rpcEndpointSubmit: string - Optional separate RPC endpoint used only for bundle submission
  • gasPriceMarkup: number - Adds markup on reported gas price via skandha_getGasPrice (in bps) (default: 0, example: 10000 = 100.00%)
  • enforceGasPrice: boolean - Do not bundle userops with low gas prices (default: false)
  • enforceGasPriceThreshold: number - Gas price threshold in bps. When set to 500, then the userop's gas price is allowed to be 5% lower than the networks gas prices (default: 1000)
  • eip2930: boolean - Enables eip-2930 (default: false)
  • useropsTTL: number - Userops TTL in seconds. After TTL you can replace a userop without increasing gas fees (default: 300)
  • whitelistedEntities: { "paymaster": [], "account": [], "factory": [], external: [] } - Entities that bypass stake and opcode validation
  • bundleGasLimitMarkup: number - Adds some amount of gas to bundle's estimated gas limit (default: 25000)
  • relayingMode: "merkle" | "flashbots" | "classic" | "kolibri" | "echo" | "fastlane" - Submit bundles via different relayers (default: classic)
  • bundleInterval: number - Interval of bundling in seconds (default: 10)
  • bundleSize: number - Max bundle size (default: 4 userops)
  • pvgMarkup: number - Adds markup on PVG (default: 0)
  • canonicalMempoolId: string - Canonical mempool id (default: "")
  • canonicalEntryPoint: string - Canonical entry point (default: "")
  • gasFeeInSimulation: boolean - Add gas fee in simulated transactions (may be required for some rpc providers) (default: false)
  • skipBundleValidation: boolean - Skip bundle validation (default: false)
  • userOpGasLimit: number - Bundler won't accept userops with higher gas limit (default: 25000000)
  • bundleGasLimit: number - Max gas limit of a bundle (default: 25000000)
  • merkleApiURL: string - API URL of (https://merkle.io/) (default: "")
  • kolibriAuthKey: string - Auth key for Kolibri (https://kolibrio.xyz/) (default: "")
  • cglMarkup: number - Adds markup on CGL (default: 35000)
  • vglMarkup: number - Adds markup on VGL (default: 0)
  • echoAuthKey: string - Auth key for Echo (https://echo.chainbound.io/) (default: "")
  • fastlaneValidators: string[] - Fastlane validators (https://x.com/ThogardPvP/status/1843652671259193355) (default: [])
  • archiveDuration: number - After submission userops will stay in the mempool for this duration so that info on these userops are quickly accessible (default: 86400 in seconds)
  • pvgMarkupPercent: number - Adds markup on PVG in bps (default: 0)
  • cglMarkupPercent: number - Adds markup on CGL in bps (default: 0)
  • vglMarkupPercent: number - Adds markup on VGL in bps (default: 3000)
  • eip1559: boolean - Enables EIP-1559 (default: true)
  • blockscoutUrl: string - URL of Blockscout API. Used by getUserOperationByHash and getUserOperationReceipt for historical data (default: "")
  • blockscoutApiKeys: string[] - Blockscout API keys (default: [])

ENV variables

You can also set config params via ENV variables. ENV variables have higher priority than config.json file.

  • SKANDHA_ENTRYPOINTS - entryPoints
  • SKANDHA_RELAYERS - relayers (example: SKANDHA_RELAYERS=0x0101010101010101010101010101010101010101010101010101010101010101, 0x0101010101010101010101010101010101010101010101010101010101010102)
  • SKANDHA_BENEFICIARY - beneficiary
  • SKANDHA_RPC - rpcEndpoint
  • SKANDHA_MIN_INCLUSION_DENOMINATOR - minInclusionDenominator
  • SKANDHA_THROTTLING_SLACK - throttlingSlack
  • SKANDHA_BAN_SLACK - banSlack
  • SKANDHA_MIN_STAKE - minStake
  • SKANDHA_MIN_UNSTAKE_DELAY - minUnstakeDelay
  • SKANDHA_RECEIPT_LOOKUP_RANGE - receiptLookupRange
  • SKANDHA_ETHERSCAN_API_KEY - etherscanApiKey
  • SKANDHA_CONDITIONAL_TRANSACTIONS - conditionalTransactions
  • SKANDHA_RPC_SUBMIT - rpcEndpointSubmit
  • SKANDHA_GAS_PRICE_MARKUP - gasPriceMarkup
  • SKANDHA_ENFORCE_GAS_PRICE - enforceGasPrice
  • SKANDHA_ENFORCE_GAS_PRICE_THRESHOLD - enforceGasPriceThreshold
  • SKANDHA_EIP2930 - eip2930
  • SKANDHA_USEROPS_TTL - useropsTTL
  • SKANDHA_WHITELISTED_ENTITIES - whitelistedEntities
  • SKANDHA_BUNDLE_GAS_LIMIT_MARKUP - bundleGasLimitMarkup
  • SKANDHA_RELAYING_MODE - relayingMode
  • SKANDHA_BUNDLE_INTERVAL - bundleInterval
  • SKANDHA_BUNDLE_SIZE - bundleSize
  • SKANDHA_PVG_MARKUP - pvgMarkup
  • SKANDHA_CANONICAL_MEMPOOL_ID - canonicalMempoolId
  • SKANDHA_CANONICAL_ENTRY_POINT - canonicalEntryPoint
  • SKANDHA_GAS_FEE_IN_SIMULATION - gasFeeInSimulation
  • SKANDHA_SKIP_BUNDLE_VALIDATION - skipBundleValidation
  • SKANDHA_USER_OP_GAS_LIMIT - userOpGasLimit
  • SKANDHA_BUNDLE_GAS_LIMIT - bundleGasLimit
  • SKANDHA_MERKLE_API_URL - merkleApiURL
  • SKANDHA_KOLIBRI_AUTH_KEY - kolibriAuthKey
  • SKANDHA_CGL_MARKUP - cglMarkup
  • SKANDHA_VGL_MARKUP - vglMarkup
  • SKANDHA_ECHO_AUTH_KEY - echoAuthKey
  • SKANDHA_FASTLANE_VALIDATORS - fastlaneValidators
  • SKANDHA_ARCHIVE_DURATION - archiveDuration
  • SKANDHA_PVG_MARKUP_PERCENT - pvgMarkupPercent
  • SKANDHA_CGL_MARKUP_PERCENT - cglMarkupPercent
  • SKANDHA_VGL_MARKUP_PERCENT - vglMarkupPercent
  • SKANDHA_EIP1559 - eip1559
  • SKANDHA_BLOCKSCOUT_URL - blockscoutUrl
  • SKANDHA_BLOCKSCOUT_API_KEYS - blockscoutApiKeys
Clone this wiki locally