Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,13 @@ test-coverage coverage_file="coverage.out":
# coverage_file := env_var_or_default('COVERAGE_FILE', 'coverage.out')
go test -v -race -fullpath -shuffle on -v -coverprofile={{coverage_file}} ./...

bump-chainlink-ccip sha:
@echo "Bumping chainlink-ccip dependencies in root..."
go get github.com/smartcontractkit/chainlink-ccip@{{sha}}
go get github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment@{{sha}}
go get github.com/smartcontractkit/chainlink-ccip/deployment@{{sha}}

@echo "Bumping chainlink-ccip dependencies in build/devenv..."
(cd build/devenv && go get github.com/smartcontractkit/chainlink-ccip@{{sha}} && go get github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment@{{sha}} && go get github.com/smartcontractkit/chainlink-ccip/deployment@{{sha}})

@just tidy
6 changes: 5 additions & 1 deletion aggregator/aggregator.toml
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,15 @@ pyroscope_url = "http://pyroscope:4040"
addresses = ["0x099125558781da4bcdb16e457e15d997ecac68a8"]
[committees.default.quorumConfigs.4793464827907405086]
committeeVerifierAddress = "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE"
threshold = 1
threshold = 2
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unifying everything for now until we figure out a better way to generate these configs from code.


[[committees.default.quorumConfigs.4793464827907405086.signers]]
participantID = "participant1"
addresses = ["0x6b3131d871c63c7fa592863e173cba2da5ffa68b"]

[[committees.default.quorumConfigs.4793464827907405086.signers]]
participantID = "participant2"
addresses = ["0x099125558781da4bcdb16e457e15d997ecac68a8"]
[committees.default.sourceVerifierAddresses]
12922642891491394802 = "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE"
3379446385462418246 = "0x9A9f2CCfdE556A7E9Ff0848998Aa4a0CFD8863AE"
Expand Down
6 changes: 6 additions & 0 deletions build/devenv/Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,12 @@ build-docker-rc:
cli:
pushd cmd/ccv > /dev/null && go install -ldflags="-X main.Version=1.0.0" . && popd > /dev/null

fresh-deploy:
@just cli
@just build-docker-dev
ccv down
ccv up

