Commit Graph

23 Commits

Author SHA1 Message Date
Aere Network
ba7f09d46d RUN-A-NODE: banda de heap masurata iar la 8,4 milioane (2400m intra in colaps de colectare, 3400m zero colectari complete) 2026-09-11 19:02:55 +03:00
Aere Network
7d40356aeb bootnodes: the second published address is withdrawn since 2026-09-11 (its host no longer fits the rule that a bootnode is not a validator; a replacement public read host follows); anchor corpus re-staged from the overlay (read-path classes and their tests, controller import-time retry) 2026-09-11 15:00:59 +03:00
Aere Network
3b085911fa RUN-A-NODE.md: dated note (2026-09-11) on the bootnodes: the second accepts only its configured peers; a node behind NAT keeps one peer and Besu does not fetch transaction-bearing bodies from a single busy peer; forward the P2P port and set --p2p-host 2026-09-11 12:39:33 +03:00
Aere Network
bc8dc80946 patches 0001/0003/0004 regenerated from the production tree over the same file sets (section 4(b) notices); measured: a build from this recipe reproduces the fleet's consensus jars class by class 2026-09-10 22:08:27 +03:00
Aere Network
b54aba6381 follower options re-derived after the fleet dropped attachBlockAcknowledgePast (21 properties) 2026-09-10 20:28:30 +03:00
Aere Network
72468c4c47 registries: manifest-18082816.json and hibrid-10.properties (ten indices, bound at 18,082,816); genesis.json with the third pqRegistryHash entry; follower options re-derived from the live archive node (22 properties) 2026-09-10 20:20:23 +03:00
Aere Network
b46c815398 RUN-A-NODE: the measured RAM figure for a from-genesis import. The requirement grows with the height: the same import that ran comfortably at 3 M blocks was, at 12.2 M, using 5.96 GB resident with a 3.4 GB heap, old generation 99.8 percent full, four full GCs every five seconds, and no room left to raise the heap. 8 GB is the floor at which a full import stops being practical, not a comfortable size 2026-09-06 20:14:52 +03:00
Aere Network
84a6093517 The heap note, corrected: the first version gave a fraction-of-RAM rule, and the measurement does not support it. Same machine, same database, four values at two heights: 2400m ran at ~82,000 blocks/min up to 8 M and then collapsed to ~640 with the old generation 99.88 percent full and 1,409 full GCs, while 3400m past 9.7 M did zero full GCs at ~28,800. Too large dies of OutOfMemoryError because the storage engine lives off-heap; too small dies of full GC once the post-quantum precompiles make blocks heavier. The advice is now to read jstat, not to pick a fraction 2026-09-06 18:31:54 +03:00
Aere Network
76095a942e RUN-A-NODE: a measured note on JVM heap sizing. On one machine, one database and one chain within a single hour: -Xmx4500m gave 89 OutOfMemoryError and a dead import, 3200m gave ~1,500 blocks/min with repeated download failures, 2400m gave ~82,000 blocks/min with no OOM at all. Heap is not memory: the storage engine keeps its cache off-heap, and at six million blocks that part is larger than the heap. If you see OutOfMemoryError, try a SMALLER -Xmx 2026-09-06 16:23:04 +03:00
Aere Network
54e256786e run-node.sh now actually sets the five post-4-September properties, and both it and RUN-A-NODE.md are generated from the live archive node
On 2026-09-05 the five properties a follower needs past blocks 17,047,600 and 17,225,968 were added to
RUN-A-NODE.md but not to run-node.sh, while the document already claimed the script set them. Our own
from-genesis import proof, built from the published revision, synced to block 17,047,400 and then
rejected every hybrid anchor 12,352 times: the v2 activation height stayed at Long.MAX_VALUE. Anyone
following this package could not pass 17,047,600.

Both blocks are now derived from the BESU_OPTS of the network's archive node, whose role is exactly a
follower's, with the two public reading nodes as witnesses that must agree on the anchor set; only the
signing keys are removed and the registry paths rewritten. Re-measured on the same node and database
after the fix: past 17,047,600 with zero rejections.
2026-09-06 13:00:23 +03:00
Aere Network
75be84f043 0004 regenerated from the production tree: the base-fee floor reads its fork height and value from the documented properties instead of hard-coded constants; with it the public recipe reproduces LondonFeeMarket and all three consensus jars class for class (measured 2026-09-05) 2026-09-05 13:06:49 +03:00
Aere Network
3d51da9747 Follower configuration and anchor patch at the live revision: registries/hibrid-1.properties (SLH-DSA public keys), the five properties a follower needs past blocks 17,047,600 and 17,225,968, 0003 regenerated from the staged overlay on d2032017 (169 files; applies with 0001/0004/0005 in run-node order, tree equals anchor/); the from-genesis import proof is stated as not yet repeated 2026-09-05 08:07:54 +03:00
Aere Network
39d3275e17 Bootnode 1 (37.27.216.110) now serves snap/1 (SnapServer on Bonsai flat db): SNAP clients skip historic body replay; run-node.sh stays FULL on purpose. Measured vs not-measured stated. 2026-08-28 02:31:48 +03:00
Aere Network
184ec23cd4 Publish the two bootnodes; run-node.sh works with zero arguments now
Founder approved publishing the network entry points. Both are public read hosts
outside the validator set, so their downtime cannot cost consensus, and their
addresses were already public through the services they serve. One runs Besu and
one runs Nethermind, so a new node's first two peers are two independent
implementations. run-node.sh uses both by default; --bootnode still overrides.
The mail path stays as fallback for the day both are down.

