diff --git a/docs/plans/counter-asic-3-gate/class-v4-signal-failed-case.json b/docs/plans/counter-asic-3-gate/class-v4-signal-failed-case.json new file mode 100644 index 000000000..ce5d82c51 --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-signal-failed-case.json @@ -0,0 +1,533 @@ +{ + "pass": false, + "expect": "flip", + "signals": [ + 4, + 4, + 3 + ], + "checks": { + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true, + "miners_agree_on_every_program": true, + "window_line_on_every_node": true, + "every_node_signals_its_byte": true, + "chain_carries_the_bytes": false, + "template_switched_to_v4": false, + "switched_at_the_first_full_window_epoch": false, + "switched_before_the_floor": false, + "signal_line_on_every_node_same_epoch": false, + "signal_share_at_or_above_threshold": false, + "blocks_on_both_sides": false, + "v4_ids_equal_the_cli_v4_id": false, + "v4_ids_differ_from_the_same_seed_v3_id": false + }, + "window": 120, + "floor": "never", + "v3_activation": 60, + "epoch_blocks": 60, + "lead": 10, + "first_full_window_epoch": 3, + "floor_epoch": null, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "template_switch": null, + "run_ended_at_s": 391.2, + "final_daa": 420, + "max_epoch_seen": 7, + "epochs": { + "0": { + "class": 2, + "firstSeenDaa": 0, + "at": 4.7, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "1": { + "class": 3, + "firstSeenDaa": 60, + "at": 29.7, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 7288, + "signal_epoch": null + }, + "2": { + "class": 3, + "firstSeenDaa": 120, + "at": 107.8, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6890, + "signal_epoch": null + }, + "3": { + "class": 3, + "firstSeenDaa": 180, + "at": 162.9, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6833, + "signal_epoch": null + }, + "4": { + "class": 3, + "firstSeenDaa": 240, + "at": 222, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6666, + "signal_epoch": null + }, + "5": { + "class": 3, + "firstSeenDaa": 300, + "at": 279, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6250, + "signal_epoch": null + }, + "6": { + "class": 3, + "firstSeenDaa": 360, + "at": 338.1, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6666, + "signal_epoch": null + }, + "7": { + "class": 3, + "firstSeenDaa": 420, + "at": 391.2, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6666, + "signal_epoch": null + } + }, + "blocks": { + "total": 423, + "before_boundary": 423, + "after_boundary": 0, + "version_bytes": { + "0": 1, + "3": 139, + "4": 283 + }, + "signal_share_bps_on_chain": 6690 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "8f8806638d59850f", + "seed": "234e082d653dc69d", + "miners": 3, + "disagree": false + }, + { + "epoch": 1, + "class": "v3", + "program_id": "4b212c0be9e6fe63", + "seed": "135da54d125df437", + "miners": 3, + "disagree": false + }, + { + "epoch": 2, + "class": "v3", + "program_id": "ee3ac1e30bf65e70", + "seed": "c59a2e57f4b8d7a5", + "miners": 3, + "disagree": false + }, + { + "epoch": 3, + "class": "v3", + "program_id": "9f029268a9045087", + "seed": "da24c710fa33c22f", + "miners": 3, + "disagree": false + }, + { + "epoch": 4, + "class": "v3", + "program_id": "3b36a0088571d624", + "seed": "c99ee1f5201c6237", + "miners": 3, + "disagree": false + }, + { + "epoch": 5, + "class": "v3", + "program_id": "0045b23258d669cc", + "seed": "6890cf1861d53035", + "miners": 3, + "disagree": false + }, + { + "epoch": 6, + "class": "v3", + "program_id": "58f1b31878fa2f07", + "seed": "10d336969f4efd63", + "miners": 3, + "disagree": false + }, + { + "epoch": 7, + "class": "v3", + "program_id": "2a0d9087b89d7a9c", + "seed": "7290dc7ee9b9c29a", + "miners": 3, + "disagree": false + } + ], + "program_id_rows": [], + "accepted_per_miner": [ + 138, + 145, + 139 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "sinks": [ + "ca58bef3d51cfa4a", + "ca58bef3d51cfa4a", + "ca58bef3d51cfa4a" + ], + "block_counts": [ + 422, + 422, + 422 + ], + "signal_lines": [ + null, + null, + null + ], + "floor_lines": [ + "Program class v4 from the override file: never", + "Program class v4 from the override file: never", + "Program class v4 from the override file: never" + ], + "samples": [ + { + "t": 4.7, + "daa": 0, + "epoch": 0, + "class": 2, + "bps": 0, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 19.7, + "daa": 42, + "epoch": 0, + "class": 2, + "bps": 7317, + "nodes": [ + "42/b548603c", + "42/b548603c", + "42/b548603c" + ] + }, + { + "t": 34.7, + "daa": 65, + "epoch": 1, + "class": 3, + "bps": 7031, + "nodes": [ + "65/1b29b2e8", + "65/1b29b2e8", + "65/1b29b2e8" + ] + }, + { + "t": 49.7, + "daa": 67, + "epoch": 1, + "class": 3, + "bps": 7121, + "nodes": [ + "67/36bc6a1c", + "67/36bc6a1c", + "67/36bc6a1c" + ] + }, + { + "t": 64.7, + "daa": 76, + "epoch": 1, + "class": 3, + "bps": 7066, + "nodes": [ + "76/e4a48be8", + "76/e4a48be8", + "76/e4a48be8" + ] + }, + { + "t": 79.8, + "daa": 91, + "epoch": 1, + "class": 3, + "bps": 7111, + "nodes": [ + "91/d77402dd", + "91/d77402dd", + "91/d77402dd" + ] + }, + { + "t": 94.8, + "daa": 111, + "epoch": 1, + "class": 3, + "bps": 6636, + "nodes": [ + "111/f0e19e53", + "111/f0e19e53", + "111/f0e19e53" + ] + }, + { + "t": 109.8, + "daa": 122, + "epoch": 2, + "class": 3, + "bps": 6890, + "nodes": [ + "122/5adb1052", + "122/5adb1052", + "122/5adb1052" + ] + }, + { + "t": 124.8, + "daa": 135, + "epoch": 2, + "class": 3, + "bps": 6750, + "nodes": [ + "135/a49b1340", + "135/a49b1340", + "135/a49b1340" + ] + }, + { + "t": 139.9, + "daa": 152, + "epoch": 2, + "class": 3, + "bps": 6500, + "nodes": [ + "152/e1c73ab2", + "152/e1c73ab2", + "152/e1c73ab2" + ] + }, + { + "t": 154.9, + "daa": 169, + "epoch": 2, + "class": 3, + "bps": 6583, + "nodes": [ + "169/e0fc0185", + "169/e0fc0185", + "169/e0fc0185" + ] + }, + { + "t": 169.9, + "daa": 186, + "epoch": 3, + "class": 3, + "bps": 6833, + "nodes": [ + "186/2cba3315", + "186/2cba3315", + "186/2cba3315" + ] + }, + { + "t": 184.9, + "daa": 207, + "epoch": 3, + "class": 3, + "bps": 6583, + "nodes": [ + "207/a1e09949", + "207/a1e09949", + "207/a1e09949" + ] + }, + { + "t": 199.9, + "daa": 223, + "epoch": 3, + "class": 3, + "bps": 6750, + "nodes": [ + "223/2313964e", + "223/2313964e", + "223/2313964e" + ] + }, + { + "t": 215, + "daa": 230, + "epoch": 3, + "class": 3, + "bps": 6916, + "nodes": [ + "230/c99ee1f5", + "230/c99ee1f5", + "230/c99ee1f5" + ] + }, + { + "t": 230, + "daa": 246, + "epoch": 4, + "class": 3, + "bps": 6750, + "nodes": [ + "246/3500100b", + "246/3500100b", + "246/3500100b" + ] + }, + { + "t": 245, + "daa": 262, + "epoch": 4, + "class": 3, + "bps": 6500, + "nodes": [ + "262/aecdd009", + "262/aecdd009", + "262/aecdd009" + ] + }, + { + "t": 260, + "daa": 274, + "epoch": 4, + "class": 3, + "bps": 6666, + "nodes": [ + "274/c93ff1f0", + "274/c93ff1f0", + "274/c93ff1f0" + ] + }, + { + "t": 275, + "daa": 293, + "epoch": 4, + "class": 3, + "bps": 6583, + "nodes": [ + "293/c1937fd0", + "293/c1937fd0", + "293/c1937fd0" + ] + }, + { + "t": 290.1, + "daa": 311, + "epoch": 5, + "class": 3, + "bps": 6500, + "nodes": [ + "311/47520bf7", + "311/47520bf7", + "311/47520bf7" + ] + }, + { + "t": 305.1, + "daa": 328, + "epoch": 5, + "class": 3, + "bps": 6916, + "nodes": [ + "328/ed9acfc1", + "328/ed9acfc1", + "328/ed9acfc1" + ] + }, + { + "t": 320.1, + "daa": 343, + "epoch": 5, + "class": 3, + "bps": 6750, + "nodes": [ + "343/6553cec0", + "343/6553cec0", + "343/6553cec0" + ] + }, + { + "t": 335.1, + "daa": 357, + "epoch": 5, + "class": 3, + "bps": 6666, + "nodes": [ + "357/f444a87b", + "357/f444a87b", + "357/f444a87b" + ] + }, + { + "t": 350.1, + "daa": 368, + "epoch": 6, + "class": 3, + "bps": 6583, + "nodes": [ + "368/af2319fb", + "368/af2319fb", + "368/af2319fb" + ] + }, + { + "t": 365.2, + "daa": 381, + "epoch": 6, + "class": 3, + "bps": 6666, + "nodes": [ + "381/69556871", + "381/69556871", + "381/69556871" + ] + }, + { + "t": 380.2, + "daa": 404, + "epoch": 6, + "class": 3, + "bps": 6750, + "nodes": [ + "404/7c17470a", + "404/7c17470a", + "404/7c17470a" + ] + } + ] +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/class-v4-signal-flip.json b/docs/plans/counter-asic-3-gate/class-v4-signal-flip.json new file mode 100644 index 000000000..ed36c526d --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-signal-flip.json @@ -0,0 +1,433 @@ +{ + "pass": true, + "expect": "flip", + "signals": [ + 4, + 4, + 4 + ], + "checks": { + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true, + "miners_agree_on_every_program": true, + "window_line_on_every_node": true, + "every_node_signals_its_byte": true, + "chain_carries_the_bytes": true, + "template_switched_to_v4": true, + "switched_at_the_first_full_window_epoch": true, + "switched_before_the_floor": true, + "signal_line_on_every_node_same_epoch": true, + "signal_share_at_or_above_threshold": true, + "blocks_on_both_sides": true, + "v4_ids_equal_the_cli_v4_id": true, + "v4_ids_differ_from_the_same_seed_v3_id": true + }, + "window": 120, + "floor": "never", + "v3_activation": 60, + "epoch_blocks": 60, + "lead": 10, + "first_full_window_epoch": 3, + "floor_epoch": null, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "template_switch": { + "epoch": 3, + "daa": 180, + "at": 156.9 + }, + "run_ended_at_s": 271, + "final_daa": 301, + "max_epoch_seen": 5, + "epochs": { + "0": { + "class": 2, + "firstSeenDaa": 0, + "at": 4.6, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "1": { + "class": 3, + "firstSeenDaa": 60, + "at": 24.7, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 10000, + "signal_epoch": null + }, + "2": { + "class": 3, + "firstSeenDaa": 121, + "at": 98.8, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 10000, + "signal_epoch": null + }, + "3": { + "class": 4, + "firstSeenDaa": 180, + "at": 156.9, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 10000, + "signal_epoch": 3 + }, + "4": { + "class": 4, + "firstSeenDaa": 240, + "at": 213.9, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 10000, + "signal_epoch": null + }, + "5": { + "class": 4, + "firstSeenDaa": 301, + "at": 271, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 10000, + "signal_epoch": null + } + }, + "blocks": { + "total": 305, + "before_boundary": 181, + "after_boundary": 124, + "version_bytes": { + "0": 1, + "4": 304 + }, + "signal_share_bps_on_chain": 9967 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "8f8806638d59850f", + "seed": "234e082d653dc69d", + "miners": 3, + "disagree": false + }, + { + "epoch": 1, + "class": "v3", + "program_id": "96c2b5e891a1cec6", + "seed": "dc3460d3c2c7e252", + "miners": 3, + "disagree": false + }, + { + "epoch": 2, + "class": "v3", + "program_id": "9210599b352bb3d9", + "seed": "c80aefcfef313159", + "miners": 3, + "disagree": false + }, + { + "epoch": 3, + "class": "v4", + "program_id": "e48e6be7c6699824", + "seed": "13629115abf4b06b", + "miners": 3, + "disagree": false + }, + { + "epoch": 4, + "class": "v4", + "program_id": "996db27539593c5c", + "seed": "d8820f2c76bb1011", + "miners": 3, + "disagree": false + }, + { + "epoch": 5, + "class": "v4", + "program_id": "ebf1b4ee74ef5b04", + "seed": "8b8a1e7ccb10053c", + "miners": 3, + "disagree": false + } + ], + "program_id_rows": [ + { + "epoch": 3, + "seed": "13629115abf4b06b", + "miners_id": "e48e6be7c6699824", + "miners": 3, + "cli_v3": "6847355c88e8215f", + "cli_v4": "e48e6be7c6699824" + }, + { + "epoch": 4, + "seed": "d8820f2c76bb1011", + "miners_id": "996db27539593c5c", + "miners": 3, + "cli_v3": "34725526fbe79603", + "cli_v4": "996db27539593c5c" + }, + { + "epoch": 5, + "seed": "8b8a1e7ccb10053c", + "miners_id": "ebf1b4ee74ef5b04", + "miners": 3, + "cli_v3": "ed109252a3333d97", + "cli_v4": "ebf1b4ee74ef5b04" + } + ], + "accepted_per_miner": [ + 105, + 102, + 97 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "sinks": [ + "322e4a57824ab7fd", + "322e4a57824ab7fd", + "322e4a57824ab7fd" + ], + "block_counts": [ + 304, + 304, + 304 + ], + "signal_lines": [ + "Program class v4 by miner signal: epoch 3 (share 10000 bps over 120 DAA ending at seed block 13629115abf4b06bd9b07dfee66c7aab817cef268a34c02f8da6884d52f26017, threshold 9500 bps, 120 of 120 blue blocks)", + "Program class v4 by miner signal: epoch 3 (share 10000 bps over 120 DAA ending at seed block 13629115abf4b06bd9b07dfee66c7aab817cef268a34c02f8da6884d52f26017, threshold 9500 bps, 120 of 120 blue blocks)", + "Program class v4 by miner signal: epoch 3 (share 10000 bps over 120 DAA ending at seed block 13629115abf4b06bd9b07dfee66c7aab817cef268a34c02f8da6884d52f26017, threshold 9500 bps, 120 of 120 blue blocks)" + ], + "floor_lines": [ + "Program class v4 from the override file: never", + "Program class v4 from the override file: never", + "Program class v4 from the override file: never" + ], + "samples": [ + { + "t": 4.6, + "daa": 0, + "epoch": 0, + "class": 2, + "bps": 0, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 19.7, + "daa": 45, + "epoch": 0, + "class": 2, + "bps": 10000, + "nodes": [ + "45/90a214d6", + "45/90a214d6", + "45/90a214d6" + ] + }, + { + "t": 34.7, + "daa": 64, + "epoch": 1, + "class": 3, + "bps": 10000, + "nodes": [ + "64/ccc78501", + "64/ccc78501", + "64/ccc78501" + ] + }, + { + "t": 49.7, + "daa": 67, + "epoch": 1, + "class": 3, + "bps": 10000, + "nodes": [ + "67/30734219", + "67/30734219", + "67/30734219" + ] + }, + { + "t": 64.7, + "daa": 77, + "epoch": 1, + "class": 3, + "bps": 10000, + "nodes": [ + "77/fb4c94d8", + "77/fb4c94d8", + "77/fb4c94d8" + ] + }, + { + "t": 79.7, + "daa": 92, + "epoch": 1, + "class": 3, + "bps": 10000, + "nodes": [ + "92/fa61d646", + "92/fa61d646", + "92/fa61d646" + ] + }, + { + "t": 94.8, + "daa": 113, + "epoch": 1, + "class": 3, + "bps": 10000, + "nodes": [ + "113/a5072844", + "113/a5072844", + "113/a5072844" + ] + }, + { + "t": 109.8, + "daa": 131, + "epoch": 2, + "class": 3, + "bps": 10000, + "nodes": [ + "131/d88a9f22", + "131/d88a9f22", + "131/d88a9f22" + ] + }, + { + "t": 124.8, + "daa": 157, + "epoch": 2, + "class": 3, + "bps": 10000, + "nodes": [ + "157/65814d6e", + "157/65814d6e", + "157/65814d6e" + ] + }, + { + "t": 139.8, + "daa": 165, + "epoch": 2, + "class": 3, + "bps": 10000, + "nodes": [ + "165/ed5654bb", + "165/ed5654bb", + "165/ed5654bb" + ] + }, + { + "t": 154.9, + "daa": 177, + "epoch": 2, + "class": 3, + "bps": 10000, + "nodes": [ + "177/d0f60a64", + "177/d0f60a64", + "177/d0f60a64" + ] + }, + { + "t": 169.9, + "daa": 192, + "epoch": 3, + "class": 4, + "bps": 10000, + "nodes": [ + "192/dce1a9f6", + "192/dce1a9f6", + "192/dce1a9f6" + ] + }, + { + "t": 184.9, + "daa": 206, + "epoch": 3, + "class": 4, + "bps": 10000, + "nodes": [ + "206/617ab9be", + "206/617ab9be", + "206/617ab9be" + ] + }, + { + "t": 199.9, + "daa": 222, + "epoch": 3, + "class": 4, + "bps": 10000, + "nodes": [ + "222/e04f63eb", + "222/e04f63eb", + "222/e04f63eb" + ] + }, + { + "t": 214.9, + "daa": 242, + "epoch": 4, + "class": 4, + "bps": 10000, + "nodes": [ + "242/a214e080", + "242/a214e080", + "242/a214e080" + ] + }, + { + "t": 230, + "daa": 253, + "epoch": 4, + "class": 4, + "bps": 10000, + "nodes": [ + "253/c5f37595", + "253/c5f37595", + "253/c5f37595" + ] + }, + { + "t": 245, + "daa": 269, + "epoch": 4, + "class": 4, + "bps": 10000, + "nodes": [ + "269/0ac500c5", + "269/0ac500c5", + "269/0ac500c5" + ] + }, + { + "t": 260, + "daa": 285, + "epoch": 4, + "class": 4, + "bps": 10000, + "nodes": [ + "285/f5f748e0", + "285/f5f748e0", + "285/f5f748e0" + ] + } + ] +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/class-v4-signal-floor.json b/docs/plans/counter-asic-3-gate/class-v4-signal-floor.json new file mode 100644 index 000000000..8206a456a --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-signal-floor.json @@ -0,0 +1,583 @@ +{ + "pass": true, + "expect": "floor", + "signals": [ + 3, + 3, + 3 + ], + "checks": { + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true, + "miners_agree_on_every_program": true, + "window_line_on_every_node": true, + "every_node_signals_its_byte": true, + "chain_carries_the_bytes": true, + "template_switched_to_v4": true, + "switched_at_the_floor_epoch": true, + "no_signal_line_on_any_node": true, + "floor_line_names_the_floor_epoch": true, + "blocks_on_both_sides": true, + "v4_ids_equal_the_cli_v4_id": true + }, + "window": 120, + "floor": 300, + "v3_activation": 60, + "epoch_blocks": 60, + "lead": 10, + "first_full_window_epoch": 3, + "floor_epoch": 5, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "template_switch": { + "epoch": 5, + "daa": 300, + "at": 286 + }, + "run_ended_at_s": 410.2, + "final_daa": 421, + "max_epoch_seen": 7, + "epochs": { + "0": { + "class": 2, + "firstSeenDaa": 0, + "at": 4.6, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "1": { + "class": 3, + "firstSeenDaa": 60, + "at": 32.7, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "2": { + "class": 3, + "firstSeenDaa": 120, + "at": 106.8, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "3": { + "class": 3, + "firstSeenDaa": 180, + "at": 166.9, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "4": { + "class": 3, + "firstSeenDaa": 242, + "at": 222, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "5": { + "class": 4, + "firstSeenDaa": 300, + "at": 286, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "6": { + "class": 4, + "firstSeenDaa": 360, + "at": 346.1, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "7": { + "class": 4, + "firstSeenDaa": 421, + "at": 410.2, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + } + }, + "blocks": { + "total": 425, + "before_boundary": 301, + "after_boundary": 124, + "version_bytes": { + "0": 1, + "3": 424 + }, + "signal_share_bps_on_chain": 0 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "8f8806638d59850f", + "seed": "234e082d653dc69d", + "miners": 3, + "disagree": false + }, + { + "epoch": 1, + "class": "v3", + "program_id": "ab6cbb1e54ed5cce", + "seed": "64e53c286d8dd9fb", + "miners": 3, + "disagree": false + }, + { + "epoch": 2, + "class": "v3", + "program_id": "cf71a8c93f39aba3", + "seed": "bf5fb4c810cbf7b9", + "miners": 3, + "disagree": false + }, + { + "epoch": 3, + "class": "v3", + "program_id": "586eb24a6a1e956e", + "seed": "ca912ff9e0ce19eb", + "miners": 3, + "disagree": false + }, + { + "epoch": 4, + "class": "v3", + "program_id": "179f30b619d3ae21", + "seed": "fd39032d68eaf42c", + "miners": 3, + "disagree": false + }, + { + "epoch": 5, + "class": "v4", + "program_id": "99f8a29e69d425fd", + "seed": "55b4bb2409b9dac0", + "miners": 3, + "disagree": false + }, + { + "epoch": 6, + "class": "v4", + "program_id": "13f24ad402624682", + "seed": "f6e6e2710786cb70", + "miners": 3, + "disagree": false + }, + { + "epoch": 7, + "class": "v4", + "program_id": "ae4fe8f735e1e5da", + "seed": "f3106b9f844b01c3", + "miners": 3, + "disagree": false + } + ], + "program_id_rows": [ + { + "epoch": 5, + "seed": "55b4bb2409b9dac0", + "miners_id": "99f8a29e69d425fd", + "miners": 3, + "cli_v3": "48b8b87ff3a7e9ae", + "cli_v4": "99f8a29e69d425fd" + }, + { + "epoch": 6, + "seed": "f6e6e2710786cb70", + "miners_id": "13f24ad402624682", + "miners": 3, + "cli_v3": "912bbdb803462a49", + "cli_v4": "13f24ad402624682" + }, + { + "epoch": 7, + "seed": "f3106b9f844b01c3", + "miners_id": "ae4fe8f735e1e5da", + "miners": 3, + "cli_v3": "3df23fd83c687af9", + "cli_v4": "ae4fe8f735e1e5da" + } + ], + "accepted_per_miner": [ + 130, + 134, + 160 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "sinks": [ + "aa8755bf4c1cc9e2", + "aa8755bf4c1cc9e2", + "aa8755bf4c1cc9e2" + ], + "block_counts": [ + 424, + 424, + 424 + ], + "signal_lines": [ + null, + null, + null + ], + "floor_lines": [ + "Program class v4 from the override file: active from epoch 5 (DAA score 300 rounded up to the epoch boundary at 300, epochs of 60 DAA)", + "Program class v4 from the override file: active from epoch 5 (DAA score 300 rounded up to the epoch boundary at 300, epochs of 60 DAA)", + "Program class v4 from the override file: active from epoch 5 (DAA score 300 rounded up to the epoch boundary at 300, epochs of 60 DAA)" + ], + "samples": [ + { + "t": 4.6, + "daa": 0, + "epoch": 0, + "class": 2, + "bps": 0, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 19.7, + "daa": 40, + "epoch": 0, + "class": 2, + "bps": 0, + "nodes": [ + "40/bd7dc09a", + "40/bd7dc09a", + "40/bd7dc09a" + ] + }, + { + "t": 34.7, + "daa": 60, + "epoch": 1, + "class": 3, + "bps": 0, + "nodes": [ + "60/0d0245d7", + "60/0d0245d7", + "60/0d0245d7" + ] + }, + { + "t": 49.7, + "daa": 66, + "epoch": 1, + "class": 3, + "bps": 0, + "nodes": [ + "66/b31ac361", + "66/b31ac361", + "66/b31ac361" + ] + }, + { + "t": 64.7, + "daa": 75, + "epoch": 1, + "class": 3, + "bps": 0, + "nodes": [ + "75/63b041c6", + "75/63b041c6", + "75/63b041c6" + ] + }, + { + "t": 79.7, + "daa": 94, + "epoch": 1, + "class": 3, + "bps": 0, + "nodes": [ + "94/3ba72d05", + "94/3ba72d05", + "94/3ba72d05" + ] + }, + { + "t": 94.8, + "daa": 109, + "epoch": 1, + "class": 3, + "bps": 0, + "nodes": [ + "109/08984ac2", + "109/08984ac2", + "109/08984ac2" + ] + }, + { + "t": 109.8, + "daa": 123, + "epoch": 2, + "class": 3, + "bps": 0, + "nodes": [ + "123/735ce53a", + "123/735ce53a", + "123/735ce53a" + ] + }, + { + "t": 124.8, + "daa": 134, + "epoch": 2, + "class": 3, + "bps": 0, + "nodes": [ + "134/b86e0b6c", + "134/b86e0b6c", + "134/b86e0b6c" + ] + }, + { + "t": 139.8, + "daa": 154, + "epoch": 2, + "class": 3, + "bps": 0, + "nodes": [ + "154/e0278b3f", + "154/e0278b3f", + "154/e0278b3f" + ] + }, + { + "t": 154.9, + "daa": 167, + "epoch": 2, + "class": 3, + "bps": 0, + "nodes": [ + "167/55672ada", + "167/55672ada", + "167/55672ada" + ] + }, + { + "t": 169.9, + "daa": 180, + "epoch": 3, + "class": 3, + "bps": 0, + "nodes": [ + "180/2549aa1c", + "180/2549aa1c", + "180/2549aa1c" + ] + }, + { + "t": 184.9, + "daa": 199, + "epoch": 3, + "class": 3, + "bps": 0, + "nodes": [ + "199/8deada07", + "199/8deada07", + "199/8deada07" + ] + }, + { + "t": 199.9, + "daa": 210, + "epoch": 3, + "class": 3, + "bps": 0, + "nodes": [ + "210/b3c3984d", + "210/b3c3984d", + "210/b3c3984d" + ] + }, + { + "t": 214.9, + "daa": 228, + "epoch": 3, + "class": 3, + "bps": 0, + "nodes": [ + "228/e863e711", + "228/e863e711", + "228/e863e711" + ] + }, + { + "t": 230, + "daa": 249, + "epoch": 4, + "class": 3, + "bps": 0, + "nodes": [ + "249/30016453", + "249/30016453", + "249/30016453" + ] + }, + { + "t": 245, + "daa": 264, + "epoch": 4, + "class": 3, + "bps": 0, + "nodes": [ + "264/7da6fa57", + "264/7da6fa57", + "264/7da6fa57" + ] + }, + { + "t": 260, + "daa": 285, + "epoch": 4, + "class": 3, + "bps": 0, + "nodes": [ + "285/132339cf", + "285/132339cf", + "285/132339cf" + ] + }, + { + "t": 275, + "daa": 295, + "epoch": 4, + "class": 3, + "bps": 0, + "nodes": [ + "295/f284c363", + "295/f284c363", + "295/f284c363" + ] + }, + { + "t": 290, + "daa": 304, + "epoch": 5, + "class": 4, + "bps": 0, + "nodes": [ + "304/f7813a3d", + "304/f7813a3d", + "304/f7813a3d" + ] + }, + { + "t": 305.1, + "daa": 324, + "epoch": 5, + "class": 4, + "bps": 0, + "nodes": [ + "324/2e0050f2", + "324/2e0050f2", + "324/2e0050f2" + ] + }, + { + "t": 320.1, + "daa": 337, + "epoch": 5, + "class": 4, + "bps": 0, + "nodes": [ + "337/de4a3d18", + "337/de4a3d18", + "337/de4a3d18" + ] + }, + { + "t": 335.1, + "daa": 350, + "epoch": 5, + "class": 4, + "bps": 0, + "nodes": [ + "350/f6e6e271", + "350/f6e6e271", + "350/f6e6e271" + ] + }, + { + "t": 350.1, + "daa": 362, + "epoch": 6, + "class": 4, + "bps": 0, + "nodes": [ + "362/78e4df38", + "362/78e4df38", + "362/78e4df38" + ] + }, + { + "t": 365.1, + "daa": 380, + "epoch": 6, + "class": 4, + "bps": 0, + "nodes": [ + "380/ad2ac8c4", + "380/ad2ac8c4", + "380/ad2ac8c4" + ] + }, + { + "t": 380.2, + "daa": 392, + "epoch": 6, + "class": 4, + "bps": 0, + "nodes": [ + "392/fd59c498", + "392/fd59c498", + "392/fd59c498" + ] + }, + { + "t": 395.2, + "daa": 404, + "epoch": 6, + "class": 4, + "bps": 0, + "nodes": [ + "404/179e8135", + "404/179e8135", + "404/179e8135" + ] + }, + { + "t": 410.2, + "daa": 421, + "epoch": 7, + "class": 4, + "bps": 0, + "nodes": [ + "421/cf7d8a0f", + "421/cf7d8a0f", + "421/cf7d8a0f" + ] + } + ] +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/class-v4-signal-no-flip.json b/docs/plans/counter-asic-3-gate/class-v4-signal-no-flip.json new file mode 100644 index 000000000..10cada842 --- /dev/null +++ b/docs/plans/counter-asic-3-gate/class-v4-signal-no-flip.json @@ -0,0 +1,554 @@ +{ + "pass": true, + "expect": "no-flip", + "signals": [ + 4, + 4, + 3 + ], + "checks": { + "zero_rejected_by_miners": true, + "zero_rejected_by_nodes": true, + "sinks_agree": true, + "block_counts_agree": true, + "miners_agree_on_every_program": true, + "window_line_on_every_node": true, + "every_node_signals_its_byte": true, + "chain_carries_the_bytes": true, + "template_never_v4": true, + "no_signal_line_on_any_node": true, + "ran_the_epochs": true, + "v3_programs_seen": true, + "signal_share_under_threshold_on_chain": true + }, + "window": 120, + "floor": "never", + "v3_activation": 60, + "epoch_blocks": 60, + "lead": 10, + "first_full_window_epoch": 3, + "floor_epoch": null, + "node": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneumd", + "miner": "/Users/joshm/Projects/igneum-wt-ca3-v4-node/vendor/igneum-node-ca3v4/target-ca3v4/release/igneum-miner", + "template_switch": null, + "run_ended_at_s": 417.2, + "final_daa": 421, + "max_epoch_seen": 7, + "epochs": { + "0": { + "class": 2, + "firstSeenDaa": 0, + "at": 4.6, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 0, + "signal_epoch": null + }, + "1": { + "class": 3, + "firstSeenDaa": 60, + "at": 23.7, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 7068, + "signal_epoch": null + }, + "2": { + "class": 3, + "firstSeenDaa": 121, + "at": 98.8, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6890, + "signal_epoch": null + }, + "3": { + "class": 3, + "firstSeenDaa": 180, + "at": 160.9, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6333, + "signal_epoch": null + }, + "4": { + "class": 3, + "firstSeenDaa": 241, + "at": 226, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6750, + "signal_epoch": null + }, + "5": { + "class": 3, + "firstSeenDaa": 300, + "at": 284, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 7583, + "signal_epoch": null + }, + "6": { + "class": 3, + "firstSeenDaa": 361, + "at": 343.1, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6833, + "signal_epoch": null + }, + "7": { + "class": 3, + "firstSeenDaa": 421, + "at": 417.2, + "eraSeed": "234e082d653dc69db36d875b256d0f5f4a123b353d6aa069c3c7aa9aa6c46062", + "bps": 6166, + "signal_epoch": null + } + }, + "blocks": { + "total": 425, + "before_boundary": 425, + "after_boundary": 0, + "version_bytes": { + "0": 1, + "3": 138, + "4": 286 + }, + "signal_share_bps_on_chain": 6729 + }, + "programs": [ + { + "epoch": 0, + "class": "v2", + "program_id": "8f8806638d59850f", + "seed": "234e082d653dc69d", + "miners": 3, + "disagree": false + }, + { + "epoch": 1, + "class": "v3", + "program_id": "be8294c0126f1faf", + "seed": "b605d5200d048815", + "miners": 3, + "disagree": false + }, + { + "epoch": 2, + "class": "v3", + "program_id": "ed3e4ffbf62a7424", + "seed": "c34f4c0e895a7365", + "miners": 3, + "disagree": false + }, + { + "epoch": 3, + "class": "v3", + "program_id": "32b5ea953b6266b9", + "seed": "1df8b7b8f7f317c7", + "miners": 3, + "disagree": false + }, + { + "epoch": 4, + "class": "v3", + "program_id": "4a936017bde53483", + "seed": "b99035c2fd14dd49", + "miners": 3, + "disagree": false + }, + { + "epoch": 5, + "class": "v3", + "program_id": "9eb843a8976bad11", + "seed": "38b40c1bf554fe9c", + "miners": 3, + "disagree": false + }, + { + "epoch": 6, + "class": "v3", + "program_id": "dd0155047fe53f92", + "seed": "e09a1634afda0783", + "miners": 3, + "disagree": false + }, + { + "epoch": 7, + "class": "v3", + "program_id": "e21684fe7648d6b4", + "seed": "414f83716dfd9e60", + "miners": 3, + "disagree": false + } + ], + "program_id_rows": [], + "accepted_per_miner": [ + 141, + 145, + 138 + ], + "rejected_by_miners": [ + 0, + 0, + 0 + ], + "rejected_by_nodes": [ + 0, + 0, + 0 + ], + "sinks": [ + "d845fdd016a25425", + "d845fdd016a25425", + "d845fdd016a25425" + ], + "block_counts": [ + 424, + 424, + 424 + ], + "signal_lines": [ + null, + null, + null + ], + "floor_lines": [ + "Program class v4 from the override file: never", + "Program class v4 from the override file: never", + "Program class v4 from the override file: never" + ], + "samples": [ + { + "t": 4.6, + "daa": 0, + "epoch": 0, + "class": 2, + "bps": 0, + "nodes": [ + "0/234e082d", + "0/234e082d", + "0/234e082d" + ] + }, + { + "t": 19.7, + "daa": 49, + "epoch": 0, + "class": 2, + "bps": 7659, + "nodes": [ + "49/21e82fed", + "49/21e82fed", + "49/21e82fed" + ] + }, + { + "t": 34.7, + "daa": 64, + "epoch": 1, + "class": 3, + "bps": 7258, + "nodes": [ + "64/5e7ac558", + "64/5e7ac558", + "64/5e7ac558" + ] + }, + { + "t": 49.7, + "daa": 75, + "epoch": 1, + "class": 3, + "bps": 7397, + "nodes": [ + "75/eec9a8c7", + "75/eec9a8c7", + "75/eec9a8c7" + ] + }, + { + "t": 64.7, + "daa": 87, + "epoch": 1, + "class": 3, + "bps": 7176, + "nodes": [ + "87/df1f9872", + "87/df1f9872", + "87/df1f9872" + ] + }, + { + "t": 79.8, + "daa": 106, + "epoch": 1, + "class": 3, + "bps": 6923, + "nodes": [ + "106/738281d2", + "106/738281d2", + "106/738281d2" + ] + }, + { + "t": 94.8, + "daa": 118, + "epoch": 1, + "class": 3, + "bps": 6896, + "nodes": [ + "118/98818bdc", + "118/98818bdc", + "118/98818bdc" + ] + }, + { + "t": 109.8, + "daa": 128, + "epoch": 2, + "class": 3, + "bps": 6750, + "nodes": [ + "128/c1b1a275", + "128/c1b1a275", + "128/c1b1a275" + ] + }, + { + "t": 124.8, + "daa": 150, + "epoch": 2, + "class": 3, + "bps": 6250, + "nodes": [ + "150/11045465", + "150/11045465", + "150/11045465" + ] + }, + { + "t": 139.8, + "daa": 161, + "epoch": 2, + "class": 3, + "bps": 6166, + "nodes": [ + "161/161c74c3", + "161/161c74c3", + "161/161c74c3" + ] + }, + { + "t": 154.9, + "daa": 171, + "epoch": 2, + "class": 3, + "bps": 6333, + "nodes": [ + "171/2419390d", + "171/2419390d", + "171/2419390d" + ] + }, + { + "t": 169.9, + "daa": 191, + "epoch": 3, + "class": 3, + "bps": 6083, + "nodes": [ + "191/ae9f7aa0", + "191/ae9f7aa0", + "191/ae9f7aa0" + ] + }, + { + "t": 184.9, + "daa": 206, + "epoch": 3, + "class": 3, + "bps": 6583, + "nodes": [ + "206/557726ec", + "206/557726ec", + "206/557726ec" + ] + }, + { + "t": 199.9, + "daa": 221, + "epoch": 3, + "class": 3, + "bps": 6833, + "nodes": [ + "221/2458f010", + "221/2458f010", + "221/2458f010" + ] + }, + { + "t": 214.9, + "daa": 230, + "epoch": 3, + "class": 3, + "bps": 6554, + "nodes": [ + "230/b99035c2", + "230/b99035c2", + "230/b99035c2" + ] + }, + { + "t": 230, + "daa": 246, + "epoch": 4, + "class": 3, + "bps": 6916, + "nodes": [ + "246/8f951189", + "246/8f951189", + "246/8f951189" + ] + }, + { + "t": 245, + "daa": 265, + "epoch": 4, + "class": 3, + "bps": 7416, + "nodes": [ + "265/6baad73f", + "265/6baad73f", + "265/6baad73f" + ] + }, + { + "t": 260, + "daa": 278, + "epoch": 4, + "class": 3, + "bps": 7416, + "nodes": [ + "278/cb17784e", + "278/cb17784e", + "278/cb17784e" + ] + }, + { + "t": 275, + "daa": 289, + "epoch": 4, + "class": 3, + "bps": 7416, + "nodes": [ + "289/f8628f1e", + "289/f8628f1e", + "289/f8628f1e" + ] + }, + { + "t": 290.1, + "daa": 308, + "epoch": 5, + "class": 3, + "bps": 7666, + "nodes": [ + "308/77b769ef", + "308/77b769ef", + "308/77b769ef" + ] + }, + { + "t": 305.1, + "daa": 319, + "epoch": 5, + "class": 3, + "bps": 7250, + "nodes": [ + "319/ac915fd6", + "319/ac915fd6", + "319/ac915fd6" + ] + }, + { + "t": 320.1, + "daa": 335, + "epoch": 5, + "class": 3, + "bps": 6583, + "nodes": [ + "335/eef7dabd", + "335/eef7dabd", + "335/eef7dabd" + ] + }, + { + "t": 335.1, + "daa": 353, + "epoch": 5, + "class": 3, + "bps": 6916, + "nodes": [ + "353/4bf46535", + "353/4bf46535", + "353/4bf46535" + ] + }, + { + "t": 350.1, + "daa": 370, + "epoch": 6, + "class": 3, + "bps": 6750, + "nodes": [ + "370/1af27f0a", + "370/1af27f0a", + "370/1af27f0a" + ] + }, + { + "t": 365.2, + "daa": 385, + "epoch": 6, + "class": 3, + "bps": 6583, + "nodes": [ + "385/b23c95d5", + "385/b23c95d5", + "385/b23c95d5" + ] + }, + { + "t": 380.2, + "daa": 392, + "epoch": 6, + "class": 3, + "bps": 6416, + "nodes": [ + "392/678e7203", + "392/678e7203", + "392/678e7203" + ] + }, + { + "t": 395.2, + "daa": 400, + "epoch": 6, + "class": 3, + "bps": 6583, + "nodes": [ + "400/c5ca53eb", + "400/c5ca53eb", + "400/c5ca53eb" + ] + }, + { + "t": 410.2, + "daa": 413, + "epoch": 6, + "class": 3, + "bps": 6000, + "nodes": [ + "413/7b4f6674", + "413/7b4f6674", + "413/7b4f6674" + ] + } + ] +} \ No newline at end of file diff --git a/docs/plans/counter-asic-3-gate/node-gates.md b/docs/plans/counter-asic-3-gate/node-gates.md index 88a0e4bd9..7d3486c3a 100644 --- a/docs/plans/counter-asic-3-gate/node-gates.md +++ b/docs/plans/counter-asic-3-gate/node-gates.md @@ -9,4 +9,12 @@ | G5 | the PC-built Windows workers and the Mac workers from the same commit | every sha256 listed; the two Windows workers carry the resource block; no packaging, no DMG, no manifest | GREEN on the program-id fix 7c22d0d (packfile.h and main.swift moved, so the workers were rebuilt from it; the earlier pair from a522d04 is superseded): igneum-worker-cuda.exe 3bc8ad8f69ad97d6a9491a734ef16e3cf10b3884d442fb1e5a490c751ae578c5 (1,536,512 bytes), igneum-worker-opencl.exe 16ef015470d7a45c5af5488dcc68a29c5e95f94487eb05e26f1bf418e6dd511f (478,208), `verify-exe.py`: both carry the coin icon and the version block; the Mac worker igneum-bench f9ca4b075a9a9c25afd8feeccd1339fbb6bb4c3728ffeddab9f549cd3c1725a4 (665,128, the binary of the G4 re-run); the node and app binaries of job build-20261006-155958 stand (the fork did not change). The a522d04 row for the record: the build job builds the node and the app only (`push-build-inputs.sh` writes two build units, `jobbuild.rs` has no worker unit), so the Windows workers were cross-built on the Mac from the committed tree a522d04 with `proto-cuda/nvrtc/build-windows.sh` under the build lock (mingw-w64, static, windres resource block), as 0.3.11's G5 row was: igneum-worker-cuda.exe e563126ed1d8ab8f6803ead89acca5b6fcb03203e6b87b70e0aec85e8e1046e4 (1,536,512 bytes), igneum-worker-opencl.exe 7fce1249d443aaf73a29b7474c1ef4084f3529b5bec3a2dc6bb97e624561a5e8 (478,208), `verify-exe.py`: both carry the coin icon and the version block (a first build of the same sources before the commit gave 26400edf... and 438e608a...: mingw stamps a link time, so the pair is not bit-reproducible; the sizes match the 0.3.11 pair, 1,536,512 and 478,208, and the sha256s differ from 0.3.11's 2b3b8c92... and edc4a75d...: the generator-4 rule is in them). The Mac worker from the same tree: igneum-bench 30c70754097dafbc3144a0c0f192526a0638089e5dde49ce46abb7a948dceade (665,128 bytes, built 16:47Z from `main.swift` as committed in a522d04, the binary G4b mined with). The same build job's (build-20261006-155958) node and app outputs from fork 5f7e0543, every sha256 verified against the PC's lines on fetch: igneumd.exe 140be25e486fe1634500b6e66eedfaca9fa6561d652f3e219b5a7a2bc377e766 (51,752,448), igneum-miner.exe ceb1e691ad57f58d09d5a0ff4cb5658aea0604d23ceb90b6a847a2c36a0bf81c (11,118,080), igneum-app.exe bfa3b871f17b69fd0c0c01a6f9fcac8964efb54dc10fd25db13422ba8f96d51f (3,065,344, PE and resource block ok); Linux igneumd d44b735869b129401d68f18786b4a5f16c22d00b682bd41a8e5022a01f7d7527 (49,603,112), igneum-miner a7985111d4972f4b67a9409b831a8c7af746508ebb3b19fc927aaddcfa2e2413, igneum-app 222f30c00bb9725f3127452f3d52403b380e25abaf9fba5c925839574cf1dabc; kept under the job's --out dir with --no-place. No packaging, no DMG, no manifest | | G6 | the node change on a fork branch from the current release tip with suites green on PC 2, with the igneum-pow feature | the build job id and its SUMMARY line; the v4 engine test named in the output | GREEN. PC 2 job `build-20261006-155958` (fork ca3-v4-node 5f7e0543, main a522d04; published 15:59:58Z after the clear file and under the mkdir lock, taken 15:58:50Z, released 16:08:06Z after the closing report; the installed app untouched, the prover left on), `node tools/build-job.mjs run --target 1ccfe586 --node vendor/igneum-node-ca3v4 --node-tests "kaspa-consensus kaspa-consensus-core igneum-exec kaspa-pow igneum-miner kaspa-p2p-flows" --app-tests igneum-app --no-place`: `done exit 0 after 392 s: node ca3-v4-node 5f7e0543 app 0.3.11: every stage ok; 9 files uploaded (46 MB); 6 min of 40`; the test stage 50 s, exit 0 on both units: kaspa-consensus 98 passed (3 ignored; `ban_is_decided_by_the_carrying_block_so_nodes_agree_on_every_voter_list ... ok`, so 2.0's flake did not recur and no re-run was needed), kaspa-consensus-core 109 + 7 (`override_params_carry_the_program_class_v4_activation ... ok`), igneum-exec (its per-crate line is not in the relay's upload of the report, which keeps the stage's tail; the unit exited 0, so it passed), kaspa-pow 15 (`program_class_v3_seeds_hash_their_own_program_over_their_own_cache ... ok` and `program_class_v4_seeds_hash_the_shadow_program_over_the_v3_day_cache ... ok`, both `#[cfg(feature = "igneum-pow")]`), igneum-miner (the same: not in the upload, in the exit-0 unit), kaspa-p2p-flows 33, igneum-app 112 + 26 + 8. The feature: `build-job.mjs` and `push-build-inputs.sh` carry no `--features` for the test units (the manifest's `tests` entries are `dir` and `packages` only; the build units have `kaspad/igneum-pow`), and the PC's `jobbuild.rs` runs `cargo test --release -p ... ` in ONE invocation per unit, where `igneum-miner` depends on `kaspa-pow` with `features = ["igneum-pow"]`, so cargo's feature unification turns the feature on for kaspa-pow's test target in that invocation: the two engine tests above ran on PC 2 with the feature, named in the report, which is the evidence main asked for. The same two suites also pass on the Mac with the flag explicit (`cargo test --release -p kaspa-pow --features igneum-pow`: 15; `-p kaspa-consensus-core`: 109 + 7). What the tool lacks: a `features` key on a test unit; not added here (a change to the PC's installed app would be needed to honour it) | +## The cut preconditions (the coordinator's second brief, 6 October 2026 evening) + +| # | Gate | Evidence required | State | +|---|---|---|---| +| P1 | the rehearsal plan and the v4 override object for the rented fleet | `docs/plans/counter-asic-3-rehearsal.md`; the objects with their digests | WRITTEN (not run: the fleet agent runs it): the publish object (the live 13 fields plus the floor `N6` and the window 86,400; digest `ac8e60ce205852bdda6b554f8cbfbd9dbb040187f487cbd8affe8103633dfd56` at the worked example N6 = 219,600) and the rehearsal object (every earlier switch at 0, window 3,600, floor 14,400; digest `bc2142b178ff367ae84ff0699ff523760d8878f883375da21864ed8d3ad39237`), both read from the signalling node's start lines on throwaway private networks; `override-v4-publish-example.json` and `override-v4-rehearsal.json` in this directory | +| P2 | miner-signalled class activation, implemented behind the override, the fast-time gate with three cases and the failed case | `docs/plans/counter-asic-3-node.md` section 6; `infra/fast-time/class-v4-signal.mjs` | GREEN on the Mac: two of three signalling never flips (7 epochs, 6,166 to 7,583 bps), all three flips at epoch 3 (the first full window, 10,000 bps, the same line on 3 of 3 nodes, the id assertion), nobody signalling flips at the floor epoch 5 and not before; the known-failed case fails on eight checks. Rows and summary files: node doc section 6.4; `class-v4-signal-{no-flip,flip,floor,failed-case}.json` | +| G6 (signalling) | the fork change on PC 2 with the igneum-pow feature | the job ids and their lines | G6_SIGNAL_PLACEHOLDER | + Summary files in this directory: `class-v4-20261006-1553Z-cpu.json` (G4 run 1), `class-v4-20261006-never-failed-case.json` (G4 run 2, the failed case), `class-v4-20261006-metal.json` (G4b), `class-v4-20261006-id-rerun.json` (G4 on the program-id fix, with the id assertion), `class-v4-20261006-id-failed-case.json` (the id assertion's failed case). diff --git a/docs/plans/counter-asic-3-node.md b/docs/plans/counter-asic-3-node.md index e709267af..2a0422334 100644 --- a/docs/plans/counter-asic-3-node.md +++ b/docs/plans/counter-asic-3-node.md @@ -120,4 +120,13 @@ Two fields join the live object: `program_class_v4_activation_daa` is now the FL `infra/fast-time/class-v4-signal.mjs`: three nodes on `override-60x.json` (v3 from DAA 60, window 120, the floor at `--floor`), each node's byte set by `IGNEUM_CLASS_SIGNAL` (`--signal a,b,c`), one real CPU miner each, the id assertion of G4 on every v4 epoch. -SIGNAL_RUNS_PLACEHOLDER +| Case | Run | SUMMARY | Summary file | +|---|---|---|---| +| Two of three signal (`--signal 4,4,3 --expect no-flip --epochs 7`) | 17:26:4x to 17:34:57Z (load average about 9) | PASS: no v4 epoch over epochs 0 to 7; the share at the sink read 6,166 to 7,583 bps epoch by epoch (two CPU miners of three, the third's blocks byte 3); on the chain 286 blocks byte 4, 138 byte 3, genesis byte 0 (6,729 bps); no node printed the signal line; 0 rejected; one sink `d845fdd016a25425` at 424/424/424; the floor line on 3 of 3 (`never`) | `class-v4-signal-no-flip.json` | +| All three signal (`--signal 4,4,4 --expect flip`) | 17:34:5x to 17:39:33Z | PASS: the share 10,000 bps from epoch 1; the class flipped at epoch 3 (DAA 180), the first epoch whose seed block has a full 120-DAA window below it, before the floor (`never`); 3 of 3 nodes printed `Program class v4 by miner signal: epoch 3 (share 10000 bps over 120 DAA ending at seed block 13629115abf4b06bd9b07dfee66c7aab817cef268a34c02f8da6884d52f26017, threshold 9500 bps, 120 of 120 blue blocks)` with the same epoch and share; 181 / 124 blocks across DAA 180; 0 rejected; one sink `322e4a57824ab7fd` at 304/304/304; the id assertion on epochs 3, 4, 5: the three miners' v4 id equals the CLI's class v4 id and differs from the same-seed v3 id (e3 `e48e6be7c6699824` against `6847355c88e8215f`) | `class-v4-signal-flip.json` | +| Nobody signals, the floor at 300 (`--signal 3,3,3 --floor 300 --expect floor`) | 17:39:3x to 17:46:28Z | PASS: the share 0 bps throughout (424 blocks byte 3); no signal line on any node; the class flipped at epoch 5 (DAA 300), the floor, and not before; the floor line `active from epoch 5` on 3 of 3; 301 / 124 blocks; 0 rejected; one sink `aa8755bf4c1cc9e2` at 424/424/424; the id assertion on epochs 5 to 7 (e5 `99f8a29e69d425fd` against `48b8b87ff3a7e9ae`) | `class-v4-signal-floor.json` | +| The known-failed case (`--signal 4,4,3 --expect flip --epochs 7`) | 17:20:34 to 17:27:04Z | FAIL as it must: no flip at 6,250 to 7,288 bps, and the harness reports `FAILED CHECK` on eight checks (`template_switched_to_v4`, `switched_at_the_first_full_window_epoch`, `switched_before_the_floor`, `signal_line_on_every_node_same_epoch`, `signal_share_at_or_above_threshold`, `blocks_on_both_sides`, the two id checks), exit 1 | `class-v4-signal-failed-case.json` | + +The first pass of the three good cases (17:01 to 17:20Z) had the same chain behaviour and failed on one harness check of its own (`chain_carries_the_bytes` demanded every byte on the chain be a node's and genesis carries byte 0); the check was corrected to allow the one genesis block and the three cases re-run above. Every number here is a count, a line or an id; the Mac's load average (about 9, other agents' builds) moves the wall times only. + +Fork suites on the signalling change (0562a7f2): kaspa-consensus-core 110 + 7 (the signal-rule test, the window in the params, digest and fast-time file tests; the pinned devnet digest re-pinned from `3c505021...` to `7f2e49beabc253f327c5ac6bb457a674ea7f527af2971c95d3bdf65ef8bcf977`), kaspa-consensus lib 98 (the template test now reads the low byte and the signal byte), kaspa-pow with the feature 15; PC 2: section G6 of `node-gates.md`.