eventstream -> v1.7.8, service/s3 -> v1.97.3 (minimum patched versions), plus
the luxfi escape versions keeping this module off the deleted geth v1.16.x tags.
Measured, not assumed:
before: 80 packages ok, 19 failing
after: 102 packages ok, 20 failing
22 packages that previously could not COMPILE now build and pass. The single
extra failure is the other side of that same coin — a package that used to
compile-fail (counted as neither ok nor fail) now compiles and has a failing
test. Net +22.
The failing set is entirely upstream go-ethereum packages (core, p2p,
ethclient, graphql, console, node…), none of which touch the AWS SDK or the
luxfi modules bumped here.
I could not isolate WHICH package is the new one — a clean-tree baseline needs
a second full run and the pair exceeds the time budget. Stating that rather
than implying a cleaner result than I measured.
Mirrors luxcpp/cevm lib/evm/state/bench_state.cpp exactly — same N, same
address derivation, same pre-funding, timing the transfers plus the state
root — so the C++ and Go numbers are comparable on one machine.
The C++ bench previously printed a hardcoded "luxfi/geth StateDB: 62.31 ms"
captured on another box. Re-measuring both here (M1 Max) puts geth at
146.33 ms vs cevm 37.28 ms, so the baked constant understated the gap by
more than 2x. That constant is now removed in favour of this benchmark.
Co-authored-by: Hanzo Dev <dev@hanzo.ai>
Protects the golden root 0x549b8955...c021 from Go-side drift; paired with
luxcpp/cevm/test/state_root_parity.cpp which asserts the C++ side. Silent
divergence between the two EVMs is a chain-fork risk.
Co-authored-by: Hanzo Dev <dev@hanzo.ai>
luxfi/evm's block-accept pruner (cappedMemoryTrieWriter: tipBuffer + RejectTrie
+ reprocess previousRoot deref) and upstream coreth commit 7dc5b7473 assume the
state root is referenced on Update (parents>=1). luxfi/geth's slimmed hashdb.Config
dropped the ReferenceRootAtomicallyOnUpdate flag, so hashdb.Update referenced only
storage roots and every state root had parents==0. This restores the flag and
pins the state root atomically inside Update, matching the upstream contract.
Adds triedb/reference_root_test.go documenting the coreth GC lifecycle. NOTE:
these tests demonstrate the reference-counting is single-deref-SAFE with AND
without the flag (the accepted head's subtree is protected by its own Update
references under sibling reject + ancestor eviction). i.e. this change is a
latent-correctness alignment, not by itself the fix for the devnet block-2 halt.
Co-authored-by: Hanzo Dev <dev@hanzo.ai>
PrecompileEnvironment.CallIndex() exposes each precompile invocation's ordinal
within the current tx (evm.precompileCallIndex, reset to 0 at tx start,
incremented once per NewPrecompileEnvironment — for every invocation, including
reverted sub-frames and STATICCALLs). It is a pure function of (tx, ordinal),
so it is identical across deterministic re-execution and distinct between two
invocations in one tx.
The DEX 0x9999 seam binds CallIndex into DeriveIntentID so two same-params swaps
in one tx get distinct, collision-free cross-chain object ids while replaying
byte-identically network-wide.
PrecompileEnvironment.CallIndex() exposes each precompile invocation's ordinal
within the current tx (evm.precompileCallIndex, reset to 0 at tx start,
incremented once per NewPrecompileEnvironment — for every invocation, including
reverted sub-frames and STATICCALLs). It is a pure function of (tx, ordinal),
so it is identical across deterministic re-execution and distinct between two
invocations in one tx.
The DEX 0x9999 seam binds CallIndex into DeriveIntentID so two same-params swaps
in one tx get distinct, collision-free cross-chain object ids while replaying
byte-identically network-wide.
A Lux-derived EVM chain does NOT install AllForbidden() (=pq.Strict), which
forbids the standard alt_bn128 (BN254) precompiles at 0x06-0x08. Those are
Ethereum-compat dapp precompiles, not Lux settlement-security: Lux's
security-critical pairing/DLOG usage is in CUSTOM precompiles gated
separately. The per-chain profile (with bn256 carved out) is owned and
installed by the EVM plugin (evm/plugin/evm.LuxStrictPQ).
pq_lux_profile_test.go proves the guardrail through the REAL (*EVM).
runPrecompile dispatch: the bn256-carve-out profile admits 0x06-0x08 while
refusing every other classical family.
A Lux-derived EVM chain does NOT install AllForbidden() (=pq.Strict), which
forbids the standard alt_bn128 (BN254) precompiles at 0x06-0x08. Those are
Ethereum-compat dapp precompiles, not Lux settlement-security: Lux's
security-critical pairing/DLOG usage is in CUSTOM precompiles gated
separately. The per-chain profile (with bn256 carved out) is owned and
installed by the EVM plugin (evm/plugin/evm.LuxStrictPQ).
pq_lux_profile_test.go proves the guardrail through the REAL (*EVM).
runPrecompile dispatch: the bn256-carve-out profile admits 0x06-0x08 while
refusing every other classical family.
newPersistentDB opened the peer node DB via badgerdb.New directly. Per the
single-backend rule we open zapdb.New instead — same New(path, cfg, name, reg)
signature, same on-disk format, so existing nodedb dirs read unchanged.
Comments updated badger→zapdb. go build ./p2p/enode/ clean.
newPersistentDB opened the peer node DB via badgerdb.New directly. Per the
single-backend rule we open zapdb.New instead — same New(path, cfg, name, reg)
signature, same on-disk format, so existing nodedb dirs read unchanged.
Comments updated badger→zapdb. go build ./p2p/enode/ clean.
The starkfri CAS clobber-fix in core/vm/lux_precompiles.go calls
starkfri.RegisterDefaultVerifier, which first lands in precompile v0.5.41.
Remote main pinned v0.5.37 (no such symbol) so a clean (no go.work) build
failed: 'undefined: starkfri.RegisterDefaultVerifier'. Bumping to v0.5.41
provides the API; transitive bumps stay within existing majors. Verified:
GOWORK=off CGO_ENABLED=0 go build ./core/vm/ passes.
The starkfri CAS clobber-fix in core/vm/lux_precompiles.go calls
starkfri.RegisterDefaultVerifier, which first lands in precompile v0.5.41.
Remote main pinned v0.5.37 (no such symbol) so a clean (no go.work) build
failed: 'undefined: starkfri.RegisterDefaultVerifier'. Bumping to v0.5.41
provides the API; transitive bumps stay within existing majors. Verified:
GOWORK=off CGO_ENABLED=0 go build ./core/vm/ passes.
Was an unconditional RegisterVerifier(refuse) that clobbered the real starkfri verifier registered
by precompile/starkfri/init. Now registers a CAS-against-nil safe-refuse fallback that no-ops when
the real binding is present (atomic.Pointer). Fixes the init-order clobber.
Was an unconditional RegisterVerifier(refuse) that clobbered the real starkfri verifier registered
by precompile/starkfri/init. Now registers a CAS-against-nil safe-refuse fallback that no-ops when
the real binding is present (atomic.Pointer). Fixes the init-order clobber.
Was an unconditional RegisterVerifier(refuse) that clobbered the real starkfri verifier registered
by precompile/starkfri/init. Now registers a CAS-against-nil safe-refuse fallback that no-ops when
the real binding is present (atomic.Pointer). Fixes the init-order clobber.
Was an unconditional RegisterVerifier(refuse) that clobbered the real starkfri verifier registered
by precompile/starkfri/init. Now registers a CAS-against-nil safe-refuse fallback that no-ops when
the real binding is present (atomic.Pointer). Fixes the init-order clobber.
Replaces non-canonical scale-set / org-prefixed labels with the
existing labels every arcd host registers with. Matches evo for
amd64 and spark for arm64. No new labels added.
Replaces non-canonical scale-set / org-prefixed labels with the
existing labels every arcd host registers with. Matches evo for
amd64 and spark for arm64. No new labels added.