This closes the last gap between "one command plus an email" and one command.
2026-08-25 01:11:25 +03:00
Aere Network
edfc637ebd Point 29: one command to run a node, proven from a fresh clone
run-node.sh folds the four manual steps (apply patches, build the fork, load the
registries, set BESU_OPTS) into a single deterministic, idempotent command. It
verifies the genesis sha256 and every registry against SHA256SUMS and refuses on
mismatch; applies patches 0001,0003,0004,0005 on a pristine upstream checkout
(0002 testnet excluded) with a reverse-apply idempotence check; builds with
installDist; starts a follower with the correct BESU_OPTS. It holds no key.

The registries a from-genesis follower needs were missing from this package, only
the code that reads them was here, so nobody outside could cross block 13,014,000.
Added them as public data (Falcon public keys, validator addresses, possession
proofs; no private material), byte-identical across three independent validators,
with SHA256SUMS and a provenance README. Secret gate passes.

Proven from a fresh git clone in WSL, as a stranger: built (BUILD SUCCESSFUL),
idempotent on re-run, started, loaded all three registries with verified
possession proofs, block-0 hash equals the network genesis, and synced from block
0 with zero anchor rejections and zero stateroot mismatches.

A real finding this test surfaced, fixed and documented: a from-genesis node
starts into the genesis validator set N=3, where the published seal schedule
(K=3 at 13,034,000, K=6 at 14,961,456) is unreachable, so PqAnchorThresholdGuard
refuses to start. The fix baked in is the guard's own documented remedy,
minSealsCeiling=1, which relaxes only the seal-count floor (a proposer-liveness
property) without weakening the PQ binding: every anchor still needs a valid
registry-verified Falcon seal. A validator does not set this.

Honest limit: crossing 13,014,000 was not reached in-session because the two
public bootnodes serve historical block bodies at only ~7 blk/s sustained (ETA
~19 days), and syncing bodies from validators would breach the read-only fleet
rule. The crossing rests on these registries being byte-identical to those in the
Aug 15 import proof that reached the live tip.
2026-08-24 20:48:51 +03:00
Aere Network
05192bcf9c README: nine validators (seven until 2026-08-09); consensus is classical ECDSA on every block with a post-quantum checkpoint every 32 blocks (>=3 of 9 seals since 2026-08-14); live height dated 2026-08-19 15:50:43 +03:00
Aere Network
ac7c0adaa5 Precision fix 2026-08-19: the three-seal anchor minimum has been enforced since 2026-08-14 (the schedule step is at block 13,034,000 but an emergency ceiling held the effective minimum to one until then); anchors universal since block 13,889,296 2026-08-19 15:46:53 +03:00
Aere Network
b7669355eb Correction 2026-08-19: the per-block Falcon quorum armed at 14,050,000 is retired in the shipped code; what is enforced is the anchor certificate (>=3 of 9 seals every 32nd block). Patches 0003/0004/0005 regenerated with Apache 4(b) notices and upstream headers visible; 0004 message now states the floor fork is active since 10,141,734 2026-08-19 14:14:57 +03:00
Aere Network
d0cb9ca298 RUN-A-NODE: the import proof is no longer owed, it is measured: from block 0 to 14,088,211 and following the tip, 2026-08-16 2026-08-19 12:07:40 +03:00
Aere Network
600a716070 Patch 0005: the import proof was attempted, and it found what no green test had
A from-genesis sync of a patches-only build stopped at block 9,189,161, the
futureEipsTime activation, with a stateroot mismatch. Two causes, one patch:
upstream bases futureEips on the unreleased amsterdam definition while chain
2800 isolates it on Osaka, and the fleet activates EIP-2935 history storage in
the same fork, one system state write per block that a build without this
patch never performs. With 0005 applied the same node, same data directory,
crossed the activation and keeps importing. The fleet's optional Block-STM
wiring is deliberately omitted and the omission is stated in the patch header.
2026-08-15 16:07:02 +03:00
Aere Network
54f6ffed05 RUN-A-NODE: the build recipe is measured again, with all three patches
Pristine d2032017, plain git apply of 0001+0003+0004, installDist exit 0 on
JDK 21, besu/v26.8-develop-d203201. Stated next to what it does not prove:
the import proof against the live chain is still owed.
2026-08-15 13:30:15 +03:00
Aere Network
4fa48bb41c RUN-A-NODE: the genesis fingerprint in the table is the published file's real one
The table carried the hash of an earlier derived export; the published file
has been the fleet's byte-for-byte genesis since the registry-binding commit.
The line-ending caveat is written next to it because that is exactly how the
wrong hash survives review on a Windows checkout.
2026-08-15 13:20:31 +03:00
Aere Network
a70d06fef6 Reunite the two lines of this repository: the runnable package joins the anchor
The published line delivered the anchor (source and patch 0003) but had lost
the chain configuration: no genesis, no run recipe. The unpublished local line
had genesis.json, RUN-A-NODE.md and the measured claims, but predated the
anchor. This commit carries the package files onto the anchor line:

- genesis.json restored, byte for byte as the running nodes hold it
- RUN-A-NODE.md restored; the basefee-floor patch returns as 0004; the anchor
  section states plainly that a build without patch 0003 has not been shown to
  import headers past block 13,014,000, and that an import proof for a
  patches-only build is the next thing this repository owes its reader
- bootnodes are deliberately NOT published: today's entry points are consensus
  or origin hosts, and this project does not print its machines' addresses; a
  dedicated bootnode host is the planned replacement, an enode is available by
  mail until then
2026-08-15 13:18:55 +03:00