diff --git a/.github/workflows/aptos-release.yml b/.github/workflows/aptos-release.yml index 38a34eab..9c7f499d 100644 --- a/.github/workflows/aptos-release.yml +++ b/.github/workflows/aptos-release.yml @@ -33,7 +33,7 @@ jobs: build-push: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - environment: integration + environment: publish permissions: id-token: write contents: write @@ -44,9 +44,9 @@ jobs: id: setup-github-token uses: smartcontractkit/.github/actions/setup-github-token@ef78fa97bf3c77de6563db1175422703e9e6674f # setup-github-token@0.2.1 with: - aws-role-arn: ${{ secrets.AWS_ROLE_ARN_CII_RELEASE }} - aws-lambda-url: ${{ secrets.GATI_LAMBDA_FOUNDATIONS_URL }} - aws-region: ${{ secrets.QA_AWS_REGION }} + aws-role-arn: ${{ secrets.AWS_ROLE_ARN_GATI_CHANGESETS }} + aws-lambda-url: ${{ secrets.AWS_LAMBDA_URL_GATI }} + aws-region: ${{ secrets.AWS_REGION }} - name: Checkout this repository uses: actions/checkout@v4 diff --git a/.github/workflows/aptos-run-smoke-tests.yml b/.github/workflows/aptos-run-smoke-tests.yml index a14359e0..48c1e6da 100644 --- a/.github/workflows/aptos-run-smoke-tests.yml +++ b/.github/workflows/aptos-run-smoke-tests.yml @@ -43,8 +43,8 @@ jobs: path: temp/chainlink - name: Build chainlink image + working-directory: temp/chainlink run: | - cd temp/chainlink docker buildx build --build-arg COMMIT_SHA=$(git rev-parse HEAD) -t local_chainlink -f plugins/chainlink.Dockerfile . - name: Build chainlink-aptos image @@ -100,15 +100,6 @@ jobs: cd integration-tests TEST_LOG_LEVEL=${{env.TEST_LOG_LEVEL}} go test -timeout 24h -count=1 -run TestOCR3Keystone ./smoke - - name: Setup GitHub Token - if: success() - id: setup-github-token - uses: smartcontractkit/.github/actions/setup-github-token@ef78fa97bf3c77de6563db1175422703e9e6674f # setup-github-token@0.2.1 - with: - aws-role-arn: ${{ secrets.AWS_ROLE_ARN_GLOBAL_READ_ONLY }} - aws-lambda-url: ${{ secrets.GATI_LAMBDA_RELENG_URL }} - aws-region: ${{ secrets.QA_AWS_REGION }} - - name: Configure AWS Credentials if: success() uses: aws-actions/configure-aws-credentials@010d0da01d0b5a38af31e9c3470dbfdabdecca3a # v4.0.1 diff --git a/.github/workflows/ci-protobuf.yml b/.github/workflows/ci-protobuf.yml deleted file mode 100644 index 194134c4..00000000 --- a/.github/workflows/ci-protobuf.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: CI ProtoBuf - -on: - pull_request: - -jobs: - buf-breaking: - runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v4 - - - name: Setup buf - uses: bufbuild/buf-setup-action@35c243d7f2a909b1d4e40399b348a7fdab27d78d # v1.34.0 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - - - name: Run buf breaking - uses: bufbuild/buf-breaking-action@c57b3d842a5c3f3b454756ef65305a50a587c5ba # v1.1.4 - env: - REPO_URL: https://github.com/${{ github.repository }} - BASE_BRANCH: ${{ github.base_ref }} - with: - against: "${REPO_URL}.git#branch=${BASE_BRANCH}" diff --git a/.tool-versions b/.tool-versions index db5d8ee5..0ae8f296 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -golang 1.23.4 +golang 1.24.0 diff --git a/Dockerfile b/Dockerfile index 47ba39ea..fe15f86f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ARG BASE_IMAGE=chainlink:aptos # Build image: Plugins -FROM golang:1.23-bullseye as buildplugins +FROM golang:1.24-bullseye as buildplugins RUN go version WORKDIR /build diff --git a/go.mod b/go.mod index 52a42b4f..2ec51824 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/smartcontractkit/chainlink-aptos -go 1.24.0 +go 1.24.1 + +toolchain go1.24.2 replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 @@ -10,9 +12,8 @@ replace ( require ( github.com/aptos-labs/aptos-go-sdk v1.5.1-0.20250303230301-affcbec1c549 github.com/aptos-labs/tree-sitter-move-on-aptos v0.0.0-20250321090037-c820eb4716e1 - github.com/ethereum/go-ethereum v1.15.5 github.com/smacker/go-tree-sitter v0.0.0-20240827094217-dd81d9e9be82 - github.com/smartcontractkit/chainlink-aptos/relayer v0.0.0-20250320162700-de7f1c0fd741 + github.com/smartcontractkit/chainlink-aptos/relayer v0.0.0-20250403143412-88b756fc7cc0 github.com/stretchr/testify v1.10.0 github.com/valyala/fastjson v1.6.4 ) @@ -26,9 +27,12 @@ require ( github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.15.2 // indirect + github.com/cloudevents/sdk-go/v2 v2.16.0 // indirect github.com/coder/websocket v1.8.12 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/ethereum/go-ethereum v1.15.5 // indirect github.com/fatih/color v1.18.0 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect @@ -42,7 +46,7 @@ require ( github.com/goccy/go-json v0.10.5 // indirect github.com/gofrs/uuid v4.4.0+incompatible // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0 // indirect @@ -66,6 +70,7 @@ require ( github.com/jackc/pgx/v4 v4.18.3 // indirect github.com/jmoiron/sqlx v1.4.0 // indirect github.com/jpillora/backoff v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.18.0 // indirect github.com/klauspost/cpuid/v2 v2.2.9 // indirect github.com/leodido/go-urn v1.4.0 // indirect @@ -75,21 +80,23 @@ require ( github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/oklog/run v1.1.0 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect - github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.21.0 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/procfs v0.16.0 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/scylladb/go-reflectx v1.0.1 // indirect github.com/shopspring/decimal v1.4.0 // indirect - github.com/smartcontractkit/chainlink-common v0.4.2-0.20250227203031-2537a8c226bb // indirect + github.com/smartcontractkit/chainlink-common v0.6.1-0.20250407221007-b26aef17d389 // indirect + github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250407221638-9e71b8427efb // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect github.com/smartcontractkit/libocr v0.0.0-20250220133800-f3b940c4f298 // indirect github.com/spf13/pflag v1.0.6 // indirect @@ -97,35 +104,35 @@ require ( github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect - go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.10.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.10.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.34.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.10.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.34.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 // indirect go.opentelemetry.io/otel/log v0.10.0 // indirect - go.opentelemetry.io/otel/metric v1.34.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/sdk/log v0.10.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect - go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.33.0 // indirect + golang.org/x/crypto v0.36.0 // indirect golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa // indirect - golang.org/x/net v0.35.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sync v0.12.0 // indirect - golang.org/x/sys v0.30.0 // indirect - golang.org/x/text v0.22.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2 // indirect - google.golang.org/grpc v1.70.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/grpc v1.71.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 4f35a783..2100e56f 100644 --- a/go.sum +++ b/go.sum @@ -13,20 +13,12 @@ github.com/aptos-labs/aptos-go-sdk v1.5.1-0.20250303230301-affcbec1c549 h1:ll45H github.com/aptos-labs/aptos-go-sdk v1.5.1-0.20250303230301-affcbec1c549/go.mod h1:BgddSKFtfWFLK+no8l+AwCcb/Lh1lv74ybYLzeonloo= github.com/aptos-labs/tree-sitter-move-on-aptos v0.0.0-20250321090037-c820eb4716e1 h1:KD231JW9jSiu5m0J/w//3qJyGRdvrdabKAF+Fbwvzgo= github.com/aptos-labs/tree-sitter-move-on-aptos v0.0.0-20250321090037-c820eb4716e1/go.mod h1:+WZUlAOW0a0+7CrPgFVwmflo1LHH61uw4WSJtboIk48= -github.com/atombender/go-jsonschema v0.16.1-0.20240916205339-a74cd4e2851c h1:cxQVoh6kY+c4b0HUchHjGWBI8288VhH50qxKG3hdEg0= -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.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= -github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= -github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -35,6 +27,10 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.15.2 h1:FIvfKlS2mcuP0qYY6yzdIU9xdrRd/YMP0bNwFjXd0u8= +github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.15.2/go.mod h1:POsdVp/08Mki0WD9QvvgRRpg9CQ6zhjfRrBoEY8JFS8= +github.com/cloudevents/sdk-go/v2 v2.16.0 h1:wnunjgiLQCfYlyo+E4+mFlZtAh7pKn7vT8MMD3lSwCg= +github.com/cloudevents/sdk-go/v2 v2.16.0/go.mod h1:5YWqklyhDSmGzBK/JENKKXdulbPq0JFf3c/KEnMLqgg= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= @@ -61,10 +57,6 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/esote/minmaxheap v1.0.0 h1:rgA7StnXXpZG6qlM0S7pUmEv1KpWe32rYT4x8J8ntaA= -github.com/esote/minmaxheap v1.0.0/go.mod h1:Ln8+i7fS1k3PLgZI2JAo0iA1as95QnIYiGCrqSJ5FZk= -github.com/ethereum/c-kzg-4844 v1.0.3 h1:IEnbOHwjixW2cTvKRUlAAUOeleV7nNM/umJR+qy4WDs= -github.com/ethereum/c-kzg-4844 v1.0.3/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.15.5 h1:Fo2TbBWC61lWVkFw9tsMoHCNX1ndpuaQBRJ8H6xLUPo= github.com/ethereum/go-ethereum v1.15.5/go.mod h1:1LG2LnMOx2yPRHR/S+xuipXH29vPr6BIH6GElD8N/fo= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= @@ -125,8 +117,9 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -215,6 +208,8 @@ github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= @@ -261,6 +256,11 @@ github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJK github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 h1:BpfhmLKZf+SjVanKKhCgf3bg+511DmU9eDQTen7LLbY= github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +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/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -277,15 +277,15 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA= -github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/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.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= -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/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM= +github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= @@ -305,18 +305,10 @@ 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/smacker/go-tree-sitter v0.0.0-20240827094217-dd81d9e9be82 h1:6C8qej6f1bStuePVkLSFxoU22XBS165D3klxlzRg8F4= github.com/smacker/go-tree-sitter v0.0.0-20240827094217-dd81d9e9be82/go.mod h1:xe4pgH49k4SsmkQq5OT8abwhWmnzkhpgnXeekbx2efw= -github.com/smartcontractkit/ccip-owner-contracts v0.1.0 h1:GiBDtlx7539o7AKlDV+9LsA7vTMPv+0n7ClhSFnZFAk= -github.com/smartcontractkit/ccip-owner-contracts v0.1.0/go.mod h1:NnT6w4Kj42OFFXhSx99LvJZWPpMjmo4+CpDEWfw61xY= -github.com/smartcontractkit/chain-selectors v1.0.40 h1:iLvvoZeehVq6/7F+zzolQLF0DF25d3mh+vsYeZQiSCE= -github.com/smartcontractkit/chain-selectors v1.0.40/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= -github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= -github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20250228100837-59286981e9c1 h1:ggjeVNkHIuuwpQ+Tu2AutOa0Gnhi8Z2NzWZPjM3zblc= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20250228100837-59286981e9c1/go.mod h1:AhqYIeGF2k94J+/gzRx5dQttlgUdZid2N6E4HlHVIVA= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250226104101-11778f2ead98 h1:uHdawaiGBA3Xmju92tzbQ2SwsG2DDVJS5E+Jm5QnsQg= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250226104101-11778f2ead98/go.mod h1:Bmwq4lNb5tE47sydN0TKetcLEGbgl+VxHEWp4S0LI60= -github.com/smartcontractkit/chainlink-common v0.4.2-0.20250227203031-2537a8c226bb h1:y3yZ7DNYzqeJnub0e1LPj+e8lUUXTuS8vFKQWYfRbP8= -github.com/smartcontractkit/chainlink-common v0.4.2-0.20250227203031-2537a8c226bb/go.mod h1:YQuXIqQpmpAqstWV0LHaDTJ5nsSWuip5ivEM+Fisb+4= +github.com/smartcontractkit/chainlink-common v0.6.1-0.20250407221007-b26aef17d389 h1:XUGOj26ZAFjrBRa8iqItbgYav3oGCQDzDkObGDCGic0= +github.com/smartcontractkit/chainlink-common v0.6.1-0.20250407221007-b26aef17d389/go.mod h1:pptbsF6z90IGCewkCgDMBxNYjfSOyW9X9l2jzYyQgmk= +github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250407221638-9e71b8427efb h1:lCJpHLhsr/FWO2CuLpMI1YZf6VB6jXEkYzLVQpMOneo= +github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250407221638-9e71b8427efb/go.mod h1:7f4JDUioHe7EClstiEkEyy+kgQ+GtA/whpyS9Hb7OnY= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20250220133800-f3b940c4f298 h1:PKiqnVOTChlH4a4ljJKL3OKGRgYfIpJS4YD1daAIKks= @@ -341,40 +333,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/supranational/blst v0.3.14 h1:xNMoHRJOTwMn63ip6qoWJ2Ymgvj7E2b9jY2FAwY+qRo= -github.com/supranational/blst v0.3.14/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= -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/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/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= -github.com/tidwall/gjson v1.18.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.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= -github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= -github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= -github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY= -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= -github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= -github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/ulule/limiter/v3 v3.11.2 h1:P4yOrxoEMJbOTfRJR2OzjL90oflzYPPmWg+dvwN2tHA= -github.com/ulule/limiter/v3 v3.11.2/go.mod h1:QG5GnFOCV+k7lrL5Y8kgEeeflPH3+Cviqlqa8SVSQxI= -github.com/unrolled/secure v1.13.0 h1:sdr3Phw2+f8Px8HE5sd1EHdj1aV3yUwed/uZXChLFsk= -github.com/unrolled/secure v1.13.0/go.mod h1:BmF5hyM6tXczk3MpQkFf1hpKSRqCyhqcbiQtiAF7+40= -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.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= -github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= @@ -390,22 +350,22 @@ go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJyS go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= -go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= -go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.10.0 h1:5dTKu4I5Dn4P2hxyW3l3jTaZx9ACgg0ECos1eAVrheY= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.10.0/go.mod h1:P5HcUI8obLrCCmM3sbVBohZFH34iszk/+CPWuakZWL8= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.10.0 h1:q/heq5Zh8xV1+7GoMGJpTxM2Lhq5+bFxB29tshuRuw0= go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.10.0/go.mod h1:leO2CSTg0Y+LyvmR7Wm4pUxE8KAmaM2GCVx7O+RATLA= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.34.0 h1:ajl4QczuJVA2TU9W9AGw++86Xga/RKt//16z/yxPgdk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.34.0/go.mod h1:Vn3/rlOJ3ntf/Q3zAI0V5lDnTbHGaUsNUeF6nZmm7pA= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 h1:QcFwRrZLc82r8wODjvyCbP7Ifp3UANaBSmhDSFjnqSc= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0/go.mod h1:CXIWhUomyWBG/oY2/r/kLp6K/cmx9e/7DLpBuuGdLCA= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.34.0 h1:opwv08VbCZ8iecIWs+McMdHRcAXzjAeda3uG2kI/hcA= go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.34.0/go.mod h1:oOP3ABpW7vFHulLpE8aYtNBodrHhMTrvfxUXGvqm7Ac= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0 h1:BEj3SPM81McUZHYjRS5pEgNgnmzGJ5tRpU5krWnV8Bs= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.34.0/go.mod h1:9cKLGBDzI/F3NoHLQGm4ZrYdIHsvGt6ej6hUowxY0J4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.10.0 h1:GKCEAZLEpEf78cUvudQdTg0aET2ObOZRB2HtXA0qPAI= go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.10.0/go.mod h1:9/zqSWLCmHT/9Jo6fYeUDRRogOLL60ABLsHWS99lF8s= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.34.0 h1:czJDQwFrMbOr9Kk+BPo1y8WZIIFIK58SA1kykuVeiOU= @@ -414,16 +374,16 @@ go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 h1:jBpDk4HAUsrnVO1 go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0/go.mod h1:H9LUIM1daaeZaz91vZcfeM0fejXPmgCYE8ZhzqfJuiU= go.opentelemetry.io/otel/log v0.10.0 h1:1CXmspaRITvFcjA4kyVszuG4HjA61fPDxMb7q3BuyF0= go.opentelemetry.io/otel/log v0.10.0/go.mod h1:PbVdm9bXKku/gL0oFfUF4wwsQsOPlpo4VEqjvxih+FM= -go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= -go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= -go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= -go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= go.opentelemetry.io/otel/sdk/log v0.10.0 h1:lR4teQGWfeDVGoute6l0Ou+RpFqQ9vaPdrNJlST0bvw= go.opentelemetry.io/otel/sdk/log v0.10.0/go.mod h1:A+V1UTWREhWAittaQEG4bYm4gAZa6xnvVu+xKrIRkzo= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= -go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= -go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -455,8 +415,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa h1:t2QcU6V556bFjYgu4L6C+6VrCPyJZ+eyRsABUPs1mz4= golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk= @@ -470,8 +430,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.3.0/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.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= -golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= 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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -487,8 +447,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -527,8 +487,8 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= 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-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -545,8 +505,10 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= -golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -581,15 +543,15 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2 h1:35ZFtrCgaAjF7AFAK0+lRSf+4AyYnWRbH7og13p7rZ4= google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:W9ynFDP/shebLB1Hl/ESTOap2jHd6pmLXPNZC7SVDbA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2 h1:DMTIbak9GhdaSxEjvVzAeNZvyc03I61duqNbnm3SU0M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= -google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -601,8 +563,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index ad47ee86..8463eb7d 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -1,8 +1,6 @@ module integration-tests -go 1.23.3 - -toolchain go1.23.4 +go 1.24.0 require ( github.com/BurntSushi/toml v1.4.0 diff --git a/relayer/account/monitor_balance.go b/relayer/account/monitor_balance.go index d18ea664..200254ea 100644 --- a/relayer/account/monitor_balance.go +++ b/relayer/account/monitor_balance.go @@ -11,7 +11,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/types/core" rlclient "github.com/smartcontractkit/chainlink-aptos/relayer/client" - "github.com/smartcontractkit/chainlink-aptos/relayer/monitor" + "github.com/smartcontractkit/chainlink-evm/pkg/report/monitor" ) // BalanceMonitorOpts contains the options for creating a new Aptos account balance monitor. diff --git a/relayer/chain/chain.go b/relayer/chain/chain.go index e2295384..6e719fe2 100644 --- a/relayer/chain/chain.go +++ b/relayer/chain/chain.go @@ -23,8 +23,8 @@ import ( rlclient "github.com/smartcontractkit/chainlink-aptos/relayer/client" "github.com/smartcontractkit/chainlink-aptos/relayer/config" - "github.com/smartcontractkit/chainlink-aptos/relayer/monitor" "github.com/smartcontractkit/chainlink-aptos/relayer/txm" + "github.com/smartcontractkit/chainlink-evm/pkg/report/monitor" aptosacc "github.com/smartcontractkit/chainlink-aptos/relayer/account" ) @@ -295,6 +295,10 @@ func (c *chain) Transact(ctx context.Context, from, to string, amount *big.Int, return errors.ErrUnsupported } +func (c *chain) Replay(ctx context.Context, fromBlock string, args map[string]any) error { + return errors.ErrUnsupported +} + // TODO BCF-2602 statuses are static for non-evm chain and should be dynamic func (c *chain) listNodeStatuses(start, end int) ([]types.NodeStatus, int, error) { stats := make([]types.NodeStatus, 0) diff --git a/relayer/chainwriter/chainwriter.go b/relayer/chainwriter/chainwriter.go index 98021139..93456bd9 100644 --- a/relayer/chainwriter/chainwriter.go +++ b/relayer/chainwriter/chainwriter.go @@ -27,7 +27,7 @@ type aptosChainWriter struct { stop chan struct{} } -func NewChainWriter(lgr logger.Logger, fe *fees.FeeEstimator, txm *txm.AptosTxm, config ChainWriterConfig) commontypes.ChainWriter { +func NewChainWriter(lgr logger.Logger, fe *fees.FeeEstimator, txm *txm.AptosTxm, config ChainWriterConfig) commontypes.ContractWriter { return &aptosChainWriter{ logger: logger.Named(lgr, "AptosChainWriter"), txm: txm, diff --git a/relayer/chainwriter/chainwriter_local_test.go b/relayer/chainwriter/chainwriter_local_test.go index 13f0c477..716d3baa 100644 --- a/relayer/chainwriter/chainwriter_local_test.go +++ b/relayer/chainwriter/chainwriter_local_test.go @@ -244,7 +244,7 @@ func runChainWriterTest(t *testing.T, logger logger.Logger, rpcURL string, accou require.Equal(t, fmt.Sprintf("%d", expectedValue), valueStr) } -func waitForTransaction(t *testing.T, chainWriter commontypes.ChainWriter, id string, waitSecs int) { +func waitForTransaction(t *testing.T, chainWriter commontypes.ContractWriter, id string, waitSecs int) { for i := 1; i <= waitSecs; i++ { status, err := chainWriter.GetTransactionStatus(context.Background(), id) require.NoError(t, err) diff --git a/relayer/config/config.go b/relayer/config/config.go index 6f1d8ba4..7a2d8b9b 100644 --- a/relayer/config/config.go +++ b/relayer/config/config.go @@ -12,9 +12,9 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/config" - "github.com/smartcontractkit/chainlink-aptos/relayer/monitor" "github.com/smartcontractkit/chainlink-aptos/relayer/txm" - "github.com/smartcontractkit/chainlink-aptos/relayer/write_target" + "github.com/smartcontractkit/chainlink-evm/pkg/report/monitor" + "github.com/smartcontractkit/chainlink-evm/pkg/writetarget" ) // Name of the chain family (e.g., "ethereum", "solana", "aptos") @@ -25,13 +25,13 @@ var DefaultConfigSet = ConfigSet{ BalanceMonitor: monitor.Config{ BalancePollPeriod: *config.MustNewDuration(10 * time.Second), }, - WriteTargetCap: write_target.DefaultConfigSet, + WriteTargetCap: writetarget.DefaultConfigSet, } type ConfigSet struct { //nolint:revive TransactionManager txm.Config BalanceMonitor monitor.Config - WriteTargetCap write_target.Config + WriteTargetCap writetarget.Config } type WorkflowConfig struct { @@ -43,7 +43,7 @@ type WorkflowConfig struct { type Chain struct { TransactionManager *txm.Config BalanceMonitor *monitor.Config - WriteTargetCap *write_target.Config + WriteTargetCap *writetarget.Config Workflow WorkflowConfig } diff --git a/relayer/go.mod b/relayer/go.mod index d030472b..f7842c01 100644 --- a/relayer/go.mod +++ b/relayer/go.mod @@ -1,104 +1,126 @@ module github.com/smartcontractkit/chainlink-aptos/relayer -go 1.23.0 +go 1.24.1 -toolchain go1.23.4 +toolchain go1.24.2 require ( github.com/aptos-labs/aptos-go-sdk v1.5.1-0.20250303230301-affcbec1c549 - github.com/ethereum/go-ethereum v1.14.5 + github.com/ethereum/go-ethereum v1.15.7 github.com/google/uuid v1.6.0 github.com/hashicorp/go-plugin v1.6.2 - github.com/jpillora/backoff v1.0.0 - github.com/mitchellh/mapstructure v1.5.0 - github.com/pelletier/go-toml/v2 v2.2.0 - github.com/smartcontractkit/chainlink-common v0.3.1-0.20241210195010-36d99fa35f9f + github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 + github.com/pelletier/go-toml/v2 v2.2.3 + github.com/smartcontractkit/chainlink-common v0.6.1-0.20250410002405-f2ad6f09abb1 + github.com/smartcontractkit/chainlink-evm v0.0.0-20250410140807-2b6f782cd4c5 + github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250408161305-721208f43882 github.com/stretchr/testify v1.10.0 - go.opentelemetry.io/otel v1.30.0 - go.opentelemetry.io/otel/metric v1.30.0 - go.opentelemetry.io/otel/trace v1.30.0 - golang.org/x/crypto v0.32.0 - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 - google.golang.org/protobuf v1.34.2 + golang.org/x/crypto v0.36.0 + golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa ) -require github.com/stretchr/objx v0.5.2 // indirect +require ( + github.com/XSAM/otelsql v0.29.0 // indirect + github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.15.2 // indirect + github.com/cloudevents/sdk-go/v2 v2.16.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.8 // indirect + github.com/jackc/chunkreader/v2 v2.0.1 // indirect + github.com/jackc/pgconn v1.14.3 // indirect + github.com/jackc/pgio v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.3 // indirect + github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgtype v1.14.4 // indirect + github.com/jackc/pgx/v4 v4.18.3 // indirect + github.com/jmoiron/sqlx v1.4.0 // indirect + github.com/jpillora/backoff v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/lib/pq v1.10.9 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/scylladb/go-reflectx v1.0.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect +) require ( filippo.io/edwards25519 v1.1.0 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.3 // indirect - github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coder/websocket v1.8.12 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect - github.com/fatih/color v1.17.0 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/fxamacker/cbor/v2 v2.5.0 // indirect github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-playground/locales v0.13.0 // indirect - github.com/go-playground/universal-translator v0.17.0 // indirect - github.com/go-playground/validator/v10 v10.4.1 // indirect - github.com/go-viper/mapstructure/v2 v2.1.0 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.25.0 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.1.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/hasura/go-graphql-client v0.13.1 // indirect github.com/hdevalence/ed25519consensus v0.2.0 // indirect - github.com/holiman/uint256 v1.2.4 // indirect + github.com/holiman/uint256 v1.3.2 // indirect github.com/invopop/jsonschema v0.12.0 // indirect - github.com/leodido/go-urn v1.2.0 // indirect + github.com/leodido/go-urn v1.4.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/oklog/run v1.0.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.17.0 // indirect - github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect - github.com/prometheus/common v0.44.0 // indirect - github.com/prometheus/procfs v0.11.1 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/procfs v0.16.0 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.2.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect - github.com/smartcontractkit/libocr v0.0.0-20241007185508-adbe57025f12 // indirect + github.com/smartcontractkit/libocr v0.0.0-20250328171017-609ec10a5510 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240823153156-2a54df7bffb9 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.6.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.30.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.4.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.28.0 // indirect - go.opentelemetry.io/otel/log v0.6.0 // indirect - go.opentelemetry.io/otel/sdk v1.30.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.6.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.30.0 // indirect - go.opentelemetry.io/proto/otlp v1.3.1 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.10.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.10.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.34.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 // indirect + go.opentelemetry.io/otel/log v0.10.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.10.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect + go.opentelemetry.io/proto/otlp v1.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.38.0 // indirect golang.org/x/sync v0.12.0 - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.1 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 // indirect + google.golang.org/grpc v1.71.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/relayer/go.sum b/relayer/go.sum index 8b7e6e77..35e6f4d5 100644 --- a/relayer/go.sum +++ b/relayer/go.sum @@ -2,18 +2,21 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= +github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/XSAM/otelsql v0.29.0 h1:pEw9YXXs8ZrGRYfDc0cmArIz9lci5b42gmP5+tA1Huc= +github.com/XSAM/otelsql v0.29.0/go.mod h1:d3/0xGIGC5RVEE+Ld7KotwaLy6zDeaF3fLJHOPpdN2w= +github.com/apache/arrow-go/v18 v18.0.0 h1:1dBDaSbH3LtulTyOVYaBCHO3yVRwjV+TZaqn3g6V7ZM= +github.com/apache/arrow-go/v18 v18.0.0/go.mod h1:t6+cWRSmKgdQ6HsxisQjok+jBpKGhRDiqcf3p0p/F+A= github.com/aptos-labs/aptos-go-sdk v1.5.1-0.20250303230301-affcbec1c549 h1:ll45HJXlR3bAEAYzRRcM4IQcGw7V3v+KDb1Pbvk2tCo= github.com/aptos-labs/aptos-go-sdk v1.5.1-0.20250303230301-affcbec1c549/go.mod h1:BgddSKFtfWFLK+no8l+AwCcb/Lh1lv74ybYLzeonloo= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= -github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= -github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA= -github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -22,9 +25,18 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.15.2 h1:FIvfKlS2mcuP0qYY6yzdIU9xdrRd/YMP0bNwFjXd0u8= +github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.15.2/go.mod h1:POsdVp/08Mki0WD9QvvgRRpg9CQ6zhjfRrBoEY8JFS8= +github.com/cloudevents/sdk-go/v2 v2.16.0 h1:wnunjgiLQCfYlyo+E4+mFlZtAh7pKn7vT8MMD3lSwCg= +github.com/cloudevents/sdk-go/v2 v2.16.0/go.mod h1:5YWqklyhDSmGzBK/JENKKXdulbPq0JFf3c/KEnMLqgg= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/coder/websocket v1.8.12 h1:5bUXkEPPIbewrnkU8LTCLVaxi4N4J8ahufH2vlo4NAo= github.com/coder/websocket v1.8.12/go.mod h1:LNVeNrXQZfe5qhS9ALED3uA+l5pPqvwXg3CKoDBB2gs= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/cucumber/gherkin/go/v26 v26.2.0 h1:EgIjePLWiPeslwIWmNQ3XHcypPsWAHoMCz/YEBKP4GI= github.com/cucumber/gherkin/go/v26 v26.2.0/go.mod h1:t2GAPnB8maCT4lkHL99BDCVNzCh1d7dBhCLt150Nr/0= github.com/cucumber/godog v0.15.0 h1:51AL8lBXF3f0cyA5CV4TnJFCTHpgiy+1x1Hb3TtZUmo= @@ -43,30 +55,40 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= -github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= +github.com/ethereum/go-ethereum v1.15.7 h1:vm1XXruZVnqtODBgqFaTclzP0xAvCvQIDKyFNUA1JpY= +github.com/ethereum/go-ethereum v1.15.7/go.mod h1:+S9k+jFzlyVTNcYGvqFhzN/SFhI6vA+aOY4T5tLSPL0= 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= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM= +github.com/gabriel-vasile/mimetype v1.4.8/go.mod h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8= github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0 h1:ymLjT4f35nQbASLnvxEde4XOBL+Sn7rFuV+FOJqkljg= github.com/go-json-experiment/json v0.0.0-20231102232822-2e55bd4e08b0/go.mod h1:6daplAwHHGbUGib4990V3Il26O0OC4aRyvewaaAihaA= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-viper/mapstructure/v2 v2.1.0 h1:gHnMa2Y/pIxElCH2GlZZ1lZSsn6XMtufpGyP1XxdC/w= -github.com/go-viper/mapstructure/v2 v2.1.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.25.0 h1:5Dh7cjvzR7BRZadnsVOzPhWsrwUr0nmsZJxEAnFLNO8= +github.com/go-playground/validator/v10 v10.25.0/go.mod h1:GGzBIJMuE98Ic/kJsBXbz1x/7cByt++cQ+YOuDM5wus= +github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= +github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= github.com/gofrs/uuid v4.3.1+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -85,16 +107,20 @@ 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/google/flatbuffers v24.12.23+incompatible h1:ubBKR94NR4pXUCY/MUsRVzd9umNW7ht7EG9hHfS9FX8= +github.com/google/flatbuffers v24.12.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -102,8 +128,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS 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/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M= github.com/hashicorp/consul/sdk v0.16.0 h1:SE9m0W6DEfgIVCJX7xU+iv/hUl4m/nxqMTnCdMxDpJ8= github.com/hashicorp/consul/sdk v0.16.0/go.mod h1:7pxqqhqoaPqnBnzXD1StKed62LqJeClzVsUEy85Zr0A= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= @@ -122,172 +148,327 @@ github.com/hasura/go-graphql-client v0.13.1 h1:kKbjhxhpwz58usVl+Xvgah/TDha5K2akN github.com/hasura/go-graphql-client v0.13.1/go.mod h1:k7FF7h53C+hSNFRG3++DdVZWIuHdCaTbI7siTJ//zGQ= github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= +github.com/holiman/uint256 v1.3.2/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/invopop/jsonschema v0.12.0 h1:6ovsNSuvn9wEQVOyc72aycBMVQFKz7cPdMJn10CvzRI= github.com/invopop/jsonschema v0.12.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.14.3 h1:bVoTr12EGANZz66nZPkMInAV/KHD2TxH9npjXXgiB3w= +github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.3 h1:1HLSx5H+tXR9pW3in3zaztoEwQYRC9SQaYUHjTSUOag= +github.com/jackc/pgproto3/v2 v2.3.3/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgtype v1.14.4 h1:fKuNiCumbKTAIxQwXfB/nsrnkEI6bPJrrSiMKgbJ2j8= +github.com/jackc/pgtype v1.14.4/go.mod h1:aKeozOde08iifGosdJpz9MBZonJOUJxqNpPBcMJTlVA= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.18.2/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= +github.com/jackc/pgx/v4 v4.18.3 h1:dE2/TrEsGX3RBprb3qryqSV9Y60iZN1C6i8IrmW9/BA= +github.com/jackc/pgx/v4 v4.18.3/go.mod h1:Ey4Oru5tH5sB6tV7hDmfWFahwF15Eb7DNXlRKx2CkVw= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= 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/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= +github.com/jmoiron/sqlx v1.4.0/go.mod h1:ZrZ7UsYB/weZdl2Bxg6jCRO9c3YHl8r3ahlKmRT4JLY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= +github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/marcboeker/go-duckdb v1.8.3 h1:ZkYwiIZhbYsT6MmJsZ3UPTHrTZccDdM4ztoqSlEMXiQ= +github.com/marcboeker/go-duckdb v1.8.3/go.mod h1:C9bYRE1dPYb1hhfu/SSomm78B0FXmNgRvv6YBW/Hooc= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +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= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +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.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= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= +github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4 h1:BpfhmLKZf+SjVanKKhCgf3bg+511DmU9eDQTen7LLbY= +github.com/mitchellh/mapstructure v1.5.1-0.20220423185008-bf980b35cac4/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +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/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo= -github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= +github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 h1:v7DLqVdK4VrYkVD5diGdl4sxJurKJEMnODWRJlxV9oM= -github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= -github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +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.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/procfs v0.16.0 h1:xh6oHhKwnOJKMYiYBDWmkHqQPyiY40sny36Cmx2bbsM= +github.com/prometheus/procfs v0.16.0/go.mod h1:8veyXUu3nGP7oaCxhX6yeaM5u4stL2FeMXnCqhDthZg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/santhosh-tekuri/jsonschema/v5 v5.2.0 h1:WCcC4vZDS1tYNxjWlwRJZQy28r8CMoggKnxNzxsVDMQ= github.com/santhosh-tekuri/jsonschema/v5 v5.2.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/scylladb/go-reflectx v1.0.1 h1:b917wZM7189pZdlND9PbIJ6NQxfDPfBvUaQ7cjj1iZQ= +github.com/scylladb/go-reflectx v1.0.1/go.mod h1:rWnOfDIRWBGN0miMLIcoPt/Dhi2doCMZqwMCJ3KupFc= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/smartcontractkit/chainlink-common v0.3.1-0.20241210195010-36d99fa35f9f h1:RZ90dXrz+nQsM5+7Rz/+ZvUs9WgZj1ZqGuRxtsMwgV8= -github.com/smartcontractkit/chainlink-common v0.3.1-0.20241210195010-36d99fa35f9f/go.mod h1:ny87uTW6hLjCTLiBqBRNFEhETSXhHWevYlPclT5lSco= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartcontractkit/chainlink-common v0.6.1-0.20250410002405-f2ad6f09abb1 h1:7KpMt2AQ0CzYrNj/cnXoGwfNgUaLuq0Pw4NREYl/z1I= +github.com/smartcontractkit/chainlink-common v0.6.1-0.20250410002405-f2ad6f09abb1/go.mod h1:pptbsF6z90IGCewkCgDMBxNYjfSOyW9X9l2jzYyQgmk= +github.com/smartcontractkit/chainlink-evm v0.0.0-20250410012411-577291fb3438 h1:MRSQOS81YiT2GNbuuhvSedzAPjF/QHTmr0ohtlaJL3k= +github.com/smartcontractkit/chainlink-evm v0.0.0-20250410012411-577291fb3438/go.mod h1:8lZxhUXic+58IT/v4PTvbBVHSfr/Vrb+brcv6nwCiDQ= +github.com/smartcontractkit/chainlink-evm v0.0.0-20250410140807-2b6f782cd4c5 h1:OunNC3NhKxgA+fTfB6etw4fChI6oy2V+j30z+l6xVTQ= +github.com/smartcontractkit/chainlink-evm v0.0.0-20250410140807-2b6f782cd4c5/go.mod h1:8lZxhUXic+58IT/v4PTvbBVHSfr/Vrb+brcv6nwCiDQ= +github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250408161305-721208f43882 h1:teDwTZ0GXlxQ65lgVbB44ffbIHlEh4N8wW7zav4lt9c= +github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250408161305-721208f43882/go.mod h1:NVoJQoPYr6BorpaXTusoIH1IYTySCmanQ8Q1yv3mNh4= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= -github.com/smartcontractkit/libocr v0.0.0-20241007185508-adbe57025f12 h1:NzZGjaqez21I3DU7objl3xExTH4fxYvzTqar8DC6360= -github.com/smartcontractkit/libocr v0.0.0-20241007185508-adbe57025f12/go.mod h1:fb1ZDVXACvu4frX3APHZaEBp0xi1DIm34DcA0CwTsZM= +github.com/smartcontractkit/libocr v0.0.0-20250328171017-609ec10a5510 h1:gm8Jli0sdkrZYnrWBngAkPSDzFDkdNCy1/Dj86kVtYk= +github.com/smartcontractkit/libocr v0.0.0-20250328171017-609ec10a5510/go.mod h1:Mb7+/LC4edz7HyHxX4QkE42pSuov4AV68+AxBXAap0o= 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/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= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= 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/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0 h1:vS1Ao/R55RNV4O7TA2Qopok8yN+X0LIP6RVWLFkprck= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= -go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= -go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240823153156-2a54df7bffb9 h1:UiRNKd1OgqsLbFwE+wkAWTdiAxXtCBqKIHeBIse4FUA= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.0.0-20240823153156-2a54df7bffb9/go.mod h1:eqZlW3pJWhjyexnDPrdQxix1pn0wwhI4AO4GKpP/bMI= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.6.0 h1:QSKmLBzbFULSyHzOdO9JsN9lpE4zkrz1byYGmJecdVE= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.6.0/go.mod h1:sTQ/NH8Yrirf0sJ5rWqVu+oT82i4zL9FaF6rWcqnptM= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0 h1:U2guen0GhqH8o/G2un8f/aG/y++OuW6MyCo6hT9prXk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.28.0/go.mod h1:yeGZANgEcpdx/WK0IvvRFC+2oLiMS2u4L/0Rj2M2Qr0= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.30.0 h1:VrMAbeJz4gnVDg2zEzjHG4dEH86j4jO6VYB+NgtGD8s= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.30.0/go.mod h1:qqN/uFdpeitTvm+JDqqnjm517pmQRYxTORbETHq5tOc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 h1:lsInsfvhVIfOI6qHVyysXMNDnjO9Npvl7tlDPJFBVd4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0/go.mod h1:KQsVNh4OjgjTG0G6EiNi1jVpnaeeKsKMRwbLN+f1+8M= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0/go.mod h1:QWFXnDavXWwMx2EEcZsf3yxgEKAqsxQ+Syjp+seyInw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 h1:umZgi92IyxfXd/l4kaDhnKgY8rnN/cZcF1LKc6I8OQ8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0/go.mod h1:4lVs6obhSVRb1EW5FhOuBTyiQhtRtAnnva9vD3yRfq8= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.4.0 h1:0MH3f8lZrflbUWXVxyBg/zviDFdGE062uKh5+fu8Vv0= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.4.0/go.mod h1:Vh68vYiHY5mPdekTr0ox0sALsqjoVy0w3Os278yX5SQ= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.28.0 h1:BJee2iLkfRfl9lc7aFmBwkWxY/RI1RDdXepSF6y8TPE= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.28.0/go.mod h1:DIzlHs3DRscCIBU3Y9YSzPfScwnYnzfnCd4g8zA7bZc= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.28.0 h1:EVSnY9JbEEW92bEkIYOVMw4q1WJxIAGoFTrtYOzWuRQ= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.28.0/go.mod h1:Ea1N1QQryNXpCD0I1fdLibBAIpQuBkznMmkdKrapk1Y= -go.opentelemetry.io/otel/log v0.6.0 h1:nH66tr+dmEgW5y+F9LanGJUBYPrRgP4g2EkmPE3LeK8= -go.opentelemetry.io/otel/log v0.6.0/go.mod h1:KdySypjQHhP069JX0z/t26VHwa8vSwzgaKmXtIB3fJM= -go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= -go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= -go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= -go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= -go.opentelemetry.io/otel/sdk/log v0.6.0 h1:4J8BwXY4EeDE9Mowg+CyhWVBhTSLXVXodiXxS/+PGqI= -go.opentelemetry.io/otel/sdk/log v0.6.0/go.mod h1:L1DN8RMAduKkrwRAFDEX3E3TLOq46+XMGSbUfHU/+vE= -go.opentelemetry.io/otel/sdk/metric v1.30.0 h1:QJLT8Pe11jyHBHfSAgYH7kEmT24eX792jZO1bo4BXkM= -go.opentelemetry.io/otel/sdk/metric v1.30.0/go.mod h1:waS6P3YqFNzeP01kuo/MBBYqaoBJl7efRQHOaydhy1Y= -go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= -go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.10.0 h1:5dTKu4I5Dn4P2hxyW3l3jTaZx9ACgg0ECos1eAVrheY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.10.0/go.mod h1:P5HcUI8obLrCCmM3sbVBohZFH34iszk/+CPWuakZWL8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.10.0 h1:q/heq5Zh8xV1+7GoMGJpTxM2Lhq5+bFxB29tshuRuw0= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.10.0/go.mod h1:leO2CSTg0Y+LyvmR7Wm4pUxE8KAmaM2GCVx7O+RATLA= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0 h1:QcFwRrZLc82r8wODjvyCbP7Ifp3UANaBSmhDSFjnqSc= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.35.0/go.mod h1:CXIWhUomyWBG/oY2/r/kLp6K/cmx9e/7DLpBuuGdLCA= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.34.0 h1:opwv08VbCZ8iecIWs+McMdHRcAXzjAeda3uG2kI/hcA= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.34.0/go.mod h1:oOP3ABpW7vFHulLpE8aYtNBodrHhMTrvfxUXGvqm7Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.10.0 h1:GKCEAZLEpEf78cUvudQdTg0aET2ObOZRB2HtXA0qPAI= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.10.0/go.mod h1:9/zqSWLCmHT/9Jo6fYeUDRRogOLL60ABLsHWS99lF8s= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.34.0 h1:czJDQwFrMbOr9Kk+BPo1y8WZIIFIK58SA1kykuVeiOU= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.34.0/go.mod h1:lT7bmsxOe58Tq+JIOkTQMCGXdu47oA+VJKLZHbaBKbs= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0 h1:jBpDk4HAUsrnVO1FsfCfCOTEc/MkInJmvfCHYLFiT80= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.34.0/go.mod h1:H9LUIM1daaeZaz91vZcfeM0fejXPmgCYE8ZhzqfJuiU= +go.opentelemetry.io/otel/log v0.10.0 h1:1CXmspaRITvFcjA4kyVszuG4HjA61fPDxMb7q3BuyF0= +go.opentelemetry.io/otel/log v0.10.0/go.mod h1:PbVdm9bXKku/gL0oFfUF4wwsQsOPlpo4VEqjvxih+FM= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/sdk/log v0.10.0 h1:lR4teQGWfeDVGoute6l0Ou+RpFqQ9vaPdrNJlST0bvw= +go.opentelemetry.io/otel/sdk/log v0.10.0/go.mod h1:A+V1UTWREhWAittaQEG4bYm4gAZa6xnvVu+xKrIRkzo= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= +go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= 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/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.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +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.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa h1:t2QcU6V556bFjYgu4L6C+6VrCPyJZ+eyRsABUPs1mz4= +golang.org/x/exp v0.0.0-20250218142911-aa4b98e5adaa/go.mod h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/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.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= 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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -297,50 +478,81 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +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-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/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= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +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.30.0 h1:BgcpHewrV5AUp2G9MebG4XPFI1E2W41zU1SaqVA9vJY= +golang.org/x/tools v0.30.0/go.mod h1:c347cR/OJfw5TI+GfX7RUPNMdDRRbjvYTS0jPyvsVtY= +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= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2 h1:35ZFtrCgaAjF7AFAK0+lRSf+4AyYnWRbH7og13p7rZ4= +google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:W9ynFDP/shebLB1Hl/ESTOap2jHd6pmLXPNZC7SVDbA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463 h1:e0AIkUUhxyBKh6ssZNrAMeqhA7RKUj42346d1y02i2g= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250324211829-b45e905df463/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.66.1 h1:hO5qAXR19+/Z44hmvIM4dQFMSYX9XcWsByfoxutBpAM= -google.golang.org/grpc v1.66.1/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -352,15 +564,19 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= diff --git a/relayer/monitor/balance.go b/relayer/monitor/balance.go deleted file mode 100644 index 001f78fc..00000000 --- a/relayer/monitor/balance.go +++ /dev/null @@ -1,204 +0,0 @@ -package monitor - -import ( - "context" - "fmt" - "time" - - "github.com/smartcontractkit/chainlink-common/pkg/config" - "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/smartcontractkit/chainlink-common/pkg/services" - "github.com/smartcontractkit/chainlink-common/pkg/types/core" - "github.com/smartcontractkit/chainlink-common/pkg/utils" -) - -// TODO: duplicate of "github.com/smartcontractkit/chainlink-aptos/relayer/write_target.ChainInfo" (reuse) -// ChainInfo contains the chain information (used as execution context) -type ChainInfo struct { - ChainFamilyName string - ChainID string - NetworkName string - NetworkNameFull string -} - -// Config defines the balance monitor configuration. -type Config struct { - BalancePollPeriod config.Duration -} - -// BalanceClient defines the interface for getting account balances. -type BalanceClient interface { - GetAccountBalance(addr string) (float64, error) -} - -// BalanceMonitorOpts contains the options for creating a new balance monitor. -type BalanceMonitorOpts struct { - ChainInfo ChainInfo - ChainNativeCurrency string - - Config Config - Logger logger.Logger - Keystore core.Keystore - NewBalanceClient func() (BalanceClient, error) - - // Maps a public key to an account address (optional, can return key as is) - KeyToAccountMapper func(context.Context, string) (string, error) -} - -// TODO: This implementation is chain-agnotic, so it should be moved to the common package and reused by all chains. -// - Solana: /solana/pkg/solana/monitor -// - TRON: /tron/relayer/monitor -// -// NewBalanceMonitor returns a balance monitoring services.Service which reports the balance of all Keystore accounts. -func NewBalanceMonitor(opts BalanceMonitorOpts) (services.Service, error) { - return newBalanceMonitor(opts) -} - -func newBalanceMonitor(opts BalanceMonitorOpts) (*balanceMonitor, error) { - // Try to create a new gauge for account balance - gauge, err := NewGaugeAccBalance(opts.ChainNativeCurrency) - if err != nil { - return nil, fmt.Errorf("failed to create gauge: %w", err) - } - - lggr := logger.Named(opts.Logger, "BalanceMonitor") - return &balanceMonitor{ - cfg: opts.Config, - lggr: lggr, - ks: opts.Keystore, - - newReader: opts.NewBalanceClient, - keyToAccountMapper: opts.KeyToAccountMapper, - updateFn: func(ctx context.Context, acc string, balance float64) { - lggr.Infow("Account balance updated", "unit", opts.ChainNativeCurrency, "account", acc, "balance", balance) - gauge.Record(ctx, balance, acc, opts.ChainInfo) - }, - - stop: make(chan struct{}), - done: make(chan struct{}), - }, nil -} - -type balanceMonitor struct { - services.StateMachine - cfg Config - lggr logger.Logger - ks core.Keystore - - // Returns a new BalanceClient - newReader func() (BalanceClient, error) - // Maps a public key to an account address (optional, can return key as is) - keyToAccountMapper func(context.Context, string) (string, error) - // Updates the balance metric - updateFn func(ctx context.Context, acc string, balance float64) // overridable for testing - - // Cached instance, intermitently reset to nil. - reader BalanceClient - - stop services.StopChan - done chan struct{} -} - -func (m *balanceMonitor) Name() string { - return m.lggr.Name() -} - -func (m *balanceMonitor) Start(context.Context) error { - return m.StartOnce(m.Name(), func() error { - go m.start() - return nil - }) -} - -func (m *balanceMonitor) Close() error { - return m.StopOnce(m.Name(), func() error { - close(m.stop) - <-m.done - return nil - }) -} - -func (m *balanceMonitor) HealthReport() map[string]error { - return map[string]error{m.Name(): m.Healthy()} -} - -// monitor fn continously updates balances, until stop signal is received. -func (m *balanceMonitor) start() { - defer close(m.done) - ctx, cancel := m.stop.NewCtx() - defer cancel() - - period := m.cfg.BalancePollPeriod.Duration() - tick := time.After(utils.WithJitter(period)) - for { - select { - case <-m.stop: - return - case <-tick: - m.updateBalances(ctx) - tick = time.After(utils.WithJitter(period)) - } - } -} - -// getReader returns the stored BalanceClient, creating a new one if necessary. -func (m *balanceMonitor) getReader() (BalanceClient, error) { - if m.reader == nil { - var err error - m.reader, err = m.newReader() - if err != nil { - return nil, err - } - } - return m.reader, nil -} - -// updateBalances updates the balances of all accounts in the keystore, using the provided BalanceClient and the updateFn. -func (m *balanceMonitor) updateBalances(ctx context.Context) { - m.lggr.Debug("Updating account balances") - keys, err := m.ks.Accounts(ctx) - if err != nil { - m.lggr.Errorw("Failed to get keys", "err", err) - return - } - if len(keys) == 0 { - return - } - reader, err := m.getReader() - if err != nil { - m.lggr.Errorw("Failed to get client", "err", err) - return - } - - var gotSomeBals bool - for _, pk := range keys { - // Check for shutdown signal, since Balance blocks and may be slow. - select { - case <-m.stop: - return - default: - } - - // Account address can always be derived from the public key currently - // TODO: if we need to support key rotation, the keystore should store the address explicitly - // Notice: this is chain-specific key to account mapping injected (e.g., relevant for Aptos key management) - accAddr, err := m.keyToAccountMapper(ctx, pk) - if err != nil { - m.lggr.Errorw("Failed to convert public key to account address", "err", err) - continue - } - - balance, err := reader.GetAccountBalance(accAddr) - if err != nil { - m.lggr.Errorw("Failed to get balance", "account", accAddr, "err", err) - continue - } - gotSomeBals = true - m.updateFn(ctx, accAddr, balance) - } - - // Try a new client next time. // TODO: This is for multinode - if !gotSomeBals { - m.reader = nil - } -} diff --git a/relayer/monitor/beholder.go b/relayer/monitor/beholder.go deleted file mode 100644 index a79ec9f8..00000000 --- a/relayer/monitor/beholder.go +++ /dev/null @@ -1,97 +0,0 @@ -package monitor - -import ( - "context" - - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/proto" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" - "github.com/smartcontractkit/chainlink-common/pkg/logger" -) - -const ( - // Helper keys to avoid duplicating attributes - CtxKeySkipAppendAttrs = "skip_append_attrs" -) - -// BeholderClient is a Beholder client extension with a custom ProtoEmitter -type BeholderClient struct { - *beholder.Client - ProtoEmitter ProtoEmitter -} - -// ProtoEmitter is an interface for emitting protobuf messages -// TODO: this should be moved to chainlink-common -type ProtoEmitter interface { - // Sends message with bytes and attributes to OTel Collector - Emit(ctx context.Context, m proto.Message, attrKVs ...any) error - EmitWithLog(ctx context.Context, m proto.Message, attrKVs ...any) error -} - -// ProtoProcessor is an interface for processing emitted protobuf messages -type ProtoProcessor interface { - Process(ctx context.Context, m proto.Message, attrKVs ...any) error -} - -func NewProtoEmitter(lggr logger.Logger, client *beholder.Client, schemaBasePath string) ProtoEmitter { - return &protoEmitter{lggr, client, schemaBasePath} -} - -// protoEmitter is a ProtoEmitter implementation -var _ ProtoEmitter = (*protoEmitter)(nil) - -type protoEmitter struct { - lggr logger.Logger - client *beholder.Client - schemaBasePath string -} - -func (e *protoEmitter) Emit(ctx context.Context, m proto.Message, attrKVs ...any) error { - payload, err := proto.Marshal(m) - if err != nil { - // Notice: we log here because emit errors are usually not critical and swallowed by the caller - e.lggr.Errorw("[Beholder] Failed to marshal", "err", err) - return err - } - - // Skip appending attributes if the context says it's already done that - if skip, ok := ctx.Value(CtxKeySkipAppendAttrs).(bool); !ok || !skip { - attrKVs = e.appendAttrsRequired(ctx, m, attrKVs) - } - - // Emit the message with attributes - err = e.client.Emitter.Emit(ctx, payload, attrKVs...) - if err != nil { - // Notice: we log here because emit errors are usually not critical and swallowed by the caller - e.lggr.Errorw("[Beholder] Failed to client.Emitter.Emit", "err", err) - return err - } - - return nil -} - -// EmitWithLog emits a protobuf message with attributes and logs the emitted message -func (e *protoEmitter) EmitWithLog(ctx context.Context, m proto.Message, attrKVs ...any) error { - attrKVs = e.appendAttrsRequired(ctx, m, attrKVs) - // attach a bool switch to ctx to avoid duplicating common attrs - ctx = context.WithValue(ctx, CtxKeySkipAppendAttrs, true) - - // Marshal the message as JSON and log before emitting - // https://protobuf.dev/programming-guides/json/ - mStr := protojson.MarshalOptions{ - UseProtoNames: true, - EmitUnpopulated: true, - }.Format(m) - e.lggr.Infow("[Beholder.emit]", "message", mStr, "attributes", attrKVs) - - return e.Emit(ctx, m, attrKVs...) -} - -// appendAttrsRequired appends required attributes to the attribute key-value list -func (e *protoEmitter) appendAttrsRequired(ctx context.Context, m proto.Message, attrKVs []any) []any { - attrKVs = appendRequiredAttrDataSchema(m, attrKVs, e.schemaBasePath) - attrKVs = appendRequiredAttrEntity(m, attrKVs) - attrKVs = appendRequiredAttrDomain(m, attrKVs) - return attrKVs -} diff --git a/relayer/monitor/metrics.go b/relayer/monitor/metrics.go deleted file mode 100644 index 40314cee..00000000 --- a/relayer/monitor/metrics.go +++ /dev/null @@ -1,48 +0,0 @@ -package monitor - -import ( - "context" - "fmt" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/metric/utils" -) - -// Define a new gauge metric for account balance -type GaugeAccBalance struct { - // account_balance - gauge metric.Float64Gauge -} - -func NewGaugeAccBalance(unitStr string) (*GaugeAccBalance, error) { - name := "account_balance" - description := "Balance for configured WT account" - gauge, err := beholder.GetMeter().Float64Gauge(name, metric.WithUnit(unitStr), metric.WithDescription(description)) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge %s: %+w", name, err) - } - return &GaugeAccBalance{gauge}, nil -} - -func (g *GaugeAccBalance) Record(ctx context.Context, balance float64, account string, chainInfo ChainInfo) { - oAttrs := metric.WithAttributeSet(g.GetAttributes(account, chainInfo)) - g.gauge.Record(ctx, balance, oAttrs) -} - -func (g *GaugeAccBalance) GetAttributes(account string, chainInfo ChainInfo) attribute.Set { - return attribute.NewSet( - attribute.String("account", account), - - // Execution Context - Source - attribute.String("source_id", utils.ValOrUnknown(account)), // reusing account as source_id - // Execution Context - Chain - attribute.String("chain_family_name", utils.ValOrUnknown(chainInfo.ChainFamilyName)), - attribute.String("chain_id", utils.ValOrUnknown(chainInfo.ChainID)), - attribute.String("network_name", utils.ValOrUnknown(chainInfo.NetworkName)), - attribute.String("network_name_full", utils.ValOrUnknown(chainInfo.NetworkNameFull)), - ) -} diff --git a/relayer/monitor/schema.go b/relayer/monitor/schema.go deleted file mode 100644 index 0428ef6b..00000000 --- a/relayer/monitor/schema.go +++ /dev/null @@ -1,116 +0,0 @@ -package monitor - -import ( - "fmt" - "path" - "regexp" - "strings" - - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/runtime/protoimpl" -) - -const ( - AttrKeyBeholderDataSchema = "beholder_data_schema" - AttrKeyBeholderEntity = "beholder_entity" - AttrKeyBeholderDomain = "beholder_domain" -) - -// patternSnake is a regular expression to match CamelCase words -// Notice: we use the Unicode property 'Lu' (uppercase letter) to match -// the first letter of the word, and 'P{Lu}' (not uppercase letter) to match -// the rest of the word. -var patternSnake = regexp.MustCompile("(\\p{Lu}+\\P{Lu}*)") - -// toSnakeCase converts a CamelCase to snake_case (used for type -> file name mapping) -func toSnakeCase(s string) string { - s = patternSnake.ReplaceAllString(s, "_${1}") - s, _ = strings.CutPrefix(strings.ToLower(s), "_") - return s -} - -// toSchemaName returns a protobuf message name (short) -func toSchemaName(m proto.Message) string { - return string(protoimpl.X.MessageTypeOf(m).Descriptor().Name()) -} - -// toSchemaName returns a protobuf message name (full) -func toSchemaFullName(m proto.Message) string { - return string(protoimpl.X.MessageTypeOf(m).Descriptor().FullName()) -} - -// toSchemaPath maps a protobuf message to a Beholder schema path -func toSchemaPath(m proto.Message, basePath string) string { - // Notice: a name like 'platform.on_chain.forwarder.ReportProcessed' - protoName := toSchemaFullName(m) - - // We map to a Beholder schema path like '/platform/on-chain/forwarder/report_processed.proto' - protoPath := protoName - protoPath = strings.ReplaceAll(protoPath, ".", "/") - protoPath = strings.ReplaceAll(protoPath, "_", "-") - - // Split the path components (at least one component) - pp := strings.Split(protoPath, "/") - len := len(pp) - pp[len-1] = toSnakeCase(pp[len-1]) - - // Join the path components again - protoPath = strings.Join(pp, "/") - protoPath = fmt.Sprintf("%s.proto", protoPath) - - // Return the full schema path - return path.Join(basePath, protoPath) -} - -// appendRequiredAttrDataSchema adds the message schema path as an attribute (required) -func appendRequiredAttrDataSchema(m proto.Message, attrKVs []any, basePath string) []any { - key := AttrKeyBeholderDataSchema - for i := 0; i < len(attrKVs); i += 2 { - if attrKVs[i] == key { - return attrKVs - } - } - - attrKVs = append(attrKVs, key) - // Needs to be an URI (Beholder requirement) - val := toSchemaPath(m, basePath) - attrKVs = append(attrKVs, val) - return attrKVs -} - -// appendRequiredAttrEntity adds the message entity type as an attribute (required) -func appendRequiredAttrEntity(m proto.Message, attrKVs []any) []any { - key := AttrKeyBeholderEntity - for i := 0; i < len(attrKVs); i += 2 { - if attrKVs[i] == key { - return attrKVs - } - } - - attrKVs = append(attrKVs, key) - attrKVs = append(attrKVs, toSchemaName(m)) - return attrKVs -} - -// appendRequiredAttrDomain adds the message domain as an attribute (required) -func appendRequiredAttrDomain(m proto.Message, attrKVs []any) []any { - key := AttrKeyBeholderDomain - for i := 0; i < len(attrKVs); i += 2 { - if attrKVs[i] == key { - return attrKVs - } - } - - // Notice: a name like 'platform.on_chain.forwarder.ReportProcessed' - protoName := toSchemaFullName(m) - - // Extract first path component (entrypoint package) as a domain - domain := "unknown" - if strings.Contains(protoName, ".") { - domain = strings.Split(protoName, ".")[0] - } - - attrKVs = append(attrKVs, key) - attrKVs = append(attrKVs, domain) - return attrKVs -} diff --git a/relayer/monitor/schema_test.go b/relayer/monitor/schema_test.go deleted file mode 100644 index df346041..00000000 --- a/relayer/monitor/schema_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package monitor - -import ( - "testing" - - "github.com/stretchr/testify/assert" - "google.golang.org/protobuf/proto" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/data-feeds/on-chain/registry" - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/on-chain/forwarder" - wt "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" -) - -func TestToSchemaPath(t *testing.T) { - tests := []struct { - input proto.Message - expected string - }{ - { - input: &wt.WriteInitiated{}, - expected: "//platform/write-target/write_initiated.proto", - }, - { - input: &wt.WriteError{}, - expected: "//platform/write-target/write_error.proto", - }, - { - input: &wt.WriteSent{}, - expected: "//platform/write-target/write_sent.proto", - }, - { - input: &wt.WriteConfirmed{}, - expected: "//platform/write-target/write_confirmed.proto", - }, - { - input: &forwarder.ReportProcessed{}, - expected: "//platform/on-chain/forwarder/report_processed.proto", - }, - { - input: ®istry.FeedUpdated{}, - expected: "//data-feeds/on-chain/registry/feed_updated.proto", - }, - } - - for _, tt := range tests { - t.Run(tt.expected, func(t *testing.T) { - result := toSchemaPath(tt.input, "/") - assert.Equal(t, tt.expected, result) - }) - } -} diff --git a/relayer/monitoring/metric/utils/common.go b/relayer/monitoring/metric/utils/common.go deleted file mode 100644 index 5feec73e..00000000 --- a/relayer/monitoring/metric/utils/common.go +++ /dev/null @@ -1,98 +0,0 @@ -package utils - -import ( - "context" - "fmt" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" -) - -// MetricInfo is a struct for metrics information -type MetricsInfoCapBasic struct { - // common - count MetricInfo - capTimestampStart MetricInfo - capTimestampEmit MetricInfo - capDuration MetricInfo // ts.emit - ts.start -} - -// NewMetricsInfoCapBasic creates a new MetricsInfoCapBasic using the provided event/metric information -func NewMetricsInfoCapBasic(metricPrefix, eventRef string) MetricsInfoCapBasic { - return MetricsInfoCapBasic{ - count: MetricInfo{ - Name: fmt.Sprintf("%s_count", metricPrefix), - Unit: "", - Description: fmt.Sprintf("The count of message: '%s' emitted", eventRef), - }, - capTimestampStart: MetricInfo{ - Name: fmt.Sprintf("%s_cap_timestamp_start", metricPrefix), - Unit: "ms", - Description: fmt.Sprintf("The timestamp (local) at capability exec start that resulted in message: '%s' emit", eventRef), - }, - capTimestampEmit: MetricInfo{ - Name: fmt.Sprintf("%s_cap_timestamp_emit", metricPrefix), - Unit: "ms", - Description: fmt.Sprintf("The timestamp (local) at message: '%s' emit", eventRef), - }, - capDuration: MetricInfo{ - Name: fmt.Sprintf("%s_cap_duration", metricPrefix), - Unit: "ms", - Description: fmt.Sprintf("The duration (local) since capability exec start to message: '%s' emit", eventRef), - }, - } -} - -// MetricsCapBasic is a base struct for metrics related to a capability -type MetricsCapBasic struct { - count metric.Int64Counter - capTimestampStart metric.Int64Gauge - capTimestampEmit metric.Int64Gauge - capDuration metric.Int64Gauge // ts.emit - ts.start -} - -// NewMetricsCapBasic creates a new MetricsCapBasic using the provided MetricsInfoCapBasic -func NewMetricsCapBasic(info MetricsInfoCapBasic) (MetricsCapBasic, error) { - meter := beholder.GetMeter() - set := MetricsCapBasic{} - - // Create new metrics - var err error - - set.count, err = info.count.NewInt64Counter(meter) - if err != nil { - return set, fmt.Errorf("failed to create new counter: %w", err) - } - - set.capTimestampStart, err = info.capTimestampStart.NewInt64Gauge(meter) - if err != nil { - return set, fmt.Errorf("failed to create new gauge: %w", err) - } - - set.capTimestampEmit, err = info.capTimestampEmit.NewInt64Gauge(meter) - if err != nil { - return set, fmt.Errorf("failed to create new gauge: %w", err) - } - - set.capDuration, err = info.capDuration.NewInt64Gauge(meter) - if err != nil { - return set, fmt.Errorf("failed to create new gauge: %w", err) - } - - return set, nil -} - -func (m *MetricsCapBasic) RecordEmit(ctx context.Context, start, emit uint64, attrKVs ...attribute.KeyValue) { - // Define attributes - attrs := metric.WithAttributes(attrKVs...) - - // Count events - m.count.Add(ctx, 1, attrs) - - // Timestamp events - m.capTimestampStart.Record(ctx, int64(start), attrs) - m.capTimestampEmit.Record(ctx, int64(emit), attrs) - m.capDuration.Record(ctx, int64(emit-start), attrs) -} diff --git a/relayer/monitoring/metric/utils/info.go b/relayer/monitoring/metric/utils/info.go deleted file mode 100644 index a314cc4e..00000000 --- a/relayer/monitoring/metric/utils/info.go +++ /dev/null @@ -1,39 +0,0 @@ -package utils - -import ( - "go.opentelemetry.io/otel/metric" -) - -// Define a new struct for metrics information -type MetricInfo struct { - Name string - Unit string - Description string -} - -// NewInt64Counter creates a new Int64Counter metric -func (m MetricInfo) NewInt64Counter(meter metric.Meter) (metric.Int64Counter, error) { - return meter.Int64Counter( - m.Name, - metric.WithUnit(m.Unit), - metric.WithDescription(m.Description), - ) -} - -// NewInt64Gauge creates a new Int64Gauge metric -func (m MetricInfo) NewInt64Gauge(meter metric.Meter) (metric.Int64Gauge, error) { - return meter.Int64Gauge( - m.Name, - metric.WithUnit(m.Unit), - metric.WithDescription(m.Description), - ) -} - -// NewFloat64Gauge creates a new Float64Gauge metric -func (m MetricInfo) NewFloat64Gauge(meter metric.Meter) (metric.Float64Gauge, error) { - return meter.Float64Gauge( - m.Name, - metric.WithUnit(m.Unit), - metric.WithDescription(m.Description), - ) -} diff --git a/relayer/monitoring/metric/utils/metadata.go b/relayer/monitoring/metric/utils/metadata.go deleted file mode 100644 index 8f891da5..00000000 --- a/relayer/monitoring/metric/utils/metadata.go +++ /dev/null @@ -1,98 +0,0 @@ -package utils - -import ( - "encoding/hex" - - "go.opentelemetry.io/otel/attribute" -) - -const ( - // WorkflowExecutionIDShortLen is the length of the short version of the WorkflowExecutionId (label) - WorkflowExecutionIDShortLen = 3 // first 3 characters, 16^3 = 4.096 possibilities (mid-high cardinality) -) - -// TODO: Refactor as a proto referenced from the other proto files (telemetry messages) -type ExecutionMetadata struct { - // Execution Context - Source - SourceId string - // Execution Context - Chain - ChainFamilyName string - ChainId string - NetworkName string - NetworkNameFull string - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId string - WorkflowOwner string - WorkflowExecutionId string - WorkflowName string - WorkflowDonId uint32 - WorkflowDonConfigVersion uint32 - ReferenceId string - // Execution Context - Capability - CapabilityType string - CapabilityId string - CapabilityTimestampStart uint32 - CapabilityTimestampEmit uint32 -} - -// Attributes returns common attributes used for metrics -func (m ExecutionMetadata) Attributes() []attribute.KeyValue { - // Decode workflow name attribute for output - workflowName := m.decodeWorkflowName() - - return []attribute.KeyValue{ - // Execution Context - Source - attribute.String("source_id", ValOrUnknown(m.SourceId)), - // Execution Context - Chain - attribute.String("chain_family_name", ValOrUnknown(m.ChainFamilyName)), - attribute.String("chain_id", ValOrUnknown(m.ChainId)), - attribute.String("network_name", ValOrUnknown(m.NetworkName)), - attribute.String("network_name_full", ValOrUnknown(m.NetworkNameFull)), - // Execution Context - Workflow (capabilities.RequestMetadata) - attribute.String("workflow_id", ValOrUnknown(m.WorkflowId)), - attribute.String("workflow_owner", ValOrUnknown(m.WorkflowOwner)), - // Notice: We lower the cardinality on the WorkflowExecutionId so it can be used by metrics - // This label has good chances to be unique per workflow, in a reasonable bounded time window - // TODO: enable this when sufficiently tested (PromQL queries like alerts might need to change if this is used) - // attribute.String("workflow_execution_id_short", ValShortOrUnknown(m.WorkflowExecutionId, WorkflowExecutionIDShortLen)), - attribute.String("workflow_name", ValOrUnknown(workflowName)), - attribute.Int64("workflow_don_id", int64(m.WorkflowDonId)), - attribute.Int64("workflow_don_config_version", int64(m.WorkflowDonConfigVersion)), - attribute.String("reference_id", ValOrUnknown(m.ReferenceId)), - // Execution Context - Capability - attribute.String("capability_type", ValOrUnknown(m.CapabilityType)), - attribute.String("capability_id", ValOrUnknown(m.CapabilityId)), - // Notice: we don't include the timestamps here (high cardinality) - } -} - -// decodeWorkflowName decodes the workflow name from hex string to raw string (underlying, output) -func (m ExecutionMetadata) decodeWorkflowName() string { - bytes, err := hex.DecodeString(m.WorkflowName) - if err != nil { - // This should never happen - bytes = []byte("unknown-decode-error") - } - return string(bytes) -} - -// This is needed to avoid issues during exporting OTel metrics to Prometheus -// For more details see https://smartcontract-it.atlassian.net/browse/INFOPLAT-1349 -// ValOrUnknown returns the value if it is not empty, otherwise it returns "unknown" -func ValOrUnknown(val string) string { - if val == "" { - return "unknown" - } - return val -} - -// ValShortOrUnknown returns the short len value if not empty or available, otherwise it returns "unknown" -func ValShortOrUnknown(val string, _len int) string { - if val == "" || _len <= 0 { - return "unknown" - } - if _len > len(val) { - return val - } - return val[:_len] -} diff --git a/relayer/monitoring/pb/data-feeds/on-chain/registry/decode.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/decode.go index dd30e260..a37dd107 100644 --- a/relayer/monitoring/pb/data-feeds/on-chain/registry/decode.go +++ b/relayer/monitoring/pb/data-feeds/on-chain/registry/decode.go @@ -1,23 +1,20 @@ -package registry +package regsitry import ( "fmt" - "math" - "math/big" - wt_msg "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" + "github.com/smartcontractkit/chainlink-evm/pkg/report/datafeeds" + "github.com/smartcontractkit/chainlink-evm/pkg/report/pb/data-feeds/on-chain/registry" + wt_msg "github.com/smartcontractkit/chainlink-evm/pkg/report/pb/platform" - "github.com/smartcontractkit/chainlink-aptos/relayer/report/data_feeds" - "github.com/smartcontractkit/chainlink-aptos/relayer/report/platform" + "github.com/smartcontractkit/chainlink-evm/pkg/report/platform" - mercury_vX "github.com/smartcontractkit/chainlink-aptos/relayer/report/mercury/common" - mercury_v3 "github.com/smartcontractkit/chainlink-aptos/relayer/report/mercury/v3" - mercury_v4 "github.com/smartcontractkit/chainlink-aptos/relayer/report/mercury/v4" + mercury_vX "github.com/smartcontractkit/chainlink-evm/pkg/report/mercury/common" + mercury_v3 "github.com/smartcontractkit/chainlink-evm/pkg/report/mercury/v3" + mercury_v4 "github.com/smartcontractkit/chainlink-evm/pkg/report/mercury/v4" ) -// DecodeAsFeedUpdated decodes a 'platform.write-target.WriteConfirmed' message -// as a 'data-feeds.registry.ReportProcessed' message -func DecodeAsFeedUpdated(m *wt_msg.WriteConfirmed) ([]*FeedUpdated, error) { +func DecodeAsFeedUpdated(m *wt_msg.WriteConfirmed) ([]*registry.FeedUpdated, error) { // Decode the confirmed report (WT -> DF contract event) r, err := platform.Decode(m.Report) if err != nil { @@ -25,31 +22,25 @@ func DecodeAsFeedUpdated(m *wt_msg.WriteConfirmed) ([]*FeedUpdated, error) { } // Decode the underlying Data Feeds reports - reports, err := data_feeds.Decode(r.Data) + reports, err := Decode(r.Data) if err != nil { return nil, fmt.Errorf("failed to decode Data Feeds report: %w", err) } // Allocate space for the messages (event per updated feed) - msgs := make([]*FeedUpdated, 0, len(*reports)) + msgs := make([]*registry.FeedUpdated, 0, len(*reports)) // Iterate over the underlying Mercury reports for _, rf := range *reports { - // Notice: we assume that Mercury will be the only source of reports used for Data Feeds, - // at least for the foreseeable future. If this assumption changes, we should check the - // the report type here (potentially encoded in the feed ID) and decode accordingly. - - // Decode the common Mercury report - rm, err := mercury_vX.Decode(rf.Data) + // Decode the common Mercury report and get report type + rmCommon, err := mercury_vX.Decode(rf.Data) if err != nil { return nil, fmt.Errorf("failed to decode Mercury report: %w", err) } - // Parse the report type - t := mercury_vX.GetReportType(rm.FeedId) - - // Notice: we publish the DataFeed FeedID, not the unrelying DataStream FeedID - feedID := data_feeds.FeedID(rf.FeedId) + // Parse the report type from the common header + t := mercury_vX.GetReportType(rmCommon.FeedID) + feedID := datafeeds.FeedID(rf.FeedID) switch t { case uint16(3): @@ -57,99 +48,15 @@ func DecodeAsFeedUpdated(m *wt_msg.WriteConfirmed) ([]*FeedUpdated, error) { if err != nil { return nil, fmt.Errorf("failed to decode Mercury v%d report: %w", t, err) } - - msgs = append(msgs, &FeedUpdated{ - // Event data - FeedId: feedID.String(), - ObservationsTimestamp: rm.ObservationsTimestamp, - Benchmark: rm.BenchmarkPrice.Bytes(), // Map big.Int as []byte - Report: rf.Data, - - // Notice: i192 will not fit if scaled number bigger than f64 - BenchmarkVal: toBenchmarkVal(feedID, rm.BenchmarkPrice), - - // Head data - when was the event produced on-chain - BlockHash: m.BlockHash, - BlockHeight: m.BlockHeight, - BlockTimestamp: m.BlockTimestamp, - - // Transaction data - info about the tx that mained the event (optional) - // Notice: we skip SOME head/tx data here (unknown), as we map from 'platform.write-target.WriteConfirmed' - // and not from tx/event data (e.g., 'platform.write-target.WriteTxConfirmed') - TxSender: m.Transmitter, - TxReceiver: m.Forwarder, - - // Execution Context - Source - MetaSourceId: m.MetaSourceId, - - // Execution Context - Chain - MetaChainFamilyName: m.MetaChainFamilyName, - MetaChainId: m.MetaChainId, - MetaNetworkName: m.MetaNetworkName, - MetaNetworkNameFull: m.MetaNetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: m.MetaWorkflowId, - MetaWorkflowOwner: m.MetaWorkflowOwner, - MetaWorkflowExecutionId: m.MetaWorkflowExecutionId, - MetaWorkflowName: m.MetaWorkflowName, - MetaWorkflowDonId: m.MetaWorkflowDonId, - MetaWorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - MetaReferenceId: m.MetaReferenceId, - - // Execution Context - Capability - MetaCapabilityType: m.MetaCapabilityType, - MetaCapabilityId: m.MetaCapabilityId, - MetaCapabilityTimestampStart: m.MetaCapabilityTimestampStart, - MetaCapabilityTimestampEmit: m.MetaCapabilityTimestampEmit, - }) + // For Mercury v3, include TxSender and TxReceiver + msgs = append(msgs, registry.NewFeedUpdated(m, feedID, rm.ObservationsTimestamp, rm.BenchmarkPrice, rf.Data, true)) case uint16(4): rm, err := mercury_v4.Decode(rf.Data) if err != nil { return nil, fmt.Errorf("failed to decode Mercury v%d report: %w", t, err) } - - msgs = append(msgs, &FeedUpdated{ - // Event data - FeedId: feedID.String(), - ObservationsTimestamp: rm.ObservationsTimestamp, - Benchmark: rm.BenchmarkPrice.Bytes(), // Map big.Int as []byte - Report: rf.Data, - - // Notice: i192 will not fit if scaled number bigger than f64 - BenchmarkVal: toBenchmarkVal(feedID, rm.BenchmarkPrice), - - // Notice: we skip head/tx data here (unknown), as we map from 'platform.write-target.WriteConfirmed' - // and not from tx/event data (e.g., 'platform.write-target.WriteTxConfirmed') - - BlockHash: m.BlockHash, - BlockHeight: m.BlockHeight, - BlockTimestamp: m.BlockTimestamp, - - // Execution Context - Source - MetaSourceId: m.MetaSourceId, - - // Execution Context - Chain - MetaChainFamilyName: m.MetaChainFamilyName, - MetaChainId: m.MetaChainId, - MetaNetworkName: m.MetaNetworkName, - MetaNetworkNameFull: m.MetaNetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: m.MetaWorkflowId, - MetaWorkflowOwner: m.MetaWorkflowOwner, - MetaWorkflowExecutionId: m.MetaWorkflowExecutionId, - MetaWorkflowName: m.MetaWorkflowName, - MetaWorkflowDonId: m.MetaWorkflowDonId, - MetaWorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - MetaReferenceId: m.MetaReferenceId, - - // Execution Context - Capability - MetaCapabilityType: m.MetaCapabilityType, - MetaCapabilityId: m.MetaCapabilityId, - MetaCapabilityTimestampStart: m.MetaCapabilityTimestampStart, - MetaCapabilityTimestampEmit: m.MetaCapabilityTimestampEmit, - }) + // For Mercury v4, skip TxSender and TxReceiver (if not applicable) + msgs = append(msgs, registry.NewFeedUpdated(m, feedID, rm.ObservationsTimestamp, rm.BenchmarkPrice, rf.Data, false)) default: return nil, fmt.Errorf("unsupported Mercury report type: %d", t) } @@ -157,39 +64,3 @@ func DecodeAsFeedUpdated(m *wt_msg.WriteConfirmed) ([]*FeedUpdated, error) { return msgs, nil } - -// toBenchmarkVal returns the benchmark i192 on-chain value decoded as an double (float64), scaled by number of decimals (e.g., 1e-18) -// Where the number of decimals is extracted from the feed ID. -// -// This is the largest type Prometheus supports, and this conversion can overflow but so far was sufficient -// for most use-cases. For big numbers, benchmark bytes should be used instead. -// -// Returns `math.NaN()` if report data type not a number, or `+/-Inf` if number doesn't fit in double. -func toBenchmarkVal(feedID data_feeds.FeedID, val *big.Int) float64 { - // Return NaN if the value is nil - if val == nil { - return math.NaN() - } - - // Get the number of decimals from the feed ID - t := feedID.GetDataType() - decimals, isNumber := data_feeds.GetDecimals(t) - - // Return NaN if the value is not a number - if !isNumber { - return math.NaN() - } - - // Convert the i192 to a big Float, scaled by the number of decimals - valF := new(big.Float).SetInt(val) - - if decimals > 0 { - denominator := big.NewFloat(math.Pow10(int(decimals))) - valF = new(big.Float).Quo(valF, denominator) - } - - // Notice: this can overflow, but so far was sufficient for most use-cases - // On overflow, returns +/-Inf (valid Prometheus value) - valRes, _ := valF.Float64() - return valRes -} diff --git a/relayer/monitoring/pb/data-feeds/on-chain/registry/decode_test.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/decode_test.go index f103131b..1b731039 100644 --- a/relayer/monitoring/pb/data-feeds/on-chain/registry/decode_test.go +++ b/relayer/monitoring/pb/data-feeds/on-chain/registry/decode_test.go @@ -1,4 +1,5 @@ -package registry +//nolint:govet, testifylint // disable govet, testifylint +package regsitry import ( "encoding/base64" @@ -8,8 +9,9 @@ import ( "github.com/stretchr/testify/require" - wt_msg "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" - "github.com/smartcontractkit/chainlink-aptos/relayer/report/data_feeds" + "github.com/smartcontractkit/chainlink-evm/pkg/report/datafeeds" + "github.com/smartcontractkit/chainlink-evm/pkg/report/pb/data-feeds/on-chain/registry" + wt_msg "github.com/smartcontractkit/chainlink-evm/pkg/report/pb/platform" ) func TestDecodeAsReportProcessed(t *testing.T) { @@ -25,7 +27,7 @@ func TestDecodeAsReportProcessed(t *testing.T) { tests := []struct { name string input wt_msg.WriteConfirmed - expected []FeedUpdated + expected []registry.FeedUpdated wantErr bool }{ { @@ -50,7 +52,7 @@ func TestDecodeAsReportProcessed(t *testing.T) { BlockHeight: "17", BlockTimestamp: 0x66f5bf69, }, - expected: []FeedUpdated{ + expected: []registry.FeedUpdated{ { FeedId: "0x0003111111111111111100000000000000000000000000000000000000000000", ObservationsTimestamp: 0x66f5bf69, @@ -101,7 +103,7 @@ func TestDecodeAsReportProcessed(t *testing.T) { Transmitter: "example-transmitter", Success: true, }, - expected: []FeedUpdated{}, + expected: []registry.FeedUpdated{}, wantErr: true, }, // Add more test cases as needed @@ -220,12 +222,12 @@ func TestToBenchmarkVal(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - feedID, err := data_feeds.NewFeedIDFromHex(tt.feedID) + feedID, err := datafeeds.NewFeedIDFromHex(tt.feedID) require.NoError(t, err) - decimals, isNumber := data_feeds.GetDecimals(feedID.GetDataType()) + decimals, isNumber := datafeeds.GetDecimals(feedID.GetDataType()) - result := toBenchmarkVal(feedID, tt.val) + result := registry.toBenchmarkVal(feedID, tt.val) if math.IsNaN(tt.expected) { require.False(t, isNumber) require.True(t, math.IsNaN(result)) diff --git a/relayer/monitoring/pb/data-feeds/on-chain/registry/feed_updated.pb.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/feed_updated.pb.go deleted file mode 100644 index c8faf1f9..00000000 --- a/relayer/monitoring/pb/data-feeds/on-chain/registry/feed_updated.pb.go +++ /dev/null @@ -1,459 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: feed_updated.proto - -package registry - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// The on-chain FeedUpdated event which is extracted from the tx/event data or -// the write-target WriteConfirmed event, after a write was confirmed (@see message: write-target.WriteConfirmed). -type FeedUpdated struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Event data - FeedId string `protobuf:"bytes,1,opt,name=feed_id,json=feedId,proto3" json:"feed_id,omitempty"` // bytes as hex string for readability - ObservationsTimestamp uint32 `protobuf:"varint,2,opt,name=observations_timestamp,json=observationsTimestamp,proto3" json:"observations_timestamp,omitempty"` - Benchmark []byte `protobuf:"bytes,3,opt,name=benchmark,proto3" json:"benchmark,omitempty"` - Report []byte `protobuf:"bytes,4,opt,name=report,proto3" json:"report,omitempty"` - // Notice: benchmark_val is the benchmark i192 on-chain value decoded as an double (float64), scaled by number of decimals (e.g., 1e-18) - // This is the largest type Prometheus supports, and this conversion can overflow but so far was sufficient - // for most use-cases. For big numbers, benchmark bytes should be used instead. - // - // Set as `math.NaN()` if report data type not a number, or `+/-Inf` if number doesn't fit in double. - BenchmarkVal float64 `protobuf:"fixed64,5,opt,name=benchmark_val,json=benchmarkVal,proto3" json:"benchmark_val,omitempty"` - // Head data - when was the event produced on-chain - BlockHash string `protobuf:"bytes,6,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockHeight string `protobuf:"bytes,7,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` - BlockTimestamp uint64 `protobuf:"varint,8,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` - // Transaction data - info about the tx that mained the event (optional) - TxId string `protobuf:"bytes,10,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // TXM ref - TxHash string `protobuf:"bytes,11,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - TxSender string `protobuf:"bytes,12,opt,name=tx_sender,json=txSender,proto3" json:"tx_sender,omitempty"` - TxReceiver string `protobuf:"bytes,13,opt,name=tx_receiver,json=txReceiver,proto3" json:"tx_receiver,omitempty"` - TxStatus string `protobuf:"bytes,14,opt,name=tx_status,json=txStatus,proto3" json:"tx_status,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *FeedUpdated) Reset() { - *x = FeedUpdated{} - if protoimpl.UnsafeEnabled { - mi := &file_feed_updated_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FeedUpdated) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FeedUpdated) ProtoMessage() {} - -func (x *FeedUpdated) ProtoReflect() protoreflect.Message { - mi := &file_feed_updated_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FeedUpdated.ProtoReflect.Descriptor instead. -func (*FeedUpdated) Descriptor() ([]byte, []int) { - return file_feed_updated_proto_rawDescGZIP(), []int{0} -} - -func (x *FeedUpdated) GetFeedId() string { - if x != nil { - return x.FeedId - } - return "" -} - -func (x *FeedUpdated) GetObservationsTimestamp() uint32 { - if x != nil { - return x.ObservationsTimestamp - } - return 0 -} - -func (x *FeedUpdated) GetBenchmark() []byte { - if x != nil { - return x.Benchmark - } - return nil -} - -func (x *FeedUpdated) GetReport() []byte { - if x != nil { - return x.Report - } - return nil -} - -func (x *FeedUpdated) GetBenchmarkVal() float64 { - if x != nil { - return x.BenchmarkVal - } - return 0 -} - -func (x *FeedUpdated) GetBlockHash() string { - if x != nil { - return x.BlockHash - } - return "" -} - -func (x *FeedUpdated) GetBlockHeight() string { - if x != nil { - return x.BlockHeight - } - return "" -} - -func (x *FeedUpdated) GetBlockTimestamp() uint64 { - if x != nil { - return x.BlockTimestamp - } - return 0 -} - -func (x *FeedUpdated) GetTxId() string { - if x != nil { - return x.TxId - } - return "" -} - -func (x *FeedUpdated) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *FeedUpdated) GetTxSender() string { - if x != nil { - return x.TxSender - } - return "" -} - -func (x *FeedUpdated) GetTxReceiver() string { - if x != nil { - return x.TxReceiver - } - return "" -} - -func (x *FeedUpdated) GetTxStatus() string { - if x != nil { - return x.TxStatus - } - return "" -} - -func (x *FeedUpdated) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *FeedUpdated) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *FeedUpdated) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *FeedUpdated) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *FeedUpdated) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *FeedUpdated) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *FeedUpdated) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *FeedUpdated) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *FeedUpdated) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *FeedUpdated) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *FeedUpdated) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *FeedUpdated) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *FeedUpdated) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *FeedUpdated) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *FeedUpdated) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *FeedUpdated) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_feed_updated_proto protoreflect.FileDescriptor - -var file_feed_updated_proto_rawDesc = []byte{ - 0x0a, 0x12, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x73, - 0x2e, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x79, 0x22, 0xe2, 0x09, 0x0a, 0x0b, 0x46, 0x65, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x65, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x65, 0x65, 0x64, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x16, 0x6f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, - 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x65, 0x6e, 0x63, - 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x0c, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x56, 0x61, 0x6c, 0x12, 0x1d, 0x0a, - 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x17, 0x0a, - 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x73, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x53, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x78, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, - 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, - 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, - 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, - 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, - 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x77, 0x6e, - 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x17, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1d, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, - 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, - 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x22, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, - 0x65, 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, 0x65, 0x74, 0x61, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x45, 0x6d, 0x69, 0x74, 0x42, 0x0c, 0x5a, 0x0a, 0x2e, 0x3b, 0x72, 0x65, 0x67, - 0x69, 0x73, 0x74, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_feed_updated_proto_rawDescOnce sync.Once - file_feed_updated_proto_rawDescData = file_feed_updated_proto_rawDesc -) - -func file_feed_updated_proto_rawDescGZIP() []byte { - file_feed_updated_proto_rawDescOnce.Do(func() { - file_feed_updated_proto_rawDescData = protoimpl.X.CompressGZIP(file_feed_updated_proto_rawDescData) - }) - return file_feed_updated_proto_rawDescData -} - -var file_feed_updated_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_feed_updated_proto_goTypes = []any{ - (*FeedUpdated)(nil), // 0: data_feeds.on_chain.registry.FeedUpdated -} -var file_feed_updated_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_feed_updated_proto_init() } -func file_feed_updated_proto_init() { - if File_feed_updated_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_feed_updated_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*FeedUpdated); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_feed_updated_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_feed_updated_proto_goTypes, - DependencyIndexes: file_feed_updated_proto_depIdxs, - MessageInfos: file_feed_updated_proto_msgTypes, - }.Build() - File_feed_updated_proto = out.File - file_feed_updated_proto_rawDesc = nil - file_feed_updated_proto_goTypes = nil - file_feed_updated_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/data-feeds/on-chain/registry/feed_updated.proto b/relayer/monitoring/pb/data-feeds/on-chain/registry/feed_updated.proto deleted file mode 100644 index dfc65241..00000000 --- a/relayer/monitoring/pb/data-feeds/on-chain/registry/feed_updated.proto +++ /dev/null @@ -1,59 +0,0 @@ -syntax="proto3"; - -package data_feeds.on_chain.registry; -option go_package = ".;registry"; - -// The on-chain FeedUpdated event which is extracted from the tx/event data or -// the write-target WriteConfirmed event, after a write was confirmed (@see message: write-target.WriteConfirmed). -message FeedUpdated { - // Event data - string feed_id = 1; // bytes as hex string for readability - uint32 observations_timestamp = 2; - bytes benchmark = 3; - bytes report = 4; - - // Notice: benchmark_val is the benchmark i192 on-chain value decoded as an double (float64), scaled by number of decimals (e.g., 1e-18) - // This is the largest type Prometheus supports, and this conversion can overflow but so far was sufficient - // for most use-cases. For big numbers, benchmark bytes should be used instead. - // - // Set as `math.NaN()` if report data type not a number, or `+/-Inf` if number doesn't fit in double. - double benchmark_val = 5; - - // Head data - when was the event produced on-chain - string block_hash = 6; - string block_height = 7; - uint64 block_timestamp = 8; - - // Transaction data - info about the tx that mained the event (optional) - string tx_id = 10; // TXM ref - string tx_hash = 11; - string tx_sender = 12; - string tx_receiver = 13; - string tx_status = 14; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/data-feeds/on-chain/registry/generate.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/generate.go deleted file mode 100644 index 66516bd8..00000000 --- a/relayer/monitoring/pb/data-feeds/on-chain/registry/generate.go +++ /dev/null @@ -1,3 +0,0 @@ -package registry - -//go:generate protoc -I=. --go_out=. ./feed_updated.proto diff --git a/relayer/monitoring/pb/data-feeds/on-chain/registry/metrics.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/metrics.go deleted file mode 100644 index 93183048..00000000 --- a/relayer/monitoring/pb/data-feeds/on-chain/registry/metrics.go +++ /dev/null @@ -1,187 +0,0 @@ -package registry - -import ( - "context" - "fmt" - "strconv" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/metric/utils" -) - -// ns returns a namespaced metric name -func ns(name string) string { - return fmt.Sprintf("data_feeds_on_chain_registry_%s", name) -} - -// Define metrics configuration -var ( - feedUpdated = struct { - basic utils.MetricsInfoCapBasic - // specific to FeedUpdated - observationsTimestamp utils.MetricInfo - duration utils.MetricInfo // ts.emit - ts.observation - benchmark utils.MetricInfo - blockTimestamp utils.MetricInfo - blockNumber utils.MetricInfo - }{ - basic: utils.NewMetricsInfoCapBasic(ns("feed_updated"), "data-feeds.on-chain.registry.FeedUpdated"), - observationsTimestamp: utils.MetricInfo{ - Name: ns("feed_updated_observations_timestamp"), - Unit: "ms", - Description: "The observations timestamp for the latest confirmed update (as reported)", - }, - duration: utils.MetricInfo{ - Name: ns("feed_updated_duration"), - Unit: "ms", - Description: "The duration (local) since observation to message: 'data-feeds.on-chain.registry.FeedUpdated' emit", - }, - benchmark: utils.MetricInfo{ - Name: ns("feed_updated_benchmark"), - Unit: "", - Description: "The benchmark value for the latest confirmed update (as reported)", - }, - blockTimestamp: utils.MetricInfo{ - Name: ns("feed_updated_block_timestamp"), - Unit: "ms", - Description: "The block timestamp at the latest confirmed update (as observed)", - }, - blockNumber: utils.MetricInfo{ - Name: ns("feed_updated_block_number"), - Unit: "", - Description: "The block number at the latest confirmed update (as observed)", - }, - } -) - -// Define a new struct for metrics -type Metrics struct { - // Define on FeedUpdated metrics - feedUpdated struct { - basic utils.MetricsCapBasic - // specific to FeedUpdated - observationsTimestamp metric.Int64Gauge - duration metric.Int64Gauge // ts.emit - ts.observation - benchmark metric.Float64Gauge - blockTimestamp metric.Int64Gauge - blockNumber metric.Int64Gauge - } -} - -func NewMetrics() (*Metrics, error) { - // Define new metrics - m := &Metrics{} - - meter := beholder.GetMeter() - - // Create new metrics - var err error - - m.feedUpdated.basic, err = utils.NewMetricsCapBasic(feedUpdated.basic) - if err != nil { - return nil, fmt.Errorf("failed to create new basic metrics: %w", err) - } - - m.feedUpdated.observationsTimestamp, err = feedUpdated.observationsTimestamp.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.feedUpdated.duration, err = feedUpdated.duration.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.feedUpdated.benchmark, err = feedUpdated.benchmark.NewFloat64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.feedUpdated.blockTimestamp, err = feedUpdated.blockTimestamp.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.feedUpdated.blockNumber, err = feedUpdated.blockNumber.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - return m, nil -} - -func (m *Metrics) OnFeedUpdated(ctx context.Context, msg *FeedUpdated, attrKVs ...any) error { - // Define attributes - attrs := metric.WithAttributes(msg.Attributes()...) - - // Emit basic metrics (count, timestamps) - start, emit := msg.MetaCapabilityTimestampStart, msg.MetaCapabilityTimestampEmit - m.feedUpdated.basic.RecordEmit(ctx, start, emit, msg.Attributes()...) - - // Timestamp e2e observation update - m.feedUpdated.observationsTimestamp.Record(ctx, int64(msg.ObservationsTimestamp), attrs) - observation := uint64(msg.ObservationsTimestamp) * 1000 // convert to milliseconds - m.feedUpdated.duration.Record(ctx, int64(emit-observation), attrs) - - // Benchmark - m.feedUpdated.benchmark.Record(ctx, msg.BenchmarkVal, attrs) - - // Block timestamp - m.feedUpdated.blockTimestamp.Record(ctx, int64(msg.BlockTimestamp), attrs) - - // Block number - blockHeightVal, err := strconv.ParseInt(msg.BlockHeight, 10, 64) - if err != nil { - return fmt.Errorf("failed to parse block height: %w", err) - } - m.feedUpdated.blockNumber.Record(ctx, blockHeightVal, attrs) - - return nil -} - -// Attributes returns the attributes for the FeedUpdated message to be used in metrics -func (m *FeedUpdated) Attributes() []attribute.KeyValue { - context := utils.ExecutionMetadata{ - // Execution Context - Source - SourceId: m.MetaSourceId, - // Execution Context - Chain - ChainFamilyName: m.MetaChainFamilyName, - ChainId: m.MetaChainId, - NetworkName: m.MetaNetworkName, - NetworkNameFull: m.MetaNetworkNameFull, - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId: m.MetaWorkflowId, - WorkflowOwner: m.MetaWorkflowOwner, - WorkflowExecutionId: m.MetaWorkflowExecutionId, - WorkflowName: m.MetaWorkflowName, - WorkflowDonId: m.MetaWorkflowDonId, - WorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - ReferenceId: m.MetaReferenceId, - // Execution Context - Capability - CapabilityType: m.MetaCapabilityType, - CapabilityId: m.MetaCapabilityId, - } - - attrs := []attribute.KeyValue{ - // Transaction Data - attribute.String("tx_sender", m.TxSender), - attribute.String("tx_receiver", m.TxReceiver), - - // Event Data - attribute.String("feed_id", m.FeedId), - // TODO: do we need these attributes? (available in WriteConfirmed) - // attribute.Int64("report_id", int64(m.ReportId)), // uint32 -> int64 - - // We mark confrmations by transmitter so we can query for only initial (fast) confirmations - // with PromQL, and ignore the slower confirmations by other signers for SLA measurements. - attribute.Bool("observed_by_transmitter", m.TxSender == m.MetaSourceId), // source_id == node account - // TODO: remove once NOT_SET bug with non-string labels is fixed - attribute.String("observed_by_transmitter_str", strconv.FormatBool(m.TxSender == m.MetaSourceId)), - } - - return append(attrs, context.Attributes()...) -} diff --git a/relayer/report/data_feeds/types.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/types.go similarity index 94% rename from relayer/report/data_feeds/types.go rename to relayer/monitoring/pb/data-feeds/on-chain/registry/types.go index 94340076..089b4969 100644 --- a/relayer/report/data_feeds/types.go +++ b/relayer/monitoring/pb/data-feeds/on-chain/registry/types.go @@ -1,14 +1,15 @@ -package data_feeds +package regsitry import ( "fmt" + "github.com/ethereum/go-ethereum/accounts/abi" ) // This is ABI encoding - abi: "(bytes32 FeedID, bytes RawReport)[] Reports" (set in workflow) // Encoded with: https://github.com/smartcontractkit/chainlink/blob/develop/core/services/relay/evm/cap_encoder.go type FeedReport struct { - FeedId [32]byte + FeedID [32]byte Data []byte } @@ -30,7 +31,7 @@ func GetSchema() abi.Arguments { // TODO: why is the workflow encoder_config "(bytes32 FeedID, bytes RawReport)[] Reports"? { Type: mustNewType("tuple(bytes32, bytes)[]", "", []abi.ArgumentMarshaling{ - {Name: "feedId", Type: "bytes32"}, + {Name: "feedID", Type: "bytes32"}, {Name: "data", Type: "bytes"}, }), }, diff --git a/relayer/report/data_feeds/types_test.go b/relayer/monitoring/pb/data-feeds/on-chain/registry/types_test.go similarity index 87% rename from relayer/report/data_feeds/types_test.go rename to relayer/monitoring/pb/data-feeds/on-chain/registry/types_test.go index b0ac9b43..c913f2a1 100644 --- a/relayer/report/data_feeds/types_test.go +++ b/relayer/monitoring/pb/data-feeds/on-chain/registry/types_test.go @@ -1,15 +1,14 @@ -package data_feeds +package regsitry import ( "encoding/base64" - "fmt" "math/big" "testing" "github.com/stretchr/testify/require" - mercury_v3 "github.com/smartcontractkit/chainlink-aptos/relayer/report/mercury/v3" - "github.com/smartcontractkit/chainlink-aptos/relayer/report/platform" + mercury_v3 "github.com/smartcontractkit/chainlink-evm/pkg/report/mercury/v3" + "github.com/smartcontractkit/chainlink-evm/pkg/report/platform" ) func TestDecodeReportV3(t *testing.T) { @@ -25,7 +24,7 @@ func TestDecodeReportV3(t *testing.T) { // Decode the report report, err := platform.Decode(decoded) require.NoError(t, err) - t.Log(fmt.Sprintf("Decoded as report: %+v", report)) + t.Logf("Decoded as report: %+v", report) expectedFeedID := [][32]uint8{ [32]uint8{0x0, 0x3, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, @@ -34,7 +33,7 @@ func TestDecodeReportV3(t *testing.T) { expectedData := []mercury_v3.Report{ mercury_v3.Report{ - FeedId: [32]uint8{0x0, 0x3, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + FeedID: [32]uint8{0x0, 0x3, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, ObservationsTimestamp: 0x66f5bf69, BenchmarkPrice: big.NewInt(300069), Bid: big.NewInt(300069), @@ -45,7 +44,7 @@ func TestDecodeReportV3(t *testing.T) { NativeFee: big.NewInt(300069), }, mercury_v3.Report{ - FeedId: [32]uint8{0x0, 0x3, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + FeedID: [32]uint8{0x0, 0x3, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, ObservationsTimestamp: 0x66f5bf69, BenchmarkPrice: big.NewInt(300069), Bid: big.NewInt(300069), @@ -59,12 +58,12 @@ func TestDecodeReportV3(t *testing.T) { reports, err := Decode(report.Data) require.NoError(t, err) - t.Log(fmt.Sprintf("Decoded as DF reports: %+v", reports)) + t.Logf("Decoded as DF reports: %+v", reports) require.Equal(t, len(expectedFeedID), len(*reports)) for i, report := range *reports { - require.Equal(t, expectedFeedID[i], report.FeedId) - require.True(t, len(report.Data) > 0) + require.Equal(t, expectedFeedID[i], report.FeedID) + require.NotEmpty(t, report.Data) m, err := mercury_v3.Decode(report.Data) require.NoError(t, err) diff --git a/relayer/monitoring/pb/platform/on-chain/forwarder/decode.go b/relayer/monitoring/pb/platform/on-chain/forwarder/decode.go deleted file mode 100644 index 41472d85..00000000 --- a/relayer/monitoring/pb/platform/on-chain/forwarder/decode.go +++ /dev/null @@ -1,62 +0,0 @@ -package forwarder - -import ( - "fmt" - - "github.com/smartcontractkit/chainlink-aptos/relayer/report/platform" - - wt_msg "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" -) - -// DecodeAsReportProcessed decodes a 'platform.write-target.WriteConfirmed' message -// as a 'keytone.forwarder.ReportProcessed' message -func DecodeAsReportProcessed(m *wt_msg.WriteConfirmed) (*ReportProcessed, error) { - // Decode the confirmed report (WT -> platform forwarder contract event akka. Keystone) - r, err := platform.Decode(m.Report) - if err != nil { - return nil, fmt.Errorf("failed to decode report: %w", err) - } - - return &ReportProcessed{ - // Event data - Receiver: m.Receiver, - WorkflowExecutionId: r.ExecutionID, - ReportId: m.ReportId, - Success: m.Success, - - // Head data - when was the event produced on-chain - BlockHash: m.BlockHash, - BlockHeight: m.BlockHeight, - BlockTimestamp: m.BlockTimestamp, - - // Transaction data - info about the tx that mained the event (optional) - // Notice: we skip SOME head/tx data here (unknown), as we map from 'platform.write-target.WriteConfirmed' - // and not from tx/event data (e.g., 'platform.write-target.WriteTxConfirmed') - TxSender: m.Transmitter, - TxReceiver: m.Forwarder, - - // Execution Context - Source - MetaSourceId: m.MetaSourceId, - - // Execution Context - Chain - MetaChainFamilyName: m.MetaChainFamilyName, - MetaChainId: m.MetaChainId, - MetaNetworkName: m.MetaNetworkName, - MetaNetworkNameFull: m.MetaNetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: m.MetaWorkflowId, - MetaWorkflowOwner: m.MetaWorkflowOwner, - MetaWorkflowExecutionId: m.MetaWorkflowExecutionId, - MetaWorkflowName: m.MetaWorkflowName, - MetaWorkflowDonId: m.MetaWorkflowDonId, - MetaWorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - MetaReferenceId: m.MetaReferenceId, - - // Execution Context - Capability - MetaCapabilityType: m.MetaCapabilityType, - MetaCapabilityId: m.MetaCapabilityId, - MetaCapabilityTimestampStart: m.MetaCapabilityTimestampStart, - MetaCapabilityTimestampEmit: m.MetaCapabilityTimestampEmit, - }, nil -} diff --git a/relayer/monitoring/pb/platform/on-chain/forwarder/decode_test.go b/relayer/monitoring/pb/platform/on-chain/forwarder/decode_test.go deleted file mode 100644 index 9b36f0f0..00000000 --- a/relayer/monitoring/pb/platform/on-chain/forwarder/decode_test.go +++ /dev/null @@ -1,104 +0,0 @@ -package forwarder - -import ( - "encoding/base64" - "testing" - - "github.com/stretchr/testify/require" - - wt_msg "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" -) - -func TestDecodeAsReportProcessed(t *testing.T) { - // Base64-encoded report data (example) - // version | workflow_execution_id | timestamp | don_id | config_version | ... | data - encoded := "AYFtgPpLuLNQysw6LjlSNrzGuBOwVoth7qC9PmunIY3TZvW/cAAAAAEAAAABvAbzAOeX1ahXVjehSq4T4/hQgAjR/FT0xGEf/xemjLAwMDAwRk9PQkFSAAAAAAAAAAAAAAAAAAAAAAAAAKoAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAMREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAMREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZvW/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm9b9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnBQGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJQlAAMiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAMiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZvW/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm9b9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnBQGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJQl" - - // Decode the base64 data - rawReport, err := base64.StdEncoding.DecodeString(encoded) - require.NoError(t, err) - - // Define test cases - tests := []struct { - name string - input wt_msg.WriteConfirmed - expected ReportProcessed - wantErr bool - }{ - { - name: "Valid input", - input: wt_msg.WriteConfirmed{ - Node: "example-node", - Forwarder: "example-forwarder", - Receiver: "example-receiver", - - // Report Info - ReportId: 123, - ReportContext: []byte{}, - Report: rawReport, // Example valid byte slice - SignersNum: 2, - - // Transmission Info - Transmitter: "example-transmitter", - Success: true, - - // Block Info - BlockHash: "0xaa", - BlockHeight: "17", - BlockTimestamp: 0x66f5bf69, - }, - expected: ReportProcessed{ - Receiver: "example-receiver", - WorkflowExecutionId: "816d80fa4bb8b350cacc3a2e395236bcc6b813b0568b61eea0bd3e6ba7218dd3", - ReportId: 123, - Success: true, - - BlockHash: "0xaa", - BlockHeight: "17", - BlockTimestamp: 0x66f5bf69, - - TxSender: "example-transmitter", - TxReceiver: "example-forwarder", - }, - wantErr: false, - }, - { - name: "Invalid input", - input: wt_msg.WriteConfirmed{ - Node: "example-node", - Forwarder: "example-forwarder", - Receiver: "example-receiver", - - // Report Info - ReportId: 123, - ReportContext: []byte{}, - Report: []byte{0x01, 0x02, 0x03, 0x04}, // Example invalid byte slice - SignersNum: 2, - - // Transmission Info - Transmitter: "example-transmitter", - Success: true, - - // Block Info - BlockHash: "0xaa", - BlockHeight: "17", - BlockTimestamp: 0x66f5bf69, - }, - expected: ReportProcessed{}, - wantErr: true, - }, - // Add more test cases as needed - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := DecodeAsReportProcessed(&tt.input) - if tt.wantErr { - require.Error(t, err) - } else { - require.NoError(t, err) - require.Equal(t, tt.expected, *result) - } - }) - } -} diff --git a/relayer/monitoring/pb/platform/on-chain/forwarder/generate.go b/relayer/monitoring/pb/platform/on-chain/forwarder/generate.go deleted file mode 100644 index 2ca3f3f0..00000000 --- a/relayer/monitoring/pb/platform/on-chain/forwarder/generate.go +++ /dev/null @@ -1,3 +0,0 @@ -package forwarder - -//go:generate protoc -I=. --go_out=. ./report_processed.proto diff --git a/relayer/monitoring/pb/platform/on-chain/forwarder/metrics.go b/relayer/monitoring/pb/platform/on-chain/forwarder/metrics.go deleted file mode 100644 index e5ea064c..00000000 --- a/relayer/monitoring/pb/platform/on-chain/forwarder/metrics.go +++ /dev/null @@ -1,143 +0,0 @@ -package forwarder - -import ( - "context" - "fmt" - "strconv" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/metric/utils" -) - -// ns returns a namespaced metric name -func ns(name string) string { - return fmt.Sprintf("platform_on_chain_forwarder_%s", name) -} - -// Define metrics configuration -var ( - reportProcessed = struct { - basic utils.MetricsInfoCapBasic - // specific to ReportProcessed - blockTimestamp utils.MetricInfo - blockNumber utils.MetricInfo - }{ - basic: utils.NewMetricsInfoCapBasic(ns("report_processed"), "platform.on-chain.forwarder.ReportProcessed"), - blockTimestamp: utils.MetricInfo{ - Name: ns("report_processed_block_timestamp"), - Unit: "ms", - Description: "The block timestamp at the latest confirmed write (as observed)", - }, - blockNumber: utils.MetricInfo{ - Name: ns("report_processed_block_number"), - Unit: "", - Description: "The block number at the latest confirmed write (as observed)", - }, - } -) - -// Define a new struct for metrics -type Metrics struct { - // Define on ReportProcessed metrics - reportProcessed struct { - basic utils.MetricsCapBasic - // specific to ReportProcessed - blockTimestamp metric.Int64Gauge - blockNumber metric.Int64Gauge - } -} - -func NewMetrics() (*Metrics, error) { - // Define new metrics - m := &Metrics{} - - meter := beholder.GetMeter() - - // Create new metrics - var err error - - m.reportProcessed.basic, err = utils.NewMetricsCapBasic(reportProcessed.basic) - if err != nil { - return nil, fmt.Errorf("failed to create new basic metrics: %w", err) - } - - m.reportProcessed.blockTimestamp, err = reportProcessed.blockTimestamp.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.reportProcessed.blockNumber, err = reportProcessed.blockNumber.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - return m, nil -} - -func (m *Metrics) OnReportProcessed(ctx context.Context, msg *ReportProcessed, attrKVs ...any) error { - // Define attributes - attrs := metric.WithAttributes(msg.Attributes()...) - - // Emit basic metrics (count, timestamps) - start, emit := msg.MetaCapabilityTimestampStart, msg.MetaCapabilityTimestampEmit - m.reportProcessed.basic.RecordEmit(ctx, start, emit, msg.Attributes()...) - - // Block timestamp - m.reportProcessed.blockTimestamp.Record(ctx, int64(msg.BlockTimestamp), attrs) - - // Block number - blockHeightVal, err := strconv.ParseInt(msg.BlockHeight, 10, 64) - if err != nil { - return fmt.Errorf("failed to parse block height: %w", err) - } - m.reportProcessed.blockNumber.Record(ctx, blockHeightVal, attrs) - - return nil -} - -// Attributes returns the attributes for the ReportProcessed message to be used in metrics -func (m *ReportProcessed) Attributes() []attribute.KeyValue { - context := utils.ExecutionMetadata{ - // Execution Context - Source - SourceId: m.MetaSourceId, - // Execution Context - Chain - ChainFamilyName: m.MetaChainFamilyName, - ChainId: m.MetaChainId, - NetworkName: m.MetaNetworkName, - NetworkNameFull: m.MetaNetworkNameFull, - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId: m.MetaWorkflowId, - WorkflowOwner: m.MetaWorkflowOwner, - WorkflowExecutionId: m.MetaWorkflowExecutionId, - WorkflowName: m.MetaWorkflowName, - WorkflowDonId: m.MetaWorkflowDonId, - WorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - ReferenceId: m.MetaReferenceId, - // Execution Context - Capability - CapabilityType: m.MetaCapabilityType, - CapabilityId: m.MetaCapabilityId, - } - - attrs := []attribute.KeyValue{ - // Transaction Data - attribute.String("tx_sender", m.TxSender), - attribute.String("tx_receiver", m.TxReceiver), - - // Event Data - attribute.String("receiver", m.Receiver), - attribute.Int64("report_id", int64(m.ReportId)), // uint32 -> int64 - attribute.Bool("success", m.Success), - - // We mark confrmations by transmitter so we can query for only initial (fast) confirmations - // with PromQL, and ignore the slower confirmations by other signers for SLA measurements. - attribute.Bool("observed_by_transmitter", m.TxSender == m.MetaSourceId), // source_id == node account - // TODO: remove once NOT_SET bug with non-string labels is fixed - attribute.String("observed_by_transmitter_str", strconv.FormatBool(m.TxSender == m.MetaSourceId)), - } - - return append(attrs, context.Attributes()...) -} diff --git a/relayer/monitoring/pb/platform/on-chain/forwarder/report_processed.pb.go b/relayer/monitoring/pb/platform/on-chain/forwarder/report_processed.pb.go deleted file mode 100644 index d18f2661..00000000 --- a/relayer/monitoring/pb/platform/on-chain/forwarder/report_processed.pb.go +++ /dev/null @@ -1,445 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: report_processed.proto - -package forwarder - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// The on-chain ReportProcessed event which is extracted from the tx/event data or -// the write-target WriteConfirmed event, after a write was confirmed (@see message: platform.write-target.WriteConfirmed). -type ReportProcessed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Event data - Receiver string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"` - WorkflowExecutionId string `protobuf:"bytes,2,opt,name=workflow_execution_id,json=workflowExecutionId,proto3" json:"workflow_execution_id,omitempty"` // bytes as hex string for readability - ReportId uint32 `protobuf:"varint,3,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"` - // Head data - when was the event produced on-chain - BlockHash string `protobuf:"bytes,5,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockHeight string `protobuf:"bytes,6,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` - BlockTimestamp uint64 `protobuf:"varint,7,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` - // Transaction data - info about the tx that mained the event (optional) - TxId string `protobuf:"bytes,10,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // TXM ref - TxHash string `protobuf:"bytes,11,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - TxSender string `protobuf:"bytes,12,opt,name=tx_sender,json=txSender,proto3" json:"tx_sender,omitempty"` - TxReceiver string `protobuf:"bytes,13,opt,name=tx_receiver,json=txReceiver,proto3" json:"tx_receiver,omitempty"` - TxStatus string `protobuf:"bytes,14,opt,name=tx_status,json=txStatus,proto3" json:"tx_status,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *ReportProcessed) Reset() { - *x = ReportProcessed{} - if protoimpl.UnsafeEnabled { - mi := &file_report_processed_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReportProcessed) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportProcessed) ProtoMessage() {} - -func (x *ReportProcessed) ProtoReflect() protoreflect.Message { - mi := &file_report_processed_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ReportProcessed.ProtoReflect.Descriptor instead. -func (*ReportProcessed) Descriptor() ([]byte, []int) { - return file_report_processed_proto_rawDescGZIP(), []int{0} -} - -func (x *ReportProcessed) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *ReportProcessed) GetWorkflowExecutionId() string { - if x != nil { - return x.WorkflowExecutionId - } - return "" -} - -func (x *ReportProcessed) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *ReportProcessed) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ReportProcessed) GetBlockHash() string { - if x != nil { - return x.BlockHash - } - return "" -} - -func (x *ReportProcessed) GetBlockHeight() string { - if x != nil { - return x.BlockHeight - } - return "" -} - -func (x *ReportProcessed) GetBlockTimestamp() uint64 { - if x != nil { - return x.BlockTimestamp - } - return 0 -} - -func (x *ReportProcessed) GetTxId() string { - if x != nil { - return x.TxId - } - return "" -} - -func (x *ReportProcessed) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *ReportProcessed) GetTxSender() string { - if x != nil { - return x.TxSender - } - return "" -} - -func (x *ReportProcessed) GetTxReceiver() string { - if x != nil { - return x.TxReceiver - } - return "" -} - -func (x *ReportProcessed) GetTxStatus() string { - if x != nil { - return x.TxStatus - } - return "" -} - -func (x *ReportProcessed) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *ReportProcessed) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *ReportProcessed) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *ReportProcessed) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *ReportProcessed) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *ReportProcessed) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *ReportProcessed) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *ReportProcessed) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *ReportProcessed) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *ReportProcessed) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *ReportProcessed) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *ReportProcessed) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *ReportProcessed) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *ReportProcessed) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *ReportProcessed) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *ReportProcessed) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_report_processed_proto protoreflect.FileDescriptor - -var file_report_processed_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x6f, 0x6e, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x2e, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x65, 0x72, 0x22, 0xc2, 0x09, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x13, 0x0a, 0x05, 0x74, - 0x78, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, - 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x78, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, - 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x22, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x13, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, - 0x46, 0x75, 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, - 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, - 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, - 0x0a, 0x1a, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, - 0x65, 0x74, 0x61, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, - 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, - 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, - 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, - 0x0a, 0x1f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x5f, 0x65, 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, - 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x45, 0x6d, 0x69, 0x74, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x3b, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_report_processed_proto_rawDescOnce sync.Once - file_report_processed_proto_rawDescData = file_report_processed_proto_rawDesc -) - -func file_report_processed_proto_rawDescGZIP() []byte { - file_report_processed_proto_rawDescOnce.Do(func() { - file_report_processed_proto_rawDescData = protoimpl.X.CompressGZIP(file_report_processed_proto_rawDescData) - }) - return file_report_processed_proto_rawDescData -} - -var file_report_processed_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_report_processed_proto_goTypes = []any{ - (*ReportProcessed)(nil), // 0: platform.on_chain.forwarder.ReportProcessed -} -var file_report_processed_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_report_processed_proto_init() } -func file_report_processed_proto_init() { - if File_report_processed_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_report_processed_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ReportProcessed); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_report_processed_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_report_processed_proto_goTypes, - DependencyIndexes: file_report_processed_proto_depIdxs, - MessageInfos: file_report_processed_proto_msgTypes, - }.Build() - File_report_processed_proto = out.File - file_report_processed_proto_rawDesc = nil - file_report_processed_proto_goTypes = nil - file_report_processed_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/on-chain/forwarder/report_processed.proto b/relayer/monitoring/pb/platform/on-chain/forwarder/report_processed.proto deleted file mode 100644 index 793ea3d6..00000000 --- a/relayer/monitoring/pb/platform/on-chain/forwarder/report_processed.proto +++ /dev/null @@ -1,52 +0,0 @@ -syntax="proto3"; - -package platform.on_chain.forwarder; -option go_package = ".;forwarder"; - -// The on-chain ReportProcessed event which is extracted from the tx/event data or -// the write-target WriteConfirmed event, after a write was confirmed (@see message: platform.write-target.WriteConfirmed). -message ReportProcessed { - // Event data - string receiver = 1; - string workflow_execution_id = 2; // bytes as hex string for readability - uint32 report_id = 3; - bool success = 4; - - // Head data - when was the event produced on-chain - string block_hash = 5; - string block_height = 6; - uint64 block_timestamp = 7; - - // Transaction data - info about the tx that mained the event (optional) - string tx_id = 10; // TXM ref - string tx_hash = 11; - string tx_sender = 12; - string tx_receiver = 13; - string tx_status = 14; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/platform/write-target/error.go b/relayer/monitoring/pb/platform/write-target/error.go deleted file mode 100644 index 375cea16..00000000 --- a/relayer/monitoring/pb/platform/write-target/error.go +++ /dev/null @@ -1,13 +0,0 @@ -package write_target - -import ( - "fmt" - - protoimpl "google.golang.org/protobuf/runtime/protoimpl" -) - -// AsError returns the WriteError message as an (Go) error -func (e *WriteError) AsError() error { - protoName := protoimpl.X.MessageTypeOf(e).Descriptor().FullName() - return fmt.Errorf("%s [ERR-%v] - %s: %s", protoName, e.Code, e.Summary, e.Cause) -} diff --git a/relayer/monitoring/pb/platform/write-target/generate.go b/relayer/monitoring/pb/platform/write-target/generate.go deleted file mode 100644 index b1dec10a..00000000 --- a/relayer/monitoring/pb/platform/write-target/generate.go +++ /dev/null @@ -1,8 +0,0 @@ -package write_target - -//go:generate protoc -I=. --go_out=. ./write_accepted.proto -//go:generate protoc -I=. --go_out=. ./write_confirmed.proto -//go:generate protoc -I=. --go_out=. ./write_error.proto -//go:generate protoc -I=. --go_out=. ./write_initiated.proto -//go:generate protoc -I=. --go_out=. ./write_sent.proto -//go:generate protoc -I=. --go_out=. ./write_skipped.proto diff --git a/relayer/monitoring/pb/platform/write-target/metrics.go b/relayer/monitoring/pb/platform/write-target/metrics.go deleted file mode 100644 index 225aa7fa..00000000 --- a/relayer/monitoring/pb/platform/write-target/metrics.go +++ /dev/null @@ -1,362 +0,0 @@ -package write_target - -import ( - "context" - "fmt" - "strconv" - - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/metric" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/metric/utils" -) - -// ns returns a namespaced metric name -func ns(name string) string { - return fmt.Sprintf("platform_write_target_%s", name) -} - -// Define metrics configuration -var ( - writeInitiated = struct { - basic utils.MetricsInfoCapBasic - }{ - basic: utils.NewMetricsInfoCapBasic(ns("write_initiated"), "platform.write-target.WriteInitiated"), - } - writeError = struct { - basic utils.MetricsInfoCapBasic - }{ - basic: utils.NewMetricsInfoCapBasic(ns("write_error"), "platform.write-target.WriteError"), - } - writeSent = struct { - basic utils.MetricsInfoCapBasic - // specific to WriteSent - blockTimestamp utils.MetricInfo - blockNumber utils.MetricInfo - }{ - basic: utils.NewMetricsInfoCapBasic(ns("write_sent"), "platform.write-target.WriteSent"), - blockTimestamp: utils.MetricInfo{ - Name: ns("write_sent_block_timestamp"), - Unit: "ms", - Description: "The block timestamp at the latest sent write (as observed)", - }, - blockNumber: utils.MetricInfo{ - Name: ns("write_sent_block_number"), - Unit: "", - Description: "The block number at the latest sent write (as observed)", - }, - } - writeConfirmed = struct { - basic utils.MetricsInfoCapBasic - // specific to WriteSent - blockTimestamp utils.MetricInfo - blockNumber utils.MetricInfo - signersNumber utils.MetricInfo - }{ - basic: utils.NewMetricsInfoCapBasic(ns("write_confirmed"), "platform.write-target.WriteConfirmed"), - blockTimestamp: utils.MetricInfo{ - Name: ns("write_confirmed_block_timestamp"), - Unit: "ms", - Description: "The block timestamp for latest confirmed write (as observed)", - }, - blockNumber: utils.MetricInfo{ - Name: ns("write_confirmed_block_number"), - Unit: "", - Description: "The block number for latest confirmed write (as observed)", - }, - signersNumber: utils.MetricInfo{ - Name: ns("write_confirmed_signers_number"), - Unit: "", - Description: "The number of signers attached to the processed and confirmed write request", - }, - } -) - -// Define a new struct for metrics -type Metrics struct { - // Define on WriteInitiated metrics - writeInitiated struct { - basic utils.MetricsCapBasic - } - // Define on WriteError metrics - writeError struct { - basic utils.MetricsCapBasic - } - // Define on WriteSent metrics - writeSent struct { - basic utils.MetricsCapBasic - // specific to WriteSent - blockTimestamp metric.Int64Gauge - blockNumber metric.Int64Gauge - } - // Define on WriteConfirmed metrics - writeConfirmed struct { - basic utils.MetricsCapBasic - // specific to WriteConfirmed - blockTimestamp metric.Int64Gauge - blockNumber metric.Int64Gauge - signersNumber metric.Int64Gauge - } -} - -func NewMetrics() (*Metrics, error) { - // Define new metrics - m := &Metrics{} - - meter := beholder.GetMeter() - - // Create new metrics - var err error - - // WriteInitiated - m.writeInitiated.basic, err = utils.NewMetricsCapBasic(writeInitiated.basic) - if err != nil { - return nil, fmt.Errorf("failed to create new basic metrics: %w", err) - } - - // WriteError - m.writeError.basic, err = utils.NewMetricsCapBasic(writeError.basic) - if err != nil { - return nil, fmt.Errorf("failed to create new basic metrics: %w", err) - } - - // WriteSent - m.writeSent.basic, err = utils.NewMetricsCapBasic(writeSent.basic) - if err != nil { - return nil, fmt.Errorf("failed to create new basic metrics: %w", err) - } - - m.writeSent.blockTimestamp, err = writeSent.blockTimestamp.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.writeSent.blockNumber, err = writeSent.blockNumber.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - // WriteConfirmed - m.writeConfirmed.basic, err = utils.NewMetricsCapBasic(writeConfirmed.basic) - if err != nil { - return nil, fmt.Errorf("failed to create new basic metrics: %w", err) - } - - m.writeConfirmed.blockTimestamp, err = writeConfirmed.blockTimestamp.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.writeConfirmed.blockNumber, err = writeConfirmed.blockNumber.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - m.writeConfirmed.signersNumber, err = writeConfirmed.signersNumber.NewInt64Gauge(meter) - if err != nil { - return nil, fmt.Errorf("failed to create new gauge: %w", err) - } - - return m, nil -} - -func (m *Metrics) OnWriteInitiated(ctx context.Context, msg *WriteInitiated, attrKVs ...any) error { - // Emit basic metrics (count, timestamps) - start, emit := msg.MetaCapabilityTimestampStart, msg.MetaCapabilityTimestampEmit - m.writeInitiated.basic.RecordEmit(ctx, start, emit, msg.Attributes()...) - return nil -} - -func (m *Metrics) OnWriteError(ctx context.Context, msg *WriteError, attrKVs ...any) error { - // Emit basic metrics (count, timestamps) - start, emit := msg.MetaCapabilityTimestampStart, msg.MetaCapabilityTimestampEmit - m.writeError.basic.RecordEmit(ctx, start, emit, msg.Attributes()...) - return nil -} - -func (m *Metrics) OnWriteSent(ctx context.Context, msg *WriteSent, attrKVs ...any) error { - // Define attributes - attrs := metric.WithAttributes(msg.Attributes()...) - - // Emit basic metrics (count, timestamps) - start, emit := msg.MetaCapabilityTimestampStart, msg.MetaCapabilityTimestampEmit - m.writeSent.basic.RecordEmit(ctx, start, emit, msg.Attributes()...) - - // Block timestamp - m.writeSent.blockTimestamp.Record(ctx, int64(msg.BlockTimestamp), attrs) - - // Block number - blockHeightVal, err := strconv.ParseInt(msg.BlockHeight, 10, 64) - if err != nil { - return fmt.Errorf("failed to parse block height: %w", err) - } - m.writeSent.blockNumber.Record(ctx, blockHeightVal, attrs) - return nil -} - -func (m *Metrics) OnWriteConfirmed(ctx context.Context, msg *WriteConfirmed, attrKVs ...any) error { - // Define attributes - attrs := metric.WithAttributes(msg.Attributes()...) - - // Emit basic metrics (count, timestamps) - start, emit := msg.MetaCapabilityTimestampStart, msg.MetaCapabilityTimestampEmit - m.writeConfirmed.basic.RecordEmit(ctx, start, emit, msg.Attributes()...) - - // Signers number - m.writeConfirmed.signersNumber.Record(ctx, int64(msg.SignersNum), attrs) - - // Block timestamp - m.writeConfirmed.blockTimestamp.Record(ctx, int64(msg.BlockTimestamp), attrs) - - // Block number - blockHeightVal, err := strconv.ParseInt(msg.BlockHeight, 10, 64) - if err != nil { - return fmt.Errorf("failed to parse block height: %w", err) - } - m.writeConfirmed.blockNumber.Record(ctx, blockHeightVal, attrs) - return nil -} - -// Attributes returns the attributes for the WriteInitiated message to be used in metrics -func (m *WriteInitiated) Attributes() []attribute.KeyValue { - context := utils.ExecutionMetadata{ - // Execution Context - Source - SourceId: m.MetaSourceId, - // Execution Context - Chain - ChainFamilyName: m.MetaChainFamilyName, - ChainId: m.MetaChainId, - NetworkName: m.MetaNetworkName, - NetworkNameFull: m.MetaNetworkNameFull, - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId: m.MetaWorkflowId, - WorkflowOwner: m.MetaWorkflowOwner, - WorkflowExecutionId: m.MetaWorkflowExecutionId, - WorkflowName: m.MetaWorkflowName, - WorkflowDonId: m.MetaWorkflowDonId, - WorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - ReferenceId: m.MetaReferenceId, - // Execution Context - Capability - CapabilityType: m.MetaCapabilityType, - CapabilityId: m.MetaCapabilityId, - } - - attrs := []attribute.KeyValue{ - attribute.String("node", m.Node), - attribute.String("forwarder", m.Forwarder), - attribute.String("receiver", m.Receiver), - attribute.Int64("report_id", int64(m.ReportId)), // uint32 -> int64 - } - - return append(attrs, context.Attributes()...) -} - -// Attributes returns the attributes for the WriteError message to be used in metrics -func (m *WriteError) Attributes() []attribute.KeyValue { - context := utils.ExecutionMetadata{ - // Execution Context - Source - SourceId: m.MetaSourceId, - // Execution Context - Chain - ChainFamilyName: m.MetaChainFamilyName, - ChainId: m.MetaChainId, - NetworkName: m.MetaNetworkName, - NetworkNameFull: m.MetaNetworkNameFull, - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId: m.MetaWorkflowId, - WorkflowOwner: m.MetaWorkflowOwner, - WorkflowExecutionId: m.MetaWorkflowExecutionId, - WorkflowName: m.MetaWorkflowName, - WorkflowDonId: m.MetaWorkflowDonId, - WorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - ReferenceId: m.MetaReferenceId, - // Execution Context - Capability - CapabilityType: m.MetaCapabilityType, - CapabilityId: m.MetaCapabilityId, - } - - attrs := []attribute.KeyValue{ - attribute.String("node", m.Node), - attribute.String("forwarder", m.Forwarder), - attribute.String("receiver", m.Receiver), - attribute.Int64("report_id", int64(m.ReportId)), // uint32 -> int64 - // Error information - attribute.Int64("code", int64(m.Code)), // uint32 -> int64 - attribute.String("summary", m.Summary), - } - - return append(attrs, context.Attributes()...) -} - -// Attributes returns the attributes for the WriteSent message to be used in metrics -func (m *WriteSent) Attributes() []attribute.KeyValue { - context := utils.ExecutionMetadata{ - // Execution Context - Source - SourceId: m.MetaSourceId, - // Execution Context - Chain - ChainFamilyName: m.MetaChainFamilyName, - ChainId: m.MetaChainId, - NetworkName: m.MetaNetworkName, - NetworkNameFull: m.MetaNetworkNameFull, - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId: m.MetaWorkflowId, - WorkflowOwner: m.MetaWorkflowOwner, - WorkflowExecutionId: m.MetaWorkflowExecutionId, - WorkflowName: m.MetaWorkflowName, - WorkflowDonId: m.MetaWorkflowDonId, - WorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - ReferenceId: m.MetaReferenceId, - // Execution Context - Capability - CapabilityType: m.MetaCapabilityType, - CapabilityId: m.MetaCapabilityId, - } - - attrs := []attribute.KeyValue{ - attribute.String("node", m.Node), - attribute.String("forwarder", m.Forwarder), - attribute.String("receiver", m.Receiver), - attribute.Int64("report_id", int64(m.ReportId)), // uint32 -> int64 - } - - return append(attrs, context.Attributes()...) -} - -// Attributes returns the attributes for the WriteConfirmed message to be used in metrics -func (m *WriteConfirmed) Attributes() []attribute.KeyValue { - context := utils.ExecutionMetadata{ - // Execution Context - Source - SourceId: m.MetaSourceId, - // Execution Context - Chain - ChainFamilyName: m.MetaChainFamilyName, - ChainId: m.MetaChainId, - NetworkName: m.MetaNetworkName, - NetworkNameFull: m.MetaNetworkNameFull, - // Execution Context - Workflow (capabilities.RequestMetadata) - WorkflowId: m.MetaWorkflowId, - WorkflowOwner: m.MetaWorkflowOwner, - WorkflowExecutionId: m.MetaWorkflowExecutionId, - WorkflowName: m.MetaWorkflowName, - WorkflowDonId: m.MetaWorkflowDonId, - WorkflowDonConfigVersion: m.MetaWorkflowDonConfigVersion, - ReferenceId: m.MetaReferenceId, - // Execution Context - Capability - CapabilityType: m.MetaCapabilityType, - CapabilityId: m.MetaCapabilityId, - } - - attrs := []attribute.KeyValue{ - attribute.String("node", m.Node), - attribute.String("forwarder", m.Forwarder), - attribute.String("receiver", m.Receiver), - attribute.Int64("report_id", int64(m.ReportId)), // uint32 -> int64 - attribute.String("transmitter", m.Transmitter), - attribute.Bool("success", m.Success), - // We mark confrmations by transmitter so we can query for only initial (fast) confirmations - // with PromQL, and ignore the slower confirmations by other signers for SLA measurements. - attribute.Bool("observed_by_transmitter", m.Transmitter == m.Node), - // TODO: remove once NOT_SET bug with non-string labels is fixed - attribute.String("observed_by_transmitter_str", strconv.FormatBool(m.Transmitter == m.Node)), - } - - return append(attrs, context.Attributes()...) -} diff --git a/relayer/monitoring/pb/platform/write-target/write_accepted.pb.go b/relayer/monitoring/pb/platform/write-target/write_accepted.pb.go deleted file mode 100644 index 574d08a6..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_accepted.pb.go +++ /dev/null @@ -1,443 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: write_accepted.proto - -package write_target - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// WT sent a transaction and it was accepted on-chain -// -// Notice: we publish txId (TXM ref) and txHash (in the future should be available here) -type WriteAccepted struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Forwarder string `protobuf:"bytes,2,opt,name=forwarder,proto3" json:"forwarder,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - // Report Info - ReportId uint32 `protobuf:"varint,4,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - // When was the transaction accepted on-chain - BlockHash string `protobuf:"bytes,6,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockHeight string `protobuf:"bytes,7,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` - BlockTimestamp uint64 `protobuf:"varint,8,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` - // Transaction data - info about the tx that mained the event (optional) - TxId string `protobuf:"bytes,10,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` // TXM ref - TxHash string `protobuf:"bytes,11,opt,name=tx_hash,json=txHash,proto3" json:"tx_hash,omitempty"` - TxSender string `protobuf:"bytes,12,opt,name=tx_sender,json=txSender,proto3" json:"tx_sender,omitempty"` - TxReceiver string `protobuf:"bytes,13,opt,name=tx_receiver,json=txReceiver,proto3" json:"tx_receiver,omitempty"` - TxStatus string `protobuf:"bytes,14,opt,name=tx_status,json=txStatus,proto3" json:"tx_status,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *WriteAccepted) Reset() { - *x = WriteAccepted{} - if protoimpl.UnsafeEnabled { - mi := &file_write_accepted_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteAccepted) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteAccepted) ProtoMessage() {} - -func (x *WriteAccepted) ProtoReflect() protoreflect.Message { - mi := &file_write_accepted_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteAccepted.ProtoReflect.Descriptor instead. -func (*WriteAccepted) Descriptor() ([]byte, []int) { - return file_write_accepted_proto_rawDescGZIP(), []int{0} -} - -func (x *WriteAccepted) GetNode() string { - if x != nil { - return x.Node - } - return "" -} - -func (x *WriteAccepted) GetForwarder() string { - if x != nil { - return x.Forwarder - } - return "" -} - -func (x *WriteAccepted) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *WriteAccepted) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *WriteAccepted) GetBlockHash() string { - if x != nil { - return x.BlockHash - } - return "" -} - -func (x *WriteAccepted) GetBlockHeight() string { - if x != nil { - return x.BlockHeight - } - return "" -} - -func (x *WriteAccepted) GetBlockTimestamp() uint64 { - if x != nil { - return x.BlockTimestamp - } - return 0 -} - -func (x *WriteAccepted) GetTxId() string { - if x != nil { - return x.TxId - } - return "" -} - -func (x *WriteAccepted) GetTxHash() string { - if x != nil { - return x.TxHash - } - return "" -} - -func (x *WriteAccepted) GetTxSender() string { - if x != nil { - return x.TxSender - } - return "" -} - -func (x *WriteAccepted) GetTxReceiver() string { - if x != nil { - return x.TxReceiver - } - return "" -} - -func (x *WriteAccepted) GetTxStatus() string { - if x != nil { - return x.TxStatus - } - return "" -} - -func (x *WriteAccepted) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *WriteAccepted) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *WriteAccepted) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *WriteAccepted) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *WriteAccepted) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *WriteAccepted) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *WriteAccepted) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *WriteAccepted) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *WriteAccepted) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *WriteAccepted) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *WriteAccepted) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *WriteAccepted) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *WriteAccepted) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *WriteAccepted) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *WriteAccepted) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *WriteAccepted) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_write_accepted_proto protoreflect.FileDescriptor - -var file_write_accepted_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xa4, 0x09, - 0x0a, 0x0d, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, - 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, - 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x78, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x24, - 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, - 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, - 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, - 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x12, 0x28, - 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, - 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, - 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, - 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, - 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x65, 0x6d, 0x69, - 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x45, 0x6d, 0x69, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x3b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_write_accepted_proto_rawDescOnce sync.Once - file_write_accepted_proto_rawDescData = file_write_accepted_proto_rawDesc -) - -func file_write_accepted_proto_rawDescGZIP() []byte { - file_write_accepted_proto_rawDescOnce.Do(func() { - file_write_accepted_proto_rawDescData = protoimpl.X.CompressGZIP(file_write_accepted_proto_rawDescData) - }) - return file_write_accepted_proto_rawDescData -} - -var file_write_accepted_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_write_accepted_proto_goTypes = []any{ - (*WriteAccepted)(nil), // 0: platform.write_target.WriteAccepted -} -var file_write_accepted_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_write_accepted_proto_init() } -func file_write_accepted_proto_init() { - if File_write_accepted_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_write_accepted_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WriteAccepted); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_write_accepted_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_write_accepted_proto_goTypes, - DependencyIndexes: file_write_accepted_proto_depIdxs, - MessageInfos: file_write_accepted_proto_msgTypes, - }.Build() - File_write_accepted_proto = out.File - file_write_accepted_proto_rawDesc = nil - file_write_accepted_proto_goTypes = nil - file_write_accepted_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/write-target/write_accepted.proto b/relayer/monitoring/pb/platform/write-target/write_accepted.proto deleted file mode 100644 index d1e81ee8..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_accepted.proto +++ /dev/null @@ -1,54 +0,0 @@ -syntax="proto3"; - -package platform.write_target; -option go_package = ".;write_target"; - -// WT sent a transaction and it was accepted on-chain -// -// Notice: we publish txId (TXM ref) and txHash (in the future should be available here) -message WriteAccepted { - string node = 1; - string forwarder = 2; - string receiver = 3; - - // Report Info - uint32 report_id = 4; - - // When was the transaction accepted on-chain - string block_hash = 6; - string block_height = 7; - uint64 block_timestamp = 8; - - // Transaction data - info about the tx that mained the event (optional) - string tx_id = 10; // TXM ref - string tx_hash = 11; - string tx_sender = 12; - string tx_receiver = 13; - string tx_status = 14; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/platform/write-target/write_confirmed.pb.go b/relayer/monitoring/pb/platform/write-target/write_confirmed.pb.go deleted file mode 100644 index 3ba47efb..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_confirmed.pb.go +++ /dev/null @@ -1,443 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: write_confirmed.proto - -package write_target - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// WT confirmed the report was successfully written on-chain -type WriteConfirmed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Forwarder string `protobuf:"bytes,2,opt,name=forwarder,proto3" json:"forwarder,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - // Report Info - ReportId uint32 `protobuf:"varint,4,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - ReportContext []byte `protobuf:"bytes,5,opt,name=report_context,json=reportContext,proto3" json:"report_context,omitempty"` - Report []byte `protobuf:"bytes,6,opt,name=report,proto3" json:"report,omitempty"` - SignersNum uint32 `protobuf:"varint,7,opt,name=signers_num,json=signersNum,proto3" json:"signers_num,omitempty"` - // When was the report confirmed on-chain - BlockHash string `protobuf:"bytes,9,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockHeight string `protobuf:"bytes,10,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` - BlockTimestamp uint64 `protobuf:"varint,11,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` - // Transmission Info - Transmitter string `protobuf:"bytes,12,opt,name=transmitter,proto3" json:"transmitter,omitempty"` - Success bool `protobuf:"varint,13,opt,name=success,proto3" json:"success,omitempty"` // TODO: what about EVM's TransmissionInfo parity? - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *WriteConfirmed) Reset() { - *x = WriteConfirmed{} - if protoimpl.UnsafeEnabled { - mi := &file_write_confirmed_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteConfirmed) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteConfirmed) ProtoMessage() {} - -func (x *WriteConfirmed) ProtoReflect() protoreflect.Message { - mi := &file_write_confirmed_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteConfirmed.ProtoReflect.Descriptor instead. -func (*WriteConfirmed) Descriptor() ([]byte, []int) { - return file_write_confirmed_proto_rawDescGZIP(), []int{0} -} - -func (x *WriteConfirmed) GetNode() string { - if x != nil { - return x.Node - } - return "" -} - -func (x *WriteConfirmed) GetForwarder() string { - if x != nil { - return x.Forwarder - } - return "" -} - -func (x *WriteConfirmed) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *WriteConfirmed) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *WriteConfirmed) GetReportContext() []byte { - if x != nil { - return x.ReportContext - } - return nil -} - -func (x *WriteConfirmed) GetReport() []byte { - if x != nil { - return x.Report - } - return nil -} - -func (x *WriteConfirmed) GetSignersNum() uint32 { - if x != nil { - return x.SignersNum - } - return 0 -} - -func (x *WriteConfirmed) GetBlockHash() string { - if x != nil { - return x.BlockHash - } - return "" -} - -func (x *WriteConfirmed) GetBlockHeight() string { - if x != nil { - return x.BlockHeight - } - return "" -} - -func (x *WriteConfirmed) GetBlockTimestamp() uint64 { - if x != nil { - return x.BlockTimestamp - } - return 0 -} - -func (x *WriteConfirmed) GetTransmitter() string { - if x != nil { - return x.Transmitter - } - return "" -} - -func (x *WriteConfirmed) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *WriteConfirmed) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *WriteConfirmed) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *WriteConfirmed) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *WriteConfirmed) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *WriteConfirmed) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *WriteConfirmed) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *WriteConfirmed) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *WriteConfirmed) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *WriteConfirmed) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *WriteConfirmed) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *WriteConfirmed) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *WriteConfirmed) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *WriteConfirmed) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *WriteConfirmed) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *WriteConfirmed) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *WriteConfirmed) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_write_confirmed_proto protoreflect.FileDescriptor - -var file_write_confirmed_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xb8, - 0x09, 0x0a, 0x0e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, - 0x0a, 0x0f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, - 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, - 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, - 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, - 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x46, - 0x75, 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, - 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, 0x0a, - 0x13, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, - 0x77, 0x6e, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, 0x0a, - 0x1a, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x44, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, - 0x74, 0x61, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, - 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x74, - 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, - 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, - 0x1f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x5f, 0x65, 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, 0x65, - 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x45, 0x6d, 0x69, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x3b, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} - -var ( - file_write_confirmed_proto_rawDescOnce sync.Once - file_write_confirmed_proto_rawDescData = file_write_confirmed_proto_rawDesc -) - -func file_write_confirmed_proto_rawDescGZIP() []byte { - file_write_confirmed_proto_rawDescOnce.Do(func() { - file_write_confirmed_proto_rawDescData = protoimpl.X.CompressGZIP(file_write_confirmed_proto_rawDescData) - }) - return file_write_confirmed_proto_rawDescData -} - -var file_write_confirmed_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_write_confirmed_proto_goTypes = []any{ - (*WriteConfirmed)(nil), // 0: platform.write_target.WriteConfirmed -} -var file_write_confirmed_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_write_confirmed_proto_init() } -func file_write_confirmed_proto_init() { - if File_write_confirmed_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_write_confirmed_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WriteConfirmed); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_write_confirmed_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_write_confirmed_proto_goTypes, - DependencyIndexes: file_write_confirmed_proto_depIdxs, - MessageInfos: file_write_confirmed_proto_msgTypes, - }.Build() - File_write_confirmed_proto = out.File - file_write_confirmed_proto_rawDesc = nil - file_write_confirmed_proto_goTypes = nil - file_write_confirmed_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/write-target/write_confirmed.proto b/relayer/monitoring/pb/platform/write-target/write_confirmed.proto deleted file mode 100644 index b1a6a644..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_confirmed.proto +++ /dev/null @@ -1,55 +0,0 @@ -syntax="proto3"; - -package platform.write_target; -option go_package = ".;write_target"; - -// WT confirmed the report was successfully written on-chain -message WriteConfirmed { - string node = 1; - string forwarder = 2; - string receiver = 3; - - // Report Info - uint32 report_id = 4; - bytes report_context = 5; - bytes report = 6; - uint32 signers_num = 7; - - // TODO: Is the report confirmed finalized on-chain, or just observed? - - // When was the report confirmed on-chain - string block_hash = 9; - string block_height = 10; - uint64 block_timestamp = 11; - - // Transmission Info - string transmitter = 12; - bool success = 13; - // TODO: what about EVM's TransmissionInfo parity? - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/platform/write-target/write_error.pb.go b/relayer/monitoring/pb/platform/write-target/write_error.pb.go deleted file mode 100644 index ae3e89e1..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_error.pb.go +++ /dev/null @@ -1,388 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: write_error.proto - -package write_target - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// WT errored while processing write request -type WriteError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Summary string `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"` - Cause string `protobuf:"bytes,3,opt,name=cause,proto3" json:"cause,omitempty"` - Node string `protobuf:"bytes,4,opt,name=node,proto3" json:"node,omitempty"` - Forwarder string `protobuf:"bytes,5,opt,name=forwarder,proto3" json:"forwarder,omitempty"` - Receiver string `protobuf:"bytes,6,opt,name=receiver,proto3" json:"receiver,omitempty"` - // Report Info - ReportId uint32 `protobuf:"varint,7,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *WriteError) Reset() { - *x = WriteError{} - if protoimpl.UnsafeEnabled { - mi := &file_write_error_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteError) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteError) ProtoMessage() {} - -func (x *WriteError) ProtoReflect() protoreflect.Message { - mi := &file_write_error_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteError.ProtoReflect.Descriptor instead. -func (*WriteError) Descriptor() ([]byte, []int) { - return file_write_error_proto_rawDescGZIP(), []int{0} -} - -func (x *WriteError) GetCode() uint32 { - if x != nil { - return x.Code - } - return 0 -} - -func (x *WriteError) GetSummary() string { - if x != nil { - return x.Summary - } - return "" -} - -func (x *WriteError) GetCause() string { - if x != nil { - return x.Cause - } - return "" -} - -func (x *WriteError) GetNode() string { - if x != nil { - return x.Node - } - return "" -} - -func (x *WriteError) GetForwarder() string { - if x != nil { - return x.Forwarder - } - return "" -} - -func (x *WriteError) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *WriteError) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *WriteError) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *WriteError) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *WriteError) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *WriteError) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *WriteError) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *WriteError) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *WriteError) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *WriteError) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *WriteError) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *WriteError) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *WriteError) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *WriteError) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *WriteError) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *WriteError) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *WriteError) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *WriteError) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_write_error_proto protoreflect.FileDescriptor - -var file_write_error_proto_rawDesc = []byte{ - 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xf1, 0x07, 0x0a, 0x0a, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, - 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, - 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, - 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, - 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, - 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, - 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, - 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, - 0x0a, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, - 0x64, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, - 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x65, 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x1b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x45, 0x6d, 0x69, 0x74, 0x42, 0x10, - 0x5a, 0x0e, 0x2e, 0x3b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_write_error_proto_rawDescOnce sync.Once - file_write_error_proto_rawDescData = file_write_error_proto_rawDesc -) - -func file_write_error_proto_rawDescGZIP() []byte { - file_write_error_proto_rawDescOnce.Do(func() { - file_write_error_proto_rawDescData = protoimpl.X.CompressGZIP(file_write_error_proto_rawDescData) - }) - return file_write_error_proto_rawDescData -} - -var file_write_error_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_write_error_proto_goTypes = []any{ - (*WriteError)(nil), // 0: platform.write_target.WriteError -} -var file_write_error_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_write_error_proto_init() } -func file_write_error_proto_init() { - if File_write_error_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_write_error_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WriteError); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_write_error_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_write_error_proto_goTypes, - DependencyIndexes: file_write_error_proto_depIdxs, - MessageInfos: file_write_error_proto_msgTypes, - }.Build() - File_write_error_proto = out.File - file_write_error_proto_rawDesc = nil - file_write_error_proto_goTypes = nil - file_write_error_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/write-target/write_error.proto b/relayer/monitoring/pb/platform/write-target/write_error.proto deleted file mode 100644 index 3e98d6c8..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_error.proto +++ /dev/null @@ -1,44 +0,0 @@ -syntax="proto3"; - -package platform.write_target; -option go_package = ".;write_target"; - -// WT errored while processing write request -message WriteError { - uint32 code = 1; - string summary = 2; - string cause = 3; - - string node = 4; - string forwarder = 5; - string receiver = 6; - - // Report Info - uint32 report_id = 7; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/platform/write-target/write_initiated.pb.go b/relayer/monitoring/pb/platform/write-target/write_initiated.pb.go deleted file mode 100644 index b0eeaf05..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_initiated.pb.go +++ /dev/null @@ -1,360 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: write_initiated.proto - -package write_target - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// WT initiated the processing of the write request -type WriteInitiated struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Forwarder string `protobuf:"bytes,2,opt,name=forwarder,proto3" json:"forwarder,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - // Report Info - ReportId uint32 `protobuf:"varint,4,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *WriteInitiated) Reset() { - *x = WriteInitiated{} - if protoimpl.UnsafeEnabled { - mi := &file_write_initiated_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteInitiated) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteInitiated) ProtoMessage() {} - -func (x *WriteInitiated) ProtoReflect() protoreflect.Message { - mi := &file_write_initiated_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteInitiated.ProtoReflect.Descriptor instead. -func (*WriteInitiated) Descriptor() ([]byte, []int) { - return file_write_initiated_proto_rawDescGZIP(), []int{0} -} - -func (x *WriteInitiated) GetNode() string { - if x != nil { - return x.Node - } - return "" -} - -func (x *WriteInitiated) GetForwarder() string { - if x != nil { - return x.Forwarder - } - return "" -} - -func (x *WriteInitiated) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *WriteInitiated) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *WriteInitiated) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *WriteInitiated) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *WriteInitiated) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *WriteInitiated) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *WriteInitiated) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *WriteInitiated) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *WriteInitiated) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *WriteInitiated) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *WriteInitiated) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *WriteInitiated) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *WriteInitiated) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *WriteInitiated) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *WriteInitiated) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *WriteInitiated) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *WriteInitiated) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *WriteInitiated) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_write_initiated_proto protoreflect.FileDescriptor - -var file_write_initiated_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xb1, - 0x07, 0x0a, 0x0e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x61, 0x6d, - 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x75, 0x6c, - 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x10, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, - 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x1a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x6d, 0x65, 0x74, 0x61, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, - 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1c, 0x6d, 0x65, - 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x21, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, - 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x65, 0x6d, 0x69, 0x74, 0x18, - 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x45, 0x6d, - 0x69, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x3b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_write_initiated_proto_rawDescOnce sync.Once - file_write_initiated_proto_rawDescData = file_write_initiated_proto_rawDesc -) - -func file_write_initiated_proto_rawDescGZIP() []byte { - file_write_initiated_proto_rawDescOnce.Do(func() { - file_write_initiated_proto_rawDescData = protoimpl.X.CompressGZIP(file_write_initiated_proto_rawDescData) - }) - return file_write_initiated_proto_rawDescData -} - -var file_write_initiated_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_write_initiated_proto_goTypes = []any{ - (*WriteInitiated)(nil), // 0: platform.write_target.WriteInitiated -} -var file_write_initiated_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_write_initiated_proto_init() } -func file_write_initiated_proto_init() { - if File_write_initiated_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_write_initiated_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WriteInitiated); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_write_initiated_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_write_initiated_proto_goTypes, - DependencyIndexes: file_write_initiated_proto_depIdxs, - MessageInfos: file_write_initiated_proto_msgTypes, - }.Build() - File_write_initiated_proto = out.File - file_write_initiated_proto_rawDesc = nil - file_write_initiated_proto_goTypes = nil - file_write_initiated_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/write-target/write_initiated.proto b/relayer/monitoring/pb/platform/write-target/write_initiated.proto deleted file mode 100644 index c8549bf3..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_initiated.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax="proto3"; - -package platform.write_target; -option go_package = ".;write_target"; - -// WT initiated the processing of the write request -message WriteInitiated { - string node = 1; - string forwarder = 2; - string receiver = 3; - - // Report Info - uint32 report_id = 4; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/platform/write-target/write_sent.pb.go b/relayer/monitoring/pb/platform/write-target/write_sent.pb.go deleted file mode 100644 index 7e4adbdb..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_sent.pb.go +++ /dev/null @@ -1,404 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: write_sent.proto - -package write_target - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// WT sent a transaction on-chain -// -// Notice: we publish txId (TXM ref) vs. txHash (N/A here) -type WriteSent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Forwarder string `protobuf:"bytes,2,opt,name=forwarder,proto3" json:"forwarder,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - // Report Info - ReportId uint32 `protobuf:"varint,4,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - // Transaction ID - tx reference as created by the WT, to be used for tracking TXM execution - TxId string `protobuf:"bytes,5,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` - // When was the transaction submitted - BlockHash string `protobuf:"bytes,7,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - BlockHeight string `protobuf:"bytes,8,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` - BlockTimestamp uint64 `protobuf:"varint,9,opt,name=block_timestamp,json=blockTimestamp,proto3" json:"block_timestamp,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *WriteSent) Reset() { - *x = WriteSent{} - if protoimpl.UnsafeEnabled { - mi := &file_write_sent_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteSent) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteSent) ProtoMessage() {} - -func (x *WriteSent) ProtoReflect() protoreflect.Message { - mi := &file_write_sent_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteSent.ProtoReflect.Descriptor instead. -func (*WriteSent) Descriptor() ([]byte, []int) { - return file_write_sent_proto_rawDescGZIP(), []int{0} -} - -func (x *WriteSent) GetNode() string { - if x != nil { - return x.Node - } - return "" -} - -func (x *WriteSent) GetForwarder() string { - if x != nil { - return x.Forwarder - } - return "" -} - -func (x *WriteSent) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *WriteSent) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *WriteSent) GetTxId() string { - if x != nil { - return x.TxId - } - return "" -} - -func (x *WriteSent) GetBlockHash() string { - if x != nil { - return x.BlockHash - } - return "" -} - -func (x *WriteSent) GetBlockHeight() string { - if x != nil { - return x.BlockHeight - } - return "" -} - -func (x *WriteSent) GetBlockTimestamp() uint64 { - if x != nil { - return x.BlockTimestamp - } - return 0 -} - -func (x *WriteSent) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *WriteSent) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *WriteSent) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *WriteSent) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *WriteSent) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *WriteSent) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *WriteSent) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *WriteSent) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *WriteSent) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *WriteSent) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *WriteSent) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *WriteSent) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *WriteSent) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *WriteSent) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *WriteSent) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *WriteSent) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_write_sent_proto protoreflect.FileDescriptor - -var file_write_sent_proto_rawDesc = []byte{ - 0x0a, 0x10, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xac, 0x08, 0x0a, 0x09, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, - 0x61, 0x69, 0x6e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, - 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x16, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, - 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, - 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, - 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, - 0x65, 0x74, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x75, - 0x6c, 0x6c, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, - 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x1a, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x17, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, - 0x6c, 0x6f, 0x77, 0x44, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, - 0x44, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, - 0x61, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, - 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, - 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, - 0x22, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, - 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x5f, 0x65, 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, 0x65, 0x74, - 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x45, 0x6d, 0x69, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x3b, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_write_sent_proto_rawDescOnce sync.Once - file_write_sent_proto_rawDescData = file_write_sent_proto_rawDesc -) - -func file_write_sent_proto_rawDescGZIP() []byte { - file_write_sent_proto_rawDescOnce.Do(func() { - file_write_sent_proto_rawDescData = protoimpl.X.CompressGZIP(file_write_sent_proto_rawDescData) - }) - return file_write_sent_proto_rawDescData -} - -var file_write_sent_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_write_sent_proto_goTypes = []any{ - (*WriteSent)(nil), // 0: platform.write_target.WriteSent -} -var file_write_sent_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_write_sent_proto_init() } -func file_write_sent_proto_init() { - if File_write_sent_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_write_sent_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WriteSent); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_write_sent_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_write_sent_proto_goTypes, - DependencyIndexes: file_write_sent_proto_depIdxs, - MessageInfos: file_write_sent_proto_msgTypes, - }.Build() - File_write_sent_proto = out.File - file_write_sent_proto_rawDesc = nil - file_write_sent_proto_goTypes = nil - file_write_sent_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/write-target/write_sent.proto b/relayer/monitoring/pb/platform/write-target/write_sent.proto deleted file mode 100644 index 40c4d4f4..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_sent.proto +++ /dev/null @@ -1,50 +0,0 @@ -syntax="proto3"; - -package platform.write_target; -option go_package = ".;write_target"; - -// WT sent a transaction on-chain -// -// Notice: we publish txId (TXM ref) vs. txHash (N/A here) -message WriteSent { - string node = 1; - string forwarder = 2; - string receiver = 3; - - // Report Info - uint32 report_id = 4; - - // Transaction ID - tx reference as created by the WT, to be used for tracking TXM execution - string tx_id = 5; - - // When was the transaction submitted - string block_hash = 7; - string block_height = 8; - uint64 block_timestamp = 9; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/monitoring/pb/platform/write-target/write_skipped.pb.go b/relayer/monitoring/pb/platform/write-target/write_skipped.pb.go deleted file mode 100644 index db63e5b1..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_skipped.pb.go +++ /dev/null @@ -1,368 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.2 -// protoc v4.25.4 -// source: write_skipped.proto - -package write_target - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// WT skipped the write request -type WriteSkipped struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Node string `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - Forwarder string `protobuf:"bytes,2,opt,name=forwarder,proto3" json:"forwarder,omitempty"` - Receiver string `protobuf:"bytes,3,opt,name=receiver,proto3" json:"receiver,omitempty"` - ReportId uint32 `protobuf:"varint,4,opt,name=report_id,json=reportId,proto3" json:"report_id,omitempty"` - Reason string `protobuf:"bytes,5,opt,name=reason,proto3" json:"reason,omitempty"` - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - MetaSourceId string `protobuf:"bytes,20,opt,name=meta_source_id,json=metaSourceId,proto3" json:"meta_source_id,omitempty"` - // Execution Context - Chain - MetaChainFamilyName string `protobuf:"bytes,21,opt,name=meta_chain_family_name,json=metaChainFamilyName,proto3" json:"meta_chain_family_name,omitempty"` - MetaChainId string `protobuf:"bytes,22,opt,name=meta_chain_id,json=metaChainId,proto3" json:"meta_chain_id,omitempty"` - MetaNetworkName string `protobuf:"bytes,23,opt,name=meta_network_name,json=metaNetworkName,proto3" json:"meta_network_name,omitempty"` - MetaNetworkNameFull string `protobuf:"bytes,24,opt,name=meta_network_name_full,json=metaNetworkNameFull,proto3" json:"meta_network_name_full,omitempty"` - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId string `protobuf:"bytes,25,opt,name=meta_workflow_id,json=metaWorkflowId,proto3" json:"meta_workflow_id,omitempty"` - MetaWorkflowOwner string `protobuf:"bytes,26,opt,name=meta_workflow_owner,json=metaWorkflowOwner,proto3" json:"meta_workflow_owner,omitempty"` - MetaWorkflowExecutionId string `protobuf:"bytes,27,opt,name=meta_workflow_execution_id,json=metaWorkflowExecutionId,proto3" json:"meta_workflow_execution_id,omitempty"` - MetaWorkflowName string `protobuf:"bytes,28,opt,name=meta_workflow_name,json=metaWorkflowName,proto3" json:"meta_workflow_name,omitempty"` - MetaWorkflowDonId uint32 `protobuf:"varint,29,opt,name=meta_workflow_don_id,json=metaWorkflowDonId,proto3" json:"meta_workflow_don_id,omitempty"` - MetaWorkflowDonConfigVersion uint32 `protobuf:"varint,30,opt,name=meta_workflow_don_config_version,json=metaWorkflowDonConfigVersion,proto3" json:"meta_workflow_don_config_version,omitempty"` - MetaReferenceId string `protobuf:"bytes,31,opt,name=meta_reference_id,json=metaReferenceId,proto3" json:"meta_reference_id,omitempty"` - // Execution Context - Capability - MetaCapabilityType string `protobuf:"bytes,32,opt,name=meta_capability_type,json=metaCapabilityType,proto3" json:"meta_capability_type,omitempty"` - MetaCapabilityId string `protobuf:"bytes,33,opt,name=meta_capability_id,json=metaCapabilityId,proto3" json:"meta_capability_id,omitempty"` - MetaCapabilityTimestampStart uint64 `protobuf:"varint,34,opt,name=meta_capability_timestamp_start,json=metaCapabilityTimestampStart,proto3" json:"meta_capability_timestamp_start,omitempty"` - MetaCapabilityTimestampEmit uint64 `protobuf:"varint,35,opt,name=meta_capability_timestamp_emit,json=metaCapabilityTimestampEmit,proto3" json:"meta_capability_timestamp_emit,omitempty"` -} - -func (x *WriteSkipped) Reset() { - *x = WriteSkipped{} - if protoimpl.UnsafeEnabled { - mi := &file_write_skipped_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteSkipped) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteSkipped) ProtoMessage() {} - -func (x *WriteSkipped) ProtoReflect() protoreflect.Message { - mi := &file_write_skipped_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WriteSkipped.ProtoReflect.Descriptor instead. -func (*WriteSkipped) Descriptor() ([]byte, []int) { - return file_write_skipped_proto_rawDescGZIP(), []int{0} -} - -func (x *WriteSkipped) GetNode() string { - if x != nil { - return x.Node - } - return "" -} - -func (x *WriteSkipped) GetForwarder() string { - if x != nil { - return x.Forwarder - } - return "" -} - -func (x *WriteSkipped) GetReceiver() string { - if x != nil { - return x.Receiver - } - return "" -} - -func (x *WriteSkipped) GetReportId() uint32 { - if x != nil { - return x.ReportId - } - return 0 -} - -func (x *WriteSkipped) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -func (x *WriteSkipped) GetMetaSourceId() string { - if x != nil { - return x.MetaSourceId - } - return "" -} - -func (x *WriteSkipped) GetMetaChainFamilyName() string { - if x != nil { - return x.MetaChainFamilyName - } - return "" -} - -func (x *WriteSkipped) GetMetaChainId() string { - if x != nil { - return x.MetaChainId - } - return "" -} - -func (x *WriteSkipped) GetMetaNetworkName() string { - if x != nil { - return x.MetaNetworkName - } - return "" -} - -func (x *WriteSkipped) GetMetaNetworkNameFull() string { - if x != nil { - return x.MetaNetworkNameFull - } - return "" -} - -func (x *WriteSkipped) GetMetaWorkflowId() string { - if x != nil { - return x.MetaWorkflowId - } - return "" -} - -func (x *WriteSkipped) GetMetaWorkflowOwner() string { - if x != nil { - return x.MetaWorkflowOwner - } - return "" -} - -func (x *WriteSkipped) GetMetaWorkflowExecutionId() string { - if x != nil { - return x.MetaWorkflowExecutionId - } - return "" -} - -func (x *WriteSkipped) GetMetaWorkflowName() string { - if x != nil { - return x.MetaWorkflowName - } - return "" -} - -func (x *WriteSkipped) GetMetaWorkflowDonId() uint32 { - if x != nil { - return x.MetaWorkflowDonId - } - return 0 -} - -func (x *WriteSkipped) GetMetaWorkflowDonConfigVersion() uint32 { - if x != nil { - return x.MetaWorkflowDonConfigVersion - } - return 0 -} - -func (x *WriteSkipped) GetMetaReferenceId() string { - if x != nil { - return x.MetaReferenceId - } - return "" -} - -func (x *WriteSkipped) GetMetaCapabilityType() string { - if x != nil { - return x.MetaCapabilityType - } - return "" -} - -func (x *WriteSkipped) GetMetaCapabilityId() string { - if x != nil { - return x.MetaCapabilityId - } - return "" -} - -func (x *WriteSkipped) GetMetaCapabilityTimestampStart() uint64 { - if x != nil { - return x.MetaCapabilityTimestampStart - } - return 0 -} - -func (x *WriteSkipped) GetMetaCapabilityTimestampEmit() uint64 { - if x != nil { - return x.MetaCapabilityTimestampEmit - } - return 0 -} - -var File_write_skipped_proto protoreflect.FileDescriptor - -var file_write_skipped_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xc7, 0x07, 0x0a, - 0x0c, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x72, 0x12, - 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, - 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x65, 0x74, - 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x75, 0x6c, 0x6c, - 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, - 0x72, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, - 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, - 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x77, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x1d, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, - 0x77, 0x44, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x20, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x77, - 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, - 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x22, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x1c, 0x6d, 0x65, 0x74, 0x61, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x65, - 0x6d, 0x69, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x6d, 0x65, 0x74, 0x61, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x45, 0x6d, 0x69, 0x74, 0x42, 0x10, 0x5a, 0x0e, 0x2e, 0x3b, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_write_skipped_proto_rawDescOnce sync.Once - file_write_skipped_proto_rawDescData = file_write_skipped_proto_rawDesc -) - -func file_write_skipped_proto_rawDescGZIP() []byte { - file_write_skipped_proto_rawDescOnce.Do(func() { - file_write_skipped_proto_rawDescData = protoimpl.X.CompressGZIP(file_write_skipped_proto_rawDescData) - }) - return file_write_skipped_proto_rawDescData -} - -var file_write_skipped_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_write_skipped_proto_goTypes = []any{ - (*WriteSkipped)(nil), // 0: platform.write_target.WriteSkipped -} -var file_write_skipped_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_write_skipped_proto_init() } -func file_write_skipped_proto_init() { - if File_write_skipped_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_write_skipped_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*WriteSkipped); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_write_skipped_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_write_skipped_proto_goTypes, - DependencyIndexes: file_write_skipped_proto_depIdxs, - MessageInfos: file_write_skipped_proto_msgTypes, - }.Build() - File_write_skipped_proto = out.File - file_write_skipped_proto_rawDesc = nil - file_write_skipped_proto_goTypes = nil - file_write_skipped_proto_depIdxs = nil -} diff --git a/relayer/monitoring/pb/platform/write-target/write_skipped.proto b/relayer/monitoring/pb/platform/write-target/write_skipped.proto deleted file mode 100644 index b9c37780..00000000 --- a/relayer/monitoring/pb/platform/write-target/write_skipped.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax="proto3"; - -package platform.write_target; -option go_package = ".;write_target"; - -// WT skipped the write request -message WriteSkipped { - string node = 1; - string forwarder = 2; - string receiver = 3; - uint32 report_id = 4; - - string reason = 5; - - // [Execution Context] - // TODO: replace with a proto reference once supported - // Execution Context - Source - string meta_source_id = 20; - - // Execution Context - Chain - string meta_chain_family_name = 21; - string meta_chain_id = 22; - string meta_network_name = 23; - string meta_network_name_full = 24; - - // Execution Context - Workflow (capabilities.RequestMetadata) - string meta_workflow_id = 25; - string meta_workflow_owner = 26; - string meta_workflow_execution_id = 27; - string meta_workflow_name = 28; - uint32 meta_workflow_don_id = 29; - uint32 meta_workflow_don_config_version = 30; - string meta_reference_id = 31; - - // Execution Context - Capability - string meta_capability_type = 32; - string meta_capability_id = 33; - uint64 meta_capability_timestamp_start = 34; - uint64 meta_capability_timestamp_emit = 35; -} diff --git a/relayer/relay.go b/relayer/relay.go index 9c36451c..ebdafc34 100644 --- a/relayer/relay.go +++ b/relayer/relay.go @@ -12,7 +12,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/utils" chain "github.com/smartcontractkit/chainlink-aptos/relayer/chain" - "github.com/smartcontractkit/chainlink-aptos/relayer/write_target/aptos" + write_target "github.com/smartcontractkit/chainlink-aptos/relayer/write_target" ) var _ types.Relayer = (*relayer)(nil) //nolint:staticcheck @@ -83,7 +83,7 @@ func (r *relayer) HealthReport() map[string]error { return map[string]error{r.Name(): r.Healthy()} } -func (r *relayer) NewChainWriter(ctx context.Context, config []byte) (types.ChainWriter, error) { +func (r *relayer) NewContractWriter(ctx context.Context, config []byte) (types.ContractWriter, error) { return nil, errors.New("chain writer is not supported for aptos") } @@ -147,3 +147,7 @@ func (r *relayer) ListNodeStatuses(ctx context.Context, pageSize int32, pageToke func (r *relayer) Transact(ctx context.Context, from, to string, amount *big.Int, balanceCheck bool) error { return r.chain.Transact(ctx, from, to, amount, balanceCheck) } + +func (r *relayer) Replay(ctx context.Context, fromBlock string, args map[string]any) error { + return errors.ErrUnsupported +} diff --git a/relayer/report/data_feeds/id.go b/relayer/report/data_feeds/id.go deleted file mode 100644 index 20421c43..00000000 --- a/relayer/report/data_feeds/id.go +++ /dev/null @@ -1,92 +0,0 @@ -package data_feeds - -import ( - "encoding/hex" - "fmt" -) - -// FeedID represents a 32-byte feed ID -type FeedID [32]byte - -// NewFeedID creates a FeedID from a 32-byte array -func NewFeedID(feedID [32]byte) FeedID { - return feedID -} - -// NewFeedIDFromHex creates a FeedID from a hex string -func NewFeedIDFromHex(feedID string) (FeedID, error) { - b, err := hexDecodeStringAsByte32(feedID) - if err != nil { - return FeedID{}, err - } - return NewFeedID(b), nil -} - -// hexDecodeStringAsByte32 decodes a hex string into a 32-byte array -func hexDecodeStringAsByte32(s string) ([32]byte, error) { - var b [32]byte - decoded, err := hex.DecodeString(s) - if err != nil { - return b, err - } - if len(decoded) != 32 { - return b, fmt.Errorf("decoded string is not 32 bytes long") - } - copy(b[:], decoded) - return b, nil -} - -// String returns the FeedID as a 0x prefixed hex string -func (id FeedID) String() string { - return "0x" + hex.EncodeToString(id[:]) -} - -// GetReportType returns the report type sourced from the feedId -// -// [DF2.0 | Data ID Final Specification](https://docs.google.com/document/d/13ciwTx8lSUfyz1IdETwpxlIVSn1lwYzGtzOBBTpl5Vg/edit?usp=sharing) -// Byte 0: ID Format - 256 options (base case) -// - Incrementing from 0 -// - 0x00 = current Data Streams format -// - 0x01 = this format -// - 0x02 = PoR self-serve SA team allocated IDs (15 bytes) -// - 0x03 = PoR from feeds team -// - 0xFF can extend ID format to subsequent bytes, so 0xFF00 is first, then 0xFF01, etc. -func (id FeedID) GetReportType() uint8 { - // Get the first byte of the feedId - return id[0] -} - -// GetDecimals returns the number of decimals for the feed, derived from the feedId -// -// [DF2.0 | Data ID Final Specification](https://docs.google.com/document/d/13ciwTx8lSUfyz1IdETwpxlIVSn1lwYzGtzOBBTpl5Vg/edit?usp=sharing) -// Byte 7: Data Type - 256 options -// - Given the variety of buckets, a data type for the buckets will be useful for correct parsing -// - 0x00 = Boolean -// - 0x01= String -// - 0x02 = Address -// - 0x03 = Bytes -// - 0x04 = Bundle (Encoded Struct) -// - 0x05-0x1F reserved -// - 0x20 = Decimal0 (Integer) -// - 0x21 = Decimal1 (Float w/ 1 decimal place) -// - … -// - 0x28 = Decimal8 -// - … -// - 0x32 = Decimal18 -// - … -// - 0x60 = Decimal64 -// - 0x61-0xFF reserved -func (id FeedID) GetDataType() uint8 { - // Get the 8th byte (index 7) of the feedId - return id[7] -} - -// GetDecimals returns the number of decimals for the fe7], derived from the data type -// Returns false if the data type is not a number -func GetDecimals(dataType uint8) (uint8, bool) { - if dataType >= 0x20 && dataType <= 0x60 { - return dataType - 0x20, true - } - // Else if the data type is not a number - return 0, false -} diff --git a/relayer/report/data_feeds/id_test.go b/relayer/report/data_feeds/id_test.go deleted file mode 100644 index 3f93a919..00000000 --- a/relayer/report/data_feeds/id_test.go +++ /dev/null @@ -1,148 +0,0 @@ -package data_feeds - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestGetDecimals(t *testing.T) { - tests := []struct { - name string - dataType uint8 - expected uint8 - isNumber bool - }{ - { - name: "Decimal0 (Integer)", - dataType: 0x20, - expected: 0, - isNumber: true, - }, - { - name: "Decimal8", - dataType: 0x28, - expected: 8, - isNumber: true, - }, - { - name: "Decimal18", - dataType: 0x32, - expected: 18, - isNumber: true, - }, - { - name: "Decimal64", - dataType: 0x60, - expected: 64, - isNumber: true, - }, - { - name: "Non-numeric data type", - dataType: 0x01, - expected: 0, - isNumber: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - decimals, isNumber := GetDecimals(tt.dataType) - require.Equal(t, tt.expected, decimals) - require.Equal(t, tt.isNumber, isNumber) - }) - } -} - -// Examples: [DF2.0 | Data ID Final Specification](https://docs.google.com/document/d/13ciwTx8lSUfyz1IdETwpxlIVSn1lwYzGtzOBBTpl5Vg/edit?usp=sharing) -// 0x01 8e16c39e 0000 32 000000000000000000000000000000000000000000000000 = ETH/USD Benchmark Price with 18 decimals -// 0x01 e880c2b3 0000 28 000000000000000000000000000000000000000000000000 = BTC/USD Benchmark Price with 8 decimals -// 0x01 e880c2b3 0001 32 000000000000000000000000000000000000000000000000 = BTC/USD Best Bid Price with 18 decimals -// 0x01 e880c2b3 0008 20 000000000000000000000000000000000000000000000000 = BTC/USD 24-hour global volume as integer -// 0x01 8933b5e4 0010 32 000000000000000000000000000000000000000000000000 = ARK BTC NAV value with 18 decimals -// 0x01 8933b5e4 0011 01 000000000000000000000000000000000000000000000000 = ARK BTC NAV issuer name as a string -// 0x01 8933b5e4 0012 02 000000000000000000000000000000000000000000000000 = ARK BTC NAV registry location as an address -// 0x01 1e22d6bf 0003 32 000000000000000000000000000000000000000000000000 = X/Y Price with 18 decimals -// 0x01 a80ff216 0003 28 000000000000000000000000000000000000000000000000 = X/Y Price with 8 decimals -func TestFeedIDGetDataTypeDecimals(t *testing.T) { - tests := []struct { - name string - feedId string - expected uint8 - isNumber bool - }{ - { - name: "ETH/USD Benchmark Price with 18 decimals", - feedId: "018e16c39e000032000000000000000000000000000000000000000000000000", - expected: 0x32, - isNumber: true, - }, - { - name: "BTC/USD Benchmark Price with 8 decimals", - feedId: "01e880c2b3000028000000000000000000000000000000000000000000000000", - expected: 0x28, - isNumber: true, - }, - { - name: "BTC/USD Best Bid Price with 18 decimals", - feedId: "01e880c2b3000132000000000000000000000000000000000000000000000000", - expected: 0x32, - isNumber: true, - }, - { - name: "BTC/USD 24-hour global volume as integer", - feedId: "01e880c2b3000820000000000000000000000000000000000000000000000000", - expected: 0x20, - isNumber: true, - }, - { - name: "ARK BTC NAV value with 18 decimals", - feedId: "018933b5e4001032000000000000000000000000000000000000000000000000", - expected: 0x32, - isNumber: true, - }, - { - name: "ARK BTC NAV issuer name as a string", - feedId: "018933b5e4001101000000000000000000000000000000000000000000000000", - expected: 0x01, - isNumber: false, - }, - { - name: "ARK BTC NAV registry location as an address", - feedId: "018933b5e4001202000000000000000000000000000000000000000000000000", - expected: 0x02, - isNumber: false, - }, - { - name: "X/Y Price with 18 decimals", - feedId: "011e22d6bf000332000000000000000000000000000000000000000000000000", - expected: 0x32, - isNumber: true, - }, - { - name: "X/Y Price with 8 decimals", - feedId: "01a80ff216000328000000000000000000000000000000000000000000000000", - expected: 0x28, - isNumber: true, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - feedId, err := NewFeedIDFromHex(tt.feedId) - require.NoError(t, err) - - dataType := feedId.GetDataType() - require.Equal(t, tt.expected, dataType) - - decimals, isNumber := GetDecimals(dataType) - require.Equal(t, tt.isNumber, isNumber) - - if isNumber { - require.Equal(t, tt.expected-0x20, decimals) - } else { - require.Equal(t, uint8(0), decimals) - } - }) - } -} diff --git a/relayer/report/mercury/common/types.go b/relayer/report/mercury/common/types.go deleted file mode 100644 index d3500127..00000000 --- a/relayer/report/mercury/common/types.go +++ /dev/null @@ -1,49 +0,0 @@ -package common - -import ( - "encoding/binary" - "fmt" - - "github.com/ethereum/go-ethereum/accounts/abi" -) - -// Report represents a simplified Mercury report which only contains the feedId -// Used to extract the report type, and to choose the correct decoder -type Report struct { - FeedId [32]byte -} - -var schema = GetSchema() - -func GetSchema() abi.Arguments { - mustNewType := func(t string) abi.Type { - result, err := abi.NewType(t, "", []abi.ArgumentMarshaling{}) - if err != nil { - panic(fmt.Sprintf("Unexpected error during abi.NewType: %s", err)) - } - return result - } - return abi.Arguments([]abi.Argument{ - {Name: "feedId", Type: mustNewType("bytes32")}, - }) -} - -// Decode is made available to external users (i.e. mercury server) -func Decode(report []byte) (*Report, error) { - values, err := schema.Unpack(report) - if err != nil { - return nil, fmt.Errorf("failed to decode report: %w", err) - } - decoded := new(Report) - if err = schema.Copy(decoded, values); err != nil { - return nil, fmt.Errorf("failed to copy report values to struct: %w", err) - } - return decoded, nil -} - -// GetReportType returns the report type sourced from the feedId -// Notice: Data Stream (Asset DON) feed ID and the Data Stream feed ID are separate type of IDs, with different schemas -func GetReportType(feedId [32]byte) uint16 { - // Get the first 2 bytes of the feedId - return binary.BigEndian.Uint16(feedId[:2]) -} diff --git a/relayer/report/mercury/common/types_test.go b/relayer/report/mercury/common/types_test.go deleted file mode 100644 index e0e68847..00000000 --- a/relayer/report/mercury/common/types_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package common - -import ( - "encoding/hex" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestDecodeReport(t *testing.T) { - // Hex-encoded Mercury report data (example) - // Test case sourced from: contracts/data-feeds/sources/registry.move#L661 - encoded := "0003fbba4fce42f65d6032b18aee53efdf526cc734ad296cb57565979d883bdd0000000000000000000000000000000000000000000000000000000066ed173e0000000000000000000000000000000000000000000000000000000066ed174200000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000066ee68c2000000000000000000000000000000000000000000000d808cc35e6ed670bd00000000000000000000000000000000000000000000000d808590c35425347980000000000000000000000000000000000000000000000d8093f5f989878e7c00" - - // Decode the hex data - decoded, err := hex.DecodeString(encoded) - require.NoError(t, err) - - m, err := Decode(decoded) - require.NoError(t, err) - - require.Equal(t, uint16(3), GetReportType(m.FeedId)) -} diff --git a/relayer/report/mercury/v3/types.go b/relayer/report/mercury/v3/types.go deleted file mode 100644 index 02a04775..00000000 --- a/relayer/report/mercury/v3/types.go +++ /dev/null @@ -1,57 +0,0 @@ -// TODO: duplicate of https://github.com/smartcontractkit/chainlink/blob/develop/core/services/relay/evm/mercury/v3/types/types.go -package v3 - -import ( - "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/accounts/abi" -) - -var schema = GetSchema() - -func GetSchema() abi.Arguments { - mustNewType := func(t string) abi.Type { - result, err := abi.NewType(t, "", []abi.ArgumentMarshaling{}) - if err != nil { - panic(fmt.Sprintf("Unexpected error during abi.NewType: %s", err)) - } - return result - } - return abi.Arguments([]abi.Argument{ - {Name: "feedId", Type: mustNewType("bytes32")}, - {Name: "validFromTimestamp", Type: mustNewType("uint32")}, - {Name: "observationsTimestamp", Type: mustNewType("uint32")}, - {Name: "nativeFee", Type: mustNewType("uint192")}, - {Name: "linkFee", Type: mustNewType("uint192")}, - {Name: "expiresAt", Type: mustNewType("uint32")}, - {Name: "benchmarkPrice", Type: mustNewType("int192")}, - {Name: "bid", Type: mustNewType("int192")}, - {Name: "ask", Type: mustNewType("int192")}, - }) -} - -type Report struct { - FeedId [32]byte - ObservationsTimestamp uint32 - BenchmarkPrice *big.Int - Bid *big.Int - Ask *big.Int - ValidFromTimestamp uint32 - ExpiresAt uint32 - LinkFee *big.Int - NativeFee *big.Int -} - -// Decode is made available to external users (i.e. mercury server) -func Decode(report []byte) (*Report, error) { - values, err := schema.Unpack(report) - if err != nil { - return nil, fmt.Errorf("failed to decode report: %w", err) - } - decoded := new(Report) - if err = schema.Copy(decoded, values); err != nil { - return nil, fmt.Errorf("failed to copy report values to struct: %w", err) - } - return decoded, nil -} diff --git a/relayer/report/mercury/v3/types_test.go b/relayer/report/mercury/v3/types_test.go deleted file mode 100644 index c3b73a87..00000000 --- a/relayer/report/mercury/v3/types_test.go +++ /dev/null @@ -1,42 +0,0 @@ -package v3 - -import ( - "encoding/hex" - "math/big" - "testing" - - "github.com/stretchr/testify/require" -) - -// Helper function to create a new big.Int from a string -func mustBigNewString(s string, base int) *big.Int { - n := new(big.Int) - n, _ = n.SetString(s, base) - return n -} - -func TestDecodeReport(t *testing.T) { - // Hex-encoded Mercury report data (example) - // Test case sourced from: contracts/data-feeds/sources/registry.move#L661 - encoded := "0003fbba4fce42f65d6032b18aee53efdf526cc734ad296cb57565979d883bdd0000000000000000000000000000000000000000000000000000000066ed173e0000000000000000000000000000000000000000000000000000000066ed174200000000000000007fffffffffffffffffffffffffffffffffffffffffffffff00000000000000007fffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000066ee68c2000000000000000000000000000000000000000000000d808cc35e6ed670bd00000000000000000000000000000000000000000000000d808590c35425347980000000000000000000000000000000000000000000000d8093f5f989878e7c00" - - // Decode the hex data - decoded, err := hex.DecodeString(encoded) - require.NoError(t, err) - - expectedData := Report{ - FeedId: [32]uint8{0x0, 0x3, 0xfb, 0xba, 0x4f, 0xce, 0x42, 0xf6, 0x5d, 0x60, 0x32, 0xb1, 0x8a, 0xee, 0x53, 0xef, 0xdf, 0x52, 0x6c, 0xc7, 0x34, 0xad, 0x29, 0x6c, 0xb5, 0x75, 0x65, 0x97, 0x9d, 0x88, 0x3b, 0xdd}, - ObservationsTimestamp: 0x66ed1742, - BenchmarkPrice: mustBigNewString("000d808cc35e6ed670bd00", 16), - Bid: mustBigNewString("63761571925910070000000", 10), - Ask: mustBigNewString("63762609220802160000000", 10), - ValidFromTimestamp: 0x66ed173e, - ExpiresAt: 0x66ee68c2, - LinkFee: mustBigNewString("3138550867693340381917894711603833208051177722232017256447", 10), - NativeFee: mustBigNewString("3138550867693340381917894711603833208051177722232017256447", 10), - } - - m, err := Decode(decoded) - require.NoError(t, err) - require.Equal(t, expectedData, *m) -} diff --git a/relayer/report/mercury/v4/types.go b/relayer/report/mercury/v4/types.go deleted file mode 100644 index 4079103f..00000000 --- a/relayer/report/mercury/v4/types.go +++ /dev/null @@ -1,55 +0,0 @@ -// TODO: duplicate of https://github.com/smartcontractkit/chainlink/blob/develop/core/services/relay/evm/mercury/v4/types/types.go -package v4 - -import ( - "fmt" - "math/big" - - "github.com/ethereum/go-ethereum/accounts/abi" -) - -var schema = GetSchema() - -func GetSchema() abi.Arguments { - mustNewType := func(t string) abi.Type { - result, err := abi.NewType(t, "", []abi.ArgumentMarshaling{}) - if err != nil { - panic(fmt.Sprintf("Unexpected error during abi.NewType: %s", err)) - } - return result - } - return abi.Arguments([]abi.Argument{ - {Name: "feedId", Type: mustNewType("bytes32")}, - {Name: "validFromTimestamp", Type: mustNewType("uint32")}, - {Name: "observationsTimestamp", Type: mustNewType("uint32")}, - {Name: "nativeFee", Type: mustNewType("uint192")}, - {Name: "linkFee", Type: mustNewType("uint192")}, - {Name: "expiresAt", Type: mustNewType("uint32")}, - {Name: "benchmarkPrice", Type: mustNewType("int192")}, - {Name: "marketStatus", Type: mustNewType("uint32")}, - }) -} - -type Report struct { - FeedId [32]byte - ObservationsTimestamp uint32 - BenchmarkPrice *big.Int - ValidFromTimestamp uint32 - ExpiresAt uint32 - LinkFee *big.Int - NativeFee *big.Int - MarketStatus uint32 -} - -// Decode is made available to external users (i.e. mercury server) -func Decode(report []byte) (*Report, error) { - values, err := schema.Unpack(report) - if err != nil { - return nil, fmt.Errorf("failed to decode report: %w", err) - } - decoded := new(Report) - if err = schema.Copy(decoded, values); err != nil { - return nil, fmt.Errorf("failed to copy report values to struct: %w", err) - } - return decoded, nil -} diff --git a/relayer/report/platform/types.go b/relayer/report/platform/types.go deleted file mode 100644 index 37d41761..00000000 --- a/relayer/report/platform/types.go +++ /dev/null @@ -1,107 +0,0 @@ -package platform - -import ( - "bytes" - "encoding/binary" - "encoding/hex" - "fmt" - - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" -) - -// Report represents an OCR3 report with metadata and data -// version | workflow_execution_id | timestamp | don_id | config_version | ... | data -type Report struct { - types.Metadata - Data []byte -} - -// Decode decodes a report from raw bytes -func Decode(rawReport []byte) (*Report, error) { - if len(rawReport) < 109 { - return nil, fmt.Errorf("invalid report length") - } - - report := &Report{} - buf := bytes.NewReader(rawReport) - - // Decode version - var versionByte byte - if err := binary.Read(buf, binary.BigEndian, &versionByte); err != nil { - return nil, err - } - report.Version = uint32(versionByte) - - // Notice: we only support version 1 currently - if report.Version != 1 { - return nil, fmt.Errorf("invalid report version: %d", report.Version) - } - - // Decode workflow_execution_id - var workflowExecutionIDBytes [32]byte - if _, err := buf.Read(workflowExecutionIDBytes[:]); err != nil { - return nil, err - } - // TODO: should we prefix with 0x? - report.ExecutionID = hex.EncodeToString(workflowExecutionIDBytes[:]) - - // Decode timestamp - var timestampBytes [4]byte - if _, err := buf.Read(timestampBytes[:]); err != nil { - return nil, err - } - report.Timestamp = binary.BigEndian.Uint32(timestampBytes[:]) - - // Decode don_id - var donIDBytes [4]byte - if _, err := buf.Read(donIDBytes[:]); err != nil { - return nil, err - } - report.DONID = binary.BigEndian.Uint32(donIDBytes[:]) - - // Decode config_version - var configVersionBytes [4]byte - if _, err := buf.Read(configVersionBytes[:]); err != nil { - return nil, err - } - report.DONConfigVersion = binary.BigEndian.Uint32(configVersionBytes[:]) - - // Decode workflow_id - var workflowIDBytes [32]byte - if _, err := buf.Read(workflowIDBytes[:]); err != nil { - return nil, err - } - // TODO: should we prefix with 0x? - report.WorkflowID = hex.EncodeToString(workflowIDBytes[:]) - - // Decode workflow_name (UTF-8) - var workflowNameBytes [10]byte - if _, err := buf.Read(workflowNameBytes[:]); err != nil { - return nil, err - } - report.WorkflowName = hex.EncodeToString(workflowNameBytes[:]) - - // Decode workflow_owner - var workflowOwnerBytes [20]byte - if _, err := buf.Read(workflowOwnerBytes[:]); err != nil { - return nil, err - } - // TODO: should we prefix with 0x? - report.WorkflowOwner = hex.EncodeToString(workflowOwnerBytes[:]) - - // Decode report_id - var reportIDBytes [2]byte - if _, err := buf.Read(reportIDBytes[:]); err != nil { - return nil, err - } - // TODO: should we prefix with 0x? - report.ReportID = hex.EncodeToString(reportIDBytes[:]) - - // Decode data - report.Data = make([]byte, buf.Len()) - if _, err := buf.Read(report.Data); err != nil { - return nil, err - } - - return report, nil -} diff --git a/relayer/report/platform/types_test.go b/relayer/report/platform/types_test.go deleted file mode 100644 index 54891bbf..00000000 --- a/relayer/report/platform/types_test.go +++ /dev/null @@ -1,37 +0,0 @@ -package platform - -import ( - "encoding/base64" - "encoding/hex" - "testing" - - "github.com/stretchr/testify/require" -) - -func TestDecodeReport(t *testing.T) { - // Base64-encoded report data (example) - // version | workflow_execution_id | timestamp | don_id | config_version | ... | data - encoded := "AYFtgPpLuLNQysw6LjlSNrzGuBOwVoth7qC9PmunIY3TZvW/cAAAAAEAAAABvAbzAOeX1ahXVjehSq4T4/hQgAjR/FT0xGEf/xemjLAwMDAwRk9PQkFSAAAAAAAAAAAAAAAAAAAAAAAAAKoAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAMREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAMREREREREREQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZvW/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm9b9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnBQGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJQlAAMiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAMiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZvW/aQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABm9b9pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABnBQGpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASUJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJQl" - - // Decode the base64 data - rawReport, err := base64.StdEncoding.DecodeString(encoded) - require.NoError(t, err) - - r, err := Decode(rawReport) - require.NoError(t, err) - require.Equal(t, uint32(1), r.Version) - require.Equal(t, "816d80fa4bb8b350cacc3a2e395236bcc6b813b0568b61eea0bd3e6ba7218dd3", r.ExecutionID) - require.Equal(t, uint32(1727381360), r.Timestamp) - require.Equal(t, uint32(0x01), r.DONID) - require.Equal(t, uint32(0x01), r.DONConfigVersion) - - require.Equal(t, "bc06f300e797d5a8575637a14aae13e3f8508008d1fc54f4c4611fff17a68cb0", r.WorkflowID) - require.Equal(t, "30303030464f4f424152", r.WorkflowName) - - workflowNameBytes, err := hex.DecodeString(r.WorkflowName) - require.NoError(t, err) - - require.Equal(t, "0000FOOBAR", string(workflowNameBytes)) - require.Equal(t, "00000000000000000000000000000000000000aa", r.WorkflowOwner) - require.Equal(t, "0001", r.ReportID) -} diff --git a/relayer/utils/retry.go b/relayer/utils/retry.go deleted file mode 100644 index dd88b92d..00000000 --- a/relayer/utils/retry.go +++ /dev/null @@ -1,59 +0,0 @@ -package utils - -import ( - "context" - "fmt" - "time" - - "github.com/google/uuid" - "github.com/jpillora/backoff" - - "github.com/smartcontractkit/chainlink-common/pkg/logger" -) - -// CtxKeyTracingID is the context key for tracing ID -const CtxKeyTracingID = "tracingID" - -// Exponential backoff (default) is used to handle retries with increasing wait times in case of errors -var BackoffStrategyDefault = backoff.Backoff{ - Min: 100 * time.Millisecond, - Max: 3 * time.Second, - Factor: 2, -} - -// WithRetryStrategy applies a retry strategy to a given function. -func WithRetryStrategy[R any](ctx context.Context, lggr logger.Logger, strategy backoff.Backoff, fn func(ctx context.Context) (R, error)) (R, error) { - // Generate a new tracing ID if not present, used to track retries - tracingID, ok := ctx.Value(CtxKeyTracingID).(string) - if !ok { - tracingID = uuid.New().String() - // Add the generated tracing ID to the context (as it was not already present) - ctx = context.WithValue(ctx, CtxKeyTracingID, tracingID) - } - - // Track the number of retries - numRetries := 0 - for { - result, err := fn(ctx) - if err == nil { - return result, nil - } - - wait := strategy.Duration() - message := fmt.Sprintf("Failed to execute function, retrying in %s ...", wait) - lggr.Warnw(message, "wait", wait, "numRetries", numRetries, "tracingID", tracingID, "err", err) - - select { - case <-ctx.Done(): - return result, fmt.Errorf("context done while executing function {tracingID=%s, numRetries=%d}: %w", tracingID, numRetries, ctx.Err()) - case <-time.After(wait): - numRetries++ - // Continue with the next retry - } - } -} - -// WithRetry applies a default retry strategy to a given function. -func WithRetry[R any](ctx context.Context, lggr logger.Logger, fn func(ctx context.Context) (R, error)) (R, error) { - return WithRetryStrategy(ctx, lggr, BackoffStrategyDefault, fn) -} diff --git a/relayer/utils/retry_test.go b/relayer/utils/retry_test.go deleted file mode 100644 index 17ce259b..00000000 --- a/relayer/utils/retry_test.go +++ /dev/null @@ -1,122 +0,0 @@ -package utils - -import ( - "context" - "errors" - "testing" - "time" - - "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/stretchr/testify/require" -) - -// exampleFunc is a function type used for testing retry strategies -type exampleFunc func(ctx context.Context) (string, error) - -func TestWithRetry(t *testing.T) { - lggr := logger.Test(t) - - tests := []struct { - name string - fn exampleFunc - expected string - errMsg string - timeout time.Duration - }{ - { - name: "successful function", - fn: func(ctx context.Context) (string, error) { - return "success", nil - }, - expected: "success", - timeout: 100 * time.Millisecond, - }, - { - name: "always failing function", - fn: func(ctx context.Context) (string, error) { - return "", errors.New("permanent error") - }, - errMsg: "context done while executing function", - timeout: 100 * time.Millisecond, - }, - { - name: "eventually successful function", - fn: func() exampleFunc { - attempts := 0 - return func(ctx context.Context) (string, error) { - attempts++ - if attempts < 3 { - return "", errors.New("temporary error") - } - return "eventual success", nil - } - }(), - expected: "eventual success", - timeout: 500 * time.Millisecond, - }, - { - name: "eventually successful function (fail - exceeding context timeout)", - fn: func() exampleFunc { - attempts := 0 - return func(ctx context.Context) (string, error) { - attempts++ - if attempts < 3 { - return "", errors.New("temporary error") - } - return "eventual success", nil - } - }(), - errMsg: "context done while executing function", - timeout: 100 * time.Millisecond, - }, - { - name: "eventually (in time) successful function", - fn: func() exampleFunc { - // Start timer, successful after 400ms - timeout := 400 * time.Millisecond - start := time.Now() - return func(ctx context.Context) (string, error) { - if time.Since(start) < timeout { - return "", errors.New("temporary error") - } - return "eventual success", nil - } - }(), - expected: "eventual success", - timeout: 1 * time.Second, - }, - { - name: "eventually (in time) successful function (fail - exceeding context timeout)", - fn: func() exampleFunc { - // Start timer, successful after 4s - timeout := 4 * time.Second - start := time.Now() - return func(ctx context.Context) (string, error) { - if time.Since(start) < timeout { - return "", errors.New("temporary error") - } - return "eventual success", nil - } - }(), - errMsg: "context done while executing function", - timeout: 1 * time.Second, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - ctx := context.Background() - ctx, cancel := context.WithTimeout(ctx, tt.timeout) - defer cancel() - - result, err := WithRetry(ctx, lggr, tt.fn) - if tt.errMsg != "" { - require.Error(t, err) - require.Contains(t, err.Error(), tt.errMsg) - } else { - require.NoError(t, err) - require.Equal(t, tt.expected, result) - } - }) - } -} diff --git a/relayer/write_target/aptos/write_target.go b/relayer/write_target/aptos/write_target.go deleted file mode 100644 index 3b00f276..00000000 --- a/relayer/write_target/aptos/write_target.go +++ /dev/null @@ -1,208 +0,0 @@ -package write_target - -import ( - "context" - "fmt" - - "github.com/aptos-labs/aptos-go-sdk" - - "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - - aptosacc "github.com/smartcontractkit/chainlink-aptos/relayer/account" - chain "github.com/smartcontractkit/chainlink-aptos/relayer/chain" - "github.com/smartcontractkit/chainlink-aptos/relayer/chainreader" - "github.com/smartcontractkit/chainlink-aptos/relayer/chainwriter" - "github.com/smartcontractkit/chainlink-aptos/relayer/codec" - aptosconfig "github.com/smartcontractkit/chainlink-aptos/relayer/config" - "github.com/smartcontractkit/chainlink-aptos/relayer/fees" - "github.com/smartcontractkit/chainlink-aptos/relayer/write_target" - - "github.com/smartcontractkit/chainlink-common/pkg/logger" - commontypes "github.com/smartcontractkit/chainlink-common/pkg/types" -) - -const version = "1.0.0" - -func NewAptosWriteTarget(ctx context.Context, chain chain.Chain, lggr logger.Logger) (capabilities.TargetCapability, error) { - config := chain.Config() - - // TODO: generate ID based on chain selector (we're currently using Aptos Go SDK to get name for chain ID) - // chainName, err := chainselectors.NameFromChainId(chain.ID().Uint64()) - - // Construct the ID for the WT (e.g., "write_aptos-localnet@1.0.0") - id, err := write_target.NewWriteTargetID(aptosconfig.ChainFamilyName, config.NetworkName, config.ChainID, version) - if err != nil { - return nil, fmt.Errorf("failed to create write target ID: %+w", err) - } - - // All subcomponents constructed by this WT will use the same logger - lggr = logger.Named(lggr, id) - - client, err := chain.GetClient() - if err != nil { - return nil, err - } - - // Set up a specific Beholder client for the Aptos WT - beholder, err := NewAptosWriteTargetMonitor(ctx, lggr) - if err != nil { - return nil, fmt.Errorf("failed to create Aptos WT monitor client: %+w", err) - } - - // Initialize a reader to check whether a value was already transmitted on chain - cr := chainreader.NewChainReader(lggr, client, chainreader.ChainReaderConfig{ - Modules: map[string]*chainreader.ChainReaderModule{ - "forwarder": { - Functions: map[string]*chainreader.ChainReaderFunction{ - "getTransmissionState": { - Name: "get_transmission_state", - Params: []codec.AptosFunctionParam{ - { - Name: "Receiver", - Type: "address", - Required: true, - }, - { - Name: "WorkflowExecutionID", - Type: "vector", - Required: true, - }, - { - Name: "ReportID", - Type: "u16", - Required: true, - }, - }, - }, - "getTransmitter": { - Name: "get_transmitter", - Params: []codec.AptosFunctionParam{ - { - Name: "Receiver", - Type: "address", - Required: true, - }, - { - Name: "WorkflowExecutionID", - Type: "vector", - Required: true, - }, - { - Name: "ReportID", - Type: "u16", - Required: true, - }, - }, - }, - }, - }, - }, - }) - - err = cr.Bind(ctx, []commontypes.BoundContract{{ - Address: config.Workflow.ForwarderAddress, - Name: "forwarder", - }}) - if err != nil { - return nil, err - } - - cwConfig := chainwriter.ChainWriterConfig{ - Modules: map[string]*chainwriter.ChainWriterModule{ - "forwarder": { - Functions: map[string]*chainwriter.ChainWriterFunction{ - "report": { - PublicKey: config.Workflow.PublicKey, - Params: []codec.AptosFunctionParam{ - { - Name: "Receiver", - Type: "address", - Required: true, - }, - { - Name: "RawReport", - Type: "vector", // report_context | metadata | report - Required: true, - }, - { - Name: "Signatures", - Type: "vector>", - Required: true, - }, - }, - }, - }, - }, - }, - FeeStrategy: fees.Default, - } - - fe := fees.NewFeeEstimator(client) - cw := chainwriter.NewChainWriter(lggr, fe, chain.TxManager(), cwConfig) - - validate := func(config write_target.ReqConfig) error { - address := aptos.AccountAddress{} - if err = address.ParseStringRelaxed(config.Address); err != nil { - return fmt.Errorf("'%v' is not a valid Aptos address", config.Address) - } - return nil - } - - transmitter, err := getTransmitter(cwConfig) - if err != nil { - return nil, fmt.Errorf("failed to get transmitter: %+w", err) - } - - // Construct the chain information from the config - chainInfo := write_target.ChainInfo{ - ChainFamilyName: aptosconfig.ChainFamilyName, // static for this plugin - ChainID: config.ChainID, - NetworkName: config.NetworkName, - NetworkNameFull: config.NetworkNameFull, - } - - // Create the WT capability - opts := write_target.WriteTargetOpts{ - ID: id, - Logger: lggr, - Config: *config.WriteTargetCap, - // TODO: simplify by passing via ChainService.GetChainStatus fn - ChainInfo: chainInfo, - Beholder: beholder, - ChainService: chain, - ContractReader: cr, - ChainWriter: cw, - ConfigValidateFn: validate, - NodeAddress: transmitter, - ForwarderAddress: config.Workflow.ForwarderAddress, - } - return write_target.NewWriteTarget(opts), nil -} - -// getTransmitter sources the transmitter address from the CW config -func getTransmitter(cwConfig chainwriter.ChainWriterConfig) (string, error) { - // Try to source the transmitter (e.g., c.cw.config.Functions["forwarder"].FromAddress) - moduleConfig, ok := cwConfig.Modules[write_target.ContractName] - if !ok { - return "", fmt.Errorf("no such contract: %s", write_target.ContractName) - } - - functionConfig, ok := moduleConfig.Functions[write_target.ContractMethodName_report] - if !ok { - return "", fmt.Errorf("no such method: %s", write_target.ContractMethodName_report) - } - - // Notice: reusing logic from the TXM which sources the transmitter this way - transmitter := functionConfig.FromAddress - if transmitter == "" { - // If the address is not specified, we assume the public key is for its corresponding address - // and not for an address with a rotated authentication key. - ed25519PublicKey, err := aptosacc.HexPublicKeyToEd25519PublicKey(functionConfig.PublicKey) - if err != nil { - return "", fmt.Errorf("failed to convert public key: %+w", err) - } - acc := aptosacc.Ed25519PublicKeyToAccount(ed25519PublicKey) - transmitter = acc.String() - } - return transmitter, nil -} diff --git a/relayer/write_target/aptos/write_target_monitor.go b/relayer/write_target/aptos/write_target_monitor.go deleted file mode 100644 index 9b2031e4..00000000 --- a/relayer/write_target/aptos/write_target_monitor.go +++ /dev/null @@ -1,218 +0,0 @@ -package write_target - -import ( - "context" - "fmt" - - "google.golang.org/protobuf/proto" - - "github.com/smartcontractkit/chainlink-common/pkg/beholder" - "github.com/smartcontractkit/chainlink-common/pkg/logger" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitor" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/data-feeds/on-chain/registry" - "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/on-chain/forwarder" - wt "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" -) - -const ( - repoCLLInternalIntegrations = "https://raw.githubusercontent.com/smartcontractkit/chainlink-aptos" - versionRefsDevelop = "refs/heads/develop" - schemaBasePath = repoCLLInternalIntegrations + "/" + versionRefsDevelop + "/aptos/relayer/monitoring/pb" -) - -// NewAptosWriteTargetMonitor initializes a Beholder client for the Aptos Write Target -// -// The client is initialized as a BeholderClient extension with a custom ProtoEmitter. -// The ProtoEmitter is proxied with additional processing for emitted messages. This processing -// includes decoding messages as specific types and deriving metrics based on the decoded messages. -func NewAptosWriteTargetMonitor(ctx context.Context, lggr logger.Logger) (*monitor.BeholderClient, error) { - // Initialize the Beholder client with a local logger a custom Emitter - client := beholder.GetClient().ForPackage("write_target") - - registryMetrics, err := registry.NewMetrics() - if err != nil { - return nil, fmt.Errorf("failed to create new registry metrics: %w", err) - } - - forwarderMetrics, err := forwarder.NewMetrics() - if err != nil { - return nil, fmt.Errorf("failed to create new forwarder metrics: %w", err) - } - - wtMetrics, err := wt.NewMetrics() - if err != nil { - return nil, fmt.Errorf("failed to create new write target metrics: %w", err) - } - - // Underlying ProtoEmitter - emitter := monitor.NewProtoEmitter(lggr, &client, schemaBasePath) - - // Proxy ProtoEmitter with additional processing - protoEmitterProxy := protoEmitter{ - lggr: lggr, - emitter: emitter, - processors: []monitor.ProtoProcessor{ - &wtProcessor{wtMetrics}, - &keystoneProcessor{emitter, forwarderMetrics}, - &dataFeedsProcessor{emitter, registryMetrics}, - }, - } - return &monitor.BeholderClient{&client, &protoEmitterProxy}, nil -} - -// ProtoEmitter proxy specific to the Aptos WT -type protoEmitter struct { - lggr logger.Logger - emitter monitor.ProtoEmitter - processors []monitor.ProtoProcessor -} - -// Emit emits a proto.Message and runs additional processing -func (e *protoEmitter) Emit(ctx context.Context, m proto.Message, attrKVs ...any) error { - err := e.emitter.Emit(ctx, m, attrKVs...) - if err != nil { - return fmt.Errorf("failed to emit: %w", err) - } - - // Notice: we skip processing errors (and continue) so this will never error - return e.Process(ctx, m, attrKVs...) -} - -// EmitWithLog emits a proto.Message and runs additional processing -func (e *protoEmitter) EmitWithLog(ctx context.Context, m proto.Message, attrKVs ...any) error { - err := e.emitter.EmitWithLog(ctx, m, attrKVs...) - if err != nil { - return fmt.Errorf("failed to emit with log: %w", err) - } - - // Notice: we skip processing errors (and continue) so this will never error - return e.Process(ctx, m, attrKVs...) -} - -// Process aggregates further processing for emitted messages -func (e *protoEmitter) Process(ctx context.Context, m proto.Message, attrKVs ...any) error { - // Further processing for emitted messages - for _, p := range e.processors { - err := p.Process(ctx, m, attrKVs...) - if err != nil { - // Notice: we swallow and log processing errors - // These should be investigated and fixed, but are not critical to product runtime, - // and shouldn't block further processing of the emitted message. - e.lggr.Errorw("failed to process emitted message", "err", err) - return nil - } - } - return nil -} - -// Write-Target specific processor decodes write messages to derive metrics -type wtProcessor struct { - metrics *wt.Metrics -} - -func (p *wtProcessor) Process(ctx context.Context, m proto.Message, attrKVs ...any) error { - // Switch on the type of the proto.Message - switch msg := m.(type) { - case *wt.WriteInitiated: - err := p.metrics.OnWriteInitiated(ctx, msg, attrKVs...) - if err != nil { - return fmt.Errorf("failed to publish write initiated metrics: %w", err) - } - return nil - case *wt.WriteError: - err := p.metrics.OnWriteError(ctx, msg, attrKVs...) - if err != nil { - return fmt.Errorf("failed to publish write error metrics: %w", err) - } - return nil - case *wt.WriteSent: - err := p.metrics.OnWriteSent(ctx, msg, attrKVs...) - if err != nil { - return fmt.Errorf("failed to publish write sent metrics: %w", err) - } - return nil - case *wt.WriteConfirmed: - err := p.metrics.OnWriteConfirmed(ctx, msg, attrKVs...) - if err != nil { - return fmt.Errorf("failed to publish write confirmed metrics: %w", err) - } - return nil - default: - return nil // fallthrough - } -} - -// Keystone specific processor decodes writes as 'platform.forwarder.ReportProcessed' messages + metrics -type keystoneProcessor struct { - emitter monitor.ProtoEmitter - metrics *forwarder.Metrics -} - -func (p *keystoneProcessor) Process(ctx context.Context, m proto.Message, attrKVs ...any) error { - // Switch on the type of the proto.Message - switch msg := m.(type) { - case *wt.WriteConfirmed: - // TODO: detect the type of write payload (support more than one type of write, first multiple Keystone report versions) - // https://smartcontract-it.atlassian.net/browse/NONEVM-817 - // Q: Will this msg ever contain different (non-Keystone) types of writes? Hmm. - // Notice: we assume all writes are Keystone (v1) writes for now - - // Decode as a 'platform.forwarder.ReportProcessed' message - reportProcessed, err := forwarder.DecodeAsReportProcessed(msg) - if err != nil { - return fmt.Errorf("failed to decode as 'platform.forwarder.ReportProcessed': %w", err) - } - // Emit the 'platform.forwarder.ReportProcessed' message - err = p.emitter.EmitWithLog(ctx, reportProcessed, attrKVs...) - if err != nil { - return fmt.Errorf("failed to emit with log: %w", err) - } - // Process emit and derive metrics - err = p.metrics.OnReportProcessed(ctx, reportProcessed, attrKVs...) - if err != nil { - return fmt.Errorf("failed to publish report processed metrics: %w", err) - } - return nil - default: - return nil // fallthrough - } -} - -// Data-Feeds specific processor decodes writes as 'data-feeds.registry.FeedUpdated' messages + metrics -type dataFeedsProcessor struct { - emitter monitor.ProtoEmitter - metrics *registry.Metrics -} - -func (p *dataFeedsProcessor) Process(ctx context.Context, m proto.Message, attrKVs ...any) error { - // Switch on the type of the proto.Message - switch msg := m.(type) { - case *wt.WriteConfirmed: - // TODO: fallthrough if not a write containing a DF report - // https://smartcontract-it.atlassian.net/browse/NONEVM-818 - // Notice: we assume all writes are Data-Feeds (static schema) writes for now - - // Decode as an array of 'data-feeds.registry.FeedUpdated' messages - updates, err := registry.DecodeAsFeedUpdated(msg) - if err != nil { - return fmt.Errorf("failed to decode as 'data-feeds.registry.FeedUpdated': %w", err) - } - // Emit the 'data-feeds.registry.FeedUpdated' messages - for _, update := range updates { - err = p.emitter.EmitWithLog(ctx, update, attrKVs...) - if err != nil { - return fmt.Errorf("failed to emit with log: %w", err) - } - // Process emit and derive metrics - err = p.metrics.OnFeedUpdated(ctx, update, attrKVs...) - if err != nil { - return fmt.Errorf("failed to publish feed updated metrics: %w", err) - } - } - return nil - default: - return nil // fallthrough - } -} diff --git a/relayer/write_target/config.go b/relayer/write_target/config.go deleted file mode 100644 index c2cbc689..00000000 --- a/relayer/write_target/config.go +++ /dev/null @@ -1,19 +0,0 @@ -package write_target - -import ( - "time" - - "github.com/smartcontractkit/chainlink-common/pkg/config" -) - -// Config defines the write target component configuration. -type Config struct { - ConfirmerPollPeriod config.Duration - ConfirmerTimeout config.Duration -} - -// DefaultConfigSet is the default configuration for the write target component. -var DefaultConfigSet = Config{ - ConfirmerPollPeriod: *config.MustNewDuration(1 * time.Second), - ConfirmerTimeout: *config.MustNewDuration(10 * time.Second), -} diff --git a/relayer/write_target/messages.go b/relayer/write_target/messages.go deleted file mode 100644 index 426b3363..00000000 --- a/relayer/write_target/messages.go +++ /dev/null @@ -1,244 +0,0 @@ -package write_target - -import ( - "encoding/hex" - "time" - - "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/types" - - wt "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" -) - -// ChainInfo contains the chain information (used as execution context) -type ChainInfo struct { - ChainFamilyName string - ChainID string - NetworkName string - NetworkNameFull string -} - -// messageBuilder is a helper component to build monitoring messages -type messageBuilder struct { - ChainInfo ChainInfo - CapInfo capabilities.CapabilityInfo -} - -// NewMessageBuilder creates a new message builder -func NewMessageBuilder(chainInfo ChainInfo, capInfo capabilities.CapabilityInfo) *messageBuilder { - return &messageBuilder{ - ChainInfo: chainInfo, - CapInfo: capInfo, - } -} - -// reportInfo contains the report data for the request -type reportInfo struct { - reportContext []byte - report []byte - signersNum uint32 - - // Decoded report fields - reportID uint16 -} - -// requestInfo contains the request data for the capability triggered -type requestInfo struct { - tsStart int64 - - node string - forwarder string - receiver string - - request capabilities.CapabilityRequest - reportInfo *reportInfo - reportTransmissionState *TransmissionState -} - -func (m *messageBuilder) buildWriteError(i *requestInfo, code uint32, summary, cause string) *wt.WriteError { - return &wt.WriteError{ - Code: code, - Summary: summary, - Cause: cause, - - Node: i.node, - Forwarder: i.forwarder, - Receiver: i.receiver, - ReportId: uint32(i.reportInfo.reportID), - - // Execution Context - Source - MetaSourceId: i.node, - - // Execution Context - Chain - MetaChainFamilyName: m.ChainInfo.ChainFamilyName, - MetaChainId: m.ChainInfo.ChainID, - MetaNetworkName: m.ChainInfo.NetworkName, - MetaNetworkNameFull: m.ChainInfo.NetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: i.request.Metadata.WorkflowID, - MetaWorkflowOwner: i.request.Metadata.WorkflowOwner, - MetaWorkflowExecutionId: i.request.Metadata.WorkflowExecutionID, - MetaWorkflowName: i.request.Metadata.WorkflowName, - MetaWorkflowDonId: i.request.Metadata.WorkflowDonID, - MetaWorkflowDonConfigVersion: i.request.Metadata.WorkflowDonConfigVersion, - MetaReferenceId: i.request.Metadata.ReferenceID, - - // Execution Context - Capability - MetaCapabilityType: string(m.CapInfo.CapabilityType), - MetaCapabilityId: m.CapInfo.ID, - MetaCapabilityTimestampStart: uint64(i.tsStart), - MetaCapabilityTimestampEmit: uint64(time.Now().UnixMilli()), - } -} - -func (m *messageBuilder) buildWriteInitiated(i *requestInfo) *wt.WriteInitiated { - return &wt.WriteInitiated{ - Node: i.node, - Forwarder: i.forwarder, - Receiver: i.receiver, - ReportId: uint32(i.reportInfo.reportID), - - // Execution Context - Source - MetaSourceId: i.node, - - // Execution Context - Chain - MetaChainFamilyName: m.ChainInfo.ChainFamilyName, - MetaChainId: m.ChainInfo.ChainID, - MetaNetworkName: m.ChainInfo.NetworkName, - MetaNetworkNameFull: m.ChainInfo.NetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: i.request.Metadata.WorkflowID, - MetaWorkflowOwner: i.request.Metadata.WorkflowOwner, - MetaWorkflowExecutionId: i.request.Metadata.WorkflowExecutionID, - MetaWorkflowName: i.request.Metadata.WorkflowName, - MetaWorkflowDonId: i.request.Metadata.WorkflowDonID, - MetaWorkflowDonConfigVersion: i.request.Metadata.WorkflowDonConfigVersion, - MetaReferenceId: i.request.Metadata.ReferenceID, - - // Execution Context - Capability - MetaCapabilityType: string(m.CapInfo.CapabilityType), - MetaCapabilityId: m.CapInfo.ID, - MetaCapabilityTimestampStart: uint64(i.tsStart), - MetaCapabilityTimestampEmit: uint64(time.Now().UnixMilli()), - } -} - -func (m *messageBuilder) buildWriteSkipped(i *requestInfo, reason string) *wt.WriteSkipped { - return &wt.WriteSkipped{ - Node: i.node, - Forwarder: i.forwarder, - Receiver: i.receiver, - ReportId: uint32(i.reportInfo.reportID), - Reason: reason, - - // Execution Context - Source - MetaSourceId: i.node, - - // Execution Context - Chain - MetaChainFamilyName: m.ChainInfo.ChainFamilyName, - MetaChainId: m.ChainInfo.ChainID, - MetaNetworkName: m.ChainInfo.NetworkName, - MetaNetworkNameFull: m.ChainInfo.NetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: i.request.Metadata.WorkflowID, - MetaWorkflowOwner: i.request.Metadata.WorkflowOwner, - MetaWorkflowExecutionId: i.request.Metadata.WorkflowExecutionID, - MetaWorkflowName: i.request.Metadata.WorkflowName, - MetaWorkflowDonId: i.request.Metadata.WorkflowDonID, - MetaWorkflowDonConfigVersion: i.request.Metadata.WorkflowDonConfigVersion, - MetaReferenceId: i.request.Metadata.ReferenceID, - - // Execution Context - Capability - MetaCapabilityType: string(m.CapInfo.CapabilityType), - MetaCapabilityId: m.CapInfo.ID, - MetaCapabilityTimestampStart: uint64(i.tsStart), - MetaCapabilityTimestampEmit: uint64(time.Now().UnixMilli()), - } -} - -func (m *messageBuilder) buildWriteSent(i *requestInfo, head types.Head, txID string) *wt.WriteSent { - return &wt.WriteSent{ - Node: i.node, - Forwarder: i.forwarder, - Receiver: i.receiver, - ReportId: uint32(i.reportInfo.reportID), - - TxId: txID, - - BlockHash: hex.EncodeToString(head.Hash), - BlockHeight: head.Height, - BlockTimestamp: head.Timestamp, - - // Execution Context - Source - MetaSourceId: i.node, - - // Execution Context - Chain - MetaChainFamilyName: m.ChainInfo.ChainFamilyName, - MetaChainId: m.ChainInfo.ChainID, - MetaNetworkName: m.ChainInfo.NetworkName, - MetaNetworkNameFull: m.ChainInfo.NetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: i.request.Metadata.WorkflowID, - MetaWorkflowOwner: i.request.Metadata.WorkflowOwner, - MetaWorkflowExecutionId: i.request.Metadata.WorkflowExecutionID, - MetaWorkflowName: i.request.Metadata.WorkflowName, - MetaWorkflowDonId: i.request.Metadata.WorkflowDonID, - MetaWorkflowDonConfigVersion: i.request.Metadata.WorkflowDonConfigVersion, - MetaReferenceId: i.request.Metadata.ReferenceID, - - // Execution Context - Capability - MetaCapabilityType: string(m.CapInfo.CapabilityType), - MetaCapabilityId: m.CapInfo.ID, - MetaCapabilityTimestampStart: uint64(i.tsStart), - MetaCapabilityTimestampEmit: uint64(time.Now().UnixMilli()), - } -} - -func (m *messageBuilder) buildWriteConfirmed(i *requestInfo, head types.Head) *wt.WriteConfirmed { - return &wt.WriteConfirmed{ - Node: i.node, - Forwarder: i.forwarder, - Receiver: i.receiver, - - ReportId: uint32(i.reportInfo.reportID), - ReportContext: i.reportInfo.reportContext, - Report: i.reportInfo.report, - SignersNum: i.reportInfo.signersNum, - - BlockHash: hex.EncodeToString(head.Hash), - BlockHeight: head.Height, - BlockTimestamp: head.Timestamp, - - // Transmission Info - Transmitter: i.reportTransmissionState.Transmitter, - Success: i.reportTransmissionState.Success, - - // Execution Context - Source - MetaSourceId: i.node, - - // Execution Context - Chain - MetaChainFamilyName: m.ChainInfo.ChainFamilyName, - MetaChainId: m.ChainInfo.ChainID, - MetaNetworkName: m.ChainInfo.NetworkName, - MetaNetworkNameFull: m.ChainInfo.NetworkNameFull, - - // Execution Context - Workflow (capabilities.RequestMetadata) - MetaWorkflowId: i.request.Metadata.WorkflowID, - MetaWorkflowOwner: i.request.Metadata.WorkflowOwner, - MetaWorkflowExecutionId: i.request.Metadata.WorkflowExecutionID, - MetaWorkflowName: i.request.Metadata.WorkflowName, - MetaWorkflowDonId: i.request.Metadata.WorkflowDonID, - MetaWorkflowDonConfigVersion: i.request.Metadata.WorkflowDonConfigVersion, - MetaReferenceId: i.request.Metadata.ReferenceID, - - // Execution Context - Capability - MetaCapabilityType: string(m.CapInfo.CapabilityType), - MetaCapabilityId: m.CapInfo.ID, - MetaCapabilityTimestampStart: uint64(i.tsStart), - MetaCapabilityTimestampEmit: uint64(time.Now().UnixMilli()), - } -} diff --git a/relayer/write_target/strategy.go b/relayer/write_target/strategy.go new file mode 100644 index 00000000..93533b2a --- /dev/null +++ b/relayer/write_target/strategy.go @@ -0,0 +1,171 @@ +package write_target + +import ( + "context" + "encoding/hex" + "fmt" + "math/big" + + "github.com/google/uuid" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities" + "github.com/smartcontractkit/chainlink-common/pkg/logger" + commontypes "github.com/smartcontractkit/chainlink-common/pkg/types" + "github.com/smartcontractkit/chainlink-common/pkg/types/query/primitives" + "github.com/smartcontractkit/chainlink-evm/pkg/writetarget" + + aptosacc "github.com/smartcontractkit/chainlink-aptos/relayer/account" + "github.com/smartcontractkit/chainlink-framework/capabilities/writetarget/retry" +) + +// aptos specific consts +type aptosTargetStrategy struct { + cr commontypes.ContractReader + cw commontypes.ContractWriter + + lggr logger.Logger + forwarder string +} + +// chain-specific consts +// required field of target's config in the workflow spec +const ( + // Static contract info + ContractName = "forwarder" + ContractMethodName_report = "report" + ContractMethodName_getTransmissionState = "getTransmissionState" + ContractMethodName_getTransmitter = "getTransmitter" +) + +var ( + _ writetarget.TargetStrategy = &aptosTargetStrategy{} +) + +func NewAptosTargetStrategy(cr commontypes.ContractReader, cw commontypes.ContractWriter, lggr logger.Logger, forwarder string) *aptosTargetStrategy { + return &aptosTargetStrategy{ + cr: cr, + cw: cw, + lggr: lggr, + forwarder: forwarder, + } +} + +func (t *aptosTargetStrategy) QueryTransmissionState(ctx context.Context, reportID uint16, request capabilities.CapabilityRequest) (*writetarget.TransmissionState, error) { + receiver, err := getReceiver(request) + if err != nil { + return nil, err + } + + rawExecutionID, err := hex.DecodeString(request.Metadata.WorkflowExecutionID) + if err != nil { + return nil, fmt.Errorf("failed to decode workflowExecutionID: %w", err) + } + + // Check whether the report was already transmitted on chain + binding := commontypes.BoundContract{ + Address: t.forwarder, + Name: ContractName, + } + queryInputs := struct { + Receiver string + WorkflowExecutionID []byte + ReportID uint16 + }{ + Receiver: receiver, + WorkflowExecutionID: rawExecutionID, + ReportID: reportID, + } + + t.lggr.Debugw("querying [TransmissionState]", "binding", binding, "queryInputs", queryInputs) + + // Notice: if not confirmed the report is published yet, we're expected to submit the report on-chain (might be + // competing with other nodes). We want to confirm this report was accepted and finalized eventually, or timeout + // and emit an error - we store the confirm query + + // Helper to query the chain for the transmission state + // TODO: it's unclear how to source the TransmissionState via an abstracted CR API call + // Notice: this function is Aptos chain-specific (logic needs to be hidden behind the CR API call) + query := func(ctx context.Context) (*writetarget.TransmissionState, error) { + // Check if transmission state exists + var transmitted bool + readTransmissionState := binding.ReadIdentifier(ContractMethodName_getTransmissionState) + err := t.cr.GetLatestValue(ctx, readTransmissionState, primitives.Unconfirmed, queryInputs, &transmitted) + if err != nil { + return nil, fmt.Errorf("failed to call [forwarder.getTransmissionState]: %w", err) + } + + t.lggr.Debugw("[forwarder.getTransmissionState] call output", "transmitted", transmitted) + + // nil state means the report was not transmitted yet + if !transmitted { + return &writetarget.TransmissionState{Status: writetarget.TransmissionStateNotAttempted}, nil + } + + // Fetch the transmitter address from the chain (decode output type) + var transmitterAddr struct { + Vec []string + } + readTransmitter := binding.ReadIdentifier(ContractMethodName_getTransmitter) + err = t.cr.GetLatestValue(ctx, readTransmitter, primitives.Unconfirmed, queryInputs, &transmitterAddr) + if err != nil { + return nil, fmt.Errorf("failed to call [forwarder.getTransmitter]: %w", err) + } + + t.lggr.Debugw("[forwarder.getTransmitter] call output", "transmitterAddr", transmitterAddr) + + if len(transmitterAddr.Vec) == 0 { + return nil, fmt.Errorf("failed to call [forwarder.getTransmitter]: unexpected empty result") + } + + address, err := aptosacc.HexAddrToAccountAddress(transmitterAddr.Vec[0]) + if err != nil { + return nil, fmt.Errorf("failed to parse transmitter address: %w", err) + } + + return &writetarget.TransmissionState{Transmitter: address.String(), Status: writetarget.TransmissionStateSucceeded}, nil + } + + // Fetch the transmission state, retry with a default backoff strategy + state, err := retry.With(ctx, t.lggr, query) + + return state, err +} + +func (t *aptosTargetStrategy) TransmitReport(ctx context.Context, report []byte, reportContext []byte, signatures [][]byte, request capabilities.CapabilityRequest) (string, error) { + txID, err := uuid.NewUUID() // NOTE: CW expects us to generate an ID, rather than return one + if err != nil { + // This should never happen + return "", err + } + + receiver, err := getReceiver(request) + if err != nil { + return txID.String(), err + } + + // Note: The codec that ContractWriter uses to encode the parameters for the contract ABI cannot handle + // `nil` values, including for slices. Until the bug is fixed we need to ensure that there are no + // `nil` values passed in the request. + req := struct { + Receiver string + RawReport []byte + Signatures [][]byte + }{ + Receiver: receiver, + RawReport: append(reportContext, report...), + Signatures: signatures, + } + + if req.RawReport == nil { + req.RawReport = make([]byte, 0) + } + + if req.Signatures == nil { + req.Signatures = make([][]byte, 0) + } + + // Submit the transaction + meta := commontypes.TxMeta{WorkflowExecutionID: &request.Metadata.WorkflowExecutionID} + value := big.NewInt(0) + err = t.cw.SubmitTransaction(ctx, ContractName, ContractMethodName_report, req, txID.String(), t.forwarder, &meta, value) + return txID.String(), err +} diff --git a/relayer/write_target/write_target.go b/relayer/write_target/write_target.go index 2feb81f4..92ea11d4 100644 --- a/relayer/write_target/write_target.go +++ b/relayer/write_target/write_target.go @@ -1,550 +1,275 @@ -// NOTE: file is based on the generic write target capability, but we're slightly modifying it until the two implementations can be merged -// in particular, we need to invert the calling flow for Aptos so receiver is the entrypoint package write_target import ( "context" - "encoding/binary" - "encoding/hex" "fmt" - "math/big" - "time" - "github.com/google/uuid" - "go.opentelemetry.io/otel/attribute" - "go.opentelemetry.io/otel/trace" + "github.com/aptos-labs/aptos-go-sdk" + "google.golang.org/protobuf/proto" "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" - "github.com/smartcontractkit/chainlink-common/pkg/logger" - commontypes "github.com/smartcontractkit/chainlink-common/pkg/types" - "github.com/smartcontractkit/chainlink-common/pkg/types/query/primitives" - - "github.com/smartcontractkit/chainlink-aptos/relayer/monitor" - "github.com/smartcontractkit/chainlink-aptos/relayer/report/platform" - "github.com/smartcontractkit/chainlink-aptos/relayer/utils" - - wt "github.com/smartcontractkit/chainlink-aptos/relayer/monitoring/pb/platform/write-target" aptosacc "github.com/smartcontractkit/chainlink-aptos/relayer/account" -) - -var ( - _ capabilities.TargetCapability = &writeTarget{} -) - -// required field of target's config in the workflow spec -const ( - CapabilityName = "write" + chain "github.com/smartcontractkit/chainlink-aptos/relayer/chain" + "github.com/smartcontractkit/chainlink-aptos/relayer/chainreader" + "github.com/smartcontractkit/chainlink-aptos/relayer/chainwriter" + "github.com/smartcontractkit/chainlink-aptos/relayer/codec" + aptosconfig "github.com/smartcontractkit/chainlink-aptos/relayer/config" + "github.com/smartcontractkit/chainlink-aptos/relayer/fees" + aptosregistry "github.com/smartcontractkit/chainlink-aptos/relayer/monitroing/pb/data-feeds/on-chain/registry" + "github.com/smartcontractkit/chainlink-aptos/relayer/write_target/types" - // Input keys - KeySignedReport = "signed_report" - - // Static contract info - ContractName = "forwarder" - ContractMethodName_report = "report" - ContractMethodName_getTransmissionState = "getTransmissionState" - ContractMethodName_getTransmitter = "getTransmitter" + "github.com/smartcontractkit/chainlink-common/pkg/logger" + commontypes "github.com/smartcontractkit/chainlink-common/pkg/types" + "github.com/smartcontractkit/chainlink-evm/pkg/report/monitor" + "github.com/smartcontractkit/chainlink-evm/pkg/report/pb/data-feeds/on-chain/registry" + wt "github.com/smartcontractkit/chainlink-evm/pkg/report/pb/platform" + "github.com/smartcontractkit/chainlink-evm/pkg/writetarget" ) -type writeTarget struct { - capabilities.CapabilityInfo - - config Config - chainInfo ChainInfo - - lggr logger.Logger - // Local beholder client, also hosting the protobuf emitter - beholder *monitor.BeholderClient - - cs commontypes.ChainService - cr commontypes.ContractReader - cw commontypes.ChainWriter - configValidateFn func(config ReqConfig) error - - nodeAddress string - forwarderAddress string -} - -type WriteTargetOpts struct { - ID string - - // toml: [.WriteTargetCap] - Config Config - // ChainInfo contains the chain information (used as execution context) - // TODO: simplify by passing via ChainService.GetChainStatus fn - ChainInfo ChainInfo - - Logger logger.Logger - Beholder *monitor.BeholderClient - - ChainService commontypes.ChainService - ContractReader commontypes.ContractReader - ChainWriter commontypes.ChainWriter - ConfigValidateFn func(config ReqConfig) error +const version = "1.0.0" - NodeAddress string - ForwarderAddress string -} - -// Capability-specific configuration -type ReqConfig struct { +type AptosConfig struct { Address string } -type TransmissionState struct { - Transmitter string - Success bool -} - -// NewWriteTargetID returns the capability ID for the write target -func NewWriteTargetID(chainFamilyName, networkName, chainID, version string) (string, error) { - // Input args should not be empty - if chainFamilyName == "" || version == "" { - return "", fmt.Errorf("invalid input: chainFamilyName, and version must not be empty") - } - - // Network ID: network name is optional, if not provided, use the chain ID - networkID := networkName - if networkID == "" && chainID == "" { - return "", fmt.Errorf("invalid input: networkName or chainID must not be empty") - } - if networkID == "" || networkID == "unknown" { - networkID = chainID - } - - return fmt.Sprintf("%s_%s-%s@%s", CapabilityName, chainFamilyName, networkID, version), nil +// EVM Data-Feeds specific processor decodes writes as 'data-feeds.registry.FeedUpdated' messages + metrics +type dataFeedsProcessor struct { + emitter monitor.ProtoEmitter + metrics *registry.Metrics } -// TODO: opts.Config input is not validated for sanity -func NewWriteTarget(opts WriteTargetOpts) capabilities.TargetCapability { - capInfo := capabilities.MustNewCapabilityInfo(opts.ID, capabilities.CapabilityTypeTarget, CapabilityName) +func (p *dataFeedsProcessor) Process(ctx context.Context, m proto.Message, attrKVs ...any) error { + // Switch on the type of the proto.Message + switch msg := m.(type) { + case *wt.WriteConfirmed: + // TODO: fallthrough if not a write containing a DF report + // https://smartcontract-it.atlassian.net/browse/NONEVM-818 + // Notice: we assume all writes are Data-Feeds (static schema) writes for now - return &writeTarget{ - capInfo, - opts.Config, - opts.ChainInfo, - opts.Logger, - opts.Beholder, - opts.ChainService, - opts.ContractReader, - opts.ChainWriter, - opts.ConfigValidateFn, - opts.NodeAddress, - opts.ForwarderAddress, + // Decode as an array of 'data-feeds.registry.FeedUpdated' messages + updates, err := aptosregistry.DecodeAsFeedUpdated(msg) + if err != nil { + return fmt.Errorf("failed to decode as 'data-feeds.registry.FeedUpdated': %w", err) + } + // Emit the 'data-feeds.registry.FeedUpdated' messages + for _, update := range updates { + err = p.emitter.EmitWithLog(ctx, update, attrKVs...) + if err != nil { + return fmt.Errorf("failed to emit with log: %w", err) + } + // Process emit and derive metrics + err = p.metrics.OnFeedUpdated(ctx, update, attrKVs...) + if err != nil { + return fmt.Errorf("failed to publish feed updated metrics: %w", err) + } + } + return nil + default: + return nil // fallthrough } } -func success() capabilities.CapabilityResponse { - return capabilities.CapabilityResponse{} +func (c *dataFeedsProcessor) SetEmitter(e monitor.ProtoEmitter) { + c.emitter = e } -func (c *writeTarget) Execute(ctx context.Context, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { - // Take the local timestamp - tsStart := time.Now().UnixMilli() - - // Trace the execution - attrs := c.traceAttributes(request.Metadata.WorkflowExecutionID) - _, span := c.beholder.Tracer.Start(ctx, "Execute", trace.WithAttributes(attrs...)) - defer span.End() - - // Notice: error skipped as implementation always returns nil - capInfo, _ := c.Info(ctx) - - c.lggr.Debugw("Execute", "request", request, "capInfo", capInfo) - - // Helper to keep track of the request info - info := &requestInfo{ - tsStart: tsStart, - node: c.nodeAddress, - forwarder: c.forwarderAddress, - receiver: "N/A", - request: request, - reportInfo: &reportInfo{ - reportContext: nil, - report: nil, - signersNum: 0, // N/A - reportID: 0, // N/A - }, - reportTransmissionState: nil, - } - // Helper to build monitoring (Beholder) messages - builder := NewMessageBuilder(c.chainInfo, capInfo) +func NewAptosWriteTarget(ctx context.Context, chain chain.Chain, lggr logger.Logger) (capabilities.TargetCapability, error) { + config := chain.Config() - // Parse the request (WT-specific) config - var reqConfig ReqConfig - err := request.Config.UnwrapTo(&reqConfig) - if err != nil { - msg := builder.buildWriteError(info, 0, "failed to parse config", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) - } + // TODO: generate ID based on chain selector (we're currently using Aptos Go SDK to get name for chain ID) + // chainName, err := chainselectors.NameFromChainId(chain.ID().Uint64()) - // Validate the config - err = c.configValidateFn(reqConfig) + // Construct the ID for the WT (e.g., "write_aptos-localnet@1.0.0") + id, err := writetarget.NewWriteTargetID(aptosconfig.ChainFamilyName, config.NetworkName, config.ChainID, version) if err != nil { - msg := builder.buildWriteError(info, 0, "failed to validate config", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) + return nil, fmt.Errorf("failed to create write target ID: %+w", err) } - // Source the receiver address from the config - info.receiver = reqConfig.Address + // All subcomponents constructed by this WT will use the same logger + lggr = logger.Named(lggr, id) - // Source the signed report from the request - signedReport, ok := request.Inputs.Underlying[KeySignedReport] - if !ok { - cause := fmt.Sprintf("input missing required field: '%s'", KeySignedReport) - msg := builder.buildWriteError(info, 0, "failed to source the signed report", cause) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) - } - - // Decode the signed report - inputs := types.SignedReport{} - if err = signedReport.UnwrapTo(&inputs); err != nil { - msg := builder.buildWriteError(info, 0, "failed to parse signed report", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) - } - - // Source the report ID from the input - info.reportInfo.reportID = binary.BigEndian.Uint16(inputs.ID) - - // Decode the workflow execution ID - rawExecutionID, err := hex.DecodeString(request.Metadata.WorkflowExecutionID) + client, err := chain.GetClient() if err != nil { - msg := builder.buildWriteError(info, 0, "failed to decode the workflow execution ID", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) - } - - c.beholder.ProtoEmitter.EmitWithLog(ctx, builder.buildWriteInitiated(info)) - - // Check whether the report is valid (e.g., not empty) - if len(inputs.Report) == 0 { - // We received any empty report -- this means we should skip transmission. - c.beholder.ProtoEmitter.EmitWithLog(ctx, builder.buildWriteSkipped(info, "empty report")) - return success(), nil - } - - // Update the info with the report info - info.reportInfo = &reportInfo{ - reportID: info.reportInfo.reportID, - reportContext: inputs.Context, - report: inputs.Report, - signersNum: uint32(len(inputs.Signatures)), + return nil, err } - // Decode the report - reportDecoded, err := platform.Decode(inputs.Report) + // Set up a specific Beholder client for the Aptos WT + beholder, err := writetarget.NewMonitor(lggr, types.DecodeAsFeedUpdated) if err != nil { - msg := builder.buildWriteError(info, 0, "failed to decode the report", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) + return nil, fmt.Errorf("failed to create Aptos WT monitor client: %+w", err) } - // Validate encoded report is prefixed with workflowID and executionID that match the request meta - if reportDecoded.ExecutionID != request.Metadata.WorkflowExecutionID { - msg := builder.buildWriteError(info, 0, "decoded report execution ID does not match the request", "") - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) - } else if reportDecoded.WorkflowID != request.Metadata.WorkflowID { - msg := builder.buildWriteError(info, 0, "decoded report workflow ID does not match the request", "") - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) - } - - // Check whether the report was already transmitted on chain - binding := commontypes.BoundContract{ - Address: info.forwarder, - Name: ContractName, - } - queryInputs := struct { - Receiver string - WorkflowExecutionID []byte - ReportID uint16 - }{ - Receiver: info.receiver, - WorkflowExecutionID: rawExecutionID, - ReportID: info.reportInfo.reportID, - } + // Initialize a reader to check whether a value was already transmitted on chain + cr := chainreader.NewChainReader(lggr, client, chainreader.ChainReaderConfig{ + Modules: map[string]*chainreader.ChainReaderModule{ + "forwarder": { + Functions: map[string]*chainreader.ChainReaderFunction{ + "getTransmissionState": { + Name: "get_transmission_state", + Params: []codec.AptosFunctionParam{ + { + Name: "Receiver", + Type: "address", + Required: true, + }, + { + Name: "WorkflowExecutionID", + Type: "vector", + Required: true, + }, + { + Name: "ReportID", + Type: "u16", + Required: true, + }, + }, + }, + "getTransmitter": { + Name: "get_transmitter", + Params: []codec.AptosFunctionParam{ + { + Name: "Receiver", + Type: "address", + Required: true, + }, + { + Name: "WorkflowExecutionID", + Type: "vector", + Required: true, + }, + { + Name: "ReportID", + Type: "u16", + Required: true, + }, + }, + }, + }, + }, + }, + }) - // Fetch the latest head from the chain (timestamp), retry with a default backoff strategy - ctx = context.WithValue(ctx, utils.CtxKeyTracingID, info.request.Metadata.WorkflowExecutionID) - head, err := utils.WithRetry(ctx, c.lggr, c.cs.LatestHead) + err = cr.Bind(ctx, []commontypes.BoundContract{{ + Address: config.Workflow.ForwarderAddress, + Name: "forwarder", + }}) if err != nil { - msg := builder.buildWriteError(info, 0, "failed to fetch the latest head", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) + return nil, err } - c.lggr.Debugw("non-empty valid report", - "reportID", info.reportInfo.reportID, - "report", "0x"+hex.EncodeToString(inputs.Report), - "reportLen", len(inputs.Report), - "reportDecoded", reportDecoded, - "reportContext", "0x"+hex.EncodeToString(inputs.Context), - "reportContextLen", len(inputs.Context), - "signaturesLen", len(inputs.Signatures), - "executionID", request.Metadata.WorkflowExecutionID, - ) - - c.lggr.Debugw("querying [TransmissionState]", "binding", binding, "queryInputs", queryInputs) - - // Notice: if not confirmed the report is published yet, we're expected to submit the report on-chain (might be - // competing with other nodes). We want to confirm this report was accepted and finalized eventually, or timeout - // and emit an error - we store the confirm query - - // Helper to query the chain for the transmission state - // TODO: it's unclear how to source the TransmissionState via an abstracted CR API call - // Notice: this function is Aptos chain-specific (logic needs to be hidden behind the CR API call) - query := func(ctx context.Context) (*TransmissionState, error) { - // Check if transmission state exists - var transmitted bool - readTransmissionState := binding.ReadIdentifier(ContractMethodName_getTransmissionState) - err := c.cr.GetLatestValue(ctx, readTransmissionState, primitives.Unconfirmed, queryInputs, &transmitted) - if err != nil { - return nil, fmt.Errorf("failed to call [forwarder.getTransmissionState]: %w", err) - } - - c.lggr.Debugw("[forwarder.getTransmissionState] call output", "transmitted", transmitted) + cwConfig := chainwriter.ChainWriterConfig{ + Modules: map[string]*chainwriter.ChainWriterModule{ + "forwarder": { + Functions: map[string]*chainwriter.ChainWriterFunction{ + "report": { + PublicKey: config.Workflow.PublicKey, + Params: []codec.AptosFunctionParam{ + { + Name: "Receiver", + Type: "address", + Required: true, + }, + { + Name: "RawReport", + Type: "vector", // report_context | metadata | report + Required: true, + }, + { + Name: "Signatures", + Type: "vector>", + Required: true, + }, + }, + }, + }, + }, + }, + FeeStrategy: fees.Default, + } - // nil state means the report was not transmitted yet - if !transmitted { - return nil, nil - } + fe := fees.NewFeeEstimator(client) + cw := chainwriter.NewChainWriter(lggr, fe, chain.TxManager(), cwConfig) - // Fetch the transmitter address from the chain (decode output type) - // Notice: here we leak an Apots specific type and implementation - Option (not-portable, not chain-agnostic) - var transmitterAddr struct { - Vec []string - } - readTransmitter := binding.ReadIdentifier(ContractMethodName_getTransmitter) - err = c.cr.GetLatestValue(ctx, readTransmitter, primitives.Unconfirmed, queryInputs, &transmitterAddr) + validate := func(request capabilities.CapabilityRequest) (string, error) { + receiver, err := getReceiver(request) if err != nil { - return nil, fmt.Errorf("failed to call [forwarder.getTransmitter]: %w", err) - } - - c.lggr.Debugw("[forwarder.getTransmitter] call output", "transmitterAddr", transmitterAddr) - - if len(transmitterAddr.Vec) == 0 { - return nil, fmt.Errorf("failed to call [forwarder.getTransmitter]: unexpected empty result") + return "", err } - - // Notice: more Apots-specific logic to decode the transmitter address (not portable) - // Needs to be moved to CR codec (decoder), same as for Option<> type decoding above - address, err := aptosacc.HexAddrToAccountAddress(transmitterAddr.Vec[0]) - if err != nil { - return nil, fmt.Errorf("failed to parse transmitter address: %w", err) + address := aptos.AccountAddress{} + if err = address.ParseStringRelaxed(receiver); err != nil { + return "", fmt.Errorf("'%v' is not a valid Aptos address", receiver) } - - return &TransmissionState{Transmitter: address.String(), Success: true}, nil - } - - // Fetch the transmission state, retry with a default backoff strategy - state, err := utils.WithRetry(ctx, c.lggr, query) - if err != nil { - msg := builder.buildWriteError(info, 0, "failed to fetch [TransmissionState]", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) + return receiver, nil } - if state != nil { - // Source the transmitter address from the on-chain state - info.reportTransmissionState = state - - c.beholder.ProtoEmitter.EmitWithLog(ctx, builder.buildWriteConfirmed(info, head)) - return success(), nil - } - - c.lggr.Infow("on-chain report check done - attempting to push to txmgr", - "reportID", info.reportInfo.reportID, - "reportLen", len(inputs.Report), - "reportContextLen", len(inputs.Context), - "signaturesLen", len(inputs.Signatures), - "executionID", request.Metadata.WorkflowExecutionID, - ) - - txID, err := uuid.NewUUID() // NOTE: CW expects us to generate an ID, rather than return one + transmitter, err := getTransmitter(cwConfig) if err != nil { - // This should never happen - return capabilities.CapabilityResponse{}, err + return nil, fmt.Errorf("failed to get transmitter: %+w", err) } - // Note: The codec that ChainWriter uses to encode the parameters for the contract ABI cannot handle - // `nil` values, including for slices. Until the bug is fixed we need to ensure that there are no - // `nil` values passed in the request. - req := struct { - Receiver string - RawReport []byte - Signatures [][]byte - }{ - Receiver: info.receiver, - RawReport: append(inputs.Context, inputs.Report...), - Signatures: inputs.Signatures, + // Construct the chain information from the config + chainInfo := monitor.ChainInfo{ + ChainFamilyName: aptosconfig.ChainFamilyName, // static for this plugin + ChainID: config.ChainID, + NetworkName: config.NetworkName, + NetworkNameFull: config.NetworkNameFull, } - if req.RawReport == nil { - req.RawReport = make([]byte, 0) + targetStrategy := NewAptosTargetStrategy(cr, cw, lggr, config.Workflow.ForwarderAddress) + + // Create the WT capability + opts := writetarget.WriteTargetOpts{ + ID: id, + Logger: lggr, + Config: *config.WriteTargetCap, + // TODO: simplify by passing via ChainService.GetChainStatus fn + ChainInfo: chainInfo, + Beholder: beholder, + ChainService: chain, + ContractReader: cr, + ChainWriter: cw, + ConfigValidateFn: validate, + NodeAddress: transmitter, + ForwarderAddress: config.Workflow.ForwarderAddress, + TargetStrategy: targetStrategy, } + return writetarget.NewWriteTarget(opts), nil +} - if req.Signatures == nil { - req.Signatures = make([][]byte, 0) +// getTransmitter sources the transmitter address from the CW config +func getTransmitter(cwConfig chainwriter.ChainWriterConfig) (string, error) { + // Try to source the transmitter (e.g., c.cw.config.Functions["forwarder"].FromAddress) + moduleConfig, ok := cwConfig.Modules[ContractName] + if !ok { + return "", fmt.Errorf("no such contract: %s", ContractName) } - // Submit the transaction - meta := commontypes.TxMeta{WorkflowExecutionID: &request.Metadata.WorkflowExecutionID} - value := big.NewInt(0) - err = c.cw.SubmitTransaction(ctx, ContractName, ContractMethodName_report, req, txID.String(), info.forwarder, &meta, value) - if err != nil { - msg := builder.buildWriteError(info, 0, "failed to invoke [forwarder.report]", err.Error()) - return capabilities.CapabilityResponse{}, c.asEmittedError(ctx, msg) + functionConfig, ok := moduleConfig.Functions[ContractMethodName_report] + if !ok { + return "", fmt.Errorf("no such method: %s", ContractMethodName_report) } - c.lggr.Debugw("Transaction submitted", "request", request, "transaction-id", txID) - c.beholder.ProtoEmitter.EmitWithLog(ctx, builder.buildWriteSent(info, head, txID.String())) - - // TODO: implement a background WriteTxConfirmer to periodically source new events/transactions, - // relevant to this forwarder), and emit write-tx-accepted/confirmed events. - - go c.acceptAndConfirmWrite(ctx, *info, txID, query) - return success(), nil -} - -func (c *writeTarget) RegisterToWorkflow(ctx context.Context, request capabilities.RegisterToWorkflowRequest) error { - // TODO: notify the background WriteTxConfirmer (workflow registered) - return nil -} - -func (c *writeTarget) UnregisterFromWorkflow(ctx context.Context, request capabilities.UnregisterFromWorkflowRequest) error { - // TODO: notify the background WriteTxConfirmer (workflow unregistered) - return nil -} - -// acceptAndConfirmWrite waits (until timeout) for the report to be accepted and (optionally) confirmed on-chain -// Emits Beholder messages: -// - 'platform.write-target.WriteError' if not accepted -// - 'platform.write-target.WriteAccepted' if accepted (with or without an error) -// - 'platform.write-target.WriteError' if accepted (with an error) -// - 'platform.write-target.WriteConfirmed' if confirmed (until timeout) -func (c *writeTarget) acceptAndConfirmWrite(ctx context.Context, info requestInfo, txID uuid.UUID, query func(context.Context) (*TransmissionState, error)) { - attrs := c.traceAttributes(info.request.Metadata.WorkflowExecutionID) - _, span := c.beholder.Tracer.Start(ctx, "Execute.acceptAndConfirmWrite", trace.WithAttributes(attrs...)) - defer span.End() - - lggr := logger.Named(c.lggr, "write-confirmer") - - // Timeout for the confirmation process - timeout := c.config.ConfirmerTimeout.Duration() - ctx, cancel := context.WithTimeout(context.Background(), timeout) - defer cancel() - - // Retry interval for the confirmation process - interval := c.config.ConfirmerPollPeriod.Duration() - ticker := time.NewTicker(interval) - defer ticker.Stop() - - // Helper to build monitoring (Beholder) messages - // Notice: error skipped as implementation always returns nil - capInfo, _ := c.Info(ctx) - builder := NewMessageBuilder(c.chainInfo, capInfo) - - // Fn helpers - checkAcceptedStatus := func(ctx context.Context) (commontypes.TransactionStatus, bool, error) { - // Check TXM for status - status, err := c.cw.GetTransactionStatus(ctx, txID.String()) + // Notice: reusing logic from the TXM which sources the transmitter this way + transmitter := functionConfig.FromAddress + if transmitter == "" { + // If the address is not specified, we assume the public key is for its corresponding address + // and not for an address with a rotated authentication key. + ed25519PublicKey, err := aptosacc.HexPublicKeyToEd25519PublicKey(functionConfig.PublicKey) if err != nil { - return commontypes.Unknown, false, fmt.Errorf("failed to get tx status: %w", err) - } - - lggr.Debugw("txm - tx status", "txID", txID, "status", status) - - // Check if the transaction was accepted (included in a chain block, not required to be finalized) - // Notice: 'Unconfirmed' is used by TXM to indicate the transaction is not yet included in a block, - // while 'Included' (N/A yet) could be used to indicate the transaction is included in a block but not yet finalized. - if /* status == commontypes.Included || */ status == commontypes.Finalized { - return status, true, nil + return "", fmt.Errorf("failed to convert public key: %+w", err) } - - // false if [Unknown, Pending, Failed, Fatal] - return status, false, nil - } - checkConfirmedStatus := query - - // Store the acceptance status - accepted := false - - for { - select { - case <-ctx.Done(): - // We (eventually) failed to confirm the report was transmitted - c.beholder.ProtoEmitter.EmitWithLog(ctx, builder.buildWriteError(&info, 0, "write confirmation - failed", "timed out")) - return - case <-ticker.C: - // Fetch the latest head from the chain (timestamp) - head, err := c.cs.LatestHead(ctx) - if err != nil { - lggr.Errorw("failed to fetch the latest head", "txID", txID, "err", err) - continue - } - - if !accepted { - // Check acceptance status - status, accepted, err := checkAcceptedStatus(ctx) - if err != nil { - lggr.Errorw("failed to check accepted status", "txID", txID, "err", err) - continue - } - - if !accepted { - lggr.Infow("not accepted yet", "txID", txID, "status", status) - continue - } - - lggr.Infow("accepted", "txID", txID, "status", status) - // Notice: report write confirmation is only possible after a tx is accepted without an error - // TODO: [Beholder] Emit 'platform.write-target.WriteAccepted' (useful to source tx hash, block number, and tx status/error) - - // TODO: check if accepted with an error (e.g., on-chain revert) - // Notice: this functionality is not available in the current CW/TXM API - acceptedWithErr := false - if acceptedWithErr { - // TODO: [Beholder] Emit 'platform.write-target.WriteError' if accepted with an error (surface specific on-chain error) - // Notice: no return, we continue to check for confirmation (tx could be accepted by another node) - } - } - - // Check confirmation status (transmission state) - state, err := checkConfirmedStatus(ctx) - if err != nil { - lggr.Errorw("failed to check confirmed status", "txID", txID, "err", err) - continue - } - - if state == nil { - lggr.Infow("not confirmed yet - transmission state NOT visible", "txID", txID) - continue - } - - // We (eventually) confirmed the report was transmitted - // Emit the confirmation message and return - lggr.Infow("confirmed - transmission state visible", "txID", txID) - - // Source the transmitter address from the on-chain state - info.reportTransmissionState = state - - c.beholder.ProtoEmitter.EmitWithLog(ctx, builder.buildWriteConfirmed(&info, head)) - return - } - } -} - -// traceAttributes returns the attributes to be used for tracing -func (c *writeTarget) traceAttributes(workflowExecutionID string) []attribute.KeyValue { - return []attribute.KeyValue{ - attribute.String("capability_id", c.ID), - attribute.String("capability_type", string(c.CapabilityType)), - attribute.String("workflow_execution_id", workflowExecutionID), + acc := aptosacc.Ed25519PublicKeyToAccount(ed25519PublicKey) + transmitter = acc.String() } + return transmitter, nil } -// asEmittedError returns the WriteError message as an (Go) error, after emitting it first -func (c *writeTarget) asEmittedError(ctx context.Context, e *wt.WriteError, attrKVs ...any) error { - // Notice: we always want to log the error - err := c.beholder.ProtoEmitter.EmitWithLog(ctx, e, attrKVs...) +func getReceiver(request capabilities.CapabilityRequest) (string, error) { + var aptosConfig AptosConfig + err := request.Config.UnwrapTo(&aptosConfig) if err != nil { - return fmt.Errorf("failed to emit error: %+w", err) + return "", fmt.Errorf("failed to unwrap AptosConfig: %w", err) } - return e.AsError() + return aptosConfig.Address, nil } diff --git a/relayer/write_target/write_target_test.go b/relayer/write_target/write_target_test.go deleted file mode 100644 index 3973f3b8..00000000 --- a/relayer/write_target/write_target_test.go +++ /dev/null @@ -1,95 +0,0 @@ -package write_target - -import ( - "testing" - - "github.com/stretchr/testify/require" -) - -func TestNewWriteTargetID(t *testing.T) { - tests := []struct { - name string - chainFamilyName string - networkName string - chainID string - version string - expected string - expectError bool - }{ - { - name: "Valid input with network name", - chainFamilyName: "aptos", - networkName: "mainnet", - chainID: "1", - version: "1.0.0", - expected: "write_aptos-mainnet@1.0.0", - expectError: false, - }, - { - name: "Valid input without network name", - chainFamilyName: "aptos", - networkName: "", - chainID: "1", - version: "1.0.0", - expected: "write_aptos-1@1.0.0", - expectError: false, - }, - { - name: "Invalid input with empty chainFamilyName", - chainFamilyName: "", - networkName: "mainnet", - chainID: "1", - version: "1.0.0", - expected: "", - expectError: true, - }, - { - name: "Invalid input with empty version", - chainFamilyName: "aptos", - networkName: "mainnet", - chainID: "1", - version: "", - expected: "", - expectError: true, - }, - { - name: "Invalid input with empty networkName and chainID", - chainFamilyName: "aptos", - networkName: "", - chainID: "", - version: "2.0.0", - expected: "", - expectError: true, - }, - { - name: "Valid input with unknown network name", - chainFamilyName: "aptos", - networkName: "unknown", - chainID: "1", - version: "2.0.1", - expected: "write_aptos-1@2.0.1", - expectError: false, - }, - { - name: "Valid input with network name (testnet)", - chainFamilyName: "aptos", - networkName: "testnet", - chainID: "2", - version: "1.0.3", - expected: "write_aptos-testnet@1.0.3", - expectError: false, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result, err := NewWriteTargetID(tt.chainFamilyName, tt.networkName, tt.chainID, tt.version) - if tt.expectError { - require.Error(t, err) - } else { - require.NoError(t, err) - require.Equal(t, tt.expected, result) - } - }) - } -}