Notes / Corrections

Correction: Chainlink and LayerZero on Robinhood Chain used a leftover multisig formula (2026-09-21)

Corrections2026-09-21Chain: Robinhood Chain

Source: data/correction_2026-09-21-chainlink-layerzero-multisig-formula.md in the repository, rendered here without changes. Source file

What was found#

scripts/lib/scorers.py scores a Safe-rooted target with _safe_rooted_scores (the batch-9 convention): adminKeyScore 65 for threshold >= 3, and multisigScore = min(100, 15 * threshold + 5 * (owners - threshold)), "rewards both threshold and dispersion". Two older scorers did not: score_chainlink_admin_safe and score_layerzero_infra (both added in commit 58c8409, 2026-09-16, batch 8) took multisigScore = threshold * 8, and the Chainlink one kept adminKeyScore 65 even when its Safe did not resolve.

I searched for a reason. None is written down: not in the commit message, not in data/scored_targets_2026-09-16-batch8.md (which calls the result "a real, moderate-size multisig" and states the composite 36), not in the scorers' docstrings. The only trace is the _safe_rooted_scores docstring, which says the batch-9 formula "lands the four batch-9 targets in the same range as the closest existing shapes (... Chainlink 4-of-9 = 36, LayerZero 5-of-7 = 34)": the older numbers were used as calibration anchors for the newer formula, which is not a statement that they were right. METHODOLOGY.md documents that some scorers use a tuned variant "see that function's own docstring"; these two had none.

Correction#

TargetShapemultisigScorecomposite
Chainlink Price Feed Admin (Robinhood Chain)4-of-9 Safe32 to 8536 to 52
LayerZero V2 EndpointV2, SendUln302, ReceiveUln302bespoke 5-of-7 multisig40 to 8534 to 48

What was left alone#

The Morpho vault scorer (score_morpho_vault_generic) also uses a * 8 shape (curator and owner thresholds summed). Unlike the two above it documents itself as a heuristic, names its known limitation and is calibrated to the manual scores of the same vaults (data/scored_targets_2026-09-15-batch3.md). It stays.

Direction of the change#

Both values go up: the oracle now reports less risk for two systemically central targets (every Chainlink price feed read on the chain, and LayerZero's messaging core). That follows from applying one documented formula to the same shapes, and it is recorded here so it is not read as a quiet improvement. Neither target has a timelock, so their timelockScore stays 0; the scores remain in the middle of the range for that reason.

Not on-chain yet#

Scorer output only. The deployed Robinhood Chain testnet oracle holds 36 and 34 until its next re-push.

Not an audit, not investment advice. All notes ยท Back to the dashboard.