From f1e782d523d9fd58160c2ad8b6abab5cf4d0b248 Mon Sep 17 00:00:00 2001 From: Wojciech Zieba Date: Wed, 28 Aug 2024 16:36:38 +0200 Subject: [PATCH] Copy starknet p2p implementation from Juno Can't use the package directly right now due to dependencies issue in Juno. Refer to: https://github.com/NethermindEth/juno/issues/2084 --- Cargo.toml | 26 - go.mod | 115 + go.sum | 537 ++++ protocol/p2p/starknet/bytereader.go | 21 + protocol/p2p/starknet/client.go | 129 + protocol/p2p/starknet/ids.go | 31 + protocol/p2p/starknet/p2p/proto/class.proto | 58 + protocol/p2p/starknet/p2p/proto/common.proto | 78 + protocol/p2p/starknet/p2p/proto/event.proto | 23 + protocol/p2p/starknet/p2p/proto/header.proto | 56 + protocol/p2p/starknet/p2p/proto/notes.md | 22 + protocol/p2p/starknet/p2p/proto/receipt.proto | 84 + protocol/p2p/starknet/p2p/proto/state.proto | 37 + .../p2p/starknet/p2p/proto/transaction.proto | 169 ++ protocol/p2p/starknet/spec/class.pb.go | 830 ++++++ protocol/p2p/starknet/spec/common.pb.go | 1101 ++++++++ protocol/p2p/starknet/spec/event.pb.go | 358 +++ protocol/p2p/starknet/spec/header.pb.go | 696 +++++ protocol/p2p/starknet/spec/receipt.pb.go | 1207 +++++++++ protocol/p2p/starknet/spec/state.pb.go | 555 ++++ protocol/p2p/starknet/spec/transaction.pb.go | 2337 +++++++++++++++++ protocol/p2p/utils/utils.go | 76 + 22 files changed, 8520 insertions(+), 26 deletions(-) delete mode 100644 Cargo.toml create mode 100644 go.mod create mode 100644 go.sum create mode 100644 protocol/p2p/starknet/bytereader.go create mode 100644 protocol/p2p/starknet/client.go create mode 100644 protocol/p2p/starknet/ids.go create mode 100644 protocol/p2p/starknet/p2p/proto/class.proto create mode 100644 protocol/p2p/starknet/p2p/proto/common.proto create mode 100644 protocol/p2p/starknet/p2p/proto/event.proto create mode 100644 protocol/p2p/starknet/p2p/proto/header.proto create mode 100644 protocol/p2p/starknet/p2p/proto/notes.md create mode 100644 protocol/p2p/starknet/p2p/proto/receipt.proto create mode 100644 protocol/p2p/starknet/p2p/proto/state.proto create mode 100644 protocol/p2p/starknet/p2p/proto/transaction.proto create mode 100644 protocol/p2p/starknet/spec/class.pb.go create mode 100644 protocol/p2p/starknet/spec/common.pb.go create mode 100644 protocol/p2p/starknet/spec/event.pb.go create mode 100644 protocol/p2p/starknet/spec/header.pb.go create mode 100644 protocol/p2p/starknet/spec/receipt.pb.go create mode 100644 protocol/p2p/starknet/spec/state.pb.go create mode 100644 protocol/p2p/starknet/spec/transaction.pb.go create mode 100644 protocol/p2p/utils/utils.go diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index 18740d41..00000000 --- a/Cargo.toml +++ /dev/null @@ -1,26 +0,0 @@ -[package] -name = "starknet-p2p-tests" -version = "0.1.0" -edition = "2021" - -[dependencies] -libp2p = { version = "0.53.2", features = [ - "autonat", - "dcutr", - "dns", - "gossipsub", - "identify", - "kad", - "macros", - "noise", - "ping", - "relay", - "request-response", - "serde", - "tcp", - "tokio", - "yamux", -] } - -tokio = { version = "1.28.0", features = ["full", "test-util"] } -anyhow = "1.0" \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..9bcba352 --- /dev/null +++ b/go.mod @@ -0,0 +1,115 @@ +module starknet-p2p-tests + +go 1.23 + +require github.com/stretchr/testify v1.9.0 + +require ( + github.com/benbjohnson/clock v1.3.5 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/containerd/cgroups v1.1.0 // indirect + github.com/coreos/go-systemd/v22 v22.5.0 // indirect + github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/elastic/gosigar v0.14.3 // indirect + github.com/flynn/noise v1.1.0 // indirect + github.com/francoispqt/gojay v1.2.13 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/godbus/dbus/v5 v5.1.0 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/google/gopacket v1.1.19 // indirect + github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/huin/goupnp v1.3.0 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/ipfs/go-log/v2 v2.5.1 // indirect + github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect + github.com/koron/go-ssdp v0.0.4 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-flow-metrics v0.1.0 // indirect + github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect + github.com/libp2p/go-msgio v0.3.0 // indirect + github.com/libp2p/go-nat v0.2.0 // indirect + github.com/libp2p/go-netroute v0.2.1 // indirect + github.com/libp2p/go-reuseport v0.4.0 // indirect + github.com/libp2p/go-yamux/v4 v4.0.1 // indirect + github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/miekg/dns v1.1.61 // indirect + github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect + github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect + github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-multistream v0.5.0 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/onsi/ginkgo/v2 v2.19.1 // indirect + github.com/opencontainers/runtime-spec v1.2.0 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect + github.com/pion/datachannel v1.5.8 // indirect + github.com/pion/dtls/v2 v2.2.12 // indirect + github.com/pion/ice/v2 v2.3.34 // indirect + github.com/pion/interceptor v0.1.29 // indirect + github.com/pion/logging v0.2.2 // indirect + github.com/pion/mdns v0.0.12 // indirect + github.com/pion/randutil v0.1.0 // indirect + github.com/pion/rtcp v1.2.14 // indirect + github.com/pion/rtp v1.8.8 // indirect + github.com/pion/sctp v1.8.20 // indirect + github.com/pion/sdp/v3 v3.0.9 // indirect + github.com/pion/srtp/v2 v2.0.20 // indirect + github.com/pion/stun v0.6.1 // indirect + github.com/pion/transport/v2 v2.2.10 // indirect + github.com/pion/turn/v2 v2.1.6 // indirect + github.com/pion/webrtc/v3 v3.3.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/quic-go/qpack v0.4.0 // indirect + github.com/quic-go/quic-go v0.45.2 // indirect + github.com/quic-go/webtransport-go v0.8.0 // indirect + github.com/raulk/go-watchdog v1.3.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/wlynxg/anet v0.0.3 // indirect + github.com/x448/float16 v0.8.4 // indirect + go.uber.org/dig v1.17.1 // indirect + go.uber.org/fx v1.22.1 // indirect + go.uber.org/mock v0.4.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/mod v0.19.0 // indirect + golang.org/x/net v0.27.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/tools v0.23.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + lukechampine.com/blake3 v1.3.0 // indirect +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fxamacker/cbor/v2 v2.7.0 + github.com/libp2p/go-libp2p v0.36.2 + github.com/montanaflynn/stats v0.7.1 + github.com/multiformats/go-multiaddr v0.13.0 + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..fa5a79ba --- /dev/null +++ b/go.sum @@ -0,0 +1,537 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +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/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +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/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/elastic/gosigar v0.14.3 h1:xwkKwPia+hSfg9GqrCUKYdId102m9qTJIIr7egmK/uo= +github.com/elastic/gosigar v0.14.3/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= +github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= +github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k= +github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/uuid v1.3.1/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= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= +github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= +github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p v0.36.2 h1:BbqRkDaGC3/5xfaJakLV/BrpjlAuYqSB0lRvtzL3B/U= +github.com/libp2p/go-libp2p v0.36.2/go.mod h1:XO3joasRE4Eup8yCTTP/+kX+g92mOgRaadk46LmPhHY= +github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= +github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= +github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= +github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= +github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= +github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= +github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +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.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.61 h1:nLxbwF3XxhwVSm8g9Dghm9MHPaUZuqhPiGL+675ZmEs= +github.com/miekg/dns v1.1.61/go.mod h1:mnAarhS3nWaW+NVP2wTkYVIZyHNJ098SJZUki3eykwQ= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= +github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +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/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= +github.com/multiformats/go-multiaddr v0.13.0 h1:BCBzs61E3AGHcYYTv8dqRH43ZfyrqM8RXVPT8t13tLQ= +github.com/multiformats/go-multiaddr v0.13.0/go.mod h1:sBXrNzucqkFJhvKOiwwLyqamGa/P5EIXNPLovyhQCII= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-multistream v0.5.0 h1:5htLSLl7lvJk3xx3qT/8Zm9J4K8vEOf/QGkvOGQAyiE= +github.com/multiformats/go-multistream v0.5.0/go.mod h1:n6tMZiwiP2wUsR8DgfDWw1dydlEqV3l6N3/GBsX6ILA= +github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +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/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/onsi/ginkgo/v2 v2.19.1 h1:QXgq3Z8Crl5EL1WBAC98A5sEBHARrAJNzAmMxzLcRF0= +github.com/onsi/ginkgo/v2 v2.19.1/go.mod h1:O3DtEWQkPa/F7fBMgmZQKKsluAy8pd3rEQdrjkPb9zA= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= +github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pion/datachannel v1.5.8 h1:ph1P1NsGkazkjrvyMfhRBUAWMxugJjq2HfQifaOoSNo= +github.com/pion/datachannel v1.5.8/go.mod h1:PgmdpoaNBLX9HNzNClmdki4DYW5JtI7Yibu8QzbL3tI= +github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= +github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= +github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= +github.com/pion/ice/v2 v2.3.34 h1:Ic1ppYCj4tUOcPAp76U6F3fVrlSw8A9JtRXLqw6BbUM= +github.com/pion/ice/v2 v2.3.34/go.mod h1:mBF7lnigdqgtB+YHkaY/Y6s6tsyRyo4u4rPGRuOjUBQ= +github.com/pion/interceptor v0.1.29 h1:39fsnlP1U8gw2JzOFWdfCU82vHvhW9o0rZnZF56wF+M= +github.com/pion/interceptor v0.1.29/go.mod h1:ri+LGNjRUc5xUNtDEPzfdkmSqISixVTBF/z/Zms/6T4= +github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= +github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/mdns v0.0.12 h1:CiMYlY+O0azojWDmxdNr7ADGrnZ+V6Ilfner+6mSVK8= +github.com/pion/mdns v0.0.12/go.mod h1:VExJjv8to/6Wqm1FXK+Ii/Z9tsVk/F5sD/N70cnYFbk= +github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= +github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= +github.com/pion/rtcp v1.2.12/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= +github.com/pion/rtcp v1.2.14 h1:KCkGV3vJ+4DAJmvP0vaQShsb0xkRfWkO540Gy102KyE= +github.com/pion/rtcp v1.2.14/go.mod h1:sn6qjxvnwyAkkPzPULIbVqSKI5Dv54Rv7VG0kNxh9L4= +github.com/pion/rtp v1.8.3/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= +github.com/pion/rtp v1.8.8 h1:EtYFHI0rpUEjT/RMnGfb1vdJhbYmPG77szD72uUnSxs= +github.com/pion/rtp v1.8.8/go.mod h1:pBGHaFt/yW7bf1jjWAoUjpSNoDnw98KTMg+jWWvziqU= +github.com/pion/sctp v1.8.20 h1:sOc3lkV/tQaP57ZUEXIMdM2V92IIB2ia5v/ygnBxaEg= +github.com/pion/sctp v1.8.20/go.mod h1:oTxw8i5m+WbDHZJL/xUpe6CPIn1Y0GIKKwTLF4h53H8= +github.com/pion/sdp/v3 v3.0.9 h1:pX++dCHoHUwq43kuwf3PyJfHlwIj4hXA7Vrifiq0IJY= +github.com/pion/sdp/v3 v3.0.9/go.mod h1:B5xmvENq5IXJimIO4zfp6LAe1fD9N+kFv+V/1lOdz8M= +github.com/pion/srtp/v2 v2.0.20 h1:HNNny4s+OUmG280ETrCdgFndp4ufx3/uy85EawYEhTk= +github.com/pion/srtp/v2 v2.0.20/go.mod h1:0KJQjA99A6/a0DOVTu1PhDSw0CXF2jTkqOoMg3ODqdA= +github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= +github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= +github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= +github.com/pion/transport/v2 v2.2.3/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= +github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= +github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= +github.com/pion/turn/v2 v2.1.3/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= +github.com/pion/turn/v2 v2.1.6 h1:Xr2niVsiPTB0FPtt+yAWKFUkU1eotQbGgpTIld4x1Gc= +github.com/pion/turn/v2 v2.1.6/go.mod h1:huEpByKKHix2/b9kmTAM3YoX6MKP+/D//0ClgUYR2fY= +github.com/pion/webrtc/v3 v3.3.0 h1:Rf4u6n6U5t5sUxhYPQk/samzU/oDv7jk6BA5hyO2F9I= +github.com/pion/webrtc/v3 v3.3.0/go.mod h1:hVmrDJvwhEertRWObeb1xzulzHGeVUoPlWvxdGzcfU0= +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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +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/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/quic-go v0.45.2 h1:DfqBmqjb4ExSdxRIb/+qXhPC+7k6+DUNZha4oeiC9fY= +github.com/quic-go/quic-go v0.45.2/go.mod h1:1dLehS7TIR64+vxGR70GDcatWTOtMX2PUtnKsjbTurI= +github.com/quic-go/webtransport-go v0.8.0 h1:HxSrwun11U+LlmwpgM1kEqIqH90IT4N8auv/cD7QFJg= +github.com/quic-go/webtransport-go v0.8.0/go.mod h1:N99tjprW432Ut5ONql/aUhSLT0YVSlwHohQsuac9WaM= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +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/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.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.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/wlynxg/anet v0.0.3 h1:PvR53psxFXstc12jelG6f1Lv4MWqE0tI76/hHGjh9rg= +github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= +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.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/dig v1.17.1 h1:Tga8Lz8PcYNsWsyHMZ1Vm0OQOUaJNDyvPImgbAu9YSc= +go.uber.org/dig v1.17.1/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= +go.uber.org/fx v1.22.1 h1:nvvln7mwyT5s1q201YE29V/BFrGor6vMiDNpU/78Mys= +go.uber.org/fx v1.22.1/go.mod h1:HT2M7d7RHo+ebKGh9NRcrsrHHfpZ60nW3QRubMRfv48= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20230725012225-302865e7556b h1:tK7yjGqVRzYdXsBcfD2MLhFAhHfDgGLm2rY1ub7FA9k= +golang.org/x/exp v0.0.0-20230725012225-302865e7556b/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +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-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/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-20200226121028-0de0cce0169b/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-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +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.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +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-20190227155943-e225da77a7e6/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-20190911185100-cd5d95a43a6e/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.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/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-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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-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.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +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.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +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.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +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= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +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-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +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-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/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.0-20210107192922-496545a6307b/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= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= +lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/protocol/p2p/starknet/bytereader.go b/protocol/p2p/starknet/bytereader.go new file mode 100644 index 00000000..0377571d --- /dev/null +++ b/protocol/p2p/starknet/bytereader.go @@ -0,0 +1,21 @@ +package starknet + +import ( + "io" + + "google.golang.org/protobuf/encoding/protodelim" +) + +var _ protodelim.Reader = (*byteReader)(nil) + +type byteReader struct { + io.Reader +} + +func (r *byteReader) ReadByte() (byte, error) { + var b [1]byte + if _, err := r.Read(b[:]); err != nil { + return 0, err + } + return b[0], nil +} diff --git a/protocol/p2p/starknet/client.go b/protocol/p2p/starknet/client.go new file mode 100644 index 00000000..dcf2524e --- /dev/null +++ b/protocol/p2p/starknet/client.go @@ -0,0 +1,129 @@ +package starknet + +// TODO: remove this nolint when the issue is fixed https://github.com/daixiang0/gci/issues/209 +//nolint:gci +import ( + "context" + "errors" + "io" + "iter" + "time" + + "starknet-p2p-tests/protocol/p2p/utils" + + "starknet-p2p-tests/protocol/p2p/starknet/spec" + + "github.com/libp2p/go-libp2p/core/network" + "github.com/libp2p/go-libp2p/core/protocol" + "google.golang.org/protobuf/encoding/protodelim" + "google.golang.org/protobuf/proto" +) + +const ( + unmarshalMaxSize = 15 * utils.Megabyte + readTimeout = 5 * time.Second +) + +type NewStreamFunc func(ctx context.Context, pids ...protocol.ID) (network.Stream, error) + +type Client struct { + newStream NewStreamFunc + network *utils.Network + log utils.SimpleLogger +} + +func NewClient(newStream NewStreamFunc, snNetwork *utils.Network, log utils.SimpleLogger) *Client { + return &Client{ + newStream: newStream, + network: snNetwork, + log: log, + } +} + +func sendAndCloseWrite(stream network.Stream, req proto.Message) error { + reqBytes, err := proto.Marshal(req) + if err != nil { + return err + } + + if _, err = stream.Write(reqBytes); err != nil { + return err + } + return stream.CloseWrite() +} + +func receiveInto(stream network.Stream, res proto.Message) error { + unmarshaller := protodelim.UnmarshalOptions{ + MaxSize: unmarshalMaxSize, + } + return unmarshaller.UnmarshalFrom(&byteReader{stream}, res) +} + +func requestAndReceiveStream[ReqT proto.Message, ResT proto.Message](ctx context.Context, + newStream NewStreamFunc, protocolID protocol.ID, req ReqT, log utils.SimpleLogger, +) (iter.Seq[ResT], error) { + stream, err := newStream(ctx, protocolID) + if err != nil { + return nil, err + } + + err = stream.SetReadDeadline(time.Now().Add(readTimeout)) + if err != nil { + return nil, err + } + + id := stream.ID() + if err := sendAndCloseWrite(stream, req); err != nil { + log.Errorw("sendAndCloseWrite (stream is not closed)", "err", err, "streamID", id) + return nil, err + } + + return func(yield func(ResT) bool) { + defer func() { + closeErr := stream.Close() + if closeErr != nil { + log.Errorw("Error while closing stream", "err", closeErr) + } + }() + + for { + var zero ResT + res := zero.ProtoReflect().New().Interface() + if err := receiveInto(stream, res); err != nil { + if !errors.Is(err, io.EOF) { + log.Debugw("Error while reading from stream", "err", err) + } + + break + } + + if !yield(res.(ResT)) { + break + } + } + }, nil +} + +func (c *Client) RequestBlockHeaders( + ctx context.Context, req *spec.BlockHeadersRequest, +) (iter.Seq[*spec.BlockHeadersResponse], error) { + return requestAndReceiveStream[*spec.BlockHeadersRequest, *spec.BlockHeadersResponse]( + ctx, c.newStream, HeadersPID(), req, c.log) +} + +func (c *Client) RequestEvents(ctx context.Context, req *spec.EventsRequest) (iter.Seq[*spec.EventsResponse], error) { + return requestAndReceiveStream[*spec.EventsRequest, *spec.EventsResponse](ctx, c.newStream, EventsPID(), req, c.log) +} + +func (c *Client) RequestClasses(ctx context.Context, req *spec.ClassesRequest) (iter.Seq[*spec.ClassesResponse], error) { + return requestAndReceiveStream[*spec.ClassesRequest, *spec.ClassesResponse](ctx, c.newStream, ClassesPID(), req, c.log) +} + +func (c *Client) RequestStateDiffs(ctx context.Context, req *spec.StateDiffsRequest) (iter.Seq[*spec.StateDiffsResponse], error) { + return requestAndReceiveStream[*spec.StateDiffsRequest, *spec.StateDiffsResponse](ctx, c.newStream, StateDiffPID(), req, c.log) +} + +func (c *Client) RequestTransactions(ctx context.Context, req *spec.TransactionsRequest) (iter.Seq[*spec.TransactionsResponse], error) { + return requestAndReceiveStream[*spec.TransactionsRequest, *spec.TransactionsResponse]( + ctx, c.newStream, TransactionsPID(), req, c.log) +} diff --git a/protocol/p2p/starknet/ids.go b/protocol/p2p/starknet/ids.go new file mode 100644 index 00000000..67b695c3 --- /dev/null +++ b/protocol/p2p/starknet/ids.go @@ -0,0 +1,31 @@ +package starknet + +import ( + "github.com/libp2p/go-libp2p/core/protocol" +) + +const Prefix = "/starknet" + +func KadPrefix() protocol.ID { + return Prefix + "/kad" +} + +func HeadersPID() protocol.ID { + return Prefix + "/headers/0.1.0-rc.0" +} + +func EventsPID() protocol.ID { + return Prefix + "/events/0.1.0-rc.0" +} + +func TransactionsPID() protocol.ID { + return Prefix + "/transactions/0.1.0-rc.0" +} + +func ClassesPID() protocol.ID { + return Prefix + "/classes/0.1.0-rc.0" +} + +func StateDiffPID() protocol.ID { + return Prefix + "/state_diffs/0.1.0-rc.0" +} diff --git a/protocol/p2p/starknet/p2p/proto/class.proto b/protocol/p2p/starknet/p2p/proto/class.proto new file mode 100644 index 00000000..2cd3ed52 --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/class.proto @@ -0,0 +1,58 @@ +syntax = "proto3"; +import "p2p/proto/common.proto"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + + +message EntryPoint { + Felt252 selector = 1; + uint64 offset = 2; +} + +message Cairo0Class { + string abi = 1; + repeated EntryPoint externals = 2; + repeated EntryPoint l1_handlers = 3; + repeated EntryPoint constructors = 4; + // Compressed in base64 representation. + string program = 5; +} + +message SierraEntryPoint { + uint64 index = 1; + Felt252 selector = 2; +} + +message Cairo1EntryPoints { + repeated SierraEntryPoint externals = 1; + repeated SierraEntryPoint l1_handlers = 2; + repeated SierraEntryPoint constructors = 3; +} + +message Cairo1Class { + string abi = 1; + Cairo1EntryPoints entry_points = 2; + repeated Felt252 program = 3; + string contract_class_version = 4; +} + +message Class { + oneof class { + Cairo0Class cairo0 = 1; + Cairo1Class cairo1 = 2; + } + uint32 domain = 3; + Hash class_hash = 4; +} + +message ClassesRequest { + Iteration iteration = 1; +} + +// Responses are sent ordered by the order given in the request. +message ClassesResponse { + oneof class_message { + Class class = 1; + Fin fin = 2; // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its classes. + } +} \ No newline at end of file diff --git a/protocol/p2p/starknet/p2p/proto/common.proto b/protocol/p2p/starknet/p2p/proto/common.proto new file mode 100644 index 00000000..b1debc3b --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/common.proto @@ -0,0 +1,78 @@ +syntax = "proto3"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + +message Felt252 { + bytes elements = 1; +} + +message Hash { + bytes elements = 1; +} + +message Hashes { + repeated Hash items = 1; +} + +message Address { + bytes elements = 1; +} + +message PeerID { + bytes id = 1; +} + +message Uint128 { + uint64 low = 1; + uint64 high = 2; +} + +message ConsensusSignature { + Felt252 r = 1; + Felt252 s = 2; +} + +message Patricia { + uint64 n_leaves = 1; // needed to know the height, so as to how many nodes to expect in a proof. + // and also when receiving all leaves, how many to expect + Hash root = 2; +} + +message StateDiffCommitment { + uint64 state_diff_length = 1; + Hash root = 2; +} + +message BlockID { + uint64 number = 1; + Hash header = 2; +} + +enum L1DataAvailabilityMode { + Calldata = 0; + Blob = 1; +} + +enum VolitionDomain { + L1 = 0; + L2 = 1; +} + +message Iteration { + enum Direction { + Forward = 0; + Backward = 1; + } + oneof start { + uint64 block_number = 1; + Hash header = 2; + } + Direction direction = 3; + uint64 limit = 4; + uint64 step = 5; // to allow interleaving from several nodes + // bool interleave = 6; // return results in any order of blocks, per block the messages should still be in the order specified +} + +// mark the end of a stream of messages +// TBD: may not be required if we open a stream per request. +message Fin {} \ No newline at end of file diff --git a/protocol/p2p/starknet/p2p/proto/event.proto b/protocol/p2p/starknet/p2p/proto/event.proto new file mode 100644 index 00000000..83200806 --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/event.proto @@ -0,0 +1,23 @@ +syntax = "proto3"; +import "p2p/proto/common.proto"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + +message Event { + Hash transaction_hash = 1; + Felt252 from_address = 3; // looks like mistake? + repeated Felt252 keys = 4; + repeated Felt252 data = 5; +} + +message EventsRequest { + Iteration iteration = 1; +} + +// Responses are sent ordered by the order given in the request. +message EventsResponse { + oneof event_message { + Event event = 1; + Fin fin = 2; // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its events. + } +} \ No newline at end of file diff --git a/protocol/p2p/starknet/p2p/proto/header.proto b/protocol/p2p/starknet/p2p/proto/header.proto new file mode 100644 index 00000000..2001e15e --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/header.proto @@ -0,0 +1,56 @@ +syntax = "proto3"; +import "p2p/proto/common.proto"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + +// Note: commitments may change to be for the previous blocks like comet/tendermint +// hash of block header sent to L1 +message SignedBlockHeader { + Hash block_hash = 1; // For the structure of the block hash, see https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/header/#block_hash + Hash parent_hash = 2; + uint64 number = 3; // This can be deduced from context. We can consider removing this field. + uint64 time = 4; // Encoded in Unix time. + Address sequencer_address = 5; + Hash state_root = 6; // Patricia root of contract and class patricia tries. Each of those tries are of height 251. Same as in L1. Later more trees will be included + StateDiffCommitment state_diff_commitment = 7; // The state diff commitment returned by the Starknet Feeder Gateway + // For more info, see https://community.starknet.io/t/introducing-p2p-authentication-and-mismatch-resolution-in-v0-12-2/97993 + // The leaves contain a hash of the transaction hash and transaction signature. + Patricia transactions = 8; // By order of execution. TBD: required? the client can execute (powerful machine) and match state diff + Patricia events = 9; // By order of issuance. TBD: in receipts? + Hash receipts = 10; // By order of issuance. This is a patricia root. No need for length because it's the same length as transactions. + string protocol_version = 11; // Starknet version + Uint128 gas_price_fri = 12; + Uint128 gas_price_wei = 13; + Uint128 data_gas_price_fri = 14; + Uint128 data_gas_price_wei = 15; + L1DataAvailabilityMode l1_data_availability_mode = 16; + // for now, we assume a small consensus, so this fits in 1M. Else, these will be repeated and extracted from this message. + repeated ConsensusSignature signatures = 17; + // can be more explicit here about the signature structure as this is not part of account abstraction +} + +// sent to all peers (except the ones this was received from, if any). +// for a fraction of peers, also send the GetBlockHeaders response (as if they asked for it for this block) +message NewBlock { + oneof maybe_full { + BlockID id = 1; + BlockHeadersResponse header = 2; + } +} + + +message BlockHeadersRequest { + Iteration iteration = 1; +} + +// Responses are sent ordered by the order given in the request. +message BlockHeadersResponse { + oneof header_message { + SignedBlockHeader header = 1; + Fin fin = 2; // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its header. + } +} + +message BlockProof { + repeated bytes proof = 1; +} \ No newline at end of file diff --git a/protocol/p2p/starknet/p2p/proto/notes.md b/protocol/p2p/starknet/p2p/proto/notes.md new file mode 100644 index 00000000..f9c87b74 --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/notes.md @@ -0,0 +1,22 @@ +* Goals: consensus, scale, validator-fullnode separation, cleanup +* whenever 'bytes' is used to encode large numbers (felts), big endian is used, without storing leading zeros in the number as bytes (so 0x11 is stored as [0x11] not [0x00, 0x00,...,0x11] +* requests are responded to with a stream of messages that are varint message delimited. +* When a stream returnes several logical objects, each in several messages, then each object messages should end with a Fin message +* Responses to events, receipts and transactions also include block hash for cases of reorg. +* request_id is handled at the protocol level, specifically to support multiplexing +* number of messages (especially repeated ones) is capped for ddos +* Getting transactions/events is separate from getting blocks +* Protocols: blocks (headers+bodies or separate?), transactions, events, receipts, mempool. States? fastsync? +* Using Merkle trees so can prove a range of values (in the future). Also, a light node can decommit individual values (e.g. events) +** TBD: can save on the internal merkle nodes by having one where a leaf is the tx data, events and receipts, each hashed separately. But then getting a part of a leaf will require sending the other parts' hashes. +** Events are separate from receipt +* Proof and signatures are required to be returned only for blocks after the last l1 state update +* TBD: consensus messages (tx streaming, proofs separate) +* TBD: reverted transactions +* TBD: stark friendly hashes or not (calculate in os? so light nodes don't trust the consensus) +* TBD: "pubsub" mechanism where a node subscribes to getting push messages instead of GetXXX. +** GetXXX messages will need to be supported for network issues / failures +* Consensus: send (Transactions*, StateDiff*)* Proposal. The state diffs allows paralelization as the transactions following it can be executed from that state in parallel to whatever is already executing +* Assuming L1 state update will have block header hash and number. +* tx calldata limited to 30K + diff --git a/protocol/p2p/starknet/p2p/proto/receipt.proto b/protocol/p2p/starknet/p2p/proto/receipt.proto new file mode 100644 index 00000000..084ced5d --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/receipt.proto @@ -0,0 +1,84 @@ +syntax = "proto3"; +import "p2p/proto/common.proto"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + +message MessageToL1 { + Felt252 from_address = 2; + repeated Felt252 payload = 3; + EthereumAddress to_address = 4; +} + +enum PriceUnit { + Wei = 0; + Fri = 1; +} + +message EthereumAddress { + bytes elements = 1; +} + +message Receipt { + message ExecutionResources { + message BuiltinCounter { + uint32 bitwise = 1; + uint32 ecdsa = 2; + uint32 ec_op = 3; + uint32 pedersen = 4; + uint32 range_check = 5; + uint32 poseidon = 6; + uint32 keccak = 7; + uint32 output = 8; + uint32 add_mod = 9; + uint32 mul_mod = 10; + uint32 range_check96 = 11; + } + + BuiltinCounter builtins = 1; + uint32 steps = 2; + uint32 memory_holes = 3; + Felt252 l1_gas = 4; + Felt252 l1_data_gas = 5; + Felt252 total_l1_gas = 6; + } + + message Common { + Felt252 actual_fee = 2; + PriceUnit price_unit = 3; + repeated MessageToL1 messages_sent = 4; + ExecutionResources execution_resources = 5; + optional string revert_reason = 6; + } + + + message Invoke { + Common common = 1; + } + + message L1Handler { + Common common = 1; + Hash msg_hash = 2; + } + + message Declare { + Common common = 1; + } + + message Deploy { + Common common = 1; + Felt252 contract_address = 2; + } + + message DeployAccount { + Common common = 1; + Felt252 contract_address = 2; + } + + oneof type { + Invoke invoke = 1; + L1Handler l1_handler = 2; + Declare declare = 3; + Deploy deprecated_deploy = 4; + DeployAccount deploy_account = 5; + } +} \ No newline at end of file diff --git a/protocol/p2p/starknet/p2p/proto/state.proto b/protocol/p2p/starknet/p2p/proto/state.proto new file mode 100644 index 00000000..79f33fca --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/state.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; +import "p2p/proto/common.proto"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + +// optimized for flat storage, not through a trie (not sharing key prefixes) +message ContractStoredValue { + Felt252 key = 1; + Felt252 value = 2; +} + +message ContractDiff { + Address address = 1; + optional Felt252 nonce = 2; // Present only if the nonce was updated + optional Hash class_hash = 3; // Present only if the contract was deployed or replaced in this block. + repeated ContractStoredValue values = 4; + VolitionDomain domain = 5; +} + +message DeclaredClass { + Hash class_hash = 1; + optional Hash compiled_class_hash = 2; // Present only if the class is Cairo1 +} + +message StateDiffsRequest { + Iteration iteration = 1; +} + +// Responses are sent ordered by the order given in the request. +message StateDiffsResponse { + // All of the messages related to a block need to be sent before a message from the next block is sent. + oneof state_diff_message { + ContractDiff contract_diff = 1; // Multiple contract diffs for the same contract may appear continuously if the diff is too large or if it's more convenient. + DeclaredClass declared_class = 2; + Fin fin = 3; // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its state diff. + } +} \ No newline at end of file diff --git a/protocol/p2p/starknet/p2p/proto/transaction.proto b/protocol/p2p/starknet/p2p/proto/transaction.proto new file mode 100644 index 00000000..8803e918 --- /dev/null +++ b/protocol/p2p/starknet/p2p/proto/transaction.proto @@ -0,0 +1,169 @@ +syntax = "proto3"; +import "p2p/proto/common.proto"; +import "p2p/proto/receipt.proto"; + +option go_package = "github.com/NethermindEth/juno/p2p/starknet/spec"; + +message ResourceLimits { + Felt252 max_amount = 1; + Felt252 max_price_per_unit = 2; +} + +message ResourceBounds { + ResourceLimits l1_gas = 1; + ResourceLimits l2_gas = 2; +} + +message AccountSignature { + repeated Felt252 parts = 1; +} + +// This is a transaction that is already accepted in a block. Once we have a mempool, we will define +// a separate message for BroadcastedTransaction. +message Transaction +{ + message DeclareV0 { + Address sender = 1; + Felt252 max_fee = 2; + AccountSignature signature = 3; + Hash class_hash = 4; + } + + message DeclareV1 { + Address sender = 1; + Felt252 max_fee = 2; + AccountSignature signature = 3; + Hash class_hash = 4; + Felt252 nonce = 5; + } + + message DeclareV2 { + Address sender = 1; + Felt252 max_fee = 2; + AccountSignature signature = 3; + Hash class_hash = 4; + Felt252 nonce = 5; + Hash compiled_class_hash = 6; + } + + // see https://external.integration.starknet.io/feeder_gateway/get_transaction?transactionHash=0x41d1f5206ef58a443e7d3d1ca073171ec25fa75313394318fc83a074a6631c3 + message DeclareV3 { + Address sender = 1; + AccountSignature signature = 2; + Hash class_hash = 3; + Felt252 nonce = 4; + Hash compiled_class_hash = 5; + ResourceBounds resource_bounds = 6; + uint64 tip = 7; + repeated Felt252 paymaster_data = 8; + repeated Felt252 account_deployment_data = 9; + VolitionDomain nonce_data_availability_mode = 10; + VolitionDomain fee_data_availability_mode = 11; + } + + message Deploy { + Hash class_hash = 1; + Felt252 address_salt = 2; + repeated Felt252 calldata = 3; + uint32 version = 4; + } + + message DeployAccountV1 { + Felt252 max_fee = 1; + AccountSignature signature = 2; + Hash class_hash = 3; + Felt252 nonce = 4; + Felt252 address_salt = 5; + repeated Felt252 calldata = 6; + } + + // see https://external.integration.starknet.io/feeder_gateway/get_transaction?transactionHash=0x29fd7881f14380842414cdfdd8d6c0b1f2174f8916edcfeb1ede1eb26ac3ef0 + message DeployAccountV3 { + AccountSignature signature = 1; + Hash class_hash = 2; + Felt252 nonce = 3; + Felt252 address_salt = 4; + repeated Felt252 calldata = 5; + ResourceBounds resource_bounds = 6; + uint64 tip = 7; + repeated Felt252 paymaster_data = 8; + VolitionDomain nonce_data_availability_mode = 9; + VolitionDomain fee_data_availability_mode = 10; + } + + message InvokeV0 { + Felt252 max_fee = 1; + AccountSignature signature = 2; + Address address = 3; + Felt252 entry_point_selector = 4; + repeated Felt252 calldata = 5; + } + + message InvokeV1 { + Address sender = 1; + Felt252 max_fee = 2; + AccountSignature signature = 3; + repeated Felt252 calldata = 4; + Felt252 nonce = 5; + } + + // see https://external.integration.starknet.io/feeder_gateway/get_transaction?transactionHash=0x41906f1c314cca5f43170ea75d3b1904196a10101190d2b12a41cc61cfd17c + message InvokeV3 { + Address sender = 1; + AccountSignature signature = 2; + repeated Felt252 calldata = 3; + ResourceBounds resource_bounds = 4; + uint64 tip = 5; + repeated Felt252 paymaster_data = 6; + repeated Felt252 account_deployment_data = 7; + VolitionDomain nonce_data_availability_mode = 8; + VolitionDomain fee_data_availability_mode = 9; + Felt252 nonce = 10; + } + + message L1HandlerV0 { + Felt252 nonce = 1; + Address address = 2; + Felt252 entry_point_selector = 3; + repeated Felt252 calldata = 4; + } + + oneof txn { + DeclareV0 declare_v0 = 1; + DeclareV1 declare_v1 = 2; + DeclareV2 declare_v2 = 3; + DeclareV3 declare_v3 = 4; + Deploy deploy = 5; + DeployAccountV1 deploy_account_v1 = 6; + DeployAccountV3 deploy_account_v3 = 7; + InvokeV0 invoke_v0 = 8; + InvokeV1 invoke_v1 = 9; + InvokeV3 invoke_v3 = 10; + L1HandlerV0 l1_handler = 11; + } + Hash transaction_hash = 12; +} + +message TransactionWithReceipt { + Transaction transaction = 1; + Receipt receipt = 2; +} + +// TBD: can support a flag to return tx hashes only, good for standalone mempool to remove them, +// or any node that keeps track of transaction streaming in the consensus. +message TransactionsRequest { + Iteration iteration = 1; +} + +// Responses are sent ordered by the order given in the request. The order inside each block is +// according to the execution order. +message TransactionsResponse { + oneof transaction_message { + TransactionWithReceipt transaction_with_receipt = 1; + Fin fin = 2; // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its transactions. + } +} + +message Transactions { + repeated Transaction transactions = 1; +} \ No newline at end of file diff --git a/protocol/p2p/starknet/spec/class.pb.go b/protocol/p2p/starknet/spec/class.pb.go new file mode 100644 index 00000000..c0d591d4 --- /dev/null +++ b/protocol/p2p/starknet/spec/class.pb.go @@ -0,0 +1,830 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/class.proto + +package spec + +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) +) + +type EntryPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Selector *Felt252 `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"` + Offset uint64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"` +} + +func (x *EntryPoint) Reset() { + *x = EntryPoint{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntryPoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntryPoint) ProtoMessage() {} + +func (x *EntryPoint) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_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 EntryPoint.ProtoReflect.Descriptor instead. +func (*EntryPoint) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{0} +} + +func (x *EntryPoint) GetSelector() *Felt252 { + if x != nil { + return x.Selector + } + return nil +} + +func (x *EntryPoint) GetOffset() uint64 { + if x != nil { + return x.Offset + } + return 0 +} + +type Cairo0Class struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Abi string `protobuf:"bytes,1,opt,name=abi,proto3" json:"abi,omitempty"` + Externals []*EntryPoint `protobuf:"bytes,2,rep,name=externals,proto3" json:"externals,omitempty"` + L1Handlers []*EntryPoint `protobuf:"bytes,3,rep,name=l1_handlers,json=l1Handlers,proto3" json:"l1_handlers,omitempty"` + Constructors []*EntryPoint `protobuf:"bytes,4,rep,name=constructors,proto3" json:"constructors,omitempty"` + // Compressed in base64 representation. + Program string `protobuf:"bytes,5,opt,name=program,proto3" json:"program,omitempty"` +} + +func (x *Cairo0Class) Reset() { + *x = Cairo0Class{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Cairo0Class) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cairo0Class) ProtoMessage() {} + +func (x *Cairo0Class) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[1] + 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 Cairo0Class.ProtoReflect.Descriptor instead. +func (*Cairo0Class) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{1} +} + +func (x *Cairo0Class) GetAbi() string { + if x != nil { + return x.Abi + } + return "" +} + +func (x *Cairo0Class) GetExternals() []*EntryPoint { + if x != nil { + return x.Externals + } + return nil +} + +func (x *Cairo0Class) GetL1Handlers() []*EntryPoint { + if x != nil { + return x.L1Handlers + } + return nil +} + +func (x *Cairo0Class) GetConstructors() []*EntryPoint { + if x != nil { + return x.Constructors + } + return nil +} + +func (x *Cairo0Class) GetProgram() string { + if x != nil { + return x.Program + } + return "" +} + +type SierraEntryPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Index uint64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + Selector *Felt252 `protobuf:"bytes,2,opt,name=selector,proto3" json:"selector,omitempty"` +} + +func (x *SierraEntryPoint) Reset() { + *x = SierraEntryPoint{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SierraEntryPoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SierraEntryPoint) ProtoMessage() {} + +func (x *SierraEntryPoint) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[2] + 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 SierraEntryPoint.ProtoReflect.Descriptor instead. +func (*SierraEntryPoint) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{2} +} + +func (x *SierraEntryPoint) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *SierraEntryPoint) GetSelector() *Felt252 { + if x != nil { + return x.Selector + } + return nil +} + +type Cairo1EntryPoints struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Externals []*SierraEntryPoint `protobuf:"bytes,1,rep,name=externals,proto3" json:"externals,omitempty"` + L1Handlers []*SierraEntryPoint `protobuf:"bytes,2,rep,name=l1_handlers,json=l1Handlers,proto3" json:"l1_handlers,omitempty"` + Constructors []*SierraEntryPoint `protobuf:"bytes,3,rep,name=constructors,proto3" json:"constructors,omitempty"` +} + +func (x *Cairo1EntryPoints) Reset() { + *x = Cairo1EntryPoints{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Cairo1EntryPoints) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cairo1EntryPoints) ProtoMessage() {} + +func (x *Cairo1EntryPoints) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[3] + 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 Cairo1EntryPoints.ProtoReflect.Descriptor instead. +func (*Cairo1EntryPoints) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{3} +} + +func (x *Cairo1EntryPoints) GetExternals() []*SierraEntryPoint { + if x != nil { + return x.Externals + } + return nil +} + +func (x *Cairo1EntryPoints) GetL1Handlers() []*SierraEntryPoint { + if x != nil { + return x.L1Handlers + } + return nil +} + +func (x *Cairo1EntryPoints) GetConstructors() []*SierraEntryPoint { + if x != nil { + return x.Constructors + } + return nil +} + +type Cairo1Class struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Abi string `protobuf:"bytes,1,opt,name=abi,proto3" json:"abi,omitempty"` + EntryPoints *Cairo1EntryPoints `protobuf:"bytes,2,opt,name=entry_points,json=entryPoints,proto3" json:"entry_points,omitempty"` + Program []*Felt252 `protobuf:"bytes,3,rep,name=program,proto3" json:"program,omitempty"` + ContractClassVersion string `protobuf:"bytes,4,opt,name=contract_class_version,json=contractClassVersion,proto3" json:"contract_class_version,omitempty"` +} + +func (x *Cairo1Class) Reset() { + *x = Cairo1Class{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Cairo1Class) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Cairo1Class) ProtoMessage() {} + +func (x *Cairo1Class) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[4] + 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 Cairo1Class.ProtoReflect.Descriptor instead. +func (*Cairo1Class) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{4} +} + +func (x *Cairo1Class) GetAbi() string { + if x != nil { + return x.Abi + } + return "" +} + +func (x *Cairo1Class) GetEntryPoints() *Cairo1EntryPoints { + if x != nil { + return x.EntryPoints + } + return nil +} + +func (x *Cairo1Class) GetProgram() []*Felt252 { + if x != nil { + return x.Program + } + return nil +} + +func (x *Cairo1Class) GetContractClassVersion() string { + if x != nil { + return x.ContractClassVersion + } + return "" +} + +type Class struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Class: + // + // *Class_Cairo0 + // *Class_Cairo1 + Class isClass_Class `protobuf_oneof:"class"` + Domain uint32 `protobuf:"varint,3,opt,name=domain,proto3" json:"domain,omitempty"` + ClassHash *Hash `protobuf:"bytes,4,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` +} + +func (x *Class) Reset() { + *x = Class{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Class) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Class) ProtoMessage() {} + +func (x *Class) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[5] + 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 Class.ProtoReflect.Descriptor instead. +func (*Class) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{5} +} + +func (m *Class) GetClass() isClass_Class { + if m != nil { + return m.Class + } + return nil +} + +func (x *Class) GetCairo0() *Cairo0Class { + if x, ok := x.GetClass().(*Class_Cairo0); ok { + return x.Cairo0 + } + return nil +} + +func (x *Class) GetCairo1() *Cairo1Class { + if x, ok := x.GetClass().(*Class_Cairo1); ok { + return x.Cairo1 + } + return nil +} + +func (x *Class) GetDomain() uint32 { + if x != nil { + return x.Domain + } + return 0 +} + +func (x *Class) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +type isClass_Class interface { + isClass_Class() +} + +type Class_Cairo0 struct { + Cairo0 *Cairo0Class `protobuf:"bytes,1,opt,name=cairo0,proto3,oneof"` +} + +type Class_Cairo1 struct { + Cairo1 *Cairo1Class `protobuf:"bytes,2,opt,name=cairo1,proto3,oneof"` +} + +func (*Class_Cairo0) isClass_Class() {} + +func (*Class_Cairo1) isClass_Class() {} + +type ClassesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Iteration *Iteration `protobuf:"bytes,1,opt,name=iteration,proto3" json:"iteration,omitempty"` +} + +func (x *ClassesRequest) Reset() { + *x = ClassesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClassesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClassesRequest) ProtoMessage() {} + +func (x *ClassesRequest) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[6] + 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 ClassesRequest.ProtoReflect.Descriptor instead. +func (*ClassesRequest) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{6} +} + +func (x *ClassesRequest) GetIteration() *Iteration { + if x != nil { + return x.Iteration + } + return nil +} + +// Responses are sent ordered by the order given in the request. +type ClassesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to ClassMessage: + // + // *ClassesResponse_Class + // *ClassesResponse_Fin + ClassMessage isClassesResponse_ClassMessage `protobuf_oneof:"class_message"` +} + +func (x *ClassesResponse) Reset() { + *x = ClassesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_class_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClassesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClassesResponse) ProtoMessage() {} + +func (x *ClassesResponse) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_class_proto_msgTypes[7] + 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 ClassesResponse.ProtoReflect.Descriptor instead. +func (*ClassesResponse) Descriptor() ([]byte, []int) { + return file_p2p_proto_class_proto_rawDescGZIP(), []int{7} +} + +func (m *ClassesResponse) GetClassMessage() isClassesResponse_ClassMessage { + if m != nil { + return m.ClassMessage + } + return nil +} + +func (x *ClassesResponse) GetClass() *Class { + if x, ok := x.GetClassMessage().(*ClassesResponse_Class); ok { + return x.Class + } + return nil +} + +func (x *ClassesResponse) GetFin() *Fin { + if x, ok := x.GetClassMessage().(*ClassesResponse_Fin); ok { + return x.Fin + } + return nil +} + +type isClassesResponse_ClassMessage interface { + isClassesResponse_ClassMessage() +} + +type ClassesResponse_Class struct { + Class *Class `protobuf:"bytes,1,opt,name=class,proto3,oneof"` +} + +type ClassesResponse_Fin struct { + Fin *Fin `protobuf:"bytes,2,opt,name=fin,proto3,oneof"` // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its classes. +} + +func (*ClassesResponse_Class) isClassesResponse_ClassMessage() {} + +func (*ClassesResponse_Fin) isClassesResponse_ClassMessage() {} + +var File_p2p_proto_class_proto protoreflect.FileDescriptor + +var file_p2p_proto_class_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x4a, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, + 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x0b, + 0x43, 0x61, 0x69, 0x72, 0x6f, 0x30, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, + 0x62, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x62, 0x69, 0x12, 0x29, 0x0a, + 0x09, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x0b, 0x6c, 0x31, 0x5f, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x6c, 0x31, 0x48, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x22, 0x4e, 0x0a, 0x10, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x0a, 0x08, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x22, 0xaf, 0x01, 0x0a, 0x11, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x31, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2f, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x53, 0x69, 0x65, + 0x72, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x09, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x6c, 0x31, 0x5f, 0x68, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x0a, 0x6c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x0c, + 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x6f, 0x72, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x0b, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x31, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x62, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x61, 0x62, 0x69, 0x12, 0x35, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x43, 0x61, + 0x69, 0x72, 0x6f, 0x31, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, + 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x12, 0x34, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x12, 0x26, 0x0a, 0x06, 0x63, 0x61, 0x69, 0x72, 0x6f, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x30, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x00, + 0x52, 0x06, 0x63, 0x61, 0x69, 0x72, 0x6f, 0x30, 0x12, 0x26, 0x0a, 0x06, 0x63, 0x61, 0x69, 0x72, + 0x6f, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x43, 0x61, 0x69, 0x72, 0x6f, + 0x31, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x00, 0x52, 0x06, 0x63, 0x61, 0x69, 0x72, 0x6f, 0x31, + 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x42, 0x07, + 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x22, 0x3a, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x74, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x49, + 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x5c, 0x0a, 0x0f, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x00, 0x52, + 0x05, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x03, 0x66, 0x69, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x46, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x66, 0x69, 0x6e, + 0x42, 0x0f, 0x0a, 0x0d, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, 0x75, + 0x6e, 0x6f, 0x2f, 0x70, 0x32, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, 0x2f, + 0x73, 0x70, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_class_proto_rawDescOnce sync.Once + file_p2p_proto_class_proto_rawDescData = file_p2p_proto_class_proto_rawDesc +) + +func file_p2p_proto_class_proto_rawDescGZIP() []byte { + file_p2p_proto_class_proto_rawDescOnce.Do(func() { + file_p2p_proto_class_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_class_proto_rawDescData) + }) + return file_p2p_proto_class_proto_rawDescData +} + +var file_p2p_proto_class_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_p2p_proto_class_proto_goTypes = []any{ + (*EntryPoint)(nil), // 0: EntryPoint + (*Cairo0Class)(nil), // 1: Cairo0Class + (*SierraEntryPoint)(nil), // 2: SierraEntryPoint + (*Cairo1EntryPoints)(nil), // 3: Cairo1EntryPoints + (*Cairo1Class)(nil), // 4: Cairo1Class + (*Class)(nil), // 5: Class + (*ClassesRequest)(nil), // 6: ClassesRequest + (*ClassesResponse)(nil), // 7: ClassesResponse + (*Felt252)(nil), // 8: Felt252 + (*Hash)(nil), // 9: Hash + (*Iteration)(nil), // 10: Iteration + (*Fin)(nil), // 11: Fin +} +var file_p2p_proto_class_proto_depIdxs = []int32{ + 8, // 0: EntryPoint.selector:type_name -> Felt252 + 0, // 1: Cairo0Class.externals:type_name -> EntryPoint + 0, // 2: Cairo0Class.l1_handlers:type_name -> EntryPoint + 0, // 3: Cairo0Class.constructors:type_name -> EntryPoint + 8, // 4: SierraEntryPoint.selector:type_name -> Felt252 + 2, // 5: Cairo1EntryPoints.externals:type_name -> SierraEntryPoint + 2, // 6: Cairo1EntryPoints.l1_handlers:type_name -> SierraEntryPoint + 2, // 7: Cairo1EntryPoints.constructors:type_name -> SierraEntryPoint + 3, // 8: Cairo1Class.entry_points:type_name -> Cairo1EntryPoints + 8, // 9: Cairo1Class.program:type_name -> Felt252 + 1, // 10: Class.cairo0:type_name -> Cairo0Class + 4, // 11: Class.cairo1:type_name -> Cairo1Class + 9, // 12: Class.class_hash:type_name -> Hash + 10, // 13: ClassesRequest.iteration:type_name -> Iteration + 5, // 14: ClassesResponse.class:type_name -> Class + 11, // 15: ClassesResponse.fin:type_name -> Fin + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_p2p_proto_class_proto_init() } +func file_p2p_proto_class_proto_init() { + if File_p2p_proto_class_proto != nil { + return + } + file_p2p_proto_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_p2p_proto_class_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*EntryPoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Cairo0Class); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*SierraEntryPoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Cairo1EntryPoints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*Cairo1Class); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*Class); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*ClassesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_class_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*ClassesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_class_proto_msgTypes[5].OneofWrappers = []any{ + (*Class_Cairo0)(nil), + (*Class_Cairo1)(nil), + } + file_p2p_proto_class_proto_msgTypes[7].OneofWrappers = []any{ + (*ClassesResponse_Class)(nil), + (*ClassesResponse_Fin)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_class_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_class_proto_goTypes, + DependencyIndexes: file_p2p_proto_class_proto_depIdxs, + MessageInfos: file_p2p_proto_class_proto_msgTypes, + }.Build() + File_p2p_proto_class_proto = out.File + file_p2p_proto_class_proto_rawDesc = nil + file_p2p_proto_class_proto_goTypes = nil + file_p2p_proto_class_proto_depIdxs = nil +} diff --git a/protocol/p2p/starknet/spec/common.pb.go b/protocol/p2p/starknet/spec/common.pb.go new file mode 100644 index 00000000..db391543 --- /dev/null +++ b/protocol/p2p/starknet/spec/common.pb.go @@ -0,0 +1,1101 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/common.proto + +package spec + +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) +) + +type L1DataAvailabilityMode int32 + +const ( + L1DataAvailabilityMode_Calldata L1DataAvailabilityMode = 0 + L1DataAvailabilityMode_Blob L1DataAvailabilityMode = 1 +) + +// Enum value maps for L1DataAvailabilityMode. +var ( + L1DataAvailabilityMode_name = map[int32]string{ + 0: "Calldata", + 1: "Blob", + } + L1DataAvailabilityMode_value = map[string]int32{ + "Calldata": 0, + "Blob": 1, + } +) + +func (x L1DataAvailabilityMode) Enum() *L1DataAvailabilityMode { + p := new(L1DataAvailabilityMode) + *p = x + return p +} + +func (x L1DataAvailabilityMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (L1DataAvailabilityMode) Descriptor() protoreflect.EnumDescriptor { + return file_p2p_proto_common_proto_enumTypes[0].Descriptor() +} + +func (L1DataAvailabilityMode) Type() protoreflect.EnumType { + return &file_p2p_proto_common_proto_enumTypes[0] +} + +func (x L1DataAvailabilityMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use L1DataAvailabilityMode.Descriptor instead. +func (L1DataAvailabilityMode) EnumDescriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{0} +} + +type VolitionDomain int32 + +const ( + VolitionDomain_L1 VolitionDomain = 0 + VolitionDomain_L2 VolitionDomain = 1 +) + +// Enum value maps for VolitionDomain. +var ( + VolitionDomain_name = map[int32]string{ + 0: "L1", + 1: "L2", + } + VolitionDomain_value = map[string]int32{ + "L1": 0, + "L2": 1, + } +) + +func (x VolitionDomain) Enum() *VolitionDomain { + p := new(VolitionDomain) + *p = x + return p +} + +func (x VolitionDomain) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (VolitionDomain) Descriptor() protoreflect.EnumDescriptor { + return file_p2p_proto_common_proto_enumTypes[1].Descriptor() +} + +func (VolitionDomain) Type() protoreflect.EnumType { + return &file_p2p_proto_common_proto_enumTypes[1] +} + +func (x VolitionDomain) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use VolitionDomain.Descriptor instead. +func (VolitionDomain) EnumDescriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{1} +} + +type Iteration_Direction int32 + +const ( + Iteration_Forward Iteration_Direction = 0 + Iteration_Backward Iteration_Direction = 1 +) + +// Enum value maps for Iteration_Direction. +var ( + Iteration_Direction_name = map[int32]string{ + 0: "Forward", + 1: "Backward", + } + Iteration_Direction_value = map[string]int32{ + "Forward": 0, + "Backward": 1, + } +) + +func (x Iteration_Direction) Enum() *Iteration_Direction { + p := new(Iteration_Direction) + *p = x + return p +} + +func (x Iteration_Direction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Iteration_Direction) Descriptor() protoreflect.EnumDescriptor { + return file_p2p_proto_common_proto_enumTypes[2].Descriptor() +} + +func (Iteration_Direction) Type() protoreflect.EnumType { + return &file_p2p_proto_common_proto_enumTypes[2] +} + +func (x Iteration_Direction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Iteration_Direction.Descriptor instead. +func (Iteration_Direction) EnumDescriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{10, 0} +} + +type Felt252 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Elements []byte `protobuf:"bytes,1,opt,name=elements,proto3" json:"elements,omitempty"` +} + +func (x *Felt252) Reset() { + *x = Felt252{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Felt252) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Felt252) ProtoMessage() {} + +func (x *Felt252) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_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 Felt252.ProtoReflect.Descriptor instead. +func (*Felt252) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{0} +} + +func (x *Felt252) GetElements() []byte { + if x != nil { + return x.Elements + } + return nil +} + +type Hash struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Elements []byte `protobuf:"bytes,1,opt,name=elements,proto3" json:"elements,omitempty"` +} + +func (x *Hash) Reset() { + *x = Hash{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Hash) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Hash) ProtoMessage() {} + +func (x *Hash) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[1] + 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 Hash.ProtoReflect.Descriptor instead. +func (*Hash) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{1} +} + +func (x *Hash) GetElements() []byte { + if x != nil { + return x.Elements + } + return nil +} + +type Hashes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Items []*Hash `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"` +} + +func (x *Hashes) Reset() { + *x = Hashes{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Hashes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Hashes) ProtoMessage() {} + +func (x *Hashes) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[2] + 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 Hashes.ProtoReflect.Descriptor instead. +func (*Hashes) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{2} +} + +func (x *Hashes) GetItems() []*Hash { + if x != nil { + return x.Items + } + return nil +} + +type Address struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Elements []byte `protobuf:"bytes,1,opt,name=elements,proto3" json:"elements,omitempty"` +} + +func (x *Address) Reset() { + *x = Address{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Address) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Address) ProtoMessage() {} + +func (x *Address) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[3] + 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 Address.ProtoReflect.Descriptor instead. +func (*Address) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{3} +} + +func (x *Address) GetElements() []byte { + if x != nil { + return x.Elements + } + return nil +} + +type PeerID struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PeerID) Reset() { + *x = PeerID{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PeerID) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PeerID) ProtoMessage() {} + +func (x *PeerID) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[4] + 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 PeerID.ProtoReflect.Descriptor instead. +func (*PeerID) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{4} +} + +func (x *PeerID) GetId() []byte { + if x != nil { + return x.Id + } + return nil +} + +type Uint128 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Low uint64 `protobuf:"varint,1,opt,name=low,proto3" json:"low,omitempty"` + High uint64 `protobuf:"varint,2,opt,name=high,proto3" json:"high,omitempty"` +} + +func (x *Uint128) Reset() { + *x = Uint128{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Uint128) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Uint128) ProtoMessage() {} + +func (x *Uint128) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[5] + 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 Uint128.ProtoReflect.Descriptor instead. +func (*Uint128) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{5} +} + +func (x *Uint128) GetLow() uint64 { + if x != nil { + return x.Low + } + return 0 +} + +func (x *Uint128) GetHigh() uint64 { + if x != nil { + return x.High + } + return 0 +} + +type ConsensusSignature struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + R *Felt252 `protobuf:"bytes,1,opt,name=r,proto3" json:"r,omitempty"` + S *Felt252 `protobuf:"bytes,2,opt,name=s,proto3" json:"s,omitempty"` +} + +func (x *ConsensusSignature) Reset() { + *x = ConsensusSignature{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConsensusSignature) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConsensusSignature) ProtoMessage() {} + +func (x *ConsensusSignature) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[6] + 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 ConsensusSignature.ProtoReflect.Descriptor instead. +func (*ConsensusSignature) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{6} +} + +func (x *ConsensusSignature) GetR() *Felt252 { + if x != nil { + return x.R + } + return nil +} + +func (x *ConsensusSignature) GetS() *Felt252 { + if x != nil { + return x.S + } + return nil +} + +type Patricia struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NLeaves uint64 `protobuf:"varint,1,opt,name=n_leaves,json=nLeaves,proto3" json:"n_leaves,omitempty"` // needed to know the height, so as to how many nodes to expect in a proof. + // and also when receiving all leaves, how many to expect + Root *Hash `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` +} + +func (x *Patricia) Reset() { + *x = Patricia{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Patricia) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Patricia) ProtoMessage() {} + +func (x *Patricia) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[7] + 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 Patricia.ProtoReflect.Descriptor instead. +func (*Patricia) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{7} +} + +func (x *Patricia) GetNLeaves() uint64 { + if x != nil { + return x.NLeaves + } + return 0 +} + +func (x *Patricia) GetRoot() *Hash { + if x != nil { + return x.Root + } + return nil +} + +type StateDiffCommitment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StateDiffLength uint64 `protobuf:"varint,1,opt,name=state_diff_length,json=stateDiffLength,proto3" json:"state_diff_length,omitempty"` + Root *Hash `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` +} + +func (x *StateDiffCommitment) Reset() { + *x = StateDiffCommitment{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateDiffCommitment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateDiffCommitment) ProtoMessage() {} + +func (x *StateDiffCommitment) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[8] + 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 StateDiffCommitment.ProtoReflect.Descriptor instead. +func (*StateDiffCommitment) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{8} +} + +func (x *StateDiffCommitment) GetStateDiffLength() uint64 { + if x != nil { + return x.StateDiffLength + } + return 0 +} + +func (x *StateDiffCommitment) GetRoot() *Hash { + if x != nil { + return x.Root + } + return nil +} + +type BlockID struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Number uint64 `protobuf:"varint,1,opt,name=number,proto3" json:"number,omitempty"` + Header *Hash `protobuf:"bytes,2,opt,name=header,proto3" json:"header,omitempty"` +} + +func (x *BlockID) Reset() { + *x = BlockID{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockID) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockID) ProtoMessage() {} + +func (x *BlockID) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[9] + 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 BlockID.ProtoReflect.Descriptor instead. +func (*BlockID) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{9} +} + +func (x *BlockID) GetNumber() uint64 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *BlockID) GetHeader() *Hash { + if x != nil { + return x.Header + } + return nil +} + +type Iteration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Start: + // + // *Iteration_BlockNumber + // *Iteration_Header + Start isIteration_Start `protobuf_oneof:"start"` + Direction Iteration_Direction `protobuf:"varint,3,opt,name=direction,proto3,enum=Iteration_Direction" json:"direction,omitempty"` + Limit uint64 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` + Step uint64 `protobuf:"varint,5,opt,name=step,proto3" json:"step,omitempty"` // to allow interleaving from several nodes +} + +func (x *Iteration) Reset() { + *x = Iteration{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Iteration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Iteration) ProtoMessage() {} + +func (x *Iteration) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[10] + 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 Iteration.ProtoReflect.Descriptor instead. +func (*Iteration) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{10} +} + +func (m *Iteration) GetStart() isIteration_Start { + if m != nil { + return m.Start + } + return nil +} + +func (x *Iteration) GetBlockNumber() uint64 { + if x, ok := x.GetStart().(*Iteration_BlockNumber); ok { + return x.BlockNumber + } + return 0 +} + +func (x *Iteration) GetHeader() *Hash { + if x, ok := x.GetStart().(*Iteration_Header); ok { + return x.Header + } + return nil +} + +func (x *Iteration) GetDirection() Iteration_Direction { + if x != nil { + return x.Direction + } + return Iteration_Forward +} + +func (x *Iteration) GetLimit() uint64 { + if x != nil { + return x.Limit + } + return 0 +} + +func (x *Iteration) GetStep() uint64 { + if x != nil { + return x.Step + } + return 0 +} + +type isIteration_Start interface { + isIteration_Start() +} + +type Iteration_BlockNumber struct { + BlockNumber uint64 `protobuf:"varint,1,opt,name=block_number,json=blockNumber,proto3,oneof"` +} + +type Iteration_Header struct { + Header *Hash `protobuf:"bytes,2,opt,name=header,proto3,oneof"` +} + +func (*Iteration_BlockNumber) isIteration_Start() {} + +func (*Iteration_Header) isIteration_Start() {} + +// mark the end of a stream of messages +// TBD: may not be required if we open a stream per request. +type Fin struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Fin) Reset() { + *x = Fin{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_common_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Fin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Fin) ProtoMessage() {} + +func (x *Fin) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_common_proto_msgTypes[11] + 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 Fin.ProtoReflect.Descriptor instead. +func (*Fin) Descriptor() ([]byte, []int) { + return file_p2p_proto_common_proto_rawDescGZIP(), []int{11} +} + +var File_p2p_proto_common_proto protoreflect.FileDescriptor + +var file_p2p_proto_common_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x25, 0x0a, 0x07, 0x46, 0x65, 0x6c, 0x74, + 0x32, 0x35, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, + 0x22, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x22, 0x25, 0x0a, 0x06, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1b, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x25, 0x0a, 0x07, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x22, 0x18, 0x0a, 0x06, 0x50, 0x65, 0x65, 0x72, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x07, 0x55, + 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x22, 0x44, 0x0a, 0x12, + 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x12, 0x16, 0x0a, 0x01, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x01, 0x72, 0x12, 0x16, 0x0a, 0x01, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, + 0x01, 0x73, 0x22, 0x40, 0x0a, 0x08, 0x50, 0x61, 0x74, 0x72, 0x69, 0x63, 0x69, 0x61, 0x12, 0x19, + 0x0a, 0x08, 0x6e, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x6e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x04, 0x72, 0x6f, 0x6f, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, + 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x5c, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x66, + 0x66, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x66, + 0x66, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x72, 0x6f, + 0x6f, 0x74, 0x22, 0x40, 0x0a, 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x16, 0x0a, + 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x22, 0xe0, 0x01, 0x0a, 0x09, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x48, 0x00, + 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x49, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x22, 0x26, 0x0a, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x10, 0x00, + 0x12, 0x0c, 0x0a, 0x08, 0x42, 0x61, 0x63, 0x6b, 0x77, 0x61, 0x72, 0x64, 0x10, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x05, 0x0a, 0x03, 0x46, 0x69, 0x6e, 0x2a, 0x30, + 0x0a, 0x16, 0x4c, 0x31, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x6c, 0x6f, 0x62, 0x10, 0x01, + 0x2a, 0x20, 0x0a, 0x0e, 0x56, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x31, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x32, + 0x10, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, + 0x75, 0x6e, 0x6f, 0x2f, 0x70, 0x32, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, + 0x2f, 0x73, 0x70, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_common_proto_rawDescOnce sync.Once + file_p2p_proto_common_proto_rawDescData = file_p2p_proto_common_proto_rawDesc +) + +func file_p2p_proto_common_proto_rawDescGZIP() []byte { + file_p2p_proto_common_proto_rawDescOnce.Do(func() { + file_p2p_proto_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_common_proto_rawDescData) + }) + return file_p2p_proto_common_proto_rawDescData +} + +var file_p2p_proto_common_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_p2p_proto_common_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_p2p_proto_common_proto_goTypes = []any{ + (L1DataAvailabilityMode)(0), // 0: L1DataAvailabilityMode + (VolitionDomain)(0), // 1: VolitionDomain + (Iteration_Direction)(0), // 2: Iteration.Direction + (*Felt252)(nil), // 3: Felt252 + (*Hash)(nil), // 4: Hash + (*Hashes)(nil), // 5: Hashes + (*Address)(nil), // 6: Address + (*PeerID)(nil), // 7: PeerID + (*Uint128)(nil), // 8: Uint128 + (*ConsensusSignature)(nil), // 9: ConsensusSignature + (*Patricia)(nil), // 10: Patricia + (*StateDiffCommitment)(nil), // 11: StateDiffCommitment + (*BlockID)(nil), // 12: BlockID + (*Iteration)(nil), // 13: Iteration + (*Fin)(nil), // 14: Fin +} +var file_p2p_proto_common_proto_depIdxs = []int32{ + 4, // 0: Hashes.items:type_name -> Hash + 3, // 1: ConsensusSignature.r:type_name -> Felt252 + 3, // 2: ConsensusSignature.s:type_name -> Felt252 + 4, // 3: Patricia.root:type_name -> Hash + 4, // 4: StateDiffCommitment.root:type_name -> Hash + 4, // 5: BlockID.header:type_name -> Hash + 4, // 6: Iteration.header:type_name -> Hash + 2, // 7: Iteration.direction:type_name -> Iteration.Direction + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_p2p_proto_common_proto_init() } +func file_p2p_proto_common_proto_init() { + if File_p2p_proto_common_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_p2p_proto_common_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Felt252); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Hash); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Hashes); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Address); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*PeerID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*Uint128); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*ConsensusSignature); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*Patricia); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*StateDiffCommitment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*BlockID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*Iteration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_common_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*Fin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_common_proto_msgTypes[10].OneofWrappers = []any{ + (*Iteration_BlockNumber)(nil), + (*Iteration_Header)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_common_proto_rawDesc, + NumEnums: 3, + NumMessages: 12, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_common_proto_goTypes, + DependencyIndexes: file_p2p_proto_common_proto_depIdxs, + EnumInfos: file_p2p_proto_common_proto_enumTypes, + MessageInfos: file_p2p_proto_common_proto_msgTypes, + }.Build() + File_p2p_proto_common_proto = out.File + file_p2p_proto_common_proto_rawDesc = nil + file_p2p_proto_common_proto_goTypes = nil + file_p2p_proto_common_proto_depIdxs = nil +} diff --git a/protocol/p2p/starknet/spec/event.pb.go b/protocol/p2p/starknet/spec/event.pb.go new file mode 100644 index 00000000..8543465c --- /dev/null +++ b/protocol/p2p/starknet/spec/event.pb.go @@ -0,0 +1,358 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/event.proto + +package spec + +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) +) + +type Event struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TransactionHash *Hash `protobuf:"bytes,1,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` + FromAddress *Felt252 `protobuf:"bytes,3,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` // looks like mistake? + Keys []*Felt252 `protobuf:"bytes,4,rep,name=keys,proto3" json:"keys,omitempty"` + Data []*Felt252 `protobuf:"bytes,5,rep,name=data,proto3" json:"data,omitempty"` +} + +func (x *Event) Reset() { + *x = Event{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Event) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Event) ProtoMessage() {} + +func (x *Event) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_event_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 Event.ProtoReflect.Descriptor instead. +func (*Event) Descriptor() ([]byte, []int) { + return file_p2p_proto_event_proto_rawDescGZIP(), []int{0} +} + +func (x *Event) GetTransactionHash() *Hash { + if x != nil { + return x.TransactionHash + } + return nil +} + +func (x *Event) GetFromAddress() *Felt252 { + if x != nil { + return x.FromAddress + } + return nil +} + +func (x *Event) GetKeys() []*Felt252 { + if x != nil { + return x.Keys + } + return nil +} + +func (x *Event) GetData() []*Felt252 { + if x != nil { + return x.Data + } + return nil +} + +type EventsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Iteration *Iteration `protobuf:"bytes,1,opt,name=iteration,proto3" json:"iteration,omitempty"` +} + +func (x *EventsRequest) Reset() { + *x = EventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_event_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventsRequest) ProtoMessage() {} + +func (x *EventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_event_proto_msgTypes[1] + 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 EventsRequest.ProtoReflect.Descriptor instead. +func (*EventsRequest) Descriptor() ([]byte, []int) { + return file_p2p_proto_event_proto_rawDescGZIP(), []int{1} +} + +func (x *EventsRequest) GetIteration() *Iteration { + if x != nil { + return x.Iteration + } + return nil +} + +// Responses are sent ordered by the order given in the request. +type EventsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to EventMessage: + // + // *EventsResponse_Event + // *EventsResponse_Fin + EventMessage isEventsResponse_EventMessage `protobuf_oneof:"event_message"` +} + +func (x *EventsResponse) Reset() { + *x = EventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_event_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EventsResponse) ProtoMessage() {} + +func (x *EventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_event_proto_msgTypes[2] + 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 EventsResponse.ProtoReflect.Descriptor instead. +func (*EventsResponse) Descriptor() ([]byte, []int) { + return file_p2p_proto_event_proto_rawDescGZIP(), []int{2} +} + +func (m *EventsResponse) GetEventMessage() isEventsResponse_EventMessage { + if m != nil { + return m.EventMessage + } + return nil +} + +func (x *EventsResponse) GetEvent() *Event { + if x, ok := x.GetEventMessage().(*EventsResponse_Event); ok { + return x.Event + } + return nil +} + +func (x *EventsResponse) GetFin() *Fin { + if x, ok := x.GetEventMessage().(*EventsResponse_Fin); ok { + return x.Fin + } + return nil +} + +type isEventsResponse_EventMessage interface { + isEventsResponse_EventMessage() +} + +type EventsResponse_Event struct { + Event *Event `protobuf:"bytes,1,opt,name=event,proto3,oneof"` +} + +type EventsResponse_Fin struct { + Fin *Fin `protobuf:"bytes,2,opt,name=fin,proto3,oneof"` // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its events. +} + +func (*EventsResponse_Event) isEventsResponse_EventMessage() {} + +func (*EventsResponse_Fin) isEventsResponse_EventMessage() {} + +var File_p2p_proto_event_proto protoreflect.FileDescriptor + +var file_p2p_proto_event_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xa2, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x10, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2b, 0x0a, 0x0c, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x0b, 0x66, 0x72, 0x6f, + 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, + 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x1c, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x39, 0x0a, 0x0d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x5b, 0x0a, 0x0e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x06, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x03, 0x66, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, + 0x2e, 0x46, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x66, 0x69, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x31, 0x5a, 0x2f, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x68, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, 0x75, 0x6e, 0x6f, 0x2f, 0x70, 0x32, + 0x70, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_event_proto_rawDescOnce sync.Once + file_p2p_proto_event_proto_rawDescData = file_p2p_proto_event_proto_rawDesc +) + +func file_p2p_proto_event_proto_rawDescGZIP() []byte { + file_p2p_proto_event_proto_rawDescOnce.Do(func() { + file_p2p_proto_event_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_event_proto_rawDescData) + }) + return file_p2p_proto_event_proto_rawDescData +} + +var file_p2p_proto_event_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_p2p_proto_event_proto_goTypes = []any{ + (*Event)(nil), // 0: Event + (*EventsRequest)(nil), // 1: EventsRequest + (*EventsResponse)(nil), // 2: EventsResponse + (*Hash)(nil), // 3: Hash + (*Felt252)(nil), // 4: Felt252 + (*Iteration)(nil), // 5: Iteration + (*Fin)(nil), // 6: Fin +} +var file_p2p_proto_event_proto_depIdxs = []int32{ + 3, // 0: Event.transaction_hash:type_name -> Hash + 4, // 1: Event.from_address:type_name -> Felt252 + 4, // 2: Event.keys:type_name -> Felt252 + 4, // 3: Event.data:type_name -> Felt252 + 5, // 4: EventsRequest.iteration:type_name -> Iteration + 0, // 5: EventsResponse.event:type_name -> Event + 6, // 6: EventsResponse.fin:type_name -> Fin + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_p2p_proto_event_proto_init() } +func file_p2p_proto_event_proto_init() { + if File_p2p_proto_event_proto != nil { + return + } + file_p2p_proto_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_p2p_proto_event_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*Event); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_event_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*EventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_event_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*EventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_event_proto_msgTypes[2].OneofWrappers = []any{ + (*EventsResponse_Event)(nil), + (*EventsResponse_Fin)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_event_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_event_proto_goTypes, + DependencyIndexes: file_p2p_proto_event_proto_depIdxs, + MessageInfos: file_p2p_proto_event_proto_msgTypes, + }.Build() + File_p2p_proto_event_proto = out.File + file_p2p_proto_event_proto_rawDesc = nil + file_p2p_proto_event_proto_goTypes = nil + file_p2p_proto_event_proto_depIdxs = nil +} diff --git a/protocol/p2p/starknet/spec/header.pb.go b/protocol/p2p/starknet/spec/header.pb.go new file mode 100644 index 00000000..5d94c621 --- /dev/null +++ b/protocol/p2p/starknet/spec/header.pb.go @@ -0,0 +1,696 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/header.proto + +package spec + +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) +) + +// Note: commitments may change to be for the previous blocks like comet/tendermint +// hash of block header sent to L1 +type SignedBlockHeader struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BlockHash *Hash `protobuf:"bytes,1,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` // For the structure of the block hash, see https://docs.starknet.io/documentation/architecture_and_concepts/Network_Architecture/header/#block_hash + ParentHash *Hash `protobuf:"bytes,2,opt,name=parent_hash,json=parentHash,proto3" json:"parent_hash,omitempty"` + Number uint64 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"` // This can be deduced from context. We can consider removing this field. + Time uint64 `protobuf:"varint,4,opt,name=time,proto3" json:"time,omitempty"` // Encoded in Unix time. + SequencerAddress *Address `protobuf:"bytes,5,opt,name=sequencer_address,json=sequencerAddress,proto3" json:"sequencer_address,omitempty"` + StateRoot *Hash `protobuf:"bytes,6,opt,name=state_root,json=stateRoot,proto3" json:"state_root,omitempty"` // Patricia root of contract and class patricia tries. Each of those tries are of height 251. Same as in L1. Later more trees will be included + StateDiffCommitment *StateDiffCommitment `protobuf:"bytes,7,opt,name=state_diff_commitment,json=stateDiffCommitment,proto3" json:"state_diff_commitment,omitempty"` // The state diff commitment returned by the Starknet Feeder Gateway + // For more info, see https://community.starknet.io/t/introducing-p2p-authentication-and-mismatch-resolution-in-v0-12-2/97993 + // The leaves contain a hash of the transaction hash and transaction signature. + Transactions *Patricia `protobuf:"bytes,8,opt,name=transactions,proto3" json:"transactions,omitempty"` // By order of execution. TBD: required? the client can execute (powerful machine) and match state diff + Events *Patricia `protobuf:"bytes,9,opt,name=events,proto3" json:"events,omitempty"` // By order of issuance. TBD: in receipts? + Receipts *Hash `protobuf:"bytes,10,opt,name=receipts,proto3" json:"receipts,omitempty"` // By order of issuance. This is a patricia root. No need for length because it's the same length as transactions. + ProtocolVersion string `protobuf:"bytes,11,opt,name=protocol_version,json=protocolVersion,proto3" json:"protocol_version,omitempty"` // Starknet version + GasPriceFri *Uint128 `protobuf:"bytes,12,opt,name=gas_price_fri,json=gasPriceFri,proto3" json:"gas_price_fri,omitempty"` + GasPriceWei *Uint128 `protobuf:"bytes,13,opt,name=gas_price_wei,json=gasPriceWei,proto3" json:"gas_price_wei,omitempty"` + DataGasPriceFri *Uint128 `protobuf:"bytes,14,opt,name=data_gas_price_fri,json=dataGasPriceFri,proto3" json:"data_gas_price_fri,omitempty"` + DataGasPriceWei *Uint128 `protobuf:"bytes,15,opt,name=data_gas_price_wei,json=dataGasPriceWei,proto3" json:"data_gas_price_wei,omitempty"` + L1DataAvailabilityMode L1DataAvailabilityMode `protobuf:"varint,16,opt,name=l1_data_availability_mode,json=l1DataAvailabilityMode,proto3,enum=L1DataAvailabilityMode" json:"l1_data_availability_mode,omitempty"` + // for now, we assume a small consensus, so this fits in 1M. Else, these will be repeated and extracted from this message. + Signatures []*ConsensusSignature `protobuf:"bytes,17,rep,name=signatures,proto3" json:"signatures,omitempty"` // can be more explicit here about the signature structure as this is not part of account abstraction +} + +func (x *SignedBlockHeader) Reset() { + *x = SignedBlockHeader{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_header_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignedBlockHeader) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignedBlockHeader) ProtoMessage() {} + +func (x *SignedBlockHeader) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_header_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 SignedBlockHeader.ProtoReflect.Descriptor instead. +func (*SignedBlockHeader) Descriptor() ([]byte, []int) { + return file_p2p_proto_header_proto_rawDescGZIP(), []int{0} +} + +func (x *SignedBlockHeader) GetBlockHash() *Hash { + if x != nil { + return x.BlockHash + } + return nil +} + +func (x *SignedBlockHeader) GetParentHash() *Hash { + if x != nil { + return x.ParentHash + } + return nil +} + +func (x *SignedBlockHeader) GetNumber() uint64 { + if x != nil { + return x.Number + } + return 0 +} + +func (x *SignedBlockHeader) GetTime() uint64 { + if x != nil { + return x.Time + } + return 0 +} + +func (x *SignedBlockHeader) GetSequencerAddress() *Address { + if x != nil { + return x.SequencerAddress + } + return nil +} + +func (x *SignedBlockHeader) GetStateRoot() *Hash { + if x != nil { + return x.StateRoot + } + return nil +} + +func (x *SignedBlockHeader) GetStateDiffCommitment() *StateDiffCommitment { + if x != nil { + return x.StateDiffCommitment + } + return nil +} + +func (x *SignedBlockHeader) GetTransactions() *Patricia { + if x != nil { + return x.Transactions + } + return nil +} + +func (x *SignedBlockHeader) GetEvents() *Patricia { + if x != nil { + return x.Events + } + return nil +} + +func (x *SignedBlockHeader) GetReceipts() *Hash { + if x != nil { + return x.Receipts + } + return nil +} + +func (x *SignedBlockHeader) GetProtocolVersion() string { + if x != nil { + return x.ProtocolVersion + } + return "" +} + +func (x *SignedBlockHeader) GetGasPriceFri() *Uint128 { + if x != nil { + return x.GasPriceFri + } + return nil +} + +func (x *SignedBlockHeader) GetGasPriceWei() *Uint128 { + if x != nil { + return x.GasPriceWei + } + return nil +} + +func (x *SignedBlockHeader) GetDataGasPriceFri() *Uint128 { + if x != nil { + return x.DataGasPriceFri + } + return nil +} + +func (x *SignedBlockHeader) GetDataGasPriceWei() *Uint128 { + if x != nil { + return x.DataGasPriceWei + } + return nil +} + +func (x *SignedBlockHeader) GetL1DataAvailabilityMode() L1DataAvailabilityMode { + if x != nil { + return x.L1DataAvailabilityMode + } + return L1DataAvailabilityMode_Calldata +} + +func (x *SignedBlockHeader) GetSignatures() []*ConsensusSignature { + if x != nil { + return x.Signatures + } + return nil +} + +// sent to all peers (except the ones this was received from, if any). +// for a fraction of peers, also send the GetBlockHeaders response (as if they asked for it for this block) +type NewBlock struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to MaybeFull: + // + // *NewBlock_Id + // *NewBlock_Header + MaybeFull isNewBlock_MaybeFull `protobuf_oneof:"maybe_full"` +} + +func (x *NewBlock) Reset() { + *x = NewBlock{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_header_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NewBlock) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NewBlock) ProtoMessage() {} + +func (x *NewBlock) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_header_proto_msgTypes[1] + 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 NewBlock.ProtoReflect.Descriptor instead. +func (*NewBlock) Descriptor() ([]byte, []int) { + return file_p2p_proto_header_proto_rawDescGZIP(), []int{1} +} + +func (m *NewBlock) GetMaybeFull() isNewBlock_MaybeFull { + if m != nil { + return m.MaybeFull + } + return nil +} + +func (x *NewBlock) GetId() *BlockID { + if x, ok := x.GetMaybeFull().(*NewBlock_Id); ok { + return x.Id + } + return nil +} + +func (x *NewBlock) GetHeader() *BlockHeadersResponse { + if x, ok := x.GetMaybeFull().(*NewBlock_Header); ok { + return x.Header + } + return nil +} + +type isNewBlock_MaybeFull interface { + isNewBlock_MaybeFull() +} + +type NewBlock_Id struct { + Id *BlockID `protobuf:"bytes,1,opt,name=id,proto3,oneof"` +} + +type NewBlock_Header struct { + Header *BlockHeadersResponse `protobuf:"bytes,2,opt,name=header,proto3,oneof"` +} + +func (*NewBlock_Id) isNewBlock_MaybeFull() {} + +func (*NewBlock_Header) isNewBlock_MaybeFull() {} + +type BlockHeadersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Iteration *Iteration `protobuf:"bytes,1,opt,name=iteration,proto3" json:"iteration,omitempty"` +} + +func (x *BlockHeadersRequest) Reset() { + *x = BlockHeadersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_header_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockHeadersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockHeadersRequest) ProtoMessage() {} + +func (x *BlockHeadersRequest) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_header_proto_msgTypes[2] + 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 BlockHeadersRequest.ProtoReflect.Descriptor instead. +func (*BlockHeadersRequest) Descriptor() ([]byte, []int) { + return file_p2p_proto_header_proto_rawDescGZIP(), []int{2} +} + +func (x *BlockHeadersRequest) GetIteration() *Iteration { + if x != nil { + return x.Iteration + } + return nil +} + +// Responses are sent ordered by the order given in the request. +type BlockHeadersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to HeaderMessage: + // + // *BlockHeadersResponse_Header + // *BlockHeadersResponse_Fin + HeaderMessage isBlockHeadersResponse_HeaderMessage `protobuf_oneof:"header_message"` +} + +func (x *BlockHeadersResponse) Reset() { + *x = BlockHeadersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_header_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockHeadersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockHeadersResponse) ProtoMessage() {} + +func (x *BlockHeadersResponse) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_header_proto_msgTypes[3] + 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 BlockHeadersResponse.ProtoReflect.Descriptor instead. +func (*BlockHeadersResponse) Descriptor() ([]byte, []int) { + return file_p2p_proto_header_proto_rawDescGZIP(), []int{3} +} + +func (m *BlockHeadersResponse) GetHeaderMessage() isBlockHeadersResponse_HeaderMessage { + if m != nil { + return m.HeaderMessage + } + return nil +} + +func (x *BlockHeadersResponse) GetHeader() *SignedBlockHeader { + if x, ok := x.GetHeaderMessage().(*BlockHeadersResponse_Header); ok { + return x.Header + } + return nil +} + +func (x *BlockHeadersResponse) GetFin() *Fin { + if x, ok := x.GetHeaderMessage().(*BlockHeadersResponse_Fin); ok { + return x.Fin + } + return nil +} + +type isBlockHeadersResponse_HeaderMessage interface { + isBlockHeadersResponse_HeaderMessage() +} + +type BlockHeadersResponse_Header struct { + Header *SignedBlockHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"` +} + +type BlockHeadersResponse_Fin struct { + Fin *Fin `protobuf:"bytes,2,opt,name=fin,proto3,oneof"` // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its header. +} + +func (*BlockHeadersResponse_Header) isBlockHeadersResponse_HeaderMessage() {} + +func (*BlockHeadersResponse_Fin) isBlockHeadersResponse_HeaderMessage() {} + +type BlockProof struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Proof [][]byte `protobuf:"bytes,1,rep,name=proof,proto3" json:"proof,omitempty"` +} + +func (x *BlockProof) Reset() { + *x = BlockProof{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_header_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockProof) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockProof) ProtoMessage() {} + +func (x *BlockProof) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_header_proto_msgTypes[4] + 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 BlockProof.ProtoReflect.Descriptor instead. +func (*BlockProof) Descriptor() ([]byte, []int) { + return file_p2p_proto_header_proto_rawDescGZIP(), []int{4} +} + +func (x *BlockProof) GetProof() [][]byte { + if x != nil { + return x.Proof + } + return nil +} + +var File_p2p_proto_header_proto protoreflect.FileDescriptor + +var file_p2p_proto_header_proto_rawDesc = []byte{ + 0x0a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xa7, 0x06, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x11, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x10, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x48, 0x0a, + 0x15, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x66, 0x66, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x13, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x66, 0x66, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, + 0x50, 0x61, 0x74, 0x72, 0x69, 0x63, 0x69, 0x61, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x61, 0x74, 0x72, 0x69, 0x63, 0x69, + 0x61, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x08, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x70, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0d, 0x67, 0x61, 0x73, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x69, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x46, 0x72, 0x69, 0x12, 0x2c, 0x0a, 0x0d, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52, 0x0b, 0x67, 0x61, 0x73, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x57, 0x65, 0x69, 0x12, 0x35, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x67, 0x61, 0x73, 0x5f, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x66, 0x72, 0x69, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x47, + 0x61, 0x73, 0x50, 0x72, 0x69, 0x63, 0x65, 0x46, 0x72, 0x69, 0x12, 0x35, 0x0a, 0x12, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x67, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x77, 0x65, 0x69, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x31, 0x32, 0x38, + 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x47, 0x61, 0x73, 0x50, 0x72, 0x69, 0x63, 0x65, 0x57, 0x65, + 0x69, 0x12, 0x52, 0x0a, 0x19, 0x6c, 0x31, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x4c, 0x31, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x16, 0x6c, + 0x31, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x6f, 0x6e, 0x73, + 0x65, 0x6e, 0x73, 0x75, 0x73, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x08, 0x4e, 0x65, + 0x77, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x48, 0x00, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x61, 0x79, 0x62, 0x65, 0x5f, 0x66, 0x75, 0x6c, + 0x6c, 0x22, 0x3f, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x49, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x14, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, + 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x03, 0x66, 0x69, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x46, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x66, + 0x69, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x72, 0x6f, + 0x6f, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0c, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, 0x75, 0x6e, 0x6f, 0x2f, 0x70, 0x32, 0x70, 0x2f, 0x73, 0x74, + 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_header_proto_rawDescOnce sync.Once + file_p2p_proto_header_proto_rawDescData = file_p2p_proto_header_proto_rawDesc +) + +func file_p2p_proto_header_proto_rawDescGZIP() []byte { + file_p2p_proto_header_proto_rawDescOnce.Do(func() { + file_p2p_proto_header_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_header_proto_rawDescData) + }) + return file_p2p_proto_header_proto_rawDescData +} + +var file_p2p_proto_header_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_p2p_proto_header_proto_goTypes = []any{ + (*SignedBlockHeader)(nil), // 0: SignedBlockHeader + (*NewBlock)(nil), // 1: NewBlock + (*BlockHeadersRequest)(nil), // 2: BlockHeadersRequest + (*BlockHeadersResponse)(nil), // 3: BlockHeadersResponse + (*BlockProof)(nil), // 4: BlockProof + (*Hash)(nil), // 5: Hash + (*Address)(nil), // 6: Address + (*StateDiffCommitment)(nil), // 7: StateDiffCommitment + (*Patricia)(nil), // 8: Patricia + (*Uint128)(nil), // 9: Uint128 + (L1DataAvailabilityMode)(0), // 10: L1DataAvailabilityMode + (*ConsensusSignature)(nil), // 11: ConsensusSignature + (*BlockID)(nil), // 12: BlockID + (*Iteration)(nil), // 13: Iteration + (*Fin)(nil), // 14: Fin +} +var file_p2p_proto_header_proto_depIdxs = []int32{ + 5, // 0: SignedBlockHeader.block_hash:type_name -> Hash + 5, // 1: SignedBlockHeader.parent_hash:type_name -> Hash + 6, // 2: SignedBlockHeader.sequencer_address:type_name -> Address + 5, // 3: SignedBlockHeader.state_root:type_name -> Hash + 7, // 4: SignedBlockHeader.state_diff_commitment:type_name -> StateDiffCommitment + 8, // 5: SignedBlockHeader.transactions:type_name -> Patricia + 8, // 6: SignedBlockHeader.events:type_name -> Patricia + 5, // 7: SignedBlockHeader.receipts:type_name -> Hash + 9, // 8: SignedBlockHeader.gas_price_fri:type_name -> Uint128 + 9, // 9: SignedBlockHeader.gas_price_wei:type_name -> Uint128 + 9, // 10: SignedBlockHeader.data_gas_price_fri:type_name -> Uint128 + 9, // 11: SignedBlockHeader.data_gas_price_wei:type_name -> Uint128 + 10, // 12: SignedBlockHeader.l1_data_availability_mode:type_name -> L1DataAvailabilityMode + 11, // 13: SignedBlockHeader.signatures:type_name -> ConsensusSignature + 12, // 14: NewBlock.id:type_name -> BlockID + 3, // 15: NewBlock.header:type_name -> BlockHeadersResponse + 13, // 16: BlockHeadersRequest.iteration:type_name -> Iteration + 0, // 17: BlockHeadersResponse.header:type_name -> SignedBlockHeader + 14, // 18: BlockHeadersResponse.fin:type_name -> Fin + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name +} + +func init() { file_p2p_proto_header_proto_init() } +func file_p2p_proto_header_proto_init() { + if File_p2p_proto_header_proto != nil { + return + } + file_p2p_proto_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_p2p_proto_header_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*SignedBlockHeader); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_header_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*NewBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_header_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*BlockHeadersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_header_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*BlockHeadersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_header_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*BlockProof); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_header_proto_msgTypes[1].OneofWrappers = []any{ + (*NewBlock_Id)(nil), + (*NewBlock_Header)(nil), + } + file_p2p_proto_header_proto_msgTypes[3].OneofWrappers = []any{ + (*BlockHeadersResponse_Header)(nil), + (*BlockHeadersResponse_Fin)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_header_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_header_proto_goTypes, + DependencyIndexes: file_p2p_proto_header_proto_depIdxs, + MessageInfos: file_p2p_proto_header_proto_msgTypes, + }.Build() + File_p2p_proto_header_proto = out.File + file_p2p_proto_header_proto_rawDesc = nil + file_p2p_proto_header_proto_goTypes = nil + file_p2p_proto_header_proto_depIdxs = nil +} diff --git a/protocol/p2p/starknet/spec/receipt.pb.go b/protocol/p2p/starknet/spec/receipt.pb.go new file mode 100644 index 00000000..67d993d4 --- /dev/null +++ b/protocol/p2p/starknet/spec/receipt.pb.go @@ -0,0 +1,1207 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/receipt.proto + +package spec + +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) +) + +type PriceUnit int32 + +const ( + PriceUnit_Wei PriceUnit = 0 + PriceUnit_Fri PriceUnit = 1 +) + +// Enum value maps for PriceUnit. +var ( + PriceUnit_name = map[int32]string{ + 0: "Wei", + 1: "Fri", + } + PriceUnit_value = map[string]int32{ + "Wei": 0, + "Fri": 1, + } +) + +func (x PriceUnit) Enum() *PriceUnit { + p := new(PriceUnit) + *p = x + return p +} + +func (x PriceUnit) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PriceUnit) Descriptor() protoreflect.EnumDescriptor { + return file_p2p_proto_receipt_proto_enumTypes[0].Descriptor() +} + +func (PriceUnit) Type() protoreflect.EnumType { + return &file_p2p_proto_receipt_proto_enumTypes[0] +} + +func (x PriceUnit) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PriceUnit.Descriptor instead. +func (PriceUnit) EnumDescriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{0} +} + +type MessageToL1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FromAddress *Felt252 `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` + Payload []*Felt252 `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty"` + ToAddress *EthereumAddress `protobuf:"bytes,4,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` +} + +func (x *MessageToL1) Reset() { + *x = MessageToL1{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MessageToL1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageToL1) ProtoMessage() {} + +func (x *MessageToL1) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_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 MessageToL1.ProtoReflect.Descriptor instead. +func (*MessageToL1) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{0} +} + +func (x *MessageToL1) GetFromAddress() *Felt252 { + if x != nil { + return x.FromAddress + } + return nil +} + +func (x *MessageToL1) GetPayload() []*Felt252 { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MessageToL1) GetToAddress() *EthereumAddress { + if x != nil { + return x.ToAddress + } + return nil +} + +type EthereumAddress struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Elements []byte `protobuf:"bytes,1,opt,name=elements,proto3" json:"elements,omitempty"` +} + +func (x *EthereumAddress) Reset() { + *x = EthereumAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EthereumAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EthereumAddress) ProtoMessage() {} + +func (x *EthereumAddress) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[1] + 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 EthereumAddress.ProtoReflect.Descriptor instead. +func (*EthereumAddress) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{1} +} + +func (x *EthereumAddress) GetElements() []byte { + if x != nil { + return x.Elements + } + return nil +} + +type Receipt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Type: + // + // *Receipt_Invoke_ + // *Receipt_L1Handler_ + // *Receipt_Declare_ + // *Receipt_DeprecatedDeploy + // *Receipt_DeployAccount_ + Type isReceipt_Type `protobuf_oneof:"type"` +} + +func (x *Receipt) Reset() { + *x = Receipt{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt) ProtoMessage() {} + +func (x *Receipt) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[2] + 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 Receipt.ProtoReflect.Descriptor instead. +func (*Receipt) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2} +} + +func (m *Receipt) GetType() isReceipt_Type { + if m != nil { + return m.Type + } + return nil +} + +func (x *Receipt) GetInvoke() *Receipt_Invoke { + if x, ok := x.GetType().(*Receipt_Invoke_); ok { + return x.Invoke + } + return nil +} + +func (x *Receipt) GetL1Handler() *Receipt_L1Handler { + if x, ok := x.GetType().(*Receipt_L1Handler_); ok { + return x.L1Handler + } + return nil +} + +func (x *Receipt) GetDeclare() *Receipt_Declare { + if x, ok := x.GetType().(*Receipt_Declare_); ok { + return x.Declare + } + return nil +} + +func (x *Receipt) GetDeprecatedDeploy() *Receipt_Deploy { + if x, ok := x.GetType().(*Receipt_DeprecatedDeploy); ok { + return x.DeprecatedDeploy + } + return nil +} + +func (x *Receipt) GetDeployAccount() *Receipt_DeployAccount { + if x, ok := x.GetType().(*Receipt_DeployAccount_); ok { + return x.DeployAccount + } + return nil +} + +type isReceipt_Type interface { + isReceipt_Type() +} + +type Receipt_Invoke_ struct { + Invoke *Receipt_Invoke `protobuf:"bytes,1,opt,name=invoke,proto3,oneof"` +} + +type Receipt_L1Handler_ struct { + L1Handler *Receipt_L1Handler `protobuf:"bytes,2,opt,name=l1_handler,json=l1Handler,proto3,oneof"` +} + +type Receipt_Declare_ struct { + Declare *Receipt_Declare `protobuf:"bytes,3,opt,name=declare,proto3,oneof"` +} + +type Receipt_DeprecatedDeploy struct { + DeprecatedDeploy *Receipt_Deploy `protobuf:"bytes,4,opt,name=deprecated_deploy,json=deprecatedDeploy,proto3,oneof"` +} + +type Receipt_DeployAccount_ struct { + DeployAccount *Receipt_DeployAccount `protobuf:"bytes,5,opt,name=deploy_account,json=deployAccount,proto3,oneof"` +} + +func (*Receipt_Invoke_) isReceipt_Type() {} + +func (*Receipt_L1Handler_) isReceipt_Type() {} + +func (*Receipt_Declare_) isReceipt_Type() {} + +func (*Receipt_DeprecatedDeploy) isReceipt_Type() {} + +func (*Receipt_DeployAccount_) isReceipt_Type() {} + +type Receipt_ExecutionResources struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Builtins *Receipt_ExecutionResources_BuiltinCounter `protobuf:"bytes,1,opt,name=builtins,proto3" json:"builtins,omitempty"` + Steps uint32 `protobuf:"varint,2,opt,name=steps,proto3" json:"steps,omitempty"` + MemoryHoles uint32 `protobuf:"varint,3,opt,name=memory_holes,json=memoryHoles,proto3" json:"memory_holes,omitempty"` + L1Gas *Felt252 `protobuf:"bytes,4,opt,name=l1_gas,json=l1Gas,proto3" json:"l1_gas,omitempty"` + L1DataGas *Felt252 `protobuf:"bytes,5,opt,name=l1_data_gas,json=l1DataGas,proto3" json:"l1_data_gas,omitempty"` + TotalL1Gas *Felt252 `protobuf:"bytes,6,opt,name=total_l1_gas,json=totalL1Gas,proto3" json:"total_l1_gas,omitempty"` +} + +func (x *Receipt_ExecutionResources) Reset() { + *x = Receipt_ExecutionResources{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_ExecutionResources) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_ExecutionResources) ProtoMessage() {} + +func (x *Receipt_ExecutionResources) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[3] + 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 Receipt_ExecutionResources.ProtoReflect.Descriptor instead. +func (*Receipt_ExecutionResources) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *Receipt_ExecutionResources) GetBuiltins() *Receipt_ExecutionResources_BuiltinCounter { + if x != nil { + return x.Builtins + } + return nil +} + +func (x *Receipt_ExecutionResources) GetSteps() uint32 { + if x != nil { + return x.Steps + } + return 0 +} + +func (x *Receipt_ExecutionResources) GetMemoryHoles() uint32 { + if x != nil { + return x.MemoryHoles + } + return 0 +} + +func (x *Receipt_ExecutionResources) GetL1Gas() *Felt252 { + if x != nil { + return x.L1Gas + } + return nil +} + +func (x *Receipt_ExecutionResources) GetL1DataGas() *Felt252 { + if x != nil { + return x.L1DataGas + } + return nil +} + +func (x *Receipt_ExecutionResources) GetTotalL1Gas() *Felt252 { + if x != nil { + return x.TotalL1Gas + } + return nil +} + +type Receipt_Common struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ActualFee *Felt252 `protobuf:"bytes,2,opt,name=actual_fee,json=actualFee,proto3" json:"actual_fee,omitempty"` + PriceUnit PriceUnit `protobuf:"varint,3,opt,name=price_unit,json=priceUnit,proto3,enum=PriceUnit" json:"price_unit,omitempty"` + MessagesSent []*MessageToL1 `protobuf:"bytes,4,rep,name=messages_sent,json=messagesSent,proto3" json:"messages_sent,omitempty"` + ExecutionResources *Receipt_ExecutionResources `protobuf:"bytes,5,opt,name=execution_resources,json=executionResources,proto3" json:"execution_resources,omitempty"` + RevertReason *string `protobuf:"bytes,6,opt,name=revert_reason,json=revertReason,proto3,oneof" json:"revert_reason,omitempty"` +} + +func (x *Receipt_Common) Reset() { + *x = Receipt_Common{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_Common) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_Common) ProtoMessage() {} + +func (x *Receipt_Common) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[4] + 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 Receipt_Common.ProtoReflect.Descriptor instead. +func (*Receipt_Common) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *Receipt_Common) GetActualFee() *Felt252 { + if x != nil { + return x.ActualFee + } + return nil +} + +func (x *Receipt_Common) GetPriceUnit() PriceUnit { + if x != nil { + return x.PriceUnit + } + return PriceUnit_Wei +} + +func (x *Receipt_Common) GetMessagesSent() []*MessageToL1 { + if x != nil { + return x.MessagesSent + } + return nil +} + +func (x *Receipt_Common) GetExecutionResources() *Receipt_ExecutionResources { + if x != nil { + return x.ExecutionResources + } + return nil +} + +func (x *Receipt_Common) GetRevertReason() string { + if x != nil && x.RevertReason != nil { + return *x.RevertReason + } + return "" +} + +type Receipt_Invoke struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *Receipt_Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` +} + +func (x *Receipt_Invoke) Reset() { + *x = Receipt_Invoke{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_Invoke) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_Invoke) ProtoMessage() {} + +func (x *Receipt_Invoke) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[5] + 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 Receipt_Invoke.ProtoReflect.Descriptor instead. +func (*Receipt_Invoke) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 2} +} + +func (x *Receipt_Invoke) GetCommon() *Receipt_Common { + if x != nil { + return x.Common + } + return nil +} + +type Receipt_L1Handler struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *Receipt_Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + MsgHash *Hash `protobuf:"bytes,2,opt,name=msg_hash,json=msgHash,proto3" json:"msg_hash,omitempty"` +} + +func (x *Receipt_L1Handler) Reset() { + *x = Receipt_L1Handler{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_L1Handler) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_L1Handler) ProtoMessage() {} + +func (x *Receipt_L1Handler) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[6] + 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 Receipt_L1Handler.ProtoReflect.Descriptor instead. +func (*Receipt_L1Handler) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 3} +} + +func (x *Receipt_L1Handler) GetCommon() *Receipt_Common { + if x != nil { + return x.Common + } + return nil +} + +func (x *Receipt_L1Handler) GetMsgHash() *Hash { + if x != nil { + return x.MsgHash + } + return nil +} + +type Receipt_Declare struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *Receipt_Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` +} + +func (x *Receipt_Declare) Reset() { + *x = Receipt_Declare{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_Declare) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_Declare) ProtoMessage() {} + +func (x *Receipt_Declare) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[7] + 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 Receipt_Declare.ProtoReflect.Descriptor instead. +func (*Receipt_Declare) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 4} +} + +func (x *Receipt_Declare) GetCommon() *Receipt_Common { + if x != nil { + return x.Common + } + return nil +} + +type Receipt_Deploy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *Receipt_Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + ContractAddress *Felt252 `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` +} + +func (x *Receipt_Deploy) Reset() { + *x = Receipt_Deploy{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_Deploy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_Deploy) ProtoMessage() {} + +func (x *Receipt_Deploy) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[8] + 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 Receipt_Deploy.ProtoReflect.Descriptor instead. +func (*Receipt_Deploy) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 5} +} + +func (x *Receipt_Deploy) GetCommon() *Receipt_Common { + if x != nil { + return x.Common + } + return nil +} + +func (x *Receipt_Deploy) GetContractAddress() *Felt252 { + if x != nil { + return x.ContractAddress + } + return nil +} + +type Receipt_DeployAccount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Common *Receipt_Common `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"` + ContractAddress *Felt252 `protobuf:"bytes,2,opt,name=contract_address,json=contractAddress,proto3" json:"contract_address,omitempty"` +} + +func (x *Receipt_DeployAccount) Reset() { + *x = Receipt_DeployAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_DeployAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_DeployAccount) ProtoMessage() {} + +func (x *Receipt_DeployAccount) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[9] + 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 Receipt_DeployAccount.ProtoReflect.Descriptor instead. +func (*Receipt_DeployAccount) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 6} +} + +func (x *Receipt_DeployAccount) GetCommon() *Receipt_Common { + if x != nil { + return x.Common + } + return nil +} + +func (x *Receipt_DeployAccount) GetContractAddress() *Felt252 { + if x != nil { + return x.ContractAddress + } + return nil +} + +type Receipt_ExecutionResources_BuiltinCounter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Bitwise uint32 `protobuf:"varint,1,opt,name=bitwise,proto3" json:"bitwise,omitempty"` + Ecdsa uint32 `protobuf:"varint,2,opt,name=ecdsa,proto3" json:"ecdsa,omitempty"` + EcOp uint32 `protobuf:"varint,3,opt,name=ec_op,json=ecOp,proto3" json:"ec_op,omitempty"` + Pedersen uint32 `protobuf:"varint,4,opt,name=pedersen,proto3" json:"pedersen,omitempty"` + RangeCheck uint32 `protobuf:"varint,5,opt,name=range_check,json=rangeCheck,proto3" json:"range_check,omitempty"` + Poseidon uint32 `protobuf:"varint,6,opt,name=poseidon,proto3" json:"poseidon,omitempty"` + Keccak uint32 `protobuf:"varint,7,opt,name=keccak,proto3" json:"keccak,omitempty"` + Output uint32 `protobuf:"varint,8,opt,name=output,proto3" json:"output,omitempty"` + AddMod uint32 `protobuf:"varint,9,opt,name=add_mod,json=addMod,proto3" json:"add_mod,omitempty"` + MulMod uint32 `protobuf:"varint,10,opt,name=mul_mod,json=mulMod,proto3" json:"mul_mod,omitempty"` + RangeCheck96 uint32 `protobuf:"varint,11,opt,name=range_check96,json=rangeCheck96,proto3" json:"range_check96,omitempty"` +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) Reset() { + *x = Receipt_ExecutionResources_BuiltinCounter{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_receipt_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Receipt_ExecutionResources_BuiltinCounter) ProtoMessage() {} + +func (x *Receipt_ExecutionResources_BuiltinCounter) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_receipt_proto_msgTypes[10] + 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 Receipt_ExecutionResources_BuiltinCounter.ProtoReflect.Descriptor instead. +func (*Receipt_ExecutionResources_BuiltinCounter) Descriptor() ([]byte, []int) { + return file_p2p_proto_receipt_proto_rawDescGZIP(), []int{2, 0, 0} +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetBitwise() uint32 { + if x != nil { + return x.Bitwise + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetEcdsa() uint32 { + if x != nil { + return x.Ecdsa + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetEcOp() uint32 { + if x != nil { + return x.EcOp + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetPedersen() uint32 { + if x != nil { + return x.Pedersen + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetRangeCheck() uint32 { + if x != nil { + return x.RangeCheck + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetPoseidon() uint32 { + if x != nil { + return x.Poseidon + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetKeccak() uint32 { + if x != nil { + return x.Keccak + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetOutput() uint32 { + if x != nil { + return x.Output + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetAddMod() uint32 { + if x != nil { + return x.AddMod + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetMulMod() uint32 { + if x != nil { + return x.MulMod + } + return 0 +} + +func (x *Receipt_ExecutionResources_BuiltinCounter) GetRangeCheck96() uint32 { + if x != nil { + return x.RangeCheck96 + } + return 0 +} + +var File_p2p_proto_receipt_proto protoreflect.FileDescriptor + +var file_p2p_proto_receipt_proto_rawDesc = []byte{ + 0x0a, 0x17, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x22, 0x8f, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x4c, + 0x31, 0x12, 0x2b, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, + 0x32, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x22, + 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, + 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x22, 0x2d, 0x0a, 0x0f, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x22, 0x99, 0x0c, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x29, + 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x48, + 0x00, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x6c, 0x31, 0x5f, + 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x4c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x2c, + 0x0a, 0x07, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, + 0x65, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x12, 0x3e, 0x0a, 0x11, + 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x48, 0x00, 0x52, 0x10, 0x64, 0x65, 0x70, 0x72, + 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x3f, 0x0a, 0x0e, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xc4, 0x04, + 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, + 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x52, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x74, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x65, + 0x70, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x6c, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, + 0x48, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x06, 0x6c, 0x31, 0x5f, 0x67, 0x61, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, + 0x05, 0x6c, 0x31, 0x47, 0x61, 0x73, 0x12, 0x28, 0x0a, 0x0b, 0x6c, 0x31, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x09, 0x6c, 0x31, 0x44, 0x61, 0x74, 0x61, 0x47, 0x61, 0x73, + 0x12, 0x2a, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6c, 0x31, 0x5f, 0x67, 0x61, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, + 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4c, 0x31, 0x47, 0x61, 0x73, 0x1a, 0xb5, 0x02, 0x0a, + 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x18, 0x0a, 0x07, 0x62, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x62, 0x69, 0x74, 0x77, 0x69, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x63, 0x64, + 0x73, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x65, 0x63, 0x64, 0x73, 0x61, 0x12, + 0x13, 0x0a, 0x05, 0x65, 0x63, 0x5f, 0x6f, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, + 0x65, 0x63, 0x4f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x64, 0x65, 0x72, 0x73, 0x65, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x65, 0x64, 0x65, 0x72, 0x73, 0x65, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x65, 0x69, 0x64, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x65, 0x69, 0x64, 0x6f, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x6b, 0x65, 0x63, 0x63, 0x61, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6b, + 0x65, 0x63, 0x63, 0x61, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x17, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x61, 0x64, 0x64, 0x4d, 0x6f, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x75, 0x6c, 0x5f, 0x6d, 0x6f, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x6d, 0x75, 0x6c, 0x4d, 0x6f, 0x64, 0x12, + 0x23, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x39, 0x36, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x39, 0x36, 0x1a, 0x99, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, + 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x09, 0x61, + 0x63, 0x74, 0x75, 0x61, 0x6c, 0x46, 0x65, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x55, + 0x6e, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, + 0x73, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x4c, 0x31, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x13, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, + 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x1a, 0x31, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x1a, 0x56, 0x0a, 0x09, 0x4c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, + 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x08, 0x6d, 0x73, 0x67, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x48, 0x61, 0x73, 0x68, 0x1a, 0x32, 0x0a, 0x07, 0x44, + 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x1a, + 0x66, 0x0a, 0x06, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, + 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x6d, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x12, 0x33, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, 0x1d, + 0x0a, 0x09, 0x50, 0x72, 0x69, 0x63, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x07, 0x0a, 0x03, 0x57, + 0x65, 0x69, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x72, 0x69, 0x10, 0x01, 0x42, 0x31, 0x5a, + 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, 0x75, 0x6e, 0x6f, 0x2f, 0x70, + 0x32, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x65, 0x63, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_receipt_proto_rawDescOnce sync.Once + file_p2p_proto_receipt_proto_rawDescData = file_p2p_proto_receipt_proto_rawDesc +) + +func file_p2p_proto_receipt_proto_rawDescGZIP() []byte { + file_p2p_proto_receipt_proto_rawDescOnce.Do(func() { + file_p2p_proto_receipt_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_receipt_proto_rawDescData) + }) + return file_p2p_proto_receipt_proto_rawDescData +} + +var file_p2p_proto_receipt_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_p2p_proto_receipt_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_p2p_proto_receipt_proto_goTypes = []any{ + (PriceUnit)(0), // 0: PriceUnit + (*MessageToL1)(nil), // 1: MessageToL1 + (*EthereumAddress)(nil), // 2: EthereumAddress + (*Receipt)(nil), // 3: Receipt + (*Receipt_ExecutionResources)(nil), // 4: Receipt.ExecutionResources + (*Receipt_Common)(nil), // 5: Receipt.Common + (*Receipt_Invoke)(nil), // 6: Receipt.Invoke + (*Receipt_L1Handler)(nil), // 7: Receipt.L1Handler + (*Receipt_Declare)(nil), // 8: Receipt.Declare + (*Receipt_Deploy)(nil), // 9: Receipt.Deploy + (*Receipt_DeployAccount)(nil), // 10: Receipt.DeployAccount + (*Receipt_ExecutionResources_BuiltinCounter)(nil), // 11: Receipt.ExecutionResources.BuiltinCounter + (*Felt252)(nil), // 12: Felt252 + (*Hash)(nil), // 13: Hash +} +var file_p2p_proto_receipt_proto_depIdxs = []int32{ + 12, // 0: MessageToL1.from_address:type_name -> Felt252 + 12, // 1: MessageToL1.payload:type_name -> Felt252 + 2, // 2: MessageToL1.to_address:type_name -> EthereumAddress + 6, // 3: Receipt.invoke:type_name -> Receipt.Invoke + 7, // 4: Receipt.l1_handler:type_name -> Receipt.L1Handler + 8, // 5: Receipt.declare:type_name -> Receipt.Declare + 9, // 6: Receipt.deprecated_deploy:type_name -> Receipt.Deploy + 10, // 7: Receipt.deploy_account:type_name -> Receipt.DeployAccount + 11, // 8: Receipt.ExecutionResources.builtins:type_name -> Receipt.ExecutionResources.BuiltinCounter + 12, // 9: Receipt.ExecutionResources.l1_gas:type_name -> Felt252 + 12, // 10: Receipt.ExecutionResources.l1_data_gas:type_name -> Felt252 + 12, // 11: Receipt.ExecutionResources.total_l1_gas:type_name -> Felt252 + 12, // 12: Receipt.Common.actual_fee:type_name -> Felt252 + 0, // 13: Receipt.Common.price_unit:type_name -> PriceUnit + 1, // 14: Receipt.Common.messages_sent:type_name -> MessageToL1 + 4, // 15: Receipt.Common.execution_resources:type_name -> Receipt.ExecutionResources + 5, // 16: Receipt.Invoke.common:type_name -> Receipt.Common + 5, // 17: Receipt.L1Handler.common:type_name -> Receipt.Common + 13, // 18: Receipt.L1Handler.msg_hash:type_name -> Hash + 5, // 19: Receipt.Declare.common:type_name -> Receipt.Common + 5, // 20: Receipt.Deploy.common:type_name -> Receipt.Common + 12, // 21: Receipt.Deploy.contract_address:type_name -> Felt252 + 5, // 22: Receipt.DeployAccount.common:type_name -> Receipt.Common + 12, // 23: Receipt.DeployAccount.contract_address:type_name -> Felt252 + 24, // [24:24] is the sub-list for method output_type + 24, // [24:24] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name +} + +func init() { file_p2p_proto_receipt_proto_init() } +func file_p2p_proto_receipt_proto_init() { + if File_p2p_proto_receipt_proto != nil { + return + } + file_p2p_proto_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_p2p_proto_receipt_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*MessageToL1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*EthereumAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*Receipt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_ExecutionResources); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_Common); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_Invoke); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_L1Handler); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_Declare); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_Deploy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_DeployAccount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_receipt_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*Receipt_ExecutionResources_BuiltinCounter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_receipt_proto_msgTypes[2].OneofWrappers = []any{ + (*Receipt_Invoke_)(nil), + (*Receipt_L1Handler_)(nil), + (*Receipt_Declare_)(nil), + (*Receipt_DeprecatedDeploy)(nil), + (*Receipt_DeployAccount_)(nil), + } + file_p2p_proto_receipt_proto_msgTypes[4].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_receipt_proto_rawDesc, + NumEnums: 1, + NumMessages: 11, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_receipt_proto_goTypes, + DependencyIndexes: file_p2p_proto_receipt_proto_depIdxs, + EnumInfos: file_p2p_proto_receipt_proto_enumTypes, + MessageInfos: file_p2p_proto_receipt_proto_msgTypes, + }.Build() + File_p2p_proto_receipt_proto = out.File + file_p2p_proto_receipt_proto_rawDesc = nil + file_p2p_proto_receipt_proto_goTypes = nil + file_p2p_proto_receipt_proto_depIdxs = nil +} diff --git a/protocol/p2p/starknet/spec/state.pb.go b/protocol/p2p/starknet/spec/state.pb.go new file mode 100644 index 00000000..c230a042 --- /dev/null +++ b/protocol/p2p/starknet/spec/state.pb.go @@ -0,0 +1,555 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/state.proto + +package spec + +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) +) + +// optimized for flat storage, not through a trie (not sharing key prefixes) +type ContractStoredValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Key *Felt252 `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value *Felt252 `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *ContractStoredValue) Reset() { + *x = ContractStoredValue{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_state_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContractStoredValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContractStoredValue) ProtoMessage() {} + +func (x *ContractStoredValue) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_state_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 ContractStoredValue.ProtoReflect.Descriptor instead. +func (*ContractStoredValue) Descriptor() ([]byte, []int) { + return file_p2p_proto_state_proto_rawDescGZIP(), []int{0} +} + +func (x *ContractStoredValue) GetKey() *Felt252 { + if x != nil { + return x.Key + } + return nil +} + +func (x *ContractStoredValue) GetValue() *Felt252 { + if x != nil { + return x.Value + } + return nil +} + +type ContractDiff struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address *Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Nonce *Felt252 `protobuf:"bytes,2,opt,name=nonce,proto3,oneof" json:"nonce,omitempty"` // Present only if the nonce was updated + ClassHash *Hash `protobuf:"bytes,3,opt,name=class_hash,json=classHash,proto3,oneof" json:"class_hash,omitempty"` // Present only if the contract was deployed or replaced in this block. + Values []*ContractStoredValue `protobuf:"bytes,4,rep,name=values,proto3" json:"values,omitempty"` + Domain VolitionDomain `protobuf:"varint,5,opt,name=domain,proto3,enum=VolitionDomain" json:"domain,omitempty"` +} + +func (x *ContractDiff) Reset() { + *x = ContractDiff{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_state_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ContractDiff) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ContractDiff) ProtoMessage() {} + +func (x *ContractDiff) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_state_proto_msgTypes[1] + 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 ContractDiff.ProtoReflect.Descriptor instead. +func (*ContractDiff) Descriptor() ([]byte, []int) { + return file_p2p_proto_state_proto_rawDescGZIP(), []int{1} +} + +func (x *ContractDiff) GetAddress() *Address { + if x != nil { + return x.Address + } + return nil +} + +func (x *ContractDiff) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +func (x *ContractDiff) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *ContractDiff) GetValues() []*ContractStoredValue { + if x != nil { + return x.Values + } + return nil +} + +func (x *ContractDiff) GetDomain() VolitionDomain { + if x != nil { + return x.Domain + } + return VolitionDomain_L1 +} + +type DeclaredClass struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ClassHash *Hash `protobuf:"bytes,1,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + CompiledClassHash *Hash `protobuf:"bytes,2,opt,name=compiled_class_hash,json=compiledClassHash,proto3,oneof" json:"compiled_class_hash,omitempty"` // Present only if the class is Cairo1 +} + +func (x *DeclaredClass) Reset() { + *x = DeclaredClass{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_state_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeclaredClass) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeclaredClass) ProtoMessage() {} + +func (x *DeclaredClass) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_state_proto_msgTypes[2] + 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 DeclaredClass.ProtoReflect.Descriptor instead. +func (*DeclaredClass) Descriptor() ([]byte, []int) { + return file_p2p_proto_state_proto_rawDescGZIP(), []int{2} +} + +func (x *DeclaredClass) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *DeclaredClass) GetCompiledClassHash() *Hash { + if x != nil { + return x.CompiledClassHash + } + return nil +} + +type StateDiffsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Iteration *Iteration `protobuf:"bytes,1,opt,name=iteration,proto3" json:"iteration,omitempty"` +} + +func (x *StateDiffsRequest) Reset() { + *x = StateDiffsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_state_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateDiffsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateDiffsRequest) ProtoMessage() {} + +func (x *StateDiffsRequest) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_state_proto_msgTypes[3] + 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 StateDiffsRequest.ProtoReflect.Descriptor instead. +func (*StateDiffsRequest) Descriptor() ([]byte, []int) { + return file_p2p_proto_state_proto_rawDescGZIP(), []int{3} +} + +func (x *StateDiffsRequest) GetIteration() *Iteration { + if x != nil { + return x.Iteration + } + return nil +} + +// Responses are sent ordered by the order given in the request. +type StateDiffsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // All of the messages related to a block need to be sent before a message from the next block is sent. + // + // Types that are assignable to StateDiffMessage: + // + // *StateDiffsResponse_ContractDiff + // *StateDiffsResponse_DeclaredClass + // *StateDiffsResponse_Fin + StateDiffMessage isStateDiffsResponse_StateDiffMessage `protobuf_oneof:"state_diff_message"` +} + +func (x *StateDiffsResponse) Reset() { + *x = StateDiffsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_state_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StateDiffsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StateDiffsResponse) ProtoMessage() {} + +func (x *StateDiffsResponse) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_state_proto_msgTypes[4] + 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 StateDiffsResponse.ProtoReflect.Descriptor instead. +func (*StateDiffsResponse) Descriptor() ([]byte, []int) { + return file_p2p_proto_state_proto_rawDescGZIP(), []int{4} +} + +func (m *StateDiffsResponse) GetStateDiffMessage() isStateDiffsResponse_StateDiffMessage { + if m != nil { + return m.StateDiffMessage + } + return nil +} + +func (x *StateDiffsResponse) GetContractDiff() *ContractDiff { + if x, ok := x.GetStateDiffMessage().(*StateDiffsResponse_ContractDiff); ok { + return x.ContractDiff + } + return nil +} + +func (x *StateDiffsResponse) GetDeclaredClass() *DeclaredClass { + if x, ok := x.GetStateDiffMessage().(*StateDiffsResponse_DeclaredClass); ok { + return x.DeclaredClass + } + return nil +} + +func (x *StateDiffsResponse) GetFin() *Fin { + if x, ok := x.GetStateDiffMessage().(*StateDiffsResponse_Fin); ok { + return x.Fin + } + return nil +} + +type isStateDiffsResponse_StateDiffMessage interface { + isStateDiffsResponse_StateDiffMessage() +} + +type StateDiffsResponse_ContractDiff struct { + ContractDiff *ContractDiff `protobuf:"bytes,1,opt,name=contract_diff,json=contractDiff,proto3,oneof"` // Multiple contract diffs for the same contract may appear continuously if the diff is too large or if it's more convenient. +} + +type StateDiffsResponse_DeclaredClass struct { + DeclaredClass *DeclaredClass `protobuf:"bytes,2,opt,name=declared_class,json=declaredClass,proto3,oneof"` +} + +type StateDiffsResponse_Fin struct { + Fin *Fin `protobuf:"bytes,3,opt,name=fin,proto3,oneof"` // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its state diff. +} + +func (*StateDiffsResponse_ContractDiff) isStateDiffsResponse_StateDiffMessage() {} + +func (*StateDiffsResponse_DeclaredClass) isStateDiffsResponse_StateDiffMessage() {} + +func (*StateDiffsResponse_Fin) isStateDiffsResponse_StateDiffMessage() {} + +var File_p2p_proto_state_proto protoreflect.FileDescriptor + +var file_p2p_proto_state_proto_rawDesc = []byte{ + 0x0a, 0x15, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x51, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1a, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, + 0x69, 0x66, 0x66, 0x12, 0x22, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, + 0x48, 0x00, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0a, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x48, 0x01, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x22, 0x89, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x63, 0x6c, + 0x61, 0x72, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, + 0x48, 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, + 0x3a, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x22, 0x3d, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x66, 0x66, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x49, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x69, 0x66, 0x66, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x69, 0x66, 0x66, 0x48, + 0x00, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, + 0x37, 0x0a, 0x0e, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, + 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x6c, 0x61, + 0x72, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x03, 0x66, 0x69, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x46, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x66, + 0x69, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x66, 0x66, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x31, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, 0x75, 0x6e, 0x6f, 0x2f, 0x70, 0x32, 0x70, 0x2f, 0x73, 0x74, + 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x65, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_state_proto_rawDescOnce sync.Once + file_p2p_proto_state_proto_rawDescData = file_p2p_proto_state_proto_rawDesc +) + +func file_p2p_proto_state_proto_rawDescGZIP() []byte { + file_p2p_proto_state_proto_rawDescOnce.Do(func() { + file_p2p_proto_state_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_state_proto_rawDescData) + }) + return file_p2p_proto_state_proto_rawDescData +} + +var file_p2p_proto_state_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_p2p_proto_state_proto_goTypes = []any{ + (*ContractStoredValue)(nil), // 0: ContractStoredValue + (*ContractDiff)(nil), // 1: ContractDiff + (*DeclaredClass)(nil), // 2: DeclaredClass + (*StateDiffsRequest)(nil), // 3: StateDiffsRequest + (*StateDiffsResponse)(nil), // 4: StateDiffsResponse + (*Felt252)(nil), // 5: Felt252 + (*Address)(nil), // 6: Address + (*Hash)(nil), // 7: Hash + (VolitionDomain)(0), // 8: VolitionDomain + (*Iteration)(nil), // 9: Iteration + (*Fin)(nil), // 10: Fin +} +var file_p2p_proto_state_proto_depIdxs = []int32{ + 5, // 0: ContractStoredValue.key:type_name -> Felt252 + 5, // 1: ContractStoredValue.value:type_name -> Felt252 + 6, // 2: ContractDiff.address:type_name -> Address + 5, // 3: ContractDiff.nonce:type_name -> Felt252 + 7, // 4: ContractDiff.class_hash:type_name -> Hash + 0, // 5: ContractDiff.values:type_name -> ContractStoredValue + 8, // 6: ContractDiff.domain:type_name -> VolitionDomain + 7, // 7: DeclaredClass.class_hash:type_name -> Hash + 7, // 8: DeclaredClass.compiled_class_hash:type_name -> Hash + 9, // 9: StateDiffsRequest.iteration:type_name -> Iteration + 1, // 10: StateDiffsResponse.contract_diff:type_name -> ContractDiff + 2, // 11: StateDiffsResponse.declared_class:type_name -> DeclaredClass + 10, // 12: StateDiffsResponse.fin:type_name -> Fin + 13, // [13:13] is the sub-list for method output_type + 13, // [13:13] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_p2p_proto_state_proto_init() } +func file_p2p_proto_state_proto_init() { + if File_p2p_proto_state_proto != nil { + return + } + file_p2p_proto_common_proto_init() + if !protoimpl.UnsafeEnabled { + file_p2p_proto_state_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ContractStoredValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_state_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*ContractDiff); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_state_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*DeclaredClass); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_state_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*StateDiffsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_state_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*StateDiffsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_state_proto_msgTypes[1].OneofWrappers = []any{} + file_p2p_proto_state_proto_msgTypes[2].OneofWrappers = []any{} + file_p2p_proto_state_proto_msgTypes[4].OneofWrappers = []any{ + (*StateDiffsResponse_ContractDiff)(nil), + (*StateDiffsResponse_DeclaredClass)(nil), + (*StateDiffsResponse_Fin)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_state_proto_rawDesc, + NumEnums: 0, + NumMessages: 5, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_state_proto_goTypes, + DependencyIndexes: file_p2p_proto_state_proto_depIdxs, + MessageInfos: file_p2p_proto_state_proto_msgTypes, + }.Build() + File_p2p_proto_state_proto = out.File + file_p2p_proto_state_proto_rawDesc = nil + file_p2p_proto_state_proto_goTypes = nil + file_p2p_proto_state_proto_depIdxs = nil +} diff --git a/protocol/p2p/starknet/spec/transaction.pb.go b/protocol/p2p/starknet/spec/transaction.pb.go new file mode 100644 index 00000000..ecd18338 --- /dev/null +++ b/protocol/p2p/starknet/spec/transaction.pb.go @@ -0,0 +1,2337 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v5.27.1 +// source: p2p/proto/transaction.proto + +package spec + +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) +) + +type ResourceLimits struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxAmount *Felt252 `protobuf:"bytes,1,opt,name=max_amount,json=maxAmount,proto3" json:"max_amount,omitempty"` + MaxPricePerUnit *Felt252 `protobuf:"bytes,2,opt,name=max_price_per_unit,json=maxPricePerUnit,proto3" json:"max_price_per_unit,omitempty"` +} + +func (x *ResourceLimits) Reset() { + *x = ResourceLimits{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceLimits) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceLimits) ProtoMessage() {} + +func (x *ResourceLimits) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_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 ResourceLimits.ProtoReflect.Descriptor instead. +func (*ResourceLimits) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{0} +} + +func (x *ResourceLimits) GetMaxAmount() *Felt252 { + if x != nil { + return x.MaxAmount + } + return nil +} + +func (x *ResourceLimits) GetMaxPricePerUnit() *Felt252 { + if x != nil { + return x.MaxPricePerUnit + } + return nil +} + +type ResourceBounds struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + L1Gas *ResourceLimits `protobuf:"bytes,1,opt,name=l1_gas,json=l1Gas,proto3" json:"l1_gas,omitempty"` + L2Gas *ResourceLimits `protobuf:"bytes,2,opt,name=l2_gas,json=l2Gas,proto3" json:"l2_gas,omitempty"` +} + +func (x *ResourceBounds) Reset() { + *x = ResourceBounds{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceBounds) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceBounds) ProtoMessage() {} + +func (x *ResourceBounds) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[1] + 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 ResourceBounds.ProtoReflect.Descriptor instead. +func (*ResourceBounds) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{1} +} + +func (x *ResourceBounds) GetL1Gas() *ResourceLimits { + if x != nil { + return x.L1Gas + } + return nil +} + +func (x *ResourceBounds) GetL2Gas() *ResourceLimits { + if x != nil { + return x.L2Gas + } + return nil +} + +type AccountSignature struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Parts []*Felt252 `protobuf:"bytes,1,rep,name=parts,proto3" json:"parts,omitempty"` +} + +func (x *AccountSignature) Reset() { + *x = AccountSignature{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountSignature) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccountSignature) ProtoMessage() {} + +func (x *AccountSignature) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[2] + 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 AccountSignature.ProtoReflect.Descriptor instead. +func (*AccountSignature) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{2} +} + +func (x *AccountSignature) GetParts() []*Felt252 { + if x != nil { + return x.Parts + } + return nil +} + +// This is a transaction that is already accepted in a block. Once we have a mempool, we will define +// a separate message for BroadcastedTransaction. +type Transaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Txn: + // + // *Transaction_DeclareV0_ + // *Transaction_DeclareV1_ + // *Transaction_DeclareV2_ + // *Transaction_DeclareV3_ + // *Transaction_Deploy_ + // *Transaction_DeployAccountV1_ + // *Transaction_DeployAccountV3_ + // *Transaction_InvokeV0_ + // *Transaction_InvokeV1_ + // *Transaction_InvokeV3_ + // *Transaction_L1Handler + Txn isTransaction_Txn `protobuf_oneof:"txn"` + TransactionHash *Hash `protobuf:"bytes,12,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` +} + +func (x *Transaction) Reset() { + *x = Transaction{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction) ProtoMessage() {} + +func (x *Transaction) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[3] + 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 Transaction.ProtoReflect.Descriptor instead. +func (*Transaction) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3} +} + +func (m *Transaction) GetTxn() isTransaction_Txn { + if m != nil { + return m.Txn + } + return nil +} + +func (x *Transaction) GetDeclareV0() *Transaction_DeclareV0 { + if x, ok := x.GetTxn().(*Transaction_DeclareV0_); ok { + return x.DeclareV0 + } + return nil +} + +func (x *Transaction) GetDeclareV1() *Transaction_DeclareV1 { + if x, ok := x.GetTxn().(*Transaction_DeclareV1_); ok { + return x.DeclareV1 + } + return nil +} + +func (x *Transaction) GetDeclareV2() *Transaction_DeclareV2 { + if x, ok := x.GetTxn().(*Transaction_DeclareV2_); ok { + return x.DeclareV2 + } + return nil +} + +func (x *Transaction) GetDeclareV3() *Transaction_DeclareV3 { + if x, ok := x.GetTxn().(*Transaction_DeclareV3_); ok { + return x.DeclareV3 + } + return nil +} + +func (x *Transaction) GetDeploy() *Transaction_Deploy { + if x, ok := x.GetTxn().(*Transaction_Deploy_); ok { + return x.Deploy + } + return nil +} + +func (x *Transaction) GetDeployAccountV1() *Transaction_DeployAccountV1 { + if x, ok := x.GetTxn().(*Transaction_DeployAccountV1_); ok { + return x.DeployAccountV1 + } + return nil +} + +func (x *Transaction) GetDeployAccountV3() *Transaction_DeployAccountV3 { + if x, ok := x.GetTxn().(*Transaction_DeployAccountV3_); ok { + return x.DeployAccountV3 + } + return nil +} + +func (x *Transaction) GetInvokeV0() *Transaction_InvokeV0 { + if x, ok := x.GetTxn().(*Transaction_InvokeV0_); ok { + return x.InvokeV0 + } + return nil +} + +func (x *Transaction) GetInvokeV1() *Transaction_InvokeV1 { + if x, ok := x.GetTxn().(*Transaction_InvokeV1_); ok { + return x.InvokeV1 + } + return nil +} + +func (x *Transaction) GetInvokeV3() *Transaction_InvokeV3 { + if x, ok := x.GetTxn().(*Transaction_InvokeV3_); ok { + return x.InvokeV3 + } + return nil +} + +func (x *Transaction) GetL1Handler() *Transaction_L1HandlerV0 { + if x, ok := x.GetTxn().(*Transaction_L1Handler); ok { + return x.L1Handler + } + return nil +} + +func (x *Transaction) GetTransactionHash() *Hash { + if x != nil { + return x.TransactionHash + } + return nil +} + +type isTransaction_Txn interface { + isTransaction_Txn() +} + +type Transaction_DeclareV0_ struct { + DeclareV0 *Transaction_DeclareV0 `protobuf:"bytes,1,opt,name=declare_v0,json=declareV0,proto3,oneof"` +} + +type Transaction_DeclareV1_ struct { + DeclareV1 *Transaction_DeclareV1 `protobuf:"bytes,2,opt,name=declare_v1,json=declareV1,proto3,oneof"` +} + +type Transaction_DeclareV2_ struct { + DeclareV2 *Transaction_DeclareV2 `protobuf:"bytes,3,opt,name=declare_v2,json=declareV2,proto3,oneof"` +} + +type Transaction_DeclareV3_ struct { + DeclareV3 *Transaction_DeclareV3 `protobuf:"bytes,4,opt,name=declare_v3,json=declareV3,proto3,oneof"` +} + +type Transaction_Deploy_ struct { + Deploy *Transaction_Deploy `protobuf:"bytes,5,opt,name=deploy,proto3,oneof"` +} + +type Transaction_DeployAccountV1_ struct { + DeployAccountV1 *Transaction_DeployAccountV1 `protobuf:"bytes,6,opt,name=deploy_account_v1,json=deployAccountV1,proto3,oneof"` +} + +type Transaction_DeployAccountV3_ struct { + DeployAccountV3 *Transaction_DeployAccountV3 `protobuf:"bytes,7,opt,name=deploy_account_v3,json=deployAccountV3,proto3,oneof"` +} + +type Transaction_InvokeV0_ struct { + InvokeV0 *Transaction_InvokeV0 `protobuf:"bytes,8,opt,name=invoke_v0,json=invokeV0,proto3,oneof"` +} + +type Transaction_InvokeV1_ struct { + InvokeV1 *Transaction_InvokeV1 `protobuf:"bytes,9,opt,name=invoke_v1,json=invokeV1,proto3,oneof"` +} + +type Transaction_InvokeV3_ struct { + InvokeV3 *Transaction_InvokeV3 `protobuf:"bytes,10,opt,name=invoke_v3,json=invokeV3,proto3,oneof"` +} + +type Transaction_L1Handler struct { + L1Handler *Transaction_L1HandlerV0 `protobuf:"bytes,11,opt,name=l1_handler,json=l1Handler,proto3,oneof"` +} + +func (*Transaction_DeclareV0_) isTransaction_Txn() {} + +func (*Transaction_DeclareV1_) isTransaction_Txn() {} + +func (*Transaction_DeclareV2_) isTransaction_Txn() {} + +func (*Transaction_DeclareV3_) isTransaction_Txn() {} + +func (*Transaction_Deploy_) isTransaction_Txn() {} + +func (*Transaction_DeployAccountV1_) isTransaction_Txn() {} + +func (*Transaction_DeployAccountV3_) isTransaction_Txn() {} + +func (*Transaction_InvokeV0_) isTransaction_Txn() {} + +func (*Transaction_InvokeV1_) isTransaction_Txn() {} + +func (*Transaction_InvokeV3_) isTransaction_Txn() {} + +func (*Transaction_L1Handler) isTransaction_Txn() {} + +type TransactionWithReceipt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *Transaction `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` + Receipt *Receipt `protobuf:"bytes,2,opt,name=receipt,proto3" json:"receipt,omitempty"` +} + +func (x *TransactionWithReceipt) Reset() { + *x = TransactionWithReceipt{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionWithReceipt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionWithReceipt) ProtoMessage() {} + +func (x *TransactionWithReceipt) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[4] + 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 TransactionWithReceipt.ProtoReflect.Descriptor instead. +func (*TransactionWithReceipt) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{4} +} + +func (x *TransactionWithReceipt) GetTransaction() *Transaction { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *TransactionWithReceipt) GetReceipt() *Receipt { + if x != nil { + return x.Receipt + } + return nil +} + +// TBD: can support a flag to return tx hashes only, good for standalone mempool to remove them, +// or any node that keeps track of transaction streaming in the consensus. +type TransactionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Iteration *Iteration `protobuf:"bytes,1,opt,name=iteration,proto3" json:"iteration,omitempty"` +} + +func (x *TransactionsRequest) Reset() { + *x = TransactionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionsRequest) ProtoMessage() {} + +func (x *TransactionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[5] + 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 TransactionsRequest.ProtoReflect.Descriptor instead. +func (*TransactionsRequest) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{5} +} + +func (x *TransactionsRequest) GetIteration() *Iteration { + if x != nil { + return x.Iteration + } + return nil +} + +// Responses are sent ordered by the order given in the request. The order inside each block is +// according to the execution order. +type TransactionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to TransactionMessage: + // + // *TransactionsResponse_TransactionWithReceipt + // *TransactionsResponse_Fin + TransactionMessage isTransactionsResponse_TransactionMessage `protobuf_oneof:"transaction_message"` +} + +func (x *TransactionsResponse) Reset() { + *x = TransactionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionsResponse) ProtoMessage() {} + +func (x *TransactionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[6] + 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 TransactionsResponse.ProtoReflect.Descriptor instead. +func (*TransactionsResponse) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{6} +} + +func (m *TransactionsResponse) GetTransactionMessage() isTransactionsResponse_TransactionMessage { + if m != nil { + return m.TransactionMessage + } + return nil +} + +func (x *TransactionsResponse) GetTransactionWithReceipt() *TransactionWithReceipt { + if x, ok := x.GetTransactionMessage().(*TransactionsResponse_TransactionWithReceipt); ok { + return x.TransactionWithReceipt + } + return nil +} + +func (x *TransactionsResponse) GetFin() *Fin { + if x, ok := x.GetTransactionMessage().(*TransactionsResponse_Fin); ok { + return x.Fin + } + return nil +} + +type isTransactionsResponse_TransactionMessage interface { + isTransactionsResponse_TransactionMessage() +} + +type TransactionsResponse_TransactionWithReceipt struct { + TransactionWithReceipt *TransactionWithReceipt `protobuf:"bytes,1,opt,name=transaction_with_receipt,json=transactionWithReceipt,proto3,oneof"` +} + +type TransactionsResponse_Fin struct { + Fin *Fin `protobuf:"bytes,2,opt,name=fin,proto3,oneof"` // Fin is sent after the peer sent all the data or when it encountered a block that it doesn't have its transactions. +} + +func (*TransactionsResponse_TransactionWithReceipt) isTransactionsResponse_TransactionMessage() {} + +func (*TransactionsResponse_Fin) isTransactionsResponse_TransactionMessage() {} + +type Transactions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transactions []*Transaction `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` +} + +func (x *Transactions) Reset() { + *x = Transactions{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transactions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transactions) ProtoMessage() {} + +func (x *Transactions) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[7] + 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 Transactions.ProtoReflect.Descriptor instead. +func (*Transactions) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{7} +} + +func (x *Transactions) GetTransactions() []*Transaction { + if x != nil { + return x.Transactions + } + return nil +} + +type Transaction_DeclareV0 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender *Address `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + MaxFee *Felt252 `protobuf:"bytes,2,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + Signature *AccountSignature `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` + ClassHash *Hash `protobuf:"bytes,4,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` +} + +func (x *Transaction_DeclareV0) Reset() { + *x = Transaction_DeclareV0{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_DeclareV0) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_DeclareV0) ProtoMessage() {} + +func (x *Transaction_DeclareV0) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[8] + 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 Transaction_DeclareV0.ProtoReflect.Descriptor instead. +func (*Transaction_DeclareV0) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *Transaction_DeclareV0) GetSender() *Address { + if x != nil { + return x.Sender + } + return nil +} + +func (x *Transaction_DeclareV0) GetMaxFee() *Felt252 { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Transaction_DeclareV0) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_DeclareV0) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +type Transaction_DeclareV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender *Address `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + MaxFee *Felt252 `protobuf:"bytes,2,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + Signature *AccountSignature `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` + ClassHash *Hash `protobuf:"bytes,4,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + Nonce *Felt252 `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"` +} + +func (x *Transaction_DeclareV1) Reset() { + *x = Transaction_DeclareV1{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_DeclareV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_DeclareV1) ProtoMessage() {} + +func (x *Transaction_DeclareV1) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[9] + 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 Transaction_DeclareV1.ProtoReflect.Descriptor instead. +func (*Transaction_DeclareV1) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 1} +} + +func (x *Transaction_DeclareV1) GetSender() *Address { + if x != nil { + return x.Sender + } + return nil +} + +func (x *Transaction_DeclareV1) GetMaxFee() *Felt252 { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Transaction_DeclareV1) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_DeclareV1) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *Transaction_DeclareV1) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +type Transaction_DeclareV2 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender *Address `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + MaxFee *Felt252 `protobuf:"bytes,2,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + Signature *AccountSignature `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` + ClassHash *Hash `protobuf:"bytes,4,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + Nonce *Felt252 `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"` + CompiledClassHash *Hash `protobuf:"bytes,6,opt,name=compiled_class_hash,json=compiledClassHash,proto3" json:"compiled_class_hash,omitempty"` +} + +func (x *Transaction_DeclareV2) Reset() { + *x = Transaction_DeclareV2{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_DeclareV2) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_DeclareV2) ProtoMessage() {} + +func (x *Transaction_DeclareV2) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[10] + 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 Transaction_DeclareV2.ProtoReflect.Descriptor instead. +func (*Transaction_DeclareV2) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 2} +} + +func (x *Transaction_DeclareV2) GetSender() *Address { + if x != nil { + return x.Sender + } + return nil +} + +func (x *Transaction_DeclareV2) GetMaxFee() *Felt252 { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Transaction_DeclareV2) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_DeclareV2) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *Transaction_DeclareV2) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +func (x *Transaction_DeclareV2) GetCompiledClassHash() *Hash { + if x != nil { + return x.CompiledClassHash + } + return nil +} + +// see https://external.integration.starknet.io/feeder_gateway/get_transaction?transactionHash=0x41d1f5206ef58a443e7d3d1ca073171ec25fa75313394318fc83a074a6631c3 +type Transaction_DeclareV3 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender *Address `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + Signature *AccountSignature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + ClassHash *Hash `protobuf:"bytes,3,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + Nonce *Felt252 `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + CompiledClassHash *Hash `protobuf:"bytes,5,opt,name=compiled_class_hash,json=compiledClassHash,proto3" json:"compiled_class_hash,omitempty"` + ResourceBounds *ResourceBounds `protobuf:"bytes,6,opt,name=resource_bounds,json=resourceBounds,proto3" json:"resource_bounds,omitempty"` + Tip uint64 `protobuf:"varint,7,opt,name=tip,proto3" json:"tip,omitempty"` + PaymasterData []*Felt252 `protobuf:"bytes,8,rep,name=paymaster_data,json=paymasterData,proto3" json:"paymaster_data,omitempty"` + AccountDeploymentData []*Felt252 `protobuf:"bytes,9,rep,name=account_deployment_data,json=accountDeploymentData,proto3" json:"account_deployment_data,omitempty"` + NonceDataAvailabilityMode VolitionDomain `protobuf:"varint,10,opt,name=nonce_data_availability_mode,json=nonceDataAvailabilityMode,proto3,enum=VolitionDomain" json:"nonce_data_availability_mode,omitempty"` + FeeDataAvailabilityMode VolitionDomain `protobuf:"varint,11,opt,name=fee_data_availability_mode,json=feeDataAvailabilityMode,proto3,enum=VolitionDomain" json:"fee_data_availability_mode,omitempty"` +} + +func (x *Transaction_DeclareV3) Reset() { + *x = Transaction_DeclareV3{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_DeclareV3) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_DeclareV3) ProtoMessage() {} + +func (x *Transaction_DeclareV3) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[11] + 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 Transaction_DeclareV3.ProtoReflect.Descriptor instead. +func (*Transaction_DeclareV3) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 3} +} + +func (x *Transaction_DeclareV3) GetSender() *Address { + if x != nil { + return x.Sender + } + return nil +} + +func (x *Transaction_DeclareV3) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_DeclareV3) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *Transaction_DeclareV3) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +func (x *Transaction_DeclareV3) GetCompiledClassHash() *Hash { + if x != nil { + return x.CompiledClassHash + } + return nil +} + +func (x *Transaction_DeclareV3) GetResourceBounds() *ResourceBounds { + if x != nil { + return x.ResourceBounds + } + return nil +} + +func (x *Transaction_DeclareV3) GetTip() uint64 { + if x != nil { + return x.Tip + } + return 0 +} + +func (x *Transaction_DeclareV3) GetPaymasterData() []*Felt252 { + if x != nil { + return x.PaymasterData + } + return nil +} + +func (x *Transaction_DeclareV3) GetAccountDeploymentData() []*Felt252 { + if x != nil { + return x.AccountDeploymentData + } + return nil +} + +func (x *Transaction_DeclareV3) GetNonceDataAvailabilityMode() VolitionDomain { + if x != nil { + return x.NonceDataAvailabilityMode + } + return VolitionDomain_L1 +} + +func (x *Transaction_DeclareV3) GetFeeDataAvailabilityMode() VolitionDomain { + if x != nil { + return x.FeeDataAvailabilityMode + } + return VolitionDomain_L1 +} + +type Transaction_Deploy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ClassHash *Hash `protobuf:"bytes,1,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + AddressSalt *Felt252 `protobuf:"bytes,2,opt,name=address_salt,json=addressSalt,proto3" json:"address_salt,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,3,rep,name=calldata,proto3" json:"calldata,omitempty"` + Version uint32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *Transaction_Deploy) Reset() { + *x = Transaction_Deploy{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_Deploy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_Deploy) ProtoMessage() {} + +func (x *Transaction_Deploy) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[12] + 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 Transaction_Deploy.ProtoReflect.Descriptor instead. +func (*Transaction_Deploy) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 4} +} + +func (x *Transaction_Deploy) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *Transaction_Deploy) GetAddressSalt() *Felt252 { + if x != nil { + return x.AddressSalt + } + return nil +} + +func (x *Transaction_Deploy) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +func (x *Transaction_Deploy) GetVersion() uint32 { + if x != nil { + return x.Version + } + return 0 +} + +type Transaction_DeployAccountV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxFee *Felt252 `protobuf:"bytes,1,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + Signature *AccountSignature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + ClassHash *Hash `protobuf:"bytes,3,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + Nonce *Felt252 `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + AddressSalt *Felt252 `protobuf:"bytes,5,opt,name=address_salt,json=addressSalt,proto3" json:"address_salt,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,6,rep,name=calldata,proto3" json:"calldata,omitempty"` +} + +func (x *Transaction_DeployAccountV1) Reset() { + *x = Transaction_DeployAccountV1{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_DeployAccountV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_DeployAccountV1) ProtoMessage() {} + +func (x *Transaction_DeployAccountV1) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[13] + 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 Transaction_DeployAccountV1.ProtoReflect.Descriptor instead. +func (*Transaction_DeployAccountV1) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 5} +} + +func (x *Transaction_DeployAccountV1) GetMaxFee() *Felt252 { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Transaction_DeployAccountV1) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_DeployAccountV1) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *Transaction_DeployAccountV1) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +func (x *Transaction_DeployAccountV1) GetAddressSalt() *Felt252 { + if x != nil { + return x.AddressSalt + } + return nil +} + +func (x *Transaction_DeployAccountV1) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +// see https://external.integration.starknet.io/feeder_gateway/get_transaction?transactionHash=0x29fd7881f14380842414cdfdd8d6c0b1f2174f8916edcfeb1ede1eb26ac3ef0 +type Transaction_DeployAccountV3 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Signature *AccountSignature `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` + ClassHash *Hash `protobuf:"bytes,2,opt,name=class_hash,json=classHash,proto3" json:"class_hash,omitempty"` + Nonce *Felt252 `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` + AddressSalt *Felt252 `protobuf:"bytes,4,opt,name=address_salt,json=addressSalt,proto3" json:"address_salt,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,5,rep,name=calldata,proto3" json:"calldata,omitempty"` + ResourceBounds *ResourceBounds `protobuf:"bytes,6,opt,name=resource_bounds,json=resourceBounds,proto3" json:"resource_bounds,omitempty"` + Tip uint64 `protobuf:"varint,7,opt,name=tip,proto3" json:"tip,omitempty"` + PaymasterData []*Felt252 `protobuf:"bytes,8,rep,name=paymaster_data,json=paymasterData,proto3" json:"paymaster_data,omitempty"` + NonceDataAvailabilityMode VolitionDomain `protobuf:"varint,9,opt,name=nonce_data_availability_mode,json=nonceDataAvailabilityMode,proto3,enum=VolitionDomain" json:"nonce_data_availability_mode,omitempty"` + FeeDataAvailabilityMode VolitionDomain `protobuf:"varint,10,opt,name=fee_data_availability_mode,json=feeDataAvailabilityMode,proto3,enum=VolitionDomain" json:"fee_data_availability_mode,omitempty"` +} + +func (x *Transaction_DeployAccountV3) Reset() { + *x = Transaction_DeployAccountV3{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_DeployAccountV3) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_DeployAccountV3) ProtoMessage() {} + +func (x *Transaction_DeployAccountV3) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[14] + 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 Transaction_DeployAccountV3.ProtoReflect.Descriptor instead. +func (*Transaction_DeployAccountV3) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 6} +} + +func (x *Transaction_DeployAccountV3) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetClassHash() *Hash { + if x != nil { + return x.ClassHash + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetAddressSalt() *Felt252 { + if x != nil { + return x.AddressSalt + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetResourceBounds() *ResourceBounds { + if x != nil { + return x.ResourceBounds + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetTip() uint64 { + if x != nil { + return x.Tip + } + return 0 +} + +func (x *Transaction_DeployAccountV3) GetPaymasterData() []*Felt252 { + if x != nil { + return x.PaymasterData + } + return nil +} + +func (x *Transaction_DeployAccountV3) GetNonceDataAvailabilityMode() VolitionDomain { + if x != nil { + return x.NonceDataAvailabilityMode + } + return VolitionDomain_L1 +} + +func (x *Transaction_DeployAccountV3) GetFeeDataAvailabilityMode() VolitionDomain { + if x != nil { + return x.FeeDataAvailabilityMode + } + return VolitionDomain_L1 +} + +type Transaction_InvokeV0 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MaxFee *Felt252 `protobuf:"bytes,1,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + Signature *AccountSignature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + Address *Address `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + EntryPointSelector *Felt252 `protobuf:"bytes,4,opt,name=entry_point_selector,json=entryPointSelector,proto3" json:"entry_point_selector,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,5,rep,name=calldata,proto3" json:"calldata,omitempty"` +} + +func (x *Transaction_InvokeV0) Reset() { + *x = Transaction_InvokeV0{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_InvokeV0) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_InvokeV0) ProtoMessage() {} + +func (x *Transaction_InvokeV0) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[15] + 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 Transaction_InvokeV0.ProtoReflect.Descriptor instead. +func (*Transaction_InvokeV0) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 7} +} + +func (x *Transaction_InvokeV0) GetMaxFee() *Felt252 { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Transaction_InvokeV0) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_InvokeV0) GetAddress() *Address { + if x != nil { + return x.Address + } + return nil +} + +func (x *Transaction_InvokeV0) GetEntryPointSelector() *Felt252 { + if x != nil { + return x.EntryPointSelector + } + return nil +} + +func (x *Transaction_InvokeV0) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +type Transaction_InvokeV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender *Address `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + MaxFee *Felt252 `protobuf:"bytes,2,opt,name=max_fee,json=maxFee,proto3" json:"max_fee,omitempty"` + Signature *AccountSignature `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,4,rep,name=calldata,proto3" json:"calldata,omitempty"` + Nonce *Felt252 `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"` +} + +func (x *Transaction_InvokeV1) Reset() { + *x = Transaction_InvokeV1{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_InvokeV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_InvokeV1) ProtoMessage() {} + +func (x *Transaction_InvokeV1) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[16] + 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 Transaction_InvokeV1.ProtoReflect.Descriptor instead. +func (*Transaction_InvokeV1) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 8} +} + +func (x *Transaction_InvokeV1) GetSender() *Address { + if x != nil { + return x.Sender + } + return nil +} + +func (x *Transaction_InvokeV1) GetMaxFee() *Felt252 { + if x != nil { + return x.MaxFee + } + return nil +} + +func (x *Transaction_InvokeV1) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_InvokeV1) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +func (x *Transaction_InvokeV1) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +// see https://external.integration.starknet.io/feeder_gateway/get_transaction?transactionHash=0x41906f1c314cca5f43170ea75d3b1904196a10101190d2b12a41cc61cfd17c +type Transaction_InvokeV3 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sender *Address `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` + Signature *AccountSignature `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,3,rep,name=calldata,proto3" json:"calldata,omitempty"` + ResourceBounds *ResourceBounds `protobuf:"bytes,4,opt,name=resource_bounds,json=resourceBounds,proto3" json:"resource_bounds,omitempty"` + Tip uint64 `protobuf:"varint,5,opt,name=tip,proto3" json:"tip,omitempty"` + PaymasterData []*Felt252 `protobuf:"bytes,6,rep,name=paymaster_data,json=paymasterData,proto3" json:"paymaster_data,omitempty"` + AccountDeploymentData []*Felt252 `protobuf:"bytes,7,rep,name=account_deployment_data,json=accountDeploymentData,proto3" json:"account_deployment_data,omitempty"` + NonceDataAvailabilityMode VolitionDomain `protobuf:"varint,8,opt,name=nonce_data_availability_mode,json=nonceDataAvailabilityMode,proto3,enum=VolitionDomain" json:"nonce_data_availability_mode,omitempty"` + FeeDataAvailabilityMode VolitionDomain `protobuf:"varint,9,opt,name=fee_data_availability_mode,json=feeDataAvailabilityMode,proto3,enum=VolitionDomain" json:"fee_data_availability_mode,omitempty"` + Nonce *Felt252 `protobuf:"bytes,10,opt,name=nonce,proto3" json:"nonce,omitempty"` +} + +func (x *Transaction_InvokeV3) Reset() { + *x = Transaction_InvokeV3{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_InvokeV3) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_InvokeV3) ProtoMessage() {} + +func (x *Transaction_InvokeV3) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[17] + 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 Transaction_InvokeV3.ProtoReflect.Descriptor instead. +func (*Transaction_InvokeV3) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 9} +} + +func (x *Transaction_InvokeV3) GetSender() *Address { + if x != nil { + return x.Sender + } + return nil +} + +func (x *Transaction_InvokeV3) GetSignature() *AccountSignature { + if x != nil { + return x.Signature + } + return nil +} + +func (x *Transaction_InvokeV3) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +func (x *Transaction_InvokeV3) GetResourceBounds() *ResourceBounds { + if x != nil { + return x.ResourceBounds + } + return nil +} + +func (x *Transaction_InvokeV3) GetTip() uint64 { + if x != nil { + return x.Tip + } + return 0 +} + +func (x *Transaction_InvokeV3) GetPaymasterData() []*Felt252 { + if x != nil { + return x.PaymasterData + } + return nil +} + +func (x *Transaction_InvokeV3) GetAccountDeploymentData() []*Felt252 { + if x != nil { + return x.AccountDeploymentData + } + return nil +} + +func (x *Transaction_InvokeV3) GetNonceDataAvailabilityMode() VolitionDomain { + if x != nil { + return x.NonceDataAvailabilityMode + } + return VolitionDomain_L1 +} + +func (x *Transaction_InvokeV3) GetFeeDataAvailabilityMode() VolitionDomain { + if x != nil { + return x.FeeDataAvailabilityMode + } + return VolitionDomain_L1 +} + +func (x *Transaction_InvokeV3) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +type Transaction_L1HandlerV0 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nonce *Felt252 `protobuf:"bytes,1,opt,name=nonce,proto3" json:"nonce,omitempty"` + Address *Address `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + EntryPointSelector *Felt252 `protobuf:"bytes,3,opt,name=entry_point_selector,json=entryPointSelector,proto3" json:"entry_point_selector,omitempty"` + Calldata []*Felt252 `protobuf:"bytes,4,rep,name=calldata,proto3" json:"calldata,omitempty"` +} + +func (x *Transaction_L1HandlerV0) Reset() { + *x = Transaction_L1HandlerV0{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_transaction_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Transaction_L1HandlerV0) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Transaction_L1HandlerV0) ProtoMessage() {} + +func (x *Transaction_L1HandlerV0) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_transaction_proto_msgTypes[18] + 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 Transaction_L1HandlerV0.ProtoReflect.Descriptor instead. +func (*Transaction_L1HandlerV0) Descriptor() ([]byte, []int) { + return file_p2p_proto_transaction_proto_rawDescGZIP(), []int{3, 10} +} + +func (x *Transaction_L1HandlerV0) GetNonce() *Felt252 { + if x != nil { + return x.Nonce + } + return nil +} + +func (x *Transaction_L1HandlerV0) GetAddress() *Address { + if x != nil { + return x.Address + } + return nil +} + +func (x *Transaction_L1HandlerV0) GetEntryPointSelector() *Felt252 { + if x != nil { + return x.EntryPointSelector + } + return nil +} + +func (x *Transaction_L1HandlerV0) GetCalldata() []*Felt252 { + if x != nil { + return x.Calldata + } + return nil +} + +var File_p2p_proto_transaction_proto protoreflect.FileDescriptor + +var file_p2p_proto_transaction_proto_rawDesc = []byte{ + 0x0a, 0x1b, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, + 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x70, 0x32, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x70, + 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x12, 0x27, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x09, + 0x6d, 0x61, 0x78, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x12, 0x6d, 0x61, 0x78, + 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, + 0x0f, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x69, 0x63, 0x65, 0x50, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, + 0x22, 0x60, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, + 0x64, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x6c, 0x31, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x73, 0x52, 0x05, 0x6c, 0x31, 0x47, 0x61, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x6c, 0x32, + 0x5f, 0x67, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x05, 0x6c, 0x32, 0x47, + 0x61, 0x73, 0x22, 0x32, 0x0a, 0x10, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, + 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x22, 0x85, 0x1f, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, + 0x65, 0x5f, 0x76, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, + 0x56, 0x30, 0x48, 0x00, 0x52, 0x09, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x30, 0x12, + 0x37, 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x31, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x31, 0x48, 0x00, 0x52, 0x09, 0x64, + 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x31, 0x12, 0x37, 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x6c, + 0x61, 0x72, 0x65, 0x5f, 0x76, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, + 0x72, 0x65, 0x56, 0x32, 0x48, 0x00, 0x52, 0x09, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, + 0x32, 0x12, 0x37, 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x33, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x33, 0x48, 0x00, 0x52, + 0x09, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x33, 0x12, 0x2d, 0x0a, 0x06, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x48, + 0x00, 0x52, 0x06, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x4a, 0x0a, 0x11, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x31, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x56, 0x31, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x56, 0x31, 0x12, 0x4a, 0x0a, 0x11, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x76, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1c, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, 0x33, 0x48, 0x00, + 0x52, 0x0f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x56, + 0x33, 0x12, 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x76, 0x30, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x30, 0x48, 0x00, 0x52, 0x08, 0x69, + 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x30, 0x12, 0x34, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x6f, 0x6b, + 0x65, 0x5f, 0x76, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, + 0x31, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x31, 0x12, 0x34, 0x0a, + 0x09, 0x69, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x76, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, + 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x33, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x6f, 0x6b, + 0x65, 0x56, 0x33, 0x12, 0x39, 0x0a, 0x0a, 0x6c, 0x31, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x56, + 0x30, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x12, 0x30, + 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, + 0x1a, 0xa7, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x30, 0x12, 0x20, + 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x06, 0x6d, 0x61, 0x78, + 0x46, 0x65, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, 0xc7, 0x01, 0x0a, 0x09, 0x44, + 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, 0x56, 0x31, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x61, + 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x2f, 0x0a, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, + 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x1a, 0xfe, 0x01, 0x0a, 0x09, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, + 0x56, 0x32, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, + 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, + 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x35, + 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x48, 0x61, 0x73, 0x68, 0x1a, 0xba, 0x04, 0x0a, 0x09, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, + 0x65, 0x56, 0x33, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x13, + 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, + 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x38, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x0e, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x69, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x74, 0x69, 0x70, 0x12, + 0x2f, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, + 0x32, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x40, 0x0a, 0x17, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x15, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x50, 0x0a, 0x1c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x19, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4c, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x17, 0x66, 0x65, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x1a, 0x9b, 0x01, 0x0a, 0x06, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0x24, 0x0a, + 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, + 0x61, 0x73, 0x68, 0x12, 0x2b, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, + 0x61, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, + 0x32, 0x35, 0x32, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6c, 0x74, + 0x12, 0x24, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x63, 0x61, + 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x1a, 0xfe, 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x56, 0x31, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, + 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, + 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x2b, + 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x0b, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x63, + 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, + 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0xf8, 0x03, 0x0a, 0x0f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x56, 0x33, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x0c, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x0b, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6c, 0x74, 0x12, 0x24, 0x0a, 0x08, 0x63, 0x61, 0x6c, + 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x38, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x69, 0x70, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x74, 0x69, 0x70, 0x12, 0x2f, 0x0a, 0x0e, 0x70, + 0x61, 0x79, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x0d, 0x70, + 0x61, 0x79, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x1c, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x52, 0x19, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4c, + 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x52, 0x17, 0x66, 0x65, 0x65, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x1a, 0xe4, 0x01, 0x0a, + 0x08, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x30, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x61, 0x78, + 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, + 0x74, 0x32, 0x35, 0x32, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x2f, 0x0a, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x22, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, + 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x12, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x24, 0x0a, + 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, + 0x61, 0x74, 0x61, 0x1a, 0xc6, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x31, + 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, + 0x65, 0x72, 0x12, 0x21, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x06, 0x6d, + 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, + 0x35, 0x32, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, + 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x1a, 0x82, 0x04, 0x0a, + 0x08, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x56, 0x33, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x52, 0x06, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x09, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x24, 0x0a, 0x08, + 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, + 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x38, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x0e, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x10, 0x0a, 0x03, + 0x74, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x74, 0x69, 0x70, 0x12, 0x2f, + 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, + 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x40, 0x0a, 0x17, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x15, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x50, 0x0a, 0x1c, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x19, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x4c, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x56, 0x6f, 0x6c, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x17, 0x66, 0x65, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x1a, 0xb3, 0x01, 0x0a, 0x0b, 0x4c, 0x31, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x56, + 0x30, 0x12, 0x1e, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x12, 0x22, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x14, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x12, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x12, 0x24, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x46, 0x65, 0x6c, 0x74, 0x32, 0x35, 0x32, 0x52, 0x08, 0x63, + 0x61, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x42, 0x05, 0x0a, 0x03, 0x74, 0x78, 0x6e, 0x22, 0x6c, + 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, + 0x68, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x2e, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x70, 0x74, 0x52, 0x07, 0x72, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x22, 0x3f, 0x0a, 0x13, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x01, + 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, + 0x74, 0x48, 0x00, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x66, + 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x46, 0x69, 0x6e, 0x48, 0x00, + 0x52, 0x03, 0x66, 0x69, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x40, 0x0a, 0x0c, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x0c, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x31, + 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, + 0x68, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x64, 0x45, 0x74, 0x68, 0x2f, 0x6a, 0x75, 0x6e, 0x6f, 0x2f, + 0x70, 0x32, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x6b, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x65, + 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_p2p_proto_transaction_proto_rawDescOnce sync.Once + file_p2p_proto_transaction_proto_rawDescData = file_p2p_proto_transaction_proto_rawDesc +) + +func file_p2p_proto_transaction_proto_rawDescGZIP() []byte { + file_p2p_proto_transaction_proto_rawDescOnce.Do(func() { + file_p2p_proto_transaction_proto_rawDescData = protoimpl.X.CompressGZIP(file_p2p_proto_transaction_proto_rawDescData) + }) + return file_p2p_proto_transaction_proto_rawDescData +} + +var file_p2p_proto_transaction_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_p2p_proto_transaction_proto_goTypes = []any{ + (*ResourceLimits)(nil), // 0: ResourceLimits + (*ResourceBounds)(nil), // 1: ResourceBounds + (*AccountSignature)(nil), // 2: AccountSignature + (*Transaction)(nil), // 3: Transaction + (*TransactionWithReceipt)(nil), // 4: TransactionWithReceipt + (*TransactionsRequest)(nil), // 5: TransactionsRequest + (*TransactionsResponse)(nil), // 6: TransactionsResponse + (*Transactions)(nil), // 7: Transactions + (*Transaction_DeclareV0)(nil), // 8: Transaction.DeclareV0 + (*Transaction_DeclareV1)(nil), // 9: Transaction.DeclareV1 + (*Transaction_DeclareV2)(nil), // 10: Transaction.DeclareV2 + (*Transaction_DeclareV3)(nil), // 11: Transaction.DeclareV3 + (*Transaction_Deploy)(nil), // 12: Transaction.Deploy + (*Transaction_DeployAccountV1)(nil), // 13: Transaction.DeployAccountV1 + (*Transaction_DeployAccountV3)(nil), // 14: Transaction.DeployAccountV3 + (*Transaction_InvokeV0)(nil), // 15: Transaction.InvokeV0 + (*Transaction_InvokeV1)(nil), // 16: Transaction.InvokeV1 + (*Transaction_InvokeV3)(nil), // 17: Transaction.InvokeV3 + (*Transaction_L1HandlerV0)(nil), // 18: Transaction.L1HandlerV0 + (*Felt252)(nil), // 19: Felt252 + (*Hash)(nil), // 20: Hash + (*Receipt)(nil), // 21: Receipt + (*Iteration)(nil), // 22: Iteration + (*Fin)(nil), // 23: Fin + (*Address)(nil), // 24: Address + (VolitionDomain)(0), // 25: VolitionDomain +} +var file_p2p_proto_transaction_proto_depIdxs = []int32{ + 19, // 0: ResourceLimits.max_amount:type_name -> Felt252 + 19, // 1: ResourceLimits.max_price_per_unit:type_name -> Felt252 + 0, // 2: ResourceBounds.l1_gas:type_name -> ResourceLimits + 0, // 3: ResourceBounds.l2_gas:type_name -> ResourceLimits + 19, // 4: AccountSignature.parts:type_name -> Felt252 + 8, // 5: Transaction.declare_v0:type_name -> Transaction.DeclareV0 + 9, // 6: Transaction.declare_v1:type_name -> Transaction.DeclareV1 + 10, // 7: Transaction.declare_v2:type_name -> Transaction.DeclareV2 + 11, // 8: Transaction.declare_v3:type_name -> Transaction.DeclareV3 + 12, // 9: Transaction.deploy:type_name -> Transaction.Deploy + 13, // 10: Transaction.deploy_account_v1:type_name -> Transaction.DeployAccountV1 + 14, // 11: Transaction.deploy_account_v3:type_name -> Transaction.DeployAccountV3 + 15, // 12: Transaction.invoke_v0:type_name -> Transaction.InvokeV0 + 16, // 13: Transaction.invoke_v1:type_name -> Transaction.InvokeV1 + 17, // 14: Transaction.invoke_v3:type_name -> Transaction.InvokeV3 + 18, // 15: Transaction.l1_handler:type_name -> Transaction.L1HandlerV0 + 20, // 16: Transaction.transaction_hash:type_name -> Hash + 3, // 17: TransactionWithReceipt.transaction:type_name -> Transaction + 21, // 18: TransactionWithReceipt.receipt:type_name -> Receipt + 22, // 19: TransactionsRequest.iteration:type_name -> Iteration + 4, // 20: TransactionsResponse.transaction_with_receipt:type_name -> TransactionWithReceipt + 23, // 21: TransactionsResponse.fin:type_name -> Fin + 3, // 22: Transactions.transactions:type_name -> Transaction + 24, // 23: Transaction.DeclareV0.sender:type_name -> Address + 19, // 24: Transaction.DeclareV0.max_fee:type_name -> Felt252 + 2, // 25: Transaction.DeclareV0.signature:type_name -> AccountSignature + 20, // 26: Transaction.DeclareV0.class_hash:type_name -> Hash + 24, // 27: Transaction.DeclareV1.sender:type_name -> Address + 19, // 28: Transaction.DeclareV1.max_fee:type_name -> Felt252 + 2, // 29: Transaction.DeclareV1.signature:type_name -> AccountSignature + 20, // 30: Transaction.DeclareV1.class_hash:type_name -> Hash + 19, // 31: Transaction.DeclareV1.nonce:type_name -> Felt252 + 24, // 32: Transaction.DeclareV2.sender:type_name -> Address + 19, // 33: Transaction.DeclareV2.max_fee:type_name -> Felt252 + 2, // 34: Transaction.DeclareV2.signature:type_name -> AccountSignature + 20, // 35: Transaction.DeclareV2.class_hash:type_name -> Hash + 19, // 36: Transaction.DeclareV2.nonce:type_name -> Felt252 + 20, // 37: Transaction.DeclareV2.compiled_class_hash:type_name -> Hash + 24, // 38: Transaction.DeclareV3.sender:type_name -> Address + 2, // 39: Transaction.DeclareV3.signature:type_name -> AccountSignature + 20, // 40: Transaction.DeclareV3.class_hash:type_name -> Hash + 19, // 41: Transaction.DeclareV3.nonce:type_name -> Felt252 + 20, // 42: Transaction.DeclareV3.compiled_class_hash:type_name -> Hash + 1, // 43: Transaction.DeclareV3.resource_bounds:type_name -> ResourceBounds + 19, // 44: Transaction.DeclareV3.paymaster_data:type_name -> Felt252 + 19, // 45: Transaction.DeclareV3.account_deployment_data:type_name -> Felt252 + 25, // 46: Transaction.DeclareV3.nonce_data_availability_mode:type_name -> VolitionDomain + 25, // 47: Transaction.DeclareV3.fee_data_availability_mode:type_name -> VolitionDomain + 20, // 48: Transaction.Deploy.class_hash:type_name -> Hash + 19, // 49: Transaction.Deploy.address_salt:type_name -> Felt252 + 19, // 50: Transaction.Deploy.calldata:type_name -> Felt252 + 19, // 51: Transaction.DeployAccountV1.max_fee:type_name -> Felt252 + 2, // 52: Transaction.DeployAccountV1.signature:type_name -> AccountSignature + 20, // 53: Transaction.DeployAccountV1.class_hash:type_name -> Hash + 19, // 54: Transaction.DeployAccountV1.nonce:type_name -> Felt252 + 19, // 55: Transaction.DeployAccountV1.address_salt:type_name -> Felt252 + 19, // 56: Transaction.DeployAccountV1.calldata:type_name -> Felt252 + 2, // 57: Transaction.DeployAccountV3.signature:type_name -> AccountSignature + 20, // 58: Transaction.DeployAccountV3.class_hash:type_name -> Hash + 19, // 59: Transaction.DeployAccountV3.nonce:type_name -> Felt252 + 19, // 60: Transaction.DeployAccountV3.address_salt:type_name -> Felt252 + 19, // 61: Transaction.DeployAccountV3.calldata:type_name -> Felt252 + 1, // 62: Transaction.DeployAccountV3.resource_bounds:type_name -> ResourceBounds + 19, // 63: Transaction.DeployAccountV3.paymaster_data:type_name -> Felt252 + 25, // 64: Transaction.DeployAccountV3.nonce_data_availability_mode:type_name -> VolitionDomain + 25, // 65: Transaction.DeployAccountV3.fee_data_availability_mode:type_name -> VolitionDomain + 19, // 66: Transaction.InvokeV0.max_fee:type_name -> Felt252 + 2, // 67: Transaction.InvokeV0.signature:type_name -> AccountSignature + 24, // 68: Transaction.InvokeV0.address:type_name -> Address + 19, // 69: Transaction.InvokeV0.entry_point_selector:type_name -> Felt252 + 19, // 70: Transaction.InvokeV0.calldata:type_name -> Felt252 + 24, // 71: Transaction.InvokeV1.sender:type_name -> Address + 19, // 72: Transaction.InvokeV1.max_fee:type_name -> Felt252 + 2, // 73: Transaction.InvokeV1.signature:type_name -> AccountSignature + 19, // 74: Transaction.InvokeV1.calldata:type_name -> Felt252 + 19, // 75: Transaction.InvokeV1.nonce:type_name -> Felt252 + 24, // 76: Transaction.InvokeV3.sender:type_name -> Address + 2, // 77: Transaction.InvokeV3.signature:type_name -> AccountSignature + 19, // 78: Transaction.InvokeV3.calldata:type_name -> Felt252 + 1, // 79: Transaction.InvokeV3.resource_bounds:type_name -> ResourceBounds + 19, // 80: Transaction.InvokeV3.paymaster_data:type_name -> Felt252 + 19, // 81: Transaction.InvokeV3.account_deployment_data:type_name -> Felt252 + 25, // 82: Transaction.InvokeV3.nonce_data_availability_mode:type_name -> VolitionDomain + 25, // 83: Transaction.InvokeV3.fee_data_availability_mode:type_name -> VolitionDomain + 19, // 84: Transaction.InvokeV3.nonce:type_name -> Felt252 + 19, // 85: Transaction.L1HandlerV0.nonce:type_name -> Felt252 + 24, // 86: Transaction.L1HandlerV0.address:type_name -> Address + 19, // 87: Transaction.L1HandlerV0.entry_point_selector:type_name -> Felt252 + 19, // 88: Transaction.L1HandlerV0.calldata:type_name -> Felt252 + 89, // [89:89] is the sub-list for method output_type + 89, // [89:89] is the sub-list for method input_type + 89, // [89:89] is the sub-list for extension type_name + 89, // [89:89] is the sub-list for extension extendee + 0, // [0:89] is the sub-list for field type_name +} + +func init() { file_p2p_proto_transaction_proto_init() } +func file_p2p_proto_transaction_proto_init() { + if File_p2p_proto_transaction_proto != nil { + return + } + file_p2p_proto_common_proto_init() + file_p2p_proto_receipt_proto_init() + if !protoimpl.UnsafeEnabled { + file_p2p_proto_transaction_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*ResourceLimits); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*ResourceBounds); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*AccountSignature); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*Transaction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*TransactionWithReceipt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*TransactionsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*TransactionsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*Transactions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_DeclareV0); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_DeclareV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_DeclareV2); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_DeclareV3); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_Deploy); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_DeployAccountV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_DeployAccountV3); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_InvokeV0); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_InvokeV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_InvokeV3); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_transaction_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*Transaction_L1HandlerV0); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_p2p_proto_transaction_proto_msgTypes[3].OneofWrappers = []any{ + (*Transaction_DeclareV0_)(nil), + (*Transaction_DeclareV1_)(nil), + (*Transaction_DeclareV2_)(nil), + (*Transaction_DeclareV3_)(nil), + (*Transaction_Deploy_)(nil), + (*Transaction_DeployAccountV1_)(nil), + (*Transaction_DeployAccountV3_)(nil), + (*Transaction_InvokeV0_)(nil), + (*Transaction_InvokeV1_)(nil), + (*Transaction_InvokeV3_)(nil), + (*Transaction_L1Handler)(nil), + } + file_p2p_proto_transaction_proto_msgTypes[6].OneofWrappers = []any{ + (*TransactionsResponse_TransactionWithReceipt)(nil), + (*TransactionsResponse_Fin)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_p2p_proto_transaction_proto_rawDesc, + NumEnums: 0, + NumMessages: 19, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_p2p_proto_transaction_proto_goTypes, + DependencyIndexes: file_p2p_proto_transaction_proto_depIdxs, + MessageInfos: file_p2p_proto_transaction_proto_msgTypes, + }.Build() + File_p2p_proto_transaction_proto = out.File + file_p2p_proto_transaction_proto_rawDesc = nil + file_p2p_proto_transaction_proto_goTypes = nil + file_p2p_proto_transaction_proto_depIdxs = nil +} diff --git a/protocol/p2p/utils/utils.go b/protocol/p2p/utils/utils.go new file mode 100644 index 00000000..e0bb763d --- /dev/null +++ b/protocol/p2p/utils/utils.go @@ -0,0 +1,76 @@ +package utils + +import ( + "fmt" +) + +type Network struct { + Name string `json:"name" validate:"required"` +} + +const ( + Kilobyte = 1024 + Megabyte = 1024 * Kilobyte + Gigabyte = 1024 * Megabyte + Terabyte = 1024 * Gigabyte +) + +type SimpleLogger interface { + Debugw(msg string, keysAndValues ...any) + Infow(msg string, keysAndValues ...any) + Warnw(msg string, keysAndValues ...any) + Errorw(msg string, keysAndValues ...any) + Tracew(msg string, keysAndValues ...any) +} + +type TestLogger func(format string, args ...interface{}) + +type TestSimpleLogger struct { + Logger TestLogger +} + +func (l *TestSimpleLogger) log(level, msg string, keysAndValues ...interface{}) { + if len(keysAndValues) == 0 { + l.Logger("%s: %s", level, msg) + return + } + + logMsg := fmt.Sprintf("%s: %s", level, msg) + for i := 0; i < len(keysAndValues); i += 2 { + key := fmt.Sprintf("%v", keysAndValues[i]) + var value interface{} = "MISSING" + if i+1 < len(keysAndValues) { + value = keysAndValues[i+1] + } + logMsg += fmt.Sprintf(" %s=%v", key, value) + } + + l.Logger("%s", logMsg) +} + +func (l *TestSimpleLogger) Logf(format string, args ...interface{}) { + msg := fmt.Sprintf(format, args...) + l.Logger("INFO: %s", msg) +} + +func (l *TestSimpleLogger) Debugw(msg string, keysAndValues ...any) { + l.log("DEBUG", msg, keysAndValues...) +} + +func (l *TestSimpleLogger) Infow(msg string, keysAndValues ...any) { + l.log("INFO", msg, keysAndValues...) +} + +func (l *TestSimpleLogger) Warnw(msg string, keysAndValues ...any) { + l.log("WARN", msg, keysAndValues...) +} + +func (l *TestSimpleLogger) Errorw(msg string, keysAndValues ...any) { + l.log("ERROR", msg, keysAndValues...) +} + +func (l *TestSimpleLogger) Tracew(msg string, keysAndValues ...any) { + l.log("TRACE", msg, keysAndValues...) +} + +var _ SimpleLogger = (*TestSimpleLogger)(nil)