diff --git a/.gitattributes b/.gitattributes index 0da0d92..fd635d1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,5 @@ genesis.json -text patches/*.patch -text vectors/** -text +registries/*.json -text +registries/*.properties -text diff --git a/RUN-A-NODE.md b/RUN-A-NODE.md index 93e2318..024a245 100644 --- a/RUN-A-NODE.md +++ b/RUN-A-NODE.md @@ -11,14 +11,56 @@ is a node nobody can sync from, and the bootnodes section says plainly how diali --- -## The three things you need +## The one command + +If you have JDK 21 and git, one command verifies the genesis and the registries by sha256, fetches +upstream Besu at the named commit, applies the four mainnet patches in order, builds the node, and +starts a full node syncing chain 2800 from block 0: + +``` +./run-node.sh --bootnode +``` + +That is the whole setup. The script is deterministic and idempotent: it refuses to run if the +genesis or the registries do not match their published sha256, it re-uses a build it already made, +and re-running it re-applies nothing and rebuilds nothing. It holds no key and signs nothing. It +configures a node that VALIDATES chain 2800, including the post-quantum certificate anchor, but does +not PRODUCE seals; producing seals needs a validator Falcon key, which is not in this repository and +is not required to follow the chain. + +``` +./run-node.sh --help # --data-path, --p2p-port, --rpc-port, --sync-min-peers, --no-start, --rebuild +./run-node.sh --no-start ... # verify, patch and build, but do not start the node +./run-node.sh --sync-min-peers 1 # on a young network with few reachable peers (Besu's default is 5) +``` + +You still need a bootnode enode for discovery (see the bootnodes section below for how to get one +today). Everything except peer discovery works without it; if you omit `--bootnode` the script says +so plainly and stops with instructions rather than starting a node that can never find a peer. + +Everything the one command does is also written out by hand below, unchanged, for anyone who wants to +audit each step rather than run it. + +--- + +## The four things you need | What | Where | |---|---| | `genesis.json` | The genesis file, byte for byte as it sits on the Foundation nodes. sha256 `361709dccec4e9fc85be5aec33b30b58a55dc53424087d84c1ad11bd1d944c24` (of the published file with LF line endings, exactly as `curl` fetches it; a Windows checkout that converts line endings will hash differently) | +| `registries/` | The public Falcon validator registries. Without them a node imports fine to block 13,014,000 (the first anchor) and then refuses every anchor block, because it cannot map a certificate's seal indices to validator addresses. See `registries/README.md`; sha256 of each below. | | a bootnode enode | requested by mail for now; see the bootnodes section below | | `patches/`, `precompiles/` | The Besu fork, see `README.md`. Needed to sync past block 9,189,161 | +The registries are public (Falcon public keys and validator addresses, each carrying a proof of +possession and an ECDSA claim; no private key material). Their sha256, also in `registries/SHA256SUMS`: + +``` +006b1b3fb814ed84622539160956263faca7c0b76585c22f2e8acb926c0bcb7f manifest-13014000.json +23736b7d4ba1d3213496f8b5a5f756d5c958b08efebdeb1329b24d7dfa45fb6e manifest-13600000.json +c9a215d294e106f69fb2f16e3af21f9787523969e4b7260a3098f4b2cf458059 registru-2800-v2-13600000.properties +``` + --- ## Which Besu @@ -107,8 +149,62 @@ measured heights of each run. --- +## The configuration a follower passes (BESU_OPTS) + +The Aere fork reads its per-node configuration from JVM system properties passed through the +`BESU_OPTS` environment variable, not from the genesis file. `run-node.sh` sets these for you; this +is what it sets, and what a manual operator must export before the `besu` command below, or the node +will refuse the first anchor at block 13,014,000. + +```bash +REG=/path/to/aere-node/registries +export BESU_OPTS="\ +-Daere.basefee.floor.forkBlock=10141734 \ +-Daere.basefee.floor.value=1000000000 \ +-Daere.pq.chainId=2800 \ +-Daere.pq.anchorBlock=13014000 \ +-Daere.pq.anchorInterval=32 \ +-Daere.pq.anchor.maxSeals=9 \ +-Daere.pq.anchorMinSeals=13014000:0,13034000:3,14961456:6 \ +-Daere.pq.anchor.minSealsCeiling=1 \ +-Daere.falcon.anchor.address=0x5214F0e53899Dad805ef3AdF0624F5e49d2a5EB5 \ +-Daere.falcon.anchor.block=13889290 \ +-Daere.falcon.manifest=$REG/manifest-13600000.json \ +-Daere.falcon.registry.history=$REG/manifest-13014000.json,$REG/registru-2800-v2-13600000.properties" +``` + +### Why the seal-threshold ceiling, for a from-genesis node + +A node syncing from block 0 starts into the GENESIS validator set, which is small (three +validators). The startup threshold guard (`PqAnchorThresholdGuard`) refuses to arm a seal threshold +at or above that set's QBFT quorum, because a proposer at that set size could never gather it. The +published schedule reaches K=3 (block 13,034,000) and K=6 (block 14,961,456), both unreachable at +N=3, so without `aere.pq.anchor.minSealsCeiling` a from-genesis node refuses to start with +`AERE-PQC-THRESHOLD-01`. The ceiling lowers the EFFECTIVE threshold to what the genesis set supports +(`quorum(3) - 1 = 1`) WITHOUT editing the published schedule, exactly as that guard's own message +instructs (`--Xaere-pq-anchor-min-seals-max`). It does not weaken the post-quantum binding a +follower checks: every anchor must still carry a valid validator Falcon seal that verifies against +the registry, and its digest must still bind the certificate under the block hash; only the +seal-COUNT floor, which is a proposer-liveness property relative to the current set and not a +history-verification property, is relaxed to one. Real anchor blocks carry three to nine seals, so +all import cleanly. A validator, which starts into the full set and proposes, does not set this. + +This is the FOLLOWER subset, and the distinction is in the code under `anchor/`, not guessed. A +validator additionally passes `aere.falcon.key` (the signing key), the `aere.falcon.attach*` and +`aere.falcon.validatorCount` properties (these drive seal PRODUCTION only), and +`aere.falcon.forkBlock` (a per-block Falcon rule the shipped code retires at the anchor block, so it +is inert; leaving it unset keeps the non-blocking baseline). What is above is exactly what the +IMPORT path reads: the registries (`aere.falcon.manifest` loads only together with +`aere.falcon.anchor.address`, so those two are registry wiring here, not attach knobs; +`aere.falcon.registry.history` carries every earlier registry the chain was signed against), the +anchor-validation schedule (`aere.pq.*`), and the 1 Gwei base-fee floor live from block 10,141,734. + +--- + ## Start it +Export `BESU_OPTS` as above first, then: + ```bash besu \ --genesis-file=/path/to/aere-node/genesis.json \ diff --git a/registries/README.md b/registries/README.md new file mode 100644 index 0000000..bebc116 --- /dev/null +++ b/registries/README.md @@ -0,0 +1,59 @@ +# Falcon validator registries for chain 2800 + +These files are the **public** Falcon-512 validator registries that a node must hold to validate the +post-quantum certificate anchor (see `../anchor/README.md` and `../RUN-A-NODE.md`). Without them a +from-genesis node imports fine up to block **13,014,000**, the first anchor, and then refuses every +anchor block, because the seal-validation rule cannot map a certificate's seal indices to validator +addresses. The refusal is deliberate and fail-closed: `AERE-PQC-REG-BLOCK-01`. + +## What is in a registry, and why it is safe to publish + +Each entry binds a validator index to: + +- `pk` / the row value: the validator's Falcon-512 **public** key. +- `.addr`: the validator's chain-2800 account address (already public on-chain in every seal). +- `.pop`: a Falcon proof-of-possession, signed by that row's key. Proves someone holds the private + key for this public key. +- `.claim`: an ECDSA signature by the validator's own account. Proves the validator asked for this + key, so that whoever writes the file cannot credit a seal to an index they do not control. + +There is no private key material here. Falcon signing keys are never in this repository and are not +on the same footing as these files on the hosts: the registries are world-readable, the signing keys +are mode 600 and stay on the validators. The repository's secret gate passes on this directory +(0 findings) precisely because every byte is public. + +## Files + +| File | Bind height | Keys | Role | +|---|---|---|---| +| `manifest-13014000.json` | 13,014,000 | 7 | the registry in force from the first anchor; carried in `registry.history` | +| `registru-2800-v2-13600000.properties` | 13,600,000 | 9 | the nine-validator registry from the set expansion; carried in `registry.history` | +| `manifest-13600000.json` | 13,600,000 | 9 | the head registry, passed as `aere.falcon.manifest` | + +`SHA256SUMS` carries the digests. Verify after copying: + +``` +sha256sum -c SHA256SUMS +``` + +``` +006b1b3fb814ed84622539160956263faca7c0b76585c22f2e8acb926c0bcb7f manifest-13014000.json +23736b7d4ba1d3213496f8b5a5f756d5c958b08efebdeb1329b24d7dfa45fb6e manifest-13600000.json +c9a215d294e106f69fb2f16e3af21f9787523969e4b7260a3098f4b2cf458059 registru-2800-v2-13600000.properties +``` + +## Provenance + +Fetched from the running fleet and cross-checked so that these are the bytes the network validates +against, not a local rebuild. Each of the three files was read from three independent validator hosts +and produced the **same** sha256 on all three. A registry is only meaningful if it is the one the +chain was signed against; a fingerprint that agrees across three independently operated hosts is that +evidence. The digests above are those agreed fingerprints. + +## How a node uses them + +A following node wires the head registry through `aere.falcon.manifest` and the older registries +through `aere.falcon.registry.history` (comma-separated, never pruned: a node syncing from genesis +verifies every block ever produced, so every registry ever scheduled has to stay reachable forever). +`run-node.sh` in the parent directory does this for you. The exact flags are printed there and echoed +at start. diff --git a/registries/SHA256SUMS b/registries/SHA256SUMS new file mode 100644 index 0000000..024fae9 --- /dev/null +++ b/registries/SHA256SUMS @@ -0,0 +1,3 @@ +006b1b3fb814ed84622539160956263faca7c0b76585c22f2e8acb926c0bcb7f *manifest-13014000.json +23736b7d4ba1d3213496f8b5a5f756d5c958b08efebdeb1329b24d7dfa45fb6e *manifest-13600000.json +c9a215d294e106f69fb2f16e3af21f9787523969e4b7260a3098f4b2cf458059 *registru-2800-v2-13600000.properties diff --git a/registries/manifest-13014000.json b/registries/manifest-13014000.json new file mode 100644 index 0000000..994e7ee --- /dev/null +++ b/registries/manifest-13014000.json @@ -0,0 +1,48 @@ +{ + "count": 7, + "formatVersion": "2", + "chainId": "2800", + "bindHeight": "13014000", + "0": { + "addr": "0x4bf6f91d84b37454544279cba152581ed6820044", + "pk": "3b946f7ac3adbb6b49eb1426d60f07725a1b9409d472c9e8ea47a8e4ba38bfc773de905f06c51860d4e83eecf5f5621329634c3d9061816305c1fc89d55ba937f97b6482cd055895c8b4864b549ca4bb197244771d0635828882718142fb6800cbac04bd6005e3ae582f7e3ab704471877faec7aa6e1e96d1912a6e763f74dae69c2ccee323c06e5515fcc6880a2d96935220f50ac5bb02343fd2985a1b3b78f0a8548abd6702adc2e298bc113dd37411454286c29ec5592b963fae4bd7042fa6877e2363fd03c9a95e97da50144f02690d0b97ca332d14f9332edc0b0c5e5b27279569526523034d65b618147d267fdc5a35220091cca00b7456ed9bb1def448f4105bded1e79e1e34a6de8bed08a24383b954d47b3df5d1d8ae8b5e8592a92bc80b4220a7c0bb123cba55ae14371ca1716282276416c82772795ab0191c2562f189700469714ca5500b94beb23ad45a41ddef1184eda4d06f4286da21c0fdcb450e760d84401968a4e0fd19dc49bb1fa0bd79be005d781a4f19d5c40e71a4e6ab3ccf4413bd7f922799d28554f19609d7e4746e6519c8d029a1a1a548d369498feef77438051dbc2e024ac08220934dd42264acc038beebb5314f198589b211a81d8f1ef97e41af8d9b0de9fcc7b645cd80fc72c8c255e34495c51a060628205d48a11f9992b3865d59e692879a9ea9c6af9b831986e852c2583f35b1ef9aa55d41b1d18dd7162aab0ff4931476092f9d7e2f078f44ea2d0da699d362b8a0de3f140640826788faf7c7d4c0aee4b88a14cde9300a7253ac6c9b8de188515720f130a94673465e0f1e84a501b6c390b2ae84ba44a449320de37b26520e12988a11911465afdd2fc9b161965d3ccc15a0559930810104a6e40d17f629cacb8fb3973af0967c679a7d8c93b8aa833a28d6ae975913d0096a1416d79779c00052b2f19f479251a76264084552e99a76d42cc8572dd2573de7497472bc096e29cd7b81a2c1e8c20688e84245a46e159080bc976d98581b7a1023f94a5947cd244ad487b0193a62cb799afd30a8bfebb6a23ead4da7d2c7993919913583deef2311da82a924594d11f1e337b1ebd4364405c0cc88f57254261441d7a0b416492af894a9920e2c34cddcae506e16581b977e978150402663246b709bf9a4a0264050c4c972d86258d40eb8a046755ab187663109ad0aeab371f798b503c2ae73da67c5b8069dbaf06c0b6af28e0007dc22a766fdc3e1a87439258e65a701d8098d474", + "pop": "391116f21d1c25632456dc07484168b582e8404245936ff15409b34fcbce6b80c17c229d64c444d05b117eedd10408a7549e06cb505ae75026bf85f4bcd1b9450b98a0f19c62046b8cfcfa129ec55a2860481842a1b35dff45ef49b4747129690bdcfc3046a745a4e7679def13b50fe499375e093952a01a818f4193e757f512a2434ed76b68ba6a2d26d1b4891062b5915ab46ece68ec1a95216aa1e848ae260694a779e7a8c2f8677f9b5a2d14c28d7472e39b988f0b0b986c95180bbdbb9ab5c419084ebdf77ff32d058be7e20d9bccbcd410741539b744d158746d85b546fe58618640d18e1959e32c0e1bcb31588cfe7749855da0e98f6af3a4fd5291169a14b39e0d36818821590a2a62c0cbcb64553bb1fc3d908b5d67fdce94957d174d21d21ca8ec526ace28a6f90163b094edbd0676bfc4ca4c9b90dadf123f3c83c73f91edbac73197a329e9395db561d0d685ca98e72eadcb5fa28448a73a1fd5474be8c3949d9556c18aa2395cc5534ec3f3cb86fcdf49f11076d52435f5b6699aa86bd45695416e64f56e36783b3d7937d1a06626884a2f44241a94a76eb8eb9764b8abf02629121936276ba938703ddb67a74d0a468b452a6678146f228b9ad2b58c4370cd4de9fcb9366e2f20a61cf72e67132dace761356d7f583da14844141afb2ed0a10c448e098cb961d60afa6d299bb81942f8e6f27556bd66dfdf0db194247ca6bee40baacf634d92cf6c2f4686dd5a84308b863616f7c4caf41d0b815da5092d7b1f20cf8f66c62ab7e9158eb5d3d8cd217b4a9b19356850e41263e8ef2dd88d6c54b5ead803432ca94206de0b7f68c90b0c9df7744f1e30c4160c08e1e9a899f279c4c9436b52d6279b5c4a983a5a536d9cf5bd177467e28026cf677a11e1f46e6db218eccd9f57dde8", + "claim": "2a3a676d7e9f0cf99770e9b42923b7e4d64244b015cf166df453a8b1e07a01e14eeba6397d2d8e83071775b42631d4e9d205a0d49e0344fd3ed4cf33ee31217501" + }, + "1": { + "addr": "0x5f50fc4e1b129bbd5e6e9f80c57680b0b4a86eb0", + "pk": "1125a8c8ceab68078dadd35101e64ac8fff297aec01181732a50ed24098c5106cc1acebc7ab349380a595c7207f93e8cc96aec66e74a5ad73c0d9658e450776448d8b7f6901e8799525b6bafdc0401bda562c5a42e7e66f67ba1645c70f9473769ec01d01239f9d26b6134abe28fd2cc361852138c657455657bba806c37a1eca1b5ef42f4a498a987b7614f41a99752be9e640804d4fb74db16be5e9b3b101f20b37264a31b5efe4b5d2388cc92dab1c82218e24de139ea69e51b9d7f5e190691e6d20626806686939b7d2e593409532d4c465af2b5c8848f298ea7601fdddf2f5c2420b7e02f8bac6273da2b2c91b24e4329dc1c42640b00455ddd4c040b9accd0a90d993062de6e1f82618d523ac0d5b80d407689cdf05c100a758702f60e395df0525a7d0421b1e2bc60c612b89b945765f0b251adc824d9a6a7c4ff48761f36350de36bc7de94900ce4e91486424d1a1901c45abaa1188acb4e45f4bf61753b41287e73ea33213c153b661032e1e158db1d12d5532a0387870ec896e5267e6d290d53850cbe3e4d12ab5f0ef223b6e307c34c9285c122f75090439d152d466f49012bf9135860468886c954a574212d438c99013a878e9295b44686187b92783ef22c53aa95e2ac84d143a1b20e1ef74fc5ac39f2e03566871a42e67b340455da2922ebd9e4400b17a4f1965764039bd864e278d7b5a5a1ab600ea6edb0512a932acc47186db7f0cc5d429e984ec1b4af06747e1e09374d372d65b9c9c9540731d6e5e9f54005011570d3525eabb3c0c6056aa3522b9d3246f818834fa18cdb069807270ee3e6b30e945d0d9009444b303a50f7313d800f11020d49b80d27696a3519e1145b62f678d0206dc6be78cd321459dba0f444e96ea529be49b0d864d56ea2368b60661bc259184154722c1332de5593a5e29235569936210ca761cd9518de96855c328a517c8f4a6a3cbb75ac1f0a6834e9e6ff4d426d22b547ecc88e1ab45d3678481585e1ecba71a54421c0fd83dccc39ad0e4764366e740a482ae8ee05f22f541ac79c48c57eda102288836b3b6242334e96ed85ca3790d3e40ebc859778b844503c5c8a97980ee347294bd9606f226831db0aa40250bdb073312baaa92a86a31770469b7fe041e33f85a40a34f1071aa3ad4af426619fda690e6e60a3b8534c63e080438a123f97fab6f0b66c677de4ed35b65db81fca0521dc99b20e5474466412ca5151f6497893988970d3684f90d95b8283e8d040a5", + "pop": "39f5000f94992d07037c37b518e89cec504a9e67255380bae96fbadea56523ee3e09d98702d629d6d76945921801e63ee50d514aa1dbb81c065c9c409356d216942b1ddcf486a66d354aed7721fcf3de3312bd4c0be7144a73673574b8b0b11479a3c19984558ecc9b36ecac270791ae6d93279a429d5da76e35253941d5ae0c19c1ceb4283366d45ae93d920f3df5b916477b7f922f3c7b1288dac5e832e9035befb6a00aacd6238cb3ba0dd75f29c64a4db221b593e051ba7e5f788164e29bfb19d88be9135d966f050b71a854bd1a1d83ab304eaec12f7092220b4a287999379ebbd28ca10c122ad525b5e952d85ea7723779d087ca94346dc452124ecb78f7b1f25ecc510a47d32abd53ed7ce05427c308dcfaf7e6e2ffb6c6f09019032cba5539f1e23da526e3051e5a50568b5323a56f2c5cb39d5a41ab6ecdd725e5450f4fd30bc89cbab506015e61a7261eeba0731c8bd93c668308b742a1c75670f6c1310c4217b97c5350b5e711254f112dc6bb4558b34014a6757dc89bf9c44a371edba3b78b059f53a4a2cc5a44eb3f54ea161a9be11ee73d3a54059891a776845ed518d470358df661944b1c9787c1ac20aaffb2b71c7b2518547ecac6687148d34ab4b05cff5f8f7a4487c3655d451749c766ffb2fa5fe9ab86ef42a461b18213cfa3fffecbca15911b081a790253e41aad5c54bd31a4efcb12f660130582deef3ae53f64f955a688395ef8a1d82d634daa593c0c734d203a98aca4f14c8351b9297354bff45686ec54d0358a43dacdf3c9077eb0c9e1abba02828ea52d92a8a8458e4d05085214866d22605a24c05b2e2a8c29108861ecd33c01f08d1e78eb132511e9ab14c56914c9618e5e1eca4648df334961ea8f067c8c40ea5b6a7d4c8f2b2e535e8da19796262997ffdbde78", + "claim": "0af001cacd0d40b367c39c151b2d205d230b9fbaff7c6440a185e915d7e050947509b0a987d3114b09d7122945cfd0010ca34473199eae0289b6fa0e1f3ecfc901" + }, + "2": { + "addr": "0x97473985d04723299559f49b856effb47d7abfad", + "pk": "8cf6831a6196601d69c0db2725e6b0c2ddf4179d8c2eed5bc1e46528a7f9cd046199a53e8e6c127d6dbc35d1a0d0450f6f660dd0a22debe45654788a5b8ec849aafcb2a0ed8345bae07a262769b1a8ee57ac92f496b8ad4082ea0d8f7cdbb9a52040b59dd0f69a9206bd9e48aa41d1852c217cb885a4238e6234b5bd2ee5771a3eb2e70010056438744fd85b4a74d5f080256d65789967c0e0c835a12a36f7e12c32f42107514374220d3a19fd9bf6570c6a53596cfc035024bb9fd1aa67182060f2e8c115a66376d445d840b92b44105d376af967528561cdb18d9492d15c6d7dc2562b310fca6cd1d7da395fb6684467b5451afd1a485aab16af8540247df46be18a78d9840526e7b84bb48c45fe8bbe2f8a43149c04403326ae48b99e684d1d30201fe904226cc3c453dbf407ca84344e882f47c1d32b93597f958c1642d39b23402d8ec498a529534eabf50365f4845e68b34d89d8910c5024dac2208e8610e5aa536a0048d0c62b5364233e96b690124dbdca104adfe8217e3472127c15a8a0ee55a99a29af316ee18460e9440f6192664fe0a36b191d5048eded163ef0e0b32a1b81767672bf13d6b881ad6833500c2418d2f65c530b100689b5f368956a92175425cdb0b2fdcd0346c73f148545d463c99128a859e64f0028447286e7965b58374023b94804bf26a56b88b55feb0b0de8243cd3c1aad0b12affd69a9661829bbbc823264edb8084ea4a71212cc34209af973efb92d0d591838695b91b44da5a88a71a1b0b2c583951584a13c872b007167edaac130aa9fb2386a66f7c83a887af6a7100e9c80e2770bd4d9a535ac7c40b78ffbb148bdead7a6631824bff5da6d781a50310bd827cf0345d8c2d15060995824f98ca752154da4441f17e0739999854eaa6474067ceb026fe705aacfe0c1cb23a192f4d38404b7651a9d416b139a4ba0e7191289999fb41127e2937997fe39f83a090a1d15fb27e689ab7fa9254b79d0321966cd4253c50c197886a7f35209421038d81bc8b66d124066f78ac80936dad17c0cd653244e80771abe442d2f0905da80ad50a3a994cfd282cd7b727097fa444aa384e090668ff174b86e8b072b0c938bbbd9f416b0d9f1a742421a7443eab4a0d66298764016168f5630f2f840a3744d4dce2af0c41f094a3ff6bb57c6af71c03a255939be159379c66fb0bda9a5bb47ee375aa6f9943447ee2cb1b916c0458bbdbc4dca2497c166e586c70b9d47a53ca74a5793537430dc7", + "pop": "39e2035ce0cd76c333e8583aaad397344cc4566aaaf5a708e509042738fcd97041b98f323319d164c600c6f177de968cd1272671c1dd9b434efd6fb8f894c91f4a312543b78a431f9b6439d628dc1a024f5fea521f9b124b50e05b21bd62219cce1e1f7630d4d31ac8eb7fcb7fa8fd49a2648021b4584395474f99766bf2d3b812d26fe45d23a44102766c3483bf6191b2e55539c5dcb0c479747e9246998b489cd6858d254b1a725e1d0823e396aa3c12d9925f3b6c55357d8662d824a85af3aceb05549e23112c3ce35ee833da7cbe7fe3834ed068545108c18abc269ea6e8d504315fd06a26ca1eed458110c2e7b00f9b491ce9c2f9302cb44af34eb83a1f747d4e7f19dcebfed8a449a65945c17cb6ba0778f5c6dc0d153919583332c8a42ca6f5de56ff81509b359134a22e6b9a07290879930f1b9d7c9bd6d6550cd1fb193fed7ea246707f1ea7ceb9af9bf4a5c4ddc1d3bf084247aadef35c9b1495d7c6d86e4c1319b7cc3bdd2d9c5cbdecb64ac5c7edb156530519baada04692a06beb397a41297df5de4b42418ba93a1cbcdc525cc9dd30747bdea941dd61bd7cfb879e819ba3c5ab3af35d15ccf729988c7528c36258d389ad6bb7293e44d39a5ae108e4ce2486206625c3d3bce12f9cb4e4d6c978baf7c1eb2ac96f4b9fed43680cae0c4f71cbbae8f5f109bb70a308b9052831a51746f4bb359e531cfc37f4244a878f7bd0135b9a30ea2642a5585272143601f8f23e16c6e68a9c89fe8f7ba2546b3a967e8948b2b0eb13196d9db1c4c31f0e6b9e6c28d130e904895a8463b4cbc3aafb9ec7b367e8577f94edcbc472da0553058374f00c9a4bef7633555ed93ddbc0ee9074d29175cdb73c7d16a59cb47ebb85d775b1fde962e154b0d5184ebae65e98a6812b72150727f5c75a5324", + "claim": "c6cd8cb888cce26c8f4726270be52138430a4a1583972509ec8980105bfe604a55469ddee595607faa64391f0c7348a5fe5effec367870697e5f101589f8131601" + }, + "3": { + "addr": "0xb5e768cb3117ea25175f51aa956b48691025c2a8", + "pk": "b991d68a909506b5ec27a59c86a2b0b815f1fc8d60a9224f75f40b8b4fd0a73885821d9982e7f829dbf24a824b1a85292145807041d10005944d107b70cf9636a15765096ed8a5320797415fc709456a85bb47037279d692bcefee14ca4284b9495e0eb80353461c10304d8ac592d665aea90f30b2ca0331e84b0139a4c98e3e47bb48d616198ea14b8b2dfd77453b4065c33a2d4daa44976ecc4d440b772f43700e341c22e146026e75de104be7fdbe4d95a52cd40997eda2a0092a299b44d4274ceff272c05abb0bc59607249be4a58a0093f2fa34c14957250d5bc4ed23339d3a2d0750a77e14e8d107324ed12938c592071335bcc165ea62009145885bca6e2a6937ec815af86c670d2abb119488e2056689090623578b9ec28108654c93806ee0d664e2b7c53146fd981b65b177e8de61fd8f3a47987e6ae66221241a68e64534ca22351c8990641210851fe997b669f848a891337bfeb0faa42e88bc406741cd943685512ef7bfc65440e86340dd96b57408cec4d1648550129fe838e201a86164b081055926b6fae0b6e5f65a65eef5061d6d40681c648c9aad426927134bcb2e38ac7b63e2120a97b21007d553db0dc64be0b2ca1a2c6449c6f9873496b49973af9ca1514e3217fb0608aa3d82246f55dd6504a8c8ae0ad1a634d54bc1c1f0bdd008332817f25ddd700244d68c0b6a8f480cdf90ae1ef1a3a619961bf67c7208697151c2af54fad43471de38739cd6c4067a056587542782a422325a174db998c552d5c48095a0ad555d8b784d32c3645ac4d099165071d662ec365587d954e7128db6cedbc3172621d58c1b242d4a202841374c126c2e80a8830d570301717936b2c328ac7ec61379a7bf1b06be385162ae0c8139d25b010bbe166f1899299862acc316ba59a6313a6bc6a10f590248b2575e243f66be6d62b851bd685413535894e2ab09f2519290bc3f701d52e2518276621df409172f3695e628580432ba096327ce4efb170ead3701c899a7e84f00ac926e21564cf0a78eb662f5df31c2c57540423039b12f402ea20135a62d3c4d90fac5ad8096bf7ec667e919a006ba518a49187744122f783d12ce69a1bcdbbcc486b4e9d2f81c6bd09839a5902e575aba9ec4c81629e6b3e480d74f81aa245c546185542d8a2c1c39942a6e1c6a32f94a8d201eb85b6230e9dd16cd03827eedda829e8f35e6049e9725fce18066a77dae2456c62c82790629494b699a8d648a853eea8d322dd869005025", + "pop": "3901b22ed9771f20c0b0828c879b5416bc214762fb8e3b25ab145898fa86c5a5e44ff04e59189a3b1e979619281f050e6f8d434872250a0af1313252b613f89fa21ddc9ef73c9eb3b8ac64db2989256b0d25a66a5503e2a6ddb34a156519afba73091e14de350d0147b16939538eccbb42f86499c3ab1f87563fd75cf4344de505d25042c4ad0c615152e2feb3041725799d7438c41a3b23cda81b4c1da3db8c29875f7d30cf4ee006dd62b4af44776f85ccdc718adb7d58565fd4e6f8ec6bc61ddce2aeba19971122c21a92b9c4476d0f3f01b9e697c32ec93315847ab5f0c7a9ad1c45c26a139cedd1d69743ab6aaf86c7c8c412a7e3d685f71cf204f2ae505e12deac2dd219bf4d8c1ab5e1b44326abacb0a0d6acba1f2a079a90fbc9f1e957564d53450766c75c8f954cbb379c27269e3b719bc112029f7eb76e2abee4f90a39e98e1cd13169f4299d35667a2ac8240e8631cc5f9cbc8101fe40ba919e314ff047ae0d3e1cb2c861d0f427a8c94d4c679696bb2f85c27f7a8ce72babdc5a08ebe11c3e5e99c8a152e30e948b18a847a2582f564e3c5469e8fae986e72658397b78bfc4e7192d4116cb44d908eeaf755388780912090e290dbb74c2761b554d1da3d77c12c839166d8832c53b9855ca9da086a315bf2482fdb7df4b9d29cb5fa2d52909d7751c8fb458684915ce7335ce93bb4794b0492efddc33566c470a353f85cde5e5fd505e2f75edac69b9789bd21c43a033c35bc3e02ce6df20a045252c8c2e5752d8c46ed26c7a3648dc5d6e0e3e853d57e7e5a47efcd54dd7e581f9530948a3cd2d709425216f5be49e5ea71c7dcc66eb4db86e4ec40a4442dbd69e12fe663e0e9b004a5bd70f0ae14c4ced9c89d7208648a161469342dd62a8eea47666f3229916e968c8189479e4a0a204", + "claim": "7520fa7a23d424aa47c467adf4c55725a3a64209b206f67000e73ca069819d1b5aae39f959584134d6ef8ee85bcb7f143007cc83e9f4fb0f186be99d0d65a12f00" + }, + "4": { + "addr": "0xc3314fd768bb68b986e80c0a14175f6f72630d7a", + "pk": "6e9ada38d7da61bb7062c6812dba3954f433ad08157ce4e9d340c3bb80d6b9b1d1027cbfe1514b2a9e5266da4757f9536a3efccfe15255baa4f48fd442d9c2731d8c63a29f936c1a6908f96fdd393dcda5ad19b81b1ca5c4472cfca358bf1566eecd9e3082dac612c158cc3788681f5f0868ec68a06cb04621465a4fca948f7e118352813e5d2138366c97296dc15649c99394b1bdd0e7969f913c255d694a989d75b6499a7c19bb1ce46f313e6a2fb6f4faa7ba63e4814e3348f7ee68bef4b823486dd6baf6f5b847a48b78bc1003bb125d3b26aaa9694a026c75da351064ff868061a78543677db940eb33a4636baa3e756948d61845dc43c04595427a6e9568a216b50eeea2428d82887931632a5a1d33803b392ed142bbd5cea9f619ce563a3c7b35d2f0a7709ed1e20edf0754f3f60aec60b329c0f51b2ecea714d079d2d4ed5f58a737feabee9c26a0320157147a3295a0eb00399eec3bb82d0a33a9e18789496f4e4d6dd6f29f106eab227336b49f688f95b33398c5489f5c32033cab2176749445c208500778e3955bafb2521628740896a9525d85d61aa2220379f8bbe8a16c44b45652d9ae7b2bfd3664a2a64133edae4b4edc930c64e6d99f97d707fcca1242467c9d0c71c441e59073e0d879e3af0529fdaf99eecc7c5219ec66d2c61c8294bd90dd53a21ffc0b230c6f6a89142336478c1179d6ecd91881d85e1e6535c1692979f217883feafc45b9a539834f0b9d74554901a8b83835c983fc43fe41141281c5234f02d50ea5f7a774a5d4dd9b8aabe902d2d0659bd1773bb62a5b1750a75f24ae7ae492cf2a5469563ad5062b4592037401ac334d8f6b2beb46a8aee678c11e98503e0be846dc5992e43b2019085e2872baa217547855e2d5b9984073b020b5224b577352c1a4bb900d8f5fd974c2c027cd633ec0c08ccae82134453b720a67b78e5d01f617343d81fa0864d6b0b1be09d35f1d707b688d134c4b82af9eaeb8908f40b259a8334c04a5223074638a82046cfaeba392c21f58f0be565492958f6282baf64d98a0d6af810490705136d1d1fc16e43b4668c9cb4fbfbf58d943ce5de56fbc5e44a684990b7df050981e559dd9d34a3fc4962b1282a15e63ac0e85d8d5794cf15a94c9409be98e9652e59176689d153214f2c6d011aa41f5709e536e267a9c897a10dc61081e012c51a2467464023c1dd870091db16b54665070a4db581cca14bd3843c3d42e907ef1f7c053d0a535a4d4f92752", + "pop": "392621a1e2bb24f4a12c64e2b2335e1e18b8ade582d7d1e4005fdf355e105460dd837b7a6c5f51088a9940f0368be61b35064616fea62a4deffd3f79d6b8ab20fbb2e1ed88acd794f4ee4a31752ae71708ca3c8d746af586092c72c537e078246d7eaad0cf121376689c749cfec403188ce2b9bda552652459936f04a5c4aae608ce3e68bc377f77371794a0c790ba1e7f49539a9f6397d93b262489bc7718245510b1552f16fb3ea95d943fdc5926d614e173b965c6a35f19f45322e039e790c0c0e55ead714dba312d22b19e46aa8c159b5b2adaf891fcbad7babec30661107173eb552cba31ad7c8104c7a519835f73fdc657a725533b7ec986304e2cffb7425dc04cf92ed0a2e7ad9ffb44695183612f9256fdbea092e56ac1fd60a1967d6afb05fdb6ad5992549c1443d1084a50bbeb47f59fc4c8e9c0ab110e7b3dbdeed9748ed3d679599ca387b2f620939e0398c9895dee21ab47d0cc3dc73e637d786a3adbc8991de5cb577990f11af48a0754b6a635c9a910afa1be52a25ba08e014cc870623e19d97db0bf4c623c70875f28d93730b2006d598d4f04dafb71ff443df89ba1abdc4f64600f8ae93a494ec664ef2e70aa4b7f9cb1f2593af373c056fa5c8bb4b70784c5426448645dab67bdca57330ed82bf503e2c8cfd1e2c7f76bb0980104487b35f571e55bf73993b8500a321053743759142133bb71f84ac2c59ef666384f4262de5f7c537eb27dd4e746ed9f146e695fadc82c0a638b0b7daa69bbace33312b588639672e6d8febc8a258f3ab321068337e7e6681a34c4bee35fc8f193d2dd34c50b797142a2cb7ec94353a108efe7b3727c2791e7c8b876ba1332958d53d16481ece11b35c3f9d2f1f1b00dce0cc74a566204c79c52e39c4d31703b299ce74d38d2fcdc3a324c0659", + "claim": "9cf806af0ec3d002e2023064b245a9c77b84a1d1d5e2fbf69eb0353ab48a432f0d6554a4cbab6ed3e715164e33791cf5305cb2010bd85e66991444fe2d11232101" + }, + "5": { + "addr": "0xe13aa491abbc1252dd714e7ca0e55717a2143eaf", + "pk": "a2b859c229911277f188666a63981fc25ea2b38df500cc8851ccee2f467d0fb1f8aaf84f9e757b7b5db61479c1a6a196677ff6d46779ef8d910a78604f04d8591c5de80ad1c32422ccbb3bc71914cd159001a2c78a9a00480fda69321a6ef54104bd0d1a1b8764d537b5909c107dde111786d5c6b943f52a06bebae81ed7168066aa0723ed5de103d0880994341828d3bbc78546b5e602cd842baeb162c8c099bf1112bff3f3ccaea4cec0ab5b4cc276a81351cc692d463cb6e1c4573036f1d07adad56f0210ee755c474614cd7ac618afa673197716ce24cb041225e4c72062873c8da49d13d11b70e05a71a35b384a90e95290735d9cf1ba9d0eb0abc5aabb728ad13d6cfa3ac2819411684629ff07db9306d6f5c52ac680ba31a2e1e41b1cf0f1b6d190ed3ad00470cbaeff956e7da446016360b515d2da9dad49f26a274957e45a6948843b0ea49c7995403667885a86f6f116e52eb7701615b75dc75801f5a5855c5e1b262746ed991aaeca6f3b9b59ab0406baa1e74a33617dfb6b54afb796c1d2299be9aa68b9bbd71c212f23909466471f8b04a5801408929474ce5304cd87801d01e1e8ff1d2b0842f727bfc3611138a3431e12867bcc000147238d659c7e241703444c26eaa6a161883a91e4e0afdaf39cc57d38615fccb1edf56a2adf1e401df1d5100467ac261772d695f29be1b3113a2a6f8e48f1b47380b97651a852b2c5da942a3ce92d17db15a669a4eaad2f116a25c4beaf1f9d72bfe1d665411c28041761d0960f5d3995e86fa15906195b2a1d163dae8e750b1a5c06b5fb32092b0ea47501da5e6d9a5941d82b5704299ff56e49299ec82c62fee9828ae56bdd2a90eadcdb94fcf2963d02349909dcf27e02224120d6b66747dbafec302bbc6b166e5eb3692b55a35495b15af063bb746d8c99c5c81719d42efb8d851537f875f6deab96b5860f26d6d0b036aa62d8f744692f256093f61f9e2e669f87feda1b60ded5d0574c521860665472ea9d44b1ba317d12e7b5480aa449c6d55f70d7a4341c22560a037b30df071f36573793efd2b098a6138cd74265e0493b71a228463c00a0260e0cbddc7905795261980edafbd3d30a0102ed9bd9e99630116341ef583f387e9ec5f9a6ba035e33d6b6c96faa9e27f6420a952496b540badfed26ceead61d590a5eba9f329ca9a5a0d562f4d0137f643128e6ee270e175c0ee0f5e68c03cc05338f2dc481723857fdc42d9134b908ae43367fb2601355a326", + "pop": "39ace3d53e6e33b8523abf6d522515bdae29a971d44d2a7a21f4ea0d9494eca5ccec4c92988b8d77636bd5bba397e64c704a9bab445c5b141508dc6ceb30ff967f74b96a244fa13c432d1f7247e63cf17719e7731de904393e45d7fb6700591de6fe9e99e9326809c393306361f4b3c806663337e11c3f3d751b51a9db171f7334189feae7c02c0b090965f576dd9d108274a10a6134c76fa44a2e1b191f475a8d24e7225063c7218ccd674d2433c372f771b867611d329bdd3b829f2a7c5895b568acb4cf3e9e7d4192c431acdf1713e69f962c9b00d0aefec906bf43753071affa6cc022e841d1afac056da74c22bd18ecb12fe96f943d3cf1f4acb61de43e41089632e9b45d60609a358229d7dab4b4bcdb0570418a8f1a3dc8cb7ea6162db2b17ad0deca36a18f94a099352559e68b3d6246956a99aa8bd4eba13fbf3e1696ab9956116b65f066222d49aaece015afae6f7eb66e3349fa048b9dfbea34b75357db7a6b3f21ae07ae0899a0b1bd5fada38cbdc91c36ce230d07cb0eb1c6524d342340a4b58ba7a5c1bee2859e307998147a8d9afeff6d15ea65e2f6c4c9b63278f51ba7d6f8a16eaa73f9a5b7db9e4c8214270c9109657f5d9d7d0fb4ced4c81287c74c9d1f1af978cfa5598d8db55b201f86b5ac3979f6405d04c697bb2ea91246f920ae2607bd844512c3a988829f43370de1597dcc21a8df355235aa2ac09c5ca330c61dd4f31e18261daa88b330fc5a479daacefbb93c03d982f6363a6396fa407b8efe5d3c7238c84cccdee5e6f8f503090e578d0d8d0e4e50f95acf28b1182cfb4c9773654dc9914706c19977135631c589ceae237d9b20d9c6254ce8902a8372e3c3d55a140b53af8053f5ff7c319a24cce917cee66ea6751612fa663f0b2972d179fc1fa6d0b44b0b34e020", + "claim": "a2b999cf24a5bd218daa1a606b1acce6835cec77e673222220ecb83c09d734bc236b7c3057d313bf834370300afbebb41aa5424c316b21e27612e158b7ea022a01" + }, + "6": { + "addr": "0xf73bbbd26a82dbc769066550d8d4585eab2fc00d", + "pk": "ae79ca93fae11c333ca673090a4b548553614bc1ce7f6aa2773e17b972caf48a07efb416581422605f12400494db84accd432c148168db7794ecff419e83d4738d98f6b0de8f0d742902359aed104a1582cb8ef976965502c28bf4466efdd9ae0350021542a563c9ad2c22b7b0da1f5cb832c5a54d58284ed0f172091dee7be8f94bbae38a4ec0a7c1dca67ca50de962ca09ecae9a66d227841b2c66cb8600a1f01fe2d48be3c64999d1f8236762983a80c3a58fedaa0bd09e3912223b4415cde3fe63d70a62acb564cae57b3ab760780ff26c422d6675920eac389b91659aa3738a5055a76a9046f443ca1c101da8fcca37fe0be18fc9c6851706367cb65f035615d3150acbb738c66eb6eacd7b9a1b03b06e4f046f8615754d85e69d262d8674e8e82052bdbf753591474488488c714a066592718dbfe08d0b91bf387d2b9ee6a86bd0bdf96082fa523e5b6851c27723b99af0aa0722b185d52440c9c82a2a61d6729ec27999f9019f071e9852e813c0ab9318e2cc791a6e7203c27ad48a68ed1385319985aace0112e17999c80662b12a135b5e1a2c9067d5e06d0b33f5a691b65e2181b8b7f389a364543a058268a97c20928b490ceffe1520fa52d143a495941996b527712beecb17786f982425a8ea6cea000f191226855eca65f069782bd777baf11ac781a5b77492e2b69c039903c991259b92a93d18fe6ac74e064370f3dbbbc5ad82b478648ccff8ab45d133b1853a1d21d2e7d525027b2d9740bc82fa16201fb16318da37ec6494c9ddd1af864ef8b50b266f1227134a99c40d8571879b8a660964f6217ca41c6c0435056e5aafb494f4763984a55b196ba4e6691c57a66ec82b886e3e9da601acd9a2ac3584975255ae13c2781abb2a089e423c36cea35126fca8728a82a9bb8dfbf1ed0795a46a83c22945b08f6c7048e3d5f3bc7874164ca39b05ea81d9f75e778cea8b01b1c19a8a5e89991419cea779aa49ae6d562d38be70784def475ca78a3ee40e86de917557d716b008a0819410625ba6d3603b53ce821d1cbc0009dc4d518e025c246e5b6904196e22667a9df22192d22195ccb2694e0cba7fd011553081520d24f53344d5da90299c150b968f7412d51a638bb853d52065e49ae471b5cd979b11953eed2ea89c2d1366a48a664502a96dbad1d8e527d2064d5885cd510898880110cfc7ec002de2029e02516682b953a88fa72b00c55632415e9b52eae8640d866d4074880443ac6f791270a208d2", + "pop": "39a25eeb486016683ed131f7bb6601c5382d88ba69ff982d0d9b5283f753d6dac3b905a443828b414743d25461c8a6d969cac62b8b0452e9b4a8e1b0f5fc3e8ea6cca853999bb4754877714a484a1c4189de5e303f12a72283ef954e11be46f61693f551b7507f18ecb19f6a73d0d77b54de4d357337a21f4380792384d1261cf4b71bd6668685f4515daca6e49836283659204c6e9085f7b93dca234a892699f21f44d6fdfad5d81aee142689217c99ef5edd42957a70c77dda7f6591ad2de937836b61d4bc631b42c090e2aec11fcc51f0f226ae79bd529291d2aee52227e226a05a3f307618401f2598a0ccfd1c496305b9bc366db2637e6a76e86b52f3c19b179f30d694c9a697692a904509daa8adc418a2f345a54392beea878c6c330f945f70a4313b69d22ed62d931294781e57bf1500a1e05e7f7634f0289bd4f165329724b338c570b2a7b1d6fd8866e643097d94445aad0e4ac42214b92d3b9a2b356530a62916f3a2c6995b64da3f6ff6879850b9e2d9bae15c30a8a2931fddaab589aa9b607f505fcee713955930e64ece44ddeef6e5488cbccf41b8bd64bd4d12113587e7d3184185a32ad4dc2f4b0e7d50ece40090e4759d4a40907772fdecbb3ac799e53db1b3cbe51cf21ee491c48a1bc8e166ab0793db8a4458fc98e9ea1a27ef80ae6063cbc73f17a332e46d208edc3aba796b893da849f24ccf691394c970464e0e388c12a912471ab3896751ffbb6a9945e43e8c554b4ba64bf672dd02e497c57f91556fba62aa89652d7065e64b4c3e1b914ece5c49a55af2b00a9e84d476bcbcac155a6883db6b694bcd4d7dbb4c8aadee3b63d3726bd8d474b4cf6ad01426408619d435ce2ed0a846ccd73b68ecaa8374983f184f429883bad814e0a825f0e9bc5141d9491198210e6aa0", + "claim": "544c3943786f34719faee1a3a5253af26a6c746b643a546dd625fabc8dad992b61dc05d59d72e581bef313be7843c919acee98a383f61305d0bae30f6574c53700" + } +} \ No newline at end of file diff --git a/registries/manifest-13600000.json b/registries/manifest-13600000.json new file mode 100644 index 0000000..1831bf2 --- /dev/null +++ b/registries/manifest-13600000.json @@ -0,0 +1,60 @@ +{ + "count": 9, + "formatVersion": "2", + "chainId": "2800", + "bindHeight": "13600000", + "0": { + "addr": "0x4bf6f91d84b37454544279cba152581ed6820044", + "pk": "3b946f7ac3adbb6b49eb1426d60f07725a1b9409d472c9e8ea47a8e4ba38bfc773de905f06c51860d4e83eecf5f5621329634c3d9061816305c1fc89d55ba937f97b6482cd055895c8b4864b549ca4bb197244771d0635828882718142fb6800cbac04bd6005e3ae582f7e3ab704471877faec7aa6e1e96d1912a6e763f74dae69c2ccee323c06e5515fcc6880a2d96935220f50ac5bb02343fd2985a1b3b78f0a8548abd6702adc2e298bc113dd37411454286c29ec5592b963fae4bd7042fa6877e2363fd03c9a95e97da50144f02690d0b97ca332d14f9332edc0b0c5e5b27279569526523034d65b618147d267fdc5a35220091cca00b7456ed9bb1def448f4105bded1e79e1e34a6de8bed08a24383b954d47b3df5d1d8ae8b5e8592a92bc80b4220a7c0bb123cba55ae14371ca1716282276416c82772795ab0191c2562f189700469714ca5500b94beb23ad45a41ddef1184eda4d06f4286da21c0fdcb450e760d84401968a4e0fd19dc49bb1fa0bd79be005d781a4f19d5c40e71a4e6ab3ccf4413bd7f922799d28554f19609d7e4746e6519c8d029a1a1a548d369498feef77438051dbc2e024ac08220934dd42264acc038beebb5314f198589b211a81d8f1ef97e41af8d9b0de9fcc7b645cd80fc72c8c255e34495c51a060628205d48a11f9992b3865d59e692879a9ea9c6af9b831986e852c2583f35b1ef9aa55d41b1d18dd7162aab0ff4931476092f9d7e2f078f44ea2d0da699d362b8a0de3f140640826788faf7c7d4c0aee4b88a14cde9300a7253ac6c9b8de188515720f130a94673465e0f1e84a501b6c390b2ae84ba44a449320de37b26520e12988a11911465afdd2fc9b161965d3ccc15a0559930810104a6e40d17f629cacb8fb3973af0967c679a7d8c93b8aa833a28d6ae975913d0096a1416d79779c00052b2f19f479251a76264084552e99a76d42cc8572dd2573de7497472bc096e29cd7b81a2c1e8c20688e84245a46e159080bc976d98581b7a1023f94a5947cd244ad487b0193a62cb799afd30a8bfebb6a23ead4da7d2c7993919913583deef2311da82a924594d11f1e337b1ebd4364405c0cc88f57254261441d7a0b416492af894a9920e2c34cddcae506e16581b977e978150402663246b709bf9a4a0264050c4c972d86258d40eb8a046755ab187663109ad0aeab371f798b503c2ae73da67c5b8069dbaf06c0b6af28e0007dc22a766fdc3e1a87439258e65a701d8098d474", + "pop": "396e2664ccd6ca94f76fff588a59dadacc08cb9215a90a0d9220bb260e80e1dad4d10acd3b29253f3e06f33390f58d1ed78f3e9d4a363a060a7cfb43318b6c2157f03e70173b054a6fd14fcb8f98b2e9e1a65caac4694c2cbbbea5e9281a3c34f1e5feebac690ddbf76ca5b3fde81b8f2a601c047feb69a714cf74da3eb1b3edff7afd2b8d0c015991134a6425c63aeb39ce298bcd927cadc47f7ec7a113cf9223b0b1a2272daa8f6505ffc387d0f58cfebdcc48b9edc144373abcfc8dd6bbc4119adb9b0272dbe696bd2fe79335f750c5933d07f23b6864993f565748edb929592e73fdaa56212472e4274e22a6657ccbeb56cadaebf69a221326abe9a0acbb618c4d29d89af1b6552cb1126b1d611046b2fb05a94b395d6468ffcd272f254be05baede5c4a53c9cbc91746a748fcefafc8d1909320ed8a47345b9045fdb575f76e451999519996522f53423cca2b245272ddfbbca77b4a32475d56506d090461c2c9f79104070d682cb1ec9279ced0c9ccacc896e1d20956793947068758c21a3f618f902488ce3f35022b6f3e46e89e51b71e4c496520f9063993133e255754d71a1635769c25fb1351b2a4a5b28f3979e3f1d15dc08c57e4ceba14b860c867e5b09a08377fd32bb3a39b4600db7c6068059f104bda82aa44ed6b515cee321ce95e3d6ed462191eebb0a0eff3880b3d0a54503c0b626ca2a8d3170575a5e77a1ee99ec8392ee95b66aa0efa3aa46d0bfb61182c5e5571a05967ba89ff3e2c87e59947dd14204c3cce9d82f9db9fff9caf1ae6c80a6f29d1d0b50ea49e0e85c288827a9554c9aed550e8d4ae2fa70f332acd94ebd8f24f315a72a37d48364d4b1edbc455be63f5b848a2a9aaefe64faf32569e06d3d52b83ff377d98d802819993dbf1d76ef21288b4be6d7a2745b8a0", + "claim": "368969e111970b8772d0b85540de5497ac036e4e1b30e6dda7e8778ea26ed2640519161648722b974dd94063e7fa14d351bf906d7ee99a721355aa30f206ae5f01" + }, + "1": { + "addr": "0x5f50fc4e1b129bbd5e6e9f80c57680b0b4a86eb0", + "pk": "1125a8c8ceab68078dadd35101e64ac8fff297aec01181732a50ed24098c5106cc1acebc7ab349380a595c7207f93e8cc96aec66e74a5ad73c0d9658e450776448d8b7f6901e8799525b6bafdc0401bda562c5a42e7e66f67ba1645c70f9473769ec01d01239f9d26b6134abe28fd2cc361852138c657455657bba806c37a1eca1b5ef42f4a498a987b7614f41a99752be9e640804d4fb74db16be5e9b3b101f20b37264a31b5efe4b5d2388cc92dab1c82218e24de139ea69e51b9d7f5e190691e6d20626806686939b7d2e593409532d4c465af2b5c8848f298ea7601fdddf2f5c2420b7e02f8bac6273da2b2c91b24e4329dc1c42640b00455ddd4c040b9accd0a90d993062de6e1f82618d523ac0d5b80d407689cdf05c100a758702f60e395df0525a7d0421b1e2bc60c612b89b945765f0b251adc824d9a6a7c4ff48761f36350de36bc7de94900ce4e91486424d1a1901c45abaa1188acb4e45f4bf61753b41287e73ea33213c153b661032e1e158db1d12d5532a0387870ec896e5267e6d290d53850cbe3e4d12ab5f0ef223b6e307c34c9285c122f75090439d152d466f49012bf9135860468886c954a574212d438c99013a878e9295b44686187b92783ef22c53aa95e2ac84d143a1b20e1ef74fc5ac39f2e03566871a42e67b340455da2922ebd9e4400b17a4f1965764039bd864e278d7b5a5a1ab600ea6edb0512a932acc47186db7f0cc5d429e984ec1b4af06747e1e09374d372d65b9c9c9540731d6e5e9f54005011570d3525eabb3c0c6056aa3522b9d3246f818834fa18cdb069807270ee3e6b30e945d0d9009444b303a50f7313d800f11020d49b80d27696a3519e1145b62f678d0206dc6be78cd321459dba0f444e96ea529be49b0d864d56ea2368b60661bc259184154722c1332de5593a5e29235569936210ca761cd9518de96855c328a517c8f4a6a3cbb75ac1f0a6834e9e6ff4d426d22b547ecc88e1ab45d3678481585e1ecba71a54421c0fd83dccc39ad0e4764366e740a482ae8ee05f22f541ac79c48c57eda102288836b3b6242334e96ed85ca3790d3e40ebc859778b844503c5c8a97980ee347294bd9606f226831db0aa40250bdb073312baaa92a86a31770469b7fe041e33f85a40a34f1071aa3ad4af426619fda690e6e60a3b8534c63e080438a123f97fab6f0b66c677de4ed35b65db81fca0521dc99b20e5474466412ca5151f6497893988970d3684f90d95b8283e8d040a5", + "pop": "39ec0d61382825bb96a0facd4dd5b7b3961fac490c9cacb7344c44e33ca00950bc02eecd992b31eb8194760cdc157a7013c54facf5b6087a9e91f3eb9926663bcda5c6b2e93dd362cf99b9d452336cca60502c868b9384a0cb7ca72796baa707829b3579e606fd0e218d8619e9facd14071deef1e5dcb943d2b25c258a4ce52e8396c3b39842a90ae4bdd3839b952573c69754b612d92c34a88d3486269b592dde368598d6e69f99d4c04c3208d160bcbfc97a8148e9b1e41ba9a02592197eff95e7a54faf860d662e5dc67d39c3c4c9fa5fed47993af66b65a0399a490907e92af60688cfe9df09e64afea5c9cd6a4cab445a0220c219b9aa7689dd3c4a1d9a2e8fd17eef466bc95a6e5054655af0c29c671a8c736d555eca6266388deee11a739a78cf0516701f7ee7d7e08b67465f80620fc37490930e2ad6356570d00993e1cf531cf8df0633c18d47e48767e19acd9b3758ca55fd7356498763261727c70f824e530532efffaab0022a3e48ef9b924fd6a7db746f0c157d79cef31125b27316952a8e475ecc88d00bac7a1f9f181e3ce9a87f2b318f444d823a1354311c723f0af09a14c83df27ec8bc31f5cb4e64ad1c683aaedb5d931f922b2c53d8b5fe8909f22d8783387c66fd561e3fc28ff7f94c195a7d7dec02a0bacdf5cfe3fc58d3641c83a9538bba295aee11b6ba3b4f93e71563c6f7679f4cb9b7410d4f9141f412faeb32b045fbca33f240d78e2e0976acfbb7bb77057aeec872da9dc40a77b9e260de5e2753cb96ca221c136326b7bc3c1fc45702a56bf6cd83296c4b67082f558de9c9ee747ada1ac7f3a5da1636b92baf4c5e3aa4694793a765b0e744f1496c69163c133c2373ff7a7c7abcb2ba477edc34d7bfa570a8e752022837dd0d6b7b8a27d1479e38f74c6184ae00ab88", + "claim": "a2fda63d2ea63808adbb89c1a095b929372ca456ce4cef1b60924861988feea302b38d827f3f82bd5c1eccb6da44653eb4321908dbdb543ea54d968d1104beb301" + }, + "2": { + "addr": "0x97473985d04723299559f49b856effb47d7abfad", + "pk": "8cf6831a6196601d69c0db2725e6b0c2ddf4179d8c2eed5bc1e46528a7f9cd046199a53e8e6c127d6dbc35d1a0d0450f6f660dd0a22debe45654788a5b8ec849aafcb2a0ed8345bae07a262769b1a8ee57ac92f496b8ad4082ea0d8f7cdbb9a52040b59dd0f69a9206bd9e48aa41d1852c217cb885a4238e6234b5bd2ee5771a3eb2e70010056438744fd85b4a74d5f080256d65789967c0e0c835a12a36f7e12c32f42107514374220d3a19fd9bf6570c6a53596cfc035024bb9fd1aa67182060f2e8c115a66376d445d840b92b44105d376af967528561cdb18d9492d15c6d7dc2562b310fca6cd1d7da395fb6684467b5451afd1a485aab16af8540247df46be18a78d9840526e7b84bb48c45fe8bbe2f8a43149c04403326ae48b99e684d1d30201fe904226cc3c453dbf407ca84344e882f47c1d32b93597f958c1642d39b23402d8ec498a529534eabf50365f4845e68b34d89d8910c5024dac2208e8610e5aa536a0048d0c62b5364233e96b690124dbdca104adfe8217e3472127c15a8a0ee55a99a29af316ee18460e9440f6192664fe0a36b191d5048eded163ef0e0b32a1b81767672bf13d6b881ad6833500c2418d2f65c530b100689b5f368956a92175425cdb0b2fdcd0346c73f148545d463c99128a859e64f0028447286e7965b58374023b94804bf26a56b88b55feb0b0de8243cd3c1aad0b12affd69a9661829bbbc823264edb8084ea4a71212cc34209af973efb92d0d591838695b91b44da5a88a71a1b0b2c583951584a13c872b007167edaac130aa9fb2386a66f7c83a887af6a7100e9c80e2770bd4d9a535ac7c40b78ffbb148bdead7a6631824bff5da6d781a50310bd827cf0345d8c2d15060995824f98ca752154da4441f17e0739999854eaa6474067ceb026fe705aacfe0c1cb23a192f4d38404b7651a9d416b139a4ba0e7191289999fb41127e2937997fe39f83a090a1d15fb27e689ab7fa9254b79d0321966cd4253c50c197886a7f35209421038d81bc8b66d124066f78ac80936dad17c0cd653244e80771abe442d2f0905da80ad50a3a994cfd282cd7b727097fa444aa384e090668ff174b86e8b072b0c938bbbd9f416b0d9f1a742421a7443eab4a0d66298764016168f5630f2f840a3744d4dce2af0c41f094a3ff6bb57c6af71c03a255939be159379c66fb0bda9a5bb47ee375aa6f9943447ee2cb1b916c0458bbdbc4dca2497c166e586c70b9d47a53ca74a5793537430dc7", + "pop": "39be1ee617d60e058ae6d51566dd8d4651d339979c574fe8fe28991aafb30c294a95b7954830445237bb4344a57061997d26e8a42a3d2d01846b09a0e113364abb8b13a926e6e5d35154cda3662d5043a917f2200c2ce5a04473d76683b2a6f41f86eebd29c82632066e3f35a035882b22282bdcf99c7b1166d5b65fa0d435f6eba3a556bfd13e141baefb48a6f8acdc4dba8f5148e282407796280119cd5ea0aa6a8902d0b46a4ce8b3422c543ed2630bc16249723c86f9f8d822b8a9df90b911ef4af4715f9a91537d328951cdebe4552819019f293364cf6f2f1091d3c4c83c9255947b288fb275000c8dd2f27e745e8916b78da521cf4c53c7899793453b5faa4c1976e8de749b8627bf8b9ca644261b20b1d0157a6e60fb542611e678e991baeb07a61d29619fc39a2e5bc56a520e96756a3bf9643678c132ca32c51946626e6613759749ccb31aa3ce7e10f90745af28d31dbe31d669d427422ea0fc19a1055418df64e9eb37fc866f168c119c735950bb47dba6bbe5726d31e8735ca4f988a2026b2370a7937b71436affe64d004fe7079518a2f462397f641de74824deb6e345024e92b553b34c5819c84b0552ed4f5f9d45ca4e8057687c98643ea6cfb9e9691a5527e816a517600c3c7d87146d7afda1298ad1df49d006c865d645013bc9d6514c8edd1e9f4a88620f959a3a3ea61ecf7d5c509cdfd7c2ebe313d95f38ccf1d84472b3f397098c576091ef65f228658f4ba6d6becfcc4d78962b10d5468a90a1d0a8da87d9c9b9079e4b8a70b87bf6575f87e530528306a579112748c248e4290152762af82d526cb026703736c2b4bfd2f96a5fa84afe37cc14d34ec5389157166f1bd1c7a56405238df7180324d6bd9e7f1f56e5b9525964120ac5d061c7891b9593e8452608bfd63a63d040", + "claim": "4629ab23b0d3e559e9beddd8e37671d1993c7d0f07b29be638fb92886269eb123384e5cd5ab18fa3c9828daa6aa99396f1c5ac3ae9f51be80155f2dc9ad7301e01" + }, + "3": { + "addr": "0xb5e768cb3117ea25175f51aa956b48691025c2a8", + "pk": "b991d68a909506b5ec27a59c86a2b0b815f1fc8d60a9224f75f40b8b4fd0a73885821d9982e7f829dbf24a824b1a85292145807041d10005944d107b70cf9636a15765096ed8a5320797415fc709456a85bb47037279d692bcefee14ca4284b9495e0eb80353461c10304d8ac592d665aea90f30b2ca0331e84b0139a4c98e3e47bb48d616198ea14b8b2dfd77453b4065c33a2d4daa44976ecc4d440b772f43700e341c22e146026e75de104be7fdbe4d95a52cd40997eda2a0092a299b44d4274ceff272c05abb0bc59607249be4a58a0093f2fa34c14957250d5bc4ed23339d3a2d0750a77e14e8d107324ed12938c592071335bcc165ea62009145885bca6e2a6937ec815af86c670d2abb119488e2056689090623578b9ec28108654c93806ee0d664e2b7c53146fd981b65b177e8de61fd8f3a47987e6ae66221241a68e64534ca22351c8990641210851fe997b669f848a891337bfeb0faa42e88bc406741cd943685512ef7bfc65440e86340dd96b57408cec4d1648550129fe838e201a86164b081055926b6fae0b6e5f65a65eef5061d6d40681c648c9aad426927134bcb2e38ac7b63e2120a97b21007d553db0dc64be0b2ca1a2c6449c6f9873496b49973af9ca1514e3217fb0608aa3d82246f55dd6504a8c8ae0ad1a634d54bc1c1f0bdd008332817f25ddd700244d68c0b6a8f480cdf90ae1ef1a3a619961bf67c7208697151c2af54fad43471de38739cd6c4067a056587542782a422325a174db998c552d5c48095a0ad555d8b784d32c3645ac4d099165071d662ec365587d954e7128db6cedbc3172621d58c1b242d4a202841374c126c2e80a8830d570301717936b2c328ac7ec61379a7bf1b06be385162ae0c8139d25b010bbe166f1899299862acc316ba59a6313a6bc6a10f590248b2575e243f66be6d62b851bd685413535894e2ab09f2519290bc3f701d52e2518276621df409172f3695e628580432ba096327ce4efb170ead3701c899a7e84f00ac926e21564cf0a78eb662f5df31c2c57540423039b12f402ea20135a62d3c4d90fac5ad8096bf7ec667e919a006ba518a49187744122f783d12ce69a1bcdbbcc486b4e9d2f81c6bd09839a5902e575aba9ec4c81629e6b3e480d74f81aa245c546185542d8a2c1c39942a6e1c6a32f94a8d201eb85b6230e9dd16cd03827eedda829e8f35e6049e9725fce18066a77dae2456c62c82790629494b699a8d648a853eea8d322dd869005025", + "pop": "39b4602846b08ca6db8d14b399980769d05f8523772390259518a06255d76e4a4b35f117f8b3ae5b9b1b9eb97d8ed40b382e31120a355d56092ea5c928ae244f9295ca576763a51621867c62b6689b06896fca866dbd5af5d854e1f6f334d253f760ca7bdce42353ea6cf8528e86e582b0c57e10585366932664b1af9a155a0a18aab48c4cf1458e22adbc3a44d6343e76299d3178e8d0d574313d6be57746623331150b398450d38d89289cc473db21bffde60fe3b7535636ac1cc4ff51e7883df896cb2635e71bcd9b90a4c3704a20a4a57d5b3c8d9e91013c5559bda6feb15db2a6ed894d21680d79209f9cba2f6eb3f06baf1e49e958c191af84cbae23187876ea85e2f4ba713a278ac2e13a0b3e624c287e370e9b39cb7fdd9acc1e5ded9252566f03b172350e01698e5af6f8372dfd754eb41cc2c3dd8cba465636fb79870de5d657b6b37dc2dbb6ea3098151b304110a58d9a73dff5614faadefc33caf682768e71734e74610beda1fdc435bed2fa726bc78f08de9be93cc1c9d67410b1a5824f18f4ba2d39d0463299c2632e81280e1effc15575a0ac91defae5d08fdd625b7171cd213467b4b9725d96195cf78f3b4dd5d85106254bb86adc55016ff34fc40622cd38107b7e30e662f25351e28f31483109c8a0664d9fe97c72285be366b0cd6791e7674ecc69e0b185c91149a0d3295bead53e95ecb4bf5bd529057e23a0515c0aaec189852939d8bd6b4d0a8146d48b2fa76fbc6a3f0426cf2f50a87a1a9f1d099f59ef2f2c17f183e630a7cb87017fb65b1b4f6daca87865d72c49f29094c966d9198dbdc8679d416cf4eedecf9a885c6ff3168ac3dac512d8622e9553712e113c86caa16b4dfd61d01e6abd0177eac951838de45979e8c73a02d66a53ad6416c999c2f7dc38", + "claim": "4e6ce5501d4754a03f1288deed8cd22ac25451a564ca20e43b2776c9b4ae77374ad67cf6459b2a3e8e31bfa38f83cf5bfbcf3afa91f9db157ff65f2342a061e800" + }, + "4": { + "addr": "0xc3314fd768bb68b986e80c0a14175f6f72630d7a", + "pk": "6e9ada38d7da61bb7062c6812dba3954f433ad08157ce4e9d340c3bb80d6b9b1d1027cbfe1514b2a9e5266da4757f9536a3efccfe15255baa4f48fd442d9c2731d8c63a29f936c1a6908f96fdd393dcda5ad19b81b1ca5c4472cfca358bf1566eecd9e3082dac612c158cc3788681f5f0868ec68a06cb04621465a4fca948f7e118352813e5d2138366c97296dc15649c99394b1bdd0e7969f913c255d694a989d75b6499a7c19bb1ce46f313e6a2fb6f4faa7ba63e4814e3348f7ee68bef4b823486dd6baf6f5b847a48b78bc1003bb125d3b26aaa9694a026c75da351064ff868061a78543677db940eb33a4636baa3e756948d61845dc43c04595427a6e9568a216b50eeea2428d82887931632a5a1d33803b392ed142bbd5cea9f619ce563a3c7b35d2f0a7709ed1e20edf0754f3f60aec60b329c0f51b2ecea714d079d2d4ed5f58a737feabee9c26a0320157147a3295a0eb00399eec3bb82d0a33a9e18789496f4e4d6dd6f29f106eab227336b49f688f95b33398c5489f5c32033cab2176749445c208500778e3955bafb2521628740896a9525d85d61aa2220379f8bbe8a16c44b45652d9ae7b2bfd3664a2a64133edae4b4edc930c64e6d99f97d707fcca1242467c9d0c71c441e59073e0d879e3af0529fdaf99eecc7c5219ec66d2c61c8294bd90dd53a21ffc0b230c6f6a89142336478c1179d6ecd91881d85e1e6535c1692979f217883feafc45b9a539834f0b9d74554901a8b83835c983fc43fe41141281c5234f02d50ea5f7a774a5d4dd9b8aabe902d2d0659bd1773bb62a5b1750a75f24ae7ae492cf2a5469563ad5062b4592037401ac334d8f6b2beb46a8aee678c11e98503e0be846dc5992e43b2019085e2872baa217547855e2d5b9984073b020b5224b577352c1a4bb900d8f5fd974c2c027cd633ec0c08ccae82134453b720a67b78e5d01f617343d81fa0864d6b0b1be09d35f1d707b688d134c4b82af9eaeb8908f40b259a8334c04a5223074638a82046cfaeba392c21f58f0be565492958f6282baf64d98a0d6af810490705136d1d1fc16e43b4668c9cb4fbfbf58d943ce5de56fbc5e44a684990b7df050981e559dd9d34a3fc4962b1282a15e63ac0e85d8d5794cf15a94c9409be98e9652e59176689d153214f2c6d011aa41f5709e536e267a9c897a10dc61081e012c51a2467464023c1dd870091db16b54665070a4db581cca14bd3843c3d42e907ef1f7c053d0a535a4d4f92752", + "pop": "3931edae48178015ea9ae47ac7914b8a18807ba47b01c97594f93a525872b1890de7dbf73aa6d65046899f7a2a051079a6dce8e8ee918d1e80742ab18c8659a03fb333109bb337daecdbe6e9bf2d9b18c550e955ef8fba133fb399b928eed422978de91d88212d8a8531e9be4e0a142d52a65a11a2344c4a6712d874736c10aa73507322487d14bb9340c9a87d2559172b169f3e1137b0f0914e29eb89246e86e7f956718f66baebb95b8a9ae505cf6dd2cdccab85606488739884b94a8ee7d7892fba94d73b5b3412e27d25cadea735059964b4410b46ea2f7a85a7340320fff120ceb132b77a11f46d99de2e0640a794b6af0de8f6d064dc1a8e81b6b8b6b21680d58cf9d3c8d01e120e4e131c769f348d5d6d88fcecc71f9400c261eb35420f41cf669286b4f32f9c34fee5b09ed1737a241f37299bb155cca1906d0812f3786b2190faa0f0d2780dbeaa07d1639e442eea5411293762cda58c4cf72da77fc5b9dacaae853a765c37cfc401d5abe5c8e23ac95b29adb6ca34e433a9848a0c228791c82fd366775d897aa2aedebb23e967fb7badc340ad78fecdd6830b018f3a32342d36525b49c49ef111cca9779d01549d2be4911e63c8d4391989495b0ec3c1cb536b6f6a19ee8cc90c85414161d63364e65529486906df20bdd1266a568259cde459e28a17456790281668ab89dffb4f8b6dd92eb6505719548a43758023fa7bb328ecf675ccdb2a7d9545ad428aa2bbc236d055d30c0e069b3ad05c15a9db4838fc56060feb54154f9d09b3641fc4f25b3060886d23cf33689e98eef168eaa619398e45e260e807b9b8407572cd170df1c25f0884471ff251ec318fa26ae7330e1dae034ac1b8d6d69a8d1163beaa078d475e25a816894cd0903ce4c338ff7072316c2e20d15fd5721bd9aca0", + "claim": "9924a7ae89127f8d98563bb87bce744f4e4175c9fe8216814702cd109b1058a01245d7330ad19d18ba96bb745b24350119279735a28db0c948f6b4c093af2df000" + }, + "5": { + "addr": "0xe13aa491abbc1252dd714e7ca0e55717a2143eaf", + "pk": "a2b859c229911277f188666a63981fc25ea2b38df500cc8851ccee2f467d0fb1f8aaf84f9e757b7b5db61479c1a6a196677ff6d46779ef8d910a78604f04d8591c5de80ad1c32422ccbb3bc71914cd159001a2c78a9a00480fda69321a6ef54104bd0d1a1b8764d537b5909c107dde111786d5c6b943f52a06bebae81ed7168066aa0723ed5de103d0880994341828d3bbc78546b5e602cd842baeb162c8c099bf1112bff3f3ccaea4cec0ab5b4cc276a81351cc692d463cb6e1c4573036f1d07adad56f0210ee755c474614cd7ac618afa673197716ce24cb041225e4c72062873c8da49d13d11b70e05a71a35b384a90e95290735d9cf1ba9d0eb0abc5aabb728ad13d6cfa3ac2819411684629ff07db9306d6f5c52ac680ba31a2e1e41b1cf0f1b6d190ed3ad00470cbaeff956e7da446016360b515d2da9dad49f26a274957e45a6948843b0ea49c7995403667885a86f6f116e52eb7701615b75dc75801f5a5855c5e1b262746ed991aaeca6f3b9b59ab0406baa1e74a33617dfb6b54afb796c1d2299be9aa68b9bbd71c212f23909466471f8b04a5801408929474ce5304cd87801d01e1e8ff1d2b0842f727bfc3611138a3431e12867bcc000147238d659c7e241703444c26eaa6a161883a91e4e0afdaf39cc57d38615fccb1edf56a2adf1e401df1d5100467ac261772d695f29be1b3113a2a6f8e48f1b47380b97651a852b2c5da942a3ce92d17db15a669a4eaad2f116a25c4beaf1f9d72bfe1d665411c28041761d0960f5d3995e86fa15906195b2a1d163dae8e750b1a5c06b5fb32092b0ea47501da5e6d9a5941d82b5704299ff56e49299ec82c62fee9828ae56bdd2a90eadcdb94fcf2963d02349909dcf27e02224120d6b66747dbafec302bbc6b166e5eb3692b55a35495b15af063bb746d8c99c5c81719d42efb8d851537f875f6deab96b5860f26d6d0b036aa62d8f744692f256093f61f9e2e669f87feda1b60ded5d0574c521860665472ea9d44b1ba317d12e7b5480aa449c6d55f70d7a4341c22560a037b30df071f36573793efd2b098a6138cd74265e0493b71a228463c00a0260e0cbddc7905795261980edafbd3d30a0102ed9bd9e99630116341ef583f387e9ec5f9a6ba035e33d6b6c96faa9e27f6420a952496b540badfed26ceead61d590a5eba9f329ca9a5a0d562f4d0137f643128e6ee270e175c0ee0f5e68c03cc05338f2dc481723857fdc42d9134b908ae43367fb2601355a326", + "pop": "3947bc4a7a6698d2b7889b89b6ccc1bd89b468001e7f27a031a2fbc557afd233937be4df7a2cf67db99ab234796ae4658ab7b62e3c5dbe613313139b4d63db75d900f5fbdd48bf43211155eb17f5f7be91764ee35915c39d0f4c5bf4beccc8ce8aa59683716dae362fce8fd19dc8c48a59a09a888c990754ee96263a22b9497353e4c6a68dd16b8c839ddfca50bc90f38193ea475e8de7455188d166a9e77eb06d66096674c9abd95473d4ce20b2c409bb86d0f00624efcfcbc3f3737da5128486d3045e8a93a7e34a7ba8b4d1f091292c5469a98799e26ed1eaf3c8ca3da56ce05ff84a39d18d65a2cee3f931d1f65cdf2e9b93ac6171698a6466d42f6a96aaba9092d15de72776fd3f44e399b96f1f875dee2a05a24289412e8d0d9e3e9642d6025b7ba34e163a9fb6204499bf066f27a1df9a4c23573e4f6c3b1e36cb3329fcb184b1dccbb3f6879268b753d357863784bb35f09bcf9dd08a71af8d4a5a4c7573181b299a185b864f9b9377ba6e1db2bb6985d7fc8a9e8107972bb813530a66b5565a3328ccd61416208a10d39a8736ac9c5394b6e168b46ce9adb0f634d762d7d2232f4fbe54e079285c85c19d21bac4af9ada96d56fa4fa392c8e1dcfec51dd28a8c1fa176ff571b9596aa9aa65fb6436ca57f72bab21742362954e6224da557ff2929a078e6ccd3cb755c3cbb55670999ae457513ef85abf07ccf3f4a78de9d4ffce5a647f1e78288d98e43893b421de5165a7310ad77930eac3bb718842bd76473fcf2d683b555cf0bc747cdee76d6fcbcc96e59f2e7d502afa74dcc07047699e79f1cae5762ed5632956e1c175ed5ed47893302c8601859ec0d049a52b08cbb97d46373f1183b724cf76aebc469ba3a0a7c0d9756ac32b51544fece178b9a41b4d25bf49b2d03af0", + "claim": "681a9c3746716b58ed54085ff394131920e0fee87a8970f1395c9a0e61636915580b7828973de824cad866d3aa35e02ea820cf8d2595e6184be077da78090d7101" + }, + "6": { + "addr": "0xf73bbbd26a82dbc769066550d8d4585eab2fc00d", + "pk": "ae79ca93fae11c333ca673090a4b548553614bc1ce7f6aa2773e17b972caf48a07efb416581422605f12400494db84accd432c148168db7794ecff419e83d4738d98f6b0de8f0d742902359aed104a1582cb8ef976965502c28bf4466efdd9ae0350021542a563c9ad2c22b7b0da1f5cb832c5a54d58284ed0f172091dee7be8f94bbae38a4ec0a7c1dca67ca50de962ca09ecae9a66d227841b2c66cb8600a1f01fe2d48be3c64999d1f8236762983a80c3a58fedaa0bd09e3912223b4415cde3fe63d70a62acb564cae57b3ab760780ff26c422d6675920eac389b91659aa3738a5055a76a9046f443ca1c101da8fcca37fe0be18fc9c6851706367cb65f035615d3150acbb738c66eb6eacd7b9a1b03b06e4f046f8615754d85e69d262d8674e8e82052bdbf753591474488488c714a066592718dbfe08d0b91bf387d2b9ee6a86bd0bdf96082fa523e5b6851c27723b99af0aa0722b185d52440c9c82a2a61d6729ec27999f9019f071e9852e813c0ab9318e2cc791a6e7203c27ad48a68ed1385319985aace0112e17999c80662b12a135b5e1a2c9067d5e06d0b33f5a691b65e2181b8b7f389a364543a058268a97c20928b490ceffe1520fa52d143a495941996b527712beecb17786f982425a8ea6cea000f191226855eca65f069782bd777baf11ac781a5b77492e2b69c039903c991259b92a93d18fe6ac74e064370f3dbbbc5ad82b478648ccff8ab45d133b1853a1d21d2e7d525027b2d9740bc82fa16201fb16318da37ec6494c9ddd1af864ef8b50b266f1227134a99c40d8571879b8a660964f6217ca41c6c0435056e5aafb494f4763984a55b196ba4e6691c57a66ec82b886e3e9da601acd9a2ac3584975255ae13c2781abb2a089e423c36cea35126fca8728a82a9bb8dfbf1ed0795a46a83c22945b08f6c7048e3d5f3bc7874164ca39b05ea81d9f75e778cea8b01b1c19a8a5e89991419cea779aa49ae6d562d38be70784def475ca78a3ee40e86de917557d716b008a0819410625ba6d3603b53ce821d1cbc0009dc4d518e025c246e5b6904196e22667a9df22192d22195ccb2694e0cba7fd011553081520d24f53344d5da90299c150b968f7412d51a638bb853d52065e49ae471b5cd979b11953eed2ea89c2d1366a48a664502a96dbad1d8e527d2064d5885cd510898880110cfc7ec002de2029e02516682b953a88fa72b00c55632415e9b52eae8640d866d4074880443ac6f791270a208d2", + "pop": "3922660f4804b28323dce5ab01be86754742cacb2d2a29ae578cad568ce0c36a069af8c3b1525d82fe6fe92e26ff2924515b9c4ed33e50b43dfdaba15e3c0e9384336cdffb39ab440c818c3afae4c4e92968e76efa5473ad33162589ad02f710f7500e109240d83eb24c2ed33f6f9685ed7a94fdc9a595c3166b17da66b45193d4cd0bae4aa9cef7ba0a8a54da786462cd85a0759ca4220ab034dad855838b53c228edce15398ba1acf1586ade9a041387d0553b4d7eb36b46e1229f9cb2a1d05a3478e7775ecf24cc1355fd813f9a3cc666517bb7a8aafa119ec67406e2950b8fe99b56af2eb729957cce6a6677fea49930bdc4f715041d17eae29cd7062867f20d0f74999489bac62fa215cffe0a8a4c93d2210c79cdd8a6497aa4d44becd86178eaa612e5c7bda995eeb938adadd1d1e54b9820d8f76748b7cd92c1f4dbf163f2bd968f2f3a2c91491424221bf7f5f796da2ce48919b7c525202418a56b5befe5bd42cb13cdd7edb856b70cb397c653931875deb6c5c7e0ff08811cd8763edd9a8f4c91340ae6e5a74b1b2cdd95dc7f24e44e2d6551ae3adbdec15b6b1bf54e1f88b9eebebc736d6182d6ad3a0c77d38e86397449dfb266cfaa33caa7c20a9a417ebdc7cba31d6f1986c4985ce1d96c4fc1aa24957543f0c93b64b0731b2efb25ca3a593a764c2006c0feebd599cdc72299e390db05ccc55cef9c7debd0baf5d3fee5ea3f1abda2958b6d0f90ea95892a2990aaa6f7da0666a53598214600829c09ceccf9378e6fabd346268ae702853661dbe3719057fb514587ecd063911fda42fada8f64ba9a6e1c27f954e2b0d9691b7146a16c78927f0202ebfc750815038111a8189dc26be8cf419229457e789132589a6c65dffccd36300f345ddfbacbe37d49dd357bd8590badb480", + "claim": "6a5f446db8033ce9d9d20a26405ed248c85593ce317a49d7a7cd6e3e94639ad678523869098e091dd6900eff856f4d29e1b1e29f456e2d290503ff3853d8c5a700" + }, + "7": { + "addr": "0xdf09b32c761620c5be77da398b97a64f03c3980c", + "pk": "b3e68f6854452ead92a798ea4db7116c6fb4f249d222909490f1837648185d207752134d8830bb9949597b70e7fa8297be87eafd8b7d116d1fece81701e0924d6a745bb64e884a54e1e949238e497868d2bd2960918a07a3cb1100364043d3218d2e76ceae07859de4182c85f7080a6baec87cd2235e908b2ca1a5c2e903bb387c067f2c514aec16c42f1ecf45b2eba63dad3b08a2da6bb6ae485156735261194cb8426fb8d10686527c4567a64195891acd62ba2c368152d2d36c5c24bbfea36412a74830c00135dc21941cea0010dc6d5c14ea61d1181f2db9ece691f151f1976e9a4a375d75964dc3363699f030ca842572c8e322854209f796268bd831e2975bb26f0c43332c2e7c5f5a959a50e7697e218f968e0039664e585a8fd5204261d6d29c287f13dc874122a3c3649169b0e6a2aa3dc93d70dfeefba3aa2970a788112f1c8085802174759594f33fadea69a413e5dee35f8dd13841f29234393a59052787cd8bf4b5f51b8ec26185ef65b788306f317121386a23456a1a64b1abc415d4b4f6281a8074526a19e8dd51b8317342e1de9f4c86a4c7fc90f64d628a909f5b0a2c146fd0b6861165487a75f606536a7abb9aec8571984a90b9b254447df27945cfec9f01ad1e82e54ab3617d22d38d912a4fc93c8bd4154648129bd17818892004605a7a6980b2a54842c5c6be2ca0071527a5b279156983ceea138ed86d93808b732fb492a036088c8864b7e1daa6b589982aca418d73358adb00aad06da91845f80723b4b3903f79f18fca2e3a49e31a21253bb6fae64f08a3350951a454d0fc84cece51f9ca3504d8665933088ca47c2345a744410ada4b41c29639299127c5a38ec701aeccb82a1caa59c0abf4be05bf4d10b119cadb9382f5e785900b70578a3de5659d2c1dee6a5338df1d0b90c293084620b9bacd2602839f75e83aa4258e03be9e541437d0481af11535d4e049b2568190f6cfaf2ed6b2e4d48e8979168299bf96fb192112e99a4589855ad9470a5a8f451e8a61f3eb4a51885865080c8dbc98e71bae8f0c4ab1e15247c79d207a5ad11796c85e6e62733a483e0f022cb05097243e1e61143805cd3ede3cb2640aea3300829821276803d1ab1898401e0196e070b89cfcbbc194e86f49108a45e01bb4a3dc4bbc73a05b5d1a674a9d28b16958812d4ca7bcd475b5e99957e9ee4236506d33f5179e6f804b59db5bb81f0a94500a668302599121fb67a62a4dc56048029c907d226bfcdbf3", + "pop": "398f3d3900e8f3360dc56b9c672ff214b90694d4517b3eada26d2dee11314490adbe600759bbe186542c8fc27b6b56e36b28376d98e0b96bdbe0bf28f7937068fedd82690e5e384b9705f2fc47b5ce632a92aa48222e843b798809c2cae6a2854a0913476fa68281482d3c5c928742afe84a2ff29338eeee528814ed7d6f4d1b50d8de39fb0ef6f3252047287dc4fbe0b236d7472e11128479eb2c148e331ca72af9fd3192e3a13a36565ab2f2724ade7524280928e6b0fb6bb492d4b1eea78fcce25abf5519f76e22e56ed0a186c331113d63bf1d3a8f220246f2fcd60094ddbf9a2c444ab1a789a8ba9f1f4f567511860d6d4ed8737683d20835de947f9b96d6827824abdec344e00d7418e7b2bdd58b711ed2e226d23d926cc6626f579ce214f950223b34f628689aedd45ae0cb1fc914b50bbc2451246dd8be412e9a1d20b6d4d3b6e989d2d00475fadf15f496675cc021b8ecefd71a4d8ec451a1cf772bb31f4320569c565134bbb48ff7ddd15311be25e30733fd244d666abcc6ee4ce2bf30494a268f17b69d5c1a16b67f16dfd8f0b6661c6048caf394a7860a576ee790ee66dfc138833ab9199f12268b509776cfb587cd9de8b4fa66a86ab197bc9366cab16e6f29b57ba02fd7223aa2cc579b7515d3bdb33cff7ce5d4a98c121db7361909391d2dc656247ba31071bd62088cab454fe65d715db188775e66bdfc3bf339ea3a76598521fec00f2a0eef651a2d11044ef8ce66b948e970fa293d2b8d02c11cf58f0aebfd3c7ed22eb146b1ddfeab7110ba3338ec5782e1bc8cc70a10cc1e1f4a15eca6334cf6b35fa26d32da9bdcd471b50d461c80238c91dfc99f8a1bcaa16c9c643f253c943ebf497e63cf6acf5b6f7b967139d3c8345f9a97d5ef8365b44739e7493106d8801091a7f5c0", + "claim": "feeab3b9960c07f94214c6e1b7e93752d777c5b70b54a4f397b4fcd08b9bb3145a8adbe7191e449054dacbc624e81cfd55327bd8ff1a63589465c2c3a42ec1ed00" + }, + "8": { + "addr": "0x1bd5514286f5602a6762b0075266379d29af1c9d", + "pk": "820cdb49fa91e522cafe7550a586b94132cae78b762b166f6bd819a1a25409c534a0846a6173d047cfbc67f518518f1fef1c0ed22a006ec77175f78b1ba5240ec600a721e7c8444a770bba44fe186a5edb2a8078bd55b823ab4fd0b6991748d142dc710691d574d4f64768167776ed9559de1dc6a466c5103585602f0bb21f2a85b1a76fe9a27ef5d5e6eef099d255c841ee8a12481d9bac050955e049398e228a8bf63013ee4a504a7c50573e65193872fa271f58cb848205112b29592d9222c6242e581ca10bb10ad04852f276182a1db822d63e66926b9b2229b8551a06520f9c89828d053864dc6717d107b9660ac6f5ccdc5696e013774f28a050ba02b787c4801139f33445231b87d44bb0ae5a8b5b16dd08ff174221f51e00bc4ca26712d6d2bbc03aa918cb95f999b23a4d71c1846ad5ab887f71ac294f42359d33b9aa6421d604b1e81eccaaa9ea7787469a68541103cf0a3b8234efc146cab85f4900f9188eddb6e00d68eb04debe0afe14572b1f924de61b610daebc7e7c20b18c97787448e199a79d5316e9b8c2e695b3b030335dcc60927d8d62d6526a4fba58763992605508ae16e3efd27a861d1796c0a6b746d4479c4fbea6f51597c9aa2062e2b8538dd1e85cd5350095472852e15d09b68ba1572c466555616134c8caa3330974244d3d31d00d256b654f92bb5bad3d75f668e69567263c1ae2e5ce6a2a218468b1c02c89f971e474efb8b59283578443f79e425a06e3ed7c344176db59e899a180eef9e0a5440ff4570b385ac700cd7fa290940b9201c56aad19e584ee08a19b4e38bdca2c38ebee649c404495df9ea22cae49b48767eca88e9e784319598688df4223ef1890450c597b2519044230a209488a56856cd1890045967e12006acdb128e4121614a1fd5996df927b6d3d60a84bc362cf4044b5243569639c19821adad4c4e09839a1789b82e9051cec285e611d0ea0170703e5f317496dd0ba0a330ef00bc7e70911463c534be4c1e8296ad5a05256a72712b9cb31d5adb0b4e8c5f89255211d1d41c121ce7d80f1132ec33b91494cd7c22378b3bce21b689d24a9bd933b68aaa917a8df5bf9513014897fd66d9451b62e30fa7c09d5116a11c5f2a9bd21ba718362a40484fe6b93f76c1008316d552bda724634edf50b184eba5a0c1413c17e5b82b16762629746fa5302b352c525e97bc189593e93adcd4430684d2c0237117611f615edfe21c8a4b531354925e7638570bacbc3868ae7", + "pop": "399c665dfc4c5a84e8660b229cfe2a8161e7affdd52ccca8ebbc9d191ac3f11e6540419176f45b2f5e02fe61ec33d485c555e399e197340758845032713cdae695629f8ed40b8372b89c1ed629d0e136b39670412b7b42699a6fe6455312edb7b18daa07fcc9d20d9a5fd2671f25bd5ab0912472c1c3819059ed37b8d7f85b88a0edc2ae55850893929bd5533840741abe7d31358a775242a17272fb71f5e3db158f66ba58d650f0c3fbff7a4726455624c4e58c364e2a3aaed4b94b0d2f3a8a757f4daf7faa6e79b9c9414e5e4c818c71cbf6d7cd1cb92cedd94693c08c312bd3e2a29b49fd8fd16448572ac61706f1cb936a1f29d87d1bd1b1d92dffa5152f428ca77f5ac672e65c210fd52e08e2ae48327f6591037c20d02c9a39855a273e36667bd0d3be9306293888e625343e9c4b23615d389c4160569d652f41b666e1ca690742d05aa405b5bc6f628f13c18b67219fec8cdf90c3d27547719ddab4d4cde7ad8ac09a895c0693689bc5529c0c41b41f8f33fdcef4e765e24754a425914b7ea2684eca04ce678d46fccc768109c107baabd7cea3f88843a14fb20cb6ae0a13dcf25bd37c210cd5aa1e63cc5cd582326ac3a53fa2e3c693529bbe4ba470ffe5124222b8c33aa60f74f85ca177f207e975dacc770b4c9911b87c15caca406c91af7faf41103a2d31aaf2d5644dc77aadded8689aaf723499d3abf76de284c3d0b2ccbe78fd4dcd23779988facc290b452496b45908aa16a5498b6c5858a27da36d25ca977255d9dac15548ce0dc21da2238c15245e7ac973653241f290def8abea530b855644d23d1f6548a4ee76cb975988235d97d518de6b9b266d8c6451ba75c7e74811f7c9652e0e56a48fa44cf2f6eb159ad4b21d8ad91078d251bbfaf7bf2864d5ad25bd9c14e1d1e171d184", + "claim": "022736cb764b88fee04dc13d648b88e9763c6f68197ff114d8a6127b279248f01ab20c20e680d35540ccc30d07aa33328c800187d96a88f8389113fa1807e70600" + } +} diff --git a/registries/registru-2800-v2-13600000.properties b/registries/registru-2800-v2-13600000.properties new file mode 100644 index 0000000..1120200 --- /dev/null +++ b/registries/registru-2800-v2-13600000.properties @@ -0,0 +1,63 @@ +# AERE - registrul Falcon al validatorilor. ADDRESS-BOUND si LEGAT (v2, D-146). +# eticheta : REAL +# construit : 2026-08-10T17:31:28.615510515Z +# chain-id : 2800 +# bindHeight : 13600000 +# +# Fiecare rand poarta DOUA dovezi peste aceeasi pre-imagine canonica: +# .pop Falcon, semnata de cheia randului -> cineva TINE cheia +# .claim ECDSA, semnata de validatorul randului -> validatorul A CERUT cheia +# Fara a doua, oricine scrie fisierul decide cui i se crediteaza un sigiliu, si +# aceeasi cheie pusa la doua indexuri satisface singura pragul de cvorum. +# +# index adresa validator amprenta_pk +# 0 0x4bf6f91d84b37454544279cba152581ed6820044 fd07f92c9e3260f1 +# 1 0x5f50fc4e1b129bbd5e6e9f80c57680b0b4a86eb0 d46510fa0bb7a9a4 +# 2 0x97473985d04723299559f49b856effb47d7abfad e959ac2a6209a4b9 +# 3 0xb5e768cb3117ea25175f51aa956b48691025c2a8 6c8d2be5c3a2ae33 +# 4 0xc3314fd768bb68b986e80c0a14175f6f72630d7a f719af63d9296c18 +# 5 0xe13aa491abbc1252dd714e7ca0e55717a2143eaf 05991af0f4c8d8dd +# 6 0xf73bbbd26a82dbc769066550d8d4585eab2fc00d 075bc8630e79658c +# 7 0xdf09b32c761620c5be77da398b97a64f03c3980c 949d1b4777391fc7 +# 8 0x1bd5514286f5602a6762b0075266379d29af1c9d be91e6d03b9b66f8 + +formatVersion=2 +chainId=2800 +bindHeight=13600000 +count=9 +0=3b946f7ac3adbb6b49eb1426d60f07725a1b9409d472c9e8ea47a8e4ba38bfc773de905f06c51860d4e83eecf5f5621329634c3d9061816305c1fc89d55ba937f97b6482cd055895c8b4864b549ca4bb197244771d0635828882718142fb6800cbac04bd6005e3ae582f7e3ab704471877faec7aa6e1e96d1912a6e763f74dae69c2ccee323c06e5515fcc6880a2d96935220f50ac5bb02343fd2985a1b3b78f0a8548abd6702adc2e298bc113dd37411454286c29ec5592b963fae4bd7042fa6877e2363fd03c9a95e97da50144f02690d0b97ca332d14f9332edc0b0c5e5b27279569526523034d65b618147d267fdc5a35220091cca00b7456ed9bb1def448f4105bded1e79e1e34a6de8bed08a24383b954d47b3df5d1d8ae8b5e8592a92bc80b4220a7c0bb123cba55ae14371ca1716282276416c82772795ab0191c2562f189700469714ca5500b94beb23ad45a41ddef1184eda4d06f4286da21c0fdcb450e760d84401968a4e0fd19dc49bb1fa0bd79be005d781a4f19d5c40e71a4e6ab3ccf4413bd7f922799d28554f19609d7e4746e6519c8d029a1a1a548d369498feef77438051dbc2e024ac08220934dd42264acc038beebb5314f198589b211a81d8f1ef97e41af8d9b0de9fcc7b645cd80fc72c8c255e34495c51a060628205d48a11f9992b3865d59e692879a9ea9c6af9b831986e852c2583f35b1ef9aa55d41b1d18dd7162aab0ff4931476092f9d7e2f078f44ea2d0da699d362b8a0de3f140640826788faf7c7d4c0aee4b88a14cde9300a7253ac6c9b8de188515720f130a94673465e0f1e84a501b6c390b2ae84ba44a449320de37b26520e12988a11911465afdd2fc9b161965d3ccc15a0559930810104a6e40d17f629cacb8fb3973af0967c679a7d8c93b8aa833a28d6ae975913d0096a1416d79779c00052b2f19f479251a76264084552e99a76d42cc8572dd2573de7497472bc096e29cd7b81a2c1e8c20688e84245a46e159080bc976d98581b7a1023f94a5947cd244ad487b0193a62cb799afd30a8bfebb6a23ead4da7d2c7993919913583deef2311da82a924594d11f1e337b1ebd4364405c0cc88f57254261441d7a0b416492af894a9920e2c34cddcae506e16581b977e978150402663246b709bf9a4a0264050c4c972d86258d40eb8a046755ab187663109ad0aeab371f798b503c2ae73da67c5b8069dbaf06c0b6af28e0007dc22a766fdc3e1a87439258e65a701d8098d474 +0.addr=0x4bf6f91d84b37454544279cba152581ed6820044 +0.pop=396e2664ccd6ca94f76fff588a59dadacc08cb9215a90a0d9220bb260e80e1dad4d10acd3b29253f3e06f33390f58d1ed78f3e9d4a363a060a7cfb43318b6c2157f03e70173b054a6fd14fcb8f98b2e9e1a65caac4694c2cbbbea5e9281a3c34f1e5feebac690ddbf76ca5b3fde81b8f2a601c047feb69a714cf74da3eb1b3edff7afd2b8d0c015991134a6425c63aeb39ce298bcd927cadc47f7ec7a113cf9223b0b1a2272daa8f6505ffc387d0f58cfebdcc48b9edc144373abcfc8dd6bbc4119adb9b0272dbe696bd2fe79335f750c5933d07f23b6864993f565748edb929592e73fdaa56212472e4274e22a6657ccbeb56cadaebf69a221326abe9a0acbb618c4d29d89af1b6552cb1126b1d611046b2fb05a94b395d6468ffcd272f254be05baede5c4a53c9cbc91746a748fcefafc8d1909320ed8a47345b9045fdb575f76e451999519996522f53423cca2b245272ddfbbca77b4a32475d56506d090461c2c9f79104070d682cb1ec9279ced0c9ccacc896e1d20956793947068758c21a3f618f902488ce3f35022b6f3e46e89e51b71e4c496520f9063993133e255754d71a1635769c25fb1351b2a4a5b28f3979e3f1d15dc08c57e4ceba14b860c867e5b09a08377fd32bb3a39b4600db7c6068059f104bda82aa44ed6b515cee321ce95e3d6ed462191eebb0a0eff3880b3d0a54503c0b626ca2a8d3170575a5e77a1ee99ec8392ee95b66aa0efa3aa46d0bfb61182c5e5571a05967ba89ff3e2c87e59947dd14204c3cce9d82f9db9fff9caf1ae6c80a6f29d1d0b50ea49e0e85c288827a9554c9aed550e8d4ae2fa70f332acd94ebd8f24f315a72a37d48364d4b1edbc455be63f5b848a2a9aaefe64faf32569e06d3d52b83ff377d98d802819993dbf1d76ef21288b4be6d7a2745b8a0 +0.claim=368969e111970b8772d0b85540de5497ac036e4e1b30e6dda7e8778ea26ed2640519161648722b974dd94063e7fa14d351bf906d7ee99a721355aa30f206ae5f01 +1=1125a8c8ceab68078dadd35101e64ac8fff297aec01181732a50ed24098c5106cc1acebc7ab349380a595c7207f93e8cc96aec66e74a5ad73c0d9658e450776448d8b7f6901e8799525b6bafdc0401bda562c5a42e7e66f67ba1645c70f9473769ec01d01239f9d26b6134abe28fd2cc361852138c657455657bba806c37a1eca1b5ef42f4a498a987b7614f41a99752be9e640804d4fb74db16be5e9b3b101f20b37264a31b5efe4b5d2388cc92dab1c82218e24de139ea69e51b9d7f5e190691e6d20626806686939b7d2e593409532d4c465af2b5c8848f298ea7601fdddf2f5c2420b7e02f8bac6273da2b2c91b24e4329dc1c42640b00455ddd4c040b9accd0a90d993062de6e1f82618d523ac0d5b80d407689cdf05c100a758702f60e395df0525a7d0421b1e2bc60c612b89b945765f0b251adc824d9a6a7c4ff48761f36350de36bc7de94900ce4e91486424d1a1901c45abaa1188acb4e45f4bf61753b41287e73ea33213c153b661032e1e158db1d12d5532a0387870ec896e5267e6d290d53850cbe3e4d12ab5f0ef223b6e307c34c9285c122f75090439d152d466f49012bf9135860468886c954a574212d438c99013a878e9295b44686187b92783ef22c53aa95e2ac84d143a1b20e1ef74fc5ac39f2e03566871a42e67b340455da2922ebd9e4400b17a4f1965764039bd864e278d7b5a5a1ab600ea6edb0512a932acc47186db7f0cc5d429e984ec1b4af06747e1e09374d372d65b9c9c9540731d6e5e9f54005011570d3525eabb3c0c6056aa3522b9d3246f818834fa18cdb069807270ee3e6b30e945d0d9009444b303a50f7313d800f11020d49b80d27696a3519e1145b62f678d0206dc6be78cd321459dba0f444e96ea529be49b0d864d56ea2368b60661bc259184154722c1332de5593a5e29235569936210ca761cd9518de96855c328a517c8f4a6a3cbb75ac1f0a6834e9e6ff4d426d22b547ecc88e1ab45d3678481585e1ecba71a54421c0fd83dccc39ad0e4764366e740a482ae8ee05f22f541ac79c48c57eda102288836b3b6242334e96ed85ca3790d3e40ebc859778b844503c5c8a97980ee347294bd9606f226831db0aa40250bdb073312baaa92a86a31770469b7fe041e33f85a40a34f1071aa3ad4af426619fda690e6e60a3b8534c63e080438a123f97fab6f0b66c677de4ed35b65db81fca0521dc99b20e5474466412ca5151f6497893988970d3684f90d95b8283e8d040a5 +1.addr=0x5f50fc4e1b129bbd5e6e9f80c57680b0b4a86eb0 +1.pop=39ec0d61382825bb96a0facd4dd5b7b3961fac490c9cacb7344c44e33ca00950bc02eecd992b31eb8194760cdc157a7013c54facf5b6087a9e91f3eb9926663bcda5c6b2e93dd362cf99b9d452336cca60502c868b9384a0cb7ca72796baa707829b3579e606fd0e218d8619e9facd14071deef1e5dcb943d2b25c258a4ce52e8396c3b39842a90ae4bdd3839b952573c69754b612d92c34a88d3486269b592dde368598d6e69f99d4c04c3208d160bcbfc97a8148e9b1e41ba9a02592197eff95e7a54faf860d662e5dc67d39c3c4c9fa5fed47993af66b65a0399a490907e92af60688cfe9df09e64afea5c9cd6a4cab445a0220c219b9aa7689dd3c4a1d9a2e8fd17eef466bc95a6e5054655af0c29c671a8c736d555eca6266388deee11a739a78cf0516701f7ee7d7e08b67465f80620fc37490930e2ad6356570d00993e1cf531cf8df0633c18d47e48767e19acd9b3758ca55fd7356498763261727c70f824e530532efffaab0022a3e48ef9b924fd6a7db746f0c157d79cef31125b27316952a8e475ecc88d00bac7a1f9f181e3ce9a87f2b318f444d823a1354311c723f0af09a14c83df27ec8bc31f5cb4e64ad1c683aaedb5d931f922b2c53d8b5fe8909f22d8783387c66fd561e3fc28ff7f94c195a7d7dec02a0bacdf5cfe3fc58d3641c83a9538bba295aee11b6ba3b4f93e71563c6f7679f4cb9b7410d4f9141f412faeb32b045fbca33f240d78e2e0976acfbb7bb77057aeec872da9dc40a77b9e260de5e2753cb96ca221c136326b7bc3c1fc45702a56bf6cd83296c4b67082f558de9c9ee747ada1ac7f3a5da1636b92baf4c5e3aa4694793a765b0e744f1496c69163c133c2373ff7a7c7abcb2ba477edc34d7bfa570a8e752022837dd0d6b7b8a27d1479e38f74c6184ae00ab88 +1.claim=a2fda63d2ea63808adbb89c1a095b929372ca456ce4cef1b60924861988feea302b38d827f3f82bd5c1eccb6da44653eb4321908dbdb543ea54d968d1104beb301 +2=8cf6831a6196601d69c0db2725e6b0c2ddf4179d8c2eed5bc1e46528a7f9cd046199a53e8e6c127d6dbc35d1a0d0450f6f660dd0a22debe45654788a5b8ec849aafcb2a0ed8345bae07a262769b1a8ee57ac92f496b8ad4082ea0d8f7cdbb9a52040b59dd0f69a9206bd9e48aa41d1852c217cb885a4238e6234b5bd2ee5771a3eb2e70010056438744fd85b4a74d5f080256d65789967c0e0c835a12a36f7e12c32f42107514374220d3a19fd9bf6570c6a53596cfc035024bb9fd1aa67182060f2e8c115a66376d445d840b92b44105d376af967528561cdb18d9492d15c6d7dc2562b310fca6cd1d7da395fb6684467b5451afd1a485aab16af8540247df46be18a78d9840526e7b84bb48c45fe8bbe2f8a43149c04403326ae48b99e684d1d30201fe904226cc3c453dbf407ca84344e882f47c1d32b93597f958c1642d39b23402d8ec498a529534eabf50365f4845e68b34d89d8910c5024dac2208e8610e5aa536a0048d0c62b5364233e96b690124dbdca104adfe8217e3472127c15a8a0ee55a99a29af316ee18460e9440f6192664fe0a36b191d5048eded163ef0e0b32a1b81767672bf13d6b881ad6833500c2418d2f65c530b100689b5f368956a92175425cdb0b2fdcd0346c73f148545d463c99128a859e64f0028447286e7965b58374023b94804bf26a56b88b55feb0b0de8243cd3c1aad0b12affd69a9661829bbbc823264edb8084ea4a71212cc34209af973efb92d0d591838695b91b44da5a88a71a1b0b2c583951584a13c872b007167edaac130aa9fb2386a66f7c83a887af6a7100e9c80e2770bd4d9a535ac7c40b78ffbb148bdead7a6631824bff5da6d781a50310bd827cf0345d8c2d15060995824f98ca752154da4441f17e0739999854eaa6474067ceb026fe705aacfe0c1cb23a192f4d38404b7651a9d416b139a4ba0e7191289999fb41127e2937997fe39f83a090a1d15fb27e689ab7fa9254b79d0321966cd4253c50c197886a7f35209421038d81bc8b66d124066f78ac80936dad17c0cd653244e80771abe442d2f0905da80ad50a3a994cfd282cd7b727097fa444aa384e090668ff174b86e8b072b0c938bbbd9f416b0d9f1a742421a7443eab4a0d66298764016168f5630f2f840a3744d4dce2af0c41f094a3ff6bb57c6af71c03a255939be159379c66fb0bda9a5bb47ee375aa6f9943447ee2cb1b916c0458bbdbc4dca2497c166e586c70b9d47a53ca74a5793537430dc7 +2.addr=0x97473985d04723299559f49b856effb47d7abfad +2.pop=39be1ee617d60e058ae6d51566dd8d4651d339979c574fe8fe28991aafb30c294a95b7954830445237bb4344a57061997d26e8a42a3d2d01846b09a0e113364abb8b13a926e6e5d35154cda3662d5043a917f2200c2ce5a04473d76683b2a6f41f86eebd29c82632066e3f35a035882b22282bdcf99c7b1166d5b65fa0d435f6eba3a556bfd13e141baefb48a6f8acdc4dba8f5148e282407796280119cd5ea0aa6a8902d0b46a4ce8b3422c543ed2630bc16249723c86f9f8d822b8a9df90b911ef4af4715f9a91537d328951cdebe4552819019f293364cf6f2f1091d3c4c83c9255947b288fb275000c8dd2f27e745e8916b78da521cf4c53c7899793453b5faa4c1976e8de749b8627bf8b9ca644261b20b1d0157a6e60fb542611e678e991baeb07a61d29619fc39a2e5bc56a520e96756a3bf9643678c132ca32c51946626e6613759749ccb31aa3ce7e10f90745af28d31dbe31d669d427422ea0fc19a1055418df64e9eb37fc866f168c119c735950bb47dba6bbe5726d31e8735ca4f988a2026b2370a7937b71436affe64d004fe7079518a2f462397f641de74824deb6e345024e92b553b34c5819c84b0552ed4f5f9d45ca4e8057687c98643ea6cfb9e9691a5527e816a517600c3c7d87146d7afda1298ad1df49d006c865d645013bc9d6514c8edd1e9f4a88620f959a3a3ea61ecf7d5c509cdfd7c2ebe313d95f38ccf1d84472b3f397098c576091ef65f228658f4ba6d6becfcc4d78962b10d5468a90a1d0a8da87d9c9b9079e4b8a70b87bf6575f87e530528306a579112748c248e4290152762af82d526cb026703736c2b4bfd2f96a5fa84afe37cc14d34ec5389157166f1bd1c7a56405238df7180324d6bd9e7f1f56e5b9525964120ac5d061c7891b9593e8452608bfd63a63d040 +2.claim=4629ab23b0d3e559e9beddd8e37671d1993c7d0f07b29be638fb92886269eb123384e5cd5ab18fa3c9828daa6aa99396f1c5ac3ae9f51be80155f2dc9ad7301e01 +3=b991d68a909506b5ec27a59c86a2b0b815f1fc8d60a9224f75f40b8b4fd0a73885821d9982e7f829dbf24a824b1a85292145807041d10005944d107b70cf9636a15765096ed8a5320797415fc709456a85bb47037279d692bcefee14ca4284b9495e0eb80353461c10304d8ac592d665aea90f30b2ca0331e84b0139a4c98e3e47bb48d616198ea14b8b2dfd77453b4065c33a2d4daa44976ecc4d440b772f43700e341c22e146026e75de104be7fdbe4d95a52cd40997eda2a0092a299b44d4274ceff272c05abb0bc59607249be4a58a0093f2fa34c14957250d5bc4ed23339d3a2d0750a77e14e8d107324ed12938c592071335bcc165ea62009145885bca6e2a6937ec815af86c670d2abb119488e2056689090623578b9ec28108654c93806ee0d664e2b7c53146fd981b65b177e8de61fd8f3a47987e6ae66221241a68e64534ca22351c8990641210851fe997b669f848a891337bfeb0faa42e88bc406741cd943685512ef7bfc65440e86340dd96b57408cec4d1648550129fe838e201a86164b081055926b6fae0b6e5f65a65eef5061d6d40681c648c9aad426927134bcb2e38ac7b63e2120a97b21007d553db0dc64be0b2ca1a2c6449c6f9873496b49973af9ca1514e3217fb0608aa3d82246f55dd6504a8c8ae0ad1a634d54bc1c1f0bdd008332817f25ddd700244d68c0b6a8f480cdf90ae1ef1a3a619961bf67c7208697151c2af54fad43471de38739cd6c4067a056587542782a422325a174db998c552d5c48095a0ad555d8b784d32c3645ac4d099165071d662ec365587d954e7128db6cedbc3172621d58c1b242d4a202841374c126c2e80a8830d570301717936b2c328ac7ec61379a7bf1b06be385162ae0c8139d25b010bbe166f1899299862acc316ba59a6313a6bc6a10f590248b2575e243f66be6d62b851bd685413535894e2ab09f2519290bc3f701d52e2518276621df409172f3695e628580432ba096327ce4efb170ead3701c899a7e84f00ac926e21564cf0a78eb662f5df31c2c57540423039b12f402ea20135a62d3c4d90fac5ad8096bf7ec667e919a006ba518a49187744122f783d12ce69a1bcdbbcc486b4e9d2f81c6bd09839a5902e575aba9ec4c81629e6b3e480d74f81aa245c546185542d8a2c1c39942a6e1c6a32f94a8d201eb85b6230e9dd16cd03827eedda829e8f35e6049e9725fce18066a77dae2456c62c82790629494b699a8d648a853eea8d322dd869005025 +3.addr=0xb5e768cb3117ea25175f51aa956b48691025c2a8 +3.pop=39b4602846b08ca6db8d14b399980769d05f8523772390259518a06255d76e4a4b35f117f8b3ae5b9b1b9eb97d8ed40b382e31120a355d56092ea5c928ae244f9295ca576763a51621867c62b6689b06896fca866dbd5af5d854e1f6f334d253f760ca7bdce42353ea6cf8528e86e582b0c57e10585366932664b1af9a155a0a18aab48c4cf1458e22adbc3a44d6343e76299d3178e8d0d574313d6be57746623331150b398450d38d89289cc473db21bffde60fe3b7535636ac1cc4ff51e7883df896cb2635e71bcd9b90a4c3704a20a4a57d5b3c8d9e91013c5559bda6feb15db2a6ed894d21680d79209f9cba2f6eb3f06baf1e49e958c191af84cbae23187876ea85e2f4ba713a278ac2e13a0b3e624c287e370e9b39cb7fdd9acc1e5ded9252566f03b172350e01698e5af6f8372dfd754eb41cc2c3dd8cba465636fb79870de5d657b6b37dc2dbb6ea3098151b304110a58d9a73dff5614faadefc33caf682768e71734e74610beda1fdc435bed2fa726bc78f08de9be93cc1c9d67410b1a5824f18f4ba2d39d0463299c2632e81280e1effc15575a0ac91defae5d08fdd625b7171cd213467b4b9725d96195cf78f3b4dd5d85106254bb86adc55016ff34fc40622cd38107b7e30e662f25351e28f31483109c8a0664d9fe97c72285be366b0cd6791e7674ecc69e0b185c91149a0d3295bead53e95ecb4bf5bd529057e23a0515c0aaec189852939d8bd6b4d0a8146d48b2fa76fbc6a3f0426cf2f50a87a1a9f1d099f59ef2f2c17f183e630a7cb87017fb65b1b4f6daca87865d72c49f29094c966d9198dbdc8679d416cf4eedecf9a885c6ff3168ac3dac512d8622e9553712e113c86caa16b4dfd61d01e6abd0177eac951838de45979e8c73a02d66a53ad6416c999c2f7dc38 +3.claim=4e6ce5501d4754a03f1288deed8cd22ac25451a564ca20e43b2776c9b4ae77374ad67cf6459b2a3e8e31bfa38f83cf5bfbcf3afa91f9db157ff65f2342a061e800 +4=6e9ada38d7da61bb7062c6812dba3954f433ad08157ce4e9d340c3bb80d6b9b1d1027cbfe1514b2a9e5266da4757f9536a3efccfe15255baa4f48fd442d9c2731d8c63a29f936c1a6908f96fdd393dcda5ad19b81b1ca5c4472cfca358bf1566eecd9e3082dac612c158cc3788681f5f0868ec68a06cb04621465a4fca948f7e118352813e5d2138366c97296dc15649c99394b1bdd0e7969f913c255d694a989d75b6499a7c19bb1ce46f313e6a2fb6f4faa7ba63e4814e3348f7ee68bef4b823486dd6baf6f5b847a48b78bc1003bb125d3b26aaa9694a026c75da351064ff868061a78543677db940eb33a4636baa3e756948d61845dc43c04595427a6e9568a216b50eeea2428d82887931632a5a1d33803b392ed142bbd5cea9f619ce563a3c7b35d2f0a7709ed1e20edf0754f3f60aec60b329c0f51b2ecea714d079d2d4ed5f58a737feabee9c26a0320157147a3295a0eb00399eec3bb82d0a33a9e18789496f4e4d6dd6f29f106eab227336b49f688f95b33398c5489f5c32033cab2176749445c208500778e3955bafb2521628740896a9525d85d61aa2220379f8bbe8a16c44b45652d9ae7b2bfd3664a2a64133edae4b4edc930c64e6d99f97d707fcca1242467c9d0c71c441e59073e0d879e3af0529fdaf99eecc7c5219ec66d2c61c8294bd90dd53a21ffc0b230c6f6a89142336478c1179d6ecd91881d85e1e6535c1692979f217883feafc45b9a539834f0b9d74554901a8b83835c983fc43fe41141281c5234f02d50ea5f7a774a5d4dd9b8aabe902d2d0659bd1773bb62a5b1750a75f24ae7ae492cf2a5469563ad5062b4592037401ac334d8f6b2beb46a8aee678c11e98503e0be846dc5992e43b2019085e2872baa217547855e2d5b9984073b020b5224b577352c1a4bb900d8f5fd974c2c027cd633ec0c08ccae82134453b720a67b78e5d01f617343d81fa0864d6b0b1be09d35f1d707b688d134c4b82af9eaeb8908f40b259a8334c04a5223074638a82046cfaeba392c21f58f0be565492958f6282baf64d98a0d6af810490705136d1d1fc16e43b4668c9cb4fbfbf58d943ce5de56fbc5e44a684990b7df050981e559dd9d34a3fc4962b1282a15e63ac0e85d8d5794cf15a94c9409be98e9652e59176689d153214f2c6d011aa41f5709e536e267a9c897a10dc61081e012c51a2467464023c1dd870091db16b54665070a4db581cca14bd3843c3d42e907ef1f7c053d0a535a4d4f92752 +4.addr=0xc3314fd768bb68b986e80c0a14175f6f72630d7a +4.pop=3931edae48178015ea9ae47ac7914b8a18807ba47b01c97594f93a525872b1890de7dbf73aa6d65046899f7a2a051079a6dce8e8ee918d1e80742ab18c8659a03fb333109bb337daecdbe6e9bf2d9b18c550e955ef8fba133fb399b928eed422978de91d88212d8a8531e9be4e0a142d52a65a11a2344c4a6712d874736c10aa73507322487d14bb9340c9a87d2559172b169f3e1137b0f0914e29eb89246e86e7f956718f66baebb95b8a9ae505cf6dd2cdccab85606488739884b94a8ee7d7892fba94d73b5b3412e27d25cadea735059964b4410b46ea2f7a85a7340320fff120ceb132b77a11f46d99de2e0640a794b6af0de8f6d064dc1a8e81b6b8b6b21680d58cf9d3c8d01e120e4e131c769f348d5d6d88fcecc71f9400c261eb35420f41cf669286b4f32f9c34fee5b09ed1737a241f37299bb155cca1906d0812f3786b2190faa0f0d2780dbeaa07d1639e442eea5411293762cda58c4cf72da77fc5b9dacaae853a765c37cfc401d5abe5c8e23ac95b29adb6ca34e433a9848a0c228791c82fd366775d897aa2aedebb23e967fb7badc340ad78fecdd6830b018f3a32342d36525b49c49ef111cca9779d01549d2be4911e63c8d4391989495b0ec3c1cb536b6f6a19ee8cc90c85414161d63364e65529486906df20bdd1266a568259cde459e28a17456790281668ab89dffb4f8b6dd92eb6505719548a43758023fa7bb328ecf675ccdb2a7d9545ad428aa2bbc236d055d30c0e069b3ad05c15a9db4838fc56060feb54154f9d09b3641fc4f25b3060886d23cf33689e98eef168eaa619398e45e260e807b9b8407572cd170df1c25f0884471ff251ec318fa26ae7330e1dae034ac1b8d6d69a8d1163beaa078d475e25a816894cd0903ce4c338ff7072316c2e20d15fd5721bd9aca0 +4.claim=9924a7ae89127f8d98563bb87bce744f4e4175c9fe8216814702cd109b1058a01245d7330ad19d18ba96bb745b24350119279735a28db0c948f6b4c093af2df000 +5=a2b859c229911277f188666a63981fc25ea2b38df500cc8851ccee2f467d0fb1f8aaf84f9e757b7b5db61479c1a6a196677ff6d46779ef8d910a78604f04d8591c5de80ad1c32422ccbb3bc71914cd159001a2c78a9a00480fda69321a6ef54104bd0d1a1b8764d537b5909c107dde111786d5c6b943f52a06bebae81ed7168066aa0723ed5de103d0880994341828d3bbc78546b5e602cd842baeb162c8c099bf1112bff3f3ccaea4cec0ab5b4cc276a81351cc692d463cb6e1c4573036f1d07adad56f0210ee755c474614cd7ac618afa673197716ce24cb041225e4c72062873c8da49d13d11b70e05a71a35b384a90e95290735d9cf1ba9d0eb0abc5aabb728ad13d6cfa3ac2819411684629ff07db9306d6f5c52ac680ba31a2e1e41b1cf0f1b6d190ed3ad00470cbaeff956e7da446016360b515d2da9dad49f26a274957e45a6948843b0ea49c7995403667885a86f6f116e52eb7701615b75dc75801f5a5855c5e1b262746ed991aaeca6f3b9b59ab0406baa1e74a33617dfb6b54afb796c1d2299be9aa68b9bbd71c212f23909466471f8b04a5801408929474ce5304cd87801d01e1e8ff1d2b0842f727bfc3611138a3431e12867bcc000147238d659c7e241703444c26eaa6a161883a91e4e0afdaf39cc57d38615fccb1edf56a2adf1e401df1d5100467ac261772d695f29be1b3113a2a6f8e48f1b47380b97651a852b2c5da942a3ce92d17db15a669a4eaad2f116a25c4beaf1f9d72bfe1d665411c28041761d0960f5d3995e86fa15906195b2a1d163dae8e750b1a5c06b5fb32092b0ea47501da5e6d9a5941d82b5704299ff56e49299ec82c62fee9828ae56bdd2a90eadcdb94fcf2963d02349909dcf27e02224120d6b66747dbafec302bbc6b166e5eb3692b55a35495b15af063bb746d8c99c5c81719d42efb8d851537f875f6deab96b5860f26d6d0b036aa62d8f744692f256093f61f9e2e669f87feda1b60ded5d0574c521860665472ea9d44b1ba317d12e7b5480aa449c6d55f70d7a4341c22560a037b30df071f36573793efd2b098a6138cd74265e0493b71a228463c00a0260e0cbddc7905795261980edafbd3d30a0102ed9bd9e99630116341ef583f387e9ec5f9a6ba035e33d6b6c96faa9e27f6420a952496b540badfed26ceead61d590a5eba9f329ca9a5a0d562f4d0137f643128e6ee270e175c0ee0f5e68c03cc05338f2dc481723857fdc42d9134b908ae43367fb2601355a326 +5.addr=0xe13aa491abbc1252dd714e7ca0e55717a2143eaf +5.pop=3947bc4a7a6698d2b7889b89b6ccc1bd89b468001e7f27a031a2fbc557afd233937be4df7a2cf67db99ab234796ae4658ab7b62e3c5dbe613313139b4d63db75d900f5fbdd48bf43211155eb17f5f7be91764ee35915c39d0f4c5bf4beccc8ce8aa59683716dae362fce8fd19dc8c48a59a09a888c990754ee96263a22b9497353e4c6a68dd16b8c839ddfca50bc90f38193ea475e8de7455188d166a9e77eb06d66096674c9abd95473d4ce20b2c409bb86d0f00624efcfcbc3f3737da5128486d3045e8a93a7e34a7ba8b4d1f091292c5469a98799e26ed1eaf3c8ca3da56ce05ff84a39d18d65a2cee3f931d1f65cdf2e9b93ac6171698a6466d42f6a96aaba9092d15de72776fd3f44e399b96f1f875dee2a05a24289412e8d0d9e3e9642d6025b7ba34e163a9fb6204499bf066f27a1df9a4c23573e4f6c3b1e36cb3329fcb184b1dccbb3f6879268b753d357863784bb35f09bcf9dd08a71af8d4a5a4c7573181b299a185b864f9b9377ba6e1db2bb6985d7fc8a9e8107972bb813530a66b5565a3328ccd61416208a10d39a8736ac9c5394b6e168b46ce9adb0f634d762d7d2232f4fbe54e079285c85c19d21bac4af9ada96d56fa4fa392c8e1dcfec51dd28a8c1fa176ff571b9596aa9aa65fb6436ca57f72bab21742362954e6224da557ff2929a078e6ccd3cb755c3cbb55670999ae457513ef85abf07ccf3f4a78de9d4ffce5a647f1e78288d98e43893b421de5165a7310ad77930eac3bb718842bd76473fcf2d683b555cf0bc747cdee76d6fcbcc96e59f2e7d502afa74dcc07047699e79f1cae5762ed5632956e1c175ed5ed47893302c8601859ec0d049a52b08cbb97d46373f1183b724cf76aebc469ba3a0a7c0d9756ac32b51544fece178b9a41b4d25bf49b2d03af0 +5.claim=681a9c3746716b58ed54085ff394131920e0fee87a8970f1395c9a0e61636915580b7828973de824cad866d3aa35e02ea820cf8d2595e6184be077da78090d7101 +6=ae79ca93fae11c333ca673090a4b548553614bc1ce7f6aa2773e17b972caf48a07efb416581422605f12400494db84accd432c148168db7794ecff419e83d4738d98f6b0de8f0d742902359aed104a1582cb8ef976965502c28bf4466efdd9ae0350021542a563c9ad2c22b7b0da1f5cb832c5a54d58284ed0f172091dee7be8f94bbae38a4ec0a7c1dca67ca50de962ca09ecae9a66d227841b2c66cb8600a1f01fe2d48be3c64999d1f8236762983a80c3a58fedaa0bd09e3912223b4415cde3fe63d70a62acb564cae57b3ab760780ff26c422d6675920eac389b91659aa3738a5055a76a9046f443ca1c101da8fcca37fe0be18fc9c6851706367cb65f035615d3150acbb738c66eb6eacd7b9a1b03b06e4f046f8615754d85e69d262d8674e8e82052bdbf753591474488488c714a066592718dbfe08d0b91bf387d2b9ee6a86bd0bdf96082fa523e5b6851c27723b99af0aa0722b185d52440c9c82a2a61d6729ec27999f9019f071e9852e813c0ab9318e2cc791a6e7203c27ad48a68ed1385319985aace0112e17999c80662b12a135b5e1a2c9067d5e06d0b33f5a691b65e2181b8b7f389a364543a058268a97c20928b490ceffe1520fa52d143a495941996b527712beecb17786f982425a8ea6cea000f191226855eca65f069782bd777baf11ac781a5b77492e2b69c039903c991259b92a93d18fe6ac74e064370f3dbbbc5ad82b478648ccff8ab45d133b1853a1d21d2e7d525027b2d9740bc82fa16201fb16318da37ec6494c9ddd1af864ef8b50b266f1227134a99c40d8571879b8a660964f6217ca41c6c0435056e5aafb494f4763984a55b196ba4e6691c57a66ec82b886e3e9da601acd9a2ac3584975255ae13c2781abb2a089e423c36cea35126fca8728a82a9bb8dfbf1ed0795a46a83c22945b08f6c7048e3d5f3bc7874164ca39b05ea81d9f75e778cea8b01b1c19a8a5e89991419cea779aa49ae6d562d38be70784def475ca78a3ee40e86de917557d716b008a0819410625ba6d3603b53ce821d1cbc0009dc4d518e025c246e5b6904196e22667a9df22192d22195ccb2694e0cba7fd011553081520d24f53344d5da90299c150b968f7412d51a638bb853d52065e49ae471b5cd979b11953eed2ea89c2d1366a48a664502a96dbad1d8e527d2064d5885cd510898880110cfc7ec002de2029e02516682b953a88fa72b00c55632415e9b52eae8640d866d4074880443ac6f791270a208d2 +6.addr=0xf73bbbd26a82dbc769066550d8d4585eab2fc00d +6.pop=3922660f4804b28323dce5ab01be86754742cacb2d2a29ae578cad568ce0c36a069af8c3b1525d82fe6fe92e26ff2924515b9c4ed33e50b43dfdaba15e3c0e9384336cdffb39ab440c818c3afae4c4e92968e76efa5473ad33162589ad02f710f7500e109240d83eb24c2ed33f6f9685ed7a94fdc9a595c3166b17da66b45193d4cd0bae4aa9cef7ba0a8a54da786462cd85a0759ca4220ab034dad855838b53c228edce15398ba1acf1586ade9a041387d0553b4d7eb36b46e1229f9cb2a1d05a3478e7775ecf24cc1355fd813f9a3cc666517bb7a8aafa119ec67406e2950b8fe99b56af2eb729957cce6a6677fea49930bdc4f715041d17eae29cd7062867f20d0f74999489bac62fa215cffe0a8a4c93d2210c79cdd8a6497aa4d44becd86178eaa612e5c7bda995eeb938adadd1d1e54b9820d8f76748b7cd92c1f4dbf163f2bd968f2f3a2c91491424221bf7f5f796da2ce48919b7c525202418a56b5befe5bd42cb13cdd7edb856b70cb397c653931875deb6c5c7e0ff08811cd8763edd9a8f4c91340ae6e5a74b1b2cdd95dc7f24e44e2d6551ae3adbdec15b6b1bf54e1f88b9eebebc736d6182d6ad3a0c77d38e86397449dfb266cfaa33caa7c20a9a417ebdc7cba31d6f1986c4985ce1d96c4fc1aa24957543f0c93b64b0731b2efb25ca3a593a764c2006c0feebd599cdc72299e390db05ccc55cef9c7debd0baf5d3fee5ea3f1abda2958b6d0f90ea95892a2990aaa6f7da0666a53598214600829c09ceccf9378e6fabd346268ae702853661dbe3719057fb514587ecd063911fda42fada8f64ba9a6e1c27f954e2b0d9691b7146a16c78927f0202ebfc750815038111a8189dc26be8cf419229457e789132589a6c65dffccd36300f345ddfbacbe37d49dd357bd8590badb480 +6.claim=6a5f446db8033ce9d9d20a26405ed248c85593ce317a49d7a7cd6e3e94639ad678523869098e091dd6900eff856f4d29e1b1e29f456e2d290503ff3853d8c5a700 +7=b3e68f6854452ead92a798ea4db7116c6fb4f249d222909490f1837648185d207752134d8830bb9949597b70e7fa8297be87eafd8b7d116d1fece81701e0924d6a745bb64e884a54e1e949238e497868d2bd2960918a07a3cb1100364043d3218d2e76ceae07859de4182c85f7080a6baec87cd2235e908b2ca1a5c2e903bb387c067f2c514aec16c42f1ecf45b2eba63dad3b08a2da6bb6ae485156735261194cb8426fb8d10686527c4567a64195891acd62ba2c368152d2d36c5c24bbfea36412a74830c00135dc21941cea0010dc6d5c14ea61d1181f2db9ece691f151f1976e9a4a375d75964dc3363699f030ca842572c8e322854209f796268bd831e2975bb26f0c43332c2e7c5f5a959a50e7697e218f968e0039664e585a8fd5204261d6d29c287f13dc874122a3c3649169b0e6a2aa3dc93d70dfeefba3aa2970a788112f1c8085802174759594f33fadea69a413e5dee35f8dd13841f29234393a59052787cd8bf4b5f51b8ec26185ef65b788306f317121386a23456a1a64b1abc415d4b4f6281a8074526a19e8dd51b8317342e1de9f4c86a4c7fc90f64d628a909f5b0a2c146fd0b6861165487a75f606536a7abb9aec8571984a90b9b254447df27945cfec9f01ad1e82e54ab3617d22d38d912a4fc93c8bd4154648129bd17818892004605a7a6980b2a54842c5c6be2ca0071527a5b279156983ceea138ed86d93808b732fb492a036088c8864b7e1daa6b589982aca418d73358adb00aad06da91845f80723b4b3903f79f18fca2e3a49e31a21253bb6fae64f08a3350951a454d0fc84cece51f9ca3504d8665933088ca47c2345a744410ada4b41c29639299127c5a38ec701aeccb82a1caa59c0abf4be05bf4d10b119cadb9382f5e785900b70578a3de5659d2c1dee6a5338df1d0b90c293084620b9bacd2602839f75e83aa4258e03be9e541437d0481af11535d4e049b2568190f6cfaf2ed6b2e4d48e8979168299bf96fb192112e99a4589855ad9470a5a8f451e8a61f3eb4a51885865080c8dbc98e71bae8f0c4ab1e15247c79d207a5ad11796c85e6e62733a483e0f022cb05097243e1e61143805cd3ede3cb2640aea3300829821276803d1ab1898401e0196e070b89cfcbbc194e86f49108a45e01bb4a3dc4bbc73a05b5d1a674a9d28b16958812d4ca7bcd475b5e99957e9ee4236506d33f5179e6f804b59db5bb81f0a94500a668302599121fb67a62a4dc56048029c907d226bfcdbf3 +7.addr=0xdf09b32c761620c5be77da398b97a64f03c3980c +7.pop=398f3d3900e8f3360dc56b9c672ff214b90694d4517b3eada26d2dee11314490adbe600759bbe186542c8fc27b6b56e36b28376d98e0b96bdbe0bf28f7937068fedd82690e5e384b9705f2fc47b5ce632a92aa48222e843b798809c2cae6a2854a0913476fa68281482d3c5c928742afe84a2ff29338eeee528814ed7d6f4d1b50d8de39fb0ef6f3252047287dc4fbe0b236d7472e11128479eb2c148e331ca72af9fd3192e3a13a36565ab2f2724ade7524280928e6b0fb6bb492d4b1eea78fcce25abf5519f76e22e56ed0a186c331113d63bf1d3a8f220246f2fcd60094ddbf9a2c444ab1a789a8ba9f1f4f567511860d6d4ed8737683d20835de947f9b96d6827824abdec344e00d7418e7b2bdd58b711ed2e226d23d926cc6626f579ce214f950223b34f628689aedd45ae0cb1fc914b50bbc2451246dd8be412e9a1d20b6d4d3b6e989d2d00475fadf15f496675cc021b8ecefd71a4d8ec451a1cf772bb31f4320569c565134bbb48ff7ddd15311be25e30733fd244d666abcc6ee4ce2bf30494a268f17b69d5c1a16b67f16dfd8f0b6661c6048caf394a7860a576ee790ee66dfc138833ab9199f12268b509776cfb587cd9de8b4fa66a86ab197bc9366cab16e6f29b57ba02fd7223aa2cc579b7515d3bdb33cff7ce5d4a98c121db7361909391d2dc656247ba31071bd62088cab454fe65d715db188775e66bdfc3bf339ea3a76598521fec00f2a0eef651a2d11044ef8ce66b948e970fa293d2b8d02c11cf58f0aebfd3c7ed22eb146b1ddfeab7110ba3338ec5782e1bc8cc70a10cc1e1f4a15eca6334cf6b35fa26d32da9bdcd471b50d461c80238c91dfc99f8a1bcaa16c9c643f253c943ebf497e63cf6acf5b6f7b967139d3c8345f9a97d5ef8365b44739e7493106d8801091a7f5c0 +7.claim=feeab3b9960c07f94214c6e1b7e93752d777c5b70b54a4f397b4fcd08b9bb3145a8adbe7191e449054dacbc624e81cfd55327bd8ff1a63589465c2c3a42ec1ed00 +8=820cdb49fa91e522cafe7550a586b94132cae78b762b166f6bd819a1a25409c534a0846a6173d047cfbc67f518518f1fef1c0ed22a006ec77175f78b1ba5240ec600a721e7c8444a770bba44fe186a5edb2a8078bd55b823ab4fd0b6991748d142dc710691d574d4f64768167776ed9559de1dc6a466c5103585602f0bb21f2a85b1a76fe9a27ef5d5e6eef099d255c841ee8a12481d9bac050955e049398e228a8bf63013ee4a504a7c50573e65193872fa271f58cb848205112b29592d9222c6242e581ca10bb10ad04852f276182a1db822d63e66926b9b2229b8551a06520f9c89828d053864dc6717d107b9660ac6f5ccdc5696e013774f28a050ba02b787c4801139f33445231b87d44bb0ae5a8b5b16dd08ff174221f51e00bc4ca26712d6d2bbc03aa918cb95f999b23a4d71c1846ad5ab887f71ac294f42359d33b9aa6421d604b1e81eccaaa9ea7787469a68541103cf0a3b8234efc146cab85f4900f9188eddb6e00d68eb04debe0afe14572b1f924de61b610daebc7e7c20b18c97787448e199a79d5316e9b8c2e695b3b030335dcc60927d8d62d6526a4fba58763992605508ae16e3efd27a861d1796c0a6b746d4479c4fbea6f51597c9aa2062e2b8538dd1e85cd5350095472852e15d09b68ba1572c466555616134c8caa3330974244d3d31d00d256b654f92bb5bad3d75f668e69567263c1ae2e5ce6a2a218468b1c02c89f971e474efb8b59283578443f79e425a06e3ed7c344176db59e899a180eef9e0a5440ff4570b385ac700cd7fa290940b9201c56aad19e584ee08a19b4e38bdca2c38ebee649c404495df9ea22cae49b48767eca88e9e784319598688df4223ef1890450c597b2519044230a209488a56856cd1890045967e12006acdb128e4121614a1fd5996df927b6d3d60a84bc362cf4044b5243569639c19821adad4c4e09839a1789b82e9051cec285e611d0ea0170703e5f317496dd0ba0a330ef00bc7e70911463c534be4c1e8296ad5a05256a72712b9cb31d5adb0b4e8c5f89255211d1d41c121ce7d80f1132ec33b91494cd7c22378b3bce21b689d24a9bd933b68aaa917a8df5bf9513014897fd66d9451b62e30fa7c09d5116a11c5f2a9bd21ba718362a40484fe6b93f76c1008316d552bda724634edf50b184eba5a0c1413c17e5b82b16762629746fa5302b352c525e97bc189593e93adcd4430684d2c0237117611f615edfe21c8a4b531354925e7638570bacbc3868ae7 +8.addr=0x1bd5514286f5602a6762b0075266379d29af1c9d +8.pop=399c665dfc4c5a84e8660b229cfe2a8161e7affdd52ccca8ebbc9d191ac3f11e6540419176f45b2f5e02fe61ec33d485c555e399e197340758845032713cdae695629f8ed40b8372b89c1ed629d0e136b39670412b7b42699a6fe6455312edb7b18daa07fcc9d20d9a5fd2671f25bd5ab0912472c1c3819059ed37b8d7f85b88a0edc2ae55850893929bd5533840741abe7d31358a775242a17272fb71f5e3db158f66ba58d650f0c3fbff7a4726455624c4e58c364e2a3aaed4b94b0d2f3a8a757f4daf7faa6e79b9c9414e5e4c818c71cbf6d7cd1cb92cedd94693c08c312bd3e2a29b49fd8fd16448572ac61706f1cb936a1f29d87d1bd1b1d92dffa5152f428ca77f5ac672e65c210fd52e08e2ae48327f6591037c20d02c9a39855a273e36667bd0d3be9306293888e625343e9c4b23615d389c4160569d652f41b666e1ca690742d05aa405b5bc6f628f13c18b67219fec8cdf90c3d27547719ddab4d4cde7ad8ac09a895c0693689bc5529c0c41b41f8f33fdcef4e765e24754a425914b7ea2684eca04ce678d46fccc768109c107baabd7cea3f88843a14fb20cb6ae0a13dcf25bd37c210cd5aa1e63cc5cd582326ac3a53fa2e3c693529bbe4ba470ffe5124222b8c33aa60f74f85ca177f207e975dacc770b4c9911b87c15caca406c91af7faf41103a2d31aaf2d5644dc77aadded8689aaf723499d3abf76de284c3d0b2ccbe78fd4dcd23779988facc290b452496b45908aa16a5498b6c5858a27da36d25ca977255d9dac15548ce0dc21da2238c15245e7ac973653241f290def8abea530b855644d23d1f6548a4ee76cb975988235d97d518de6b9b266d8c6451ba75c7e74811f7c9652e0e56a48fa44cf2f6eb159ad4b21d8ad91078d251bbfaf7bf2864d5ad25bd9c14e1d1e171d184 +8.claim=022736cb764b88fee04dc13d648b88e9763c6f68197ff114d8a6127b279248f01ab20c20e680d35540ccc30d07aa33328c800187d96a88f8389113fa1807e70600 diff --git a/run-node.sh b/run-node.sh new file mode 100644 index 0000000..6a98ca1 --- /dev/null +++ b/run-node.sh @@ -0,0 +1,289 @@ +#!/usr/bin/env bash +# +# run-node.sh - one command to build the Aere Network (chain 2800) fork and follow the chain +# from block 0: verify -> patch -> build -> sync -> validate the post-quantum anchor. +# +# This script is deterministic and idempotent. It checks its preconditions loudly, verifies the +# genesis and the registries by sha256 and refuses to run on a mismatch, fetches upstream Besu at +# the exact named commit, applies the Aere patches in order, builds the node, and starts it syncing +# chain 2800 from genesis with the registry and anchor configuration a following node needs. +# +# It holds no key and signs nothing. It configures a node that VALIDATES the chain, including the +# post-quantum certificate anchor, but does not PRODUCE seals; producing seals needs a validator +# Falcon key, which is not in this repository and is not required to follow the chain. +# +# Re-running it does not rebuild what is already built or re-apply patches already applied. +# +# Usage: +# ./run-node.sh --bootnode [options] +# +# Options: +# --bootnode Peer to dial for discovery. Required to actually sync (see "Bootnode" below). +# --data-path Node data directory. Default: ./aere-data next to this script. +# --build-dir Where upstream Besu is cloned and built. Default: ./.besu-build next to this script. +# --p2p-port P2P (TCP+UDP) port. Default: 30303. +# --rpc-port JSON-RPC HTTP port. Default: 8545. +# --sync-min-peers Minimum peers before full sync starts. Default: Besu's default (5). Lower it +# (e.g. 1) on a young network where few public peers are reachable. +# --rebuild Force a rebuild even if a built node is already present. +# --no-start Do everything up to and including the build, then stop. Does not start the node. +# -h | --help Print this help and exit. +# +# Bootnode: chain 2800 does not publish a public bootnode in this repository yet (publishing a node's +# p2p address is an infrastructure decision, and validator addresses are deliberately not printed). +# Until a dedicated public bootnode exists, request a current enode by mail (office@aere.network, +# subject "bootnode") and pass it with --bootnode. Everything except peer discovery works without one. +# +set -euo pipefail + +# --- constants --------------------------------------------------------------------------------- +BESU_UPSTREAM_URL="https://github.com/hyperledger/besu.git" +BASE_COMMIT="d2032017bb3b8cb215a97303980a1e4a643f7180" # Besu develop line after 26.4.0; see anchor/BASE.txt +GENESIS_SHA256="361709dccec4e9fc85be5aec33b30b58a55dc53424087d84c1ad11bd1d944c24" +NETWORK_ID=2800 +# Patches applied in this order. 0002 (testnet precompiles) is deliberately NOT applied on mainnet. +PATCHES=( + "0001-aere-pqc-precompiles-mainnet.patch" + "0003-aere-pq-anchor.patch" + "0004-aere-basefee-floor.patch" + "0005-aere-eip2935-futureeips.patch" +) + +# --- locate self ------------------------------------------------------------------------------- +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +# --- defaults ---------------------------------------------------------------------------------- +BOOTNODE="" +DATA_PATH="$SCRIPT_DIR/aere-data" +BUILD_DIR="$SCRIPT_DIR/.besu-build" +P2P_PORT=30303 +RPC_PORT=8545 +REBUILD=0 +NO_START=0 +SYNC_MIN_PEERS="" # empty = Besu default (5); lower it on a young network with few reachable peers + +# --- helpers ----------------------------------------------------------------------------------- +say() { printf '\n\033[1;36m==> %s\033[0m\n' "$*"; } +ok() { printf ' \033[1;32mOK\033[0m %s\n' "$*"; } +die() { printf '\n\033[1;31mFATAL: %s\033[0m\n' "$*" >&2; exit 1; } +note() { printf ' %s\n' "$*"; } + +usage() { awk 'NR>=2 && /^#/{sub(/^# ?/,"");print;next} NR>=2{exit}' "${BASH_SOURCE[0]}"; exit 0; } + +sha256_of() { # portable: prefer sha256sum, fall back to shasum + if command -v sha256sum >/dev/null 2>&1; then sha256sum "$1" | cut -d' ' -f1 + elif command -v shasum >/dev/null 2>&1; then shasum -a 256 "$1" | cut -d' ' -f1 + else die "no sha256sum or shasum on PATH; cannot verify file integrity"; fi +} + +# --- parse args -------------------------------------------------------------------------------- +while [ $# -gt 0 ]; do + case "$1" in + --bootnode) BOOTNODE="${2:-}"; shift 2 ;; + --data-path) DATA_PATH="${2:-}"; shift 2 ;; + --build-dir) BUILD_DIR="${2:-}"; shift 2 ;; + --p2p-port) P2P_PORT="${2:-}"; shift 2 ;; + --rpc-port) RPC_PORT="${2:-}"; shift 2 ;; + --sync-min-peers) SYNC_MIN_PEERS="${2:-}"; shift 2 ;; + --rebuild) REBUILD=1; shift ;; + --no-start) NO_START=1; shift ;; + -h|--help) usage ;; + *) die "unknown argument: $1 (try --help)" ;; + esac +done + +say "Aere Network chain 2800 node setup" +note "bundle: $SCRIPT_DIR" +note "build dir: $BUILD_DIR" +note "data path: $DATA_PATH" + +# --- 1. preconditions -------------------------------------------------------------------------- +say "1/6 Checking preconditions" + +command -v git >/dev/null 2>&1 || die "git not found on PATH" +ok "git: $(git --version | awk '{print $3}')" + +command -v java >/dev/null 2>&1 || die "java not found on PATH; JDK 21 is required" +JAVA_VER_LINE="$(java -version 2>&1 | head -1)" +JAVA_MAJOR="$(printf '%s' "$JAVA_VER_LINE" | sed -E 's/.*version "([0-9]+).*/\1/')" +[ "$JAVA_MAJOR" = "21" ] || die "JDK 21 is required, found: $JAVA_VER_LINE" +ok "java: $JAVA_VER_LINE" + +# Disk: a full sync from genesis to the live tip stores tens of GB (headers are ~95% of it), +# plus a few GB for the build. Warn (do not hard-fail) below ~40 GB free on the build filesystem. +FREE_KB="$(df -Pk "$SCRIPT_DIR" | awk 'NR==2{print $4}')" +FREE_GB=$(( FREE_KB / 1024 / 1024 )) +if [ "$FREE_GB" -lt 40 ]; then + note "WARNING: only ${FREE_GB} GB free here. A full from-genesis sync needs tens of GB; the run may fill the disk." +else + ok "disk: ${FREE_GB} GB free" +fi + +# --- 2. verify genesis ------------------------------------------------------------------------- +say "2/6 Verifying genesis.json" +[ -f "$SCRIPT_DIR/genesis.json" ] || die "genesis.json missing from bundle" +GOT="$(sha256_of "$SCRIPT_DIR/genesis.json")" +[ "$GOT" = "$GENESIS_SHA256" ] || die "genesis.json sha256 mismatch + expected $GENESIS_SHA256 + got $GOT +This is not the chain-2800 genesis (a CRLF checkout will also fail here). Refusing to run." +ok "genesis.json sha256 $GOT" + +# --- 3. verify registries ---------------------------------------------------------------------- +say "3/6 Verifying Falcon validator registries" +REG_DIR="$SCRIPT_DIR/registries" +[ -d "$REG_DIR" ] || die "registries/ directory missing. A node cannot validate the anchor past block 13,014,000 without it." +for f in manifest-13014000.json manifest-13600000.json registru-2800-v2-13600000.properties; do + [ -f "$REG_DIR/$f" ] || die "registries/$f missing" +done +if [ -f "$REG_DIR/SHA256SUMS" ]; then + ( cd "$REG_DIR" && \ + if command -v sha256sum >/dev/null 2>&1; then sha256sum -c SHA256SUMS >/dev/null + else shasum -a 256 -c SHA256SUMS >/dev/null; fi ) \ + || die "registries failed their SHA256SUMS check. Refusing to run with tampered registries." + ok "registries verified against SHA256SUMS (7 keys @ 13,014,000; 9 keys @ 13,600,000)" +else + note "WARNING: registries/SHA256SUMS not found; skipping registry integrity check" +fi + +# --- 4. fetch upstream Besu at the named base + apply patches ----------------------------------- +say "4/6 Fetching upstream Besu at $BASE_COMMIT and applying Aere patches" +# sanity: the short base in anchor/BASE.txt must be a prefix of BASE_COMMIT +if [ -f "$SCRIPT_DIR/anchor/BASE.txt" ]; then + SHORT="$(grep -oE 'd[0-9a-f]{6,}' "$SCRIPT_DIR/anchor/BASE.txt" | head -1 || true)" + case "$BASE_COMMIT" in "$SHORT"*) : ;; *) [ -z "$SHORT" ] || die "BASE_COMMIT does not match anchor/BASE.txt ($SHORT)";; esac +fi + +if [ ! -d "$BUILD_DIR/.git" ]; then + note "cloning upstream Besu (blob:none partial clone; this fetches ~the working tree, not full history)" + git clone --filter=blob:none "$BESU_UPSTREAM_URL" "$BUILD_DIR" + git -C "$BUILD_DIR" checkout "$BASE_COMMIT" +else + ok "upstream Besu clone already present" +fi + +HEAD_NOW="$(git -C "$BUILD_DIR" rev-parse HEAD)" +[ "$HEAD_NOW" = "$BASE_COMMIT" ] || die "Besu build dir is not at the named base commit + expected $BASE_COMMIT + got $HEAD_NOW +Delete $BUILD_DIR and re-run to get a pristine base." +ok "at base commit $BASE_COMMIT" + +apply_patch() { + local patch="$SCRIPT_DIR/patches/$1" + [ -f "$patch" ] || die "patch not found: $patch" + # already applied? (reverse-apply check succeeds only if the change is present) + if git -C "$BUILD_DIR" apply --reverse --check "$patch" >/dev/null 2>&1; then + ok "already applied: $1" + return 0 + fi + # will it apply cleanly? fail loudly if the base moved under it. + git -C "$BUILD_DIR" apply --check "$patch" \ + || die "patch does not apply cleanly on this base: $1 +This means the Besu tree is not the pristine named base. Delete $BUILD_DIR and re-run." + git -C "$BUILD_DIR" apply "$patch" + ok "applied: $1" +} +for p in "${PATCHES[@]}"; do apply_patch "$p"; done + +# --- 5. build ---------------------------------------------------------------------------------- +say "5/6 Building the node (gradlew installDist)" +BESU_BIN="$BUILD_DIR/build/install/besu/bin/besu" +if [ -x "$BESU_BIN" ] && [ "$REBUILD" -eq 0 ]; then + ok "built node already present: $BESU_BIN (use --rebuild to force)" +else + note "this compiles Besu from source and can take many minutes on the first run" + ( cd "$BUILD_DIR" && ./gradlew --no-daemon installDist -x spotlessJavaCheck -x test ) + [ -x "$BESU_BIN" ] || die "build finished but $BESU_BIN is missing" + ok "built: $BESU_BIN" +fi + +if [ "$NO_START" -eq 1 ]; then + say "Stopping before start (--no-start). The node is built at:" + note "$BESU_BIN" + exit 0 +fi + +# --- 6. start ---------------------------------------------------------------------------------- +say "6/6 Starting the node" +if [ -z "$BOOTNODE" ]; then + die "no --bootnode given. A node with no peers cannot sync. +Chain 2800 does not publish a public bootnode in this repository yet. Request a current enode by +mail (office@aere.network, subject \"bootnode\") and re-run with: + ./run-node.sh --bootnode " +fi + +mkdir -p "$DATA_PATH" + +# BESU_OPTS: the follower subset of chain 2800's post-quantum configuration. +# +# WHY THESE AND NOT THE VALIDATOR SET. A validator additionally sets, and a follower deliberately +# OMITS: aere.falcon.key (the signing key, not in this repo), aere.falcon.attachBlock / +# attachInterval / minAttachFutureMargin / validatorCount (these drive seal PRODUCTION only), and +# aere.falcon.forkBlock (a per-block Falcon rule that the shipped code retires at the anchor block, +# so it is inert; leaving it unset keeps the non-blocking baseline). What is below is exactly what +# the IMPORT (validation) path reads, verified against anchor/ source: +# - registries: aere.falcon.manifest is the head registry; it loads only WITH +# aere.falcon.anchor.address (the manifest source is pending until that on-chain anchor is +# observed), so anchor.address / anchor.block are import-relevant here, not attach knobs. +# aere.falcon.registry.history carries every earlier registry the chain was signed against. +# - anchor validation: aere.pq.anchorBlock / anchorInterval / anchorMinSeals / anchor.maxSeals / chainId. +# - the 1 Gwei base-fee floor active from block 10,141,734: aere.basefee.floor.forkBlock / value. +# A node syncing from block 0 starts into the GENESIS validator set, which is small (N=3). The +# startup threshold guard (PqAnchorThresholdGuard) refuses to arm a seal threshold at or above that +# set's QBFT quorum, because a proposer at that set size could never gather it; the schedule reaches +# K=3 (block 13,034,000) and K=6 (block 14,961,456), both unreachable at N=3, so a from-genesis node +# refuses to start (AERE-PQC-THRESHOLD-01) without the line below. The emergency ceiling lowers the +# EFFECTIVE threshold to what the genesis set supports (quorum(3) - 1 = 1) WITHOUT editing the +# published schedule, exactly as that guard's own message instructs (--Xaere-pq-anchor-min-seals-max). +# This does not weaken the post-quantum binding a follower checks: every anchor must still carry a +# valid validator Falcon seal that verifies against the registry, and its digest must still bind the +# certificate under the block hash; only the seal-COUNT floor (a proposer-liveness property relative +# to the current set, not a history-verification property) is relaxed to one. Real anchor blocks +# carry three to nine seals, so all import cleanly. A validator, which starts into the full set and +# proposes, does not set this. +ANCHOR_MIN_SEALS_CEILING="${AERE_ANCHOR_MIN_SEALS_CEILING:-1}" +REG="$REG_DIR" +export BESU_OPTS="\ +-Daere.basefee.floor.forkBlock=10141734 \ +-Daere.basefee.floor.value=1000000000 \ +-Daere.pq.chainId=2800 \ +-Daere.pq.anchorBlock=13014000 \ +-Daere.pq.anchorInterval=32 \ +-Daere.pq.anchor.maxSeals=9 \ +-Daere.pq.anchorMinSeals=13014000:0,13034000:3,14961456:6 \ +-Daere.pq.anchor.minSealsCeiling=$ANCHOR_MIN_SEALS_CEILING \ +-Daere.falcon.anchor.address=0x5214F0e53899Dad805ef3AdF0624F5e49d2a5EB5 \ +-Daere.falcon.anchor.block=13889290 \ +-Daere.falcon.manifest=$REG/manifest-13600000.json \ +-Daere.falcon.registry.history=$REG/manifest-13014000.json,$REG/registru-2800-v2-13600000.properties" + +note "BESU_OPTS (follower subset):" +printf '%s\n' "$BESU_OPTS" | tr ' ' '\n' | sed 's/^/ /' +note "" +note "bootnode: $BOOTNODE" +note "data path: $DATA_PATH" +note "rpc: http://127.0.0.1:$RPC_PORT (eth_blockNumber to watch height)" +note "" +note "Starting FULL sync from block 0. This verifies history rather than trusting a peer for state." +note "Crossing block 13,014,000 (first anchor) and 13,034,000 (first enforced 3-seal threshold)" +note "without anchor rejections is the proof that the registries and patches are correct." + +SYNC_MIN_PEERS_ARG=() +if [ -n "$SYNC_MIN_PEERS" ]; then + SYNC_MIN_PEERS_ARG=(--sync-min-peers="$SYNC_MIN_PEERS") + note "sync-min-peers: $SYNC_MIN_PEERS (Besu default is 5; lower this only on a young network with few reachable peers)" +fi + +exec "$BESU_BIN" \ + --genesis-file="$SCRIPT_DIR/genesis.json" \ + --data-path="$DATA_PATH" \ + --network-id="$NETWORK_ID" \ + --sync-mode=FULL \ + --data-storage-format=BONSAI \ + --bootnodes="$BOOTNODE" \ + --p2p-port="$P2P_PORT" \ + "${SYNC_MIN_PEERS_ARG[@]}" \ + --rpc-http-enabled --rpc-http-port="$RPC_PORT" \ + --rpc-http-api=ETH,NET,WEB3,QBFT \ + --min-gas-price=0