🌳
pt0/deployF/ethF/validatorAttestJobAI.mts
3import { DateTime } from 'luxon'
6export const mkValidatorAttestJob = ({ethValidatorNum, beaconFallbackCfgs = [], intervalSec = 60 * 30}: {
7 ethValidatorNum: number, beaconFallbackCfgs?: any[], intervalSec?: number,
8}) => ({
9 name: `validatorAttest${ethValidatorNum}`,
10 intervalSec,
11 runFnc: async () => {
12 const v: any = await lastValidatedAt({ethValidatorNum, beaconFallbackCfgs})
13 if (v.error) throw new Error(`validator ${ethValidatorNum}: ${v.error}`)
14 const agoSec = luxNow().diff(DateTime.fromISO(v.iso)).as('seconds')
15 const maxAgoSec = 60 * 60
16 if (agoSec > maxAgoSec) throw new Error(`validator ${ethValidatorNum}: last attestation ${secToHumanAbs(agoSec)} ago (slot ${v.slot} via ${v.source})`)
17 },
18})