Skip to content
6 changes: 5 additions & 1 deletion config.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -142,10 +142,13 @@ validator_pubkeys = [
# - Registry: details of a registry to load keys from. Supported registries:
# - Lido: NodeOperatorsRegistry
# - SSV: SSV API
# You can toggle the 'enable_refreshing' flag to let this registry periodically query Lido or SSV and refresh the list of validator pubkeys belonging to the corresponding operator.
# - Stader: Stader Permissioned/Permissionless NodePool (mainnet only). Requires the PBS `rpc_url` to be set (like Lido),
# and a `stader_pool` ("permissioned" or "permissionless") in the mux loader.
# You can toggle the 'enable_refreshing' flag to let this registry periodically query Lido, SSV, or Stader and refresh the list of validator pubkeys belonging to the corresponding operator.
# Each of these registry entries must be unique:
# - There can only be one Lido entry with a given Lido node operator ID.
# - There can only be one SSV entry with a given SSV node operator ID.
# - There can only be one Stader entry with a given pool and node operator ID.
# - A Lido entry can have the same node operator ID as an SSV entry if they happen to coincide; they're treated as separate entities.
#
# Example JSON list:
Expand All @@ -158,6 +161,7 @@ loader = "./tests/data/mux_keys.example.json"
# loader = { url = "http://localhost:8000/keys" }
# loader = { registry = "lido", node_operator_id = 8, lido_module_id = 1, enable_refreshing = false }
# loader = { registry = "ssv", node_operator_id = 8, enable_refreshing = false }
# loader = { registry = "stader", node_operator_id = 8, stader_pool = "permissionless", enable_refreshing = false }
late_in_slot_time_ms = 1500
timeout_get_header_ms = 900
# For each mux, one or more [[mux.relays]] can be defined, which will be used for the matching validator pubkeys
Expand Down
244 changes: 244 additions & 0 deletions crates/common/src/abi/StaderRegistry.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
[
{
"constant": true,
"inputs": [
{
"name": "_operatorId",
"type": "uint256"
}
],
"name": "operatorStructById",
"outputs": [
{
"name": "active",
"type": "bool"
},
{
"name": "optedForSocializingPool",
"type": "bool"
},
{
"name": "operatorName",
"type": "string"
},
{
"name": "operatorRewardAddress",
"type": "address"
},
{
"name": "operatorAddress",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operator",
"type": "address"
}
],
"name": "operatorIDByAddress",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operatorId",
"type": "uint256"
}
],
"name": "getOperatorTotalKeys",
"outputs": [
{
"name": "_totalKeys",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operator",
"type": "address"
},
{
"name": "_pageNumber",
"type": "uint256"
},
{
"name": "_pageSize",
"type": "uint256"
}
],
"name": "getValidatorsByOperator",
"outputs": [
{
"name": "",
"type": "tuple[]",
"components": [
{
"name": "status",
"type": "uint8"
},
{
"name": "pubkey",
"type": "bytes"
},
{
"name": "preDepositSignature",
"type": "bytes"
},
{
"name": "depositSignature",
"type": "bytes"
},
{
"name": "withdrawVaultAddress",
"type": "address"
},
{
"name": "operatorId",
"type": "uint256"
},
{
"name": "depositBlock",
"type": "uint256"
},
{
"name": "withdrawnBlock",
"type": "uint256"
}
]
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operatorId",
"type": "uint256"
},
{
"name": "_index",
"type": "uint256"
}
],
"name": "validatorIdsByOperatorId",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_validatorId",
"type": "uint256"
}
],
"name": "validatorRegistry",
"outputs": [
{
"name": "status",
"type": "uint8"
},
{
"name": "pubkey",
"type": "bytes"
},
{
"name": "preDepositSignature",
"type": "bytes"
},
{
"name": "depositSignature",
"type": "bytes"
},
{
"name": "withdrawVaultAddress",
"type": "address"
},
{
"name": "operatorId",
"type": "uint256"
},
{
"name": "depositBlock",
"type": "uint256"
},
{
"name": "withdrawnBlock",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operatorId",
"type": "uint256"
}
],
"name": "getOperatorRewardAddress",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_operAddr",
"type": "address"
}
],
"name": "isExistingOperator",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
Loading
Loading