@@ -320,51 +320,6 @@ def test_attestation_target_justifiable_constraint(
320320 2. delta is a perfect square (1, 4, 9, 16, 25, ...)
321321 3. delta is a pronic number (2, 6, 12, 20, 30, ...)
322322
323- Expected Target Advancement:
324- - Slots 1-3: 3-slot walkback target = slot 0
325- delta = slot 0 (target) - slot 0 (finalized) = 0
326- Use Rule 1: delta 0 ≤ 5
327-
328- - Slot 4: 3-slot walkback target = slot 1
329- delta = slot 1 (target) - slot 0 (finalized) = 1
330- Uses Rule 1: delta 1 ≤ 5
331-
332- - Slot 5: 3-slot walkback target = slot 2
333- delta = slot 2 (target) - slot 0 (finalized) = 2
334- Uses Rule 1: delta 2 ≤ 5
335-
336- - Slot 6: 3-slot walkback target = slot 3
337- delta = slot 3 (target) - slot 0 (finalized) = 3
338- Uses Rule 1: delta 3 ≤ 5
339-
340- - Slot 7: 3-slot walkback target = slot 4
341- delta = slot 4 (target) - slot 0 (finalized) = 4
342- Uses Rule 1: delta 4 ≤ 5
343-
344- - Slot 8: 3-slot walkback target = slot 5
345- delta = slot 5 (target) - slot 0 (finalized) = 5
346- Uses Rule 1: delta 5 ≤ 5
347-
348- - Slot 9: 3-slot walkback target = slot 6
349- delta = slot 6 (target) - slot 0 (finalized) = 6
350- Uses Rule 3: delta 6 is pronic (2×3)
351-
352- - Slot 10: 3-slot walkback target = slot 7
353- delta = slot 7 (target) - slot 0 (finalized) = 7
354- Target can't advance: delta 7 fails all rules
355-
356- - Slot 11: 3-slot walkback target = slot 8
357- delta = slot 8 (target) - slot 0 (finalized) = 8
358- Target can't advance: delta 8 fails all rules
359-
360- - Slot 12: 3-slot walkback target = slot 9
361- delta = slot 9 (target) - slot 0 (finalized) = 9
362- Uses Rule 2: delta 9 is a perfect square (3^2)
363-
364- - Slot 13: 3-slot walkback target = slot 10
365- delta = slot 10 (target) - slot 0 (finalized) = 10
366- Target can't advance: delta 10 fails all rules
367-
368323 Why This Matters
369324 ----------------
370325 The justifiability rules prevent long-range attacks by restricting which
@@ -381,25 +336,45 @@ def test_attestation_target_justifiable_constraint(
381336 block = BlockSpec (slot = Slot (i )),
382337 checks = StoreChecks (
383338 head_slot = Slot (i ),
384- # Target advancement pattern:
385- # - Slot 1: target = 0 (3-slot walkback reaches safe target at slot 0)
386- # - Slot 2: target = 0 (3-slot walkback reaches safe target at slot 0)
387- # - Slot 3: target = 0 (3-slot walkback reaches safe target at slot 0)
388- # - Slot 4: target = 1 (begins advancing)
389- # - Slot 5: target = 2
390- # - Slot 6: target = 3
391- # - Slot 7: target = 4
392- # - Slot 8: target = 5
393- # - Slot 9: target = 6
394- # - Slot 10: target = 6 (advancement slows)
395- # - Slot 11: target = 6 (advancement slows)
396- # - Slot 12: target = 9
397- # - Slot 13: target = 9 (advancement slows)
398339 attestation_target_slot = Slot (
399- 0 if i <= 3 else (i - 3 if i <= 9 else (6 if i <= 11 else 9 ))
340+ # Mapping of current slot -> expected target slot
341+ # delta = current_slot - JUSTIFICATION_LOOKBACK_SLOTS - finalized_slot
342+ # delta = current_slot - 3 - 0
343+ {
344+ 1 : 0 , # 3-slot walkback reaches safe target at slot 0
345+ 2 : 0 , # 3-slot walkback reaches safe target at slot 0
346+ 3 : 0 , # 3-slot walkback reaches safe target at slot 0
347+ 4 : 1 , # delta = 4 - 3 - 0 = 1, Rule 1: delta 1 ≤ 5
348+ 5 : 2 , # delta = 5 - 3 - 0 = 2, Rule 1: delta 2 ≤ 5
349+ 6 : 3 , # delta = 6 - 3 - 0 = 3, Rule 1: delta 3 ≤ 5
350+ 7 : 4 , # delta = 7 - 3 - 0 = 4, Rule 1: delta 4 ≤ 5
351+ 8 : 5 , # delta = 8 - 3 - 0 = 5, Rule 1: delta 5 ≤ 5
352+ 9 : 6 , # delta = 6 - 0 = 6, Rule 3: pronic number (2*3)
353+ 10 : 6 , # delta = 10 - 3 - 0 = 7
354+ 11 : 6 , # delta = 11 - 3 - 0 = 8
355+ 12 : 9 , # delta = 9 - 0 = 9, Rule 2: perfect square (3^2)
356+ 13 : 9 , # delta = 13 - 3 - 0 = 10
357+ 14 : 9 , # delta = 14 - 3 - 0 = 11
358+ 15 : 12 , # delta = 15 - 3 - 0 = 12, Rule 3: pronic number (3*4)
359+ 16 : 12 , # delta = 16 - 3 - 0 = 13
360+ 17 : 12 , # delta = 17 - 3 - 0 = 14
361+ 18 : 12 , # delta = 18 - 3 - 0 = 15
362+ 19 : 16 , # delta = 19 - 3 - 0 = 16, Rule 2: perfect square (4^2)
363+ 20 : 16 , # delta = 20 - 3 - 0 = 17
364+ 21 : 16 , # delta = 21 - 3 - 0 = 18
365+ 22 : 16 , # delta = 22 - 3 - 0 = 19
366+ 23 : 20 , # delta = 23 - 3 - 0 = 20, Rule 3: pronic number (4*5)
367+ 24 : 20 , # delta = 24 - 3 - 0 = 21
368+ 25 : 20 , # delta = 25 - 3 - 0 = 22
369+ 26 : 20 , # delta = 26 - 3 - 0 = 23
370+ 27 : 20 , # delta = 27 - 3 - 0 = 24
371+ 28 : 25 , # delta = 28 - 3 - 0 = 25, Rule 2: perfect square (5^2)
372+ 29 : 25 , # delta = 29 - 3 - 0 = 26
373+ 30 : 25 , # delta = 30 - 3 - 0 = 27
374+ }[i ]
400375 ),
401376 ),
402377 )
403- for i in range (1 , 13 )
378+ for i in range (1 , 31 )
404379 ],
405380 )
0 commit comments