-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Add NoDAG CRE LLO Trigger #20784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Add NoDAG CRE LLO Trigger #20784
Conversation
|
👋 cawthorne, thanks for creating this pull request! To help reviewers, please consider creating future PRs as drafts first. This allows you to self-review and make any final changes before notifying the team. Once you're ready, you can mark it as "Ready for review" to request feedback. Thanks! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds NoDAG CRE (Capability Runtime Environment) LLO (Low-Latency Oracle) Trigger support by wrapping the existing legacy transmitter with a new proto-based API adapter.
Changes:
- Created
nodagTransmitteras an adapter between the legacy transmitter and the NoDAG capability API - Implemented proto-based
RegisterTriggerandUnregisterTriggermethods with type-safe configuration and output - Added comprehensive test coverage for the new transmitter and conversion functions
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| go.mod | Added local replace directive for chainlink-common dependency |
| core/services/llo/cre/nodag_transmitter.go | Implements the NoDAG transmitter adapter with conversion logic between proto and legacy formats |
| core/services/llo/cre/nodag_transmitter_test.go | Comprehensive test suite covering transmitter creation, config conversion, response conversion, trigger registration, and channel bridging |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| replace github.com/smartcontractkit/chainlink-common => ../chainlink-common |
Copilot
AI
Jan 13, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Local replace directive should not be committed to the repository. This will prevent other developers from building the project unless they have a matching local directory structure. Remove this line before merging.
| replace github.com/smartcontractkit/chainlink-common => ../chainlink-common |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is only temporary for development.
|
I see you updated files related to
|
|




Title:
Add NoDAG CRE LLO TriggerDescription:
Summary
Implement the NoDAG CRE LLO Trigger capability, enabling Asset DON → CRE DON-to-DON communication for Data Feeds workflows.
This PR adds a standalone NoDAG transmitter that receives OCR reports from the LLO plugin and distributes them to CRE workflow subscribers via the NoDAG Capability API.
What Changed
New Files:
core/services/llo/cre/nodag_transmitter.go(~300 lines)llotypes.Transmitter(receives from LLO plugin)StreamsCapabilityinterface (NoDAG trigger API)core/services/llo/cre/nodag_transmitter_test.go(~400 lines)Modified Files:
go.mod: Added localreplacedirective forchainlink-common(temporary for development)Architecture
Key Components:
max_frequency_msfor each workflowReportFormatCapabilityTrigger+LifeCycleStageProductionOCRSignatureformatWhy These Changes
Migration to NoDAG: This implementation enables the migration of Keystone Data Feeds workflows from the legacy DAG architecture to the new CRE NoDAG architecture.
Standalone Design: Unlike the legacy transmitter which directly transmitted to onchain contracts, this implementation is workflow-driven:
Preserved Functionality: All key features of the legacy transmitter are preserved:
Transmit()interface)stream_ids)Testing
Unit Test Results:
Test Coverage:
Integration
Current Status: Ready for integration into LLO delegate
Next Steps (Future PR):
core/services/llo/delegate.gonodagTransmitteras alternative to legacy transmitterReportFormatCapabilityTriggerUsage Example:
Performance
Benchmarked Characteristics:
Transmit()to subscriber notificationThrottling Behavior:
alignedTs % MaxFrequencyMs == 0eventIDandworkflowIDDesign Doc
See comprehensive design document: LLO CRE DON-to-DON Trigger Design
Covers:
Related PRs
Breaking Changes
None. This is new code that does not affect existing LLO functionality.
Note: The
replacedirective ingo.modis temporary for local development and will be removed oncechainlink-common#1770is merged and published.Checklist
StreamsCapabilityinterfaceFuture Work
Questions for Reviewers