Skip to content

Commit

Permalink
Merge branch 'develop' into task/KS-464/test-race-flake-syncer
Browse files Browse the repository at this point in the history
  • Loading branch information
vyzaldysanchez authored Oct 15, 2024
2 parents 6d217db + a2b8566 commit f6a3e8f
Show file tree
Hide file tree
Showing 63 changed files with 2,612 additions and 7,703 deletions.
25 changes: 25 additions & 0 deletions .changeset/orange-feet-share.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
"chainlink": minor
---

Implemented new chain agnostic MultiNode design along with the corresponding EVM implementation. The chain agnostic components enable Multinode to be integrated with Solana and other non-EVM chains. Previously the Multinode was coupled with EVM specific actions, and was called to execute these actions direclty. With this change, the MultiNode's responsibility has been simplified to focus on RPC selection along with performing health checks. Chain specific actions will instead be executed on the RPC directly after being selected by MultiNode. The Chain Agnostic MultiNode provides improved reliability and metrics for all chain integrations using it.

These are following main components:
Node: Common component which wraps an RPC with state information, health checks, and an alive loop to handle state changes along with maintaining chain information.
RPCClient: Chain-specific RPC wrapper which implements required interface for MultiNode along with any chain-specific functionality needed.
MultiNode: Perform RPCClient selection and performs health checks on all RPCs.
TransactionSender: Chain agnostic component which broadcasts transactions to all healthy RPCs and aggregates results. A chain-specific error classifier must be implemented.

MultiNode picks the "best" RPC based on one of the configurable criteria:
- Priority defined in the config.
- Highest latest block.
- Round-robin within the same priority level (or using other configurable selection algorithms)

Benefits of Chain Agnostic MultiNode:
Reliability: Improved RPC reliability scaleable to all chains
Maintainability: Can apply changes across all chain integrations through the use of common code
Extendability: Can add new health checks, RPC selection and ranking algorithms
Integration Speed: Much faster to integrate MultiNode with new chains
Reduced Generics: Significantly less bulky code!

#updated #changed #internal
4 changes: 1 addition & 3 deletions .mockery.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,8 @@ packages:
NodeSelector:
sendOnlyClient:
SendOnlyNode:
RPC:
RPCClient:
Head:
NodeClient:
PoolChainInfoProvider:
github.com/smartcontractkit/chainlink/v2/common/headtracker:
interfaces:
Expand Down Expand Up @@ -54,7 +53,6 @@ packages:
github.com/smartcontractkit/chainlink/v2/core/chains/evm/client:
interfaces:
Client:
RPCClient:
github.com/smartcontractkit/chainlink/v2/core/chains/evm/config:
interfaces:
GasEstimator:
Expand Down
Loading

0 comments on commit f6a3e8f

Please sign in to comment.