diff --git a/.gitignore b/.gitignore index de57cfb672..cd6a6ea09c 100644 --- a/.gitignore +++ b/.gitignore @@ -75,7 +75,7 @@ MacOSX* cache core/services/ocr2/plugins/ccip/transactions.rlp lcov.info -!core/services/ocr2/plugins/ccip/cache/ +!core/services/ocr2/plugins/ccip/internal/cache/ core/scripts/ccip/json/credentials diff --git a/core/services/ocr2/plugins/ccip/commit_plugin.go b/core/services/ocr2/plugins/ccip/commit_plugin.go index 170df6713b..f86b06b15d 100644 --- a/core/services/ocr2/plugins/ccip/commit_plugin.go +++ b/core/services/ocr2/plugins/ccip/commit_plugin.go @@ -10,9 +10,14 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" chainselectors "github.com/smartcontractkit/chain-selectors" - relaylogger "github.com/smartcontractkit/chainlink-relay/pkg/logger" + libocr2 "github.com/smartcontractkit/libocr/offchainreporting2plus" + relaylogger "github.com/smartcontractkit/chainlink-relay/pkg/logger" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/oraclelib" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/txmgr" @@ -21,9 +26,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/job" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/promwrapper" "github.com/smartcontractkit/chainlink/v2/core/services/pg" "github.com/smartcontractkit/chainlink/v2/core/services/pipeline" @@ -92,7 +95,7 @@ func NewCommitServices(lggr logger.Logger, jb job.Job, chainSet evm.LegacyChainC return nil, err } - leafHasher := hasher.NewLeafHasher(staticConfig.SourceChainSelector, staticConfig.ChainSelector, onRamp.Address(), hasher.NewKeccakCtx()) + leafHasher := hashlib.NewLeafHasher(staticConfig.SourceChainSelector, staticConfig.ChainSelector, onRamp.Address(), hashlib.NewKeccakCtx()) // Note that lggr already has the jobName and contractID (commit store) commitLggr := lggr.Named("CCIPCommit").With( "sourceChain", ChainName(int64(chainId)), @@ -136,7 +139,7 @@ func NewCommitServices(lggr logger.Logger, jb job.Job, chainSet evm.LegacyChainC "sourceRouter", sourceRouter.Address()) // If this is a brand-new job, then we make use of the start blocks. If not then we're rebooting and log poller will pick up where we left off. if new { - return []job.ServiceCtx{NewBackfilledOracle( + return []job.ServiceCtx{oraclelib.NewBackfilledOracle( commitLggr, sourceChain.LogPoller(), destChain.LogPoller(), diff --git a/core/services/ocr2/plugins/ccip/commit_reporting_plugin.go b/core/services/ocr2/plugins/ccip/commit_reporting_plugin.go index e6207fae90..8d22fb8461 100644 --- a/core/services/ocr2/plugins/ccip/commit_reporting_plugin.go +++ b/core/services/ocr2/plugins/ccip/commit_reporting_plugin.go @@ -24,11 +24,12 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/price_registry" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/cache" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/merklemulti" + + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/cache" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/merklemulti" "github.com/smartcontractkit/chainlink/v2/core/services/pg" ) @@ -64,7 +65,7 @@ type CommitPluginConfig struct { sourceNative common.Address sourceFeeEstimator gas.EvmFeeEstimator sourceClient, destClient evmclient.Client - leafHasher hasher.LeafHasherInterface[[32]byte] + leafHasher hashlib.LeafHasherInterface[[32]byte] checkFinalityTags bool } @@ -678,7 +679,7 @@ func (r *CommitReportingPlugin) buildReport(ctx context.Context, lggr logger.Log return commit_store.CommitStoreCommitReport{}, fmt.Errorf("tried building a tree without leaves") } - tree, err := merklemulti.NewTree(hasher.NewKeccakCtx(), leaves) + tree, err := merklemulti.NewTree(hashlib.NewKeccakCtx(), leaves) if err != nil { return commit_store.CommitStoreCommitReport{}, err } diff --git a/core/services/ocr2/plugins/ccip/commit_reporting_plugin_test.go b/core/services/ocr2/plugins/ccip/commit_reporting_plugin_test.go index be1037d0b2..416cad1258 100644 --- a/core/services/ocr2/plugins/ccip/commit_reporting_plugin_test.go +++ b/core/services/ocr2/plugins/ccip/commit_reporting_plugin_test.go @@ -33,12 +33,11 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/cache" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/merklemulti" - + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/cache" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/merklemulti" plugintesthelpers "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers/plugins" "github.com/smartcontractkit/chainlink/v2/core/store/models" "github.com/smartcontractkit/chainlink/v2/core/utils" @@ -85,7 +84,7 @@ func setupCommitTestHarness(t *testing.T) commitTestHarness { sourceChainSelector: th.Source.ChainSelector, destClient: backendClient, sourceClient: backendClient, - leafHasher: hasher.NewLeafHasher(th.Source.ChainSelector, th.Dest.ChainSelector, th.Source.OnRamp.Address(), hasher.NewKeccakCtx()), + leafHasher: hashlib.NewLeafHasher(th.Source.ChainSelector, th.Dest.ChainSelector, th.Source.OnRamp.Address(), hashlib.NewKeccakCtx()), }, inflightReports: newInflightCommitReportsContainer(time.Hour), onchainConfig: th.CommitOnchainConfig, @@ -142,7 +141,7 @@ func TestCommitReportEncoding(t *testing.T) { newGasPrice := big.NewInt(2000e9) // $2000 per eth * 1gwei // Send a report. - mctx := hasher.NewKeccakCtx() + mctx := hashlib.NewKeccakCtx() tree, err := merklemulti.NewTree(mctx, [][32]byte{mctx.Hash([]byte{0xaa})}) require.NoError(t, err) report := commit_store.CommitStoreCommitReport{ @@ -1096,7 +1095,7 @@ func TestShouldAcceptFinalizedReport(t *testing.T) { } func TestCommitReportToEthTxMeta(t *testing.T) { - mctx := hasher.NewKeccakCtx() + mctx := hashlib.NewKeccakCtx() tree, err := merklemulti.NewTree(mctx, [][32]byte{mctx.Hash([]byte{0xaa})}) require.NoError(t, err) diff --git a/core/services/ocr2/plugins/ccip/execution_batch_building.go b/core/services/ocr2/plugins/ccip/execution_batch_building.go index ede8b919a1..5f2019c24f 100644 --- a/core/services/ocr2/plugins/ccip/execution_batch_building.go +++ b/core/services/ocr2/plugins/ccip/execution_batch_building.go @@ -13,16 +13,16 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/merklemulti" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/merklemulti" "github.com/smartcontractkit/chainlink/v2/core/services/pg" ) func getProofData( ctx context.Context, lggr logger.Logger, - hashLeaf hasher.LeafHasherInterface[[32]byte], + hashLeaf hashlib.LeafHasherInterface[[32]byte], onRampAddress common.Address, sourceEventsClient ccipevents.Client, interval commit_store.CommitStoreInterval, @@ -41,7 +41,7 @@ func getProofData( if err != nil { return nil, nil, nil, err } - tree, err = merklemulti.NewTree(hasher.NewKeccakCtx(), leaves) + tree, err = merklemulti.NewTree(hashlib.NewKeccakCtx(), leaves) if err != nil { return nil, nil, nil, err } diff --git a/core/services/ocr2/plugins/ccip/execution_plugin.go b/core/services/ocr2/plugins/ccip/execution_plugin.go index d6dd95442e..6f3d57cd04 100644 --- a/core/services/ocr2/plugins/ccip/execution_plugin.go +++ b/core/services/ocr2/plugins/ccip/execution_plugin.go @@ -15,6 +15,9 @@ import ( libocr2 "github.com/smartcontractkit/libocr/offchainreporting2plus" relaylogger "github.com/smartcontractkit/chainlink-relay/pkg/logger" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/oraclelib" "github.com/smartcontractkit/chainlink/v2/core/chains/evm" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" @@ -26,9 +29,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/job" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/observability" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/offchaintokendata" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/offchaintokendata/usdc" @@ -137,7 +138,7 @@ func NewExecutionServices(lggr logger.Logger, jb job.Job, chainSet evm.LegacyCha destClient: destChain.Client(), sourceClient: sourceChain.Client(), destGasEstimator: destChain.GasEstimator(), - leafHasher: hasher.NewLeafHasher(offRampConfig.SourceChainSelector, offRampConfig.ChainSelector, onRamp.Address(), hasher.NewKeccakCtx()), + leafHasher: hashlib.NewLeafHasher(offRampConfig.SourceChainSelector, offRampConfig.ChainSelector, onRamp.Address(), hashlib.NewKeccakCtx()), tokenDataProviders: tokenDataProviders, }) @@ -162,7 +163,7 @@ func NewExecutionServices(lggr logger.Logger, jb job.Job, chainSet evm.LegacyCha // If this is a brand-new job, then we make use of the start blocks. If not then we're rebooting and log poller will pick up where we left off. if new { return []job.ServiceCtx{ - NewBackfilledOracle( + oraclelib.NewBackfilledOracle( execLggr, sourceChain.LogPoller(), destChain.LogPoller(), diff --git a/core/services/ocr2/plugins/ccip/execution_reporting_plugin.go b/core/services/ocr2/plugins/ccip/execution_reporting_plugin.go index 5423f39f29..7c86ea527d 100644 --- a/core/services/ocr2/plugins/ccip/execution_reporting_plugin.go +++ b/core/services/ocr2/plugins/ccip/execution_reporting_plugin.go @@ -31,10 +31,10 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/router" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/cache" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/cache" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/observability" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/offchaintokendata" "github.com/smartcontractkit/chainlink/v2/core/services/pg" @@ -66,7 +66,7 @@ type ExecutionPluginConfig struct { destClient evmclient.Client sourceClient evmclient.Client destGasEstimator gas.EvmFeeEstimator - leafHasher hasher.LeafHasherInterface[[32]byte] + leafHasher hashlib.LeafHasherInterface[[32]byte] tokenDataProviders map[common.Address]offchaintokendata.Provider } diff --git a/core/services/ocr2/plugins/ccip/execution_reporting_plugin_test.go b/core/services/ocr2/plugins/ccip/execution_reporting_plugin_test.go index 6b978243aa..342a400ca4 100644 --- a/core/services/ocr2/plugins/ccip/execution_reporting_plugin_test.go +++ b/core/services/ocr2/plugins/ccip/execution_reporting_plugin_test.go @@ -27,9 +27,10 @@ import ( mock_contracts "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/mocks" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/cache" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/cache" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/offchaintokendata" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers" plugintesthelpers "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers/plugins" @@ -40,7 +41,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/commit_store" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_offramp" "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" "github.com/smartcontractkit/chainlink/v2/core/store/models" ) @@ -94,7 +94,7 @@ func setupExecTestHarness(t *testing.T) execTestHarness { destClient: th.DestClient, sourceClient: th.SourceClient, sourceWrappedNativeToken: th.Source.WrappedNative.Address(), - leafHasher: hasher.NewLeafHasher(th.Source.ChainSelector, th.Dest.ChainSelector, th.Source.OnRamp.Address(), hasher.NewKeccakCtx()), + leafHasher: hashlib.NewLeafHasher(th.Source.ChainSelector, th.Dest.ChainSelector, th.Source.OnRamp.Address(), hashlib.NewKeccakCtx()), destGasEstimator: destFeeEstimator, tokenDataProviders: tokenDataProviders, }, diff --git a/core/services/ocr2/plugins/ccip/cache/cache.go b/core/services/ocr2/plugins/ccip/internal/cache/cache.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/cache.go rename to core/services/ocr2/plugins/ccip/internal/cache/cache.go diff --git a/core/services/ocr2/plugins/ccip/cache/cache_mock.go b/core/services/ocr2/plugins/ccip/internal/cache/cache_mock.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/cache_mock.go rename to core/services/ocr2/plugins/ccip/internal/cache/cache_mock.go diff --git a/core/services/ocr2/plugins/ccip/cache/cache_test.go b/core/services/ocr2/plugins/ccip/internal/cache/cache_test.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/cache_test.go rename to core/services/ocr2/plugins/ccip/internal/cache/cache_test.go diff --git a/core/services/ocr2/plugins/ccip/cache/snoozed_roots.go b/core/services/ocr2/plugins/ccip/internal/cache/snoozed_roots.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/snoozed_roots.go rename to core/services/ocr2/plugins/ccip/internal/cache/snoozed_roots.go diff --git a/core/services/ocr2/plugins/ccip/cache/snoozed_roots_test.go b/core/services/ocr2/plugins/ccip/internal/cache/snoozed_roots_test.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/snoozed_roots_test.go rename to core/services/ocr2/plugins/ccip/internal/cache/snoozed_roots_test.go diff --git a/core/services/ocr2/plugins/ccip/cache/tokens.go b/core/services/ocr2/plugins/ccip/internal/cache/tokens.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/tokens.go rename to core/services/ocr2/plugins/ccip/internal/cache/tokens.go diff --git a/core/services/ocr2/plugins/ccip/cache/tokens_test.go b/core/services/ocr2/plugins/ccip/internal/cache/tokens_test.go similarity index 100% rename from core/services/ocr2/plugins/ccip/cache/tokens_test.go rename to core/services/ocr2/plugins/ccip/internal/cache/tokens_test.go diff --git a/core/services/ocr2/plugins/ccip/ccipevents/client.go b/core/services/ocr2/plugins/ccip/internal/ccipevents/client.go similarity index 100% rename from core/services/ocr2/plugins/ccip/ccipevents/client.go rename to core/services/ocr2/plugins/ccip/internal/ccipevents/client.go diff --git a/core/services/ocr2/plugins/ccip/ccipevents/client_mock.go b/core/services/ocr2/plugins/ccip/internal/ccipevents/client_mock.go similarity index 100% rename from core/services/ocr2/plugins/ccip/ccipevents/client_mock.go rename to core/services/ocr2/plugins/ccip/internal/ccipevents/client_mock.go diff --git a/core/services/ocr2/plugins/ccip/ccipevents/logpoller.go b/core/services/ocr2/plugins/ccip/internal/ccipevents/logpoller.go similarity index 100% rename from core/services/ocr2/plugins/ccip/ccipevents/logpoller.go rename to core/services/ocr2/plugins/ccip/internal/ccipevents/logpoller.go diff --git a/core/services/ocr2/plugins/ccip/ccipevents/logpoller_test.go b/core/services/ocr2/plugins/ccip/internal/ccipevents/logpoller_test.go similarity index 100% rename from core/services/ocr2/plugins/ccip/ccipevents/logpoller_test.go rename to core/services/ocr2/plugins/ccip/internal/ccipevents/logpoller_test.go diff --git a/core/services/ocr2/plugins/ccip/hasher/hasher.go b/core/services/ocr2/plugins/ccip/internal/hashlib/hasher.go similarity index 98% rename from core/services/ocr2/plugins/ccip/hasher/hasher.go rename to core/services/ocr2/plugins/ccip/internal/hashlib/hasher.go index 2f2a4f555a..6eeb4e2f1d 100644 --- a/core/services/ocr2/plugins/ccip/hasher/hasher.go +++ b/core/services/ocr2/plugins/ccip/internal/hashlib/hasher.go @@ -1,4 +1,4 @@ -package hasher +package hashlib import ( "bytes" diff --git a/core/services/ocr2/plugins/ccip/hasher/hasher_test.go b/core/services/ocr2/plugins/ccip/internal/hashlib/hasher_test.go similarity index 95% rename from core/services/ocr2/plugins/ccip/hasher/hasher_test.go rename to core/services/ocr2/plugins/ccip/internal/hashlib/hasher_test.go index 9fa558efba..856be2358b 100644 --- a/core/services/ocr2/plugins/ccip/hasher/hasher_test.go +++ b/core/services/ocr2/plugins/ccip/internal/hashlib/hasher_test.go @@ -1,4 +1,4 @@ -package hasher +package hashlib import ( "testing" diff --git a/core/services/ocr2/plugins/ccip/hasher/leaf_hasher.go b/core/services/ocr2/plugins/ccip/internal/hashlib/leaf_hasher.go similarity index 99% rename from core/services/ocr2/plugins/ccip/hasher/leaf_hasher.go rename to core/services/ocr2/plugins/ccip/internal/hashlib/leaf_hasher.go index 8a93e8a520..3bcd9e9c85 100644 --- a/core/services/ocr2/plugins/ccip/hasher/leaf_hasher.go +++ b/core/services/ocr2/plugins/ccip/internal/hashlib/leaf_hasher.go @@ -1,4 +1,4 @@ -package hasher +package hashlib import ( "math/big" diff --git a/core/services/ocr2/plugins/ccip/hasher/leaf_hasher_test.go b/core/services/ocr2/plugins/ccip/internal/hashlib/leaf_hasher_test.go similarity index 78% rename from core/services/ocr2/plugins/ccip/hasher/leaf_hasher_test.go rename to core/services/ocr2/plugins/ccip/internal/hashlib/leaf_hasher_test.go index 4acf16dbd4..fd35c14bfc 100644 --- a/core/services/ocr2/plugins/ccip/hasher/leaf_hasher_test.go +++ b/core/services/ocr2/plugins/ccip/internal/hashlib/leaf_hasher_test.go @@ -1,4 +1,4 @@ -package hasher_test +package hashlib import ( "encoding/hex" @@ -6,20 +6,20 @@ import ( "testing" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" "github.com/stretchr/testify/require" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" ) func TestHasher(t *testing.T) { sourceChainSelector, destChainSelector := uint64(1), uint64(4) onRampAddress := common.HexToAddress("0x5550000000000000000000000000000000000001") - hashingCtx := hasher.NewKeccakCtx() + hashingCtx := NewKeccakCtx() - hasher := hasher.NewLeafHasher(sourceChainSelector, destChainSelector, onRampAddress, hashingCtx) + hasher := NewLeafHasher(sourceChainSelector, destChainSelector, onRampAddress, hashingCtx) message := evm_2_evm_onramp.InternalEVM2EVMMessage{ SourceChainSelector: sourceChainSelector, @@ -37,7 +37,9 @@ func TestHasher(t *testing.T) { MessageId: [32]byte{}, } - hash, err := hasher.HashLeaf(testhelpers.GenerateCCIPSendLog(t, message)) + pack, err := abihelpers.MessageArgs.Pack(message) + require.NoError(t, err) + hash, err := hasher.HashLeaf(types.Log{Topics: []common.Hash{abihelpers.EventSignatures.SendRequested}, Data: pack}) require.NoError(t, err) // NOTE: Must match spec @@ -62,7 +64,9 @@ func TestHasher(t *testing.T) { MessageId: [32]byte{}, } - hash, err = hasher.HashLeaf(testhelpers.GenerateCCIPSendLog(t, message)) + pack, err = abihelpers.MessageArgs.Pack(message) + require.NoError(t, err) + hash, err = hasher.HashLeaf(types.Log{Topics: []common.Hash{abihelpers.EventSignatures.SendRequested}, Data: pack}) require.NoError(t, err) // NOTE: Must match spec @@ -72,7 +76,7 @@ func TestHasher(t *testing.T) { func TestMetaDataHash(t *testing.T) { sourceChainSelector, destChainSelector := uint64(1), uint64(4) onRampAddress := common.HexToAddress("0x5550000000000000000000000000000000000001") - ctx := hasher.NewKeccakCtx() - hash := hasher.GetMetaDataHash(ctx, ctx.Hash([]byte("EVM2EVMSubscriptionMessagePlus")), sourceChainSelector, onRampAddress, destChainSelector) + ctx := NewKeccakCtx() + hash := GetMetaDataHash(ctx, ctx.Hash([]byte("EVM2EVMSubscriptionMessagePlus")), sourceChainSelector, onRampAddress, destChainSelector) require.Equal(t, "e8b93c9d01a7a72ec6c7235e238701cf1511b267a31fdb78dd342649ee58c08d", hex.EncodeToString(hash[:])) } diff --git a/core/services/ocr2/plugins/ccip/merklemulti/fixtures/merkle_multi_proof_test_vector.go b/core/services/ocr2/plugins/ccip/internal/merklemulti/fixtures/merkle_multi_proof_test_vector.go similarity index 100% rename from core/services/ocr2/plugins/ccip/merklemulti/fixtures/merkle_multi_proof_test_vector.go rename to core/services/ocr2/plugins/ccip/internal/merklemulti/fixtures/merkle_multi_proof_test_vector.go diff --git a/core/services/ocr2/plugins/ccip/merklemulti/merkle_multi.go b/core/services/ocr2/plugins/ccip/internal/merklemulti/merkle_multi.go similarity index 90% rename from core/services/ocr2/plugins/ccip/merklemulti/merkle_multi.go rename to core/services/ocr2/plugins/ccip/internal/merklemulti/merkle_multi.go index 55096b1485..c9031b470e 100644 --- a/core/services/ocr2/plugins/ccip/merklemulti/merkle_multi.go +++ b/core/services/ocr2/plugins/ccip/internal/merklemulti/merkle_multi.go @@ -6,16 +6,16 @@ import ( "github.com/pkg/errors" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" ) -type singleLayerProof[H hasher.Hash] struct { +type singleLayerProof[H hashlib.Hash] struct { nextIndices []int subProof []H sourceFlags []bool } -type Proof[H hasher.Hash] struct { +type Proof[H hashlib.Hash] struct { Hashes []H `json:"hashes"` SourceFlags []bool `json:"source_flags"` } @@ -44,7 +44,7 @@ func siblingIndex(idx int) int { return idx ^ 1 } -func proveSingleLayer[H hasher.Hash](layer []H, indices []int) (singleLayerProof[H], error) { +func proveSingleLayer[H hashlib.Hash](layer []H, indices []int) (singleLayerProof[H], error) { var ( authIndices []int nextIndices []int @@ -77,11 +77,11 @@ func proveSingleLayer[H hasher.Hash](layer []H, indices []int) (singleLayerProof }, nil } -type Tree[H hasher.Hash] struct { +type Tree[H hashlib.Hash] struct { layers [][]H } -func NewTree[H hasher.Hash](ctx hasher.Ctx[H], leafHashes []H) (*Tree[H], error) { +func NewTree[H hashlib.Hash](ctx hashlib.Ctx[H], leafHashes []H) (*Tree[H], error) { if len(leafHashes) == 0 { return nil, errors.New("Cannot construct a tree without leaves") } @@ -131,7 +131,7 @@ func (t *Tree[H]) Prove(indices []int) (Proof[H], error) { return proof, nil } -func computeNextLayer[H hasher.Hash](ctx hasher.Ctx[H], layer []H) ([]H, []H) { +func computeNextLayer[H hashlib.Hash](ctx hashlib.Ctx[H], layer []H) ([]H, []H) { if len(layer) == 1 { return layer, layer } @@ -145,7 +145,7 @@ func computeNextLayer[H hasher.Hash](ctx hasher.Ctx[H], layer []H) ([]H, []H) { return layer, nextLayer } -func VerifyComputeRoot[H hasher.Hash](ctx hasher.Ctx[H], leafHashes []H, proof Proof[H]) (H, error) { +func VerifyComputeRoot[H hashlib.Hash](ctx hashlib.Ctx[H], leafHashes []H, proof Proof[H]) (H, error) { leavesLength := len(leafHashes) proofsLength := len(proof.Hashes) if leavesLength == 0 && proofsLength == 0 { diff --git a/core/services/ocr2/plugins/ccip/merklemulti/merkle_multi_test.go b/core/services/ocr2/plugins/ccip/internal/merklemulti/merkle_multi_test.go similarity index 97% rename from core/services/ocr2/plugins/ccip/merklemulti/merkle_multi_test.go rename to core/services/ocr2/plugins/ccip/internal/merklemulti/merkle_multi_test.go index 0d7f81600a..fc85172158 100644 --- a/core/services/ocr2/plugins/ccip/merklemulti/merkle_multi_test.go +++ b/core/services/ocr2/plugins/ccip/internal/merklemulti/merkle_multi_test.go @@ -10,12 +10,12 @@ import ( "github.com/stretchr/testify/require" "gonum.org/v1/gonum/stat/combin" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/merklemulti/fixtures" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/merklemulti/fixtures" ) var ( - ctx = hasher.NewKeccakCtx() + ctx = hashlib.NewKeccakCtx() a, b, c, d, e, f = ctx.Hash([]byte{0xa}), ctx.Hash([]byte{0xb}), ctx.Hash([]byte{0xc}), ctx.Hash([]byte{0xd}), ctx.Hash([]byte{0xe}), ctx.Hash([]byte{0xf}) ) @@ -87,7 +87,7 @@ func TestSpecFixtureVerifyProof(t *testing.T) { func TestSpecFixtureNewTree(t *testing.T) { for _, testVector := range fixtures.TestVectors { var leafHashes = hashesFromHexStrings(testVector.AllLeafs) - mctx := hasher.NewKeccakCtx() + mctx := hashlib.NewKeccakCtx() tree, err := NewTree(mctx, leafHashes) assert.NoError(t, err) actualRoot := tree.Root() diff --git a/core/services/ocr2/plugins/ccip/backfilled_oracle.go b/core/services/ocr2/plugins/ccip/internal/oraclelib/backfilled_oracle.go similarity index 99% rename from core/services/ocr2/plugins/ccip/backfilled_oracle.go rename to core/services/ocr2/plugins/ccip/internal/oraclelib/backfilled_oracle.go index 63cd4ad9c8..b4d9da24b3 100644 --- a/core/services/ocr2/plugins/ccip/backfilled_oracle.go +++ b/core/services/ocr2/plugins/ccip/internal/oraclelib/backfilled_oracle.go @@ -1,4 +1,4 @@ -package ccip +package oraclelib import ( "context" diff --git a/core/services/ocr2/plugins/ccip/backfilled_oracle_test.go b/core/services/ocr2/plugins/ccip/internal/oraclelib/backfilled_oracle_test.go similarity index 80% rename from core/services/ocr2/plugins/ccip/backfilled_oracle_test.go rename to core/services/ocr2/plugins/ccip/internal/oraclelib/backfilled_oracle_test.go index 8b40c2e84e..f2fe03e7b6 100644 --- a/core/services/ocr2/plugins/ccip/backfilled_oracle_test.go +++ b/core/services/ocr2/plugins/ccip/internal/oraclelib/backfilled_oracle_test.go @@ -1,4 +1,4 @@ -package ccip_test +package oraclelib import ( "testing" @@ -10,10 +10,9 @@ import ( lpmocks "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller/mocks" "github.com/smartcontractkit/chainlink/v2/core/logger" jobmocks "github.com/smartcontractkit/chainlink/v2/core/services/job/mocks" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip" ) -func TestOracleBackfill(t *testing.T) { +func TestBackfilledOracle(t *testing.T) { // First scenario: Start() fails, check that all Replay are being called. lp1 := lpmocks.NewLogPoller(t) lp2 := lpmocks.NewLogPoller(t) @@ -21,7 +20,7 @@ func TestOracleBackfill(t *testing.T) { lp2.On("Replay", mock.Anything, int64(2)).Return(nil) oracle1 := jobmocks.NewServiceCtx(t) oracle1.On("Start", mock.Anything).Return(errors.New("Failed to start")).Twice() - job := ccip.NewBackfilledOracle(logger.TestLogger(t), lp1, lp2, 1, 2, oracle1) + job := NewBackfilledOracle(logger.TestLogger(t), lp1, lp2, 1, 2, oracle1) job.Run() assert.False(t, job.IsRunning()) @@ -33,7 +32,7 @@ func TestOracleBackfill(t *testing.T) { oracle2.On("Start", mock.Anything).Return(nil).Twice() oracle2.On("Close").Return(nil).Once() - job2 := ccip.NewBackfilledOracle(logger.TestLogger(t), lp1, lp2, 1, 2, oracle2) + job2 := NewBackfilledOracle(logger.TestLogger(t), lp1, lp2, 1, 2, oracle2) job2.Run() assert.True(t, job2.IsRunning()) assert.Nil(t, job2.Close()) @@ -50,7 +49,7 @@ func TestOracleBackfill(t *testing.T) { lp12.On("Replay", mock.Anything, int64(2)).Return(errors.New("Replay failed")).Once() oracle := jobmocks.NewServiceCtx(t) - job3 := ccip.NewBackfilledOracle(logger.NullLogger, lp11, lp12, 1, 2, oracle) + job3 := NewBackfilledOracle(logger.NullLogger, lp11, lp12, 1, 2, oracle) job3.Run() assert.False(t, job3.IsRunning()) } diff --git a/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc.go b/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc.go index 241582c40d..1c02902be1 100644 --- a/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc.go +++ b/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc.go @@ -12,7 +12,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/offchaintokendata" "github.com/smartcontractkit/chainlink/v2/core/utils" ) diff --git a/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc_test.go b/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc_test.go index 88ffaf7502..f99ac60719 100644 --- a/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc_test.go +++ b/core/services/ocr2/plugins/ccip/offchaintokendata/usdc/usdc_test.go @@ -15,7 +15,7 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" "github.com/smartcontractkit/chainlink/v2/core/utils" ) diff --git a/core/services/ocr2/plugins/ccip/plugins_common.go b/core/services/ocr2/plugins/ccip/plugins_common.go index f3df762e55..9fed840bd9 100644 --- a/core/services/ocr2/plugins/ccip/plugins_common.go +++ b/core/services/ocr2/plugins/ccip/plugins_common.go @@ -19,9 +19,9 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp_1_0_0" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/evm_2_evm_onramp_1_1_0" "github.com/smartcontractkit/chainlink/v2/core/logger" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/ccipevents" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/ccipevents" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/observability" "github.com/smartcontractkit/chainlink/v2/core/services/pg" "github.com/smartcontractkit/chainlink/v2/core/utils" @@ -140,7 +140,7 @@ func calculateUsdPerUnitGas(sourceGasPrice *big.Int, usdPerFeeCoin *big.Int) *bi func leavesFromIntervals( lggr logger.Logger, interval commit_store.CommitStoreInterval, - hasher hasher.LeafHasherInterface[[32]byte], + hasher hashlib.LeafHasherInterface[[32]byte], sendReqs []ccipevents.Event[evm_2_evm_onramp.EVM2EVMOnRampCCIPSendRequested], ) ([][32]byte, error) { var seqNrs []uint64 diff --git a/core/services/ocr2/plugins/ccip/testhelpers/ccip_contracts.go b/core/services/ocr2/plugins/ccip/testhelpers/ccip_contracts.go index 96f015c95e..feeb7528c0 100644 --- a/core/services/ocr2/plugins/ccip/testhelpers/ccip_contracts.go +++ b/core/services/ocr2/plugins/ccip/testhelpers/ccip_contracts.go @@ -38,8 +38,8 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/shared/generated/burn_mint_erc677" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/merklemulti" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/merklemulti" "github.com/smartcontractkit/chainlink/v2/core/utils" ) @@ -1345,8 +1345,8 @@ func (args *ManualExecArgs) execute(report *commit_store.CommitStoreCommitReport log.Info().Msg("Executing request manually") seqNr := args.seqNr // Build a merkle tree for the report - mctx := hasher.NewKeccakCtx() - leafHasher := hasher.NewLeafHasher(args.SourceChainID, args.DestChainID, common.HexToAddress(args.OnRamp), mctx) + mctx := hashlib.NewKeccakCtx() + leafHasher := hashlib.NewLeafHasher(args.SourceChainID, args.DestChainID, common.HexToAddress(args.OnRamp), mctx) onRampContract, err := evm_2_evm_onramp.NewEVM2EVMOnRamp(common.HexToAddress(args.OnRamp), args.SourceChain) if err != nil { return nil, err diff --git a/core/services/ocr2/plugins/ccip/testhelpers/plugins/plugin_harness.go b/core/services/ocr2/plugins/ccip/testhelpers/plugins/plugin_harness.go index 3ac293d6ae..61de46d80f 100644 --- a/core/services/ocr2/plugins/ccip/testhelpers/plugins/plugin_harness.go +++ b/core/services/ocr2/plugins/ccip/testhelpers/plugins/plugin_harness.go @@ -21,8 +21,8 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/abihelpers" ccipconfig "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/config" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/hasher" - "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/merklemulti" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/hashlib" + "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/internal/merklemulti" "github.com/smartcontractkit/chainlink/v2/core/services/ocr2/plugins/ccip/testhelpers" "github.com/smartcontractkit/chainlink/v2/core/utils" ) @@ -195,8 +195,8 @@ func (mb MessageBatch) ToExecutionReport() evm_2_evm_offramp.InternalExecutionRe } func (th *CCIPPluginTestHarness) GenerateAndSendMessageBatch(t *testing.T, nMessages int, payloadSize int, nTokensPerMessage int) MessageBatch { - mctx := hasher.NewKeccakCtx() - leafHasher := hasher.NewLeafHasher(th.Source.ChainSelector, th.Dest.ChainSelector, th.Source.OnRamp.Address(), mctx) + mctx := hashlib.NewKeccakCtx() + leafHasher := hashlib.NewLeafHasher(th.Source.ChainSelector, th.Dest.ChainSelector, th.Source.OnRamp.Address(), mctx) maxPayload := make([]byte, payloadSize) for i := 0; i < payloadSize; i++ {