Skip to content

Conversation

@pmikolajczyk41
Copy link
Member

@pmikolajczyk41 pmikolajczyk41 commented Oct 9, 2025

  1. Hide referenceda.signing-key.private-key from dumping (privacy reasons)
  2. Preserve contracts and contracts-local in the final docker image - these are required to build and deploy ReferenceDAProofValidator.sol in the nitro-testnode

related PR: OffchainLabs/nitro-testnode#157

@pmikolajczyk41 pmikolajczyk41 marked this pull request as draft October 9, 2025 12:36
@github-actions
Copy link

github-actions bot commented Oct 9, 2025

❌ 3 Tests Failed:

Tests completed Failed Passed Skipped
2141 3 2138 0
View the top 3 failed tests by shortest run time
TestPrimaryToSecondaryFailover
Stack Traces | 5.350s run time
=== RUN   TestPrimaryToSecondaryFailover
=== PAUSE TestPrimaryToSecondaryFailover
=== CONT  TestPrimaryToSecondaryFailover
INFO [10-09|16:06:11.877] arbitrum websocket broadcast server is listening address=[::]:37959
INFO [10-09|16:06:11.877] arbitrum websocket broadcast server is listening address=[::]:45621
INFO [10-09|16:06:11.880] connecting to arbitrum inbox message broadcaster url=ws://127.0.0.1:37959
    broadcastclients_test.go:194: Primary broadcaster listening on: [::]:45621
INFO [10-09|16:06:11.886] arbitrum websocket broadcast server is listening address=[::]:36119
    broadcastclients_test.go:195: Secondary broadcaster listening on: [::]:36119
    broadcastclients_test.go:218: Primary URL: ws://127.0.0.1:45621
    broadcastclients_test.go:219: Secondary URL: ws://127.0.0.1:36119
    broadcastclients_test.go:266: Phase 1: Sending messages from primary broadcaster
INFO [10-09|16:06:11.889] connecting to arbitrum inbox message broadcaster url=ws://127.0.0.1:45621
INFO [10-09|16:06:11.896] Feed connected                           feedServerVersion=2 chainId=1234 requestedSeqNum=0
INFO [10-09|16:06:11.899] Feed connected                           feedServerVersion=2 chainId=1234 requestedSeqNum=0
    broadcastclients_test.go:298: Timed out waiting for message 5/5 from primary
