-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
121 lines (100 loc) · 6.02 KB
/
Copy pathconfig.example.yaml
File metadata and controls
121 lines (100 loc) · 6.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Operator margin script runner — example config.
#
# Top entries are sensible defaults you rarely need to touch.
# Middle entries are network-specific (look them up for your chain).
# Bottom entries are operator-specific (set these per operator).
#
# Numeric values that exceed JavaScript's safe-integer range (logChunkSize,
# dustThreshold, stakingRegistryDeployedAtBlock) are quoted strings so the
# schema parses them as bigints without precision loss.
# ─── Tunables (sensible defaults; change only when needed) ──────────────────
# Multicall3 — same address on every major EVM chain. Override only if your
# chain has it deployed somewhere else.
multicallAddress: "0xcA11bde05977b3631167028862bE2a173976CA11"
# disperse.app's batch contract. Used by `--output-mode disperse` (the default
# for live EOA broadcast). Disperse's `disperseTokenSimple(token, recipients,
# amounts)` does `transferFrom(msg.sender, recipients[i], amounts[i])`
# internally — so approving Disperse is safe: only YOUR calls to Disperse can
# spend your allowance. Contrast with Multicall3, which lets the caller
# specify an arbitrary `from` — approving Multicall3 for ERC20 transfers is
# a known drain vector; do not do it.
# Canonical mainnet deployment; override only if disperse is at a different
# address on your chain.
disperseAddress: "0xD152f549545093347A162Dce210e7293f1452150"
# Max blocks per `eth_getLogs` call during discovery. Most public RPCs cap
# at 10k blocks; lower this if you see range errors.
logChunkSize: "10000"
# Block range per eth_getLogs call for the stake-event scan specifically.
# That scan is filtered by providerId (indexed topic) so it's very sparse —
# safe to use a much wider range than logChunkSize. The default matches the
# QuickNode 10k cap (which applies even to filtered queries); raise it (e.g.
# "100000" or higher) on Alchemy/Infura/full-archive nodes to cut the ~140-
# chunk stake scan to ~14 calls.
stakeLogChunkSize: "10000"
# Cap on RPC calls per second, to stay under your provider's rate limit.
# Proposer recovery makes one eth_getTransactionByHash per checkpoint; without
# a cap these trip the limit (e.g. QuickNode free = 125/s) and get dropped,
# which skews the split and makes results non-deterministic. Set this a bit
# under your plan's limit. 0 = unlimited.
rpcMaxRequestsPerSecond: 100
# Skip transfers below this many token base units (after the rate is applied).
dustThreshold: "1"
# How to divide the period's reward delta among delegators:
# proposals – (default) proportional to how many checkpoints each
# delegator's attester actually proposed in the settlement
# window. Attribution by real work: an idle attester's
# delegator earns nothing. Needs the rollup's proposer views,
# so an archival RPC is required.
# equal-split – divide evenly across all active delegators (a flat pool;
# ignores who did the work). Also used automatically when
# delegatorsOverride is set.
attributionMode: "proposals"
# Where to write audit records.
runsDir: "./runs"
# Block at which the StakingRegistry was deployed — bounds the discovery
# scan so it doesn't crawl from genesis. OPTIONAL: omit it (or leave it 0)
# and the runner binary-searches eth_getCode to find the deploy block
# automatically (~25 RPC calls). Set it to a real block to skip that lookup.
# stakingRegistryDeployedAtBlock: "24800000"
# Block at which the Rollup was deployed — used as the lower bound for the
# epoch resolver's binary searches over L1 history. OPTIONAL: omit and the
# resolver auto-detects it via eth_getCode binary search (~25 RPC calls,
# one-time per run). Set it to the actual deploy block to skip that scan.
# The runner prints the auto-detected value on each run so you can paste it
# in here.
# rollupDeployedAtBlock: "24800000"
# Escape hatch: bypass on-chain discovery and use this delegator list
# instead. Useful for tests, edge cases, or operators whose split setup
# the runner can't resolve. Comment out / omit to use on-chain discovery.
# delegatorsOverride:
# - "0x0000000000000000000000000000000000000001"
# - "0x0000000000000000000000000000000000000002"
# ─── Network-specific (look these up for your chain) ────────────────────────
# Reward ERC20.
tokenAddress: "0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2"
# Ignition-contracts StakingRegistry — source of StakedWithProvider events
# and exposes PULL_SPLIT_FACTORY() so the runner can decode the per-stake
# split recipient.
stakingRegistryAddress: "0x042dF8f42790d6943F41C25C2132400fd727f452"
# Rollup instance the operator stakes against. Used to derive GSE via
# getGSE() and to check active attester status via isRegistered.
# NOTE: each protocol upgrade deploys a NEW rollup contract with its own
# epoch/checkpoint numbering starting at 0 — after an upgrade, point this at
# the new rollup and settle its epochs from 0. The old address stays valid
# for re-verifying historical audits of pre-upgrade windows.
# v5 (AZUP-2, current): 0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34
# v4 (frozen at epoch 4951): 0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962
rollupAddress: "0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34"
# ─── Operator-specific (set these per operator) ─────────────────────────────
# Operator's numeric provider id.
providerId: "42"
# Wallet that receives your sequencers' coinbase rewards and (via this tool's
# emitted calldata) pays delegators. Any wallet you control works — Safe /
# multisig / smart-account / EOA — the choice only affects how the calldata
# from `--emit-calldata` gets signed.
distributionWalletAddress: "0x000000000000000000000000000000000000fEED"
# Commission this period, in basis points (10000 = 100%).
# Edit this between settlement runs to change the rate.
commissionBps: 1200
# Archival RPC. Historical balanceOf + event scans require archive support.
rpcUrl: "https://your-archival-rpc.example"