v10.0.0-rc.3
Pre-release
Pre-release
·
3006 commits
to main
since this release
Operator hardening on top of v10.0.0-rc.2. No contract redeploy — chainResetMarker unchanged, no per-node state wipe is triggered. Ships the admin / operational wallet key split, RandomSampling Hub-rotation self-refresh, prover stale-period detection, and devnet bootstrap fail-fast guards.
Added
- Persisted profile admin wallet (#366):
wallets.jsonnow contains a distinct admin wallet alongside operational wallets so newly-created profiles do not lose their admin key. - Operational wallet self-healing for ACK signing (#366): core nodes now auto-register configured operational ACK signer wallets on-chain for their profile identity during startup.
Profile.addOperationalWallets(uint72,address[])facade (#366): profile admins can add operational-only keys without using the lower-level generic key-management surface.- End-to-end ACK signer registration coverage (#366): a real Hardhat/libp2p test now verifies startup registration, StorageACK signing by the confirmed key, and refusal to sign after the key is removed on-chain.
- RandomSampling Hub-rotation self-refresh (#367):
EVMChainAdapterre-resolvesRandomSampling+RandomSamplingStorageaddresses throughHubResolutionCacheon every prover tick instead of caching them at boot, so a Hub rotation no longer strands the prover on dead addresses. [rs.tick.forcing-rotation]log + behaviour (#369): the prover now compares the cached challenge's period against the on-chain block height every tick and forces a freshcreateChallengewhen the cached "unsolved" challenge is past its wall-clock period boundary, instead of stranding on a stale challenge after a Hub rotation.- Devnet stake-probe via
getNodeStakeV10(#368):scripts/devnet.shchecks for an existing identity-scoped V10 stake before issuingcreateConviction, preventing duplicate stakes when re-runningstarton an already-bootstrapped devnet. - Devnet hosting-node discovery fail-fast (#370):
scripts/devnet-test-publish.shnow distinguishes file-levelwallets.jsonfailures (refuses to run a partial smoke) from intentional edge-node skips.
Changed
- Admin-only operational wallet registration (#366):
Profile.addOperationalWalletsrequires a profile admin key; operational keys can no longer add more operational keys. - New profile creation uses the persisted admin wallet (#366):
EVMChainAdapter.ensureProfilenow useschainConfig.adminPrivateKeyfor the profile admin address instead of creating an unrecoverable random admin wallet. - StorageACK signing is gated by on-chain confirmation (#366): core nodes only register/sign with ACK keys confirmed as
OPERATIONAL_KEYfor the node identity. - Devnet bootstrap fail-fast (#370):
scripts/devnet.shnow exits non-zero whenstaked < coreCount, refusing to declare devnet ready when only some cores ended up staked. - Single-flight RPC duration probe (#369):
EVMChainAdapteruses Contract-instance identity (rather thanHubResolutionCache.generation) to scope the duration probe slot, so a TTL refresh that mints a new Contract handle correctly invalidates an in-flight probe without breakingresolveAndAssignRandomSamplingPair's concurrent-invalidation detection.
Fixed
- Invalid ACKs from unregistered wallets (#366): ACK handlers no longer produce signatures from local keys that are not confirmed operational wallets on-chain.
HubResolutionCacheinvalidate-vs-await race (#367): agenerationcounter bumped only oninvalidate()ensures an in-flight resolve started under generation N cannot write back its value ifinvalidate()was called while it was suspended.- Devnet single-wallet
wallets.jsonfile shape (#368):scripts/devnet.shnow writes the{ adminWallet, wallets }shape expected by post-#366 daemons (graceful fallback for legacy single-wallet files retained for testnet operators).
What's Changed
- Fix durable OpenClaw chat turn coordination by @Jurij89 in #356
- fix(evm): apply conviction multipliers to node scores by @branarakic in #363
- chore(evm): update Base Sepolia deployment by @branarakic in #365
- Release: auto-register operational ACK wallets by @branarakic in #366
- fix(chain): self-refresh RandomSampling addresses on Hub rotation by @branarakic in #367
- chore(deps): bump libp2p packages to latest patch versions by @branarakic in #319
- fix(devnet): align wallets.json + identity probe + stake signer with PR 366 by @branarakic in #368
- fix(random-sampling): force createChallenge when unsolved cached challenge is past wall-clock period boundary by @branarakic in #369
- chore(devnet): fail-fast on partial bootstrap and discovery failures by @branarakic in #370
Full Changelog: v10.0.0-rc.2...v10.0.0-rc.3