--- FAIL: TestPrimaryToSecondaryFailover (5.35s)
TestArbOSVersion50
Stack Traces | 5.890s run time
... [CONTENT TRUNCATED: Keeping last 20 lines]
=== PAUSE TestArbOSVersion50
=== CONT  TestArbOSVersion50
    precompile_inclusion_test.go:90: goroutine 520102 [running]:
        runtime/debug.Stack()
        	/opt/hostedtoolcache/go/1.25.2/x64/src/runtime/debug/stack.go:26 +0x5e
        github.com/offchainlabs/nitro/util/testhelpers.RequireImpl({0x40a64f0, 0xc0c0715c00}, {0x40645c0, 0xc119f29950}, {0x0, 0x0, 0x0})
        	/home/runner/work/nitro/nitro/util/testhelpers/testhelpers.go:29 +0x55
        github.com/offchainlabs/nitro/system_tests.Require(0xc0c0715c00, {0x40645c0, 0xc119f29950}, {0x0, 0x0, 0x0})
        	/home/runner/work/nitro/nitro/system_tests/common_test.go:1819 +0x5d
        github.com/offchainlabs/nitro/system_tests.testPrecompiles(0xc0c0715c00, 0x32, {0xc087e0be88, 0x3, 0x5c10e20?})
        	/home/runner/work/nitro/nitro/system_tests/precompile_inclusion_test.go:90 +0x371
        github.com/offchainlabs/nitro/system_tests.TestArbOSVersion50(0xc0c0715c00?)
        	/home/runner/work/nitro/nitro/system_tests/precompile_inclusion_test.go:75 +0x3ef
        testing.tRunner(0xc0c0715c00, 0x3cecf18)
        	/opt/hostedtoolcache/go/1.25.2/x64/src/testing/testing.go:1934 +0xea
        created by testing.(*T).Run in goroutine 1
        	/opt/hostedtoolcache/go/1.25.2/x64/src/testing/testing.go:1997 +0x465
        
    precompile_inclusion_test.go:90: �[31;1m [] execution aborted (timeout = 5s) �[0;0m
--- FAIL: TestArbOSVersion50 (5.89s)
TestEthSyncing
Stack Traces | 106.150s run time
... [CONTENT TRUNCATED: Keeping last 20 lines]
ERROR[10-09|16:22:12.973] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=8   messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=93 batchBacklogEstimate=93
ERROR[10-09|16:22:13.038] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=9   messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=92 batchBacklogEstimate=92
ERROR[10-09|16:22:13.079] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=10  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=91 batchBacklogEstimate=91
ERROR[10-09|16:22:13.106] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=11  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=90 batchBacklogEstimate=90
ERROR[10-09|16:22:13.180] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=12  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=89 batchBacklogEstimate=89
ERROR[10-09|16:22:13.239] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=13  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=88 batchBacklogEstimate=88
ERROR[10-09|16:22:13.421] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=14  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=87 batchBacklogEstimate=87
ERROR[10-09|16:22:13.488] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=15  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=86 batchBacklogEstimate=86
ERROR[10-09|16:22:13.545] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=16  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=85 batchBacklogEstimate=85
ERROR[10-09|16:22:13.603] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=17  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=84 batchBacklogEstimate=84
ERROR[10-09|16:22:13.644] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=18  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=83 batchBacklogEstimate=83
ERROR[10-09|16:22:13.711] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=19  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=82 batchBacklogEstimate=82
ERROR[10-09|16:22:13.781] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=20  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=81 batchBacklogEstimate=81
ERROR[10-09|16:22:13.841] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=21  messageCount=101 messagesPerBatch=1 postedMessages=1 unpostedMessages=80 batchBacklogEstimate=80
ERROR[10-09|16:22:14.130] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=22  messageCount=103 messagesPerBatch=1 postedMessages=1 unpostedMessages=81 batchBacklogEstimate=81
ERROR[10-09|16:22:14.212] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=23  messageCount=105 messagesPerBatch=1 postedMessages=1 unpostedMessages=82 batchBacklogEstimate=82
ERROR[10-09|16:22:14.285] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=24  messageCount=105 messagesPerBatch=1 postedMessages=1 unpostedMessages=81 batchBacklogEstimate=81
ERROR[10-09|16:22:14.339] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=25  messageCount=107 messagesPerBatch=1 postedMessages=1 unpostedMessages=82 batchBacklogEstimate=82
ERROR[10-09|16:22:14.387] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=26  messageCount=107 messagesPerBatch=1 postedMessages=1 unpostedMessages=81 batchBacklogEstimate=81
ERROR[10-09|16:22:14.449] a large batch posting backlog exists     recentlyHitL1Bounds=false currentPosition=27  messageCount=108 messagesPerBatch=1 postedMessages=1 unpostedMessages=81 batchBacklogEstimate=81

📣 Thoughts on this report? Let Codecov know! | Powered by Codecov

@Tristan-Wilson Tristan-Wilson merged commit 971da34 into custom-da Oct 9, 2025
15 checks passed
@Tristan-Wilson Tristan-Wilson deleted the pmikolajczyk/nit-3473-nitro-testnode-with-reference-da branch October 9, 2025 16:07
Tristan-Wilson added a commit that referenced this pull request Oct 17, 2025
This commit moves the ReferenceDAProofValidator contract and tests from
nitro-contracts to contracts-local, as this is a reference
implementation that doesn't need to be part of the core nitro-contracts
package. The solidity contract was already reviewed in
OffchainLabs/nitro-contracts#357

Since the Reference DA contract is now available, this commit
activates contract-based certificate validation by uncommenting the
ValidateWithContract calls in certificate.go, reference_reader.go, and
reference_validator.go. These were previously disabled with TODO
comments waiting for contract merge.

This commit also includes some changes required for nitro-testnode to
work in CustomDA mode with Reference DA. It Ensures contracts are
available in Docker builds by copying both contracts/ and
contracts-local/ directories. It also adds ReferenceDA signing key to
config dump exclusion list to prevent accidental exposure of private
keys.  This change was merged into the custom-da branch in:
#3803

Other changes required that were needed for the standalone daprovider to
work with nitro-testnode were:
   - New parent-chain-node-url and parent-chain-connection-attempts
     config
   - L1 client creation in daprovider startup for ReferenceDA mode
This change was merged into the custom-da branch in:
#3819
Tristan-Wilson added a commit that referenced this pull request Oct 17, 2025
This commit moves the ReferenceDAProofValidator contract and tests from
nitro-contracts to contracts-local, as this is a reference
implementation that doesn't need to be part of the core nitro-contracts
package. The solidity contract was already reviewed in
OffchainLabs/nitro-contracts#357

Since the Reference DA contract is now available, this commit
activates contract-based certificate validation by uncommenting the
ValidateWithContract calls in certificate.go, reference_reader.go, and
reference_validator.go. These were previously disabled with TODO
comments waiting for contract merge.

This commit also includes some changes required for nitro-testnode to
work in CustomDA mode with Reference DA. It Ensures contracts are
available in Docker builds by copying both contracts/ and
contracts-local/ directories. It also adds ReferenceDA signing key to
config dump exclusion list to prevent accidental exposure of private
keys.  This change was merged into the custom-da branch in:
#3803

Other changes required that were needed for the standalone daprovider to
work with nitro-testnode were:
   - New parent-chain-node-url and parent-chain-connection-attempts
     config
   - L1 client creation in daprovider startup for ReferenceDA mode
This change was merged into the custom-da branch in:
#3819
github-merge-queue bot pushed a commit that referenced this pull request Oct 24, 2025
* Add proof enhancer system with customda enhancers

This adds infrastructure to enhance one-step proofs with additional
data required by the arbitrator, particularly for custom DA systems.

The proof enhancer system intercepts one-step proofs that have an
enhancement flag set by the arbitrator. When the arbitrator needs
additional data that it cannot access directly (like DA certificates
or preimage data), it sets this flag along with a marker byte indicating
what type of enhancement is needed.

The system includes:
- ProofEnhancementManager: Routes proofs to appropriate enhancers based on marker bytes
- ReadPreimageProofEnhancer: Handles DA preimage read requests (marker 0xDA)
- ValidateCertificateProofEnhancer: Handles certificate validation requests (marker 0xDB)

Both enhancers retrieve the certificate from the sequencer message stored
in the inbox, then use the daprovider.Validator interface to generate the
appropriate proofs. This design allows the arbitrator to request DA operations
without needing to store large certificates in its limited WASM memory.

The enhanced proofs are then sent to the OSP (on-chain prover) which can
verify them against the actual DA system's validation logic.

* Add more comments explaining proof enhancement

* ProofMarker byte type alias

* Remove hardcoded values

* Move proof enhancer to its own package

* Convenience method for creating custom DA proof enhancers

* add comments about enhancement flags

* Full ReferenceDA implementation

This commit moves the ReferenceDAProofValidator contract and tests from
nitro-contracts to contracts-local, as this is a reference
implementation that doesn't need to be part of the core nitro-contracts
package. The solidity contract was already reviewed in
OffchainLabs/nitro-contracts#357

Since the Reference DA contract is now available, this commit
activates contract-based certificate validation by uncommenting the
ValidateWithContract calls in certificate.go, reference_reader.go, and
reference_validator.go. These were previously disabled with TODO
comments waiting for contract merge.

This commit also includes some changes required for nitro-testnode to
work in CustomDA mode with Reference DA. It Ensures contracts are
available in Docker builds by copying both contracts/ and
contracts-local/ directories. It also adds ReferenceDA signing key to
config dump exclusion list to prevent accidental exposure of private
keys.  This change was merged into the custom-da branch in:
#3803

Other changes required that were needed for the standalone daprovider to
work with nitro-testnode were:
   - New parent-chain-node-url and parent-chain-connection-attempts
     config
   - L1 client creation in daprovider startup for ReferenceDA mode
This change was merged into the custom-da branch in:
#3819

* Add ProviderType byte to ReferenceDA certificate

This shows how different custom DA providers can distinguish themselves
by using a byte after the DACertificateMessageHeaderFlag which
identifies the certificate as coming from some custom DA system.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants