Difficulty v2: Hetzner rehearsal passed (12 nodes, one chain through N + 600), binaries for every platform, the devnet rollout plan
rollout-v2.sh stages the Linux igneumd (gateways from the Mac, private nodes from their gateway), rolls one node at a time with
difficulty_v2_activation_daa in every override file, checks the common chain and watches the height; results/2026-10-04/
rollout-v2*.log and v2/ (the hash-rate step under v2 and the v1 comparison). docs/plans/difficulty-v2-rollout-devnet.md: the
binaries and their sha256, the activation rule (N = DAA at publish + 10,800; baked at the cut as DAA + 14,400), the exact
restart lines for the observer node, the seed and Mac node 1, the OTA path for the two PCs through NODE_OVERRIDE_PARAMS in
packaged-config.sh (the engine side landed in b8b349a), the rehearsal record. Bench-log entry.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
eadebd86da
commit
0e09aa25de
23 changed files with 31880 additions and 0 deletions
|
|
@ -983,3 +983,37 @@ Run 3 (15:02 to 15:04, the fix above), tile states as they happened:
|
|||
Block 1579 shard 0: 233,576 cycles, execute 0.025 s, compressed 60.2 s, 1,272,897 bytes; node 0 shows the record carried by chain block 1655 and paid; the payout address's balance on node 0 was 163.15 IGN at the end (4 shard payouts of about 0.635 IGN each plus the mining rewards of run 1). The app's node, restarted twice, replayed the chain from genesis each time and re-applied the same three payouts (its log at 15:49:53 lists chain blocks 433, 618 and 756 paying blocks 268, 447 and 569), which is the determinism the rule needs.
|
||||
|
||||
Reading. The packaged loop works on a Mac with the CPU prover: 71 s from the tile saying proving to paid on the chain for the smallest shard. The two defects were in the tile's bookkeeping and the child's lifetime, not in the chain rules. The open-shard fallback is what makes a prover without mining weight useful; whether assignees should keep more of the pool is the O-5.1 question, untouched. Nothing here ran on Windows or on a GPU.
|
||||
|
||||
## 4 October 2026, difficulty v2 rollout rehearsal on the 12-node Hetzner network, binaries for the devnet, the devnet plan (rollout engineer)
|
||||
|
||||
Builds (Mac M5 Max under other agents' load, nice 19, 4 cargo jobs, each into its own target directory seeded from an
|
||||
existing cache; the live binaries untouched), source `vendor/igneum-node-v4` at 3bfe346f = a21ff239 (difficulty v2) plus a
|
||||
miner-only commit, so `igneumd` is the a21ff239 node: Mac arm64 144 s (`vendor/igneum-node/target-v2/release/igneumd`,
|
||||
sha256 8b0fbd27...), Linux x86-64 glibc 2.36 by cargo-zigbuild 173 s (`infra/cross/out-v2/igneumd`, 70751def...),
|
||||
Windows x86-64 by mingw 8 min 50 s (`target-v2/x86_64-pc-windows-gnu/release/igneumd.exe`, 27c2ce85...). Each carries the
|
||||
`difficulty_v2_activation_daa` parser; the Mac binary printed `Difficulty rule v2 from the override file: active from DAA
|
||||
score 123456` on a private suffix, the Linux one on all 12 cloud nodes. `cargo test -p kaspa-consensus-core --lib params`:
|
||||
7 pass (the fast-time file already carries the field as never). Windows payload inputs pushed (`payload-inputs.zip`
|
||||
66b4dc51...); no manifest published.
|
||||
|
||||
Rehearsal (`infra/cloud-devnet/rollout-v2.sh`; igneum-devnet-20, its own chain): N = DAA 14,362 + 1,800 = 16,170;
|
||||
staging the 47 MB binary to the four gateways from the Mac then gateway to private node (the Mac to Hillsboro ran at
|
||||
32 KB/s; igneum-01 to igneum-04 server to server took 12 s); the 12 nodes rolled one at a time 14:14:39 to 14:18:16 UTC,
|
||||
15 to 30 s each, every one rejoined within 5 to 15 s with its DAA within 2 of the reference. Watch to N + 600 (31 checks a
|
||||
minute apart): DAA spread 2 to 12 across nodes, difficulty within 1%, moving through N (76.7k at 16,161, 74.5k at 16,344,
|
||||
86.8k at 16,740). Definitive: `getVirtualChainFromBlock` from a DAA-14,500 block on all 12 nodes returned the same chain
|
||||
block at DAA 16,062, 16,304, 16,565 and 16,797. No fork. Lesson: `systemctl stop igneumd` also stops the miner and the
|
||||
block log (`Requires=`); the script now starts all three (the block logs were off from the roll to 14:56 UTC).
|
||||
|
||||
Hash-rate step under v2 (`hop.sh "half:4:600;all:1:600"`, 14:57 UTC) against the morning's v1 schedule, first 600 s of
|
||||
each step (`results/2026-10-04/v2/compare.md`): 2-min rate back within 10% of 60/min after 157 s (v1 161 s) on the step up
|
||||
and 172 s (v1 272 s) on the step down; neither rule holds the 3-min criterion inside 600 s on 12 CPU miners. After 300 s
|
||||
the v1 step-up difficulty swung 128k to 134k to 89k (max/min 1.51, std log D 0.169), the v2 one climbed 102k to 117k
|
||||
(1.15, 0.053); on the step down v2 reached the one-thread level (82k) by 600 s, v1 was at 100k after 600 s and 97k after
|
||||
900 s. One run each, CPU miners, the v2 series has a bridged gap in its first two rows.
|
||||
|
||||
Devnet: `docs/plans/difficulty-v2-rollout-devnet.md`. The gap found: the app launched igneumd without an override
|
||||
file, so an OTA-delivered v2 node would have forked at N; fixed with `node_override_params` in the packaged config
|
||||
(`igneum-app.json`, one `NODE_OVERRIDE_PARAMS` line in `packaging/mac/packaged-config.sh` read by both packagers; the engine
|
||||
writes `<app data>/app/override-params.json` and passes the flag). Rule: N = DAA at the manifest publish + 10,800 at
|
||||
least; since N is baked at the cut, choose DAA + 14,400 when committing the line and check at publish.
|
||||
|
|
|
|||
278
docs/plans/difficulty-v2-rollout-devnet.md
Normal file
278
docs/plans/difficulty-v2-rollout-devnet.md
Normal file
|
|
@ -0,0 +1,278 @@
|
|||
# Difficulty v2 on the live devnet: rollout plan, 4 October 2026
|
||||
|
||||
Prepared by the rollout engineer; the Hetzner rehearsal (section 7) passed. Nothing in this file has been run on the
|
||||
devnet. The main session runs it in the order of section 4. Background: `docs/analysis/difficulty-2026-10-04-oscillation.md`
|
||||
(the finding, rule v2, section 8 rollout), `docs/bench-log.md` "difficulty rule v2". Josh approved the rollout on
|
||||
4 October 2026 ("1-5 approved and anything else needed") with two constraints, both built in here: the PCs get
|
||||
igneumd v2 only through an OTA app version, and the activation height leaves at least three hours from the manifest
|
||||
publish.
|
||||
|
||||
## 1. What changes and what does not
|
||||
|
||||
Only `igneumd` changes. A v2 node rules v1 for every block whose DAA score is below `difficulty_v2_activation_daa`
|
||||
and v2 from the block whose DAA score reaches it, so the chain, the genesis and the databases stay. The miners follow
|
||||
templates and need nothing. A node that reaches the height WITHOUT the field in its override file keeps rule v1 and
|
||||
forks off at that block (seen on the 3-node test network, section 7 of the analysis), so every node of the devnet must
|
||||
carry the same `N` before the height arrives: Mac node 1, the observer node, the seed, PC 1 and PC 2.
|
||||
|
||||
The default on every network is `u64::MAX` (never). Only the override file sets it. The binaries built today carry no
|
||||
height; the height is operational data (section 3).
|
||||
|
||||
## 2. The binaries (built 4 October 2026, 13:31 to 13:5x UTC, on the loaded Mac at nice 19, 4 cargo jobs)
|
||||
|
||||
Source: `vendor/igneum-node-v4` at `3bfe346f` (`devnet-v4`), which is `a21ff239` (difficulty v2) plus one commit that
|
||||
touches `igneum/miner/src/main.rs` only; `kaspad` does not depend on the miner crate, so `igneumd` is the a21ff239 node.
|
||||
Each binary was built into its own target directory; the live binaries (`target-integration`, `target-linux`, the
|
||||
seed's `/opt/igneum/v4/bin`, the Hetzner nodes' `/opt/igneum/bin`) were not touched.
|
||||
|
||||
| Platform | Path | sha256 (igneumd) | Build | Verified |
|
||||
|---|---|---|---|---|
|
||||
| Mac arm64 | `vendor/igneum-node/target-v2/release/igneumd` | `8b0fbd27fa2286548256110c4e6655fe6620db8ab36bad584fcbdbe89179539a` | 144 s incremental (target dir seeded from the v4 worktree's own cache) | `--version` = igneumd 2.1.0; started on a private suffix with `{"difficulty_v2_activation_daa": 123456}` and printed `Difficulty rule v2 from the override file: active from DAA score 123456` |
|
||||
| Linux x86-64 (glibc 2.36) | `infra/cross/out-v2/igneumd` (from `vendor/igneum-node/target-v2-linux`) | `70751def7e2274f596d91fe29e9a5344d7ceca3065c1378f12ed5308f26e2233` | 173 s incremental (seeded from `target-linux`, cargo-zigbuild) | ELF x86-64 PIE; carries the field name and the v2 line; the Hetzner roll printed the line on all 12 nodes (section 7) |
|
||||
| Windows x86-64 | `vendor/igneum-node/target-v2/x86_64-pc-windows-gnu/release/igneumd.exe` (50,170,880 bytes) | `27c2ce858a497e3d7197c3f1e868c18b588793cf8bee4ce6e0978dd473d4c5bc` | 8 min 50 s (cross-build.sh pattern, mingw, 4 jobs; target dir seeded from `igneum-node-win`) | PE32+ x86-64; `strings` carries the field name and the v2 line; same DLL imports as the shipped 0.3.1 exe; it cannot run here |
|
||||
|
||||
`infra/cross/out-v2/igneum-miner` and the Windows `igneum-miner.exe` were built alongside (the scripts build both);
|
||||
they are the 3bfe346f miner (seed-mismatch and stall guards). The Hetzner roll shipped `igneumd` only.
|
||||
|
||||
## 3. The activation height N, and how every node learns it
|
||||
|
||||
Rule (Josh, 4 October 2026): `N = DAA score at the manifest publish + 10,800` (three hours at 1 block/s). Why three
|
||||
hours: the apps check the manifest on start and every 60 minutes plus up to 10 minutes of jitter, then download, then
|
||||
wait for a safe moment (synced node, no program boundary within 180 s, no worker starting; up to 6 hours), and the
|
||||
"urgent" path (install at once, red bar) opens only when the node's DAA score is within 1,800 blocks of N
|
||||
(`app/igneum-app/src/manifest.rs`, `FORK_URGENT_BLOCKS`). With 10,800 both PCs have seen the manifest within 70
|
||||
minutes, have the download within minutes of that, and still have 30 minutes of urgent installation if no safe moment
|
||||
came.
|
||||
|
||||
The gap found while preparing this, and its fix (committed with this plan, to review before cutting the version):
|
||||
the app launched `igneumd` with no `--override-params-file` (`app/igneum-app/src/engine.rs`, `node_args`), so an
|
||||
OTA-delivered igneumd v2 would have run with the default (never) and forked at N. Now `igneum-app.json` (the file
|
||||
the packagers write next to the engine) may carry `"node_override_params": {...}`; the engine writes it to
|
||||
`<app data>/app/override-params.json` and adds `--override-params-file=<that path>` to the node's command line
|
||||
(`config::Packaged::node_override_params`, `Engine::node_override_file`; test `packaged_carries_the_node_override_params`).
|
||||
Both packagers read it from ONE line in `packaging/mac/packaged-config.sh`:
|
||||
|
||||
```
|
||||
NODE_OVERRIDE_PARAMS='{"difficulty_v2_activation_daa": N}'
|
||||
```
|
||||
|
||||
`build-dmg.sh` sources that file; the Windows `make-payload.sh` (run by CI from the pushed tree) reads the line with
|
||||
sed. So N is fixed when that line is committed, which is BEFORE the publish. To satisfy the rule at publish:
|
||||
|
||||
- choose N = (DAA score now) + 14,400 when editing the line (the extra 3,600 covers the CI build, the DMG and the
|
||||
publish; CI took about 20 minutes today);
|
||||
- at publish, read the DAA score again and check `N - DAA >= 10,800`; if not, raise N, commit, rebuild, re-cut.
|
||||
|
||||
The same N goes verbatim into the override files of Mac node 1, the observer node and the seed (section 4, steps 4
|
||||
to 6), which the main session restarts by hand; the PCs get it through the app. The DAA score: on the Mac,
|
||||
`IGNEUM_RPC=ws://127.0.0.1:28640 python3 infra/cloud-devnet/node/wrpc.py call getBlockDagInfo | python3 -c 'import json,sys; print(json.load(sys.stdin)["virtualDaaScore"])'`
|
||||
(the observer node's JSON listener; read-only).
|
||||
|
||||
## 4. The order, with the exact commands
|
||||
|
||||
All Mac commands from `/Users/joshm/Projects/igneum`. `N` below is the number from section 3. Steps 1 to 3 are the
|
||||
package; steps 4 to 6 the hand-run nodes (any time after N is fixed and before the height; the order observer, seed,
|
||||
node 1 is lowest risk first); step 7 the watch.
|
||||
|
||||
### Step 1: fix N and cut 0.3.2
|
||||
|
||||
```
|
||||
# N = current DAA + 14,400 (section 3)
|
||||
sed -i '' "s/^NODE_OVERRIDE_PARAMS=.*/NODE_OVERRIDE_PARAMS='{\"difficulty_v2_activation_daa\": N}'/" packaging/mac/packaged-config.sh
|
||||
# version 0.3.2: app/igneum-app/Cargo.toml, app/windows/version.h, packaging/windows/resources/igneum-app.rc (as CI demands)
|
||||
# commit as igneum-josh, push: .github/workflows/windows.yml builds the installer from the payload inputs of step 2
|
||||
```
|
||||
|
||||
### Step 2: the Windows payload inputs (done today; redo only if the exe changes)
|
||||
|
||||
`packaging/windows/push-inputs.sh` was run with `IGNEUM_WIN_RELEASE=vendor/igneum-node/target-v2/x86_64-pc-windows-gnu/release`
|
||||
(section 7a has the sha256 of the `igneumd.exe` it carried and the deploy result). The workflow fetches
|
||||
`payload-inputs.zip` and refuses a mismatched sha256. If the inputs must be re-pushed:
|
||||
|
||||
```
|
||||
IGNEUM_WIN_RELEASE=vendor/igneum-node/target-v2/x86_64-pc-windows-gnu/release packaging/windows/push-inputs.sh
|
||||
```
|
||||
|
||||
### Step 3: the Mac DMG and the manifest
|
||||
|
||||
```
|
||||
NODE=vendor/igneum-node/target-v2/release/igneumd packaging/mac/build-dmg.sh
|
||||
# MINER stays the default (vendor/igneum-node/target-integration/release/igneum-miner, the 0.3.1 miner) unless the
|
||||
# miner is meant to move too; then MINER=vendor/igneum-node/target-v2/release/igneum-miner (3bfe346f guards)
|
||||
# check the packaged config inside the bundle carries N:
|
||||
python3 -c 'import json; print(json.load(open("packaging/mac/build/dmg/Igneum Miner.app/Contents/Resources/igneum-app.json"))["node_override_params"])'
|
||||
|
||||
# publish the Mac entry with the activation height (NOT run by the rollout engineer; this is the publish of section 3)
|
||||
packaging/ota/publish-manifest.sh --version 0.3.2 --mac packaging/mac/dist/Igneum-Miner-0.3.2.dmg \
|
||||
--notes "difficulty v2 from DAA score N" --activation-height N --deadline-note "difficulty v2" --deploy
|
||||
# Windows entry when CI has the installer (carries the Mac entry over, same version):
|
||||
packaging/windows/fetch-ci-artifacts.sh --deploy
|
||||
# record the DAA score at this moment and check N - DAA >= 10,800 (section 3)
|
||||
```
|
||||
|
||||
What the PCs then do: within 70 minutes the 0.3.1 app sees 0.3.2, downloads and verifies the installer, installs at
|
||||
the next safe moment (urgent from N - 1,800), relaunches as 0.3.2, whose engine writes
|
||||
`%LOCALAPPDATA%\igneum\app\override-params.json` and starts `igneumd.exe --override-params-file=...`. The node's log
|
||||
(`node-<stamp>.log` in the app's log folder, uploaded by the log intake) starts with
|
||||
`Difficulty rule v2 from the override file: active from DAA score N`. The STATUS lines of the log intake show the
|
||||
run id and app version per PC; both must show 0.3.2 before N - 1,800.
|
||||
|
||||
### Step 4: the observer node (26640/28640, a follower; `observer.mjs` keeps running under `tools/observer/run.sh`)
|
||||
|
||||
```
|
||||
printf '{"difficulty_v2_activation_daa": N}\n' > /tmp/igneum-devnet/override-v2.json
|
||||
kill -INT 4584; while kill -0 4584 2>/dev/null; do sleep 1; done # pid of the observer igneumd on 4 Oct 2026 (ps -eo pid,command | grep observer-v4)
|
||||
cd vendor/igneum-node && nohup ../igneum-node/target-v2/release/igneumd --devnet --nodnsseed --disable-upnp \
|
||||
--appdir=/tmp/igneum-devnet/observer-v4 --rpclisten=127.0.0.1:26640 --rpclisten-json=127.0.0.1:28640 --listen=127.0.0.1:26641 \
|
||||
--addpeer=127.0.0.1:26611 --addpeer=188.245.5.161:26611 --addpeer=192.168.68.67:26611 \
|
||||
--override-params-file=/tmp/igneum-devnet/override-v2.json --nologfiles --yes >> /tmp/igneum-devnet/observer-v4.out 2>&1 &
|
||||
cd /Users/joshm/Projects/igneum
|
||||
head -3 /tmp/igneum-devnet/observer-v4.out | grep "Difficulty rule v2" # the line must be there
|
||||
# observer.mjs loses the feed, exits 2, run.sh restarts it 3 s later (the 4 Oct restart loop); the live page is back within a minute
|
||||
```
|
||||
|
||||
The command line is the one running on 4 October 2026 (`ps`), with the binary and the override flag changed. The
|
||||
existing database opens under v2 (same chain).
|
||||
|
||||
### Step 5: the seed (igneum-seed-1, 188.245.5.161, unit `igneumd-v4`, binary `/opt/igneum/v4/bin/igneumd`)
|
||||
|
||||
`stage-v4.sh` is not the tool here: its install copies over the running binary (`cp` onto a busy text file fails) and
|
||||
it was written for a disabled unit. The hot swap by hand, from the Mac (the key is `~/.ssh/igneum_ed25519`):
|
||||
|
||||
```
|
||||
scp -i ~/.ssh/igneum_ed25519 infra/cross/out-v2/igneumd infra/cross/out-v2/version.txt root@188.245.5.161:/root/v4/out/
|
||||
ssh -i ~/.ssh/igneum_ed25519 root@188.245.5.161 '
|
||||
set -e
|
||||
sha256sum /root/v4/out/igneumd | cut -c1-64 # must print 70751def7e2274f596d91fe29e9a5344d7ceca3065c1378f12ed5308f26e2233
|
||||
cp -p /opt/igneum/v4/bin/igneumd /opt/igneum/v4/bin/igneumd.prev
|
||||
cp /root/v4/out/igneumd /opt/igneum/v4/bin/igneumd.new && chmod +x /opt/igneum/v4/bin/igneumd.new
|
||||
printf "{\"difficulty_v2_activation_daa\": N}\n" > /etc/igneum/override-v2.json
|
||||
sed -i "s#^EXTRA_ARGS=.*#EXTRA_ARGS=--override-params-file=/etc/igneum/override-v2.json#" /etc/igneum/seed-v4.env
|
||||
systemctl stop igneumd-v4
|
||||
mv -f /opt/igneum/v4/bin/igneumd.new /opt/igneum/v4/bin/igneumd
|
||||
systemctl start igneumd-v4
|
||||
sleep 5; journalctl -u igneumd-v4 --no-pager -n 40 -o cat | grep -m1 "Difficulty rule v2"
|
||||
cat /etc/igneum/seed-v4.env'
|
||||
infra/seed-nodes/health.sh # OK ... unit=active-v4 synced=True peers>=1 within a minute
|
||||
```
|
||||
|
||||
`run-seed-v4.sh` appends `EXTRA_ARGS` to the flag list, so the env line is all the launcher needs. Rollback of this
|
||||
step: `EXTRA_ARGS=` back in the env file, `mv igneumd.prev igneumd`, `systemctl restart igneumd-v4`.
|
||||
|
||||
### Step 6: Mac node 1 (26610/26611; the Metal miner mines through it)
|
||||
|
||||
The nohup line of `docs/plans/cutover-2026-10-04.md` step (b)2 with the binary and the override flag changed. The
|
||||
database in `/tmp/igneum-devnet/node1` opens under v2 (same chain), so no move.
|
||||
|
||||
```
|
||||
kill -INT 33114; while kill -0 33114 2>/dev/null; do sleep 1; done # pid of node 1's igneumd on 4 Oct 2026 (caffeinate 33116 exits with it)
|
||||
cd vendor/igneum-node
|
||||
nohup caffeinate -dims target-v2/release/igneumd --devnet --nodnsseed --disable-upnp --enable-unsynced-mining \
|
||||
--appdir=/tmp/igneum-devnet/node1 --rpclisten=0.0.0.0:26610 --listen=0.0.0.0:26611 \
|
||||
--addpeer=188.245.5.161:26611 --addpeer=192.168.68.67:26611 \
|
||||
--override-params-file=/tmp/igneum-devnet/override-v2.json --nologfiles --yes >> /tmp/igneum-devnet/node1-v4.out 2>&1 &
|
||||
cd /Users/joshm/Projects/igneum
|
||||
tail -5 /tmp/igneum-devnet/node1-v4.out | grep "Difficulty rule v2"
|
||||
# the Metal miner (pid 33633, igneum-miner mine grpc://127.0.0.1:26610 ... --worker packaging/mac/build/worker/igneum-bench):
|
||||
# check it still submits after the restart (its log); if it exited, start it again with the same command line (ps -eo command | grep 'igneum-miner mine')
|
||||
vendor/igneum-node/target-integration/release/igneum-miner watch 1 grpc://127.0.0.1:26610 # peers=2.., synced=true, blocks climbing
|
||||
```
|
||||
|
||||
### Step 7: the watch
|
||||
|
||||
| When | Where | Expected |
|
||||
|---|---|---|
|
||||
| after each restart | the node's first lines | `Difficulty rule v2 from the override file: active from DAA score N` |
|
||||
| before N - 1,800 | log intake STATUS lines, the live page's miner list | both PCs on 0.3.2 (their node logs carry the v2 line) |
|
||||
| N | observer difficulty events (`/tmp/igneum-devnet/observer-mjs-v4.out`), `getBlockDagInfo` on 26640 and 26610, `health.sh` on the seed | one sink across node 1, the observer and the seed; the PCs' blocks keep being accepted (the live page's per-miner counts keep moving); no "rejected block" in any log |
|
||||
| N to N + 600 | the same | difficulty keeps moving, no node stuck at N |
|
||||
| the next epoch boundary and the next PC join or leave | observer difficulty events | no 1.3x bursts every 2 to 3 minutes (section 1 of the analysis); the std of log difficulty over 15 minutes under 0.05 |
|
||||
|
||||
If a node forks at N (its sink stops advancing, or its peer count drops and its blocks are rejected): its override
|
||||
file lacks N or carries another value. Fix the file, restart that node; its database re-syncs to the common chain
|
||||
(the v2 side) because a v2 node rejects the v1 side's blocks from N on.
|
||||
|
||||
## 5. Rollback
|
||||
|
||||
Before N: remove the field (or the flag) on every node and restart; nothing has happened on the chain. After N:
|
||||
there is no rollback to v1 without a chain split; the way back is to fix any node that lacks the field. The Hetzner
|
||||
nodes keep `igneumd.prev` and `./rollout-v2.sh back` for their own chain.
|
||||
|
||||
## 6. Pieces this plan adds to the repository
|
||||
|
||||
| Piece | What |
|
||||
|---|---|
|
||||
| `app/igneum-app/src/config.rs`, `engine.rs`, `packaging/windows/make-payload.sh` | `node_override_params` in the packaged config, written to the app data dir and passed as `--override-params-file`; the Windows payload's JSON field. These three files were swept into another agent's commit `b8b349a` (the app log intake change) before this plan was committed; `cargo test config::` passes (`packaged_carries_the_node_override_params`) |
|
||||
| `packaging/mac/packaged-config.sh` | the `NODE_OVERRIDE_PARAMS` line (empty until the main session sets N) and its JSON field in `igneum-app.json` |
|
||||
| `infra/cloud-devnet/rollout-v2.sh` | the one-node-at-a-time roll, the common-sink check and the watch used for the rehearsal |
|
||||
| `infra/cross/out-v2/` | the Linux v2 binaries and `version.txt` (not committed: binaries) |
|
||||
|
||||
## 7. The Hetzner rehearsal (igneum-devnet-20, 12 nodes, own chain)
|
||||
|
||||
Run 4 October 2026, 14:14 to 15:20 UTC, after the morning's `hop.sh` schedule had ended (its `end` line at 14:02 UTC)
|
||||
and with the other agent's second `partition.sh sin 10` (14:03:25 to 14:15:44 UTC) still cut while nodes 01 to 04 were
|
||||
rolled; the Singapore nodes were rolled after its heal. Raw logs: `infra/cloud-devnet/results/2026-10-04/rollout-v2.log`
|
||||
(the roll), `rollout-v2-watch.log` (31 checks, one a minute, from DAA 14,646 to 16,800).
|
||||
|
||||
| Step | What happened |
|
||||
|---|---|
|
||||
| staging | `rollout-v2.sh stage`: the Mac to the four gateways, then gateway to private node over the zone networks (seconds). Lesson: the Mac to Hillsboro ran at about 32 KB/s (20 MB in 10 minutes); copying igneum-01 to igneum-04 server to server took 12 s |
|
||||
| N | DAA 14,362 at 14:14:37 UTC plus 1,800, rounded: N = 16,170 |
|
||||
| the roll | 12 nodes in nodes.tsv order, 14:14:39 to 14:18:16 UTC (15 to 30 s each). Every node printed `Difficulty rule v2 from the override file: active from DAA score 16170` and rejoined within 5 s (igneum-04: 15 s) with 2 to 3 peers and a DAA score within 2 of the reference. The miners stopped with their node (`Requires=igneumd`) and were started again; so did the block logs, which the first version of the script did not restart (fixed; they were off from each node's restart until 14:56 UTC, so the 5-s sample series has a gap across N and the record across N is the watch's one-minute checks and the journals) |
|
||||
| N and N + 600 | the watch's 31 checks: at every check all 12 nodes held the reference's older sink as a chain block, the DAA scores were within 2 to 12 of each other and the difficulty within 1% across nodes. Difficulty by check (median): 77.4k at DAA 14,646, 81.9k at 15,160, 76.7k at 16,161 (just before N), 74.6k at 16,250, 74.5k at 16,344, 76.0k at 16,420, 77.8k at 16,511, 78.3k at 16,587, 81.9k at 16,665, 86.8k at 16,740, 86.6k at 16,800: it kept moving through N with no step at the switch |
|
||||
| common chain, the definitive check | `getVirtualChainFromBlock` from the chain block that was igneum-01's sink at 14:17 UTC (DAA about 14,500) on all 12 nodes at 15:00 UTC: 1,623 to 1,628 chain blocks each (the spread is the newest 5), and the SAME block at index 1,100 (DAA 16,062, before N), 1,250 (DAA 16,304), 1,400 (DAA 16,565) and 1,550 (DAA 16,797, past N + 600) on every node. No node forked at N |
|
||||
| hash-rate step under v2 | `hop.sh "half:4:600;all:1:600"` from 14:57 UTC: section 7b |
|
||||
|
||||
### 7b. Settle times, v1 (morning) against v2 (afternoon)
|
||||
|
||||
The morning's run (`hop.sh` default schedule, rule v1, 12:32 to 15:02 BST; `results/2026-10-04/hop.md`, committed in
|
||||
`105b5f8`) and the afternoon's (`hop.sh "half:4:600;all:1:600"`, rule v2 active since DAA 16,170, 14:57 to 15:17 UTC;
|
||||
`results/2026-10-04/v2/hop.md`, `hop-series.tsv`, `compare.md`), compared over the first 600 s of the same two steps.
|
||||
"half:4" is six of the twelve nodes at 4 miner threads (on 2 vCPU, so about 1.5x the network's hash rate, not 2.5x);
|
||||
"all:1" is the step back down.
|
||||
|
||||
| run | phase | 2-min rate: first back within 10% of 60/min (s) | stays within 10% for 3 min from (s) | overshoot | difficulty start | difficulty at 300 s | at 600 s | std log D 300 to 600 s | max D / min D 300 to 600 s |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| v1 | 2 step up, half 4 threads | 161 | not in 600 s | 22% | 8.01e+04 | 1.28e+05 | 8.95e+04 | 0.169 | 1.51 |
|
||||
| v1 | 3 step down, all 1 | 272 | not in 600 s | 32% | 1.15e+05 | 8.88e+04 | 1e+05 | 0.031 | 1.18 |
|
||||
| v2 | 1 step up, half 4 threads | 157 | not in 600 s | 34% | 8.41e+04 | 1.02e+05 | 1.15e+05 | 0.053 | 1.15 |
|
||||
| v2 | 2 step down, all 1 | 172 | not in 600 s | 37% | 1.14e+05 | 9.7e+04 | 8.19e+04 | 0.087 | 1.45 |
|
||||
|
||||
Per minute, 2-min block rate (blocks/min) and median difficulty, first 10 minutes of each step:
|
||||
| s | v1 up rate | v1 up D | v2 up rate | v2 up D | v1 down rate | v1 down D | v2 down rate | v2 down D |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 0 | 65.5 | 80.1k | 1277.5 | 84.1k | 62.0 | 115.2k | 51.0 | 114.3k |
|
||||
| 60 | 75.5 | 103.5k | 1326.5 | 94.3k | 56.0 | 113.1k | 41.0 | 108.8k |
|
||||
| 120 | 72.0 | 109.5k | 80.5 | 124.4k | 46.5 | 110.9k | 40.0 | 72.4k |
|
||||
| 180 | 61.5 | 109.5k | 57.0 | 94.5k | 42.5 | 108.4k | 60.5 | 89.2k |
|
||||
| 240 | 65.5 | 115.7k | 67.5 | 99.7k | 45.5 | 75.7k | 65.0 | 99.1k |
|
||||
| 300 | 66.5 | 127.9k | 75.5 | 102.4k | 62.0 | 88.8k | 58.0 | 97.0k |
|
||||
| 360 | 65.0 | 133.7k | 61.0 | 102.2k | 58.0 | 104.8k | 53.5 | 93.9k |
|
||||
| 420 | 57.5 | 123.4k | 61.5 | 107.5k | 47.5 | 102.6k | 47.5 | 91.7k |
|
||||
| 480 | 48.0 | 112.8k | 70.0 | 116.3k | 43.0 | 101.1k | 49.5 | 87.8k |
|
||||
| 540 | 64.5 | 89.5k | 63.0 | 117.4k | 52.5 | 101.2k | 54.5 | 79.6k |
|
||||
| 600 | nan | nank | nan | nank | nan | nank | nan | nank |
|
||||
|
||||
Reading, with the caveats stated once: one run of each rule, CPU trickle miners (12 one-thread nodes, the 2-min rate at
|
||||
60/min carries a Poisson std of about 6.5% before any hash-rate noise), the first two v2 "up" rows (1,277 and 1,326
|
||||
blocks/min) are the series builder bridging the sample gap of section 7 (the block logs were off until 14:56 UTC) and are
|
||||
not rates, and the v1 step-up phase ran 94 minutes instead of 15 because the Mac starved `hop.sh` (its first 600 s are
|
||||
unaffected). Both rules bring the 2-min rate back within 10% of 60/min after about 160 s on the step up (v1 161 s, v2
|
||||
157 s) and v2 sooner on the step down (172 s against 272 s); neither holds it there for three minutes within 600 s on
|
||||
this network (`hop.md`'s criterion, "never" for every 600-s phase on both runs; the morning's 15-min phases gave v1
|
||||
751 s and 646 s). The difference is in the difficulty after the first five minutes: under v1 the step up ended with the
|
||||
difficulty swinging 128k to 134k to 89k between 300 and 540 s (max over min 1.51, std of log difficulty 0.169: the
|
||||
flip of section 2 of the analysis), under v2 it climbed 102k to 117k (1.15, 0.053) with the rate 61 to 70 per minute.
|
||||
On the step down v2 reached the one-thread level (82k; the morning's steady value was 80k) by 600 s where v1 was still
|
||||
at 100k after 600 s and 97k after 900 s. The morning's rule-v1 numbers for the full schedule are in `hop.md` (phase 2
|
||||
settled 751 s, phase 4 241 s, phase 5 646 s on the 3-min criterion).
|
||||
|
||||
### 7a. The Windows payload inputs (pushed 4 October 2026, 13:46 UTC)
|
||||
|
||||
`packaging/windows/push-inputs.sh` with `IGNEUM_WIN_RELEASE=vendor/igneum-node/target-v2/x86_64-pc-windows-gnu/release`
|
||||
published `payload-inputs.zip` (sha256 `66b4dc51c4dfc3f099e6c04cb5b15945ec3e255a3c9662064c7632e0b8f46eb8`) to the downloads
|
||||
host; the live `payload-inputs.json` carries `igneumd.exe` `27c2ce858a497e3d7197c3f1e868c18b588793cf8bee4ce6e0978dd473d4c5bc`
|
||||
(50,170,880 bytes) and `igneum-miner.exe` `19793fd09609adc1eaba11f8d3bea76ae93bb8b0f98d25154b2dcfd055f52401`
|
||||
(10,110,464 bytes, the 3bfe346f miner with the seed-mismatch and stall guards; the 0.3.1 payload of 13:31 UTC carried
|
||||
`108261fe...`, so the next CI build ships the newer miner as well). The CUDA and OpenCL workers, the NVRTC DLLs and the
|
||||
mingw DLLs are the same files as before. No manifest was written or published.
|
||||
466
infra/cloud-devnet/results/2026-10-04/rollout-v2-watch.log
Normal file
466
infra/cloud-devnet/results/2026-10-04/rollout-v2-watch.log
Normal file
|
|
@ -0,0 +1,466 @@
|
|||
14:19:09 check 1
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 14646 77423 3 1 chain ce37dcaa8262 16170
|
||||
igneum-03 14646 77423 3 1 chain ce37dcaa8262 16170
|
||||
igneum-11 14647 77556 3 4 chain fbf3ebef4384 16170
|
||||
igneum-06 14647 77556 3 3 chain fbf3ebef4384 16170
|
||||
igneum-07 14647 77556 3 2 chain fbf3ebef4384 16170
|
||||
igneum-02 14647 77556 3 2 chain fbf3ebef4384 16170
|
||||
igneum-12 14647 77556 3 2 chain fbf3ebef4384 16170
|
||||
igneum-08 14647 77556 3 2 chain fbf3ebef4384 16170
|
||||
igneum-04 14647 77556 3 3 chain fbf3ebef4384 16170
|
||||
igneum-05 14647 77556 3 3 chain fbf3ebef4384 16170
|
||||
igneum-09 14649 77538 3 1 chain 7c8749455e49 16170
|
||||
igneum-10 14648 77694 3 2 chain 8b53fe72d673 16170
|
||||
reference igneum-01: daa 14645, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:20:19 check 2
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 14725 80631 3 2 chain 84985a815e0f 16170
|
||||
igneum-03 14726 80493 3 1 chain 6f0199d1a665 16170
|
||||
igneum-11 14726 80517 3 3 chain 12fc2bcb4f6e 16170
|
||||
igneum-06 14726 80517 3 2 chain 12fc2bcb4f6e 16170
|
||||
igneum-07 14727 80493 3 2 chain 6f0199d1a665 16170
|
||||
igneum-12 14727 80493 3 2 chain 6f0199d1a665 16170
|
||||
igneum-02 14727 80493 3 2 chain 6f0199d1a665 16170
|
||||
igneum-04 14727 80493 3 3 chain 6f0199d1a665 16170
|
||||
igneum-08 14727 80493 3 2 chain 6f0199d1a665 16170
|
||||
igneum-05 14727 80493 3 3 chain 6f0199d1a665 16170
|
||||
igneum-09 14727 80493 3 2 chain 6f0199d1a665 16170
|
||||
igneum-10 14727 80493 3 3 chain 6f0199d1a665 16170
|
||||
reference igneum-01: daa 14725, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:21:29 check 3
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 14794 79729 3 3 chain 9efb50bed2c2 16170
|
||||
igneum-03 14794 79729 3 3 chain 9efb50bed2c2 16170
|
||||
igneum-11 14794 79729 3 5 chain 9efb50bed2c2 16170
|
||||
igneum-06 14794 79729 3 4 chain 9efb50bed2c2 16170
|
||||
igneum-07 14794 79729 3 3 chain 9efb50bed2c2 16170
|
||||
igneum-02 14794 79729 3 3 chain 9efb50bed2c2 16170
|
||||
igneum-12 14794 79729 3 3 chain 9efb50bed2c2 16170
|
||||
igneum-08 14795 79956 3 1 chain 3df26b8f1021 16170
|
||||
igneum-04 14794 79729 3 4 chain 9efb50bed2c2 16170
|
||||
igneum-05 14795 79956 3 2 chain 3df26b8f1021 16170
|
||||
igneum-09 14796 79872 3 1 chain dfdf29e9d646 16170
|
||||
igneum-10 14797 79872 3 3 chain dfdf29e9d646 16170
|
||||
reference igneum-01: daa 14791, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:22:39 check 4
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 14863 79914 3 1 chain 4ea66a293a41 16170
|
||||
igneum-03 14863 79914 3 1 chain 4ea66a293a41 16170
|
||||
igneum-11 14864 79723 3 4 chain 99f21f60acd3 16170
|
||||
igneum-06 14864 79723 3 3 chain 99f21f60acd3 16170
|
||||
igneum-07 14864 79723 3 2 chain 99f21f60acd3 16170
|
||||
igneum-12 14864 79723 3 2 chain 99f21f60acd3 16170
|
||||
igneum-02 14864 79723 3 2 chain 99f21f60acd3 16170
|
||||
igneum-04 14864 79723 3 3 chain 99f21f60acd3 16170
|
||||
igneum-08 14865 79901 3 1 chain fb0d06110713 16170
|
||||
igneum-05 14865 79901 3 2 chain fb0d06110713 16170
|
||||
igneum-09 14865 79901 3 1 chain fb0d06110713 16170
|
||||
igneum-10 14867 79767 3 3 chain d5b345f2fbf4 16170
|
||||
reference igneum-01: daa 14862, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:23:49 check 5
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 14942 81549 3 2 chain dfb8126c7099 16170
|
||||
igneum-03 14942 81549 3 2 chain dfb8126c7099 16170
|
||||
igneum-11 14942 81549 3 4 chain dfb8126c7099 16170
|
||||
igneum-06 14942 81549 3 3 chain dfb8126c7099 16170
|
||||
igneum-07 14943 81419 3 1 chain cb5294e469ec 16170
|
||||
igneum-12 14943 81261 3 1 chain 3487df61ae86 16170
|
||||
igneum-02 14944 81419 3 2 chain cb5294e469ec 16170
|
||||
igneum-08 14944 81419 3 2 chain cb5294e469ec 16170
|
||||
igneum-04 14943 81419 3 2 chain cb5294e469ec 16170
|
||||
igneum-05 14944 81419 3 3 chain cb5294e469ec 16170
|
||||
igneum-09 14945 81497 3 1 chain 11d6b587deaa 16170
|
||||
igneum-10 14946 81488 3 2 chain edcfe20683a1 16170
|
||||
reference igneum-01: daa 14942, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:24:59 check 6
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15008 80733 3 2 chain 669fb1a929fc 16170
|
||||
igneum-03 15008 80733 3 2 chain 669fb1a929fc 16170
|
||||
igneum-11 15008 80733 3 4 chain 669fb1a929fc 16170
|
||||
igneum-06 15008 80733 3 3 chain 669fb1a929fc 16170
|
||||
igneum-07 15008 80733 3 2 chain 669fb1a929fc 16170
|
||||
igneum-02 15008 80733 3 2 chain 669fb1a929fc 16170
|
||||
igneum-12 15008 80733 3 2 chain 669fb1a929fc 16170
|
||||
igneum-04 15009 80733 3 2 chain 3cf01b27e6a9 16170
|
||||
igneum-08 15008 80733 3 2 chain 669fb1a929fc 16170
|
||||
igneum-05 15009 80733 3 2 chain 3cf01b27e6a9 16170
|
||||
igneum-09 15011 80733 3 1 chain 975336217ed1 16170
|
||||
igneum-10 15011 80733 3 2 chain 975336217ed1 16170
|
||||
reference igneum-01: daa 15006, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:26:09 check 7
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15078 80889 3 1 chain 2408e1e09730 16170
|
||||
igneum-03 15078 80889 3 1 chain 2408e1e09730 16170
|
||||
igneum-11 15078 80889 3 3 chain 2408e1e09730 16170
|
||||
igneum-06 15078 80889 3 2 chain 2408e1e09730 16170
|
||||
igneum-07 15078 80889 3 1 chain 2408e1e09730 16170
|
||||
igneum-12 15078 80889 3 1 chain 2408e1e09730 16170
|
||||
igneum-02 15078 80889 3 1 chain 2408e1e09730 16170
|
||||
igneum-04 15078 80889 3 2 chain 2408e1e09730 16170
|
||||
igneum-08 15079 80889 3 1 chain 6a3f0ba54f0a 16170
|
||||
igneum-05 15079 80889 3 2 chain 6a3f0ba54f0a 16170
|
||||
igneum-09 15081 80747 3 2 chain f01f93f6eb2c 16170
|
||||
igneum-10 15081 80747 3 3 chain f01f93f6eb2c 16170
|
||||
reference igneum-01: daa 15077, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:27:19 check 8
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15158 81970 3 2 chain afa206974a7e 16170
|
||||
igneum-03 15158 81970 3 2 chain afa206974a7e 16170
|
||||
igneum-11 15158 81970 3 4 chain afa206974a7e 16170
|
||||
igneum-06 15158 81970 3 2 chain afa206974a7e 16170
|
||||
igneum-07 15159 81970 3 1 chain 7eb9d3578e8a 16170
|
||||
igneum-02 15159 81970 3 1 chain 7eb9d3578e8a 16170
|
||||
igneum-12 15159 81970 3 1 chain 7eb9d3578e8a 16170
|
||||
igneum-04 15158 81970 3 3 chain afa206974a7e 16170
|
||||
igneum-08 15159 81970 3 1 chain 7eb9d3578e8a 16170
|
||||
igneum-05 15159 81970 3 2 chain 7eb9d3578e8a 16170
|
||||
igneum-09 15162 81924 3 2 chain 75fa5064c9a4 16170
|
||||
igneum-10 15162 81924 3 3 chain 75fa5064c9a4 16170
|
||||
reference igneum-01: daa 15156, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:28:29 check 9
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15215 80516 3 2 chain b943b6bad266 16170
|
||||
igneum-03 15215 80516 3 2 chain b943b6bad266 16170
|
||||
igneum-11 15215 80516 3 4 chain b943b6bad266 16170
|
||||
igneum-06 15215 80516 3 3 chain b943b6bad266 16170
|
||||
igneum-07 15215 80516 3 2 chain b943b6bad266 16170
|
||||
igneum-12 15215 80516 3 2 chain b943b6bad266 16170
|
||||
igneum-02 15215 80516 3 2 chain b943b6bad266 16170
|
||||
igneum-04 15215 80516 3 3 chain b943b6bad266 16170
|
||||
igneum-08 15215 80516 3 2 chain b943b6bad266 16170
|
||||
igneum-05 15215 80516 3 3 chain b943b6bad266 16170
|
||||
igneum-09 15219 80488 3 3 chain d42a8b24bf21 16170
|
||||
igneum-10 15219 80488 3 4 chain d42a8b24bf21 16170
|
||||
reference igneum-01: daa 15213, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:29:39 check 10
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15277 79832 3 2 chain f63418d25702 16170
|
||||
igneum-03 15278 79832 3 1 chain c39e45e79893 16170
|
||||
igneum-11 15278 79832 3 3 chain c39e45e79893 16170
|
||||
igneum-06 15278 79832 3 2 chain c39e45e79893 16170
|
||||
igneum-07 15278 79832 3 1 chain c39e45e79893 16170
|
||||
igneum-12 15278 79832 3 1 chain c39e45e79893 16170
|
||||
igneum-02 15278 79832 3 1 chain c39e45e79893 16170
|
||||
igneum-08 15278 79832 3 1 chain c39e45e79893 16170
|
||||
igneum-04 15280 79778 3 2 chain 1aeb844b3a48 16170
|
||||
igneum-05 15279 79832 3 2 chain 435554adf0dd 16170
|
||||
igneum-09 15280 79778 3 1 chain 1aeb844b3a48 16170
|
||||
igneum-10 15282 79778 3 3 chain 5383a56befc2 16170
|
||||
reference igneum-01: daa 15277, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:30:50 check 11
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15332 78186 3 3 chain dfb2ca8a42a7 16170
|
||||
igneum-03 15332 78186 3 3 chain dfb2ca8a42a7 16170
|
||||
igneum-11 15332 78186 3 5 chain dfb2ca8a42a7 16170
|
||||
igneum-06 15333 78186 3 2 chain 084f43d7d30f 16170
|
||||
igneum-07 15332 78186 3 3 chain dfb2ca8a42a7 16170
|
||||
igneum-12 15333 78186 3 1 chain 084f43d7d30f 16170
|
||||
igneum-02 15333 78186 3 1 chain 084f43d7d30f 16170
|
||||
igneum-04 15333 78186 3 2 chain 084f43d7d30f 16170
|
||||
igneum-08 15333 78186 3 1 chain 084f43d7d30f 16170
|
||||
igneum-05 15333 78186 3 2 chain 084f43d7d30f 16170
|
||||
igneum-09 15333 78186 3 1 chain 084f43d7d30f 16170
|
||||
igneum-10 15333 78186 3 2 chain 084f43d7d30f 16170
|
||||
reference igneum-01: daa 15328, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:32:00 check 12
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15396 78020 3 1 chain d6c79d0cc3d3 16170
|
||||
igneum-03 15396 78020 3 1 chain d6c79d0cc3d3 16170
|
||||
igneum-11 15396 78020 3 3 chain d6c79d0cc3d3 16170
|
||||
igneum-06 15397 78020 3 2 chain c41d04adcab7 16170
|
||||
igneum-07 15397 78020 3 1 chain c41d04adcab7 16170
|
||||
igneum-12 15397 78020 3 1 chain c41d04adcab7 16170
|
||||
igneum-02 15397 78020 3 1 chain c41d04adcab7 16170
|
||||
igneum-04 15398 78020 3 3 chain d39534380147 16170
|
||||
igneum-08 15398 78020 3 2 chain d39534380147 16170
|
||||
igneum-05 15398 78020 3 3 chain d39534380147 16170
|
||||
igneum-09 15399 78020 3 1 chain ee7b7174d7ac 16170
|
||||
igneum-10 15399 78020 3 2 chain ee7b7174d7ac 16170
|
||||
reference igneum-01: daa 15395, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:33:10 check 13
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15465 77733 3 2 chain 789af45d5849 16170
|
||||
igneum-03 15466 77733 3 2 chain bbffc8a8a096 16170
|
||||
igneum-11 15466 77733 3 4 chain bbffc8a8a096 16170
|
||||
igneum-06 15466 77733 3 3 chain bbffc8a8a096 16170
|
||||
igneum-07 15466 77733 3 2 chain bbffc8a8a096 16170
|
||||
igneum-12 15466 77733 3 2 chain bbffc8a8a096 16170
|
||||
igneum-02 15466 77733 3 2 chain bbffc8a8a096 16170
|
||||
igneum-04 15466 77733 3 3 chain bbffc8a8a096 16170
|
||||
igneum-08 15466 77733 3 2 chain bbffc8a8a096 16170
|
||||
igneum-05 15466 77733 3 3 chain bbffc8a8a096 16170
|
||||
igneum-09 15468 77742 3 2 chain f8dda2796fb7 16170
|
||||
igneum-10 15469 77742 3 4 chain f8dda2796fb7 16170
|
||||
reference igneum-01: daa 15463, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:34:20 check 14
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15532 77641 3 1 chain 42a863ca514e 16170
|
||||
igneum-03 15533 77641 3 1 chain 505c5dfa263e 16170
|
||||
igneum-11 15533 77641 3 3 chain 505c5dfa263e 16170
|
||||
igneum-06 15533 77641 3 2 chain 505c5dfa263e 16170
|
||||
igneum-07 15533 77641 3 1 chain 505c5dfa263e 16170
|
||||
igneum-12 15533 77641 3 1 chain 505c5dfa263e 16170
|
||||
igneum-02 15533 77641 3 1 chain 505c5dfa263e 16170
|
||||
igneum-04 15534 77641 3 3 chain 9a912d3d0a3b 16170
|
||||
igneum-08 15534 77641 3 2 chain 9a912d3d0a3b 16170
|
||||
igneum-05 15534 77641 3 3 chain 9a912d3d0a3b 16170
|
||||
igneum-09 15535 77641 3 2 chain 6c9093d2ad40 16170
|
||||
igneum-10 15535 77641 3 3 chain 6c9093d2ad40 16170
|
||||
reference igneum-01: daa 15531, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:35:31 check 15
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15612 78234 3 2 chain 666434979f8b 16170
|
||||
igneum-03 15613 78234 3 1 chain 5ea9d1c7a6e3 16170
|
||||
igneum-11 15613 78234 3 3 chain 5ea9d1c7a6e3 16170
|
||||
igneum-06 15613 78234 3 2 chain 5ea9d1c7a6e3 16170
|
||||
igneum-07 15613 78234 3 1 chain 5ea9d1c7a6e3 16170
|
||||
igneum-12 15614 78234 3 2 chain 5ea9d1c7a6e3 16170
|
||||
igneum-02 15614 78234 3 2 chain 5ea9d1c7a6e3 16170
|
||||
igneum-04 15614 78234 3 3 chain 5ea9d1c7a6e3 16170
|
||||
igneum-08 15614 78234 3 2 chain 5ea9d1c7a6e3 16170
|
||||
igneum-05 15614 78234 3 3 chain 5ea9d1c7a6e3 16170
|
||||
igneum-09 15614 78234 3 2 chain 5ea9d1c7a6e3 16170
|
||||
igneum-10 15614 78234 3 3 chain 5ea9d1c7a6e3 16170
|
||||
reference igneum-01: daa 15611, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:36:41 check 16
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15691 78600 3 2 chain ec099b32cad6 16170
|
||||
igneum-03 15692 78571 3 3 chain f2f11a022dff 16170
|
||||
igneum-11 15692 78571 3 5 chain f2f11a022dff 16170
|
||||
igneum-06 15692 78571 3 4 chain f2f11a022dff 16170
|
||||
igneum-07 15692 78571 3 3 chain f2f11a022dff 16170
|
||||
igneum-12 15692 78571 3 3 chain f2f11a022dff 16170
|
||||
igneum-02 15692 78571 3 3 chain f2f11a022dff 16170
|
||||
igneum-04 15692 78571 3 4 chain f2f11a022dff 16170
|
||||
igneum-08 15692 78571 3 3 chain f2f11a022dff 16170
|
||||
igneum-05 15694 78571 3 3 chain d4f00aee6a8a 16170
|
||||
igneum-09 15696 78875 3 1 chain 22f962525043 16170
|
||||
igneum-10 15696 78875 3 2 chain 22f962525043 16170
|
||||
reference igneum-01: daa 15687, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:37:52 check 17
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15761 79017 3 1 chain 629fbe76dffb 16170
|
||||
igneum-03 15761 79017 3 1 chain 629fbe76dffb 16170
|
||||
igneum-11 15761 79017 3 3 chain 629fbe76dffb 16170
|
||||
igneum-06 15761 79017 3 2 chain 629fbe76dffb 16170
|
||||
igneum-07 15761 79017 3 1 chain 629fbe76dffb 16170
|
||||
igneum-12 15761 79017 3 1 chain 629fbe76dffb 16170
|
||||
igneum-02 15761 79017 3 1 chain 629fbe76dffb 16170
|
||||
igneum-04 15762 79017 3 2 chain dc75deb83530 16170
|
||||
igneum-08 15762 79017 3 1 chain dc75deb83530 16170
|
||||
igneum-05 15763 79017 3 3 chain dc75deb83530 16170
|
||||
igneum-09 15765 78650 3 4 chain dc75deb83530 16170
|
||||
igneum-10 15766 78650 3 2 chain 5cc5636b5b79 16170
|
||||
reference igneum-01: daa 15761, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:39:03 check 18
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15829 78520 3 2 chain ebe5b397509b 16170
|
||||
igneum-03 15829 78520 3 2 chain ebe5b397509b 16170
|
||||
igneum-11 15829 78520 3 4 chain ebe5b397509b 16170
|
||||
igneum-07 15829 78520 3 2 chain ebe5b397509b 16170
|
||||
igneum-06 15830 78520 3 2 chain 0c6d65b4cc77 16170
|
||||
igneum-12 15830 78520 3 1 chain 0c6d65b4cc77 16170
|
||||
igneum-02 15829 78520 3 2 chain ebe5b397509b 16170
|
||||
igneum-04 15830 78520 3 2 chain 0c6d65b4cc77 16170
|
||||
igneum-08 15830 78520 3 1 chain 0c6d65b4cc77 16170
|
||||
igneum-05 15830 78520 3 2 chain 0c6d65b4cc77 16170
|
||||
igneum-09 15831 78520 3 1 chain 74f556432b4d 16170
|
||||
igneum-10 15831 78520 3 2 chain 74f556432b4d 16170
|
||||
reference igneum-01: daa 15827, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:40:17 check 19
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15903 78759 3 1 chain ec77a5c66caa 16170
|
||||
igneum-03 15904 78482 3 1 chain 84c89abfd82a 16170
|
||||
igneum-04 15904 78482 3 2 chain 84c89abfd82a 16170
|
||||
igneum-06 15904 78482 3 2 chain 84c89abfd82a 16170
|
||||
igneum-05 15904 78482 3 2 chain 84c89abfd82a 16170
|
||||
igneum-07 15904 78482 3 1 chain 84c89abfd82a 16170
|
||||
igneum-02 15904 78482 3 1 chain 84c89abfd82a 16170
|
||||
igneum-11 15907 78482 3 5 chain 73500c50c0f2 16170
|
||||
igneum-12 15907 78482 3 3 chain 73500c50c0f2 16170
|
||||
igneum-08 15907 78482 3 3 chain 73500c50c0f2 16170
|
||||
igneum-09 15907 78482 3 3 chain 73500c50c0f2 16170
|
||||
igneum-10 15907 78482 3 4 chain 73500c50c0f2 16170
|
||||
reference igneum-01: daa 15901, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:41:34 check 20
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 15983 78933 3 1 chain a3c222f374f3 16170
|
||||
igneum-03 15983 78933 3 1 chain a3c222f374f3 16170
|
||||
igneum-11 15983 78933 3 3 chain a3c222f374f3 16170
|
||||
igneum-06 15984 78623 3 2 chain b37ce0b279ec 16170
|
||||
igneum-07 15984 78623 3 1 chain b37ce0b279ec 16170
|
||||
igneum-04 15984 78623 3 2 chain b37ce0b279ec 16170
|
||||
igneum-12 15984 78623 3 1 chain b37ce0b279ec 16170
|
||||
igneum-02 15984 78623 3 1 chain b37ce0b279ec 16170
|
||||
igneum-08 15984 78623 3 1 chain b37ce0b279ec 16170
|
||||
igneum-05 15984 78623 3 2 chain b37ce0b279ec 16170
|
||||
igneum-09 15985 78623 3 1 chain a969d454c04d 16170
|
||||
igneum-10 15985 78623 3 2 chain a969d454c04d 16170
|
||||
reference igneum-01: daa 15982, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:42:48 check 21
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16040 77919 3 1 chain 73d40ed660e6 16170
|
||||
igneum-03 16040 77919 3 1 chain 73d40ed660e6 16170
|
||||
igneum-11 16040 77919 3 3 chain 73d40ed660e6 16170
|
||||
igneum-06 16040 77919 3 2 chain 73d40ed660e6 16170
|
||||
igneum-07 16040 77919 3 1 chain 73d40ed660e6 16170
|
||||
igneum-02 16040 77919 3 1 chain 73d40ed660e6 16170
|
||||
igneum-04 16040 77919 3 2 chain 73d40ed660e6 16170
|
||||
igneum-12 16041 77919 3 1 chain 48e0a4fb6ba4 16170
|
||||
igneum-08 16041 77919 3 1 chain 48e0a4fb6ba4 16170
|
||||
igneum-05 16041 77919 3 2 chain 48e0a4fb6ba4 16170
|
||||
igneum-09 16041 77919 3 1 chain 48e0a4fb6ba4 16170
|
||||
igneum-10 16041 77919 3 2 chain 48e0a4fb6ba4 16170
|
||||
reference igneum-01: daa 16039, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:44:01 check 22
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16106 77414 3 1 chain f37470b3e911 16170
|
||||
igneum-03 16107 77414 3 2 chain f37470b3e911 16170
|
||||
igneum-11 16107 77414 3 4 chain f37470b3e911 16170
|
||||
igneum-04 16108 77494 3 3 chain 8b855fe27144 16170
|
||||
igneum-07 16107 77414 3 2 chain f37470b3e911 16170
|
||||
igneum-06 16107 77414 3 3 chain f37470b3e911 16170
|
||||
igneum-12 16108 77494 3 2 chain 8b855fe27144 16170
|
||||
igneum-02 16108 77494 3 2 chain 8b855fe27144 16170
|
||||
igneum-08 16108 77494 3 2 chain 8b855fe27144 16170
|
||||
igneum-05 16108 77494 3 3 chain 8b855fe27144 16170
|
||||
igneum-09 16109 77494 3 1 chain 58b617c711a4 16170
|
||||
igneum-10 16109 77494 3 2 chain 58b617c711a4 16170
|
||||
reference igneum-01: daa 16104, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:45:14 check 23
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16160 76728 3 1 chain a4b8decc6c2e 16170
|
||||
igneum-03 16161 76728 3 1 chain 61e25fcb36c9 16170
|
||||
igneum-11 16162 76728 3 3 chain ee9e5c7fa9ae 16170
|
||||
igneum-06 16162 76728 3 2 chain ee9e5c7fa9ae 16170
|
||||
igneum-04 16162 76728 3 2 chain ee9e5c7fa9ae 16170
|
||||
igneum-07 16162 76728 3 1 chain ee9e5c7fa9ae 16170
|
||||
igneum-12 16162 76728 3 1 chain ee9e5c7fa9ae 16170
|
||||
igneum-02 16162 76728 3 1 chain ee9e5c7fa9ae 16170
|
||||
igneum-05 16162 76728 3 2 chain ee9e5c7fa9ae 16170
|
||||
igneum-08 16162 76728 3 1 chain ee9e5c7fa9ae 16170
|
||||
igneum-09 16162 76728 3 1 chain ee9e5c7fa9ae 16170
|
||||
igneum-10 16162 76728 3 2 chain ee9e5c7fa9ae 16170
|
||||
reference igneum-01: daa 16159, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:46:27 check 24
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16245 74692 3 2 chain d1285abd6c62 16170
|
||||
igneum-03 16245 74692 3 2 chain d1285abd6c62 16170
|
||||
igneum-11 16246 74665 3 4 chain 769d590d11c7 16170
|
||||
igneum-06 16247 74749 3 3 chain 123b1502755a 16170
|
||||
igneum-04 16248 74560 3 4 chain 9fcc2388e18e 16170
|
||||
igneum-07 16247 74749 3 2 chain 123b1502755a 16170
|
||||
igneum-12 16248 74560 3 3 chain 9fcc2388e18e 16170
|
||||
igneum-05 16249 74740 3 2 chain 9549380ec989 16170
|
||||
igneum-08 16249 74740 3 1 chain 9549380ec989 16170
|
||||
igneum-02 16248 74560 3 3 chain 9fcc2388e18e 16170
|
||||
igneum-09 16257 74706 3 1 chain b20b01ec28c4 16170
|
||||
igneum-10 16257 74706 3 2 chain b20b01ec28c4 16170
|
||||
reference igneum-01: daa 16242, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:47:45 check 25
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16341 74462 3 5 chain d22bdde13857 16170
|
||||
igneum-03 16343 74690 3 6 chain cb9abb72cfd2 16170
|
||||
igneum-11 16343 74690 3 8 chain cb9abb72cfd2 16170
|
||||
igneum-07 16344 75191 3 1 chain bc4bbffa74f6 16170
|
||||
igneum-12 16344 75191 3 1 chain bc4bbffa74f6 16170
|
||||
igneum-04 16343 74690 3 7 chain cb9abb72cfd2 16170
|
||||
igneum-02 16344 75191 3 1 chain bc4bbffa74f6 16170
|
||||
igneum-06 16344 75191 3 2 chain bc4bbffa74f6 16170
|
||||
igneum-08 16344 75191 3 1 chain bc4bbffa74f6 16170
|
||||
igneum-05 16345 75191 3 3 chain bc4bbffa74f6 16170
|
||||
igneum-09 16347 75334 3 2 chain cc2d5f0ad237 16170
|
||||
igneum-10 16347 75334 3 3 chain cc2d5f0ad237 16170
|
||||
reference igneum-01: daa 16334, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:48:57 check 26
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16419 75912 3 1 chain 45265ea0f181 16170
|
||||
igneum-11 16419 75912 3 3 chain 45265ea0f181 16170
|
||||
igneum-03 16420 76137 3 2 chain e2a31a422e46 16170
|
||||
igneum-07 16419 75912 3 1 chain 45265ea0f181 16170
|
||||
igneum-06 16419 75912 3 2 chain 45265ea0f181 16170
|
||||
igneum-12 16419 75912 3 1 chain 45265ea0f181 16170
|
||||
igneum-04 16420 76137 3 3 chain e2a31a422e46 16170
|
||||
igneum-02 16419 75912 3 1 chain 45265ea0f181 16170
|
||||
igneum-05 16420 76137 3 3 chain e2a31a422e46 16170
|
||||
igneum-08 16420 76137 3 2 chain e2a31a422e46 16170
|
||||
igneum-09 16421 76342 3 1 chain 18cd06ceeddf 16170
|
||||
igneum-10 16423 76289 3 3 chain e8f7142ce432 16170
|
||||
reference igneum-01: daa 16414, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:50:13 check 27
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16510 77700 3 2 chain 659b7dfe48f0 16170
|
||||
igneum-03 16512 77818 3 2 chain 3f4d8a688e94 16170
|
||||
igneum-11 16512 77818 3 4 chain 3f4d8a688e94 16170
|
||||
igneum-06 16512 77818 3 3 chain 3f4d8a688e94 16170
|
||||
igneum-07 16512 77818 3 2 chain 3f4d8a688e94 16170
|
||||
igneum-12 16512 77818 3 2 chain 3f4d8a688e94 16170
|
||||
igneum-02 16512 77818 3 2 chain 3f4d8a688e94 16170
|
||||
igneum-04 16512 77818 3 3 chain 3f4d8a688e94 16170
|
||||
igneum-08 16512 77818 3 2 chain 3f4d8a688e94 16170
|
||||
igneum-05 16512 77818 3 3 chain 3f4d8a688e94 16170
|
||||
igneum-09 16512 77818 3 2 chain 3f4d8a688e94 16170
|
||||
igneum-10 16512 77818 3 3 chain 3f4d8a688e94 16170
|
||||
reference igneum-01: daa 16506, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:51:23 check 28
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16586 78280 3 1 chain cf9e7bbc82c6 16170
|
||||
igneum-11 16588 78245 3 5 chain d4551a131fd8 16170
|
||||
igneum-03 16588 78245 3 3 chain d4551a131fd8 16170
|
||||
igneum-06 16588 78245 3 4 chain d4551a131fd8 16170
|
||||
igneum-07 16588 78245 3 3 chain d4551a131fd8 16170
|
||||
igneum-12 16588 78245 3 3 chain d4551a131fd8 16170
|
||||
igneum-02 16588 78245 3 3 chain d4551a131fd8 16170
|
||||
igneum-04 16588 78245 3 4 chain d4551a131fd8 16170
|
||||
igneum-08 16589 78334 3 1 chain 5665f89016da 16170
|
||||
igneum-05 16588 78245 3 4 chain d4551a131fd8 16170
|
||||
igneum-09 16589 78334 3 1 chain 5665f89016da 16170
|
||||
igneum-10 16589 78334 3 2 chain 5665f89016da 16170
|
||||
reference igneum-01: daa 16584, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:52:33 check 29
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16663 81965 3 2 chain a29f4c4d845b 16170
|
||||
igneum-03 16663 81965 3 2 chain a29f4c4d845b 16170
|
||||
igneum-11 16663 81965 3 4 chain a29f4c4d845b 16170
|
||||
igneum-06 16663 81965 3 3 chain a29f4c4d845b 16170
|
||||
igneum-07 16663 81965 3 2 chain a29f4c4d845b 16170
|
||||
igneum-12 16663 81965 3 2 chain a29f4c4d845b 16170
|
||||
igneum-02 16664 81809 3 1 chain 2c937edc9ac8 16170
|
||||
igneum-04 16664 81809 3 2 chain 2c937edc9ac8 16170
|
||||
igneum-08 16664 81809 3 1 chain 2c937edc9ac8 16170
|
||||
igneum-05 16665 81711 3 3 chain 603b6a8c0188 16170
|
||||
igneum-09 16666 81966 3 2 chain 629cc26508a1 16170
|
||||
igneum-10 16667 82048 3 2 chain ec3347a94154 16170
|
||||
reference igneum-01: daa 16661, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:53:43 check 30
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-03 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-11 16740 87151 3 3 chain 931069fab6d2 16170
|
||||
igneum-06 16740 87151 3 2 chain 931069fab6d2 16170
|
||||
igneum-07 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-02 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-12 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-04 16740 87151 3 2 chain 931069fab6d2 16170
|
||||
igneum-08 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-05 16740 87151 3 2 chain 931069fab6d2 16170
|
||||
igneum-09 16740 87151 3 1 chain 931069fab6d2 16170
|
||||
igneum-10 16741 86533 3 2 chain b04cc232b4fa 16170
|
||||
reference igneum-01: daa 16740, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:54:54 check 31
|
||||
node daa difficulty peers tips ref-sink sink v2 line in journal
|
||||
igneum-01 16797 86868 3 1 chain ac622103e2b3 16170
|
||||
igneum-03 16798 86540 3 1 chain e5ee88c734e2 16170
|
||||
igneum-11 16799 86453 3 4 chain e5ee88c734e2 16170
|
||||
igneum-07 16799 86453 3 2 chain e5ee88c734e2 16170
|
||||
igneum-06 16799 86453 3 3 chain e5ee88c734e2 16170
|
||||
igneum-12 16799 86453 3 2 chain e5ee88c734e2 16170
|
||||
igneum-02 16799 86453 3 2 chain e5ee88c734e2 16170
|
||||
igneum-04 16799 86453 3 3 chain e5ee88c734e2 16170
|
||||
igneum-08 16799 86453 3 2 chain e5ee88c734e2 16170
|
||||
igneum-05 16799 86453 3 3 chain e5ee88c734e2 16170
|
||||
igneum-09 16799 86453 3 2 chain e5ee88c734e2 16170
|
||||
igneum-10 16800 86347 3 2 chain 565674787744 16170
|
||||
reference igneum-01: daa 16797, its sink of 2 min ago 009bda0843b0 ("chain" = that block is on the node's selected chain, "have" = known but not on its chain, MISSING = not received)
|
||||
14:55:09 DAA 16809 is past 16170 + 600
|
||||
83
infra/cloud-devnet/results/2026-10-04/rollout-v2.log
Normal file
83
infra/cloud-devnet/results/2026-10-04/rollout-v2.log
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
14:14:37 rolling igneumd (sha256 70751def7e22) with difficulty_v2_activation_daa=16170 onto: igneum-01 igneum-02 igneum-03 igneum-04 igneum-05 igneum-06 igneum-07 igneum-08 igneum-09 igneum-10 igneum-11 igneum-12 ; reference node igneum-01
|
||||
14:14:38 reference igneum-01 now: daa 14362, difficulty 71520.88731120343, sink eaa24b9f4aa1
|
||||
14:14:39 [igneum-01] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-01] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-01] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:14:50 [igneum-01] rejoined after 5 s: daa=14371 (ref igneum-02 14371) peers=2 difficulty=71568.13916318171 sink=498acf34b2c1
|
||||
[igneum-01] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:14:53 [igneum-02] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-02] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-02] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
[igneum-02]
|
||||
[igneum-02] thread 'main' (18881) panicked at /rustc/b940084d7eb6a299eb4bfeb8e34901bc051e7ac4/library/std/src/io/stdio.rs:1168:9:
|
||||
[igneum-02] failed printing to stdout: Broken pipe (os error 32)
|
||||
[igneum-02] note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
14:15:05 [igneum-02] rejoined after 5 s: daa=14383 (ref igneum-01 14383) peers=2 difficulty=71520.65469789787 sink=c3f86ebceaf2
|
||||
[igneum-02] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:15:08 [igneum-03] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-03] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-03] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:15:19 [igneum-03] rejoined after 5 s: daa=14401 (ref igneum-01 14401) peers=2 difficulty=71457.60719281613 sink=eaa75038435a
|
||||
[igneum-03] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:15:22 [igneum-04] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-04] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-04] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:15:50 [igneum-04] rejoined after 15 s: daa=14432 (ref igneum-01 14432) peers=2 difficulty=57536.26749544529 sink=4db5ba68e895
|
||||
[igneum-04] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:15:55 [igneum-05] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-05] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-05] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:16:08 [igneum-05] rejoined after 5 s: daa=14457 (ref igneum-01 14459) peers=2 difficulty=65540.66439445537 sink=3bfb91df98e2
|
||||
[igneum-05] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:16:13 [igneum-06] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-06] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-06]
|
||||
[igneum-06] thread 'main' (18063) panicked at /rustc/b940084d7eb6a299eb4bfeb8e34901bc051e7ac4/library/std/src/io/stdio.rs:1168:9:
|
||||
[igneum-06] failed printing to stdout: Broken pipe (os error 32)
|
||||
[igneum-06] note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
[igneum-06] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:16:24 [igneum-06] rejoined after 5 s: daa=14488 (ref igneum-01 14488) peers=2 difficulty=83321.10452955864 sink=59efa8809b99
|
||||
[igneum-06] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:16:27 [igneum-07] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-07] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-07] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
[igneum-07]
|
||||
[igneum-07] thread 'main' (36451) panicked at /rustc/b940084d7eb6a299eb4bfeb8e34901bc051e7ac4/library/std/src/io/stdio.rs:1168:9:
|
||||
[igneum-07] failed printing to stdout: Broken pipe (os error 32)
|
||||
[igneum-07] note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
14:16:39 [igneum-07] rejoined after 5 s: daa=14501 (ref igneum-01 14501) peers=2 difficulty=82827.28202952493 sink=550d24320ab8
|
||||
[igneum-07] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:16:43 [igneum-08] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-08] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-08] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:16:56 [igneum-08] rejoined after 5 s: daa=14515 (ref igneum-01 14515) peers=2 difficulty=79932.46252890115 sink=da86c1ccc151
|
||||
[igneum-08] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:17:01 [igneum-09] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-09] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-09] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:17:17 [igneum-09] rejoined after 5 s: daa=14536 (ref igneum-01 14537) peers=2 difficulty=80188.97616177246 sink=d530634de910
|
||||
[igneum-09] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:17:25 [igneum-10] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-10] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-10] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
14:17:43 [igneum-10] rejoined after 5 s: daa=14561 (ref igneum-01 14562) peers=3 difficulty=79772.4016800855 sink=2c45e7f2c8ab
|
||||
[igneum-10] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:17:49 [igneum-11] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-11] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-11] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
[igneum-11]
|
||||
[igneum-11] thread 'main' (35754) panicked at /rustc/b940084d7eb6a299eb4bfeb8e34901bc051e7ac4/library/std/src/io/stdio.rs:1168:9:
|
||||
[igneum-11] failed printing to stdout: Broken pipe (os error 32)
|
||||
[igneum-11] note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
14:18:00 [igneum-11] rejoined after 5 s: daa=14578 (ref igneum-01 14578) peers=2 difficulty=79842.6218555447 sink=ba7d17c15c25
|
||||
[igneum-11] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:18:03 [igneum-12] igneumd.new already staged (sha256 70751def7e22)
|
||||
[igneum-12] override: {"genesis_bits": 507510784, "difficulty_v2_activation_daa": 16170}
|
||||
[igneum-12] igneumd: igneumd 2.1.0, unit active, miner active
|
||||
[igneum-12]
|
||||
[igneum-12] thread 'main' (18864) panicked at /rustc/b940084d7eb6a299eb4bfeb8e34901bc051e7ac4/library/std/src/io/stdio.rs:1168:9:
|
||||
[igneum-12] failed printing to stdout: Broken pipe (os error 32)
|
||||
[igneum-12] note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
|
||||
14:18:15 [igneum-12] rejoined after 5 s: daa=14589 (ref igneum-01 14589) peers=2 difficulty=78883.68942008367 sink=1e417ff6b6e3
|
||||
[igneum-12] journal: Difficulty rule v2 from the override file: active from DAA score 16170
|
||||
14:18:16 rolled igneum-01 igneum-02 igneum-03 igneum-04 igneum-05 igneum-06 igneum-07 igneum-08 igneum-09 igneum-10 igneum-11 igneum-12 . Now: ./rollout-v2.sh check, then ./rollout-v2.sh watch 16170
|
||||
21
infra/cloud-devnet/results/2026-10-04/v2/compare.md
Normal file
21
infra/cloud-devnet/results/2026-10-04/v2/compare.md
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
| run | phase | 2-min rate: first back within 10% of 60/min (s) | stays within 10% for 3 min from (s) | overshoot | difficulty start | difficulty at 300 s | at 600 s | std log D 300 to 600 s | max D / min D 300 to 600 s |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| v1 | 2 step up, half 4 threads | 161 | not in 600 s | 22% | 8.01e+04 | 1.28e+05 | 8.95e+04 | 0.169 | 1.51 |
|
||||
| v1 | 3 step down, all 1 | 272 | not in 600 s | 32% | 1.15e+05 | 8.88e+04 | 1e+05 | 0.031 | 1.18 |
|
||||
| v2 | 1 step up, half 4 threads | 157 | not in 600 s | 34% | 8.41e+04 | 1.02e+05 | 1.15e+05 | 0.053 | 1.15 |
|
||||
| v2 | 2 step down, all 1 | 172 | not in 600 s | 37% | 1.14e+05 | 9.7e+04 | 8.19e+04 | 0.087 | 1.45 |
|
||||
|
||||
Per minute, 2-min block rate (blocks/min) and median difficulty, first 10 minutes of each step:
|
||||
| s | v1 up rate | v1 up D | v2 up rate | v2 up D | v1 down rate | v1 down D | v2 down rate | v2 down D |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 0 | 65.5 | 80.1k | 1277.5 | 84.1k | 62.0 | 115.2k | 51.0 | 114.3k |
|
||||
| 60 | 75.5 | 103.5k | 1326.5 | 94.3k | 56.0 | 113.1k | 41.0 | 108.8k |
|
||||
| 120 | 72.0 | 109.5k | 80.5 | 124.4k | 46.5 | 110.9k | 40.0 | 72.4k |
|
||||
| 180 | 61.5 | 109.5k | 57.0 | 94.5k | 42.5 | 108.4k | 60.5 | 89.2k |
|
||||
| 240 | 65.5 | 115.7k | 67.5 | 99.7k | 45.5 | 75.7k | 65.0 | 99.1k |
|
||||
| 300 | 66.5 | 127.9k | 75.5 | 102.4k | 62.0 | 88.8k | 58.0 | 97.0k |
|
||||
| 360 | 65.0 | 133.7k | 61.0 | 102.2k | 58.0 | 104.8k | 53.5 | 93.9k |
|
||||
| 420 | 57.5 | 123.4k | 61.5 | 107.5k | 47.5 | 102.6k | 47.5 | 91.7k |
|
||||
| 480 | 48.0 | 112.8k | 70.0 | 116.3k | 43.0 | 101.1k | 49.5 | 87.8k |
|
||||
| 540 | 64.5 | 89.5k | 63.0 | 117.4k | 52.5 | 101.2k | 54.5 | 79.6k |
|
||||
| 600 | nan | nank | nan | nank | nan | nank | nan | nank |
|
||||
156
infra/cloud-devnet/results/2026-10-04/v2/hop-series.tsv
Normal file
156
infra/cloud-devnet/results/2026-10-04/v2/hop-series.tsv
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
t_ms utc phase miner_threads_total difficulty_node1 difficulty_median blocks_node1 daa_node1 tips_node1 rate_1min rate_2min nodes_sampled
|
||||
1791125530000 14:52:10 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125540000 14:52:20 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125550000 14:52:30 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125560000 14:52:40 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125570000 14:52:50 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125580000 14:53:00 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125590000 14:53:10 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125600000 14:53:20 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125610000 14:53:30 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125620000 14:53:40 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125630000 14:53:50 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125640000 14:54:00 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125650000 14:54:10 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125660000 14:54:20 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125670000 14:54:30 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125680000 14:54:40 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125690000 14:54:50 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125700000 14:55:00 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125710000 14:55:10 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125720000 14:55:20 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125730000 14:55:30 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125740000 14:55:40 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125750000 14:55:50 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125760000 14:56:00 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125770000 14:56:10 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125780000 14:56:20 12 71627.9 76080.8 14359 14359 1 0 0.0 12
|
||||
1791125790000 14:56:30 12 83944.4 79515.6 16880 16880 1 2521 1260.5 12
|
||||
1791125800000 14:56:40 12 83536.6 83536.6 16885 16885 1 2526 1263.0 12
|
||||
1791125810000 14:56:50 12 82544.9 82852.3 16890 16890 1 2531 1265.5 12
|
||||
1791125820000 14:57:00 12 82908.0 82908.0 16901 16901 1 2542 1271.0 12
|
||||
1791125830000 14:57:10 1:half:4 30 84124.8 84124.8 16914 16914 1 2555 1277.5 12
|
||||
1791125840000 14:57:20 1:half:4 30 84633.4 84435.3 16937 16937 2 2578 1289.0 12
|
||||
1791125850000 14:57:30 1:half:4 30 84873.4 85235.5 16953 16953 1 73 1297.0 12
|
||||
1791125860000 14:57:40 1:half:4 30 87271.1 86937.0 16972 16972 1 87 1306.5 12
|
||||
1791125870000 14:57:50 1:half:4 30 87176.5 87044.9 16983 16983 1 93 1312.0 12
|
||||
1791125880000 14:58:00 1:half:4 30 87519.4 88371.7 16991 16991 2 90 1316.0 12
|
||||
1791125890000 14:58:10 1:half:4 30 97120.4 94291.7 17012 17012 1 98 1326.5 12
|
||||
1791125900000 14:58:20 1:half:4 30 117457.2 115175.4 17022 17022 1 85 1331.5 12
|
||||
1791125910000 14:58:30 1:half:4 30 117969.1 117969.1 17034 17034 2 81 77.0 12
|
||||
1791125920000 14:58:40 1:half:4 30 122803.1 122573.2 17047 17047 1 75 81.0 12
|
||||
1791125930000 14:58:50 1:half:4 30 118709.4 118709.4 17051 17051 1 68 80.5 12
|
||||
1791125940000 14:59:00 1:half:4 30 126130.9 126130.9 17066 17066 1 75 82.5 12
|
||||
1791125950000 14:59:10 1:half:4 30 125267.6 124433.7 17075 17075 1 63 80.5 12
|
||||
1791125960000 14:59:20 1:half:4 30 125066.0 123132.3 17082 17082 1 60 72.5 12
|
||||
1791125970000 14:59:30 1:half:4 30 131138.8 131016.0 17097 17097 1 63 72.0 12
|
||||
1791125980000 14:59:40 1:half:4 30 124499.9 124499.9 17103 17103 1 56 65.5 12
|
||||
1791125990000 14:59:50 1:half:4 30 124094.8 124094.8 17109 17109 1 58 63.0 12
|
||||
1791126000000 15:00:00 1:half:4 30 107993.2 107993.2 17117 17117 1 51 63.0 12
|
||||
1791126010000 15:00:10 1:half:4 30 94547.8 94547.8 17126 17126 1 51 57.0 12
|
||||
1791126020000 15:00:20 1:half:4 30 94689.6 94689.6 17141 17141 1 59 59.5 12
|
||||
1791126030000 15:00:30 1:half:4 30 95842.2 95824.8 17155 17155 1 58 60.5 12
|
||||
1791126040000 15:00:40 1:half:4 30 96283.8 96243.0 17170 17170 1 67 61.5 12
|
||||
1791126050000 15:00:50 1:half:4 30 97254.6 97254.6 17179 17179 1 70 64.0 12
|
||||
1791126060000 15:01:00 1:half:4 30 98659.6 98659.6 17197 17197 1 80 65.5 12
|
||||
1791126070000 15:01:10 1:half:4 30 99741.3 99741.3 17210 17210 1 84 67.5 12
|
||||
1791126080000 15:01:20 1:half:4 30 99553.4 99553.4 17221 17221 1 80 69.5 12
|
||||
1791126090000 15:01:30 1:half:4 30 99624.3 99624.3 17227 17227 3 72 65.0 12
|
||||
1791126100000 15:01:40 1:half:4 30 101506.6 101506.6 17244 17244 1 74 70.5 12
|
||||
1791126110000 15:01:50 1:half:4 30 102223.7 102223.7 17259 17259 1 80 75.0 12
|
||||
1791126120000 15:02:00 1:half:4 30 101679.4 101679.4 17264 17264 1 67 73.5 12
|
||||
1791126130000 15:02:10 1:half:4 30 101853.7 102381.2 17277 17277 1 67 75.5 12
|
||||
1791126140000 15:02:20 1:half:4 30 102472.0 102325.3 17285 17285 1 64 72.0 12
|
||||
1791126150000 15:02:30 1:half:4 30 102913.3 102913.3 17299 17299 1 72 72.0 12
|
||||
1791126160000 15:02:40 1:half:4 30 102450.1 102450.1 17304 17304 3 60 67.0 12
|
||||
1791126170000 15:02:50 1:half:4 30 102564.7 102564.7 17311 17311 3 52 66.0 12
|
||||
1791126180000 15:03:00 1:half:4 30 102248.5 102955.4 17326 17326 1 62 64.5 12
|
||||
1791126190000 15:03:10 1:half:4 30 102171.5 102171.5 17332 17332 3 55 61.0 12
|
||||
1791126200000 15:03:20 1:half:4 30 103822.3 103997.9 17347 17347 3 62 63.0 12
|
||||
1791126210000 15:03:30 1:half:4 30 104003.8 104003.8 17357 17357 1 58 65.0 12
|
||||
1791126220000 15:03:40 1:half:4 30 106662.6 105910.6 17378 17378 1 74 67.0 12
|
||||
1791126230000 15:03:50 1:half:4 30 108045.1 108200.1 17385 17385 1 74 63.0 12
|
||||
1791126240000 15:04:00 1:half:4 30 108862.9 108862.9 17392 17392 1 66 64.0 12
|
||||
1791126250000 15:04:10 1:half:4 30 107565.3 107513.5 17400 17400 2 68 61.5 12
|
||||
1791126260000 15:04:20 1:half:4 30 108314.7 108314.7 17405 17405 1 58 60.0 12
|
||||
1791126270000 15:04:30 1:half:4 30 110774.9 110774.9 17422 17422 2 65 61.5 12
|
||||
1791126280000 15:04:40 1:half:4 30 111193.3 111226.0 17428 17428 1 50 62.0 12
|
||||
1791126290000 15:04:50 1:half:4 30 112983.3 112983.3 17442 17442 2 57 65.5 12
|
||||
1791126300000 15:05:00 1:half:4 30 113722.0 113937.4 17454 17454 2 62 64.0 12
|
||||
1791126310000 15:05:10 1:half:4 30 116332.5 116332.5 17472 17472 3 72 70.0 12
|
||||
1791126320000 15:05:20 1:half:4 30 115763.6 115763.6 17479 17479 1 74 66.0 12
|
||||
1791126330000 15:05:30 1:half:4 30 116175.7 116175.7 17484 17484 1 62 63.5 12
|
||||
1791126340000 15:05:40 1:half:4 30 116909.4 116909.4 17493 17493 1 65 57.5 12
|
||||
1791126350000 15:05:50 1:half:4 30 116141.1 116141.1 17495 17495 1 53 55.0 12
|
||||
1791126360000 15:06:00 1:half:4 30 116711.9 116711.9 17509 17509 1 55 58.5 12
|
||||
1791126370000 15:06:10 1:half:4 30 117399.4 117399.4 17526 17526 1 54 63.0 12
|
||||
1791126380000 15:06:20 1:half:4 30 117719.6 117719.6 17533 17533 1 54 64.0 12
|
||||
1791126390000 15:06:30 1:half:4 30 117135.6 117135.6 17541 17541 1 57 59.5 12
|
||||
1791126400000 15:06:40 1:half:4 30 116591.9 116591.9 17559 17559 2 66 65.5 12
|
||||
1791126410000 15:06:50 1:half:4 30 116773.6 116773.6 17563 17563 1 68 60.5 12
|
||||
1791126420000 15:07:00 1:half:4 30 114629.2 114629.2 17569 17569 2 60 57.5 12
|
||||
1791126430000 15:07:10 2:all:1 12 114320.7 114320.7 17574 17574 1 48 51.0 12
|
||||
1791126440000 15:07:20 2:all:1 12 114630.9 114713.3 17586 17586 1 53 53.5 12
|
||||
1791126450000 15:07:30 2:all:1 12 113657.3 113713.6 17589 17589 1 48 52.5 12
|
||||
1791126460000 15:07:40 2:all:1 12 112939.6 112939.6 17597 17597 1 38 52.0 12
|
||||
1791126470000 15:07:50 2:all:1 12 110744.9 110744.9 17601 17601 1 38 53.0 12
|
||||
1791126480000 15:08:00 2:all:1 12 110199.8 110199.8 17605 17605 1 36 48.0 12
|
||||
1791126490000 15:08:10 2:all:1 12 108839.9 108839.9 17608 17608 1 34 41.0 12
|
||||
1791126500000 15:08:20 2:all:1 12 108215.5 108215.5 17614 17614 3 28 40.5 12
|
||||
1791126510000 15:08:30 2:all:1 12 106559.6 106813.6 17622 17622 1 33 40.5 12
|
||||
1791126520000 15:08:40 2:all:1 12 81539.1 79612.0 17629 17629 1 32 35.0 12
|
||||
1791126530000 15:08:50 2:all:1 12 76045.6 76190.5 17639 17639 1 38 38.0 12
|
||||
1791126540000 15:09:00 2:all:1 12 75227.6 75227.6 17643 17643 1 38 37.0 12
|
||||
1791126550000 15:09:10 2:all:1 12 72689.2 72404.6 17654 17654 1 46 40.0 12
|
||||
1791126560000 15:09:20 2:all:1 12 71699.5 72492.6 17662 17662 1 48 38.0 12
|
||||
1791126570000 15:09:30 2:all:1 12 74269.2 74269.2 17680 17680 1 58 45.5 12
|
||||
1791126580000 15:09:40 2:all:1 12 71988.4 72034.4 17692 17692 2 63 47.5 12
|
||||
1791126590000 15:09:50 2:all:1 12 72165.0 72165.0 17698 17698 1 59 48.5 12
|
||||
1791126600000 15:10:00 2:all:1 12 79787.0 79787.0 17716 17716 2 73 55.5 12
|
||||
1791126610000 15:10:10 2:all:1 12 89207.2 89207.2 17729 17729 2 75 60.5 12
|
||||
1791126620000 15:10:20 2:all:1 12 97479.1 98941.3 17736 17736 1 74 61.0 12
|
||||
1791126630000 15:10:30 2:all:1 12 101275.3 101231.3 17748 17748 1 68 63.0 12
|
||||
1791126640000 15:10:40 2:all:1 12 100446.7 100445.3 17759 17759 1 67 65.0 12
|
||||
1791126650000 15:10:50 2:all:1 12 99923.4 99937.6 17769 17769 1 71 65.0 12
|
||||
1791126660000 15:11:00 2:all:1 12 99316.1 99144.3 17774 17774 2 58 65.5 12
|
||||
1791126670000 15:11:10 2:all:1 12 99077.1 99077.1 17784 17784 2 55 65.0 12
|
||||
1791126680000 15:11:20 2:all:1 12 98082.7 98082.7 17799 17799 4 63 68.5 12
|
||||
1791126690000 15:11:30 2:all:1 12 99392.2 99392.2 17813 17813 1 65 66.5 12
|
||||
1791126700000 15:11:40 2:all:1 12 98692.8 98692.8 17819 17819 1 60 63.5 12
|
||||
1791126710000 15:11:50 2:all:1 12 98246.9 98174.7 17829 17829 1 60 65.5 12
|
||||
1791126720000 15:12:00 2:all:1 12 97829.5 97764.5 17839 17839 1 65 61.5 12
|
||||
1791126730000 15:12:10 2:all:1 12 96993.1 96993.1 17845 17845 3 61 58.0 12
|
||||
1791126740000 15:12:20 2:all:1 12 96065.9 96294.7 17851 17851 1 52 57.5 12
|
||||
1791126750000 15:12:30 2:all:1 12 95384.4 95177.9 17856 17856 1 43 54.0 12
|
||||
1791126760000 15:12:40 2:all:1 12 95236.4 95236.4 17864 17864 2 45 52.5 12
|
||||
1791126770000 15:12:50 2:all:1 12 94777.4 94777.4 17878 17878 1 49 54.5 12
|
||||
1791126780000 15:13:00 2:all:1 12 94671.3 94999.2 17883 17883 1 44 54.5 12
|
||||
1791126790000 15:13:10 2:all:1 12 94062.9 93902.7 17891 17891 2 46 53.5 12
|
||||
1791126800000 15:13:20 2:all:1 12 93506.6 93464.9 17901 17901 1 50 51.0 12
|
||||
1791126810000 15:13:30 2:all:1 12 93437.8 93437.8 17904 17904 2 48 45.5 12
|
||||
1791126820000 15:13:40 2:all:1 12 93014.5 93014.5 17914 17914 1 50 47.5 12
|
||||
1791126830000 15:13:50 2:all:1 12 92966.9 92966.9 17926 17926 1 48 48.5 12
|
||||
1791126840000 15:14:00 2:all:1 12 92707.7 92707.7 17930 17930 2 47 45.5 12
|
||||
1791126850000 15:14:10 2:all:1 12 91495.4 91684.7 17940 17940 1 49 47.5 12
|
||||
1791126860000 15:14:20 2:all:1 12 91336.7 91336.7 17943 17943 1 42 46.0 12
|
||||
1791126870000 15:14:30 2:all:1 12 90184.5 90184.5 17953 17953 2 49 48.5 12
|
||||
1791126880000 15:14:40 2:all:1 12 90272.2 90272.2 17958 17958 2 44 47.0 12
|
||||
1791126890000 15:14:50 2:all:1 12 88701.4 88769.2 17972 17972 1 46 47.0 12
|
||||
1791126900000 15:15:00 2:all:1 12 88391.4 88391.4 17979 17979 2 49 48.0 12
|
||||
1791126910000 15:15:10 2:all:1 12 87817.3 87794.5 17990 17990 1 50 49.5 12
|
||||
1791126920000 15:15:20 2:all:1 12 88414.6 88414.6 17997 17997 1 54 48.0 12
|
||||
1791126930000 15:15:30 2:all:1 12 88281.3 88281.3 18001 18001 1 48 48.5 12
|
||||
1791126940000 15:15:40 2:all:1 12 66990.7 66995.0 18014 18014 1 56 50.0 12
|
||||
1791126950000 15:15:50 2:all:1 12 76895.4 76371.1 18028 18028 2 56 51.0 12
|
||||
1791126960000 15:16:00 2:all:1 12 78498.1 78498.1 18036 18036 1 57 53.0 12
|
||||
1791126970000 15:16:10 2:all:1 12 79566.3 79566.3 18049 18049 1 59 54.5 12
|
||||
1791126980000 15:16:20 2:all:1 12 78586.5 78586.5 18059 18059 1 62 58.0 12
|
||||
1791126990000 15:16:30 2:all:1 12 80393.3 80393.3 18071 18071 1 70 59.0 12
|
||||
1791127000000 15:16:40 2:all:1 12 80726.4 80726.4 18078 18078 2 64 60.0 12
|
||||
1791127010000 15:16:50 2:all:1 12 78931.8 78931.8 18088 18088 2 60 58.0 12
|
||||
1791127020000 15:17:00 2:all:1 12 81911.6 81911.6 18104 18104 1 68 62.5 12
|
||||
1791127030000 15:17:10 2:all:1 12 81940.4 81940.4 18115 18115 2 66 62.5 12
|
||||
1791127040000 15:17:20 2:all:1 12 83800.4 83800.0 18123 18123 2 64 63.0 12
|
||||
1791127050000 15:17:30 2:all:1 12 82569.2 82569.2 18130 18130 1 59 64.5 12
|
||||
1791127060000 15:17:40 2:all:1 12 80819.1 80819.1 18141 18141 1 63 63.5 12
|
||||
1791127070000 15:17:50 2:all:1 12 80028.9 79777.8 18144 18144 1 56 58.0 12
|
||||
|
3
infra/cloud-devnet/results/2026-10-04/v2/hop.log
Normal file
3
infra/cloud-devnet/results/2026-10-04/v2/hop.log
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
1791125823000 half 4 600
|
||||
1791126428000 all 1 600
|
||||
1791127028000 end - -
|
||||
15
infra/cloud-devnet/results/2026-10-04/v2/hop.md
Normal file
15
infra/cloud-devnet/results/2026-10-04/v2/hop.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Samples from igneum-01; phases from hop.log.
|
||||
|
||||
| phase | selector | threads | length s | blocks/min mean | blocks/min last 3 min | difficulty start | difficulty end | settled s (3 min within 10% of 60/min) |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| 1 | half | 4 | 605 | 66.5 | 51.3 | 8.27e+04 | 1.14e+05 | never |
|
||||
| 2 | all | 1 | 600 | 53.2 | 53.3 | 1.15e+05 | 8.23e+04 | never |
|
||||
|
||||
blocks/min from the node's blockCount (every block, blue or red). Target 60. 'settled' = first minute of three in a row within 10% of target after the step (spec 02 uses a 100-block criterion on the 121-block mean rate; recompute from samples.tsv for the spec's definition).
|
||||
|
||||
| phase | selector | threads | rate 2-min min (blocks/min) | rate 2-min max | overshoot vs 60 | difficulty min | difficulty max | difficulty end / start | settled s (2-min rate within 10% for 3 min) |
|
||||
|---|---|---|---|---|---|---|---|---|---|
|
||||
| 1 | half | 4 | 55.0 | 80.5 | +34% | 8.41e+04 | 1.31e+05 | 1.36 | never |
|
||||
| 2 | all | 1 | 38.0 | 68.5 | -37% | 6.7e+04 | 1.15e+05 | 0.72 | never |
|
||||
|
||||
The second table uses the trailing 2-min block rate on a 10-s grid (hop-series.tsv), evaluated from 2 min into the phase so the window lies inside it; overshoot is the largest excursion of that rate from 60/min, signed by the larger side.
|
||||
4
infra/cloud-devnet/results/2026-10-04/v2/hop.out
Normal file
4
infra/cloud-devnet/results/2026-10-04/v2/hop.out
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
14:57:00 schedule: half:4:600;all:1:600
|
||||
14:57:00 phase: half -> 4 thread(s) for 600 s (6 nodes)
|
||||
15:07:03 phase: all -> 1 thread(s) for 600 s (12 nodes)
|
||||
15:17:08 done; phases in /Users/joshm/Projects/igneum/infra/cloud-devnet/results/2026-10-04/hop.log. Pull the samples with ./experiments/collect.sh and read results/<date>/hop.md
|
||||
2540
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-01/samples.tsv
Normal file
2540
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-01/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2538
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-02/samples.tsv
Normal file
2538
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-02/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2551
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-03/samples.tsv
Normal file
2551
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-03/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2553
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-04/samples.tsv
Normal file
2553
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-04/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2556
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-05/samples.tsv
Normal file
2556
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-05/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2565
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-06/samples.tsv
Normal file
2565
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-06/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2563
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-07/samples.tsv
Normal file
2563
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-07/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2561
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-08/samples.tsv
Normal file
2561
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-08/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2536
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-09/samples.tsv
Normal file
2536
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-09/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2563
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-10/samples.tsv
Normal file
2563
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-10/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2577
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-11/samples.tsv
Normal file
2577
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-11/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
2573
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-12/samples.tsv
Normal file
2573
infra/cloud-devnet/results/2026-10-04/v2/nodes/igneum-12/samples.tsv
Normal file
File diff suppressed because it is too large
Load diff
134
infra/cloud-devnet/rollout-v2.sh
Executable file
134
infra/cloud-devnet/rollout-v2.sh
Executable file
|
|
@ -0,0 +1,134 @@
|
|||
#!/usr/bin/env bash
|
||||
# Roll a new igneumd onto the cloud devnet one node at a time, with the difficulty v2 activation height in every
|
||||
# node's override file (4 October 2026, the Hetzner rehearsal of docs/analysis/difficulty-2026-10-04-oscillation.md
|
||||
# section 8). The chain keeps running: each node is stopped, its binary replaced, the override file rewritten, the
|
||||
# node and its miner started again, and the next node is not touched until this one is synced with peers and its
|
||||
# DAA score is within a few blocks of a reference node.
|
||||
#
|
||||
# ./rollout-v2.sh roll <igneumd> <activation-daa> [node ...] the roll (all nodes in nodes.tsv order, or the named ones)
|
||||
# ./rollout-v2.sh check [reference-node] every node's DAA, difficulty, v2 line in its journal, and
|
||||
# whether the reference node's sink is a chain block on it
|
||||
# ./rollout-v2.sh watch <activation-daa> [minutes] one check line per minute until activation + 600 has passed
|
||||
# ./rollout-v2.sh back [node ...] put /opt/igneum/bin/igneumd.prev back and drop the field
|
||||
#
|
||||
# What is NOT done here: provision.sh install (it rewrites the override file to genesis_bits alone and node.env to one
|
||||
# miner thread), and the miner (it follows templates; the binary stays). The previous binary is kept as igneumd.prev.
|
||||
. "$(dirname "$0")/lib/common.sh"
|
||||
require_nodes
|
||||
cmd="${1:-}"; shift || true
|
||||
|
||||
override_json() { printf '{"genesis_bits": %s, "difficulty_v2_activation_daa": %s}' "$(genesis_bits_decimal)" "$1"; }
|
||||
|
||||
# one sample line: ts sink blue daa tips peers difficulty headers blocks
|
||||
sample() { nssh "$(node_ip "$1")" "python3 /opt/igneum/bin/wrpc.py sample 2>/dev/null" </dev/null 2>/dev/null | tr -d '\r'; }
|
||||
sample_field() { printf '%s' "$1" | cut -f"$2"; }
|
||||
|
||||
roll_one() { # name binary activation sha
|
||||
local name="$1" bin="$2" act="$3" sha="$4" ip; ip=$(node_ip "$name")
|
||||
local have; have=$(nssh "$ip" "sha256sum /opt/igneum/bin/igneumd.new 2>/dev/null | cut -c1-64" </dev/null || true)
|
||||
if [ "$have" = "$sha" ]; then
|
||||
log "[$name] igneumd.new already staged (sha256 ${sha:0:12})"
|
||||
else
|
||||
log "[$name] uploading igneumd ($(stat -f %z "$bin") bytes, sha256 ${sha:0:12})"
|
||||
nscp "$bin" "$SSH_USER@$ip:/opt/igneum/bin/igneumd.new"
|
||||
have=$(nssh "$ip" "sha256sum /opt/igneum/bin/igneumd.new | cut -c1-64" </dev/null)
|
||||
[ "$have" = "$sha" ] || die "[$name] upload sha256 mismatch: $have"
|
||||
fi
|
||||
nssh "$ip" "set -e
|
||||
chmod +x /opt/igneum/bin/igneumd.new
|
||||
[ -f /opt/igneum/bin/igneumd.prev ] || cp -p /opt/igneum/bin/igneumd /opt/igneum/bin/igneumd.prev
|
||||
printf '%s\n' '$(override_json "$act")' > /etc/igneum/override-params.json
|
||||
systemctl stop igneumd
|
||||
mv /opt/igneum/bin/igneumd.new /opt/igneum/bin/igneumd
|
||||
systemctl start igneumd
|
||||
sleep 2
|
||||
systemctl start igneum-miner igneum-blocklog # both stop with the node (Requires=) and do not come back by themselves
|
||||
echo \"override: \$(cat /etc/igneum/override-params.json)\"
|
||||
echo \"igneumd: \$(/opt/igneum/bin/igneumd --version | head -1), unit \$(systemctl is-active igneumd), miner \$(systemctl is-active igneum-miner)\"" </dev/null 2>&1 | sed "s/^/[$name] /"
|
||||
# rejoin: the v2 line in the journal, then synced with peers and a DAA score near the reference
|
||||
local i line peers daa ref refdaa sink
|
||||
for i in $(seq 1 24); do
|
||||
sleep 5
|
||||
line=$(sample "$name"); peers=$(sample_field "$line" 6); daa=$(sample_field "$line" 4); sink=$(sample_field "$line" 2)
|
||||
ref=$(sample "$REF"); refdaa=$(sample_field "$ref" 4)
|
||||
if [ -n "$daa" ] && [ -n "$refdaa" ] && [ "${peers:-0}" -ge 1 ] && [ $(( refdaa - daa )) -le 3 ] && [ $(( daa - refdaa )) -le 3 ]; then
|
||||
log "[$name] rejoined after $(( i * 5 )) s: daa=$daa (ref $REF $refdaa) peers=$peers difficulty=$(sample_field "$line" 7) sink=${sink:0:12}"
|
||||
nssh "$ip" "journalctl -u igneumd --no-pager -n 400 -o cat | grep -m1 'Difficulty rule v2'" </dev/null 2>/dev/null | sed "s/^/[$name] journal: /"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
log "[$name] did NOT rejoin within 120 s: last sample '$line' (ref $REF: '$ref')"
|
||||
nssh "$ip" "journalctl -u igneumd --no-pager -n 30 -o cat" </dev/null 2>/dev/null | sed "s/^/[$name] journal: /"
|
||||
return 1
|
||||
}
|
||||
|
||||
check() { # [reference]
|
||||
local ref="${1:-$(node_names | head -1)}" refline refsink refdaa
|
||||
refline=$(sample "$ref"); refdaa=$(sample_field "$refline" 4)
|
||||
# the reference's sink of two minutes ago (its 5-s sample log), deep enough to have reached every node
|
||||
refsink=$(nssh "$(node_ip "$ref")" "tail -25 /var/log/igneum/samples.tsv | head -1 | cut -f2" </dev/null 2>/dev/null | tr -d '\r')
|
||||
[ -n "$refsink" ] || refsink=$(sample_field "$refline" 2)
|
||||
printf '%-10s %8s %12s %5s %4s %-8s %-12s %s\n' node daa difficulty peers tips "ref-sink" sink "v2 line in journal"
|
||||
while IFS=$'\t' read -r -u 3 name idx reg ip access pub port; do
|
||||
(
|
||||
line=$(sample "$name")
|
||||
onchain=$(nssh "$ip" "python3 /opt/igneum/bin/wrpc.py call getBlock '{\"hash\":\"$refsink\",\"includeTransactions\":false}' 2>/dev/null | python3 -c 'import json,sys; j=json.load(sys.stdin); b=j.get(\"block\",j); v=b.get(\"verboseData\",{}); print(\"chain\" if v.get(\"isChainBlock\") else (\"have\" if b.get(\"header\") else \"MISSING\"))' 2>/dev/null || echo unknown" </dev/null 2>/dev/null | tail -1)
|
||||
v2=$(nssh "$ip" "journalctl -u igneumd --no-pager -b -o cat 2>/dev/null | grep 'Difficulty rule v2' | tail -1 | sed 's/.*DAA score //'" </dev/null 2>/dev/null)
|
||||
printf '%-10s %8s %12.0f %5s %4s %-8s %-12s %s\n' "$name" "$(sample_field "$line" 4)" "$(sample_field "$line" 7)" "$(sample_field "$line" 6)" "$(sample_field "$line" 5)" "${onchain:-?}" "$(sample_field "$line" 2 | cut -c1-12)" "${v2:-none}"
|
||||
) &
|
||||
done 3< "$NODES_FILE"
|
||||
wait
|
||||
printf 'reference %s: daa %s, its sink of 2 min ago %s ("chain" = that block is on the node'"'"'s selected chain, "have" = known but not on its chain, MISSING = not received)\n' "$ref" "$refdaa" "${refsink:0:12}"
|
||||
}
|
||||
|
||||
case "$cmd" in
|
||||
stage) # <igneumd>: igneumd.new onto every node without touching anything running: the Mac -> the 4 gateways in
|
||||
# parallel, then each gateway -> its private nodes over the zone network (agent forwarding: ssh-add the ops key first)
|
||||
bin="${1:?igneumd binary}"; sha=$(shasum -a 256 "$bin" | cut -c1-64)
|
||||
log "staging igneumd (sha256 ${sha:0:12}) as /opt/igneum/bin/igneumd.new: gateways first"
|
||||
for g in $(public_nodes); do
|
||||
( have=$(nssh "$(node_ip "$g")" "sha256sum /opt/igneum/bin/igneumd.new 2>/dev/null | cut -c1-64" </dev/null || true)
|
||||
if [ "$have" = "$sha" ]; then log "[$g] already staged"; else nscp "$bin" "$SSH_USER@$(node_ip "$g"):/opt/igneum/bin/igneumd.new" && log "[$g] staged"; fi ) &
|
||||
done; wait
|
||||
for p in $(private_nodes); do
|
||||
z=$(node_zone "$p"); g=$(gateway_of_zone "$z")
|
||||
( ssh "${SSH_OPTS[@]}" -A "$SSH_USER@$(node_pub "$g")" "scp -o StrictHostKeyChecking=accept-new -o BatchMode=yes /opt/igneum/bin/igneumd.new $SSH_USER@$(node_ip "$p"):/opt/igneum/bin/igneumd.new" && log "[$p] staged from $g" ) &
|
||||
done; wait
|
||||
while IFS=$'\t' read -r -u 3 name idx reg ip access pub port; do
|
||||
( have=$(nssh "$ip" "sha256sum /opt/igneum/bin/igneumd.new 2>/dev/null | cut -c1-64" </dev/null || true); [ "$have" = "$sha" ] && echo "[$name] ok" || echo "[$name] MISSING or wrong ($have)" ) &
|
||||
done 3< "$NODES_FILE"; wait ;;
|
||||
roll)
|
||||
bin="${1:?igneumd binary}"; act="${2:?activation daa}"; shift 2
|
||||
[ -f "$bin" ] || die "no binary at $bin"
|
||||
file "$bin" | grep -q "ELF 64-bit.*x86-64" || die "$bin is not an x86-64 Linux ELF"
|
||||
sha=$(shasum -a 256 "$bin" | cut -c1-64)
|
||||
names="${*:-$(node_names | tr '\n' ' ')}"
|
||||
REF=$(node_names | head -1)
|
||||
log "rolling igneumd (sha256 ${sha:0:12}) with difficulty_v2_activation_daa=$act onto: $names; reference node $REF"
|
||||
refline=$(sample "$REF"); log "reference $REF now: daa $(sample_field "$refline" 4), difficulty $(sample_field "$refline" 7), sink $(sample_field "$refline" 2 | cut -c1-12)"
|
||||
for n in $names; do
|
||||
if [ "$n" = "$REF" ]; then REF=$(node_names | sed -n 2p); fi # the reference must not be the node being restarted
|
||||
roll_one "$n" "$bin" "$act" "$sha" || die "stopped at $n (collect logs: ./experiments/collect.sh)"
|
||||
REF=$(node_names | head -1)
|
||||
done
|
||||
log "rolled $names. Now: ./rollout-v2.sh check, then ./rollout-v2.sh watch $act" ;;
|
||||
check) check "${1:-}" ;;
|
||||
watch)
|
||||
act="${1:?activation daa}"; mins="${2:-0}"; n=0
|
||||
while true; do
|
||||
n=$((n + 1)); log "check $n"; check
|
||||
refdaa=$(sample "$(node_names | head -1)" | cut -f4)
|
||||
if [ -n "$refdaa" ] && [ "$refdaa" -ge $(( act + 600 )) ]; then log "DAA $refdaa is past $act + 600"; break; fi
|
||||
if [ "$mins" != 0 ] && [ "$n" -ge "$mins" ]; then break; fi
|
||||
sleep 55
|
||||
done ;;
|
||||
back)
|
||||
names="${*:-$(node_names | tr '\n' ' ')}"
|
||||
for n in $names; do
|
||||
nssh "$(node_ip "$n")" "set -e; [ -f /opt/igneum/bin/igneumd.prev ] || { echo 'no igneumd.prev'; exit 1; }
|
||||
printf '{\"genesis_bits\": %s}\n' '$(genesis_bits_decimal)' > /etc/igneum/override-params.json
|
||||
systemctl stop igneumd; cp -p /opt/igneum/bin/igneumd.prev /opt/igneum/bin/igneumd; systemctl start igneumd; sleep 2; systemctl start igneum-miner igneum-blocklog
|
||||
echo \"back to \$(/opt/igneum/bin/igneumd --version | head -1), \$(cat /etc/igneum/override-params.json)\"" </dev/null 2>&1 | sed "s/^/[$n] /"
|
||||
done ;;
|
||||
*) die "usage: rollout-v2.sh roll <igneumd> <activation-daa> [node ...] | check [ref] | watch <activation-daa> [minutes] | back [node ...]" ;;
|
||||
esac
|
||||
|
|
@ -8,6 +8,13 @@ LOG_KEY="okLO0nuvYzKkgNCWL5WNW37e"
|
|||
LIVE_PAGE="https://igneum.network/live"
|
||||
DOWNLOAD_PAGE="https://igneum.network/#mine"
|
||||
TOKEN_FILE="$HOME/.config/igneum/dl-token"
|
||||
# Consensus parameters pinned into the package for the bundled node: igneum-app.json "node_override_params"; the engine
|
||||
# writes them to <app data>/override-params.json and starts igneumd with --override-params-file. Empty = no override
|
||||
# file, the node runs the network's defaults. Difficulty v2 (4 Oct 2026): the version that bundles igneumd v2 must
|
||||
# carry the devnet's activation height here, the same N as every other devnet node, before it is cut (Mac and CI alike:
|
||||
# make-payload.sh reads this line). Rule and order: docs/plans/difficulty-v2-rollout-devnet.md.
|
||||
# Example: NODE_OVERRIDE_PARAMS='{"difficulty_v2_activation_daa": 123456}'
|
||||
NODE_OVERRIDE_PARAMS=''
|
||||
|
||||
# writes the JSON to $1
|
||||
write_packaged_config() {
|
||||
|
|
@ -15,8 +22,11 @@ write_packaged_config() {
|
|||
[ -f "$TOKEN_FILE" ] && token="$(tr -d '[:space:]' < "$TOKEN_FILE")"
|
||||
[ -n "$token" ] && manifest="https://dl.igneum.network/dl/$token/igneum-app-latest.json"
|
||||
[ -n "$manifest" ] || echo "note: no $TOKEN_FILE; the update check is disabled in this build"
|
||||
local override_line=""
|
||||
[ -n "$NODE_OVERRIDE_PARAMS" ] && override_line=" \"node_override_params\": $NODE_OVERRIDE_PARAMS,"
|
||||
cat > "$out" <<JSON
|
||||
{
|
||||
$override_line
|
||||
"update_manifest": "$manifest",
|
||||
"log_intake_url": "$LOG_URL",
|
||||
"log_intake_key": "$LOG_KEY",
|
||||
|
|
|
|||
Loading…
Reference in a new issue