diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 141720346..e973d9f70 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -23,7 +23,7 @@ jobs: echo "version=${version}" | tee -a "$GITHUB_OUTPUT" - name: Run golangci-lint (integration-tests) if: ${{ always() && !contains(join(github.event.pull_request.labels.*.name, ' '), 'allow-lint-issues') }} - uses: smartcontractkit/.github/actions/ci-lint-go@cdcf67030997adc322ddb2ad48949f394f5b04a3 #ci-lint-go/3.0.0 + uses: smartcontractkit/.github/actions/ci-lint-go@ci-lint-go/v4 env: checkout-repo: false golangci-lint-version: v${{ steps.get-version.outputs.version }} @@ -50,7 +50,7 @@ jobs: - name: Run golangci-lint (relay) if: ${{ always() && !contains(join(github.event.pull_request.labels.*.name, ' '), 'allow-lint-issues') }} - uses: smartcontractkit/.github/actions/ci-lint-go@cdcf67030997adc322ddb2ad48949f394f5b04a3 #ci-lint-go/3.0.0 + uses: smartcontractkit/.github/actions/ci-lint-go@ci-lint-go/v4 with: checkout-repo: false golangci-lint-version: v${{ steps.get-version.outputs.version }} diff --git a/.tool-versions b/.tool-versions index 6ab6f5efa..a933607a3 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,8 +1,8 @@ nodejs 20.18.0 yarn 1.22.19 rust 1.59.0 -golang 1.25.3 -golangci-lint 2.6.1 +golang 1.26.2 +golangci-lint 2.12.2 actionlint 1.6.22 shellcheck 0.8.0 helm 3.18.4 diff --git a/contracts/go.mod b/contracts/go.mod index d57640cc6..49f5b132d 100644 --- a/contracts/go.mod +++ b/contracts/go.mod @@ -1,6 +1,6 @@ module github.com/smartcontractkit/chainlink-solana/contracts -go 1.25.7 +go 1.26.2 require ( github.com/Unheilbar/anchor-go v1.0.3 @@ -108,9 +108,9 @@ require ( github.com/shirou/gopsutil/v4 v4.26.2 // indirect github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 // indirect github.com/sirupsen/logrus v1.9.4 // indirect - github.com/smartcontractkit/chain-selectors v1.0.98 // indirect + github.com/smartcontractkit/chain-selectors v1.0.100 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 // indirect - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71 // indirect + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1 // indirect github.com/smartcontractkit/chainlink-testing-framework/framework v0.13.6 // indirect github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20260218133534-cbd44da2856b // indirect github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad // indirect diff --git a/contracts/go.sum b/contracts/go.sum index dcd64caf0..eb18b0d20 100644 --- a/contracts/go.sum +++ b/contracts/go.sum @@ -419,10 +419,10 @@ github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= @@ -448,16 +448,16 @@ github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 h1:aQKxg3+2p+IFXXg97M github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3/go.mod h1:9/etS5gpQq9BJsJMWg1wpLbfuSnkm8dPF6FdW2JXVhA= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= -github.com/smartcontractkit/chain-selectors v1.0.98 h1:fuI7CQ1o5cX64eO4/LvwtfhdpGFH5vnsM/bFHRwEiww= -github.com/smartcontractkit/chain-selectors v1.0.98/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= +github.com/smartcontractkit/chain-selectors v1.0.100 h1:wpiSpmI/eFjY+wx/nPr5VuNF4hki0prIBMKEaQWn3g4= +github.com/smartcontractkit/chain-selectors v1.0.100/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 h1:zrr/54Tr/aVqV/9c45DtyuOxTI4+OMETIKH5bSQSfhE= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288/go.mod h1:jPHlo/IN2YAArI001JJixmm6ZHQwgnAVJXY8VBFiFTc= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 h1:eEjTgIQn4RW0ZPRepUDYTdgGwaRCMawMwgXkHItUc9U= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71 h1:WSNUds78NMlwDttROK/hJZ6ZOremyrR5JXJmPlT8hO8= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71/go.mod h1:kOIIjzxuRXK31j1JdZgUAGjqbGwmJ5gU5qI+FMkP6/I= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1 h1:t0NuGBqSTEAViUtsliP92yGQFPJ2EI3fl2Bhi5tBLJY= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1/go.mod h1:lFJ2fkxep1wBzl+sIyxJNfwo5tb31mBNrGlHpjVO008= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146 h1:PlkA7NGpBm5sc2P//crDFgMIQ0qsQhKcpjWV7Qzwqz8= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146/go.mod h1:HmUyH2oD9m+GRpKq7q3vuRnm1F2Uczf/Nd1v3ipMSK8= github.com/smartcontractkit/chainlink-deployments-framework v0.75.0 h1:9ZjyePOYM5+M/d5JHOA5dUx6UdDWqqS0NRlvFRlHUII= github.com/smartcontractkit/chainlink-deployments-framework v0.75.0/go.mod h1:ik4yPeO0zESdC4Axjies+EvdLw7W0g1CEDTXsThNdRk= github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243 h1:vaFBupfFfImQgqOeuC7Muk2GflbYP6Gpi0Y/TLroFU8= @@ -594,8 +594,8 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/go.mod b/go.mod index 37879ee4d..4f2745a9e 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/smartcontractkit/chainlink-solana -go 1.25.7 +go 1.26.2 require ( github.com/cometbft/cometbft v0.38.21 @@ -12,22 +12,22 @@ require ( github.com/gagliardetto/utilz v0.1.3 github.com/go-viper/mapstructure/v2 v2.5.0 github.com/google/uuid v1.6.0 - github.com/hashicorp/go-plugin v1.7.0 + github.com/hashicorp/go-plugin v1.8.0 github.com/jackc/pgx/v4 v4.18.3 github.com/lib/pq v1.11.1 github.com/pelletier/go-toml/v2 v2.2.4 github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 - github.com/smartcontractkit/chain-selectors v1.0.98 + github.com/smartcontractkit/chain-selectors v1.0.100 github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260317185256-d5f7db87ae70 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1 github.com/smartcontractkit/chainlink-common/keystore v1.0.2 github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20251215152504-b1e41f508340 github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243 github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243 - github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260505131349-78e491b80735 + github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260526195338-adcf8013a1b7 github.com/smartcontractkit/freeport v0.1.3-0.20250828155247-add56fa28aad github.com/smartcontractkit/libocr v0.0.0-20260403184524-b6409238958d github.com/stretchr/testify v1.11.1 @@ -144,8 +144,8 @@ require ( github.com/pion/transport/v2 v2.2.10 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/common v0.67.5 // indirect + github.com/prometheus/procfs v0.20.1 // indirect github.com/riferrei/srclient v0.5.4 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect @@ -155,7 +155,7 @@ require ( github.com/shirou/gopsutil/v4 v4.25.9 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/sirupsen/logrus v1.9.4 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146 // indirect github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260319180422-b5808c964785 // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect @@ -176,6 +176,7 @@ require ( github.com/zeebo/xxh3 v1.0.2 // indirect go.mongodb.org/mongo-driver v1.17.2 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.68.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 // indirect @@ -195,9 +196,10 @@ require ( go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/ratelimit v0.3.1 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect golang.org/x/crypto v0.49.0 // indirect golang.org/x/mod v0.33.0 // indirect golang.org/x/net v0.52.0 // indirect diff --git a/go.sum b/go.sum index 1e16d54ec..ee504d220 100644 --- a/go.sum +++ b/go.sum @@ -384,8 +384,8 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= -github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= +github.com/hashicorp/go-plugin v1.8.0 h1:ie8S6RRY8RvB2usYZv+AAZ/wBvx2AU5p5QeP5j/FORs= +github.com/hashicorp/go-plugin v1.8.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -677,12 +677,12 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= 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.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= 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.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/riferrei/srclient v0.5.4 h1:dfwyR5u23QF7beuVl2WemUY2KXh5+Sc4DHKyPXBNYuc= github.com/riferrei/srclient v0.5.4/go.mod h1:vbkLmWcgYa7JgfPvuy/+K8fTS0p1bApqadxrxi/S1MI= @@ -726,28 +726,28 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= -github.com/smartcontractkit/chain-selectors v1.0.98 h1:fuI7CQ1o5cX64eO4/LvwtfhdpGFH5vnsM/bFHRwEiww= -github.com/smartcontractkit/chain-selectors v1.0.98/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= +github.com/smartcontractkit/chain-selectors v1.0.100 h1:wpiSpmI/eFjY+wx/nPr5VuNF4hki0prIBMKEaQWn3g4= +github.com/smartcontractkit/chain-selectors v1.0.100/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260317185256-d5f7db87ae70 h1:bpzTG/8qwnbnIQPcilnM8lPd/Or4Q22cnakzawds2NQ= github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260317185256-d5f7db87ae70/go.mod h1:iZTLsjnvzUR4QODACgkvJ2Xd1z1YYJJvEnLZ61K/sfw= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 h1:zrr/54Tr/aVqV/9c45DtyuOxTI4+OMETIKH5bSQSfhE= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288/go.mod h1:jPHlo/IN2YAArI001JJixmm6ZHQwgnAVJXY8VBFiFTc= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 h1:eEjTgIQn4RW0ZPRepUDYTdgGwaRCMawMwgXkHItUc9U= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71 h1:WSNUds78NMlwDttROK/hJZ6ZOremyrR5JXJmPlT8hO8= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71/go.mod h1:kOIIjzxuRXK31j1JdZgUAGjqbGwmJ5gU5qI+FMkP6/I= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1 h1:t0NuGBqSTEAViUtsliP92yGQFPJ2EI3fl2Bhi5tBLJY= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1/go.mod h1:lFJ2fkxep1wBzl+sIyxJNfwo5tb31mBNrGlHpjVO008= github.com/smartcontractkit/chainlink-common/keystore v1.0.2 h1:AWisx4JT3QV8tcgh6J5NCrex+wAgTYpWyHsyNPSXzsQ= github.com/smartcontractkit/chainlink-common/keystore v1.0.2/go.mod h1:rSkIHdomyak3YnUtXLenl6poIq8q0V3UZPiiyYqPdGA= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146 h1:PlkA7NGpBm5sc2P//crDFgMIQ0qsQhKcpjWV7Qzwqz8= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146/go.mod h1:HmUyH2oD9m+GRpKq7q3vuRnm1F2Uczf/Nd1v3ipMSK8= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20251215152504-b1e41f508340 h1:PsjEI+5jZIz9AS4eOsLS5VpSWJINf38clXV3wryPyMk= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20251215152504-b1e41f508340/go.mod h1:P/0OSXUlFaxxD4B/P6HWbxYtIRmmWGDJAvanq19879c= github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243 h1:vaFBupfFfImQgqOeuC7Muk2GflbYP6Gpi0Y/TLroFU8= github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243/go.mod h1:HG/aei0MgBOpsyRLexdKGtOUO8yjSJO3iUu0Uu8KBm4= github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243 h1:71PGTkjdFZ0JrloEC2Fs8eHl1b1gmUuH+bq7q23usKk= github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243/go.mod h1:7ketk4ischPQW/JQgmyHz6zdzLUJv1VC29SiSgosydQ= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260505131349-78e491b80735 h1:5bxDnwI0wuPoC0H5H3H2n9CnQPb5iakR6UmAY4j8KUg= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260505131349-78e491b80735/go.mod h1:Jqt53s27Tr0jDl8mdBXg1xhu6F8Fci8JOuq43tgHOM8= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260526195338-adcf8013a1b7 h1:iljEJss3WOwcsMkWy72Yn2zvjw7Gyxc+RXL7r8YKM6g= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260526195338-adcf8013a1b7/go.mod h1:vTFHTCbLui4Vn8fTmAadfE3rdnvfrDwOmMujmW857D0= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b/go.mod h1:qSTSwX3cBP3FKQwQacdjArqv0g6QnukjV4XuzO6UyoY= github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260319180422-b5808c964785 h1:oli+2uLU6jcrJGCuYFqk3475hiwL17SWlITWLv+tx/w= @@ -857,6 +857,8 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= +go.opentelemetry.io/contrib/bridges/prometheus v0.68.0 h1:w3zlHYETbDwXyWHZlyyR58ZC39XGi8rAhkBgUgJ9d5w= +go.opentelemetry.io/contrib/bridges/prometheus v0.68.0/go.mod h1:GR/mClR2nn7vE8RLwxKjoBNg+QtgdDhRzxVa93koy5o= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.65.0 h1:7iP2uCb7sGddAr30RRS6xjKy7AZ2JtTOPA3oolgVSw8= @@ -931,8 +933,8 @@ go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 9b900ecbf..2ad58299d 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -1,6 +1,6 @@ module github.com/smartcontractkit/chainlink-solana/integration-tests -go 1.25.7 +go 1.26.2 replace github.com/smartcontractkit/chainlink-solana => ../ @@ -19,10 +19,10 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 github.com/pkg/errors v0.9.1 github.com/rs/zerolog v1.34.0 - github.com/smartcontractkit/chain-selectors v1.0.98 + github.com/smartcontractkit/chain-selectors v1.0.100 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71 - github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260505131349-78e491b80735 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1 + github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260526195338-adcf8013a1b7 github.com/smartcontractkit/chainlink-solana v1.1.2-0.20260409203251-51e31d9d11e9 github.com/smartcontractkit/chainlink-solana/contracts v0.0.0-20260217175957-8f1af02c5075 github.com/smartcontractkit/chainlink-testing-framework/framework v0.15.3 @@ -118,7 +118,7 @@ require ( github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect - github.com/hashicorp/go-plugin v1.7.0 // indirect + github.com/hashicorp/go-plugin v1.8.0 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/holiman/uint256 v1.3.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -169,8 +169,8 @@ require ( github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/procfs v0.16.1 // indirect + github.com/prometheus/common v0.67.5 // indirect + github.com/prometheus/procfs v0.20.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect @@ -183,7 +183,7 @@ require ( github.com/sirupsen/logrus v1.9.4 // indirect github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260317185256-d5f7db87ae70 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146 // indirect github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243 // indirect github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243 // indirect github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect @@ -227,9 +227,10 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect go.opentelemetry.io/proto/otlp v1.10.0 // indirect + go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/ratelimit v0.3.1 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect golang.org/x/arch v0.11.0 // indirect golang.org/x/crypto v0.49.0 // indirect golang.org/x/mod v0.33.0 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 3a5b7d3bd..7402ee8f2 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -416,8 +416,8 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= -github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= +github.com/hashicorp/go-plugin v1.8.0 h1:ie8S6RRY8RvB2usYZv+AAZ/wBvx2AU5p5QeP5j/FORs= +github.com/hashicorp/go-plugin v1.8.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -690,12 +690,12 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= 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.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= -github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= +github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= +github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= 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.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= -github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= @@ -738,26 +738,26 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= -github.com/smartcontractkit/chain-selectors v1.0.98 h1:fuI7CQ1o5cX64eO4/LvwtfhdpGFH5vnsM/bFHRwEiww= -github.com/smartcontractkit/chain-selectors v1.0.98/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= +github.com/smartcontractkit/chain-selectors v1.0.100 h1:wpiSpmI/eFjY+wx/nPr5VuNF4hki0prIBMKEaQWn3g4= +github.com/smartcontractkit/chain-selectors v1.0.100/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260317185256-d5f7db87ae70 h1:bpzTG/8qwnbnIQPcilnM8lPd/Or4Q22cnakzawds2NQ= github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260317185256-d5f7db87ae70/go.mod h1:iZTLsjnvzUR4QODACgkvJ2Xd1z1YYJJvEnLZ61K/sfw= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288 h1:zrr/54Tr/aVqV/9c45DtyuOxTI4+OMETIKH5bSQSfhE= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260310183131-8d0f0e383288/go.mod h1:jPHlo/IN2YAArI001JJixmm6ZHQwgnAVJXY8VBFiFTc= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288 h1:eEjTgIQn4RW0ZPRepUDYTdgGwaRCMawMwgXkHItUc9U= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20260310183131-8d0f0e383288/go.mod h1:67YbnoglYD61Pz/jTVCgav9wFq7S35OU8UyQSvPllRw= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71 h1:WSNUds78NMlwDttROK/hJZ6ZOremyrR5JXJmPlT8hO8= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260421191147-d10b9943ac71/go.mod h1:kOIIjzxuRXK31j1JdZgUAGjqbGwmJ5gU5qI+FMkP6/I= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1 h1:t0NuGBqSTEAViUtsliP92yGQFPJ2EI3fl2Bhi5tBLJY= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260527130547-9af3631555c1/go.mod h1:lFJ2fkxep1wBzl+sIyxJNfwo5tb31mBNrGlHpjVO008= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146 h1:PlkA7NGpBm5sc2P//crDFgMIQ0qsQhKcpjWV7Qzwqz8= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260518142424-bacfb6ba4146/go.mod h1:HmUyH2oD9m+GRpKq7q3vuRnm1F2Uczf/Nd1v3ipMSK8= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20251215152504-b1e41f508340 h1:PsjEI+5jZIz9AS4eOsLS5VpSWJINf38clXV3wryPyMk= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20251215152504-b1e41f508340/go.mod h1:P/0OSXUlFaxxD4B/P6HWbxYtIRmmWGDJAvanq19879c= github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243 h1:vaFBupfFfImQgqOeuC7Muk2GflbYP6Gpi0Y/TLroFU8= github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260521164805-26d78d5e1243/go.mod h1:HG/aei0MgBOpsyRLexdKGtOUO8yjSJO3iUu0Uu8KBm4= github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243 h1:71PGTkjdFZ0JrloEC2Fs8eHl1b1gmUuH+bq7q23usKk= github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243/go.mod h1:7ketk4ischPQW/JQgmyHz6zdzLUJv1VC29SiSgosydQ= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260505131349-78e491b80735 h1:5bxDnwI0wuPoC0H5H3H2n9CnQPb5iakR6UmAY4j8KUg= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260505131349-78e491b80735/go.mod h1:Jqt53s27Tr0jDl8mdBXg1xhu6F8Fci8JOuq43tgHOM8= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260526195338-adcf8013a1b7 h1:iljEJss3WOwcsMkWy72Yn2zvjw7Gyxc+RXL7r8YKM6g= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260526195338-adcf8013a1b7/go.mod h1:vTFHTCbLui4Vn8fTmAadfE3rdnvfrDwOmMujmW857D0= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b/go.mod h1:qSTSwX3cBP3FKQwQacdjArqv0g6QnukjV4XuzO6UyoY= github.com/smartcontractkit/chainlink-testing-framework/framework v0.15.3 h1:wMxGJzQrKF5J9Msmpeal1Iw3h4RqPwOZ2I1ZjlSqhZo= @@ -939,8 +939,8 @@ go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/arch v0.11.0 h1:KXV8WWKCXm6tRpLirl2szsO5j/oOODwZf4hATmGVNs4= golang.org/x/arch v0.11.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= diff --git a/ops/monitoring/Dockerfile b/ops/monitoring/Dockerfile index 009df92c6..d594eeaff 100644 --- a/ops/monitoring/Dockerfile +++ b/ops/monitoring/Dockerfile @@ -1,6 +1,6 @@ # Build image -FROM golang:1.25 AS build +FROM golang:1.26 AS build # OS dependencies RUN apt-get update && apt-get install -y wget gcc diff --git a/pkg/monitoring/metrics/mocks/Fees.go b/pkg/monitoring/metrics/mocks/Fees.go index 9d6811e1b..6f9762597 100644 --- a/pkg/monitoring/metrics/mocks/Fees.go +++ b/pkg/monitoring/metrics/mocks/Fees.go @@ -5,7 +5,6 @@ package mocks import ( metrics "github.com/smartcontractkit/chainlink-solana/pkg/monitoring/metrics" fees "github.com/smartcontractkit/chainlink-solana/pkg/solana/fees" - mock "github.com/stretchr/testify/mock" ) diff --git a/pkg/monitoring/metrics/mocks/feed_balances.go b/pkg/monitoring/metrics/mocks/feed_balances.go index 7865d35e3..ebd8dd254 100644 --- a/pkg/monitoring/metrics/mocks/feed_balances.go +++ b/pkg/monitoring/metrics/mocks/feed_balances.go @@ -3,10 +3,9 @@ package mocks import ( + prometheus "github.com/prometheus/client_golang/prometheus" metrics "github.com/smartcontractkit/chainlink-solana/pkg/monitoring/metrics" mock "github.com/stretchr/testify/mock" - - prometheus "github.com/prometheus/client_golang/prometheus" ) // FeedBalances is an autogenerated mock type for the FeedBalances type diff --git a/pkg/monitoring/mocks/chain_reader.go b/pkg/monitoring/mocks/chain_reader.go index 79ed8eaba..6a8a35e52 100644 --- a/pkg/monitoring/mocks/chain_reader.go +++ b/pkg/monitoring/mocks/chain_reader.go @@ -7,11 +7,9 @@ import ( mock "github.com/stretchr/testify/mock" - pkgsolana "github.com/smartcontractkit/chainlink-solana/pkg/solana" - - rpc "github.com/gagliardetto/solana-go/rpc" - solana "github.com/gagliardetto/solana-go" + rpc "github.com/gagliardetto/solana-go/rpc" + pkgsolana "github.com/smartcontractkit/chainlink-solana/pkg/solana" ) // ChainReader is an autogenerated mock type for the ChainReader type diff --git a/pkg/solana/CONFIG.md b/pkg/solana/CONFIG.md index 5981ad2df..86a79a299 100644 --- a/pkg/solana/CONFIG.md +++ b/pkg/solana/CONFIG.md @@ -357,6 +357,7 @@ GasLimitDefault = 300_000 # Default Local = false # Default PollPeriod = '3s' # Default TxAcceptanceState = 3 # Default +RequestSizeLimit = 0 # Default ``` @@ -411,6 +412,13 @@ TxAcceptanceState = 3 # Default ``` TxAcceptanceState is the default acceptance state for writer DON tranmissions. +### RequestSizeLimit +```toml +RequestSizeLimit = 0 # Default +``` +RequestSizeLimit caps the size in bytes of HTTP responses from Solana RPC for requests originated +by workflow capabilities (external requests). Set to 0 to disable the cap. + ## Nodes ```toml [[Nodes]] diff --git a/pkg/solana/chainreader/mocks/events_reader.go b/pkg/solana/chainreader/mocks/events_reader.go index f6b541e75..06aef368d 100644 --- a/pkg/solana/chainreader/mocks/events_reader.go +++ b/pkg/solana/chainreader/mocks/events_reader.go @@ -6,9 +6,8 @@ import ( context "context" query "github.com/smartcontractkit/chainlink-common/pkg/types/query" - mock "github.com/stretchr/testify/mock" - types "github.com/smartcontractkit/chainlink-solana/pkg/solana/logpoller/types" + mock "github.com/stretchr/testify/mock" ) // EventsReader is an autogenerated mock type for the EventsReader type diff --git a/pkg/solana/client/client.go b/pkg/solana/client/client.go index a309f08eb..03117b266 100644 --- a/pkg/solana/client/client.go +++ b/pkg/solana/client/client.go @@ -4,12 +4,15 @@ import ( "context" "errors" "fmt" + "net/http" "time" "github.com/gagliardetto/solana-go" "github.com/gagliardetto/solana-go/rpc" + "github.com/gagliardetto/solana-go/rpc/jsonrpc" "golang.org/x/sync/singleflight" + commonhttp "github.com/smartcontractkit/chainlink-common/pkg/http" "github.com/smartcontractkit/chainlink-common/pkg/logger" mn "github.com/smartcontractkit/chainlink-framework/multinode" @@ -115,10 +118,23 @@ func NewTestClient(endpoint string, cfg *config.TOMLConfig, requestTimeout time. log: log, requestGroup: &singleflight.Group{}, } - rpcClient.rpc = rpc.New(endpoint) + rpcClient.rpc = newRPCClientWithLimitedTransport(endpoint) return &rpcClient, rpcClient.rpc, nil } +// newRPCClientWithLimitedTransport constructs a solana-go *rpc.Client whose HTTP transport is +// wrapped with commonhttp.LimitedTransport. The size cap is opt-in per request via +// commonhttp.WithResponseSizeLimit on the request context; when no limit is set the wrapper is a +// no-op. The underlying transport is http.DefaultTransport, so time bounds come from each method's +// context.WithTimeout(ctx, c.contextDuration) wrapper. +func newRPCClientWithLimitedTransport(endpoint string) *rpc.Client { + httpClient := &http.Client{ + Transport: &commonhttp.LimitedTransport{RoundTripper: http.DefaultTransport}, + } + jrpc := jsonrpc.NewClientWithOpts(endpoint, &jsonrpc.RPCClientOpts{HTTPClient: httpClient}) + return rpc.NewWithCustomRPCClient(jrpc) +} + func NewClient(endpoint string, cfg *config.TOMLConfig, requestTimeout time.Duration, log logger.Logger) (*Client, error) { rpcClient, _, err := NewTestClient(endpoint, cfg, requestTimeout, log) return rpcClient, err diff --git a/pkg/solana/client/client_response_size_test.go b/pkg/solana/client/client_response_size_test.go new file mode 100644 index 000000000..1640051bd --- /dev/null +++ b/pkg/solana/client/client_response_size_test.go @@ -0,0 +1,79 @@ +package client + +import ( + "fmt" + "net/http" + "net/http/httptest" + "strings" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + commonhttp "github.com/smartcontractkit/chainlink-common/pkg/http" + "github.com/smartcontractkit/chainlink-common/pkg/logger" + + "github.com/smartcontractkit/chainlink-solana/pkg/solana/config" +) + +// TestClient_ResponseSizeLimit_FromContext exercises the full path from NewClient through +// jsonrpc.NewClientWithOpts to the commonhttp.LimitedTransport wrapper. It proves three things: +// - The transport is actually wired into the underlying solana-go *rpc.Client (otherwise the +// context limit would have no effect). +// - commonhttp.WithResponseSizeLimit propagates through Client.requestGroup.Do(...) into the +// outbound *http.Request.Context() (singleflight callback closure preservation). +// - An oversized RPC response surfaces to the caller as an error (not silent truncation). +func TestClient_ResponseSizeLimit_FromContext(t *testing.T) { + t.Parallel() + + // Pad the "result" string so the JSON body is comfortably larger than any per-test limit + // but still a syntactically valid JSON-RPC response envelope. + bigResult := strings.Repeat("x", 64*1024) // 64 KiB + body := fmt.Sprintf(`{"jsonrpc":"2.0","result":"%s","id":1}`, bigResult) + + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + _, err := w.Write([]byte(body)) + assert.NoError(t, err) + })) + t.Cleanup(srv.Close) + + requestTimeout := 5 * time.Second + cfg := config.NewDefault() + + t.Run("no limit set -> body fully read, no size error", func(t *testing.T) { + c, err := NewClient(srv.URL, cfg, requestTimeout, logger.Test(t)) + require.NoError(t, err) + + // "result" is not a valid base58 genesis hash, so ChainID will return an error from + // solana-go's Hash parsing; the point is that the error MUST NOT be a size-cap error + // because no limit was set on the context. + _, err = c.ChainID(t.Context()) + require.Error(t, err) + require.NotContains(t, err.Error(), "response is too large", + "unexpected size-cap error when no limit is set") + }) + + t.Run("limit larger than body -> body fully read, no size error", func(t *testing.T) { + c, err := NewClient(srv.URL, cfg, requestTimeout, logger.Test(t)) + require.NoError(t, err) + + // Fixed headroom above body size; avoid uint32(len(body)) (G115 on int→uint32). + ctx := commonhttp.WithResponseSizeLimit(t.Context(), 2*1024*1024) + _, err = c.ChainID(ctx) + require.Error(t, err) + require.NotContains(t, err.Error(), "response is too large", + "unexpected size-cap error when limit exceeds body size") + }) + + t.Run("limit smaller than body -> size error surfaces", func(t *testing.T) { + c, err := NewClient(srv.URL, cfg, requestTimeout, logger.Test(t)) + require.NoError(t, err) + + ctx := commonhttp.WithResponseSizeLimit(t.Context(), 1024) + _, err = c.ChainID(ctx) + require.Error(t, err) + require.ErrorContains(t, err, "response is too large") + }) +} diff --git a/pkg/solana/client/mocks/reader_writer.go b/pkg/solana/client/mocks/reader_writer.go index 40375ca2d..5480fa0fd 100644 --- a/pkg/solana/client/mocks/reader_writer.go +++ b/pkg/solana/client/mocks/reader_writer.go @@ -5,12 +5,10 @@ package mocks import ( context "context" + solana "github.com/gagliardetto/solana-go" + rpc "github.com/gagliardetto/solana-go/rpc" multinode "github.com/smartcontractkit/chainlink-framework/multinode" mock "github.com/stretchr/testify/mock" - - rpc "github.com/gagliardetto/solana-go/rpc" - - solana "github.com/gagliardetto/solana-go" ) // ReaderWriter is an autogenerated mock type for the ReaderWriter type diff --git a/pkg/solana/config/config.go b/pkg/solana/config/config.go index f2a3a6352..28c16a3d0 100644 --- a/pkg/solana/config/config.go +++ b/pkg/solana/config/config.go @@ -56,6 +56,7 @@ type Workflow interface { PollPeriod() time.Duration GasLimitDefault() *uint64 TxAcceptanceState() *commontypes.TransactionStatus + RequestSizeLimit() uint32 Local() bool // shows if workflow is run against local network } @@ -77,6 +78,10 @@ type WorkflowConfig struct { Local *bool PollPeriod *config.Duration TxAcceptanceState *commontypes.TransactionStatus + // RequestSizeLimit caps the size in bytes of HTTP responses from Solana RPC for requests + // originated by workflow capabilities (external requests). Applied per request via + // commonhttp.WithResponseSizeLimit on the request context. Zero disables the cap. + RequestSizeLimit *uint32 } // IsEnabled reports whether workflow-style settings are configured: both AcceptanceTimeout and @@ -113,6 +118,9 @@ func (w *WorkflowConfig) SetFrom(f *WorkflowConfig) { if f.TxAcceptanceState != nil { w.TxAcceptanceState = f.TxAcceptanceState } + if f.RequestSizeLimit != nil { + w.RequestSizeLimit = f.RequestSizeLimit + } } type Chain struct { diff --git a/pkg/solana/config/docs.toml b/pkg/solana/config/docs.toml index f498c5f1b..c90ee4c38 100644 --- a/pkg/solana/config/docs.toml +++ b/pkg/solana/config/docs.toml @@ -119,6 +119,9 @@ Local = false # Default PollPeriod = '3s' # Default # TxAcceptanceState is the default acceptance state for writer DON tranmissions. TxAcceptanceState = 3 # Default +# RequestSizeLimit caps the size in bytes of HTTP responses from Solana RPC for requests originated +# by workflow capabilities (external requests). Set to 0 to disable the cap. +RequestSizeLimit = 0 # Default [[Nodes]] # Name is a unique (per-chain) identifier for this node. diff --git a/pkg/solana/config/mocks/config.go b/pkg/solana/config/mocks/config.go index bf08352b2..d7481190e 100644 --- a/pkg/solana/config/mocks/config.go +++ b/pkg/solana/config/mocks/config.go @@ -3,12 +3,11 @@ package mocks import ( - config "github.com/smartcontractkit/chainlink-solana/pkg/solana/config" - mock "github.com/stretchr/testify/mock" + time "time" rpc "github.com/gagliardetto/solana-go/rpc" - - time "time" + config "github.com/smartcontractkit/chainlink-solana/pkg/solana/config" + mock "github.com/stretchr/testify/mock" ) // Config is an autogenerated mock type for the Config type diff --git a/pkg/solana/config/testdata/config-full.toml b/pkg/solana/config/testdata/config-full.toml index 8fb251826..f622420b2 100644 --- a/pkg/solana/config/testdata/config-full.toml +++ b/pkg/solana/config/testdata/config-full.toml @@ -36,6 +36,7 @@ GasLimitDefault = 3000000 Local = true PollPeriod = '9s' TxAcceptanceState = 3 +RequestSizeLimit = 1048576 [MultiNode] Enabled = false diff --git a/pkg/solana/config/toml.go b/pkg/solana/config/toml.go index 65ca6ccd0..710fdd45d 100644 --- a/pkg/solana/config/toml.go +++ b/pkg/solana/config/toml.go @@ -323,6 +323,12 @@ func (wc *workflowConfig) TxAcceptanceState() *types.TransactionStatus { func (wc *workflowConfig) Local() bool { return *wc.conf.Local } +func (wc *workflowConfig) RequestSizeLimit() uint32 { + if wc.conf.RequestSizeLimit == nil { + return 0 + } + return *wc.conf.RequestSizeLimit +} func (c *TOMLConfig) BlockTime() time.Duration { return c.Chain.BlockTime.Duration() diff --git a/pkg/solana/config/toml_test.go b/pkg/solana/config/toml_test.go index 8ac49be42..b4ee92183 100644 --- a/pkg/solana/config/toml_test.go +++ b/pkg/solana/config/toml_test.go @@ -66,6 +66,7 @@ var fullConfig = TOMLConfig{ Local: ptr(true), PollPeriod: config.MustNewDuration(9 * time.Second), TxAcceptanceState: ptr(types.Finalized), + RequestSizeLimit: ptr[uint32](1048576), }, MultiNode: mnCfg.MultiNodeConfig{ MultiNode: mnCfg.MultiNode{ diff --git a/pkg/solana/logpoller/mocks/mock_filters.go b/pkg/solana/logpoller/mocks/mock_filters.go index cdd6f9b97..a52c8e772 100644 --- a/pkg/solana/logpoller/mocks/mock_filters.go +++ b/pkg/solana/logpoller/mocks/mock_filters.go @@ -8,9 +8,8 @@ import ( logger "github.com/smartcontractkit/chainlink-common/pkg/logger" - mock "github.com/stretchr/testify/mock" - types "github.com/smartcontractkit/chainlink-solana/pkg/solana/logpoller/types" + mock "github.com/stretchr/testify/mock" ) // MockFilters is an autogenerated mock type for the filtersI type diff --git a/pkg/solana/logpoller/mocks/mock_logs_loader.go b/pkg/solana/logpoller/mocks/mock_logs_loader.go index 6179f643c..14882c919 100644 --- a/pkg/solana/logpoller/mocks/mock_logs_loader.go +++ b/pkg/solana/logpoller/mocks/mock_logs_loader.go @@ -5,9 +5,8 @@ package mocks import ( context "context" - mock "github.com/stretchr/testify/mock" - types "github.com/smartcontractkit/chainlink-solana/pkg/solana/logpoller/types" + mock "github.com/stretchr/testify/mock" ) // MockLogsLoader is an autogenerated mock type for the logsLoader type diff --git a/pkg/solana/logpoller/mocks/mock_orm.go b/pkg/solana/logpoller/mocks/mock_orm.go index 3024d0028..f989858d5 100644 --- a/pkg/solana/logpoller/mocks/mock_orm.go +++ b/pkg/solana/logpoller/mocks/mock_orm.go @@ -5,11 +5,9 @@ package mocks import ( context "context" - mock "github.com/stretchr/testify/mock" - query "github.com/smartcontractkit/chainlink-common/pkg/types/query" - types "github.com/smartcontractkit/chainlink-solana/pkg/solana/logpoller/types" + mock "github.com/stretchr/testify/mock" ) // MockORM is an autogenerated mock type for the ORM type diff --git a/pkg/solana/logpoller/mocks/rpc_client.go b/pkg/solana/logpoller/mocks/rpc_client.go index d59e803d6..3e1189f0f 100644 --- a/pkg/solana/logpoller/mocks/rpc_client.go +++ b/pkg/solana/logpoller/mocks/rpc_client.go @@ -5,11 +5,9 @@ package mocks import ( context "context" - mock "github.com/stretchr/testify/mock" - - rpc "github.com/gagliardetto/solana-go/rpc" - solana "github.com/gagliardetto/solana-go" + rpc "github.com/gagliardetto/solana-go/rpc" + mock "github.com/stretchr/testify/mock" ) // RPCClient is an autogenerated mock type for the RPCClient type diff --git a/pkg/solana/logpoller/mocks/worker_group.go b/pkg/solana/logpoller/mocks/worker_group.go index bfe7dde31..cc51c2fdf 100644 --- a/pkg/solana/logpoller/mocks/worker_group.go +++ b/pkg/solana/logpoller/mocks/worker_group.go @@ -5,9 +5,8 @@ package mocks import ( context "context" - mock "github.com/stretchr/testify/mock" - worker "github.com/smartcontractkit/chainlink-solana/pkg/solana/logpoller/worker" + mock "github.com/stretchr/testify/mock" ) // WorkerGroup is an autogenerated mock type for the WorkerGroup type diff --git a/pkg/solana/mocks/chain.go b/pkg/solana/mocks/chain.go index d4af0b967..4a47d72e3 100644 --- a/pkg/solana/mocks/chain.go +++ b/pkg/solana/mocks/chain.go @@ -3,20 +3,15 @@ package mocks import ( + context "context" big "math/big" + types "github.com/smartcontractkit/chainlink-common/pkg/types" + solana "github.com/smartcontractkit/chainlink-solana/pkg/solana" client "github.com/smartcontractkit/chainlink-solana/pkg/solana/client" config "github.com/smartcontractkit/chainlink-solana/pkg/solana/config" - - context "context" - fees "github.com/smartcontractkit/chainlink-solana/pkg/solana/fees" - mock "github.com/stretchr/testify/mock" - - solana "github.com/smartcontractkit/chainlink-solana/pkg/solana" - - types "github.com/smartcontractkit/chainlink-common/pkg/types" ) // Chain is an autogenerated mock type for the Chain type diff --git a/pkg/solana/solana_service.go b/pkg/solana/solana_service.go index ba78e71a3..5721d6e5b 100644 --- a/pkg/solana/solana_service.go +++ b/pkg/solana/solana_service.go @@ -12,6 +12,7 @@ import ( "github.com/gagliardetto/solana-go/rpc" "github.com/google/uuid" + "github.com/smartcontractkit/chainlink-common/pkg/http" "github.com/smartcontractkit/chainlink-common/pkg/logger" commontypes "github.com/smartcontractkit/chainlink-common/pkg/types" commonsol "github.com/smartcontractkit/chainlink-common/pkg/types/chains/solana" @@ -50,9 +51,7 @@ func (ss *solanaService) GetBlock(ctx context.Context, req commonsol.GetBlockReq return nil, fmt.Errorf("failed to get reader: %w", err) } - result, err := reader.GetBlockWithOpts(ctx, req.Slot, &rpc.GetBlockOpts{ - Commitment: rpc.CommitmentType(req.Opts.Commitment), - }) + result, err := reader.GetBlockWithOpts(ctx, req.Slot, client.HeadMetadataGetBlockOpts(rpc.CommitmentType(req.Opts.Commitment))) if err != nil { return nil, fmt.Errorf("failed to get block: %w", err) } @@ -77,11 +76,14 @@ func (ss *solanaService) GetLatestLPBlock(ctx context.Context) (*commonsol.LPBlo } func (ss *solanaService) GetAccountInfoWithOpts(ctx context.Context, req commonsol.GetAccountInfoRequest) (*commonsol.GetAccountInfoReply, error) { + ctx = ss.wrapCtx(ctx, req.IsExternal) + reader, err := ss.chain.Reader() if err != nil { return nil, fmt.Errorf("failed to get reader: %w", err) } opts := convertAccountInfoOpts(req.Opts) + account, err := reader.GetAccountInfoWithOpts(ctx, solana.PublicKey(req.Account), opts) if err != nil { return nil, fmt.Errorf("failed to get account info: %w", err) @@ -107,6 +109,7 @@ func (ss *solanaService) GetBalance(ctx context.Context, req commonsol.GetBalanc } func (ss *solanaService) SimulateTX(ctx context.Context, req commonsol.SimulateTXRequest) (*commonsol.SimulateTXReply, error) { + ctx = ss.wrapCtx(ctx, req.IsExternal) tx, err := solana.TransactionFromBase64(req.EncodedTransaction) if err != nil { return nil, fmt.Errorf("failed to decode transaction: %w", err) @@ -459,6 +462,7 @@ func (ss *solanaService) getPublicKeyWithHighestLamports(ctx context.Context, r } func (ss *solanaService) GetMultipleAccountsWithOpts(ctx context.Context, req commonsol.GetMultipleAccountsRequest) (*commonsol.GetMultipleAccountsReply, error) { + ctx = ss.wrapCtx(ctx, req.IsExternal) r, err := ss.chain.Reader() if err != nil { return nil, fmt.Errorf("failed to get reader: %w", err) @@ -511,6 +515,7 @@ func (ss *solanaService) GetMultipleAccountsWithOpts(ctx context.Context, req co } func (ss *solanaService) GetTransaction(ctx context.Context, req commonsol.GetTransactionRequest) (*commonsol.GetTransactionReply, error) { + ctx = ss.wrapCtx(ctx, req.IsExternal) r, err := ss.chain.Reader() if err != nil { return nil, fmt.Errorf("failed to get reader: %w", err) @@ -550,6 +555,14 @@ func (ss *solanaService) GetFeeForMessage(ctx context.Context, req commonsol.Get }, nil } +func (ss *solanaService) wrapCtx(ctx context.Context, isExternal bool) context.Context { + if isExternal { + ctx = http.WithResponseSizeLimit(ctx, ss.chain.Config().WF().RequestSizeLimit()) + } + + return ctx +} + // converters func convertTransactionEnvelope(tx *rpc.GetTransactionResult) (*commonsol.TransactionResultEnvelope, error) { if tx == nil || tx.Transaction == nil { diff --git a/pkg/solana/solana_service_test.go b/pkg/solana/solana_service_test.go index 0066235bc..9d70211d2 100644 --- a/pkg/solana/solana_service_test.go +++ b/pkg/solana/solana_service_test.go @@ -386,6 +386,7 @@ func (w *stubWorkflow) ForwarderState() *solanago.PublicKey { retu func (w *stubWorkflow) GasLimitDefault() *uint64 { return nil } func (w *stubWorkflow) TxAcceptanceState() *commontypes.TransactionStatus { return nil } func (w *stubWorkflow) Local() bool { return false } +func (w *stubWorkflow) RequestSizeLimit() uint32 { return 0 } type stubTxManager struct { mock.Mock diff --git a/pkg/solana/txm/mocks/tx_manager.go b/pkg/solana/txm/mocks/tx_manager.go index 82a8eefaa..b0c8a47ab 100644 --- a/pkg/solana/txm/mocks/tx_manager.go +++ b/pkg/solana/txm/mocks/tx_manager.go @@ -9,7 +9,6 @@ import ( mock "github.com/stretchr/testify/mock" types "github.com/smartcontractkit/chainlink-common/pkg/types" - utils "github.com/smartcontractkit/chainlink-solana/pkg/solana/txm/utils" )