merge: upstream v3.11.0-rc.3 into debank - #26
Closed
littlehand26 wants to merge 443 commits into
Closed
Conversation
Switch the multiGasFees subspace from OpenSubStorage to OpenCachedSubStorage so per-slot mapAddress keccaks hit the shared LRU. The subspace key is static and the slot set is fixed and small, so caching is a clear win without risk of polluting the cache. Per pprof, OpenMultiGasFees dropped from 10.84% to 5.48% of sequenceTransactions time. Close NIT-4914
The transaction-filterer command was added in #4227 and is built by make build, but its Dockerfile COPY lines were lost when the public change was merged into the private fork. Restore the COPY in the nitro-node and nitro-node-stripped final stages. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Switch the address-hash file schema from `address_hashes: [{hash}]` to a
flat `hashes: [...]` array, and update the recognized hashing_scheme to
`sha256-stringinput` to match the format actually produced upstream.
Extra top-level fields (extract_uuid, issued_at) are ignored.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This reverts commit d03064e.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…t agreed assertion
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…hainLabs/nitro-private into raul/investigate-3.10-assertion-bug
Align hashListPayload with latest format
The previous commit (484710a "shorter comment") inadvertently bumped the go-ethereum submodule to 934a55fd1b, which lacks types.SetLegacyZeroBaseFeeUntil and broke CI at cmd/nitro/nitro.go:187. This restores the submodule to the SHA that origin/master points at. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per PR review: every retry through maybePostRivalAssertionAndChallenge
should re-ask both questions ("should we post?" and "should we
challenge?") against the current chain state, since things can change
between attempts. The post side is already covered by the existence
pre-check inside createAndStakeOnAssertion; the challenge side wasn't.
Adds a fresh ReadAssertionCreationInfo call right before
HandleCorrectRival, in addition to the existing self-rival hash-equality
guard. The two checks together: (1) confirm the rival still exists on
chain so we don't try to challenge against a vanished assertion, and
(2) bail if our computed "correct rival" turns out to have the same
hash as the assertion we declared invalid (the self-challenge bug).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Counters and a debug log so the cursor-skip race in applyRecordAgreedAssertion and the same-hash bailout in maybePostRivalAssertionAndChallenge are visible to SRE rather than silent. Two new metrics under arb/validator/scanner/: assertion_pointer_skip_non_child and self_challenge_bailout. Adds TestNoSelfChallengeAfterCursorDowngradeAttempt, an end-to-end test that drives the full prod scenario through applyRecordAgreedAssertion, findCanonicalAssertionBranch, and respondToAnyInvalidAssertions, with three assertions covering cursor stability, downstream classification, and absence of spurious rivals. Comment cleanup: stale sync.go:441 line references replaced with symbol references to maybePostRivalAssertionAndChallenge; "on master / proposed fix" framing replaced with timeless "fails if removed" wording; bare PR#4615 references replaced with direct descriptions of the ErrAlreadyExists fall-through. Tightened the system test scope comment to explicitly note it doesn't exercise the cursor-downgrade path. Fixed bare-break-in-select bug in the system test polling loop. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Trims the verbose docstrings and inline narration in the bold/assertions and system_tests reproducers down to what each test actually asserts and why. No behavior change. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ShouldValidateGenesisAssertion now compares the current block's hash to the chain's genesis hash rather than checking that the block number is zero. A number-zero header with a different hash would otherwise satisfy the gate but is not actually the configured genesis. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The nil branch in GetAndValidateGenesisAssertion is observationally identical to passing an empty MemoryInitDataReader, which TestValidateGenesisAssertionWithBuilder already covers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Address review feedback on #4677: - rename forge_max_version -> forge_version_needed (compare_versions uses exact match, not a ceiling) - collapse Foundry/forge installation blocks into one cascade so the user sees a single appropriate error - print success message when forge version matches (previously the matched branch printed the "not compatible" error) - add changelog/tenderdeve-nit-4379.md
Skip CI if only changelog updated
Pin to nitro-testnode master branch
The only non-nil caller was the non-delayed-sequencing branch in ExecutionEngine.createBlockFromNextMessage, which does not need address filtering. Keep the parameter on ProduceBlockAdvanced, where the sequencer and delayed-sequencing filter paths still use it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Fix addressCheckerState lifecycle so PreTxFilter sees a fresh per-tx state
…after-processing-filtered-tx
Do not combine multi-gas refunds with EVM refunds
Add consensus v61-rc.2 to dockerfile and update CHANGELOG
…ocessing-filtered-tx Prevent silent delayed-sequencer halts from transaction-filterer misconfig
Port recent changes from zk-prove-any/sp1-runner branch (vol. 1)
Hyphens in geth metric paths survive the /→_ translation and produce invalid Prometheus names (spec requires [a-zA-Z0-9_:]*). Fix all filtering-related metrics and normalize naming conventions. arb/filtering-report-client/report_filtered_transactions_failures_total → arb/filter_report/client/failure_total arb/filtering-report-client/report_filtered_transactions_successes_total → arb/filter_report/client/success_total arb/filtering-report/api/sqs_send_failures_total → arb/filter_report/api/sqs_send_failure_total arb/filtering-report/api/sqs_send_successes_total → arb/filter_report/api/sqs_send_success_total arb/filtering-report/forwarder/external_endpoint_retryable_failures_total → arb/filter_report/forwarder/endpoint_retryable_failure_total arb/filtering-report/forwarder/external_endpoint_non_retryable_failures_total → arb/filter_report/forwarder/endpoint_fatal_failure_total arb/filtering-report/forwarder/external_endpoint_successes_total → arb/filter_report/forwarder/endpoint_success_total arb/filtering-report/forwarder/sqs_receive_failures_total → arb/filter_report/forwarder/sqs_receive_failure_total arb/filtering-report/forwarder/sqs_receive_successes_total → arb/filter_report/forwarder/sqs_receive_success_total arb/filtering-report/forwarder/sqs_delete_failures_total → arb/filter_report/forwarder/sqs_delete_failure_total arb/filtering-report/forwarder/sqs_delete_successes_total → arb/filter_report/forwarder/sqs_delete_success_total arb/filtering-report/forwarder/poison_queue_send_failures_total → arb/filter_report/forwarder/poison_send_failure_total arb/filtering-report/forwarder/poison_queue_send_successes_total → arb/filter_report/forwarder/poison_send_success_total arb/filtering-report/forwarder/external_endpoint_slowdown_triggered_total → arb/filter_report/forwarder/endpoint_slowdown_total arb/filtering-report/signer/reload_failures_total → arb/filter_report/signer/reload_failure_total arb/transaction-filterer/add_filtered_transaction_failures_total → arb/tx_filterer/add_failure_total arb/transaction-filterer/add_filtered_transaction_successes_total → arb/tx_filterer/add_success_total arb/transaction-filterer/filter_queue_depth → arb/tx_filterer/queue_depth Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Catches metric names that produce invalid Prometheus identifiers after geth's /→_ path translation. Hyphens and other non-[a-zA-Z0-9_:] characters survive the translation unchanged, violating the Prometheus spec (^[a-zA-Z_:][a-zA-Z0-9_:]*$). The analyzer checks all metrics.NewRegistered* call sites at compile time, so the bug that prompted this (arb/filtering-report/... paths) cannot recur undetected. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-names Fix invalid Prometheus metric names in filtering components
remove legacy validator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
合并 upstream
v3.10.2→v3.11.0-rc.3进debank。冲突全部解决,0 unmerged / 0 conflict marker 残留。验证方法:每个冲突文件,将 debank 既有 patch(
git diff v3.10.2..HEAD)与解决后工作树相对 rc.3 的净 delta(git diff MERGE_HEAD..worktree)比对,确认 fork 意图无丢失(差异仅为 upstream refactor)。保留的 fork patch(逐条)
1. go-ethereum submodule →
9b5d022b3ftwo-level fork,submodule 走独立的
go-ethereum-arbPR(分支merge-c17f023e-for-v3.11.0-rc.3)。gitlink 由937af5a9前进到9b5d022b3f,其 parents = debank go-ethereum-arb tipcc87f9ac82+ upstream gethc17f023e(即 nitro v3.11.0-rc.3 所 pin 的 geth commit)。go build ./...全量 PASS(exit 0)。2. go.mod / go.sum — debank 依赖
保留 debank 全部依赖、未被 rc.3 覆盖:
github.com/Chaintable/pipeline v0.0.61-nitro-v3.5.6-2(fork 自有 module,精确版本,go.sum hash 完整)segmentio/kafka-go、go.etcd.io/etcd/{api,client/pkg,client}/v3 v3.5.10、go.uber.org/{zap,multierr}、coreos/go-systemd+go-semver、pierrec/lz4、klauspost/compress 1.17.11、secp256k1 4.3.0AWS SDK 取 rc.3 的更新版本(
config 1.29.14≥ debank1.28.5),无降级、无 drift;go.sum tidy。3. Dockerfile — 私有 module 拉取鉴权
保留
ARG ACCESS_TOKEN+git config insteadOf。go mod download阶段拉取私有Chaintable/pipelinemodule 的鉴权,缺失则 build fail。4. CI — 维持 strip upstream GitHub Actions
upstream
_detect-changes/_rust-tests/ci/update_license4 个 workflow 的 modify/delete 冲突一律按 delete 解决;解决后工作树已确认无 upstream workflow 泄漏(仅余 3 个 debank 条目)。.github/buildspec.yml)构建,只保留build.debank.yml+release.debank.yml。与 upstream 对齐(一笔带过)
13 个 upstream-owned 文件(bold/assertions/sync、cmd/nitro init+nitro.go、gethexec node + tx_pre_checker、address-filter / prechecker / tx-address-filter 测试、util/s3syncer、CHANGELOG)直接取 rc.3,与 MERGE_HEAD byte-identical——debank 在这些文件上无 patch,冲突纯属 v3.10.0 merge-base 产物。Dockerfile 中针对私有 WAVM machine 下载的过时 workaround 随 upstream 收编移除。
需关注(待 forward 分析)
rc.3 将 consensus-v60-rc.4/rc.5 WAVM machine 改为公开下载(移除
--mount=secret与私有 repo,hash 不变0x333f/0x7a9e),故 debank 原先注释掉这些下载行的 workaround 失效、已移除,镜像现会 bake 全套 machine。该路径属 fraud-proof / validation 流程,fork 的采集/同步功能不经过此路径,运行时 inert,仅 build-time 镜像体积变化。Build gate
go build ./...全量 PASS(exit 0).go文件gofmt -lclean;non-solgen smoke build(util/s3syncer、util/sqsclient、util/iostat、util/httperror——覆盖 debank AWS SDK 依赖)PASSgo build ./...留给 CI Docker(需 solgen 生成的 bindings);本地探测确认全部失败均为no required module provides .../solgen/go/*,无任何 undefined/redeclared/syntax/type error,即无 merge 引入的编译回归