Add rebased Aptos CRE common and loop support#1896
Conversation
|
📊 API Diff Results
|
📊 API Diff Results
|
0f8d364 to
618e65e
Compare
618e65e to
435e3f3
Compare
08e3391 to
14af889
Compare
14af889 to
58cb813
Compare
2268e11 to
62e689e
Compare
There was a problem hiding this comment.
Pull request overview
This PR rebases and narrows the shared Aptos “CRE common” surface in chainlink-common, adding the Aptos loop/service types and compatibility needed by CRE’s integration path (read baseline + write-path shared pieces), and refreshing generated protobuf/gRPC outputs accordingly.
Changes:
- Extend Aptos support with
LedgerVersion, optionalLedgerVersionfor view calls, and capability-to-relayer conversion helpers + tests. - Add Aptos write-status classification helpers + tests for distinguishing forwarder/receiver failures.
- Adjust loop/relayer “finalized head” handling to fall back to
LatestHead(and remove the dedicated finalized-head RPCs), plus update transmitter decoding compatibility and DON time store semantics.
Reviewed changes
Copilot reviewed 41 out of 42 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| sonar-project.properties | Updates Sonar coverage exclusions to reflect regenerated/internal code locations. |
| pkg/workflows/dontime/transmitter_test.go | Adds test ensuring transmit does not delete cached DON times for omitted execution IDs. |
| pkg/workflows/dontime/transmitter.go | Changes transmit behavior to update per-executionID without replacing/deleting the whole map. |
| pkg/workflows/dontime/store.go | Removes replaceDonTimes, aligning store behavior with “preserve cached” semantics. |
| pkg/workflows/dontime/plugin_test.go | Refactors/updates outcome tests for missing/empty observed entries and new transmit semantics. |
| pkg/workflows/dontime/plugin.go | Initializes missing observed entries during outcome processing; changes expiry cleanup behavior and trims logging. |
| pkg/types/relayer.go | Adjusts FinalizedHead contract docs; adds FinalizedHeadService; aliases UnimplementedChainService; adds Aptos LedgerVersion stub. |
| pkg/types/mocks/aptos_service.go | Regenerates mock to include LedgerVersion. |
| pkg/types/chains/aptos/write_status_test.go | Adds tests for Aptos write VM-status classification helpers. |
| pkg/types/chains/aptos/write_status.go | Implements Aptos write VM-status classification (forwarder vs receiver, retryable vs terminal). |
| pkg/types/chains/aptos/capability_convert_test.go | Adds tests for capability payload conversion to relayer types. |
| pkg/types/chains/aptos/capability_convert.go | Adds conversion logic from Aptos capability payload/type tags to relayer types. |
| pkg/types/chains/aptos/aptos.go | Adds LedgerVersion to client interface and optional LedgerVersion to ViewRequest. |
| pkg/loop/relayer_service_test.go | Adds test asserting FinalizedHead falls back to LatestHead. |
| pkg/loop/relayer_service.go | Implements finalized-head fallback via FinalizedHeadService type assertion, else LatestHead. |
| pkg/loop/internal/relayerset/server.go | Removes relayerset finalized-head RPC handler. |
| pkg/loop/internal/relayerset/relayerset_test.go | Adds Aptos LedgerVersion and View-with-ledger-version tests. |
| pkg/loop/internal/relayerset/relayer.go | Makes relayerset FinalizedHead fall back to LatestHead. |
| pkg/loop/internal/relayerset/client.go | Removes relayerset client finalized-head RPC wrapper. |
| pkg/loop/internal/relayerset/aptos.go | Adds Aptos LedgerVersion RPC wiring and passes through optional view LedgerVersion. |
| pkg/loop/internal/relayer/test/relayer.go | Updates test relayer FinalizedHead to return LatestHead. |
| pkg/loop/internal/relayer/relayer.go | Removes loop relayer finalized-head RPC; makes client fallback to LatestHead. |
| pkg/loop/internal/relayer/pluginprovider/contractreader/test/loop_server_tester.go | Avoids require in goroutine; stores server reference and ignores Serve error. |
| pkg/loop/internal/relayer/aptos_test.go | Adds gRPC round-trip tests for Aptos LedgerVersion and view LedgerVersion. |
| pkg/loop/internal/relayer/aptos.go | Adds Aptos LedgerVersion RPC + optional LedgerVersion in view request mapping. |
| pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go | Regenerates relayerset gRPC stubs removing finalized-head RPC. |
| pkg/loop/internal/pb/relayerset/relayerset.proto | Removes relayerset finalized-head RPC/messages. |
| pkg/loop/internal/pb/relayerset/relayerset.pb.go | Regenerates relayerset protobuf output after API removal. |
| pkg/loop/internal/pb/relayer_grpc.pb.go | Regenerates relayer gRPC stubs removing finalized-head RPC. |
| pkg/loop/internal/pb/relayer.proto | Removes relayer finalized-head RPC/messages. |
| pkg/loop/internal/pb/relayer.pb.go | Regenerates relayer protobuf output after API removal. |
| pkg/loop/internal/example-relay/main.go | Updates example relayer FinalizedHead to return LatestHead. |
| pkg/loop/internal/core/services/capability/capabilities_registry_test.go | Adds tests for transmitter account decoding compatibility. |
| pkg/loop/internal/core/services/capability/capabilities_registry.go | Adds transmitterAccountToBytes to support 0x-prefixed hex and raw-bytes compatibility. |
| pkg/chains/aptos/aptos_grpc.pb.go | Regenerates Aptos gRPC stubs adding LedgerVersion RPC. |
| pkg/chains/aptos/aptos.proto | Adds LedgerVersion RPC and optional ledger_version on view request. |
| pkg/chains/aptos/aptos.pb.go | Regenerates Aptos protobuf output for LedgerVersion and optional view ledger_version. |
| pkg/capabilities/v2/chain-capabilities/solana/generate.go | Temporarily disables Solana proto regeneration (missing source proto). |
| pkg/capabilities/v2/chain-capabilities/evm/client.pb.go | Updates generated EVM capability proto output (chain selector/rawDesc changes). |
| pkg/capabilities/v2/chain-capabilities/aptos/client.pb.go | Updates generated Aptos capability proto output (view ledger version + receiver execution status field). |
| go.mod | Bumps chainlink-protos/cre/go dependency to the rebased version. |
| go.sum | Updates sums for the bumped chainlink-protos/cre/go version. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
Summary
What changed
LedgerVersionsupport used by the Aptos read flowWhy
The Aptos local CRE stack needs the common Aptos loop/service surface from the earlier read-capability work, plus the shared compatibility pieces consumed by the write path. This PR keeps that layer narrow so downstream repos do not need to reach around
chainlink-common.Testing
go test ./pkg/types/chains/aptos ./pkg/loop/internal/relayer ./pkg/loop/internal/relayerset ./pkg/loop/internal/core/services/capability -count=1CI refs