From a757a6ec7d945177cc1f021e7c9ca6c3519f0a1b Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 12:54:58 -0600 Subject: [PATCH 01/36] Use SVM ABI, needs to check test --- .../ccip/ccipevm/extraargscodec.go | 47 ++++++++++++- core/capabilities/ccip/ccipevm/helpers.go | 66 ++++++++++++++++++- .../capabilities/ccip/ccipevm/helpers_test.go | 23 ++++++- core/capabilities/ccip/ccipevm/msghasher.go | 3 + 4 files changed, 133 insertions(+), 6 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/extraargscodec.go b/core/capabilities/ccip/ccipevm/extraargscodec.go index 8cd8bda48f7..066d49884e9 100644 --- a/core/capabilities/ccip/ccipevm/extraargscodec.go +++ b/core/capabilities/ccip/ccipevm/extraargscodec.go @@ -1,9 +1,21 @@ package ccipevm import ( + "fmt" + + chainsel "github.com/smartcontractkit/chain-selectors" cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" ) +const ( + EVMExtraArgsKey = "gasLimit" + SVMComputeUnitKey = "ComputeUnits" + SVMAccountBitmapKey = "AccountIsWritableBitmap" + SVMAllowOOEKey = "AllowOutOfOrderExecution" + SVMTokenReceiverKey = "TokenReceiver" + SVMAccountListKey = "Accounts" +) + type ExtraArgsCodec struct{} func NewExtraArgsCodec() ExtraArgsCodec { @@ -11,6 +23,37 @@ func NewExtraArgsCodec() ExtraArgsCodec { } func (ExtraArgsCodec) DecodeExtraData(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { - // Not implemented and not return error - return nil, nil + family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) + if err != nil { + return nil, fmt.Errorf("failed to decode extra data, %w", err) + } + + switch family { + case chainsel.FamilyEVM: + gas, err1 := decodeExtraArgsV1V2(extraArgs) + if err1 != nil { + return nil, fmt.Errorf("failed to decode EVM extra data, %w", err) + } + + return map[string]any{ + EVMExtraArgsKey: gas, + }, nil + + case chainsel.FamilySolana: + v1, err1 := decodeExtraArgsSVMV1(extraArgs) + if err1 != nil { + return nil, fmt.Errorf("failed to decode SVM extra data, %w", err) + } + + return map[string]any{ + SVMComputeUnitKey: v1.ComputeUnits, + SVMAccountBitmapKey: v1.AccountIsWritableBitmap, + SVMAllowOOEKey: v1.AllowOutOfOrderExecution, + SVMTokenReceiverKey: v1.TokenReceiver, + SVMAccountListKey: v1.Accounts, + }, nil + + default: + return nil, fmt.Errorf("unsupported family for extra args type %s", family) + } } diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index 3406421b915..c16a00a20db 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -6,6 +6,13 @@ import ( "math/big" "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/message_hasher" +) + +const ( + svmV1DecodeName = "decodeSVMExtraArgsV1" + evmV1DecodeName = "decodeEVMExtraArgsV1" + evmV2DecodeName = "decodeEVMExtraArgsV2" ) var ( @@ -24,9 +31,9 @@ func decodeExtraArgsV1V2(extraArgs []byte) (gasLimit *big.Int, err error) { var method string if bytes.Equal(extraArgs[:4], evmExtraArgsV1Tag) { - method = "decodeEVMExtraArgsV1" + method = evmV1DecodeName } else if bytes.Equal(extraArgs[:4], evmExtraArgsV2Tag) { - method = "decodeEVMExtraArgsV2" + method = evmV2DecodeName } else { return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) } @@ -43,6 +50,61 @@ func decodeExtraArgsV1V2(extraArgs []byte) (gasLimit *big.Int, err error) { return ifaces[0].(*big.Int), nil } +func decodeExtraArgsSVMV1(extraArgs []byte) (*message_hasher.ClientSVMExtraArgsV1, error) { + if len(extraArgs) < 4 { + return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) + } + + if !bytes.Equal(extraArgs[:4], svmExtraArgsV1Tag) { + return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) + } + + ifaces, err := messageHasherABI.Methods[svmV1DecodeName].Inputs.UnpackValues(extraArgs[4:]) + if err != nil { + return nil, fmt.Errorf("abi decode extra args v1: %w", err) + } + + if len(ifaces) != 5 { + return nil, fmt.Errorf("expected 5 inputs, got %d", len(ifaces)) + } + + _, ok := ifaces[0].(uint32) + if !ok { + return nil, fmt.Errorf("expected uint32, got %T", ifaces[0]) + } + + _, ok = ifaces[1].(uint64) + if !ok { + return nil, fmt.Errorf("expected uint64, got %T", ifaces[1]) + } + + _, ok = ifaces[2].(bool) + if !ok { + return nil, fmt.Errorf("expected bool, got %T", ifaces[2]) + } + + tokenReceiver, ok := ifaces[3].([]byte) + if !ok || len(tokenReceiver) != 32 { + return nil, fmt.Errorf("expected [32]byte, got %T or incorrect length %d", ifaces[3], len(tokenReceiver)) + } + + var tokenReceiverArray [32]byte + copy(tokenReceiverArray[:], tokenReceiver) + + accounts, ok := ifaces[4].([][32]byte) + if !ok { + return nil, fmt.Errorf("expected [][32]byte, got %T", ifaces[4]) + } + + return &message_hasher.ClientSVMExtraArgsV1{ + ComputeUnits: ifaces[0].(uint32), + AccountIsWritableBitmap: ifaces[1].(uint64), + AllowOutOfOrderExecution: ifaces[2].(bool), + TokenReceiver: tokenReceiverArray, + Accounts: accounts, + }, nil +} + // abiEncodeMethodInputs encodes the inputs for a method call. // example abi: `[{ "name" : "method", "type": "function", "inputs": [{"name": "a", "type": "uint256"}]}]` func abiEncodeMethodInputs(abiDef abi.ABI, inputs ...interface{}) ([]byte, error) { diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index e0de0572226..6c6d3879305 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -5,6 +5,7 @@ import ( "math/rand" "testing" + "github.com/gagliardetto/solana-go" "github.com/stretchr/testify/require" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/message_hasher" @@ -14,7 +15,7 @@ func Test_decodeExtraArgs(t *testing.T) { d := testSetup(t) gasLimit := big.NewInt(rand.Int63()) - t.Run("v1", func(t *testing.T) { + t.Run("EVMv1", func(t *testing.T) { encoded, err := d.contract.EncodeEVMExtraArgsV1(nil, message_hasher.ClientEVMExtraArgsV1{ GasLimit: gasLimit, }) @@ -26,7 +27,7 @@ func Test_decodeExtraArgs(t *testing.T) { require.Equal(t, gasLimit, decodedGasLimit) }) - t.Run("v2", func(t *testing.T) { + t.Run("EVMv2", func(t *testing.T) { encoded, err := d.contract.EncodeEVMExtraArgsV2(nil, message_hasher.ClientEVMExtraArgsV2{ GasLimit: gasLimit, AllowOutOfOrderExecution: true, @@ -38,4 +39,22 @@ func Test_decodeExtraArgs(t *testing.T) { require.Equal(t, gasLimit, decodedGasLimit) }) + + t.Run("SVMv1", func(t *testing.T) { + key, err := solana.NewRandomPrivateKey() + require.NoError(t, err) + encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, message_hasher.ClientSVMExtraArgsV1{ + ComputeUnits: 10000, + AccountIsWritableBitmap: 4, + AllowOutOfOrderExecution: false, + TokenReceiver: [32]byte(key.PublicKey().Bytes()), + Accounts: [][32]byte{ + [32]byte(key.PublicKey().Bytes()), + }, + }) + require.NoError(t, err) + + _, err = decodeExtraArgsSVMV1(encoded) + require.NoError(t, err) + }) } diff --git a/core/capabilities/ccip/ccipevm/msghasher.go b/core/capabilities/ccip/ccipevm/msghasher.go index f98e5d12640..cdad4fe0149 100644 --- a/core/capabilities/ccip/ccipevm/msghasher.go +++ b/core/capabilities/ccip/ccipevm/msghasher.go @@ -31,6 +31,9 @@ var ( // bytes4 public constant EVM_EXTRA_ARGS_V2_TAG = 0x181dcf10; evmExtraArgsV2Tag = hexutil.MustDecode("0x181dcf10") + + // bytes4 public constant SVM_EXTRA_EXTRA_ARGS_V1_TAG = 0x1f3b3aba + svmExtraArgsV1Tag = hexutil.MustDecode("0x1f3b3aba") ) // MessageHasherV1 implements the MessageHasher interface. From 7253bbad64fcf2eda872b90cefb7b856e5c2f5f0 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 13:45:43 -0600 Subject: [PATCH 02/36] goimport --- core/capabilities/ccip/ccipevm/extraargscodec.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/capabilities/ccip/ccipevm/extraargscodec.go b/core/capabilities/ccip/ccipevm/extraargscodec.go index 066d49884e9..78954e4b8ff 100644 --- a/core/capabilities/ccip/ccipevm/extraargscodec.go +++ b/core/capabilities/ccip/ccipevm/extraargscodec.go @@ -4,6 +4,7 @@ import ( "fmt" chainsel "github.com/smartcontractkit/chain-selectors" + cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" ) From 0ec8119dfb36c5fedbd40f4dcc6d5048cb1a6d55 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 14:57:45 -0600 Subject: [PATCH 03/36] update --- .../ccip/ccipevm/extraargscodec.go | 60 --------- core/capabilities/ccip/ccipevm/helpers.go | 57 +++------ .../capabilities/ccip/ccipevm/helpers_test.go | 31 ++++- core/capabilities/ccip/ccipsolana/helpers.go | 30 +++++ .../ccip/ccipsolana/helpers_test.go | 34 +++++ core/capabilities/ccip/extraargscodec.go | 35 ++++++ .../capabilities/ccip/oraclecreator/plugin.go | 5 +- core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 +- deployment/go.mod | 2 +- deployment/go.sum | 4 +- go.mod | 22 ++-- go.sum | 119 +++--------------- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- integration-tests/load/go.mod | 1 + integration-tests/load/go.sum | 2 + .../smoke/ccip/ccip_reader_test.go | 8 +- 18 files changed, 187 insertions(+), 235 deletions(-) delete mode 100644 core/capabilities/ccip/ccipevm/extraargscodec.go create mode 100644 core/capabilities/ccip/ccipsolana/helpers.go create mode 100644 core/capabilities/ccip/ccipsolana/helpers_test.go create mode 100644 core/capabilities/ccip/extraargscodec.go diff --git a/core/capabilities/ccip/ccipevm/extraargscodec.go b/core/capabilities/ccip/ccipevm/extraargscodec.go deleted file mode 100644 index 78954e4b8ff..00000000000 --- a/core/capabilities/ccip/ccipevm/extraargscodec.go +++ /dev/null @@ -1,60 +0,0 @@ -package ccipevm - -import ( - "fmt" - - chainsel "github.com/smartcontractkit/chain-selectors" - - cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" -) - -const ( - EVMExtraArgsKey = "gasLimit" - SVMComputeUnitKey = "ComputeUnits" - SVMAccountBitmapKey = "AccountIsWritableBitmap" - SVMAllowOOEKey = "AllowOutOfOrderExecution" - SVMTokenReceiverKey = "TokenReceiver" - SVMAccountListKey = "Accounts" -) - -type ExtraArgsCodec struct{} - -func NewExtraArgsCodec() ExtraArgsCodec { - return ExtraArgsCodec{} -} - -func (ExtraArgsCodec) DecodeExtraData(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { - family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) - if err != nil { - return nil, fmt.Errorf("failed to decode extra data, %w", err) - } - - switch family { - case chainsel.FamilyEVM: - gas, err1 := decodeExtraArgsV1V2(extraArgs) - if err1 != nil { - return nil, fmt.Errorf("failed to decode EVM extra data, %w", err) - } - - return map[string]any{ - EVMExtraArgsKey: gas, - }, nil - - case chainsel.FamilySolana: - v1, err1 := decodeExtraArgsSVMV1(extraArgs) - if err1 != nil { - return nil, fmt.Errorf("failed to decode SVM extra data, %w", err) - } - - return map[string]any{ - SVMComputeUnitKey: v1.ComputeUnits, - SVMAccountBitmapKey: v1.AccountIsWritableBitmap, - SVMAllowOOEKey: v1.AllowOutOfOrderExecution, - SVMTokenReceiverKey: v1.TokenReceiver, - SVMAccountListKey: v1.Accounts, - }, nil - - default: - return nil, fmt.Errorf("unsupported family for extra args type %s", family) - } -} diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index c16a00a20db..d3bce9f454f 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -6,7 +6,6 @@ import ( "math/big" "github.com/ethereum/go-ethereum/accounts/abi" - "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/message_hasher" ) const ( @@ -50,59 +49,33 @@ func decodeExtraArgsV1V2(extraArgs []byte) (gasLimit *big.Int, err error) { return ifaces[0].(*big.Int), nil } -func decodeExtraArgsSVMV1(extraArgs []byte) (*message_hasher.ClientSVMExtraArgsV1, error) { +func DecodeExtraArgs(extraArgs []byte) (map[string]any, error) { if len(extraArgs) < 4 { return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) } - if !bytes.Equal(extraArgs[:4], svmExtraArgsV1Tag) { + var method string + if bytes.Equal(extraArgs[:4], evmExtraArgsV1Tag) { + method = evmV1DecodeName + } else if bytes.Equal(extraArgs[:4], evmExtraArgsV2Tag) { + method = evmV2DecodeName + } else if bytes.Equal(extraArgs[:4], svmExtraArgsV1Tag) { + method = svmV1DecodeName + } else { return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) } - ifaces, err := messageHasherABI.Methods[svmV1DecodeName].Inputs.UnpackValues(extraArgs[4:]) + output := make(map[string]any) + args := make(map[string]interface{}) + err := messageHasherABI.Methods[method].Inputs.UnpackIntoMap(args, extraArgs[4:]) if err != nil { return nil, fmt.Errorf("abi decode extra args v1: %w", err) } - if len(ifaces) != 5 { - return nil, fmt.Errorf("expected 5 inputs, got %d", len(ifaces)) + for k, val := range args { + output[k] = val } - - _, ok := ifaces[0].(uint32) - if !ok { - return nil, fmt.Errorf("expected uint32, got %T", ifaces[0]) - } - - _, ok = ifaces[1].(uint64) - if !ok { - return nil, fmt.Errorf("expected uint64, got %T", ifaces[1]) - } - - _, ok = ifaces[2].(bool) - if !ok { - return nil, fmt.Errorf("expected bool, got %T", ifaces[2]) - } - - tokenReceiver, ok := ifaces[3].([]byte) - if !ok || len(tokenReceiver) != 32 { - return nil, fmt.Errorf("expected [32]byte, got %T or incorrect length %d", ifaces[3], len(tokenReceiver)) - } - - var tokenReceiverArray [32]byte - copy(tokenReceiverArray[:], tokenReceiver) - - accounts, ok := ifaces[4].([][32]byte) - if !ok { - return nil, fmt.Errorf("expected [][32]byte, got %T", ifaces[4]) - } - - return &message_hasher.ClientSVMExtraArgsV1{ - ComputeUnits: ifaces[0].(uint32), - AccountIsWritableBitmap: ifaces[1].(uint64), - AllowOutOfOrderExecution: ifaces[2].(bool), - TokenReceiver: tokenReceiverArray, - Accounts: accounts, - }, nil + return output, nil } // abiEncodeMethodInputs encodes the inputs for a method call. diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index 6c6d3879305..ff3dab70fbc 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -15,7 +15,7 @@ func Test_decodeExtraArgs(t *testing.T) { d := testSetup(t) gasLimit := big.NewInt(rand.Int63()) - t.Run("EVMv1", func(t *testing.T) { + t.Run("v1", func(t *testing.T) { encoded, err := d.contract.EncodeEVMExtraArgsV1(nil, message_hasher.ClientEVMExtraArgsV1{ GasLimit: gasLimit, }) @@ -27,7 +27,7 @@ func Test_decodeExtraArgs(t *testing.T) { require.Equal(t, gasLimit, decodedGasLimit) }) - t.Run("EVMv2", func(t *testing.T) { + t.Run("v2", func(t *testing.T) { encoded, err := d.contract.EncodeEVMExtraArgsV2(nil, message_hasher.ClientEVMExtraArgsV2{ GasLimit: gasLimit, AllowOutOfOrderExecution: true, @@ -40,7 +40,30 @@ func Test_decodeExtraArgs(t *testing.T) { require.Equal(t, gasLimit, decodedGasLimit) }) - t.Run("SVMv1", func(t *testing.T) { + t.Run("decode extra args into map evm v1", func(t *testing.T) { + encoded, err := d.contract.EncodeEVMExtraArgsV1(nil, message_hasher.ClientEVMExtraArgsV1{ + GasLimit: gasLimit, + }) + require.NoError(t, err) + + m, err := DecodeExtraArgs(encoded) + require.NoError(t, err) + require.Equal(t, 1, len(m)) + }) + + t.Run("decode extra args into map evm v2", func(t *testing.T) { + encoded, err := d.contract.EncodeEVMExtraArgsV2(nil, message_hasher.ClientEVMExtraArgsV2{ + GasLimit: gasLimit, + AllowOutOfOrderExecution: true, + }) + require.NoError(t, err) + + m, err := DecodeExtraArgs(encoded) + require.NoError(t, err) + require.Equal(t, 2, len(m)) + }) + + t.Run("decode extra args into map svm", func(t *testing.T) { key, err := solana.NewRandomPrivateKey() require.NoError(t, err) encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, message_hasher.ClientSVMExtraArgsV1{ @@ -54,7 +77,7 @@ func Test_decodeExtraArgs(t *testing.T) { }) require.NoError(t, err) - _, err = decodeExtraArgsSVMV1(encoded) + _, err = DecodeExtraArgs(encoded) require.NoError(t, err) }) } diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/helpers.go new file mode 100644 index 00000000000..86efb1796f9 --- /dev/null +++ b/core/capabilities/ccip/ccipsolana/helpers.go @@ -0,0 +1,30 @@ +package ccipsolana + +import ( + "fmt" + "reflect" + + agbinary "github.com/gagliardetto/binary" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" +) + +func DecodeExtraArgs(extraArgs []byte) (map[string]any, error) { + outputMap := make(map[string]any) + var args ccip_router.SVMExtraArgs + decoder := agbinary.NewBorshDecoder(extraArgs) + err := args.UnmarshalWithDecoder(decoder) + if err != nil { + return outputMap, fmt.Errorf("failed to decode extra args: %w", err) + } + + val := reflect.ValueOf(args) + typ := reflect.TypeOf(args) + + for i := 0; i < val.NumField(); i++ { + field := typ.Field(i) + fieldValue := val.Field(i).Interface() + outputMap[field.Name] = fieldValue + } + + return outputMap, nil +} diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go new file mode 100644 index 00000000000..f9192c76075 --- /dev/null +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -0,0 +1,34 @@ +package ccipsolana + +import ( + "bytes" + "testing" + + agbinary "github.com/gagliardetto/binary" + "github.com/gagliardetto/solana-go" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/config" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" + "github.com/stretchr/testify/require" +) + +func Test_decodeExtraArgs(t *testing.T) { + t.Run("decode extra args into map svm", func(t *testing.T) { + extraArgs := ccip_router.SVMExtraArgs{ + ComputeUnits: 1000, + IsWritableBitmap: 2, + Accounts: []solana.PublicKey{ + config.ReceiverExternalExecutionConfigPDA, + config.ReceiverTargetAccountPDA, + solana.SystemProgramID, + }, + } + + var buf bytes.Buffer + encoder := agbinary.NewBorshEncoder(&buf) + err := extraArgs.MarshalWithEncoder(encoder) + require.NoError(t, err) + output, err := DecodeExtraArgs(buf.Bytes()) + require.NoError(t, err) + require.Equal(t, 3, len(output)) + }) +} diff --git a/core/capabilities/ccip/extraargscodec.go b/core/capabilities/ccip/extraargscodec.go new file mode 100644 index 00000000000..1861ce576c9 --- /dev/null +++ b/core/capabilities/ccip/extraargscodec.go @@ -0,0 +1,35 @@ +package ccip + +import ( + "fmt" + + chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipsolana" + + cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" +) + +type ExtraArgsCodec struct{} + +func NewExtraArgsCodec() ExtraArgsCodec { + return ExtraArgsCodec{} +} + +func (ExtraArgsCodec) DecodeExtraData(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { + family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) + if err != nil { + return nil, fmt.Errorf("failed to decode extra data, %w", err) + } + + switch family { + case chainsel.FamilyEVM: + return ccipevm.DecodeExtraArgs(extraArgs) + + case chainsel.FamilySolana: + return ccipsolana.DecodeExtraArgs(extraArgs) + + default: + return nil, fmt.Errorf("unsupported family for extra args type %s", family) + } +} diff --git a/core/capabilities/ccip/oraclecreator/plugin.go b/core/capabilities/ccip/oraclecreator/plugin.go index f791a804586..97e2bd8a317 100644 --- a/core/capabilities/ccip/oraclecreator/plugin.go +++ b/core/capabilities/ccip/oraclecreator/plugin.go @@ -12,6 +12,7 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/google/uuid" "github.com/prometheus/client_golang/prometheus" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip" chainsel "github.com/smartcontractkit/chain-selectors" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" @@ -263,7 +264,7 @@ func (i *pluginOracleCreator) createFactoryAndTransmitter( ccipreaderpkg.OCR3ConfigWithMeta(config), ccipevm.NewCommitPluginCodecV1(), ccipevm.NewMessageHasherV1(i.lggr.Named("MessageHasherV1")), - ccipevm.NewExtraArgsCodec(), + ccip.NewExtraArgsCodec(), i.homeChainReader, i.homeChainSelector, contractReaders, @@ -286,7 +287,7 @@ func (i *pluginOracleCreator) createFactoryAndTransmitter( ccipreaderpkg.OCR3ConfigWithMeta(config), ccipevm.NewExecutePluginCodecV1(), ccipevm.NewMessageHasherV1(i.lggr.Named("MessageHasherV1")), - ccipevm.NewExtraArgsCodec(), + ccip.NewExtraArgsCodec(), i.homeChainReader, ccipevm.NewEVMTokenDataEncoder(), ccipevm.NewGasEstimateProvider(), diff --git a/core/scripts/go.mod b/core/scripts/go.mod index a5f0f5e0234..939081f423c 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -312,7 +312,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect github.com/smartcontractkit/chain-selectors v1.0.36 // indirect github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20250115203616-a2ea5e50b260 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index ee84543f0ab..d2ce22a1679 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1162,8 +1162,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff h1:ZEOlcleVdT0/y9V5yjgFJF0j7MpvdrFmKis/xmFNIgE= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff/go.mod h1:JJZMCB75aVSAiPNW032F9WUKTlLztTd8bbQB5MEaZa4= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b h1:UBXi9Yj8YSMHDDaxQLu273x1fWjyEL9xP58nuJsqZfg= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 h1:cf7mgbR8OelUnq49x0vYLy1XWddw4t1Q1YsBPxUQY4M= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4/go.mod h1:yti7e1+G9hhkYhj+L5sVUULn9Bn3bBL5/AxaNqdJ5YQ= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= diff --git a/deployment/go.mod b/deployment/go.mod index 714bbcb5f9b..d9e2316ecc2 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -30,7 +30,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix github.com/smartcontractkit/chain-selectors v1.0.36 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 github.com/smartcontractkit/chainlink-solana v1.1.1-0.20250117195512-81a855ec1fc6 diff --git a/deployment/go.sum b/deployment/go.sum index f0c88772e1d..980afbb08a3 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1388,8 +1388,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff h1:ZEOlcleVdT0/y9V5yjgFJF0j7MpvdrFmKis/xmFNIgE= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff/go.mod h1:JJZMCB75aVSAiPNW032F9WUKTlLztTd8bbQB5MEaZa4= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b h1:UBXi9Yj8YSMHDDaxQLu273x1fWjyEL9xP58nuJsqZfg= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 h1:cf7mgbR8OelUnq49x0vYLy1XWddw4t1Q1YsBPxUQY4M= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4/go.mod h1:yti7e1+G9hhkYhj+L5sVUULn9Bn3bBL5/AxaNqdJ5YQ= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= diff --git a/go.mod b/go.mod index e3fde6531b7..6b6418982c8 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,8 @@ require ( github.com/ethereum/go-ethereum v1.14.11 github.com/fatih/color v1.17.0 github.com/fxamacker/cbor/v2 v2.7.0 - github.com/gagliardetto/solana-go v1.8.4 + github.com/gagliardetto/binary v0.8.0 + github.com/gagliardetto/solana-go v1.12.0 github.com/getsentry/sentry-go v0.27.0 github.com/gin-contrib/cors v1.7.2 github.com/gin-contrib/expvar v0.0.1 @@ -80,6 +81,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.34 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 @@ -114,13 +116,13 @@ require ( go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 golang.org/x/crypto v0.31.0 - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c - golang.org/x/mod v0.21.0 + golang.org/x/exp v0.0.0-20241210194714-1829a127f884 + golang.org/x/mod v0.22.0 golang.org/x/sync v0.10.0 golang.org/x/term v0.27.0 golang.org/x/text v0.21.0 golang.org/x/time v0.7.0 - golang.org/x/tools v0.26.0 + golang.org/x/tools v0.28.0 gonum.org/v1/gonum v0.15.1 google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.35.1 @@ -133,7 +135,6 @@ require ( cel.dev/expr v0.17.0 // indirect cloud.google.com/go/auth v0.9.9 // indirect cloud.google.com/go/storage v1.45.0 // indirect - contrib.go.opencensus.io/exporter/stackdriver v0.13.5 // indirect cosmossdk.io/api v0.3.1 // indirect cosmossdk.io/core v0.5.1 // indirect cosmossdk.io/depinject v1.0.0-alpha.4 // indirect @@ -196,8 +197,7 @@ require ( github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/dfuse-io/logging v0.0.0-20210109005628-b97a57253f70 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect @@ -209,7 +209,6 @@ require ( github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect - github.com/gagliardetto/binary v0.7.7 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect github.com/gagliardetto/utilz v0.1.1 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect @@ -236,7 +235,6 @@ require ( github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/glog v1.2.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect @@ -337,13 +335,12 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.19.0 // indirect github.com/status-im/keycard-go v0.2.0 // indirect - github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 // indirect + github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.13 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect @@ -363,7 +360,6 @@ require ( go.dedis.ch/protobuf v1.0.11 // indirect go.etcd.io/bbolt v1.3.9 // indirect go.mongodb.org/mongo-driver v1.15.0 // indirect - go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.31.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect @@ -383,7 +379,7 @@ require ( go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.uber.org/ratelimit v0.3.1 // indirect golang.org/x/arch v0.11.0 // indirect - golang.org/x/net v0.30.0 // indirect + golang.org/x/net v0.32.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/api v0.202.0 // indirect diff --git a/go.sum b/go.sum index e7fc31914d5..cebe69c75bb 100644 --- a/go.sum +++ b/go.sum @@ -3,7 +3,6 @@ cel.dev/expr v0.17.0/go.mod h1:HCwbrn+qQoHPXgfz6cl2J0hDybnX2N1sQQkl9EggXx8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= @@ -54,10 +53,6 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.45.0 h1:5av0QcIVj77t+44mV4gffFC/LscFRUhto6UBMB5SimM= cloud.google.com/go/storage v1.45.0/go.mod h1:wpPblkIuMP5jCB/E48Pz9zIo2S/zD8g+ITmxKkPCITE= -contrib.go.opencensus.io/exporter/stackdriver v0.12.6/go.mod h1:8x999/OcIPy5ivx/wDiV7Gx4D+VUPODf0mWRGRc5kSk= -contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= -contrib.go.opencensus.io/exporter/stackdriver v0.13.5 h1:TNaexHK16gPUoc7uzELKOU7JULqccn1NDuqUxmxSqfo= -contrib.go.opencensus.io/exporter/stackdriver v0.13.5/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= cosmossdk.io/api v0.3.1 h1:NNiOclKRR0AOlO4KIqeaG6PS6kswOMhHD0ir0SscNXE= cosmossdk.io/api v0.3.1/go.mod h1:DfHfMkiNA2Uhy8fj0JJlOCYOBp4eWUUJ1te5zBGNyIw= cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= @@ -73,7 +68,6 @@ cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= cosmossdk.io/tools/rosetta v0.2.1 h1:ddOMatOH+pbxWbrGJKRAawdBkPYLfKXutK9IETnjYxw= cosmossdk.io/tools/rosetta v0.2.1/go.mod h1:Pqdc1FdvkNV3LcNIkYWt2RQY6IP1ge6YWZk8MhhO9Hw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= @@ -100,8 +94,6 @@ github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Depado/ginprom v1.8.0 h1:zaaibRLNI1dMiiuj1MKzatm8qrcHzikMlCc1anqOdyo= github.com/Depado/ginprom v1.8.0/go.mod h1:XBaKzeNBqPF4vxJpNLincSQZeMDnZp1tIbU0FU0UKgg= -github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0= -github.com/GeertJohan/go.rice v1.0.0/go.mod h1:eH6gbSOAUv07dQuZVnBmoDP8mgsM1rtixis4Tib9if0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.3 h1:cb3br57K508pQEFgBxn9GDhPS9HefpyMPK1RzmtMNzk= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.3/go.mod h1:itPGVDKf9cC/ov4MdvJ2QZ0khw4bfoo9jzwTJlaxy2k= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.3 h1:xir5X8TS8UBVPWg2jHL+cSTf0jZgqYQSA54TscSt1/0= @@ -133,7 +125,6 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/XSAM/otelsql v0.27.0 h1:i9xtxtdcqXV768a5C6SoT/RkG+ue3JTOgkYInzlTOqs= github.com/XSAM/otelsql v0.27.0/go.mod h1:0mFB3TvLa7NCuhm/2nU7/b2wEtsczkj8Rey8ygO7V+A= -github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -143,7 +134,6 @@ github.com/alexbrainman/sspi v0.0.0-20210105120005-909beea2cc74/go.mod h1:cEWa1L github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/allegro/bigcache v1.2.1 h1:hg1sY1raCwic3Vnsvje6TT7/pnZba83LeFck5NrFKSc= github.com/allegro/bigcache v1.2.1/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129/go.mod h1:rFgpPQZYZ8vdbc+48xibu8ALc3yeyd64IhHS+PU6Yyg= github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -163,8 +153,6 @@ github.com/atombender/go-jsonschema v0.16.1-0.20240916205339-a74cd4e2851c h1:cxQ github.com/atombender/go-jsonschema v0.16.1-0.20240916205339-a74cd4e2851c/go.mod h1:3XzxudkrYVUvbduN/uI2fl4lSrMSzU0+3RCu2mpnfx8= github.com/avast/retry-go/v4 v4.6.0 h1:K9xNA+KeB8HHc2aWFuLb25Offp+0iVRXEvFx8IinRJA= github.com/avast/retry-go/v4 v4.6.0/go.mod h1:gvWlPhBVsvBbLkVGDg/KwvBv0bEkCOLRRSHKIr2PyOE= -github.com/aws/aws-sdk-go v1.22.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.54.19 h1:tyWV+07jagrNiCcGRzRhdtVjQs7Vy41NwsuOcl0IbVI= github.com/aws/aws-sdk-go v1.54.19/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59 h1:WWB576BN5zNSZc/M9d/10pqEx5VHNhaQ/yOVAkmj5Yo= @@ -185,7 +173,6 @@ github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2 github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= @@ -272,9 +259,7 @@ github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJ github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -282,7 +267,6 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= @@ -319,7 +303,6 @@ github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJF github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/danielkov/gin-helmet v0.0.0-20171108135313-1387e224435e h1:5jVSh2l/ho6ajWhSPNN84eHEdq3dp0T7+f6r3Tc6hsk= @@ -333,23 +316,18 @@ github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80N github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dfuse-io/logging v0.0.0-20201110202154-26697de88c79/go.mod h1:V+ED4kT/t/lKtH99JQmKIb0v9WL3VaYkJ36CfHlVECI= -github.com/dfuse-io/logging v0.0.0-20210109005628-b97a57253f70 h1:CuJS05R9jmNlUK8GOxrEELPbfXm0EuGh/30LjkjN5vo= -github.com/dfuse-io/logging v0.0.0-20210109005628-b97a57253f70/go.mod h1:EoK/8RFbMEteaCaz89uessDTnCWjbbcr+DXcBh4el5o= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -385,7 +363,6 @@ github.com/ethereum/go-ethereum v1.14.11/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2 github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= @@ -404,13 +381,13 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= -github.com/gagliardetto/binary v0.7.7 h1:QZpT38+sgoPg+TIQjH94sLbl/vX+nlIRA37pEyOsjfY= -github.com/gagliardetto/binary v0.7.7/go.mod h1:mUuay5LL8wFVnIlecHakSZMvcdqfs+CsotR5n77kyjM= +github.com/gagliardetto/binary v0.8.0 h1:U9ahc45v9HW0d15LoN++vIXSJyqR/pWw8DDlhd7zvxg= +github.com/gagliardetto/binary v0.8.0/go.mod h1:2tfj51g5o9dnvsc+fL3Jxr22MuWzYXwx9wEoN0XQ7/c= github.com/gagliardetto/gofuzz v1.2.2 h1:XL/8qDMzcgvR4+CyRQW9UGdwPRPMHVJfqQ/uMvSUuQw= github.com/gagliardetto/gofuzz v1.2.2/go.mod h1:bkH/3hYLZrMLbfYWA0pWzXmi5TTRZnu4pMGZBkqMKvY= github.com/gagliardetto/hashsearch v0.0.0-20191005111333-09dd671e19f9/go.mod h1:513DXpQPzeRo7d4dsCP3xO3XI8hgvruMl9njxyQeraQ= -github.com/gagliardetto/solana-go v1.8.4 h1:vmD/JmTlonyXGy39bAo0inMhmbdAwV7rXZtLDMZeodE= -github.com/gagliardetto/solana-go v1.8.4/go.mod h1:i+7aAyNDTHG0jK8GZIBSI4OVvDqkt2Qx+LklYclRNG8= +github.com/gagliardetto/solana-go v1.12.0 h1:rzsbilDPj6p+/DOPXBMLhwMZeBgeRuXjm5zQFCoXgsg= +github.com/gagliardetto/solana-go v1.12.0/go.mod h1:l/qqqIN6qJJPtxW/G1PF4JtcE3Zg2vD2EliZrr9Gn5k= github.com/gagliardetto/treeout v0.1.4 h1:ozeYerrLCmCubo1TcIjFiOWTTGteOOHND1twdFpgwaw= github.com/gagliardetto/treeout v0.1.4/go.mod h1:loUefvXTrlRG5rYmJmExNryyBRh8f89VZhmMOyCyqok= github.com/gagliardetto/utilz v0.1.1 h1:/etW4hl607emKg6R6Lj9jRJ9d6ue2AQOyjhuAwjzs1U= @@ -516,7 +493,6 @@ github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVI github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -552,7 +528,6 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= @@ -627,12 +602,10 @@ github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/rpc v1.2.0/go.mod h1:V4h9r+4sF5HnzqbwIez0fKSpANP0zlYd3qR7p36jkTQ= github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA= github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo= github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY= github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/grafana/pyroscope-go v1.1.2 h1:7vCfdORYQMCxIzI3NlYAs3FcBP760+gWuYWOyiVyYx8= @@ -643,15 +616,12 @@ github.com/graph-gophers/dataloader v5.0.0+incompatible h1:R+yjsbrNq1Mo3aPG+Z/EK github.com/graph-gophers/dataloader v5.0.0+incompatible/go.mod h1:jk4jk0c5ZISbKaMe8WsVopGB5/15GvGHMdMdPtwlRp4= github.com/graph-gophers/graphql-go v1.5.0 h1:fDqblo50TEpD0LY7RXk/LFVYEVqo3+tXMNMPSVXA1yc= github.com/graph-gophers/graphql-go v1.5.0/go.mod h1:YtmJZDLbF1YYNrlNAuiO5zAStUWc3XZT07iGsVqe1Os= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 h1:pRhl55Yx1eC7BZ1N+BBWwnKaMyD8uC+34TLdndZMAKk= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0/go.mod h1:XKMd7iuf/RGPSMJ/U4HP0zS2Z9Fh8Ps9a+6X26m/tmI= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= @@ -706,7 +676,6 @@ github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.6.0 h1:uL2shRDx7RTrOrTCUZEGP/wJUFiUI8QT6E7z5o8jga4= github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -800,10 +769,8 @@ github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0f github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= @@ -812,7 +779,6 @@ github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= @@ -833,7 +799,6 @@ github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= @@ -875,7 +840,6 @@ github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczG github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= @@ -889,7 +853,6 @@ github.com/marcboeker/go-duckdb v1.8.3 h1:ZkYwiIZhbYsT6MmJsZ3UPTHrTZccDdM4ztoqSl github.com/marcboeker/go-duckdb v1.8.3/go.mod h1:C9bYRE1dPYb1hhfu/SSomm78B0FXmNgRvv6YBW/Hooc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= @@ -898,8 +861,6 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -962,7 +923,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/mostynb/zstdpool-freelist v0.0.0-20201229113212-927304c0c3b1 h1:mPMvm6X6tf4w8y7j9YIt6V9jfWhL6QlbEc7CCmeQlWk= github.com/mostynb/zstdpool-freelist v0.0.0-20201229113212-927304c0c3b1/go.mod h1:ye2e/VUEtE2BHE+G/QcKkcLQVAEJoYRFj5VUOQatCRE= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= @@ -977,7 +937,6 @@ github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJm github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E= github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 h1:dOYG7LS/WK00RWZc8XGgcUTlTxpp3mKhdR2Q9z9HbXM= github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1/go.mod h1:mpRZBD8SJ55OIICQ3iWH0Yz3cjzA61JdqMLoWXeB2+8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -985,7 +944,6 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1049,7 +1007,6 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:Om github.com/pressly/goose/v3 v3.21.1 h1:5SSAKKWej8LVVzNLuT6KIvP1eFDuPvxa+B6H0w78buQ= github.com/pressly/goose/v3 v3.21.1/go.mod h1:sqthmzV8PitchEkjecFJII//l43dLOCzfWh8pHEe+vE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= @@ -1060,21 +1017,17 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/prometheus v0.54.1 h1:vKuwQNjnYN2/mDoWfHXDhAsz/68q/dQDb+YbcEqU7MQ= github.com/prometheus/prometheus v0.54.1/go.mod h1:xlLByHhk2g3ycakQGrMaU8K7OySZx98BzeCR99991NY= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= @@ -1088,7 +1041,6 @@ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -1154,6 +1106,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff h1:ZEOlcleVdT0/y9V5yjgFJF0j7MpvdrFmKis/xmFNIgE= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff/go.mod h1:JJZMCB75aVSAiPNW032F9WUKTlLztTd8bbQB5MEaZa4= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 h1:cf7mgbR8OelUnq49x0vYLy1XWddw4t1Q1YsBPxUQY4M= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4/go.mod h1:yti7e1+G9hhkYhj+L5sVUULn9Bn3bBL5/AxaNqdJ5YQ= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= @@ -1184,7 +1138,6 @@ github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1199,7 +1152,6 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= @@ -1209,15 +1161,13 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= -github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75 h1:ZqpS7rAhhKD7S7DnrpEdrnW1/gZcv82ytpMviovkli4= -github.com/streamingfast/logging v0.0.0-20220405224725-2755dab2ce75/go.mod h1:VlduQ80JcGJSargkRU4Sg9Xo63wZD/l8A5NC/Uo1/uU= +github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 h1:RN5mrigyirb8anBEtdjtHFIufXdacyTi6i4KBfeNXeo= +github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091/go.mod h1:VlduQ80JcGJSargkRU4Sg9Xo63wZD/l8A5NC/Uo1/uU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -1249,21 +1199,16 @@ github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDd github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/teris-io/shortid v0.0.0-20171029131806-771a37caa5cf/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= -github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 h1:3SNcvBmEPE1YlB1JpVZouslJpI3GBNoiqW7+wb0Rz7w= -github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125/go.mod h1:M8agBzgqHIhgj7wEn9/0hJUZcrvt9VY+Ln+S1I5Mha0= github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a h1:YuO+afVc3eqrjiCUizNCxI53bl/BnPiVwXqLzqYTqgU= github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a/go.mod h1:/sfW47zCZp9FrtGcWyo1VjbgDaodxX9ovZvgLb/MxaA= github.com/tidwall/btree v1.6.0 h1:LDZfKfQIBHGHWSwckhXI0RPSXzlo+KYdjK7FWSqOzzg= github.com/tidwall/btree v1.6.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= -github.com/tidwall/gjson v1.9.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -1271,7 +1216,6 @@ github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFA github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= @@ -1297,24 +1241,17 @@ github.com/urfave/cli v1.22.14 h1:ebbhrRiGK2i4naQJr+1Xj92HXZCrK7MsyTS/ob3HnAk= github.com/urfave/cli v1.22.14/go.mod h1:X0eDS6pD6Exaclxm99NJ3FiCDRED7vIHpx2mDOHLvkA= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fastjson v1.4.1 h1:hrltpHpIpkaxll8QltMU8c3QZ5+qIiCL8yKqPFJI/yE= github.com/valyala/fastjson v1.4.1/go.mod h1:nV6MsjxL2IMJQUoHDIrjEI7oLyeqK6aBD7EFWPsvP8o= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= -github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1342,18 +1279,15 @@ go.dedis.ch/protobuf v1.0.5/go.mod h1:eIV4wicvi6JK0q/QnfIEGeSFNG0ZeB24kzut5+HaRL go.dedis.ch/protobuf v1.0.7/go.mod h1:pv5ysfkDX/EawiPqcW3ikOxsL5t+BqnV6xHSmE79KI4= go.dedis.ch/protobuf v1.0.11 h1:FTYVIEzY/bfl37lu3pR4lIj+F9Vp1jE8oh91VmxKgLo= go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYrJ4= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI= go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc= go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1425,15 +1359,12 @@ go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKY go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= go.uber.org/ratelimit v0.3.1 h1:K4qVE+byfv/B3tC+4nYWP7v/6SimcO7HzHekoMNBma0= go.uber.org/ratelimit v0.3.1/go.mod h1:6euWsTB6U/Nb3X++xEUXA8ciPJvr19Q/0h1+oDcJhRk= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= @@ -1460,7 +1391,6 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= @@ -1475,8 +1405,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/exp v0.0.0-20241210194714-1829a127f884 h1:Y/Mj/94zIQQGHVSv1tTtQBDaQaJe62U9bkDZKKyhPCU= +golang.org/x/exp v0.0.0-20241210194714-1829a127f884/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1505,15 +1435,14 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= -golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1560,8 +1489,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= +golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1596,7 +1525,6 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1612,7 +1540,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1679,7 +1606,6 @@ golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -1726,7 +1652,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1772,8 +1697,8 @@ golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= -golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= +golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= +golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1789,7 +1714,6 @@ google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEt google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= @@ -1814,7 +1738,6 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= @@ -1824,7 +1747,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1873,9 +1795,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go. google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1927,16 +1847,13 @@ gopkg.in/guregu/null.v2 v2.1.2/go.mod h1:XORrx8tyS5ZDcyUboCIxQtta/Aujk/6pfWrn9Xe gopkg.in/guregu/null.v4 v4.0.0 h1:1Wm3S1WEA2I26Kq+6vcW+w0gcDo44YKYD7YIEJNHDjg= gopkg.in/guregu/null.v4 v4.0.0/go.mod h1:YoQhUrADuG3i9WqesrCmpNRwm1ypAgSHYqoOcTu/JrI= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index a26c222b333..f141ccb7618 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -428,7 +428,7 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 818218ea346..e742a0a135b 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1412,8 +1412,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff h1:ZEOlcleVdT0/y9V5yjgFJF0j7MpvdrFmKis/xmFNIgE= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff/go.mod h1:JJZMCB75aVSAiPNW032F9WUKTlLztTd8bbQB5MEaZa4= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b h1:UBXi9Yj8YSMHDDaxQLu273x1fWjyEL9xP58nuJsqZfg= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250103152858-8973fd0c912b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 h1:cf7mgbR8OelUnq49x0vYLy1XWddw4t1Q1YsBPxUQY4M= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4/go.mod h1:yti7e1+G9hhkYhj+L5sVUULn9Bn3bBL5/AxaNqdJ5YQ= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 0a4add1c4d0..186a414a96b 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -412,6 +412,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.36 // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 72eb3a750d4..bdc19827caf 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1399,6 +1399,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff h1:ZEOlcleVdT0/y9V5yjgFJF0j7MpvdrFmKis/xmFNIgE= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff/go.mod h1:JJZMCB75aVSAiPNW032F9WUKTlLztTd8bbQB5MEaZa4= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 h1:cf7mgbR8OelUnq49x0vYLy1XWddw4t1Q1YsBPxUQY4M= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4/go.mod h1:yti7e1+G9hhkYhj+L5sVUULn9Bn3bBL5/AxaNqdJ5YQ= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 4345bd4d894..5260e1647fd 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -14,12 +14,12 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient/simulated" "github.com/jmoiron/sqlx" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" "github.com/smartcontractkit/chainlink/deployment/ccip/changeset/testhelpers" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink-ccip/plugintypes" @@ -291,7 +291,7 @@ func TestCCIPReader_GetOffRampConfigDigest(t *testing.T) { nil, chainD, addr.Bytes(), - ccipevm.NewExtraArgsCodec(), + ccip.NewExtraArgsCodec(), ) ccipReaderCommitDigest, err := reader.GetOffRampConfigDigest(ctx, consts.PluginTypeCommit) @@ -1411,7 +1411,7 @@ func testSetupRealContracts( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) - edc := ccipevm.NewExtraArgsCodec() + edc := ccip.NewExtraArgsCodec() reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, cciptypes.ChainSelector(destChain), nil, edc) return reader @@ -1527,7 +1527,7 @@ func testSetup( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) - edc := ccipevm.NewExtraArgsCodec() + edc := ccip.NewExtraArgsCodec() reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, params.DestChain, nil, edc) t.Cleanup(func() { From 82a162f8ec5c13b8f795b9ff04eb21f8153a258f Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 15:02:54 -0600 Subject: [PATCH 04/36] rename --- core/capabilities/ccip/ccipevm/helpers.go | 4 ++-- core/capabilities/ccip/ccipevm/helpers_test.go | 6 +++--- core/capabilities/ccip/ccipsolana/helpers.go | 2 +- core/capabilities/ccip/ccipsolana/helpers_test.go | 2 +- core/capabilities/ccip/extraargscodec.go | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index d3bce9f454f..a1373032102 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -49,7 +49,7 @@ func decodeExtraArgsV1V2(extraArgs []byte) (gasLimit *big.Int, err error) { return ifaces[0].(*big.Int), nil } -func DecodeExtraArgs(extraArgs []byte) (map[string]any, error) { +func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { if len(extraArgs) < 4 { return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) } @@ -69,7 +69,7 @@ func DecodeExtraArgs(extraArgs []byte) (map[string]any, error) { args := make(map[string]interface{}) err := messageHasherABI.Methods[method].Inputs.UnpackIntoMap(args, extraArgs[4:]) if err != nil { - return nil, fmt.Errorf("abi decode extra args v1: %w", err) + return nil, fmt.Errorf("abi decode extra args %v: %w", method, err) } for k, val := range args { diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index ff3dab70fbc..25078852e3a 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -46,7 +46,7 @@ func Test_decodeExtraArgs(t *testing.T) { }) require.NoError(t, err) - m, err := DecodeExtraArgs(encoded) + m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) require.Equal(t, 1, len(m)) }) @@ -58,7 +58,7 @@ func Test_decodeExtraArgs(t *testing.T) { }) require.NoError(t, err) - m, err := DecodeExtraArgs(encoded) + m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) require.Equal(t, 2, len(m)) }) @@ -77,7 +77,7 @@ func Test_decodeExtraArgs(t *testing.T) { }) require.NoError(t, err) - _, err = DecodeExtraArgs(encoded) + _, err = DecodeExtraArgsToMap(encoded) require.NoError(t, err) }) } diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/helpers.go index 86efb1796f9..1d3d976dfda 100644 --- a/core/capabilities/ccip/ccipsolana/helpers.go +++ b/core/capabilities/ccip/ccipsolana/helpers.go @@ -8,7 +8,7 @@ import ( "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) -func DecodeExtraArgs(extraArgs []byte) (map[string]any, error) { +func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { outputMap := make(map[string]any) var args ccip_router.SVMExtraArgs decoder := agbinary.NewBorshDecoder(extraArgs) diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go index f9192c76075..fd701f0c72f 100644 --- a/core/capabilities/ccip/ccipsolana/helpers_test.go +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -27,7 +27,7 @@ func Test_decodeExtraArgs(t *testing.T) { encoder := agbinary.NewBorshEncoder(&buf) err := extraArgs.MarshalWithEncoder(encoder) require.NoError(t, err) - output, err := DecodeExtraArgs(buf.Bytes()) + output, err := DecodeExtraArgsToMap(buf.Bytes()) require.NoError(t, err) require.Equal(t, 3, len(output)) }) diff --git a/core/capabilities/ccip/extraargscodec.go b/core/capabilities/ccip/extraargscodec.go index 1861ce576c9..2208941fbe4 100644 --- a/core/capabilities/ccip/extraargscodec.go +++ b/core/capabilities/ccip/extraargscodec.go @@ -24,10 +24,10 @@ func (ExtraArgsCodec) DecodeExtraData(extraArgs cciptypes.Bytes, sourceChainSele switch family { case chainsel.FamilyEVM: - return ccipevm.DecodeExtraArgs(extraArgs) + return ccipevm.DecodeExtraArgsToMap(extraArgs) case chainsel.FamilySolana: - return ccipsolana.DecodeExtraArgs(extraArgs) + return ccipsolana.DecodeExtraArgsToMap(extraArgs) default: return nil, fmt.Errorf("unsupported family for extra args type %s", family) From e8bbe9a3ebc36f20d07aadd999b514c014020bf0 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 16:29:23 -0600 Subject: [PATCH 05/36] tidy --- core/scripts/go.sum | 4 ++-- go.mod | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 19b613a4eb8..d29d9894bb0 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1172,8 +1172,8 @@ github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff h1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff/go.mod h1:JJZMCB75aVSAiPNW032F9WUKTlLztTd8bbQB5MEaZa4= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= -github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4 h1:cf7mgbR8OelUnq49x0vYLy1XWddw4t1Q1YsBPxUQY4M= -github.com/smartcontractkit/chainlink-common v0.4.2-0.20250117101554-1922eef0bdd4/go.mod h1:yti7e1+G9hhkYhj+L5sVUULn9Bn3bBL5/AxaNqdJ5YQ= +github.com/smartcontractkit/chainlink-common v0.4.2-0.20250121141917-62443f4b3c30 h1:cLqp7DciHn7MXX3Y2QAiBHjuNPUFfTRreXfjWbUcM6o= +github.com/smartcontractkit/chainlink-common v0.4.2-0.20250121141917-62443f4b3c30/go.mod h1:V3BHfvLnQNBUoZ4bGjD29ZPhyzPE++DkYkhvPb9tcRs= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e/go.mod h1:mUh5/woemsVaHgTorA080hrYmO3syBCmPdnWc/5dOqk= github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 h1:GcPYNVFYjB065CNq0h8nK/VeU08nUkHgBX0cJIEpuHY= diff --git a/go.mod b/go.mod index 0e334abeb25..3ea947724fd 100644 --- a/go.mod +++ b/go.mod @@ -81,7 +81,7 @@ require ( github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250120130359-cc025272bbff github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a - github.com/smartcontractkit/chainlink-common v0.4.2-0.20250121141917-62443f4b3c30 + github.com/smartcontractkit/chainlink-common v0.4.2-0.20250121141917-62443f4b3c30 github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 github.com/smartcontractkit/chainlink-feeds v0.1.1 @@ -209,7 +209,6 @@ require ( github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect - github.com/gagliardetto/binary v0.8.0 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect github.com/gagliardetto/utilz v0.1.1 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect From 36a5ad1a2e8283dd2610de4bd6806a4f1f7f6bf7 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 16:58:52 -0600 Subject: [PATCH 06/36] refactor --- core/capabilities/ccip/{ => common}/extraargscodec.go | 2 +- core/capabilities/ccip/oraclecreator/plugin.go | 6 +++--- integration-tests/smoke/ccip/ccip_reader_test.go | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) rename core/capabilities/ccip/{ => common}/extraargscodec.go (98%) diff --git a/core/capabilities/ccip/extraargscodec.go b/core/capabilities/ccip/common/extraargscodec.go similarity index 98% rename from core/capabilities/ccip/extraargscodec.go rename to core/capabilities/ccip/common/extraargscodec.go index 2208941fbe4..4914fc9b924 100644 --- a/core/capabilities/ccip/extraargscodec.go +++ b/core/capabilities/ccip/common/extraargscodec.go @@ -1,4 +1,4 @@ -package ccip +package common import ( "fmt" diff --git a/core/capabilities/ccip/oraclecreator/plugin.go b/core/capabilities/ccip/oraclecreator/plugin.go index db5e7a794bb..2f603a8aed2 100644 --- a/core/capabilities/ccip/oraclecreator/plugin.go +++ b/core/capabilities/ccip/oraclecreator/plugin.go @@ -13,7 +13,7 @@ import ( "github.com/gagliardetto/solana-go" "github.com/google/uuid" "github.com/prometheus/client_golang/prometheus" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip" + common2 "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" "github.com/smartcontractkit/chainlink/v2/core/services/relay" chainsel "github.com/smartcontractkit/chain-selectors" @@ -287,7 +287,7 @@ func (i *pluginOracleCreator) createFactoryAndTransmitter( ccipreaderpkg.OCR3ConfigWithMeta(config), ccipevm.NewCommitPluginCodecV1(), ccipevm.NewMessageHasherV1(i.lggr.Named("MessageHasherV1")), - ccip.NewExtraArgsCodec(), + common2.NewExtraArgsCodec(), i.homeChainReader, i.homeChainSelector, contractReaders, @@ -310,7 +310,7 @@ func (i *pluginOracleCreator) createFactoryAndTransmitter( ccipreaderpkg.OCR3ConfigWithMeta(config), ccipevm.NewExecutePluginCodecV1(), ccipevm.NewMessageHasherV1(i.lggr.Named("MessageHasherV1")), - ccip.NewExtraArgsCodec(), + common2.NewExtraArgsCodec(), i.homeChainReader, ccipevm.NewEVMTokenDataEncoder(), ccipevm.NewGasEstimateProvider(), diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 5260e1647fd..69cf2bfc9f7 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -14,7 +14,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient/simulated" "github.com/jmoiron/sqlx" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip" + common2 "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" @@ -291,7 +291,7 @@ func TestCCIPReader_GetOffRampConfigDigest(t *testing.T) { nil, chainD, addr.Bytes(), - ccip.NewExtraArgsCodec(), + common2.NewExtraArgsCodec(), ) ccipReaderCommitDigest, err := reader.GetOffRampConfigDigest(ctx, consts.PluginTypeCommit) @@ -1411,7 +1411,7 @@ func testSetupRealContracts( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) - edc := ccip.NewExtraArgsCodec() + edc := common2.NewExtraArgsCodec() reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, cciptypes.ChainSelector(destChain), nil, edc) return reader @@ -1527,7 +1527,7 @@ func testSetup( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) - edc := ccip.NewExtraArgsCodec() + edc := common2.NewExtraArgsCodec() reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, params.DestChain, nil, edc) t.Cleanup(func() { From 3fa671b671bfb2b10b3a6cef0c5b3d0eb02f4026 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 21 Jan 2025 21:05:34 -0600 Subject: [PATCH 07/36] fix lint --- core/capabilities/ccip/ccipevm/helpers.go | 9 +++++---- core/capabilities/ccip/ccipevm/helpers_test.go | 4 ++-- core/capabilities/ccip/ccipsolana/helpers.go | 1 + core/capabilities/ccip/ccipsolana/helpers_test.go | 5 +++-- core/capabilities/ccip/common/extraargscodec.go | 1 + 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index a1373032102..8079b934b12 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -55,13 +55,14 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { } var method string - if bytes.Equal(extraArgs[:4], evmExtraArgsV1Tag) { + switch string(extraArgs[:4]) { + case string(evmExtraArgsV1Tag): method = evmV1DecodeName - } else if bytes.Equal(extraArgs[:4], evmExtraArgsV2Tag) { + case string(evmExtraArgsV2Tag): method = evmV2DecodeName - } else if bytes.Equal(extraArgs[:4], svmExtraArgsV1Tag) { + case string(svmExtraArgsV1Tag): method = svmV1DecodeName - } else { + default: return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) } diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index 25078852e3a..dc7593a5213 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -48,7 +48,7 @@ func Test_decodeExtraArgs(t *testing.T) { m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) - require.Equal(t, 1, len(m)) + require.Len(t, m, 1) }) t.Run("decode extra args into map evm v2", func(t *testing.T) { @@ -60,7 +60,7 @@ func Test_decodeExtraArgs(t *testing.T) { m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) - require.Equal(t, 2, len(m)) + require.Len(t, m, 2) }) t.Run("decode extra args into map svm", func(t *testing.T) { diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/helpers.go index 1d3d976dfda..d1896fe0035 100644 --- a/core/capabilities/ccip/ccipsolana/helpers.go +++ b/core/capabilities/ccip/ccipsolana/helpers.go @@ -5,6 +5,7 @@ import ( "reflect" agbinary "github.com/gagliardetto/binary" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go index fd701f0c72f..ae765e87406 100644 --- a/core/capabilities/ccip/ccipsolana/helpers_test.go +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -6,9 +6,10 @@ import ( agbinary "github.com/gagliardetto/binary" "github.com/gagliardetto/solana-go" + "github.com/stretchr/testify/require" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/config" "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" - "github.com/stretchr/testify/require" ) func Test_decodeExtraArgs(t *testing.T) { @@ -29,6 +30,6 @@ func Test_decodeExtraArgs(t *testing.T) { require.NoError(t, err) output, err := DecodeExtraArgsToMap(buf.Bytes()) require.NoError(t, err) - require.Equal(t, 3, len(output)) + require.Len(t, output, 3) }) } diff --git a/core/capabilities/ccip/common/extraargscodec.go b/core/capabilities/ccip/common/extraargscodec.go index 4914fc9b924..dd168084a2d 100644 --- a/core/capabilities/ccip/common/extraargscodec.go +++ b/core/capabilities/ccip/common/extraargscodec.go @@ -4,6 +4,7 @@ import ( "fmt" chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipsolana" From af29932ad1c408866bc47135e622eb85b7097b3f Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 22 Jan 2025 11:02:21 -0600 Subject: [PATCH 08/36] fix --- core/capabilities/ccip/ccipsolana/helpers.go | 2 +- .../ccip/ccipsolana/helpers_test.go | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/helpers.go index d1896fe0035..7d5e861067b 100644 --- a/core/capabilities/ccip/ccipsolana/helpers.go +++ b/core/capabilities/ccip/ccipsolana/helpers.go @@ -11,7 +11,7 @@ import ( func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { outputMap := make(map[string]any) - var args ccip_router.SVMExtraArgs + var args ccip_router.AnyExtraArgs decoder := agbinary.NewBorshDecoder(extraArgs) err := args.UnmarshalWithDecoder(decoder) if err != nil { diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go index ae765e87406..7affa0ff5b9 100644 --- a/core/capabilities/ccip/ccipsolana/helpers_test.go +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -5,23 +5,22 @@ import ( "testing" agbinary "github.com/gagliardetto/binary" - "github.com/gagliardetto/solana-go" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/config" "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) func Test_decodeExtraArgs(t *testing.T) { t.Run("decode extra args into map svm", func(t *testing.T) { - extraArgs := ccip_router.SVMExtraArgs{ - ComputeUnits: 1000, - IsWritableBitmap: 2, - Accounts: []solana.PublicKey{ - config.ReceiverExternalExecutionConfigPDA, - config.ReceiverTargetAccountPDA, - solana.SystemProgramID, - }, + extraArgs := ccip_router.AnyExtraArgs{ + // TODO wait for onchain team fix this AnyExtraArgs + //ComputeUnits: 1000, + //IsWritableBitmap: 2, + //Accounts: []solana.PublicKey{ + // config.ReceiverExternalExecutionConfigPDA, + // config.ReceiverTargetAccountPDA, + // solana.SystemProgramID, + //}, } var buf bytes.Buffer From 2597b48a02c8b74dd75af526a2590843fa374921 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 22 Jan 2025 15:50:48 -0600 Subject: [PATCH 09/36] update --- go.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/go.md b/go.md index 5a9081747f2..d5a7b56b5fc 100644 --- a/go.md +++ b/go.md @@ -28,6 +28,8 @@ flowchart LR chainlink-ccip --> chain-selectors chainlink-ccip --> chainlink-common click chainlink-ccip href "https://github.com/smartcontractkit/chainlink-ccip" + chainlink-ccip/chains/solana --> chainlink-common + click chainlink-ccip/chains/solana href "https://github.com/smartcontractkit/chainlink-ccip" chainlink-common --> grpc-proxy chainlink-common --> libocr click chainlink-common href "https://github.com/smartcontractkit/chainlink-common" @@ -47,6 +49,7 @@ flowchart LR click chainlink-starknet/relayer href "https://github.com/smartcontractkit/chainlink-starknet" chainlink/v2 --> chainlink-automation chainlink/v2 --> chainlink-ccip + chainlink/v2 --> chainlink-ccip/chains/solana chainlink/v2 --> chainlink-cosmos chainlink/v2 --> chainlink-data-streams chainlink/v2 --> chainlink-feeds @@ -68,6 +71,12 @@ flowchart LR wsrpc click wsrpc href "https://github.com/smartcontractkit/wsrpc" + subgraph chainlink-ccip-repo[chainlink-ccip] + chainlink-ccip + chainlink-ccip/chains/solana + end + click chainlink-ccip-repo href "https://github.com/smartcontractkit/chainlink-ccip" + subgraph tdh2-repo[tdh2] tdh2/go/ocr2/decryptionplugin tdh2/go/tdh2 @@ -75,7 +84,7 @@ flowchart LR click tdh2-repo href "https://github.com/smartcontractkit/tdh2" classDef outline stroke-dasharray:6,fill:none; - class tdh2-repo outline + class chainlink-ccip-repo,tdh2-repo outline ``` ## All modules ```mermaid @@ -145,7 +154,6 @@ flowchart LR chainlink/core/scripts --> chainlink/deployment click chainlink/core/scripts href "https://github.com/smartcontractkit/chainlink" chainlink/deployment --> ccip-owner-contracts - chainlink/deployment --> chainlink-ccip/chains/solana chainlink/deployment --> chainlink-protos/job-distributor chainlink/deployment --> chainlink-testing-framework/framework chainlink/deployment --> chainlink-testing-framework/lib @@ -158,6 +166,7 @@ flowchart LR click chainlink/load-tests href "https://github.com/smartcontractkit/chainlink" chainlink/v2 --> chainlink-automation chainlink/v2 --> chainlink-ccip + chainlink/v2 --> chainlink-ccip/chains/solana chainlink/v2 --> chainlink-cosmos chainlink/v2 --> chainlink-data-streams chainlink/v2 --> chainlink-feeds From a99bdcc6085c2d5141842863ffb88ca9dc5f038c Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 22 Jan 2025 15:56:28 -0600 Subject: [PATCH 10/36] update --- core/capabilities/ccip/ccipsolana/helpers_test.go | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go index 7affa0ff5b9..cf6944cb62b 100644 --- a/core/capabilities/ccip/ccipsolana/helpers_test.go +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -13,14 +13,8 @@ import ( func Test_decodeExtraArgs(t *testing.T) { t.Run("decode extra args into map svm", func(t *testing.T) { extraArgs := ccip_router.AnyExtraArgs{ - // TODO wait for onchain team fix this AnyExtraArgs - //ComputeUnits: 1000, - //IsWritableBitmap: 2, - //Accounts: []solana.PublicKey{ - // config.ReceiverExternalExecutionConfigPDA, - // config.ReceiverTargetAccountPDA, - // solana.SystemProgramID, - //}, + GasLimit: agbinary.Uint128{Lo: 5000, Hi: 0}, + AllowOutOfOrderExecution: false, } var buf bytes.Buffer @@ -29,6 +23,6 @@ func Test_decodeExtraArgs(t *testing.T) { require.NoError(t, err) output, err := DecodeExtraArgsToMap(buf.Bytes()) require.NoError(t, err) - require.Len(t, output, 3) + require.Len(t, output, 2) }) } From 5fe01d2f6da94d2986b3b2a508af44b722f70503 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 10:53:32 -0600 Subject: [PATCH 11/36] address Makram comments --- core/capabilities/ccip/ccipevm/helpers_test.go | 12 ++++++++++++ core/capabilities/ccip/ccipsolana/helpers.go | 1 + core/capabilities/ccip/ccipsolana/helpers_test.go | 8 ++++++++ core/capabilities/ccip/common/extraargscodec.go | 2 +- core/capabilities/ccip/oraclecreator/plugin.go | 6 +++--- integration-tests/smoke/ccip/ccip_reader_test.go | 8 ++++---- 6 files changed, 29 insertions(+), 8 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index dc7593a5213..425174b24f3 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -49,6 +49,10 @@ func Test_decodeExtraArgs(t *testing.T) { m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) require.Len(t, m, 1) + + gl, exist := m["gasLimit"] + require.True(t, exist) + require.Equal(t, gl, gasLimit) }) t.Run("decode extra args into map evm v2", func(t *testing.T) { @@ -61,6 +65,14 @@ func Test_decodeExtraArgs(t *testing.T) { m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) require.Len(t, m, 2) + + gl, exist := m["gasLimit"] + require.True(t, exist) + require.Equal(t, gl, gasLimit) + + ooe, exist := m["allowOutOfOrderExecution"] + require.True(t, exist) + require.Equal(t, ooe, true) }) t.Run("decode extra args into map svm", func(t *testing.T) { diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/helpers.go index 7d5e861067b..aee3a76d353 100644 --- a/core/capabilities/ccip/ccipsolana/helpers.go +++ b/core/capabilities/ccip/ccipsolana/helpers.go @@ -9,6 +9,7 @@ import ( "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) +// DecodeExtraArgsToMap is a helper function for converting Borsh encoded extra args bytes into map[string]any, which will be saved in ocr report.message.ExtraArgsDecoded func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { outputMap := make(map[string]any) var args ccip_router.AnyExtraArgs diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go index cf6944cb62b..cab221d2106 100644 --- a/core/capabilities/ccip/ccipsolana/helpers_test.go +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -24,5 +24,13 @@ func Test_decodeExtraArgs(t *testing.T) { output, err := DecodeExtraArgsToMap(buf.Bytes()) require.NoError(t, err) require.Len(t, output, 2) + + gasLimit, exist := output["GasLimit"] + require.True(t, exist) + require.Equal(t, agbinary.Uint128{Lo: 5000, Hi: 0}, gasLimit) + + ooe, exist := output["AllowOutOfOrderExecution"] + require.True(t, exist) + require.Equal(t, false, ooe) }) } diff --git a/core/capabilities/ccip/common/extraargscodec.go b/core/capabilities/ccip/common/extraargscodec.go index dd168084a2d..7805b6d3f91 100644 --- a/core/capabilities/ccip/common/extraargscodec.go +++ b/core/capabilities/ccip/common/extraargscodec.go @@ -20,7 +20,7 @@ func NewExtraArgsCodec() ExtraArgsCodec { func (ExtraArgsCodec) DecodeExtraData(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) if err != nil { - return nil, fmt.Errorf("failed to decode extra data, %w", err) + return nil, fmt.Errorf("failed to get chain family for selector %d: %w", sourceChainSelector, err) } switch family { diff --git a/core/capabilities/ccip/oraclecreator/plugin.go b/core/capabilities/ccip/oraclecreator/plugin.go index 2f603a8aed2..a227715530d 100644 --- a/core/capabilities/ccip/oraclecreator/plugin.go +++ b/core/capabilities/ccip/oraclecreator/plugin.go @@ -13,7 +13,7 @@ import ( "github.com/gagliardetto/solana-go" "github.com/google/uuid" "github.com/prometheus/client_golang/prometheus" - common2 "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" + ccipcommon "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" "github.com/smartcontractkit/chainlink/v2/core/services/relay" chainsel "github.com/smartcontractkit/chain-selectors" @@ -287,7 +287,7 @@ func (i *pluginOracleCreator) createFactoryAndTransmitter( ccipreaderpkg.OCR3ConfigWithMeta(config), ccipevm.NewCommitPluginCodecV1(), ccipevm.NewMessageHasherV1(i.lggr.Named("MessageHasherV1")), - common2.NewExtraArgsCodec(), + ccipcommon.NewExtraArgsCodec(), i.homeChainReader, i.homeChainSelector, contractReaders, @@ -310,7 +310,7 @@ func (i *pluginOracleCreator) createFactoryAndTransmitter( ccipreaderpkg.OCR3ConfigWithMeta(config), ccipevm.NewExecutePluginCodecV1(), ccipevm.NewMessageHasherV1(i.lggr.Named("MessageHasherV1")), - common2.NewExtraArgsCodec(), + ccipcommon.NewExtraArgsCodec(), i.homeChainReader, ccipevm.NewEVMTokenDataEncoder(), ccipevm.NewGasEstimateProvider(), diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 69cf2bfc9f7..486ed6ab15f 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -14,7 +14,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient/simulated" "github.com/jmoiron/sqlx" - common2 "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" + ccipcommon "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" @@ -291,7 +291,7 @@ func TestCCIPReader_GetOffRampConfigDigest(t *testing.T) { nil, chainD, addr.Bytes(), - common2.NewExtraArgsCodec(), + ccipcommon.NewExtraArgsCodec(), ) ccipReaderCommitDigest, err := reader.GetOffRampConfigDigest(ctx, consts.PluginTypeCommit) @@ -1411,7 +1411,7 @@ func testSetupRealContracts( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) - edc := common2.NewExtraArgsCodec() + edc := ccipcommon.NewExtraArgsCodec() reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, cciptypes.ChainSelector(destChain), nil, edc) return reader @@ -1527,7 +1527,7 @@ func testSetup( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) - edc := common2.NewExtraArgsCodec() + edc := ccipcommon.NewExtraArgsCodec() reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, params.DestChain, nil, edc) t.Cleanup(func() { From c49c04b9ef9fec6f64aab71f068734fc7aebe712 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 12:40:23 -0600 Subject: [PATCH 12/36] lint --- core/capabilities/ccip/ccipevm/helpers_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index 425174b24f3..fe298d2bfe5 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -72,7 +72,7 @@ func Test_decodeExtraArgs(t *testing.T) { ooe, exist := m["allowOutOfOrderExecution"] require.True(t, exist) - require.Equal(t, ooe, true) + require.Equal(t, true, ooe) }) t.Run("decode extra args into map svm", func(t *testing.T) { From a9033101ea21bc6d618a487aae25576324524c2d Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 15:00:11 -0600 Subject: [PATCH 13/36] mod tidy --- go.mod | 3 +-- integration-tests/load/go.mod | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 2680af6ddc7..1cce704fcad 100644 --- a/go.mod +++ b/go.mod @@ -80,7 +80,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.36 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250123161904-c40aa8ca45b2 - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a github.com/smartcontractkit/chainlink-common v0.4.2-0.20250121163309-3e179a73cb92 github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 @@ -209,7 +209,6 @@ require ( github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.6 // indirect - github.com/gagliardetto/binary v0.8.0 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect github.com/gagliardetto/utilz v0.1.1 // indirect github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 // indirect diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index f46313663b9..5e944b831f2 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -418,8 +418,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250114180313-3ba6bac6203a // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect From 80b3e3bb5e3c8fb109f3268e92dd0e3c4826404a Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 16:02:58 -0600 Subject: [PATCH 14/36] gomd --- go.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/go.md b/go.md index 6f5106604aa..d361331b328 100644 --- a/go.md +++ b/go.md @@ -76,6 +76,12 @@ flowchart LR wsrpc click wsrpc href "https://github.com/smartcontractkit/wsrpc" + subgraph chainlink-ccip-repo[chainlink-ccip] + chainlink-ccip + chainlink-ccip/chains/solana + end + click chainlink-ccip-repo href "https://github.com/smartcontractkit/chainlink-ccip" + subgraph chainlink-framework-repo[chainlink-framework] chainlink-framework/chains chainlink-framework/multinode @@ -95,7 +101,7 @@ flowchart LR click tdh2-repo href "https://github.com/smartcontractkit/tdh2" classDef outline stroke-dasharray:6,fill:none; - class chainlink-framework-repo,chainlink-protos-repo,tdh2-repo outline + class chainlink-ccip-repo,chainlink-framework-repo,chainlink-protos-repo,tdh2-repo outline ``` ## All modules ```mermaid From afcd808fa7f4e45297d053c16571c350c8a02edf Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 23 Jan 2025 20:51:35 -0600 Subject: [PATCH 15/36] fix import --- integration-tests/smoke/ccip/ccip_reader_test.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 4f1c3453814..92317850096 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -14,18 +14,16 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/ethclient/simulated" "github.com/jmoiron/sqlx" - ccipcommon "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap/zapcore" + ccipcommon "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" + "github.com/smartcontractkit/chainlink/deployment/ccip/changeset/testhelpers" "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" - "github.com/smartcontractkit/chainlink-ccip/plugintypes" - "github.com/smartcontractkit/chainlink/deployment/ccip/changeset" - "github.com/smartcontractkit/chainlink/deployment/ccip/changeset/testhelpers" "github.com/smartcontractkit/chainlink/deployment/environment/memory" "github.com/smartcontractkit/chainlink/integration-tests/utils/pgtest" @@ -39,7 +37,6 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" evmconfig "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/configs/evm" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/headtracker" @@ -52,7 +49,6 @@ import ( "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm" evmtypes "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/types" - "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" "github.com/smartcontractkit/chainlink/v2/evm/assets" "github.com/smartcontractkit/chainlink/v2/evm/utils" ubig "github.com/smartcontractkit/chainlink/v2/evm/utils/big" From 6bc6b291ba477a7cd562584b4a8ba2030838b9e1 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 24 Jan 2025 10:52:11 -0600 Subject: [PATCH 16/36] fix broken integration test --- deployment/ccip/changeset/cs_deploy_chain.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deployment/ccip/changeset/cs_deploy_chain.go b/deployment/ccip/changeset/cs_deploy_chain.go index ab67e70caa3..546e0e29a2e 100644 --- a/deployment/ccip/changeset/cs_deploy_chain.go +++ b/deployment/ccip/changeset/cs_deploy_chain.go @@ -633,6 +633,8 @@ func deployChainContractsSolana( true, // allow out of order execution EnableExecutionAfter, // period to wait before allowing manual execution solana.PublicKey{}, + solana.PublicKey{}, + solBinary.Uint128{Lo: 300000000, Hi: 0, Endianness: nil}, GetRouterConfigPDA(ccipRouterProgram), GetRouterStatePDA(ccipRouterProgram), chain.DeployerKey.PublicKey(), From a5f84ac40eb3478eb61dd85082d20a7dfc8dda43 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Fri, 24 Jan 2025 16:47:59 -0600 Subject: [PATCH 17/36] update --- core/capabilities/ccip/ccipevm/helpers_test.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index fe298d2bfe5..e9c9a73add0 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -78,15 +78,13 @@ func Test_decodeExtraArgs(t *testing.T) { t.Run("decode extra args into map svm", func(t *testing.T) { key, err := solana.NewRandomPrivateKey() require.NoError(t, err) - encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, message_hasher.ClientSVMExtraArgsV1{ - ComputeUnits: 10000, - AccountIsWritableBitmap: 4, - AllowOutOfOrderExecution: false, - TokenReceiver: [32]byte(key.PublicKey().Bytes()), - Accounts: [][32]byte{ - [32]byte(key.PublicKey().Bytes()), - }, + decoded, err := d.contract.DecodeSVMExtraArgsV1(nil, 10000, 4, false, [32]byte(key.PublicKey().Bytes()), [][32]byte{ + [32]byte(key.PublicKey().Bytes()), }) + if err != nil { + return + } + encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, decoded) require.NoError(t, err) _, err = DecodeExtraArgsToMap(encoded) From d6af37b2c17d2d4f5f3a0ddfcfb9db9f8d2432e3 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Sun, 26 Jan 2025 18:02:48 -0600 Subject: [PATCH 18/36] fix test --- core/capabilities/ccip/ccipevm/helpers.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index 8079b934b12..6e071113e38 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -55,20 +55,26 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { } var method string + var extraByteOffset int + // for EVMExtraArgs, the first four bytes is the method name + // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array switch string(extraArgs[:4]) { case string(evmExtraArgsV1Tag): method = evmV1DecodeName + extraByteOffset = 4 case string(evmExtraArgsV2Tag): method = evmV2DecodeName + extraByteOffset = 4 case string(svmExtraArgsV1Tag): method = svmV1DecodeName + extraByteOffset = 36 default: return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) } output := make(map[string]any) args := make(map[string]interface{}) - err := messageHasherABI.Methods[method].Inputs.UnpackIntoMap(args, extraArgs[4:]) + err := messageHasherABI.Methods[method].Inputs.UnpackIntoMap(args, extraArgs[extraByteOffset:]) if err != nil { return nil, fmt.Errorf("abi decode extra args %v: %w", method, err) } From f9489aea8f0fdb1369d4fed7af8b37813fd8d0a2 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 27 Jan 2025 10:05:40 -0600 Subject: [PATCH 19/36] fix test --- integration-tests/smoke/ccip/ccip_reader_test.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 92317850096..5ca1b1615be 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -55,10 +55,11 @@ import ( ) const ( - chainS1 = cciptypes.ChainSelector(1) - chainS2 = cciptypes.ChainSelector(2) - chainS3 = cciptypes.ChainSelector(3) - chainD = cciptypes.ChainSelector(4) + chainS1 = cciptypes.ChainSelector(1) + chainS2 = cciptypes.ChainSelector(2) + chainS3 = cciptypes.ChainSelector(3) + chainD = cciptypes.ChainSelector(4) + chainSEVM = cciptypes.ChainSelector(5009297550715157269) ) var ( @@ -509,7 +510,7 @@ func TestCCIPReader_MsgsBetweenSeqNums(t *testing.T) { require.Eventually(t, func() bool { msgs, err = s.reader.MsgsBetweenSeqNums( ctx, - chainS1, + chainSEVM, cciptypes.NewSeqNumRange(5, 20), ) require.NoError(t, err) @@ -534,7 +535,7 @@ func TestCCIPReader_MsgsBetweenSeqNums(t *testing.T) { require.Equal(t, int64(4), msgs[1].TokenAmounts[1].Amount.Int64()) for _, msg := range msgs { - require.Equal(t, chainS1, msg.Header.SourceChainSelector) + require.Equal(t, chainSEVM, msg.Header.SourceChainSelector) require.Equal(t, chainD, msg.Header.DestChainSelector) } } From cf28c8418fa41a3b2b31f7d31cc0cdc645698bea Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 27 Jan 2025 10:24:43 -0600 Subject: [PATCH 20/36] update source chain --- integration-tests/smoke/ccip/ccip_reader_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 5ca1b1615be..76ac29f65a0 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -467,7 +467,7 @@ func TestCCIPReader_MsgsBetweenSeqNums(t *testing.T) { _, err := s.contract.EmitCCIPMessageSent(s.auth, uint64(chainD), ccip_reader_tester.InternalEVM2AnyRampMessage{ Header: ccip_reader_tester.InternalRampMessageHeader{ MessageId: [32]byte{1, 0, 0, 0, 0}, - SourceChainSelector: uint64(chainS1), + SourceChainSelector: uint64(chainSEVM), DestChainSelector: uint64(chainD), SequenceNumber: 10, }, @@ -485,7 +485,7 @@ func TestCCIPReader_MsgsBetweenSeqNums(t *testing.T) { _, err = s.contract.EmitCCIPMessageSent(s.auth, uint64(chainD), ccip_reader_tester.InternalEVM2AnyRampMessage{ Header: ccip_reader_tester.InternalRampMessageHeader{ MessageId: [32]byte{1, 0, 0, 0, 1}, - SourceChainSelector: uint64(chainS1), + SourceChainSelector: uint64(chainSEVM), DestChainSelector: uint64(chainD), SequenceNumber: 15, }, From 67e00386fbc6144914b55789578b198a974966d2 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 27 Jan 2025 11:33:03 -0600 Subject: [PATCH 21/36] update test --- .../capabilities/ccip/ccipevm/helpers_test.go | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index e9c9a73add0..718795f9112 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -78,16 +78,40 @@ func Test_decodeExtraArgs(t *testing.T) { t.Run("decode extra args into map svm", func(t *testing.T) { key, err := solana.NewRandomPrivateKey() require.NoError(t, err) - decoded, err := d.contract.DecodeSVMExtraArgsV1(nil, 10000, 4, false, [32]byte(key.PublicKey().Bytes()), [][32]byte{ - [32]byte(key.PublicKey().Bytes()), - }) + cu := uint32(10000) + bitmap := uint64(4) + ooe := false + tokenReceiver := [32]byte(key.PublicKey().Bytes()) + accounts := [][32]byte{[32]byte(key.PublicKey().Bytes())} + decoded, err := d.contract.DecodeSVMExtraArgsV1(nil, cu, bitmap, ooe, tokenReceiver, accounts) if err != nil { return } encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, decoded) require.NoError(t, err) - _, err = DecodeExtraArgsToMap(encoded) + m, err := DecodeExtraArgsToMap(encoded) require.NoError(t, err) + require.Len(t, m, 5) + + cuDecoded, exist := m["computeUnits"] + require.True(t, exist) + require.Equal(t, cuDecoded, cu) + + bitmapDecoded, exist := m["accountIsWritableBitmap"] + require.True(t, exist) + require.Equal(t, bitmapDecoded, bitmap) + + ooeDecoded, exist := m["allowOutOfOrderExecution"] + require.True(t, exist) + require.Equal(t, ooeDecoded, ooe) + + tokenReceiverDecoded, exist := m["tokenReceiver"] + require.True(t, exist) + require.Equal(t, tokenReceiverDecoded, tokenReceiver) + + accountsDecoded, exist := m["accounts"] + require.True(t, exist) + require.Equal(t, accountsDecoded, accounts) }) } From a20765b44c39a622aa6625b555e2b7c900435958 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Mon, 27 Jan 2025 14:35:01 -0600 Subject: [PATCH 22/36] minor --- core/capabilities/ccip/ccipevm/helpers.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index 6e071113e38..34b5b8a90f9 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -56,16 +56,16 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { var method string var extraByteOffset int - // for EVMExtraArgs, the first four bytes is the method name - // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array switch string(extraArgs[:4]) { case string(evmExtraArgsV1Tag): + // for EVMExtraArgs, the first four bytes is the method name method = evmV1DecodeName extraByteOffset = 4 case string(evmExtraArgsV2Tag): method = evmV2DecodeName extraByteOffset = 4 case string(svmExtraArgsV1Tag): + // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array method = svmV1DecodeName extraByteOffset = 36 default: From f2952a0d989f61741f9ec8f9013f5527668278d1 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 16:13:17 -0600 Subject: [PATCH 23/36] implement and add test --- core/capabilities/ccip/ccipevm/helpers.go | 19 +++++++-- .../capabilities/ccip/ccipevm/helpers_test.go | 13 +++++++ core/capabilities/ccip/ccipsolana/helpers.go | 19 +++++++++ .../ccip/ccipsolana/helpers_test.go | 13 +++++++ .../ccip/common/extraargscodec.go | 36 ----------------- .../ccip/common/extradatacodec.go | 39 +++++++++++++++++-- 6 files changed, 96 insertions(+), 43 deletions(-) delete mode 100644 core/capabilities/ccip/common/extraargscodec.go diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index 34b5b8a90f9..1ad7bcfd7a7 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -6,12 +6,14 @@ import ( "math/big" "github.com/ethereum/go-ethereum/accounts/abi" + cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" ) const ( - svmV1DecodeName = "decodeSVMExtraArgsV1" - evmV1DecodeName = "decodeEVMExtraArgsV1" - evmV2DecodeName = "decodeEVMExtraArgsV2" + svmV1DecodeName = "decodeSVMExtraArgsV1" + evmV1DecodeName = "decodeEVMExtraArgsV1" + evmV2DecodeName = "decodeEVMExtraArgsV2" + evmDestExecDataKey = "destGasAmount" ) var ( @@ -49,6 +51,17 @@ func decodeExtraArgsV1V2(extraArgs []byte) (gasLimit *big.Int, err error) { return ifaces[0].(*big.Int), nil } +func DecodeDestExecDataToMap(DestExecData cciptypes.Bytes) (map[string]interface{}, error) { + destGasAmount, err := abiDecodeUint32(DestExecData) + if err != nil { + return nil, fmt.Errorf("decode dest gas amount: %w", err) + } + + return map[string]interface{}{ + evmDestExecDataKey: destGasAmount, + }, nil +} + func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { if len(extraArgs) < 4 { return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index 718795f9112..f1490a56043 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -75,6 +75,19 @@ func Test_decodeExtraArgs(t *testing.T) { require.Equal(t, true, ooe) }) + t.Run("decode dest exec data into map", func(t *testing.T) { + destGasAmount := uint32(10000) + encoded, err := abiEncodeUint32(destGasAmount) + require.NoError(t, err) + m, err := DecodeDestExecDataToMap(encoded) + require.NoError(t, err) + require.Len(t, m, 1) + + decoded, exist := m[evmDestExecDataKey] + require.True(t, exist) + require.Equal(t, destGasAmount, decoded) + }) + t.Run("decode extra args into map svm", func(t *testing.T) { key, err := solana.NewRandomPrivateKey() require.NoError(t, err) diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/helpers.go index aee3a76d353..565c4ae338f 100644 --- a/core/capabilities/ccip/ccipsolana/helpers.go +++ b/core/capabilities/ccip/ccipsolana/helpers.go @@ -1,6 +1,7 @@ package ccipsolana import ( + "encoding/binary" "fmt" "reflect" @@ -9,6 +10,8 @@ import ( "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) +const svmDestExecDataKey = "destGasAmount" + // DecodeExtraArgsToMap is a helper function for converting Borsh encoded extra args bytes into map[string]any, which will be saved in ocr report.message.ExtraArgsDecoded func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { outputMap := make(map[string]any) @@ -30,3 +33,19 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { return outputMap, nil } + +func DecodeDestExecDataToMap(destExecData []byte) (map[string]any, error) { + return map[string]interface{}{ + svmDestExecDataKey: bytesToUint32LE(destExecData), + }, nil +} + +func bytesToUint32LE(b []byte) uint32 { + if len(b) < 4 { + var padded [4]byte + copy(padded[:len(b)], b) // Pad from the right for little-endian + return binary.LittleEndian.Uint32(padded[:]) + } + + return binary.LittleEndian.Uint32(b) +} diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/helpers_test.go index cab221d2106..8db2691f341 100644 --- a/core/capabilities/ccip/ccipsolana/helpers_test.go +++ b/core/capabilities/ccip/ccipsolana/helpers_test.go @@ -2,6 +2,7 @@ package ccipsolana import ( "bytes" + "encoding/binary" "testing" agbinary "github.com/gagliardetto/binary" @@ -11,6 +12,18 @@ import ( ) func Test_decodeExtraArgs(t *testing.T) { + t.Run("decode dest exec data into map svm", func(t *testing.T) { + destGasAmount := uint32(10000) + encoded := make([]byte, 4) + binary.LittleEndian.PutUint32(encoded, destGasAmount) + output, err := DecodeDestExecDataToMap(encoded) + require.NoError(t, err) + + decoded, exist := output[svmDestExecDataKey] + require.True(t, exist) + require.Equal(t, destGasAmount, decoded) + }) + t.Run("decode extra args into map svm", func(t *testing.T) { extraArgs := ccip_router.AnyExtraArgs{ GasLimit: agbinary.Uint128{Lo: 5000, Hi: 0}, diff --git a/core/capabilities/ccip/common/extraargscodec.go b/core/capabilities/ccip/common/extraargscodec.go deleted file mode 100644 index 7805b6d3f91..00000000000 --- a/core/capabilities/ccip/common/extraargscodec.go +++ /dev/null @@ -1,36 +0,0 @@ -package common - -import ( - "fmt" - - chainsel "github.com/smartcontractkit/chain-selectors" - - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" - "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipsolana" - - cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" -) - -type ExtraArgsCodec struct{} - -func NewExtraArgsCodec() ExtraArgsCodec { - return ExtraArgsCodec{} -} - -func (ExtraArgsCodec) DecodeExtraData(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { - family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) - if err != nil { - return nil, fmt.Errorf("failed to get chain family for selector %d: %w", sourceChainSelector, err) - } - - switch family { - case chainsel.FamilyEVM: - return ccipevm.DecodeExtraArgsToMap(extraArgs) - - case chainsel.FamilySolana: - return ccipsolana.DecodeExtraArgsToMap(extraArgs) - - default: - return nil, fmt.Errorf("unsupported family for extra args type %s", family) - } -} diff --git a/core/capabilities/ccip/common/extradatacodec.go b/core/capabilities/ccip/common/extradatacodec.go index e003a91691d..be8cc6fdcf0 100644 --- a/core/capabilities/ccip/common/extradatacodec.go +++ b/core/capabilities/ccip/common/extradatacodec.go @@ -1,7 +1,12 @@ package common import ( + "fmt" + + chainsel "github.com/smartcontractkit/chain-selectors" cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" + "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipsolana" ) type ExtraDataCodec struct{} @@ -11,11 +16,37 @@ func NewExtraDataCodec() ExtraDataCodec { } func (c ExtraDataCodec) DecodeExtraArgs(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { - // Not implemented and not return error - return nil, nil + family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) + if err != nil { + return nil, fmt.Errorf("failed to get chain family for selector %d: %w", sourceChainSelector, err) + } + + switch family { + case chainsel.FamilyEVM: + return ccipevm.DecodeExtraArgsToMap(extraArgs) + + case chainsel.FamilySolana: + return ccipsolana.DecodeExtraArgsToMap(extraArgs) + + default: + return nil, fmt.Errorf("unsupported family for extra args type %s", family) + } } func (c ExtraDataCodec) DecodeTokenAmountDestExecData(destExecData cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { - // Not implemented and not return error - return nil, nil + family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) + if err != nil { + return nil, fmt.Errorf("failed to get chain family for selector %d: %w", sourceChainSelector, err) + } + + switch family { + case chainsel.FamilyEVM: + return ccipevm.DecodeDestExecDataToMap(destExecData) + + case chainsel.FamilySolana: + return ccipsolana.DecodeDestExecDataToMap(destExecData) + + default: + return nil, fmt.Errorf("unsupported family for extra args type %s", family) + } } From a1eacf6814e00a115b2569c576e59f0abb62f9d8 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 16:19:24 -0600 Subject: [PATCH 24/36] update comments --- core/capabilities/ccip/ccipevm/helpers.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index 1ad7bcfd7a7..e8e4bd37c86 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -79,6 +79,7 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { extraByteOffset = 4 case string(svmExtraArgsV1Tag): // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array + // https://github.com/smartcontractkit/chainlink/blob/33c0bda696b0ed97f587a46eacd5c65bed9fb2c1/contracts/src/v0.8/ccip/libraries/Client.sol#L57 method = svmV1DecodeName extraByteOffset = 36 default: From 0b15808e705c774414a3ad1244ac1873a90b5f29 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 16:25:44 -0600 Subject: [PATCH 25/36] goimport --- core/capabilities/ccip/common/extradatacodec.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/capabilities/ccip/common/extradatacodec.go b/core/capabilities/ccip/common/extradatacodec.go index be8cc6fdcf0..c8130250be8 100644 --- a/core/capabilities/ccip/common/extradatacodec.go +++ b/core/capabilities/ccip/common/extradatacodec.go @@ -4,6 +4,7 @@ import ( "fmt" chainsel "github.com/smartcontractkit/chain-selectors" + cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipevm" "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/ccipsolana" From 55b33e3c5eca4223a9ff0ffa2d6f86bab0a63a9b Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Tue, 28 Jan 2025 17:06:27 -0600 Subject: [PATCH 26/36] fix conflicts --- integration-tests/smoke/ccip/ccip_reader_test.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index 92054ab0e54..c64dd3948b0 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -20,10 +20,6 @@ import ( ccipcommon "github.com/smartcontractkit/chainlink/v2/core/capabilities/ccip/common" -<<<<<<< HEAD -======= - "github.com/smartcontractkit/chainlink/deployment/ccip/changeset" ->>>>>>> 81b30de54509d1a49a9456c63d3fecf0e0b32213 "github.com/smartcontractkit/chainlink/deployment/ccip/changeset/testhelpers" "github.com/smartcontractkit/chainlink/v2/core/utils/testutils/heavyweight" @@ -292,11 +288,7 @@ func TestCCIPReader_GetOffRampConfigDigest(t *testing.T) { nil, chainD, addr.Bytes(), -<<<<<<< HEAD - ccipcommon.NewExtraArgsCodec(), -======= ccipcommon.NewExtraDataCodec(), ->>>>>>> 81b30de54509d1a49a9456c63d3fecf0e0b32213 ) ccipReaderCommitDigest, err := reader.GetOffRampConfigDigest(ctx, consts.PluginTypeCommit) @@ -1416,11 +1408,7 @@ func testSetupRealContracts( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) -<<<<<<< HEAD - edc := ccipcommon.NewExtraArgsCodec() -======= edc := ccipcommon.NewExtraDataCodec() ->>>>>>> 81b30de54509d1a49a9456c63d3fecf0e0b32213 reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, cciptypes.ChainSelector(destChain), nil, edc) return reader @@ -1536,11 +1524,7 @@ func testSetup( contractReaders[chain] = cr } contractWriters := make(map[cciptypes.ChainSelector]types.ContractWriter) -<<<<<<< HEAD - edc := ccipcommon.NewExtraArgsCodec() -======= edc := ccipcommon.NewExtraDataCodec() ->>>>>>> 81b30de54509d1a49a9456c63d3fecf0e0b32213 reader := ccipreaderpkg.NewCCIPReaderWithExtendedContractReaders(ctx, lggr, contractReaders, contractWriters, params.DestChain, nil, edc) t.Cleanup(func() { From 8d4d702d4754e4d00a19019c2508d6387b58177f Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 29 Jan 2025 13:17:09 -0600 Subject: [PATCH 27/36] update --- core/capabilities/ccip/common/extradatacodec.go | 10 ++++++++++ integration-tests/smoke/ccip/ccip_reader_test.go | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/capabilities/ccip/common/extradatacodec.go b/core/capabilities/ccip/common/extradatacodec.go index c8130250be8..47146ddd5b6 100644 --- a/core/capabilities/ccip/common/extradatacodec.go +++ b/core/capabilities/ccip/common/extradatacodec.go @@ -17,6 +17,11 @@ func NewExtraDataCodec() ExtraDataCodec { } func (c ExtraDataCodec) DecodeExtraArgs(extraArgs cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { + if len(extraArgs) == 0 { + // return empty map if extraArgs is empty + return nil, nil + } + family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) if err != nil { return nil, fmt.Errorf("failed to get chain family for selector %d: %w", sourceChainSelector, err) @@ -35,6 +40,11 @@ func (c ExtraDataCodec) DecodeExtraArgs(extraArgs cciptypes.Bytes, sourceChainSe } func (c ExtraDataCodec) DecodeTokenAmountDestExecData(destExecData cciptypes.Bytes, sourceChainSelector cciptypes.ChainSelector) (map[string]any, error) { + if len(destExecData) == 0 { + // return empty map if destExecData is empty + return nil, nil + } + family, err := chainsel.GetSelectorFamily(uint64(sourceChainSelector)) if err != nil { return nil, fmt.Errorf("failed to get chain family for selector %d: %w", sourceChainSelector, err) diff --git a/integration-tests/smoke/ccip/ccip_reader_test.go b/integration-tests/smoke/ccip/ccip_reader_test.go index c64dd3948b0..1c7803bf443 100644 --- a/integration-tests/smoke/ccip/ccip_reader_test.go +++ b/integration-tests/smoke/ccip/ccip_reader_test.go @@ -116,10 +116,10 @@ func setupExecutedMessageRangesTest(ctx context.Context, t testing.TB, useHeavyD }) } -func setupMsgsBetweenSeqNumsTest(ctx context.Context, t testing.TB, useHeavyDB bool) *testSetupData { +func setupMsgsBetweenSeqNumsTest(ctx context.Context, t testing.TB, useHeavyDB bool, sourceChainSel cciptypes.ChainSelector) *testSetupData { sb, auth := setupSimulatedBackendAndAuth(t) return testSetup(ctx, t, testSetupParams{ - ReaderChain: chainS1, + ReaderChain: sourceChainSel, DestChain: chainD, OnChainSeqNums: nil, Cfg: evmconfig.SourceReaderConfig, @@ -463,7 +463,7 @@ func TestCCIPReader_MsgsBetweenSeqNums(t *testing.T) { t.Parallel() ctx := tests.Context(t) - s := setupMsgsBetweenSeqNumsTest(ctx, t, false) + s := setupMsgsBetweenSeqNumsTest(ctx, t, false, chainSEVM) _, err := s.contract.EmitCCIPMessageSent(s.auth, uint64(chainD), ccip_reader_tester.InternalEVM2AnyRampMessage{ Header: ccip_reader_tester.InternalRampMessageHeader{ MessageId: [32]byte{1, 0, 0, 0, 0}, @@ -1169,7 +1169,7 @@ func Benchmark_CCIPReader_MessageSentRanges(b *testing.B) { func benchmarkMessageSentRanges(b *testing.B, logsInserted int, startSeqNum, endSeqNum cciptypes.SeqNum) { // Initialize test setup ctx := tests.Context(b) - s := setupMsgsBetweenSeqNumsTest(ctx, b, true) + s := setupMsgsBetweenSeqNumsTest(ctx, b, true, chainS1) expectedRangeLen := calculateExpectedRangeLen(logsInserted, startSeqNum, endSeqNum) err := s.extendedCR.Bind(ctx, []types.BoundContract{ From fc7f0f74bf667ae724e8c78cc0361e2f4232889f Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 29 Jan 2025 14:03:48 -0600 Subject: [PATCH 28/36] update --- core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 ++-- deployment/go.mod | 2 +- deployment/go.sum | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 ++-- integration-tests/load/go.mod | 2 +- integration-tests/load/go.sum | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index c0661ace714..a219b1894eb 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -316,7 +316,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect github.com/smartcontractkit/chain-selectors v1.0.36 // indirect github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20250121195549-294ec6a40b92 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 2b101b41a3d..c9bb6cd8517 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1170,8 +1170,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/deployment/go.mod b/deployment/go.mod index 0cefaba43d2..a5e6ba49001 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -32,7 +32,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix github.com/smartcontractkit/chain-selectors v1.0.36 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20250121205514-f73e2f86c23b github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 diff --git a/deployment/go.sum b/deployment/go.sum index 06f2cf5c787..e330363f797 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1396,8 +1396,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/go.mod b/go.mod index 879318fca77..ae8c6890335 100644 --- a/go.mod +++ b/go.mod @@ -80,7 +80,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.36 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 diff --git a/go.sum b/go.sum index de3aa35be8b..204c6501cce 100644 --- a/go.sum +++ b/go.sum @@ -1108,8 +1108,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 549849a623b..1ad6e57e3f8 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -435,7 +435,7 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 62e63ff1bd3..557ae15751b 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1424,8 +1424,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index c125badc456..f80df6c2cb1 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -419,7 +419,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 7f22639f9cb..b998feb78df 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1411,8 +1411,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a h1:/CHYAiEm8jfGAy+oQB6lSN7iQ9WhGeUlWmC1KHarjj0= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250121181523-2c505d8a351a/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= From 993955931a58ca77b79d28835a373ec7de56cb16 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 29 Jan 2025 14:20:31 -0600 Subject: [PATCH 29/36] add comment --- core/capabilities/ccip/ccipevm/helpers.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index e8e4bd37c86..a00eed968a8 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -80,6 +80,7 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { case string(svmExtraArgsV1Tag): // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array // https://github.com/smartcontractkit/chainlink/blob/33c0bda696b0ed97f587a46eacd5c65bed9fb2c1/contracts/src/v0.8/ccip/libraries/Client.sol#L57 + // this is a temporary solution, the evm on-chain side will fix it, so the offset should just be 4 instead of 36 method = svmV1DecodeName extraByteOffset = 36 default: From 6e6441dafdd44e4b4aceb1ce5f887a3bbffd1324 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Wed, 29 Jan 2025 16:49:31 -0600 Subject: [PATCH 30/36] refactor --- .../ccip/ccipevm/extradatadecoder.go | 56 ++++++++++ .../ccip/ccipevm/extradatadecoder_test.go | 105 ++++++++++++++++++ core/capabilities/ccip/ccipevm/helpers.go | 50 --------- .../capabilities/ccip/ccipevm/helpers_test.go | 54 --------- .../{helpers.go => extradatadecoder.go} | 0 ...lpers_test.go => extradatadecoder_test.go} | 0 6 files changed, 161 insertions(+), 104 deletions(-) create mode 100644 core/capabilities/ccip/ccipevm/extradatadecoder.go create mode 100644 core/capabilities/ccip/ccipevm/extradatadecoder_test.go rename core/capabilities/ccip/ccipsolana/{helpers.go => extradatadecoder.go} (100%) rename core/capabilities/ccip/ccipsolana/{helpers_test.go => extradatadecoder_test.go} (100%) diff --git a/core/capabilities/ccip/ccipevm/extradatadecoder.go b/core/capabilities/ccip/ccipevm/extradatadecoder.go new file mode 100644 index 00000000000..8f1c8616878 --- /dev/null +++ b/core/capabilities/ccip/ccipevm/extradatadecoder.go @@ -0,0 +1,56 @@ +package ccipevm + +import ( + "fmt" + + cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" +) + +func DecodeDestExecDataToMap(DestExecData cciptypes.Bytes) (map[string]interface{}, error) { + destGasAmount, err := abiDecodeUint32(DestExecData) + if err != nil { + return nil, fmt.Errorf("decode dest gas amount: %w", err) + } + + return map[string]interface{}{ + evmDestExecDataKey: destGasAmount, + }, nil +} + +func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { + if len(extraArgs) < 4 { + return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) + } + + var method string + var extraByteOffset int + switch string(extraArgs[:4]) { + case string(evmExtraArgsV1Tag): + // for EVMExtraArgs, the first four bytes is the method name + method = evmV1DecodeName + extraByteOffset = 4 + case string(evmExtraArgsV2Tag): + method = evmV2DecodeName + extraByteOffset = 4 + case string(svmExtraArgsV1Tag): + // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array + // https://github.com/smartcontractkit/chainlink/blob/33c0bda696b0ed97f587a46eacd5c65bed9fb2c1/contracts/src/v0.8/ccip/libraries/Client.sol#L57 + // this is a temporary solution, the evm on-chain side will fix it, so the offset should just be 4 instead of 36 + method = svmV1DecodeName + extraByteOffset = 36 + default: + return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) + } + + output := make(map[string]any) + args := make(map[string]interface{}) + err := messageHasherABI.Methods[method].Inputs.UnpackIntoMap(args, extraArgs[extraByteOffset:]) + if err != nil { + return nil, fmt.Errorf("abi decode extra args %v: %w", method, err) + } + + for k, val := range args { + output[k] = val + } + return output, nil +} diff --git a/core/capabilities/ccip/ccipevm/extradatadecoder_test.go b/core/capabilities/ccip/ccipevm/extradatadecoder_test.go new file mode 100644 index 00000000000..e0387ed9040 --- /dev/null +++ b/core/capabilities/ccip/ccipevm/extradatadecoder_test.go @@ -0,0 +1,105 @@ +package ccipevm + +import ( + "math/big" + "math/rand" + "testing" + + "github.com/gagliardetto/solana-go" + "github.com/stretchr/testify/require" + + "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/message_hasher" +) + +func Test_decodeExtraData(t *testing.T) { + d := testSetup(t) + gasLimit := big.NewInt(rand.Int63()) + + t.Run("decode extra args into map evm v1", func(t *testing.T) { + encoded, err := d.contract.EncodeEVMExtraArgsV1(nil, message_hasher.ClientEVMExtraArgsV1{ + GasLimit: gasLimit, + }) + require.NoError(t, err) + + m, err := DecodeExtraArgsToMap(encoded) + require.NoError(t, err) + require.Len(t, m, 1) + + gl, exist := m["gasLimit"] + require.True(t, exist) + require.Equal(t, gl, gasLimit) + }) + + t.Run("decode extra args into map evm v2", func(t *testing.T) { + encoded, err := d.contract.EncodeEVMExtraArgsV2(nil, message_hasher.ClientEVMExtraArgsV2{ + GasLimit: gasLimit, + AllowOutOfOrderExecution: true, + }) + require.NoError(t, err) + + m, err := DecodeExtraArgsToMap(encoded) + require.NoError(t, err) + require.Len(t, m, 2) + + gl, exist := m["gasLimit"] + require.True(t, exist) + require.Equal(t, gl, gasLimit) + + ooe, exist := m["allowOutOfOrderExecution"] + require.True(t, exist) + require.Equal(t, true, ooe) + }) + + t.Run("decode extra args into map svm", func(t *testing.T) { + key, err := solana.NewRandomPrivateKey() + require.NoError(t, err) + cu := uint32(10000) + bitmap := uint64(4) + ooe := false + tokenReceiver := [32]byte(key.PublicKey().Bytes()) + accounts := [][32]byte{[32]byte(key.PublicKey().Bytes())} + decoded, err := d.contract.DecodeSVMExtraArgsV1(nil, cu, bitmap, ooe, tokenReceiver, accounts) + if err != nil { + return + } + encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, decoded) + require.NoError(t, err) + + m, err := DecodeExtraArgsToMap(encoded) + require.NoError(t, err) + require.Len(t, m, 5) + + cuDecoded, exist := m["computeUnits"] + require.True(t, exist) + require.Equal(t, cuDecoded, cu) + + bitmapDecoded, exist := m["accountIsWritableBitmap"] + require.True(t, exist) + require.Equal(t, bitmapDecoded, bitmap) + + ooeDecoded, exist := m["allowOutOfOrderExecution"] + require.True(t, exist) + require.Equal(t, ooeDecoded, ooe) + + tokenReceiverDecoded, exist := m["tokenReceiver"] + require.True(t, exist) + require.Equal(t, tokenReceiverDecoded, tokenReceiver) + + accountsDecoded, exist := m["accounts"] + require.True(t, exist) + require.Equal(t, accountsDecoded, accounts) + }) + + t.Run("decode dest exec data into map", func(t *testing.T) { + destGasAmount := uint32(10000) + encoded, err := abiEncodeUint32(destGasAmount) + require.NoError(t, err) + m, err := DecodeDestExecDataToMap(encoded) + require.NoError(t, err) + require.Len(t, m, 1) + + decoded, exist := m[evmDestExecDataKey] + require.True(t, exist) + require.Equal(t, destGasAmount, decoded) + }) +} diff --git a/core/capabilities/ccip/ccipevm/helpers.go b/core/capabilities/ccip/ccipevm/helpers.go index a00eed968a8..13e635ecbdf 100644 --- a/core/capabilities/ccip/ccipevm/helpers.go +++ b/core/capabilities/ccip/ccipevm/helpers.go @@ -6,7 +6,6 @@ import ( "math/big" "github.com/ethereum/go-ethereum/accounts/abi" - cciptypes "github.com/smartcontractkit/chainlink-ccip/pkg/types/ccipocr3" ) const ( @@ -51,55 +50,6 @@ func decodeExtraArgsV1V2(extraArgs []byte) (gasLimit *big.Int, err error) { return ifaces[0].(*big.Int), nil } -func DecodeDestExecDataToMap(DestExecData cciptypes.Bytes) (map[string]interface{}, error) { - destGasAmount, err := abiDecodeUint32(DestExecData) - if err != nil { - return nil, fmt.Errorf("decode dest gas amount: %w", err) - } - - return map[string]interface{}{ - evmDestExecDataKey: destGasAmount, - }, nil -} - -func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { - if len(extraArgs) < 4 { - return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) - } - - var method string - var extraByteOffset int - switch string(extraArgs[:4]) { - case string(evmExtraArgsV1Tag): - // for EVMExtraArgs, the first four bytes is the method name - method = evmV1DecodeName - extraByteOffset = 4 - case string(evmExtraArgsV2Tag): - method = evmV2DecodeName - extraByteOffset = 4 - case string(svmExtraArgsV1Tag): - // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array - // https://github.com/smartcontractkit/chainlink/blob/33c0bda696b0ed97f587a46eacd5c65bed9fb2c1/contracts/src/v0.8/ccip/libraries/Client.sol#L57 - // this is a temporary solution, the evm on-chain side will fix it, so the offset should just be 4 instead of 36 - method = svmV1DecodeName - extraByteOffset = 36 - default: - return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) - } - - output := make(map[string]any) - args := make(map[string]interface{}) - err := messageHasherABI.Methods[method].Inputs.UnpackIntoMap(args, extraArgs[extraByteOffset:]) - if err != nil { - return nil, fmt.Errorf("abi decode extra args %v: %w", method, err) - } - - for k, val := range args { - output[k] = val - } - return output, nil -} - // abiEncodeMethodInputs encodes the inputs for a method call. // example abi: `[{ "name" : "method", "type": "function", "inputs": [{"name": "a", "type": "uint256"}]}]` func abiEncodeMethodInputs(abiDef abi.ABI, inputs ...interface{}) ([]byte, error) { diff --git a/core/capabilities/ccip/ccipevm/helpers_test.go b/core/capabilities/ccip/ccipevm/helpers_test.go index f1490a56043..89580c4d6f7 100644 --- a/core/capabilities/ccip/ccipevm/helpers_test.go +++ b/core/capabilities/ccip/ccipevm/helpers_test.go @@ -5,7 +5,6 @@ import ( "math/rand" "testing" - "github.com/gagliardetto/solana-go" "github.com/stretchr/testify/require" "github.com/smartcontractkit/chainlink/v2/core/gethwrappers/ccip/generated/message_hasher" @@ -74,57 +73,4 @@ func Test_decodeExtraArgs(t *testing.T) { require.True(t, exist) require.Equal(t, true, ooe) }) - - t.Run("decode dest exec data into map", func(t *testing.T) { - destGasAmount := uint32(10000) - encoded, err := abiEncodeUint32(destGasAmount) - require.NoError(t, err) - m, err := DecodeDestExecDataToMap(encoded) - require.NoError(t, err) - require.Len(t, m, 1) - - decoded, exist := m[evmDestExecDataKey] - require.True(t, exist) - require.Equal(t, destGasAmount, decoded) - }) - - t.Run("decode extra args into map svm", func(t *testing.T) { - key, err := solana.NewRandomPrivateKey() - require.NoError(t, err) - cu := uint32(10000) - bitmap := uint64(4) - ooe := false - tokenReceiver := [32]byte(key.PublicKey().Bytes()) - accounts := [][32]byte{[32]byte(key.PublicKey().Bytes())} - decoded, err := d.contract.DecodeSVMExtraArgsV1(nil, cu, bitmap, ooe, tokenReceiver, accounts) - if err != nil { - return - } - encoded, err := d.contract.EncodeSVMExtraArgsV1(nil, decoded) - require.NoError(t, err) - - m, err := DecodeExtraArgsToMap(encoded) - require.NoError(t, err) - require.Len(t, m, 5) - - cuDecoded, exist := m["computeUnits"] - require.True(t, exist) - require.Equal(t, cuDecoded, cu) - - bitmapDecoded, exist := m["accountIsWritableBitmap"] - require.True(t, exist) - require.Equal(t, bitmapDecoded, bitmap) - - ooeDecoded, exist := m["allowOutOfOrderExecution"] - require.True(t, exist) - require.Equal(t, ooeDecoded, ooe) - - tokenReceiverDecoded, exist := m["tokenReceiver"] - require.True(t, exist) - require.Equal(t, tokenReceiverDecoded, tokenReceiver) - - accountsDecoded, exist := m["accounts"] - require.True(t, exist) - require.Equal(t, accountsDecoded, accounts) - }) } diff --git a/core/capabilities/ccip/ccipsolana/helpers.go b/core/capabilities/ccip/ccipsolana/extradatadecoder.go similarity index 100% rename from core/capabilities/ccip/ccipsolana/helpers.go rename to core/capabilities/ccip/ccipsolana/extradatadecoder.go diff --git a/core/capabilities/ccip/ccipsolana/helpers_test.go b/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go similarity index 100% rename from core/capabilities/ccip/ccipsolana/helpers_test.go rename to core/capabilities/ccip/ccipsolana/extradatadecoder_test.go From 7e96d529b9c447c4c04bd808615e38ca24446961 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 30 Jan 2025 09:49:34 -0600 Subject: [PATCH 31/36] update comment --- core/capabilities/ccip/ccipevm/extradatadecoder.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/capabilities/ccip/ccipevm/extradatadecoder.go b/core/capabilities/ccip/ccipevm/extradatadecoder.go index 8f1c8616878..5f26ba9a54c 100644 --- a/core/capabilities/ccip/ccipevm/extradatadecoder.go +++ b/core/capabilities/ccip/ccipevm/extradatadecoder.go @@ -34,8 +34,8 @@ func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { extraByteOffset = 4 case string(svmExtraArgsV1Tag): // for SVMExtraArgs there's the four bytes plus another 32 bytes padding for the dynamic array - // https://github.com/smartcontractkit/chainlink/blob/33c0bda696b0ed97f587a46eacd5c65bed9fb2c1/contracts/src/v0.8/ccip/libraries/Client.sol#L57 - // this is a temporary solution, the evm on-chain side will fix it, so the offset should just be 4 instead of 36 + // TODO this is a temporary solution, the evm on-chain side will fix it, so the offset should just be 4 instead of 36 + // https://smartcontract-it.atlassian.net/browse/BCI-4180 method = svmV1DecodeName extraByteOffset = 36 default: From 2e8de080d893474e96d0bc6b583383cfe545d183 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 30 Jan 2025 12:13:57 -0600 Subject: [PATCH 32/36] add unit test --- .../ccip/ccipsolana/extradatadecoder.go | 53 +++++++++++++++---- .../ccip/ccipsolana/extradatadecoder_test.go | 46 +++++++++++++++- core/scripts/go.mod | 2 +- core/scripts/go.sum | 1 + deployment/go.mod | 2 +- deployment/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- integration-tests/load/go.mod | 2 +- integration-tests/load/go.sum | 4 +- 12 files changed, 102 insertions(+), 24 deletions(-) diff --git a/core/capabilities/ccip/ccipsolana/extradatadecoder.go b/core/capabilities/ccip/ccipsolana/extradatadecoder.go index 565c4ae338f..c699e9f87f1 100644 --- a/core/capabilities/ccip/ccipsolana/extradatadecoder.go +++ b/core/capabilities/ccip/ccipsolana/extradatadecoder.go @@ -5,25 +5,60 @@ import ( "fmt" "reflect" + "github.com/ethereum/go-ethereum/common/hexutil" agbinary "github.com/gagliardetto/binary" "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) -const svmDestExecDataKey = "destGasAmount" +const ( + svmDestExecDataKey = "destGasAmount" +) + +var ( + // tag definition https://github.com/smartcontractkit/chainlink-ccip/blob/1b2ee24da54bddef8f3943dc84102686f2890f87/chains/solana/contracts/programs/ccip-router/src/extra_args.rs#L8C21-L11C45 + // this should be moved to msghasher.go once merged + + // bytes4(keccak256("CCIP SVMExtraArgsV1")); + // bytes4 public constant SVM_EXTRA_ARGS_V1_TAG = 0x1f3b3aba; + svmExtraArgsV1Tag = hexutil.MustDecode("0x1f3b3aba") + + // bytes4(keccak256("CCIP EVMExtraArgsV2")); + // bytes4 public constant EVM_EXTRA_ARGS_V2_TAG = 0x181dcf10; + evmExtraArgsV2Tag = hexutil.MustDecode("0x181dcf10") +) // DecodeExtraArgsToMap is a helper function for converting Borsh encoded extra args bytes into map[string]any, which will be saved in ocr report.message.ExtraArgsDecoded func DecodeExtraArgsToMap(extraArgs []byte) (map[string]any, error) { - outputMap := make(map[string]any) - var args ccip_router.AnyExtraArgs - decoder := agbinary.NewBorshDecoder(extraArgs) - err := args.UnmarshalWithDecoder(decoder) - if err != nil { - return outputMap, fmt.Errorf("failed to decode extra args: %w", err) + if len(extraArgs) < 4 { + return nil, fmt.Errorf("extra args too short: %d, should be at least 4 (i.e the extraArgs tag)", len(extraArgs)) } - val := reflect.ValueOf(args) - typ := reflect.TypeOf(args) + var val reflect.Value + var typ reflect.Type + outputMap := make(map[string]any) + switch string(extraArgs[:4]) { + case string(evmExtraArgsV2Tag): + var args ccip_router.EVMExtraArgsV2 + decoder := agbinary.NewBorshDecoder(extraArgs[4:]) + err := args.UnmarshalWithDecoder(decoder) + if err != nil { + return outputMap, fmt.Errorf("failed to decode extra args: %w", err) + } + val = reflect.ValueOf(args) + typ = reflect.TypeOf(args) + case string(svmExtraArgsV1Tag): + var args ccip_router.SVMExtraArgsV1 + decoder := agbinary.NewBorshDecoder(extraArgs[4:]) + err := args.UnmarshalWithDecoder(decoder) + if err != nil { + return outputMap, fmt.Errorf("failed to decode extra args: %w", err) + } + val = reflect.ValueOf(args) + typ = reflect.TypeOf(args) + default: + return nil, fmt.Errorf("unknown extra args tag: %x", extraArgs) + } for i := 0; i < val.NumField(); i++ { field := typ.Field(i) diff --git a/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go b/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go index 8db2691f341..79154275371 100644 --- a/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go +++ b/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go @@ -6,6 +6,8 @@ import ( "testing" agbinary "github.com/gagliardetto/binary" + "github.com/gagliardetto/solana-go" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/config" "github.com/stretchr/testify/require" "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" @@ -25,7 +27,45 @@ func Test_decodeExtraArgs(t *testing.T) { }) t.Run("decode extra args into map svm", func(t *testing.T) { - extraArgs := ccip_router.AnyExtraArgs{ + destGasAmount := uint32(10000) + bitmap := uint64(0) + extraArgs := ccip_router.SVMExtraArgsV1{ + ComputeUnits: destGasAmount, + AccountIsWritableBitmap: bitmap, + AllowOutOfOrderExecution: false, + TokenReceiver: config.CcipLogicReceiver, + Accounts: [][32]byte{ + [32]byte(config.CcipLogicReceiver.Bytes()), + [32]byte(config.ReceiverTargetAccountPDA.Bytes()), + [32]byte(solana.SystemProgramID.Bytes()), + }, + } + + var buf bytes.Buffer + encoder := agbinary.NewBorshEncoder(&buf) + err := extraArgs.MarshalWithEncoder(encoder) + require.NoError(t, err) + + input := append(svmExtraArgsV1Tag, buf.Bytes()...) + output, err := DecodeExtraArgsToMap(input) + require.NoError(t, err) + require.Len(t, output, 5) + + gasLimit, exist := output["ComputeUnits"] + require.True(t, exist) + require.Equal(t, destGasAmount, gasLimit) + + writableBitmap, exist := output["AccountIsWritableBitmap"] + require.True(t, exist) + require.Equal(t, bitmap, writableBitmap) + + ooe, exist := output["AllowOutOfOrderExecution"] + require.True(t, exist) + require.Equal(t, false, ooe) + }) + + t.Run("decode extra args into map evm", func(t *testing.T) { + extraArgs := ccip_router.EVMExtraArgsV2{ GasLimit: agbinary.Uint128{Lo: 5000, Hi: 0}, AllowOutOfOrderExecution: false, } @@ -34,7 +74,9 @@ func Test_decodeExtraArgs(t *testing.T) { encoder := agbinary.NewBorshEncoder(&buf) err := extraArgs.MarshalWithEncoder(encoder) require.NoError(t, err) - output, err := DecodeExtraArgsToMap(buf.Bytes()) + + input := append(evmExtraArgsV2Tag, buf.Bytes()...) + output, err := DecodeExtraArgsToMap(input) require.NoError(t, err) require.Len(t, output, 2) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index a219b1894eb..6be312a7501 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -316,7 +316,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect github.com/smartcontractkit/chain-selectors v1.0.36 // indirect github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20250121195549-294ec6a40b92 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index c9bb6cd8517..8b589346564 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1172,6 +1172,7 @@ github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/deployment/go.mod b/deployment/go.mod index a5e6ba49001..f7fdec3e7b2 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -32,7 +32,7 @@ require ( github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix github.com/smartcontractkit/chain-selectors v1.0.36 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20250121205514-f73e2f86c23b github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 diff --git a/deployment/go.sum b/deployment/go.sum index e330363f797..102312de24a 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1396,8 +1396,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b h1:eNsqumP7VVJudA7gEcTKVFofealwbPJRinUw24uEmII= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/go.mod b/go.mod index ae8c6890335..159557eda5b 100644 --- a/go.mod +++ b/go.mod @@ -80,7 +80,7 @@ require ( github.com/smartcontractkit/chain-selectors v1.0.36 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 diff --git a/go.sum b/go.sum index 204c6501cce..113ab6eef20 100644 --- a/go.sum +++ b/go.sum @@ -1108,8 +1108,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b h1:eNsqumP7VVJudA7gEcTKVFofealwbPJRinUw24uEmII= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 1ad6e57e3f8..d16dc6279a6 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -435,7 +435,7 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 557ae15751b..05dc4c895e4 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1424,8 +1424,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b h1:eNsqumP7VVJudA7gEcTKVFofealwbPJRinUw24uEmII= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index f80df6c2cb1..4e929297779 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -419,7 +419,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-salt-fix // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20250115135646-ac859d85e7e3 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index b998feb78df..e8bef22eab3 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1411,8 +1411,8 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b h1:eNsqumP7VVJudA7gEcTKVFofealwbPJRinUw24uEmII= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20250121210000-2a9675d7a1b4 h1:w7w42ml8MOxdoyAZ9+og0342UkiH3deRM1V0Pj5JR5g= From 5c76148d0e62170518cd4113e764b4be3dfd5de8 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 30 Jan 2025 12:21:59 -0600 Subject: [PATCH 33/36] update --- deployment/ccip/changeset/cs_deploy_chain.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/deployment/ccip/changeset/cs_deploy_chain.go b/deployment/ccip/changeset/cs_deploy_chain.go index 546e0e29a2e..b8de97dbf9c 100644 --- a/deployment/ccip/changeset/cs_deploy_chain.go +++ b/deployment/ccip/changeset/cs_deploy_chain.go @@ -625,12 +625,8 @@ func deployChainContractsSolana( return fmt.Errorf("failed to get solana router program data: %w", err) } - defaultGasLimit := solBinary.Uint128{Lo: 3000, Hi: 0, Endianness: nil} - instruction, err := ccip_router.NewInitializeInstruction( chain.Selector, // chain selector - defaultGasLimit, // default gas limit - true, // allow out of order execution EnableExecutionAfter, // period to wait before allowing manual execution solana.PublicKey{}, solana.PublicKey{}, From 5bcf5095c58d7d884622da6e8b5b5944860280a6 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 30 Jan 2025 12:30:49 -0600 Subject: [PATCH 34/36] lint --- .../ccip/ccipsolana/extradatadecoder_test.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go b/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go index 79154275371..8d39bd0cd7a 100644 --- a/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go +++ b/core/capabilities/ccip/ccipsolana/extradatadecoder_test.go @@ -7,9 +7,10 @@ import ( agbinary "github.com/gagliardetto/binary" "github.com/gagliardetto/solana-go" - "github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/config" "github.com/stretchr/testify/require" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/contracts/tests/config" + "github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings/ccip_router" ) @@ -45,9 +46,7 @@ func Test_decodeExtraArgs(t *testing.T) { encoder := agbinary.NewBorshEncoder(&buf) err := extraArgs.MarshalWithEncoder(encoder) require.NoError(t, err) - - input := append(svmExtraArgsV1Tag, buf.Bytes()...) - output, err := DecodeExtraArgsToMap(input) + output, err := DecodeExtraArgsToMap(append(svmExtraArgsV1Tag, buf.Bytes()...)) require.NoError(t, err) require.Len(t, output, 5) @@ -75,8 +74,7 @@ func Test_decodeExtraArgs(t *testing.T) { err := extraArgs.MarshalWithEncoder(encoder) require.NoError(t, err) - input := append(evmExtraArgsV2Tag, buf.Bytes()...) - output, err := DecodeExtraArgsToMap(input) + output, err := DecodeExtraArgsToMap(append(evmExtraArgsV2Tag, buf.Bytes()...)) require.NoError(t, err) require.Len(t, output, 2) From 8af2a50e0ab4f81c04b4a871659eaa9bac65a316 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 30 Jan 2025 12:41:21 -0600 Subject: [PATCH 35/36] mod tidy --- core/scripts/go.sum | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 8b589346564..6a069284e75 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1170,8 +1170,7 @@ github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgB github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847 h1:kCcrM/osIQFmHx7ZOxeGIeYAMkSmTxkOXcmqHNlXQXQ= github.com/smartcontractkit/chainlink-ccip v0.0.0-20250128193522-bdbfcc588847/go.mod h1:UEnHaxkUsfreeA7rR45LMmua1Uen95tOFUR8/AI9BAo= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81 h1:GOLPigTQ6ZcX+C+UtHls0lElNN4HiPlcwZC9m1wOoVI= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250129142905-771fb9957d81/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b h1:eNsqumP7VVJudA7gEcTKVFofealwbPJRinUw24uEmII= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250130162116-1b2ee24da54b/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36 h1:dytZPggag6auyzmbhpIDmkHu7KrflIBEhLLec4/xFIk= github.com/smartcontractkit/chainlink-common v0.4.2-0.20250127125541-a8fa42cc0f36/go.mod h1:Z2e1ynSJ4pg83b4Qldbmryc5lmnrI3ojOdg1FUloa68= From aa9841d47cf0cd47d1cdd51b29b98abebcc7afe1 Mon Sep 17 00:00:00 2001 From: Joe Huang Date: Thu, 30 Jan 2025 12:55:23 -0600 Subject: [PATCH 36/36] update --- core/capabilities/ccip/ccipsolana/extradatadecoder.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/capabilities/ccip/ccipsolana/extradatadecoder.go b/core/capabilities/ccip/ccipsolana/extradatadecoder.go index c699e9f87f1..4b2e72ef34e 100644 --- a/core/capabilities/ccip/ccipsolana/extradatadecoder.go +++ b/core/capabilities/ccip/ccipsolana/extradatadecoder.go @@ -20,11 +20,9 @@ var ( // this should be moved to msghasher.go once merged // bytes4(keccak256("CCIP SVMExtraArgsV1")); - // bytes4 public constant SVM_EXTRA_ARGS_V1_TAG = 0x1f3b3aba; svmExtraArgsV1Tag = hexutil.MustDecode("0x1f3b3aba") // bytes4(keccak256("CCIP EVMExtraArgsV2")); - // bytes4 public constant EVM_EXTRA_ARGS_V2_TAG = 0x181dcf10; evmExtraArgsV2Tag = hexutil.MustDecode("0x181dcf10") )