# Rebuild all
rebuild-all:
ccv d
Expand Down
2 changes: 1 addition & 1 deletion build/devenv/cmd/ccv/ccv.go
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ var sendCmd = &cobra.Command{
Executor: protocol.UnknownAddress(common.HexToAddress(executorRef.Address).Bytes()), // executor address
ExecutorArgs: nil,
TokenArgs: nil,
MandatoryCCVs: []protocol.CCV{
CCVs: []protocol.CCV{
{
CCVAddress: common.HexToAddress(committeeVerifierProxyRef.Address).Bytes(),
Args: []byte{},
Expand Down
2 changes: 1 addition & 1 deletion build/devenv/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func NewEnvironment() (*Cfg, error) {

for i, ver := range in.Verifier {
ver.ConfigFilePath = fmt.Sprintf("/app/cmd/verifier/verifier-%d.toml", i+1)
ver.SigningKey = fmt.Sprintf("dev-private-key%d-12345678901234567890", i)
ver.SigningKey = cciptestinterfaces.XXXNewVerifierPrivateKey(i)
_, err = services.NewVerifier(ver)
if err != nil {
return nil, fmt.Errorf("failed to create verifier service: %w", err)
Expand Down
6 changes: 3 additions & 3 deletions build/devenv/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ require (
github.com/prometheus/client_golang v1.23.0
github.com/rs/zerolog v1.34.0
github.com/smartcontractkit/chain-selectors v1.0.72
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251017065736-83976da2ec64
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20251017065736-83976da2ec64
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20251017065736-83976da2ec64 // indirect
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251017174358-1a48fa8a246b
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20251017174358-1a48fa8a246b
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20251017174358-1a48fa8a246b // indirect
github.com/smartcontractkit/chainlink-common v0.9.6-0.20250929154511-1f5fbda7ae76
github.com/smartcontractkit/chainlink-deployments-framework v0.55.1
github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.33
Expand Down
12 changes: 6 additions & 6 deletions build/devenv/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1034,16 +1034,16 @@ github.com/smartcontractkit/chain-selectors v1.0.72 h1:AExF2H3mABdLCN0QZd+IjU8Ck
github.com/smartcontractkit/chain-selectors v1.0.72/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8=
github.com/smartcontractkit/chainlink-aptos v0.0.0-20250915164817-46a35eda083d h1:bcfnHPXAhrhUw95X60Y/lDhQAb4SxSyTrqyVCHqfXPI=
github.com/smartcontractkit/chainlink-aptos v0.0.0-20250915164817-46a35eda083d/go.mod h1:tEjqontct1/5cKHm4q75nopZa1rwzaQZwd9U9wn0uZE=
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251017065736-83976da2ec64 h1:qHUX9Y8i4b/TBO2ILZCkeKf9G1AO1MmnmTpTTbictAI=
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251017065736-83976da2ec64/go.mod h1:W3d6TbZ4PNLGb8QOK8URc/tVWBhnAOwtAYsQ2iPgwtw=
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20251017065736-83976da2ec64 h1:h9NmYo0YPySduRclcUZc1ba39nEEPyabwtelexsVj8Y=
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20251017065736-83976da2ec64/go.mod h1:LvEaw/iOLs6UQRCqr7zyxhxDopd+KPp53GE77N8TugE=
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251017174358-1a48fa8a246b h1:tHOvMBWdYxQ/ovH10iUvN3XHmjg2lPPWOXKY99mSaD4=
github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251017174358-1a48fa8a246b/go.mod h1:W3d6TbZ4PNLGb8QOK8URc/tVWBhnAOwtAYsQ2iPgwtw=
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20251017174358-1a48fa8a246b h1:08jEs6dSBihScGcLiBPoJu4NiMwGTaiL8vSWqXFqT6Q=
github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20251017174358-1a48fa8a246b/go.mod h1:LvEaw/iOLs6UQRCqr7zyxhxDopd+KPp53GE77N8TugE=
github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 h1:GmJQqNrWn5pNc8YTei6l2TOSYjK2fRd4+edFZIifCrU=
github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ=
github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU=
github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg=
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20251017065736-83976da2ec64 h1:0EtIB0DChFUETLlpBHKm/VfGvgOEgaemr3G2mPhoRUY=
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20251017065736-83976da2ec64/go.mod h1:oDe4huAcmrsakLGZxxGe+Y03cQ+sapxM0gZrTe20iLY=
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20251017174358-1a48fa8a246b h1:koEaLC+3bStmauerlqJcvNlCUhpGwR6tRobb4qc7gdo=
github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20251017174358-1a48fa8a246b/go.mod h1:oDe4huAcmrsakLGZxxGe+Y03cQ+sapxM0gZrTe20iLY=
github.com/smartcontractkit/chainlink-common v0.9.6-0.20250929154511-1f5fbda7ae76 h1:Slnws8RoXRUYGgEMYK6X2yYzjZwNgVb93PxU45VEObQ=
github.com/smartcontractkit/chainlink-common v0.9.6-0.20250929154511-1f5fbda7ae76/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA=
github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw=
Expand Down
3 changes: 1 addition & 2 deletions build/devenv/tests/e2e/load_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,14 +190,13 @@ func (m *EVMTXGun) Call(_ *wasp.Generator) *wasp.Response {
}, cciptestinterfaces.MessageOptions{
Version: 3,
FinalityConfig: uint16(1),
MandatoryCCVs: []protocol.CCV{
CCVs: []protocol.CCV{
{
CCVAddress: common.HexToAddress(committeeVerifierProxyRef.Address).Bytes(),
Args: []byte{},
ArgsLen: 0,
},
},
OptionalThreshold: 0,
})
if err != nil {
return &wasp.Response{Error: fmt.Errorf("failed to send message: %w", err).Error(), Failed: true}
Expand Down
38 changes: 21 additions & 17 deletions build/devenv/tests/e2e/smoke_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,17 @@ func TestE2ESmoke(t *testing.T) {
require.NotNil(t, e)

if tc.expectFail {
require.Equal(t, MessageExecutionStateFailed, e.(*offramp.OffRampExecutionStateChanged).State)
require.Equalf(t,
MessageExecutionStateFailed,
e.(*offramp.OffRampExecutionStateChanged).State,
"unexpected state, return data: %x",
e.(*offramp.OffRampExecutionStateChanged).ReturnData)
} else {
require.Equal(t, MessageExecutionStateSuccess, e.(*offramp.OffRampExecutionStateChanged).State)
require.Equalf(t,
MessageExecutionStateSuccess,
e.(*offramp.OffRampExecutionStateChanged).State,
"unexpected state, return data: %x",
e.(*offramp.OffRampExecutionStateChanged).ReturnData)
}
})
}
Expand All @@ -133,9 +141,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector uint64
finality uint16
receiver protocol.UnknownAddress
mandatoryCCVs []protocol.CCV
optionalCCVs []protocol.CCV
threshold uint8
ccvs []protocol.CCV
expectFail bool
tokenTransfer *tokenTransfer
}
Expand All @@ -147,7 +153,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector: selectors[1],
finality: 1,
receiver: mustGetEOAReceiverAddress(t, c, selectors[1]),
mandatoryCCVs: []protocol.CCV{
ccvs: []protocol.CCV{
{
CCVAddress: getContractAddress(t, in, selectors[0], datastore.ContractType(committee_verifier.ProxyType), committee_verifier.Deploy.Version(), ccvEvm.DefaultCommitteeVerifierQualifier, "committee verifier proxy"),
Args: []byte{},
Expand All @@ -161,7 +167,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector: selectors[0],
finality: 1,
receiver: mustGetEOAReceiverAddress(t, c, selectors[0]),
mandatoryCCVs: []protocol.CCV{
ccvs: []protocol.CCV{
{
CCVAddress: getContractAddress(t, in, selectors[1], datastore.ContractType(committee_verifier.ProxyType), committee_verifier.Deploy.Version(), ccvEvm.DefaultCommitteeVerifierQualifier, "committee verifier proxy"),
Args: []byte{},
Expand All @@ -175,7 +181,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector: selectors[2],
finality: 1,
receiver: mustGetEOAReceiverAddress(t, c, selectors[2]),
mandatoryCCVs: []protocol.CCV{
ccvs: []protocol.CCV{
{
CCVAddress: getContractAddress(t, in, selectors[0], datastore.ContractType(committee_verifier.ProxyType), committee_verifier.Deploy.Version(), ccvEvm.DefaultCommitteeVerifierQualifier, "committee verifier proxy"),
Args: []byte{},
Expand All @@ -190,7 +196,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector: selectors[1],
finality: 1,
receiver: getContractAddress(t, in, selectors[1], datastore.ContractType(mock_receiver.ContractType), mock_receiver.Deploy.Version(), ccvEvm.DefaultReceiverQualifier, "mock receiver"),
mandatoryCCVs: []protocol.CCV{
ccvs: []protocol.CCV{
{
CCVAddress: getContractAddress(t, in, selectors[1], datastore.ContractType(committee_verifier.ProxyType), committee_verifier.Deploy.Version(), ccvEvm.DefaultCommitteeVerifierQualifier, "committee verifier proxy"),
Args: []byte{},
Expand All @@ -207,7 +213,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector: selectors[0],
finality: 1,
receiver: getContractAddress(t, in, selectors[0], datastore.ContractType(mock_receiver.ContractType), mock_receiver.Deploy.Version(), ccvEvm.DefaultReceiverQualifier, "mock receiver"),
mandatoryCCVs: []protocol.CCV{
ccvs: []protocol.CCV{
{
CCVAddress: getContractAddress(t, in, selectors[0], datastore.ContractType(committee_verifier.ProxyType), committee_verifier.Deploy.Version(), ccvEvm.DefaultCommitteeVerifierQualifier, "committee verifier proxy"),
Args: []byte{},
Expand All @@ -224,7 +230,7 @@ func TestE2ESmoke(t *testing.T) {
dstSelector: selectors[1],
finality: 1,
receiver: mustGetEOAReceiverAddress(t, c, selectors[1]),
mandatoryCCVs: []protocol.CCV{
ccvs: []protocol.CCV{
{
CCVAddress: getContractAddress(t, in, selectors[0], datastore.ContractType(committee_verifier.ProxyType), committee_verifier.Deploy.Version(), ccvEvm.DefaultCommitteeVerifierQualifier, "committee verifier proxy"),
Args: []byte{},
Expand Down Expand Up @@ -265,12 +271,10 @@ func TestE2ESmoke(t *testing.T) {
Data: []byte{},
TokenAmounts: tokenAmounts,
}, cciptestinterfaces.MessageOptions{
Version: 3,
FinalityConfig: tc.finality,
Executor: getContractAddress(t, in, tc.srcSelector, datastore.ContractType(executor.ContractType), executor.Deploy.Version(), "", "executor"),
MandatoryCCVs: tc.mandatoryCCVs,
OptionalCCVs: tc.optionalCCVs,
OptionalThreshold: tc.threshold,
Version: 3,
FinalityConfig: tc.finality,
Executor: getContractAddress(t, in, tc.srcSelector, datastore.ContractType(executor.ContractType), executor.Deploy.Version(), "", "executor"),
CCVs: tc.ccvs,
})
require.NoError(t, err)
_, err = c.WaitOneSentEventBySeqNo(ctx, tc.srcSelector, tc.dstSelector, seqNo, defaultSentTimeout)
Expand Down
10 changes: 3 additions & 7 deletions cciptestinterfaces/interface.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package ccv
package cciptestinterfaces

import (
"context"
Expand Down Expand Up @@ -73,12 +73,8 @@ type MessageOptions struct {
GasLimit uint32
// OutOfOrderExecution is whether to execute the message out of order
OutOfOrderExecution bool
// MandatoryCCVs are the mandatory CCVs for the message
MandatoryCCVs []protocol.CCV
// OptionalCCVs are the optional CCVs for the message
OptionalCCVs []protocol.CCV
// OptionalThreshold is the threshold for the optional CCVs
OptionalThreshold uint8
// CCVs are the CCVs for the message
CCVs []protocol.CCV
// FinalityConfig is the finality config for the message
FinalityConfig uint16
// Executor is the executor address
Expand Down
10 changes: 10 additions & 0 deletions cciptestinterfaces/keys.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package cciptestinterfaces

import "fmt"

// XXXNewVerifierPrivateKey generates a test-only private key for a verifier
// given its index in the test environment.
// This should never be used in production.
func XXXNewVerifierPrivateKey(idx int) string {
return fmt.Sprintf("dev-private-key%d-12345678901234567890", idx)
}
Loading
Loading