diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8b5869c15..5e360f442a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,12 +7,6 @@ on: - release/* merge_group: pull_request: - branches: - - "*" - types: - - synchronize - - opened - - reopened concurrency: group: pr-testing-${{ github.head_ref || github.run_id }} @@ -28,8 +22,6 @@ jobs: build-and-test: runs-on: ubuntu-20.04 timeout-minutes: 15 - concurrency: - group: "build-and-test" steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 5ac6412bac..0056022622 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -6,8 +6,6 @@ on: - develop - release/* pull_request: - branches: - - "*" merge_group: schedule: # run at 6AM UTC Daily diff --git a/.github/workflows/sast-linters.yml b/.github/workflows/sast-linters.yml index 270e9cffc6..26c8fb895d 100644 --- a/.github/workflows/sast-linters.yml +++ b/.github/workflows/sast-linters.yml @@ -8,9 +8,6 @@ on: - "*" merge_group: pull_request: - types: - - opened - - synchronize concurrency: group: linters-${{ github.head_ref || github.run_id }} diff --git a/Dockerfile-localnet b/Dockerfile-localnet index efd2ac8b4f..5f42abeb6e 100644 --- a/Dockerfile-localnet +++ b/Dockerfile-localnet @@ -1,5 +1,5 @@ -# syntax=docker/dockerfile:1.7-labs -FROM golang:1.22.5-bookworm AS base-build +# syntax=ghcr.io/zeta-chain/docker-dockerfile:1.7-labs +FROM ghcr.io/zeta-chain/golang:1.22.5-bookworm AS base-build ENV GOPATH /go ENV GOOS=linux @@ -22,10 +22,10 @@ COPY --exclude=*.sh --exclude=*.md --exclude=*.yml . . RUN --mount=type=cache,target="/root/.cache/go-build" make install RUN --mount=type=cache,target="/root/.cache/go-build" make install-zetae2e -FROM golang:1.22.5-bookworm AS cosmovisor-build +FROM ghcr.io/zeta-chain/golang:1.22.5-bookworm AS cosmovisor-build RUN go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.5.0 -FROM golang:1.22.5-bookworm AS base-runtime +FROM ghcr.io/zeta-chain/golang:1.22.5-bookworm AS base-runtime RUN apt update && \ apt install -yq jq yq curl tmux python3 openssh-server iputils-ping iproute2 bind9-host && \ @@ -46,6 +46,7 @@ ENV PATH /root/.zetacored/cosmovisor/current/bin/:/root/.zetaclientd/upgrades/cu COPY contrib/localnet/scripts /root COPY contrib/localnet/ssh_config /etc/ssh/ssh_config.d/localnet.conf COPY contrib/localnet/zetacored /root/zetacored +COPY contrib/localnet/preparams /root/static-preparams COPY cmd/zetae2e/config/localnet.yml /root/config.yml RUN chmod 755 /root/*.sh && \ diff --git a/Makefile b/Makefile index 32d536869b..f5ee441cad 100644 --- a/Makefile +++ b/Makefile @@ -249,7 +249,7 @@ start-e2e-admin-test: zetanode start-e2e-performance-test: zetanode @echo "--> Starting e2e performance test" export E2E_ARGS="--test-performance" && \ - cd contrib/localnet/ && $(DOCKER_COMPOSE) -f docker-compose.yml up -d + cd contrib/localnet/ && $(DOCKER_COMPOSE) --profile stress -f docker-compose.yml up -d start-e2e-import-mainnet-test: zetanode @echo "--> Starting e2e import-data test" diff --git a/changelog.md b/changelog.md index d00533e4c7..ae097c3163 100644 --- a/changelog.md +++ b/changelog.md @@ -2,11 +2,16 @@ ## Unreleased +### Features + +* [2578](https://github.com/zeta-chain/node/pull/2578) - Add Gateway address in protocol contract list + ## v19.0.0 ### Breaking Changes * [2460](https://github.com/zeta-chain/node/pull/2460) - Upgrade to go 1.22. This required us to temporarily remove the QUIC backend from [go-libp2p](https://github.com/libp2p/go-libp2p). If you are a zetaclient operator and have configured quic peers, you need to switch to tcp peers. +* [List of the other breaking changes can be found in this document](docs/releases/v19_breaking_changes.md) ### Features @@ -38,6 +43,7 @@ * [2518](https://github.com/zeta-chain/node/pull/2518) - add support for Solana address in zetacore * [2483](https://github.com/zeta-chain/node/pull/2483) - add priorityFee (gasTipCap) gas to the state * [2567](https://github.com/zeta-chain/node/pull/2567) - add sign latency metric to zetaclient (zetaclient_sign_latency) +* [2524](https://github.com/zeta-chain/node/pull/2524) - add inscription envolop parsing ### Refactor @@ -584,4 +590,4 @@ Getting the correct TSS address for Bitcoin now requires proviidng the Bitcoin c ### CI * [1218](https://github.com/zeta-chain/node/pull/1218) - cross-compile release binaries and simplify PR testings -* [1302](https://github.com/zeta-chain/node/pull/1302) - add mainnet builds to goreleaser \ No newline at end of file +* [1302](https://github.com/zeta-chain/node/pull/1302) - add mainnet builds to goreleaser diff --git a/cmd/zetae2e/config/clients.go b/cmd/zetae2e/config/clients.go index b6ee7d5fb4..e70f2c566a 100644 --- a/cmd/zetae2e/config/clients.go +++ b/cmd/zetae2e/config/clients.go @@ -58,12 +58,11 @@ func getClientsFromConfig(ctx context.Context, conf config.Config, account confi E2EClients, error, ) { - if conf.RPCs.Solana == "" { - return E2EClients{}, fmt.Errorf("solana rpc is empty") - } - solanaClient := rpc.New(conf.RPCs.Solana) - if solanaClient == nil { - return E2EClients{}, fmt.Errorf("failed to get solana client") + var solanaClient *rpc.Client + if conf.RPCs.Solana != "" { + if solanaClient = rpc.New(conf.RPCs.Solana); solanaClient == nil { + return E2EClients{}, fmt.Errorf("failed to get solana client") + } } btcRPCClient, err := getBtcClient(conf.RPCs.Bitcoin) if err != nil { diff --git a/cmd/zetae2e/config/local.yml b/cmd/zetae2e/config/local.yml index f4aa45599c..54534124bd 100644 --- a/cmd/zetae2e/config/local.yml +++ b/cmd/zetae2e/config/local.yml @@ -4,17 +4,18 @@ default_account: evm_address: "0xE5C5367B8224807Ac2207d350E60e1b6F27a7ecC" private_key: "d87baf7bf6dc560a252596678c12e41f7d1682837f05b29d411bc3f78ae2c263" rpcs: - zevm: "http://0.0.0.0:9545" - evm: "http://0.0.0.0:8545" + zevm: "http://localhost:9545" + evm: "http://localhost:8545" bitcoin: - host: "0.0.0.0:18443" + host: "localhost:18443" user: "smoketest" pass: "123" http_post_mode: true disable_tls: true params: regnet - zetacore_grpc: "0.0.0.0:9090" - zetacore_rpc: "http://0.0.0.0:26657" + zetacore_grpc: "localhost:9090" + zetacore_rpc: "http://localhost:26657" + solana: "http://solana:8899" contracts: zevm: system_contract: "0x91d18e54DAf4F677cB28167158d6dd21F6aB3921" diff --git a/cmd/zetae2e/local/local.go b/cmd/zetae2e/local/local.go index 800032d400..52de24d2eb 100644 --- a/cmd/zetae2e/local/local.go +++ b/cmd/zetae2e/local/local.go @@ -326,6 +326,10 @@ func localE2ETest(cmd *cobra.Command, _ []string) { eg.Go(miscTestRoutine(conf, deployerRunner, verbose, e2etests.TestMyTestName)) } if testSolana { + if deployerRunner.SolanaClient == nil { + logger.Print("❌ solana client is nil, maybe solana rpc is not set") + os.Exit(1) + } eg.Go(solanaTestRoutine(conf, deployerRunner, verbose, e2etests.TestSolanaDepositName)) } if testV2 { diff --git a/cmd/zetae2e/local/performance.go b/cmd/zetae2e/local/performance.go index 4039084550..d6ad06b29e 100644 --- a/cmd/zetae2e/local/performance.go +++ b/cmd/zetae2e/local/performance.go @@ -75,6 +75,13 @@ func ethereumWithdrawPerformanceRoutine( return err } + if r.ReceiptTimeout == 0 { + r.ReceiptTimeout = 15 * time.Minute + } + if r.CctxTimeout == 0 { + r.CctxTimeout = 15 * time.Minute + } + r.Logger.Print("🏃 starting Ethereum withdraw performance tests") startTime := time.Now() diff --git a/cmd/zetae2e/local/test_runner.go b/cmd/zetae2e/local/test_runner.go index 198260c05c..14a6ba28fe 100644 --- a/cmd/zetae2e/local/test_runner.go +++ b/cmd/zetae2e/local/test_runner.go @@ -30,6 +30,10 @@ func initTestRunner( return nil, err } + // copy timeouts from deployer runner + testRunner.CctxTimeout = deployerRunner.ReceiptTimeout + testRunner.ReceiptTimeout = deployerRunner.ReceiptTimeout + // copy contracts from deployer runner if err := testRunner.CopyAddressesFrom(deployerRunner); err != nil { return nil, err diff --git a/contrib/localnet/docker-compose.yml b/contrib/localnet/docker-compose.yml index 6eece58fce..58f8346f82 100644 --- a/contrib/localnet/docker-compose.yml +++ b/contrib/localnet/docker-compose.yml @@ -9,6 +9,8 @@ # - An orchestrator to manage interaction with the localnet (orchestrator) # - An upgrade host to serve binaries for the upgrade tests (upgrade-host). Only enabled when profile is set to upgrade. # - An upgrade orchestrator to send the upgrade governance proposal (upgrade-orchestrator). Only enabled when profile is set to upgrade. +# +# If you are using third party images in CI, you should copy them into ghcr via https://github.com/zeta-chain/copy-docker-images networks: mynetwork: @@ -181,7 +183,7 @@ services: - preparams:/root/preparams eth: - image: ethereum/client-go:v1.10.26 + image: ghcr.io/zeta-chain/ethereum-client-go:v1.10.26 container_name: eth hostname: eth ports: @@ -207,7 +209,7 @@ services: ipv4_address: 172.20.0.102 bitcoin: - image: ruimarinho/bitcoin-core:22 # version 23 is not working with btcd 0.22.0 due to change in createwallet rpc + image: ghcr.io/zeta-chain/ruimarinho-bitcoin-core:22 # version 23 is not working with btcd 0.22.0 due to change in createwallet rpc container_name: bitcoin hostname: bitcoin networks: diff --git a/contrib/localnet/orchestrator/Dockerfile.fastbuild b/contrib/localnet/orchestrator/Dockerfile.fastbuild index 96f437ed30..c48b8f92b6 100644 --- a/contrib/localnet/orchestrator/Dockerfile.fastbuild +++ b/contrib/localnet/orchestrator/Dockerfile.fastbuild @@ -1,6 +1,6 @@ FROM zetanode:latest as zeta -FROM ethereum/client-go:v1.10.26 as geth -FROM golang:1.20.14-bookworm as orchestrator +FROM ghcr.io/zeta-chain/ethereum-client-go:v1.10.26 as geth +FROM ghcr.io/zeta-chain/golang:1.22.5-bookworm as orchestrator RUN apt update && \ apt install -yq jq yq curl tmux python3 openssh-server iputils-ping iproute2 && \ diff --git a/contrib/localnet/preparams/zetaclient0.json b/contrib/localnet/preparams/zetaclient0.json new file mode 100644 index 0000000000..9dc290e82a --- /dev/null +++ b/contrib/localnet/preparams/zetaclient0.json @@ -0,0 +1 @@ +{"PaillierSK":{"N":19999163952130747960789760351783788437756051987951355569970036401244501934315272438705577988944467922102492970155408252851533852794097112218266886553586076347804115557757017279985449126837870194546917950194158856088817869376589018796114667864086028598566847973861695589083004303196605694312963960967331453606698750471421102641235873021677307589731091486775521460999458082171513731685071918681293270385071153104334613903503586831444874346531652054016464538970392294909014876824634633871501554184148693655829401315639013286485392467863637678737554558389111485917683916225530045382764297294039119124600051351150814211249,"LambdaN":9999581976065373980394880175891894218878025993975677784985018200622250967157636219352788994472233961051246485077704126425766926397048556109133443276793038173902057778878508639992724563418935097273458975097079428044408934688294509398057333932043014299283423986930847794541502151598302847156481980483665726803207844439805564908826908299383131049732286281017413122919529611290634931314211468373848862938241694978602167585393762136625122435580962508878486729843009777923588471302593033407043805894076580681612304239013813560948585228383852537633607722118782082256871296347729191161115127804109535019576521175406883452282,"PhiN":19999163952130747960789760351783788437756051987951355569970036401244501934315272438705577988944467922102492970155408252851533852794097112218266886553586076347804115557757017279985449126837870194546917950194158856088817869376589018796114667864086028598566847973861695589083004303196605694312963960967331453606415688879611129817653816598766262099464572562034826245839059222581269862628422936747697725876483389957204335170787524273250244871161925017756973459686019555847176942605186066814087611788153161363224608478027627121897170456767705075267215444237564164513742592695458382322230255608219070039153042350813766904564},"NTildei":27751913785731317561401314588152253217728532341018033146570952349857948266439815804220817588815467446516307716665513549241775208783937988610417256936545867146994706743041371293345131680171448151086694170309671283486292778243426639412725044938992517873701725006330137070569134489394538234586796972674797327961558527707455425675762370744764931280145514019295136133284528084915871623701598565821330577968131284073671734400158797160800982150954634593880871530904229027402996176777363730066986245815341196905861357768072141609870245229405943812356754513322852513347434681734563805660510650984453048567481135942146732097813,"H1i":27561956258855841139395484606566450906572976054374340673395795572404700162978995778059515299485228139352425772962548084873215102616280128304708426026182349406021553685331715999823302504724574932475811252902805356309567749243825500782237349965272997278195732138043060594209278009387869413139123717258217760369558773026393837335151469655513584729163915760124835545159150578571574024242102852384898501031964398164508802427280019310461284676702762930983763592670681066746406519089087470866348555388978893174745329039290345402036056193885195412683078301439714912339014313158992229100758385774991450029591789628252080327559,"H2i":3728689158497086873141839685259803753136983319082693856963169726229733672131113136177490814524417255268612620467671366860707614533735757821359190975354246119660178366078082228715114521844446138293061922109534401626012196214235577165710689292018952534202208597250579673907469566293203565367500274532873330046549157395771416744602137701132458921345439713375591947533341059776041205066197520027367159385233699483111938755605800865028185017605864002287172205806900860500164647247828301974000635262077178937664668984154402040254899639546189675216600248280397892382489630326684820331235755629614367050680421011963919488203,"Alpha":12023422531214934687129519427336751009035984170561091401995316889932876861127740921311384022403289655727852687123651207179666808127441651093217171624401095992093222930319273470697036100721360499771918420525219595960686726656705243231703751035078246024613303037202379961560592763983837502239948740870420991159486603826605562036000339449263579950064527369636354957917745420111193837730149039024242588057472210146671375468285242828724250764829561800066210708917523476384078739610379308948169897901580561000198663019628193284829226489567395610248716149143318042255879731755585576865932443849122426445714440683236201534278,"Beta":5216977155731439778993461291447860640876449566364806008925260703987381460229691893122780873808995223223163744678138135687392695130955126431701144250850716493320323144762645954407840190267536639011747593827794567732053411766358287215370001772078774800656600220349293422391251849464836894526916992757090542649120892603149475768335549307299570724464502418555347605473575788163359985939167794314377636554352661162839551390523751777303683251484579852979700993668013952132183651009302732527581967714766865349243790338837470546064122938436752503268419712265039843732584942630907069295257952472051299690267622482814099402925,"P":88381187817350292364427405327147330703367287364982016684112982632296448146824918798880619726847439553397534386831375002209019191421648634648182506013318106307619159619988111117766095040541079223450318951393068166232842380382197780515682551401156068869281037660390394768227141311012971150741063274439667450459,"Q":78500624598652662628885184600358941803683076507070394222241292020467077683298789581328374906370256776628646773897006681776229150698724417192594456702517705509422164083826765704615434585654776671817770799114758241307176860136745886869834508666912875775642490370066102181451552981996440342363450244264823933513} diff --git a/contrib/localnet/preparams/zetaclient1.json b/contrib/localnet/preparams/zetaclient1.json new file mode 100644 index 0000000000..2be1ed2553 --- /dev/null +++ b/contrib/localnet/preparams/zetaclient1.json @@ -0,0 +1 @@ +{"PaillierSK":{"N":25457323703460371644373827851778353435908685545536291211414305927928082101422802375380956856518622585962127533562602337812505686541014270487215858975042050235822544248116017505877597933410473464293488133847473268207855779565258437349543414395202677572215574814178481625691319056806051001296935063337564959613946853301319882243101806634616304952340762437957311109361139537003343727266144726020980226387527399976767399929714573852847006597083854380782298222809663705175454809775894834259259463209475055228451410224743854216982482304542678812902450978087467239914333938758325149969031218172033710990345090457725286155369,"LambdaN":12728661851730185822186913925889176717954342772768145605707152963964041050711401187690478428259311292981063766781301168906252843270507135243607929487521025117911272124058008752938798966705236732146744066923736634103927889782629218674771707197601338786107787407089240812845659528403025500648467531668782479806813742728801761583826250346152597916461665330341417210865403249207688068024511779741700862572325893119988056196796737754342005501326839164137901466935886175203187779468543295518513474790300431685405399522582870280178201647350255071127607420848021324546760642117122537154772656918409371952846795161211096663722,"PhiN":25457323703460371644373827851778353435908685545536291211414305927928082101422802375380956856518622585962127533562602337812505686541014270487215858975042050235822544248116017505877597933410473464293488133847473268207855779565258437349543414395202677572215574814178481625691319056806051001296935063337564959613627485457603523167652500692305195832923330660682834421730806498415376136049023559483401725144651786239976112393593475508684011002653678328275802933871772350406375558937086591037026949580600863370810799045165740560356403294700510142255214841696042649093521284234245074309545313836818743905693590322422193327444},"NTildei":31003307508440219158999589043691487475214403045663899026562678761033723312134301775994380397340895347768030057673125775357231348422303424896353372086256383810227518020752599051565951084967114983497141943098598166478211002761519017923016106288584503911326974632855330677820271330604647920436680600523891654973049735964884221470375561066575855880397950409200861685776119732740086942459996794425002691495469612824702455527096404118964381427191733411202093448946116508668456394085348340248206727068840446659229676204271387087603945932130347573000387228525030313172082417029388909317895370107946248250389259192939259646373,"H1i":29730781813111470699934807288606362535555403609772197456284708278048318668560878554383640323066445987663910908767622165095208826200954479561618790257205915675265313818311406127354779480712133033757720117675176405209288959380537060324636594245427706556416191726066471708498586277817285426928723609835008292084080538753201459376063902969706701667490664316841101595224876802504424746310838127241020823651213324579929066785699769578466699967727020306527057185084909523713197830576987072076454405267486608354440156452125172049093160628840221888272116013199116569214013996185637140923602034201009095696719910965705509595628,"H2i":12200384646752241579976259232098382970354307093774030710374960853644929313996225667617076305138824200773395277988919040236132937185396549369542935161875239756505104586544650297790923215288275058570897362869526446130788732811419766964967017276835348423627008837126215741085123016383332325940852408958853934412660510399824892196781693463027372430631217410650810103238763962451284514557282305008205599104191305801679939664630511491104063421807413639454177358852485226094888248161852164965603640486367659690376830772115600055051084107277861489152742292666390189224297716658768411431609911050704684657056556256880423460720,"Alpha":23300332876750103251237227048574590447379913613801272532510124473429290803423083502519971525286552461123759545660655175778475870822505963454261353216519202487193991965727706655186149989210433307949335555781095473402129935487138335217727216010693458515412245634171842581789827295651289821360488007487964832106572899411501524661082029651405344976795845601445316988216903250571350759750576439029949066040378122825697646020303266281537414096152018885734405360710523281142001267367333050504719641543727352974857213863243815562886691272109948010274169422250246450363769598849743993620978664009452648618822005892530117258331,"Beta":2534166047927725318791824172960116917843552215198638103113341163149480377420794251969714143317821379007540482042224193838130003513451297431890471730220885012611873831522777203112446040094780679969632641496751708336325873664082610525199122457113594337055192019447867932328462775220808663006226587292783781575807764223231652099385754554392612251410033887803313530798155833464721706318951078993085347388584140925234192526386132621123852980528239207267316340547156121756913368570362018641312552624302645212896157759221578143866925272746510890569411763813137743560164449226748489921792886205456032275022834591087160894226,"P":87684154738782061313086116044988283754424865443628906617900867296710397990202299345969131805991045014484552915164110726741382733873591202211268387486059703034486515933653465335272146440122553059167795953572936286393083071233554350198604012555120691245736319562861114254514671981751300817893308115225453100769,"Q":88394840552439295667689495221446852363776378041526739827159374682867725531676627667306940267946516555020832447263729538790333494892600936388335911397214533753404105427634220284214242509326156781414204453275659894960381505509021581782161299618850107279147574642362786241754680954729961565957066332054718790203} diff --git a/contrib/localnet/preparams/zetaclient2.json b/contrib/localnet/preparams/zetaclient2.json new file mode 100644 index 0000000000..7955735dc1 --- /dev/null +++ b/contrib/localnet/preparams/zetaclient2.json @@ -0,0 +1 @@ +{"PaillierSK":{"N":23648858955628625457588191386772191443876742421598853948139232115864334590574691090640780364052098584804033205998934169972985598877888287109862320756007213360367211635180623187433217993315211785379304492894323205990488699772149185296963160049456079775393087510342535015098614767311641505579391240770657817635322767929367419584708250343517714707329894363543882421347285382182675118149379718255888348980116939188466774508869818256355305106906160413809967400001118506856318482612747726688234325163812279115000009774919103223049606824994548277772462468827762522318241588067162028257230107577505173237765396246221822329481,"LambdaN":11824429477814312728794095693386095721938371210799426974069616057932167295287345545320390182026049292402016602999467084986492799438944143554931160378003606680183605817590311593716608996657605892689652246447161602995244349886074592648481580024728039887696543755171267507549307383655820752789695620385328908817506628925259155914651064163582274420481622848370823424744709093489084769514819892448481550857731547678219597804001699813599162782662449929749800268252229695789995326315691669007496785216103492408107371530474677606211364074642844133605350010952361161551686115251857512495194405949462158178250652595226119566626,"PhiN":23648858955628625457588191386772191443876742421598853948139232115864334590574691090640780364052098584804033205998934169972985598877888287109862320756007213360367211635180623187433217993315211785379304492894323205990488699772149185296963160049456079775393087510342535015098614767311641505579391240770657817635013257850518311829302128327164548840963245696741646849489418186978169539029639784896963101715463095356439195608003399627198325565324899859499600536504459391579990652631383338014993570432206984816214743060949355212422728149285688267210700021904722323103372230503715024990388811898924316356501305190452239133252},"NTildei":20958522297622482209807759516857687110666693723708307621411395827112192841625205279619780886454329904672254793741201452279600512072929362962340097925181757382133759418398620446989633648738416137994839114584228498763290794293804873491121222670445591900962355888888787875296912853045868588243030176162136939975493385203754811297318997026852191940348618189391652417765667767789106438385230992014424674147889477543437303185992233113994545932642444624948922266541050077971406838334630911259578342037102813364914579164261765823363786889015670104597548538194888464478764027297358349252027521566202538317074702040651632113369,"H1i":5109689099868080446160536255769086332567584927184079439787252270096934236613063255201492544124078902906922503306802121090945560238061120571827553794939932252483206581418021765834430579158012299196878969664308905784947890460405399350349444965894778432384696983001011507880344123705964748574014787390377088881157801740216761481891319913296696524807305643822589206391062602348094175161618070295545114266090714478357141494900596315028405682549679497842106376522837435982709104269696765081172208291259963576432173631469456218471678349286179009205561253446217331889023689880316550109752582816906322747212721617014078333138,"H2i":3824094184703589453276072977703627898610439188014373704777672006240826452074712760308340661359963853738198889389767384577056780875329696683392749021178110545327383952784611702230265307890522393962865182170693326682264121125865915032459888970016362380638793056377490334414109711097183685934105072079174895304506983836308389011663151742344838079170762079122663752419646132355686592709382550940831039596241010756053305442994265928016068485619118864155581724408186051271157659621166113194851410749340272112783780933544348278427775177581314927650507829781537821055940573071178206205843750318246773270418273122284099764678,"Alpha":403358987071588456201445672364843658921586724121591094963899038063303191751684899828027834117123229987962370900405566219864220515579304055898682870316774771141115539367865452501031859537600117114290142996496082111091916314732610135214072170151317308415046500958631818792757910046052760485773723705194675596064908926299174260868997561490397578616761630440050560787151182933005614199833735249247518905154781257307105310390455987737879040823843796323035981084555921630829282547953008250113460599903536129806875829695842519521316369104540028197556524157183195492086739949682819803768730850297218913144185901216901423419,"Beta":365593763336023365651425993423868835916263375013196585172088021197430706277717007452044647976197718410568417901726431212606021826797635994384253312159748273620290235507109723473802025667352948946670717835457232457793541707269707116648767380223383310273764429997673315078013487640110706559049315579176007267011150621914976556333527177780449583799863102148551856664514489404903925699364546632948110887000853454606426216661835156917846539208349124891487776807592183247253398088838610313577557335903243666040353501272443723046605683212468747172714752925390623509936367693809844146568853425426878137100970535159499255568,"P":72250205107385728156329780940876331268051742941970649262434617603343421972939482214146481747484014300599578219593928276536716725180587786673096406714005410102035731106919659107120120270212449699635561797272106831611132732196041827234221287077092396443212393838006775297650940214899374861536677833667983621603,"Q":72520632524405150441595016039887651929144579330692004442054916915653308278013716662619960235531861873166954938997698512177747111307625256091349945377725166180916919387515785018482666596395621922749892453442563274493438865445735819893995561495078491272413437716547842889768483771151828143360239365405744372783} diff --git a/contrib/localnet/preparams/zetaclient3.json b/contrib/localnet/preparams/zetaclient3.json new file mode 100644 index 0000000000..3cfa9be2a7 --- /dev/null +++ b/contrib/localnet/preparams/zetaclient3.json @@ -0,0 +1 @@ +{"PaillierSK":{"N":21753876306313815662588087039028514382826507798262041565902982806598174060469097304541769885763567428569530242034784232534000696169566980243136350627321146541314127885595489732478871033716592343016075435355452122330767977189004353149496260058858637827462582953226377377659039596608777957973290653888979312920516554149814758278574414666158545079307795218785130744154819102117749705840919310233856024520311820547272832486043896206931451943387797560883049383529868580367685685667196368085217651446433183323600608631264268025783455791952811957057630970739868642990024755288382191995930905807002633988201926774239462262601,"LambdaN":10876938153156907831294043519514257191413253899131020782951491403299087030234548652270884942881783714284765121017392116267000348084783490121568175313660573270657063942797744866239435516858296171508037717677726061165383988594502176574748130029429318913731291476613188688829519798304388978986645326944489656460110567222973853734418516092625468876723818678420926419419038507872285530310975332277922153028444244552066616246840208866669648004652879786193866998335160025681466314303608286858794222172905559482726315419134488147799899255152223254681124623491783997493259204421076666735359395687821517231815240385222028516706,"PhiN":21753876306313815662588087039028514382826507798262041565902982806598174060469097304541769885763567428569530242034784232534000696169566980243136350627321146541314127885595489732478871033716592343016075435355452122330767977189004353149496260058858637827462582953226377377659039596608777957973290653888979312920221134445947707468837032185250937753447637356841852838838077015744571060621950664555844306056888489104133232493680417733339296009305759572387733996670320051362932628607216573717588444345811118965452630838268976295599798510304446509362249246983567994986518408842153333470718791375643034463630480770444057033412},"NTildei":24260621986934894124969626367616403625603412702532002793121737944600176849805061756998659622098747633924983257636203479042941916674820080278941139538793022232716179815287034195757809070912379799103788701974622563609519122438590772247917596836793969732152576871644869184772033475586612250574291175350822764453884774010926809961467205367406634969476374658022638594216262398768738269792831286288931218400288108551775499661163834400386584616198454691751318919072772453881485047104474360900316622333122856356800266473799554384305361515179743611863294120021586909294906491469377626385894574710621086408276892189722577506849,"H1i":5765471406001060781321577178558603443522764461801649228644482501928615351943828726647067613407291931938456196029819131958433921811834519383439615652125566062108517595254434202585520725918458539650829611359906765649588876933069244900503743779957722205401652112799388769959315574963861799346623992179296812259108512120682902363605777290798387279703060866846190527558754540944004025669889182402130711051994547424947465848311097872058264068264847883302814930546814509196138468589465110378896941398104531133441169885749142287817235614162212537129367684226889834353016992347371767689577099973152384856154921470842340609440,"H2i":13248076109800665469593810622719225502034768318277483018263693642187250618832552829080364379294987051479503793767958094397864222449722505944252701999223425055634923926237370470982156904748484641055882829739274419766142360133464208567250462282877978030879964096066657152108997164557232745990125568297265347801334911454843872417470925322427408725733589015190657409390596754236317010520232686262328847585710830812639495417877966446490298931635599170573064212526961050707936186722270771009657726606965398426725913421261248838826460745873909371448250697598806763783080833425863062403039913803567383221386972419419382976826,"Alpha":18462405526887919865545155849471766186599587820278228502134585515184526131150630703061956418002947703995062977027748808417033945513306979470746255795774997923957337702604617215611885646144358621346101126449123083330067178276213967454833418565658278757978219923186764710442221649754942924977610640847987230019839733787728557189291779267774518176250222724619645559678442357085927681807757055805549792941365193910082816045554295507286321570914925968892626033251553365817524206817760323640196878009227545160591446053818315974810547625672619543716071058287058884144816630763414174708650897710662822999640645173800018653221,"Beta":1429913922854495484075164077172231537041798673392692054168381388920937923051472026736600648681839975302763780951378731902324765131763911908568833503423773456149523938164072252282486164059731813002194341978761252717289831153831286393667796900316723580171967625417278152306356668052770617502747079397572606559275307222452666125825842415793107024193944337960680527312794164583189658388348765076298799696009572118455188779414852680237339024760719259079238031237542103736413560790515107480231245162701093410860792468523251918769151182358823233381431993231319450443741382536143710728710355878800739118210773121451375904013,"P":72198038811472636386819145284002882962985025633289600640684386221873161724939238359793709956852317052085086520668678160660824485742685496099068043857977938326882557402973989895480775128070314428066843983321552127922793878258934593560477986131553237785383592836252607797792226456757856580055145941688232468861,"Q":84007205688389688038268246876633594660472993846606243250776906606448406376486738741891900213586069402455906606766420548280187082244432211112119353536676511843676678178417693927680436975944782140020243974926366756213564009523117668835831522979261286060994164078613742602246511159941849840256385604289986923081} diff --git a/contrib/localnet/scripts/start-zetaclientd.sh b/contrib/localnet/scripts/start-zetaclientd.sh index fea6b69779..9250385853 100755 --- a/contrib/localnet/scripts/start-zetaclientd.sh +++ b/contrib/localnet/scripts/start-zetaclientd.sh @@ -14,11 +14,16 @@ set_sepolia_endpoint() { jq '.EVMChainConfigs."11155111".Endpoint = "http://eth2:8545"' /root/.zetacored/config/zetaclient_config.json > tmp.json && mv tmp.json /root/.zetacored/config/zetaclient_config.json } -# generate pre-params as early as possible -# to reach keygen height on schedule PREPARAMS_PATH="/root/preparams/${HOSTNAME}.json" -if [ ! -f "$PREPARAMS_PATH" ]; then - zetaclientd gen-pre-params "$PREPARAMS_PATH" +if [[ -n "${ZETACLIENTD_GEN_PREPARAMS}" ]]; then + # generate pre-params as early as possible + # to reach keygen height on schedule + if [ ! -f "$PREPARAMS_PATH" ]; then + zetaclientd gen-pre-params "$PREPARAMS_PATH" + fi +else + echo "Using static preparams" + cp "/root/static-preparams/${HOSTNAME}.json" "${PREPARAMS_PATH}" fi # Wait for authorized_keys file to exist (generated by zetacore0) diff --git a/docs/cli/zetacored/zetacored_tx_fungible.md b/docs/cli/zetacored/zetacored_tx_fungible.md index 3a54cf4315..9e03fd6dd5 100644 --- a/docs/cli/zetacored/zetacored_tx_fungible.md +++ b/docs/cli/zetacored/zetacored_tx_fungible.md @@ -32,6 +32,7 @@ zetacored tx fungible [flags] * [zetacored tx fungible remove-foreign-coin](zetacored_tx_fungible_remove-foreign-coin.md) - Broadcast message RemoveForeignCoin * [zetacored tx fungible unpause-zrc20](zetacored_tx_fungible_unpause-zrc20.md) - Broadcast message UnpauseZRC20 * [zetacored tx fungible update-contract-bytecode](zetacored_tx_fungible_update-contract-bytecode.md) - Broadcast message UpdateContractBytecode +* [zetacored tx fungible update-gateway-contract](zetacored_tx_fungible_update-gateway-contract.md) - Broadcast message UpdateGatewayContract to update the gateway contract address * [zetacored tx fungible update-system-contract](zetacored_tx_fungible_update-system-contract.md) - Broadcast message UpdateSystemContract * [zetacored tx fungible update-zrc20-liquidity-cap](zetacored_tx_fungible_update-zrc20-liquidity-cap.md) - Broadcast message UpdateZRC20LiquidityCap * [zetacored tx fungible update-zrc20-withdraw-fee](zetacored_tx_fungible_update-zrc20-withdraw-fee.md) - Broadcast message UpdateZRC20WithdrawFee diff --git a/docs/cli/zetacored/zetacored_tx_fungible_update-gateway-contract.md b/docs/cli/zetacored/zetacored_tx_fungible_update-gateway-contract.md new file mode 100644 index 0000000000..d75877c440 --- /dev/null +++ b/docs/cli/zetacored/zetacored_tx_fungible_update-gateway-contract.md @@ -0,0 +1,53 @@ +# tx fungible update-gateway-contract + +Broadcast message UpdateGatewayContract to update the gateway contract address + +``` +zetacored tx fungible update-gateway-contract [contract-address] [flags] +``` + +### Options + +``` + -a, --account-number uint The account number of the signing account (offline mode only) + --aux Generate aux signer data instead of sending a tx + -b, --broadcast-mode string Transaction broadcasting mode (sync|async) + --chain-id string The network chain ID + --dry-run ignore the --gas flag and perform a simulation of a transaction, but don't broadcast it (when enabled, the local Keybase is not accessible) + --fee-granter string Fee granter grants fees for the transaction + --fee-payer string Fee payer pays fees for the transaction instead of deducting from the signer + --fees string Fees to pay along with transaction; eg: 10uatom + --from string Name or address of private key with which to sign + --gas string gas limit to set per-transaction; set to "auto" to calculate sufficient gas automatically. Note: "auto" option doesn't always report accurate results. Set a valid coin value to adjust the result. Can be used instead of "fees". (default 200000) + --gas-adjustment float adjustment factor to be multiplied against the estimate returned by the tx simulation; if the gas limit is set manually this flag is ignored (default 1) + --gas-prices string Gas prices in decimal format to determine the transaction fee (e.g. 0.1uatom) + --generate-only Build an unsigned transaction and write it to STDOUT (when enabled, the local Keybase only accessed when providing a key name) + -h, --help help for update-gateway-contract + --keyring-backend string Select keyring's backend (os|file|kwallet|pass|test|memory) + --keyring-dir string The client Keyring directory; if omitted, the default 'home' directory will be used + --ledger Use a connected Ledger device + --node string [host]:[port] to tendermint rpc interface for this chain + --note string Note to add a description to the transaction (previously --memo) + --offline Offline mode (does not allow any online functionality) + -o, --output string Output format (text|json) + -s, --sequence uint The sequence number of the signing account (offline mode only) + --sign-mode string Choose sign mode (direct|amino-json|direct-aux), this is an advanced feature + --timeout-height uint Set a block timeout height to prevent the tx from being committed past a certain height + --tip string Tip is the amount that is going to be transferred to the fee payer on the target chain. This flag is only valid when used with --aux, and is ignored if the target chain didn't enable the TipDecorator + -y, --yes Skip tx broadcasting prompt confirmation +``` + +### Options inherited from parent commands + +``` + --home string directory for config and data + --log_format string The logging format (json|plain) + --log_level string The logging level (trace|debug|info|warn|error|fatal|panic) + --log_no_color Disable colored logs + --trace print out full stack trace on errors +``` + +### SEE ALSO + +* [zetacored tx fungible](zetacored_tx_fungible.md) - fungible transactions subcommands + diff --git a/docs/openapi/openapi.swagger.yaml b/docs/openapi/openapi.swagger.yaml index 5315144edb..a91158997d 100644 --- a/docs/openapi/openapi.swagger.yaml +++ b/docs/openapi/openapi.swagger.yaml @@ -57653,6 +57653,8 @@ definitions: type: object fungibleMsgUpdateContractBytecodeResponse: type: object + fungibleMsgUpdateGatewayContractResponse: + type: object fungibleMsgUpdateSystemContractResponse: type: object fungibleMsgUpdateZRC20LiquidityCapResponse: @@ -57711,6 +57713,8 @@ definitions: type: string connector_zevm: type: string + gateway: + type: string googlerpcStatus: type: object properties: diff --git a/docs/spec/fungible/messages.md b/docs/spec/fungible/messages.md index ce845608e6..ce624844ea 100644 --- a/docs/spec/fungible/messages.md +++ b/docs/spec/fungible/messages.md @@ -140,3 +140,14 @@ message MsgUnpauseZRC20 { } ``` +## MsgUpdateGatewayContract + +UpdateGatewayContract updates the zevm gateway contract used by the ZetaChain protocol to read inbounds and process outbounds + +```proto +message MsgUpdateGatewayContract { + string creator = 1; + string new_gateway_contract_address = 2; +} +``` + diff --git a/go.mod b/go.mod index fd288074d2..f18cf90bcf 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/zeta-chain/zetacore -go 1.22 +go 1.22.2 + +toolchain go1.22.5 require ( github.com/cosmos/cosmos-sdk v0.47.10 @@ -16,9 +18,9 @@ require ( github.com/prometheus/client_golang v1.14.0 github.com/rs/zerolog v1.32.0 github.com/spf13/cast v1.5.1 - github.com/spf13/cobra v1.7.0 + github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.9.0 github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect gitlab.com/thorchain/tss/go-tss v1.6.5 google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect @@ -58,9 +60,9 @@ require ( cosmossdk.io/simapp v0.0.0-20230608160436-666c345ad23d cosmossdk.io/tools/rosetta v0.2.1 github.com/btcsuite/btcd/btcutil v1.1.3 - github.com/cockroachdb/errors v1.10.0 + github.com/cockroachdb/errors v1.11.1 github.com/cometbft/cometbft v0.37.4 - github.com/cometbft/cometbft-db v0.8.0 + github.com/cometbft/cometbft-db v0.12.0 github.com/golang/mock v1.6.0 github.com/huandu/skiplist v1.2.0 github.com/nanmu42/etherscan-api v1.10.0 @@ -76,23 +78,21 @@ require ( cosmossdk.io/depinject v1.0.0-alpha.4 // indirect cosmossdk.io/log v1.3.1 // indirect github.com/DataDog/zstd v1.5.0 // indirect - github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/agl/ed25519 v0.0.0-20200225211852-fd4d107ace12 // indirect github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 // indirect github.com/blendle/zapdriver v1.3.1 // indirect github.com/bool64/shared v0.1.5 // indirect - github.com/cespare/xxhash v1.1.0 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect github.com/cosmos/ics23/go v0.10.0 // indirect github.com/cosmos/rosetta-sdk-go v0.10.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect github.com/decred/dcrd/dcrec/edwards/v2 v2.0.0 // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/gagliardetto/binary v0.8.0 // indirect github.com/gagliardetto/treeout v0.1.4 // indirect @@ -101,12 +101,14 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/golang/glog v1.1.2 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/ipfs/boxo v0.10.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/libp2p/go-yamux/v4 v4.0.0 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/logrusorgru/aurora v2.0.3+incompatible // indirect github.com/miekg/pkcs11 v1.1.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -119,7 +121,6 @@ require ( github.com/sergi/go-diff v1.3.1 // indirect github.com/streamingfast/logging v0.0.0-20230608130331-f22c91403091 // indirect github.com/swaggest/assertjson v1.9.0 // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/btcd v0.1.1 // indirect github.com/thales-e-security/pool v0.0.2 // indirect github.com/tidwall/gjson v1.14.4 // indirect @@ -128,7 +129,7 @@ require ( github.com/tidwall/sjson v1.2.5 // indirect github.com/yudai/gojsondiff v1.0.0 // indirect github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 // indirect - go.etcd.io/bbolt v1.3.7 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect go.mongodb.org/mongo-driver v1.11.0 // indirect go.nhat.io/matcher/v2 v2.0.0 // indirect go.nhat.io/wait v0.1.0 // indirect @@ -310,7 +311,7 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/viper v1.16.0 github.com/status-im/keycard-go v0.2.0 // indirect - github.com/stretchr/objx v0.5.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.6.0 // indirect @@ -330,8 +331,8 @@ require ( golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.19.0 golang.org/x/oauth2 v0.15.0 // indirect - golang.org/x/sync v0.5.0 - golang.org/x/sys v0.16.0 // indirect + golang.org/x/sync v0.6.0 + golang.org/x/sys v0.18.0 // indirect golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.9.1 // indirect @@ -354,14 +355,14 @@ replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/rjeczalik/notify => github.com/rjeczalik/notify v0.9.3 + // replace broken goleveldb + // https://github.com/cosmos/cosmos-sdk/issues/14949 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 ) -replace github.com/cometbft/cometbft-db => github.com/notional-labs/cometbft-db v0.0.0-20230321185329-6dc7c0ca6345 - replace github.com/evmos/ethermint => github.com/zeta-chain/ethermint v0.0.0-20240531172701-61d040058c94 replace github.com/libp2p/go-libp2p => github.com/zeta-chain/go-libp2p v0.0.0-20240710192637-567fbaacc2b4 -replace gitlab.com/thorchain/tss/go-tss => github.com/zeta-chain/go-tss v0.0.0-20240718213003-31767e0c90ba +replace gitlab.com/thorchain/tss/go-tss => github.com/zeta-chain/go-tss v0.0.0-20240729195411-9f5ae8189449 diff --git a/go.sum b/go.sum index 49b9dbbcd1..a11d354055 100644 --- a/go.sum +++ b/go.sum @@ -219,7 +219,6 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/AlekSi/pointer v1.1.0 h1:SSDMPcXD9jSl8FPy9cRzoRaMJtm9g9ggGTxecRUbQoI= github.com/AlekSi/pointer v1.1.0/go.mod h1:y7BvfRI3wXPWKXEBhU71nbnIEEZX0QTSB2Bj48UJIZE= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= @@ -243,26 +242,18 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= @@ -279,7 +270,6 @@ github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -321,7 +311,6 @@ github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7 github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= 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= @@ -388,7 +377,6 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -422,28 +410,27 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= -github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= -github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= -github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= -github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 h1:qbb/AE938DFhOajUYh9+OXELpSF9KZw2ZivtmW6eX1Q= -github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677/go.mod h1:890yq1fUb9b6dGNwssgeUO5vQV9qfXnCPxAJhBQfXw0= -github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= github.com/coinbase/rosetta-sdk-go v0.6.10/go.mod h1:J/JFMsfcePrjJZkwQFLh+hJErkAmdm9Iyy3D5Y0LfXo= github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= github.com/cometbft/cometbft v0.37.4 h1:xyvvEqlyfK8MgNIIKVJaMsuIp03wxOcFmVkT26+Ikpg= github.com/cometbft/cometbft v0.37.4/go.mod h1:Cmg5Hp4sNpapm7j+x0xRyt2g0juQfmB752ous+pA0G8= +github.com/cometbft/cometbft-db v0.12.0 h1:v77/z0VyfSU7k682IzZeZPFZrQAKiQwkqGN0QzAjMi0= +github.com/cometbft/cometbft-db v0.12.0/go.mod h1:aX2NbCrjNVd2ZajYxt1BsiFf/Z+TQ2MN0VxdicheYuw= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= @@ -503,8 +490,8 @@ github.com/cosmos/rosetta-sdk-go v0.10.0/go.mod h1:SImAZkb96YbwvoRkzSMQB6noNJXFg github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= 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/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= @@ -536,11 +523,11 @@ github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger/v2 v2.2007.1/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= @@ -585,7 +572,6 @@ github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7j github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= @@ -603,33 +589,24 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/facebookgo/ensure v0.0.0-20160127193407-b4ab57deab51/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -651,27 +628,21 @@ github.com/gagliardetto/solana-go v1.10.0 h1:lDuHGC+XLxw9j8fCHBZM9tv4trI0PVhev1m github.com/gagliardetto/solana-go v1.10.0/go.mod h1:afBEcIRrDLJst3lvAahTr63m6W2Ns6dajZxe2irF7Jg= github.com/gagliardetto/treeout v0.1.4 h1:ozeYerrLCmCubo1TcIjFiOWTTGteOOHND1twdFpgwaw= github.com/gagliardetto/treeout v0.1.4/go.mod h1:loUefvXTrlRG5rYmJmExNryyBRh8f89VZhmMOyCyqok= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getsentry/sentry-go v0.23.0 h1:dn+QRCeJv4pPt9OjVXiMcGIBIefaTJPw/h0bZWO05nE= github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= -github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -695,7 +666,6 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -739,12 +709,10 @@ 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/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= @@ -796,12 +764,13 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -819,7 +788,6 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -987,12 +955,10 @@ github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj github.com/huin/goupnp v1.2.0 h1:uOKW26NG1hsSSbXIZ1IR7XP9Gjd1U8pnLaCMgntmkmY= github.com/huin/goupnp v1.2.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/improbable-eng/grpc-web v0.14.0/go.mod h1:6hRR09jOEG81ADP5wCQju1z71g6OL4eEvELdran/3cs= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= @@ -1029,10 +995,6 @@ 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/ipld/go-ipld-prime v0.20.0 h1:Ud3VwE9ClxpO2LkCYP7vWPc0Fo+dYdYzgxUJZ3uRG4g= github.com/ipld/go-ipld-prime v0.20.0/go.mod h1:PzqZ/ZR981eKbgdr3y2DJYeD/8bgMawdGVlJDE8kK+M= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= 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= @@ -1076,29 +1038,19 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= 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/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= github.com/kkdai/bstream v1.0.0/go.mod h1:FDnDOHt5Yx4p3FaHcioFT0QjDOtgUpvjeZqAs+NVZZA= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= @@ -1108,7 +1060,6 @@ github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrD github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= @@ -1131,7 +1082,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= @@ -1172,6 +1122,8 @@ github.com/libp2p/go-yamux/v4 v4.0.0 h1:+Y80dV2Yx/kv7Y7JKu0LECyVdMXm1VUoko+VQ9rB github.com/libp2p/go-yamux/v4 v4.0.0/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8= github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= @@ -1201,7 +1153,6 @@ github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HN github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= @@ -1221,13 +1172,9 @@ github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI= github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.54 h1:5jon9mWcb0sFJGpnI99tOMhCPyJ+RPVz5b63MQG0VWI= @@ -1280,7 +1227,6 @@ github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3P github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/mostynb/zstdpool-freelist v0.0.0-20201229113212-927304c0c3b1 h1:mPMvm6X6tf4w8y7j9YIt6V9jfWhL6QlbEc7CCmeQlWk= github.com/mostynb/zstdpool-freelist v0.0.0-20201229113212-927304c0c3b1/go.mod h1:ye2e/VUEtE2BHE+G/QcKkcLQVAEJoYRFj5VUOQatCRE= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mr-tron/base58 v1.1.2/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= @@ -1322,9 +1268,7 @@ github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= @@ -1334,8 +1278,6 @@ github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= -github.com/notional-labs/cometbft-db v0.0.0-20230321185329-6dc7c0ca6345 h1:QeXhTzmndyedxsINoIZLWkDF17U9V/yCaBffFYXjbaQ= -github.com/notional-labs/cometbft-db v0.0.0-20230321185329-6dc7c0ca6345/go.mod h1:a5TUP6VLnFBEcmg+xhGwb2lO9BjzkHGxg0c8wyRfjN8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -1352,7 +1294,6 @@ github.com/onrik/ethrpc v1.2.0/go.mod h1:uvyqpn8+WbsTgBYfouImgEfpIMb0hR8fWGjwdgP github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= @@ -1515,19 +1456,16 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= @@ -1567,8 +1505,8 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= -github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1598,8 +1536,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0= -github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -1610,10 +1548,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ 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.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -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/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= @@ -1621,7 +1558,6 @@ github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7 github.com/swaggest/assertjson v1.9.0/go.mod h1:b+ZKX2VRiUjxfUIal0HDN85W0nHPAYUbYH5WkkSsFsU= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= @@ -1692,12 +1628,9 @@ github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60Nt github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/cli/v2 v2.10.2 h1:x3p8awjp/2arX+Nl/G2040AZpOCHS/eMJJ1/a+mye4Y= github.com/urfave/cli/v2 v2.10.2/go.mod h1:f8iq5LtQ/bLxafbdBSLPPNsgaW0l/2fYYEHhAyPlwvo= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -1711,15 +1644,11 @@ github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+m github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= @@ -1738,8 +1667,8 @@ github.com/zeta-chain/ethermint v0.0.0-20240531172701-61d040058c94 h1:M54ljayJvy github.com/zeta-chain/ethermint v0.0.0-20240531172701-61d040058c94/go.mod h1:s1zA6OpXv3Tb5I0M6M6j5fo/AssaZL/pgkc7G0W2kN8= github.com/zeta-chain/go-libp2p v0.0.0-20240710192637-567fbaacc2b4 h1:FmO3HfVdZ7LzxBUfg6sVzV7ilKElQU2DZm8PxJ7KcYI= github.com/zeta-chain/go-libp2p v0.0.0-20240710192637-567fbaacc2b4/go.mod h1:TBv5NY/CqWYIfUstXO1fDWrt4bDoqgCw79yihqBspg8= -github.com/zeta-chain/go-tss v0.0.0-20240718213003-31767e0c90ba h1:7Qcc2uQq2Tp1OSRMiJA7GRZr+PV6Le0a1TGw3q/8Vho= -github.com/zeta-chain/go-tss v0.0.0-20240718213003-31767e0c90ba/go.mod h1:LN1IBRN8xQkKgdgLhl5BDGZyPm70QOTbVLejdS2FVpo= +github.com/zeta-chain/go-tss v0.0.0-20240729195411-9f5ae8189449 h1:4U+4g2QQjbrmeLU1ZdCDU6CYsE5kbwMOKZ/PACR/vN8= +github.com/zeta-chain/go-tss v0.0.0-20240729195411-9f5ae8189449/go.mod h1:LN1IBRN8xQkKgdgLhl5BDGZyPm70QOTbVLejdS2FVpo= github.com/zeta-chain/keystone/keys v0.0.0-20231105174229-903bc9405da2 h1:gd2uE0X+ZbdFJ8DubxNqLbOVlCB12EgWdzSNRAR82tM= github.com/zeta-chain/keystone/keys v0.0.0-20231105174229-903bc9405da2/go.mod h1:x7Bkwbzt2W2lQfjOirnff0Dj+tykdbTG1FMJPVPZsvE= github.com/zeta-chain/protocol-contracts v1.0.2-athens3.0.20240801083800-4c703865863e h1:NZunYHXFI2I9pazDsRxH8F0KEiMikjj35tqJ/iiYjNw= @@ -1754,8 +1683,8 @@ gitlab.com/thorchain/tss/tss-lib v0.2.0/go.mod h1:O9vom2mu4IGAx3+6G3+NJdYRTyWK9Q go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ= -go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= @@ -1870,7 +1799,6 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb h1:xIApU0ow1zwMa2uL1VDNeQlNVFTWMQxZUZCMDy0Q4Us= golang.org/x/exp v0.0.0-20230711153332-06a737ee72cb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= @@ -1917,7 +1845,6 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/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-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1928,7 +1855,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -2020,8 +1946,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/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.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= -golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.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-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2117,7 +2043,6 @@ golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2147,8 +2072,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.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.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2179,14 +2104,12 @@ golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 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-20181221001348-537d06c36207/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-20190206041539-40960b6deb8e/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-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -2259,7 +2182,6 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNq gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= gonum.org/v1/gonum v0.13.0/go.mod h1:/WPYRckkfWrhWefxyYTfrTtQR0KH4iyHNuzxqXAKyAU= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= @@ -2327,7 +2249,6 @@ google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= 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-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -2445,7 +2366,6 @@ google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 h1: google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0/go.mod h1:CAny0tYF+0/9rmDB9fahA9YLzX3+AEVl1qXbv5hhj6c= google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4= google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= 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/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -2522,13 +2442,10 @@ gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= diff --git a/proto/zetachain/zetacore/fungible/events.proto b/proto/zetachain/zetacore/fungible/events.proto index 41b78c635e..02a686aad8 100644 --- a/proto/zetachain/zetacore/fungible/events.proto +++ b/proto/zetachain/zetacore/fungible/events.proto @@ -67,3 +67,10 @@ message EventBytecodeUpdated { string old_bytecode_hash = 4; string signer = 5; } + +message EventGatewayContractUpdated { + string msg_type_url = 1; + string new_contract_address = 2; + string old_contract_address = 3; + string signer = 4; +} diff --git a/proto/zetachain/zetacore/fungible/system_contract.proto b/proto/zetachain/zetacore/fungible/system_contract.proto index 44d484700b..d9dca7f71a 100644 --- a/proto/zetachain/zetacore/fungible/system_contract.proto +++ b/proto/zetachain/zetacore/fungible/system_contract.proto @@ -8,4 +8,5 @@ option go_package = "github.com/zeta-chain/zetacore/x/fungible/types"; message SystemContract { string system_contract = 1; string connector_zevm = 2; + string gateway = 3; } diff --git a/proto/zetachain/zetacore/fungible/tx.proto b/proto/zetachain/zetacore/fungible/tx.proto index a73dcc2350..33ab8e7a7a 100644 --- a/proto/zetachain/zetacore/fungible/tx.proto +++ b/proto/zetachain/zetacore/fungible/tx.proto @@ -24,6 +24,8 @@ service Msg { returns (MsgUpdateZRC20LiquidityCapResponse); rpc PauseZRC20(MsgPauseZRC20) returns (MsgPauseZRC20Response); rpc UnpauseZRC20(MsgUnpauseZRC20) returns (MsgUnpauseZRC20Response); + rpc UpdateGatewayContract(MsgUpdateGatewayContract) + returns (MsgUpdateGatewayContractResponse); } message MsgDeploySystemContracts { string creator = 1; } @@ -109,4 +111,11 @@ message MsgUnpauseZRC20 { repeated string zrc20_addresses = 2; } -message MsgUnpauseZRC20Response {} \ No newline at end of file +message MsgUnpauseZRC20Response {} + +message MsgUpdateGatewayContract { + string creator = 1; + string new_gateway_contract_address = 2; +} + +message MsgUpdateGatewayContractResponse {} \ No newline at end of file diff --git a/typescript/zetachain/zetacore/fungible/events_pb.d.ts b/typescript/zetachain/zetacore/fungible/events_pb.d.ts index 2cfb7f648b..8fcfb85d18 100644 --- a/typescript/zetachain/zetacore/fungible/events_pb.d.ts +++ b/typescript/zetachain/zetacore/fungible/events_pb.d.ts @@ -340,3 +340,42 @@ export declare class EventBytecodeUpdated extends Message static equals(a: EventBytecodeUpdated | PlainMessage | undefined, b: EventBytecodeUpdated | PlainMessage | undefined): boolean; } +/** + * @generated from message zetachain.zetacore.fungible.EventGatewayContractUpdated + */ +export declare class EventGatewayContractUpdated extends Message { + /** + * @generated from field: string msg_type_url = 1; + */ + msgTypeUrl: string; + + /** + * @generated from field: string new_contract_address = 2; + */ + newContractAddress: string; + + /** + * @generated from field: string old_contract_address = 3; + */ + oldContractAddress: string; + + /** + * @generated from field: string signer = 4; + */ + signer: string; + + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.fungible.EventGatewayContractUpdated"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): EventGatewayContractUpdated; + + static fromJson(jsonValue: JsonValue, options?: Partial): EventGatewayContractUpdated; + + static fromJsonString(jsonString: string, options?: Partial): EventGatewayContractUpdated; + + static equals(a: EventGatewayContractUpdated | PlainMessage | undefined, b: EventGatewayContractUpdated | PlainMessage | undefined): boolean; +} + diff --git a/typescript/zetachain/zetacore/fungible/system_contract_pb.d.ts b/typescript/zetachain/zetacore/fungible/system_contract_pb.d.ts index 1b7d89062f..4df1dc0815 100644 --- a/typescript/zetachain/zetacore/fungible/system_contract_pb.d.ts +++ b/typescript/zetachain/zetacore/fungible/system_contract_pb.d.ts @@ -20,6 +20,11 @@ export declare class SystemContract extends Message { */ connectorZevm: string; + /** + * @generated from field: string gateway = 3; + */ + gateway: string; + constructor(data?: PartialMessage); static readonly runtime: typeof proto3; diff --git a/typescript/zetachain/zetacore/fungible/tx_pb.d.ts b/typescript/zetachain/zetacore/fungible/tx_pb.d.ts index 131f438020..3dd44cae9f 100644 --- a/typescript/zetachain/zetacore/fungible/tx_pb.d.ts +++ b/typescript/zetachain/zetacore/fungible/tx_pb.d.ts @@ -516,3 +516,51 @@ export declare class MsgUnpauseZRC20Response extends Message | undefined, b: MsgUnpauseZRC20Response | PlainMessage | undefined): boolean; } +/** + * @generated from message zetachain.zetacore.fungible.MsgUpdateGatewayContract + */ +export declare class MsgUpdateGatewayContract extends Message { + /** + * @generated from field: string creator = 1; + */ + creator: string; + + /** + * @generated from field: string new_gateway_contract_address = 2; + */ + newGatewayContractAddress: string; + + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateGatewayContract"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateGatewayContract; + + static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateGatewayContract; + + static fromJsonString(jsonString: string, options?: Partial): MsgUpdateGatewayContract; + + static equals(a: MsgUpdateGatewayContract | PlainMessage | undefined, b: MsgUpdateGatewayContract | PlainMessage | undefined): boolean; +} + +/** + * @generated from message zetachain.zetacore.fungible.MsgUpdateGatewayContractResponse + */ +export declare class MsgUpdateGatewayContractResponse extends Message { + constructor(data?: PartialMessage); + + static readonly runtime: typeof proto3; + static readonly typeName = "zetachain.zetacore.fungible.MsgUpdateGatewayContractResponse"; + static readonly fields: FieldList; + + static fromBinary(bytes: Uint8Array, options?: Partial): MsgUpdateGatewayContractResponse; + + static fromJson(jsonValue: JsonValue, options?: Partial): MsgUpdateGatewayContractResponse; + + static fromJsonString(jsonString: string, options?: Partial): MsgUpdateGatewayContractResponse; + + static equals(a: MsgUpdateGatewayContractResponse | PlainMessage | undefined, b: MsgUpdateGatewayContractResponse | PlainMessage | undefined): boolean; +} + diff --git a/x/authority/types/authorization_list.go b/x/authority/types/authorization_list.go index d935839233..58f3d80063 100644 --- a/x/authority/types/authorization_list.go +++ b/x/authority/types/authorization_list.go @@ -28,6 +28,7 @@ var ( "/zetachain.zetacore.crosschain.MsgWhitelistERC20", "/zetachain.zetacore.fungible.MsgUpdateContractBytecode", "/zetachain.zetacore.fungible.MsgUpdateSystemContract", + "/zetachain.zetacore.fungible.MsgUpdateGatewayContract", "/zetachain.zetacore.fungible.MsgRemoveForeignCoin", "/zetachain.zetacore.fungible.MsgDeployFungibleCoinZRC20", "/zetachain.zetacore.observer.MsgUpdateObserver", diff --git a/x/authority/types/authorization_list_test.go b/x/authority/types/authorization_list_test.go index 0f4c896a50..2322caa798 100644 --- a/x/authority/types/authorization_list_test.go +++ b/x/authority/types/authorization_list_test.go @@ -420,6 +420,7 @@ func TestDefaultAuthorizationsList(t *testing.T) { sdk.MsgTypeURL(&fungibletypes.MsgDeployFungibleCoinZRC20{}), sdk.MsgTypeURL(&fungibletypes.MsgUpdateContractBytecode{}), sdk.MsgTypeURL(&fungibletypes.MsgUpdateSystemContract{}), + sdk.MsgTypeURL(&fungibletypes.MsgUpdateGatewayContract{}), sdk.MsgTypeURL(&fungibletypes.MsgRemoveForeignCoin{}), sdk.MsgTypeURL(&observertypes.MsgUpdateObserver{}), sdk.MsgTypeURL(&observertypes.MsgAddObserver{}), diff --git a/x/fungible/client/cli/tx.go b/x/fungible/client/cli/tx.go index 8d81382cc8..7e76661caf 100644 --- a/x/fungible/client/cli/tx.go +++ b/x/fungible/client/cli/tx.go @@ -29,6 +29,7 @@ func GetTxCmd() *cobra.Command { CmdPauseZRC20(), CmdUnpauseZRC20(), CmdUpdateZRC20WithdrawFee(), + CmdUpdateGatewayContract(), ) return cmd diff --git a/x/fungible/client/cli/tx_update_gateway_contract.go b/x/fungible/client/cli/tx_update_gateway_contract.go new file mode 100644 index 0000000000..8941199788 --- /dev/null +++ b/x/fungible/client/cli/tx_update_gateway_contract.go @@ -0,0 +1,35 @@ +package cli + +import ( + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + "github.com/spf13/cobra" + + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +func CmdUpdateGatewayContract() *cobra.Command { + cmd := &cobra.Command{ + Use: "update-gateway-contract [contract-address]", + Short: "Broadcast message UpdateGatewayContract to update the gateway contract address", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) (err error) { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + msg := types.NewMsgUpdateGatewayContract(clientCtx.GetFromAddress().String(), args[0]) + if err := msg.ValidateBasic(); err != nil { + return err + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + + return cmd +} diff --git a/x/fungible/keeper/msg_server_update_gateway_contract.go b/x/fungible/keeper/msg_server_update_gateway_contract.go new file mode 100644 index 0000000000..1fd3b95021 --- /dev/null +++ b/x/fungible/keeper/msg_server_update_gateway_contract.go @@ -0,0 +1,53 @@ +package keeper + +import ( + "context" + + cosmoserrors "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + + authoritytypes "github.com/zeta-chain/zetacore/x/authority/types" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +// UpdateGatewayContract updates the zevm gateway contract used by the ZetaChain protocol to read inbounds and process outbounds +func (k msgServer) UpdateGatewayContract( + goCtx context.Context, + msg *types.MsgUpdateGatewayContract, +) (*types.MsgUpdateGatewayContractResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + err := k.GetAuthorityKeeper().CheckAuthorization(ctx, msg) + if err != nil { + return nil, cosmoserrors.Wrap(authoritytypes.ErrUnauthorized, err.Error()) + } + + // The SystemContract state variable tracks the contract addresses used by the protocol + // This variable is planned to be renamed ProtocolContracts in the future: + // https://github.com/zeta-chain/node/issues/2576 + var protocolContracts types.SystemContract + protocolContracts, found := k.GetSystemContract(ctx) + if !found { + // protocolContracts has never been set before, set an empty structure + protocolContracts = types.SystemContract{} + } + oldGateway := protocolContracts.Gateway + + // update address and save + protocolContracts.Gateway = msg.NewGatewayContractAddress + k.SetSystemContract(ctx, protocolContracts) + + err = ctx.EventManager().EmitTypedEvent( + &types.EventGatewayContractUpdated{ + MsgTypeUrl: sdk.MsgTypeURL(&types.MsgUpdateGatewayContract{}), + NewContractAddress: msg.NewGatewayContractAddress, + OldContractAddress: oldGateway, + Signer: msg.Creator, + }, + ) + if err != nil { + k.Logger(ctx).Error("failed to emit event", "error", err.Error()) + return nil, cosmoserrors.Wrapf(types.ErrEmitEvent, "failed to emit event (%s)", err.Error()) + } + + return &types.MsgUpdateGatewayContractResponse{}, nil +} diff --git a/x/fungible/keeper/msg_server_update_gateway_contract_test.go b/x/fungible/keeper/msg_server_update_gateway_contract_test.go new file mode 100644 index 0000000000..70b0a1144c --- /dev/null +++ b/x/fungible/keeper/msg_server_update_gateway_contract_test.go @@ -0,0 +1,118 @@ +package keeper_test + +import ( + "testing" + + "github.com/stretchr/testify/require" + keepertest "github.com/zeta-chain/zetacore/testutil/keeper" + "github.com/zeta-chain/zetacore/testutil/sample" + authoritytypes "github.com/zeta-chain/zetacore/x/authority/types" + "github.com/zeta-chain/zetacore/x/fungible/keeper" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +func TestKeeper_UpdateGatewayContract(t *testing.T) { + t.Run("can update the gateway contract address stored in the module", func(t *testing.T) { + // ARRANGE + k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ + UseAuthorityMock: true, + }) + + msgServer := keeper.NewMsgServerImpl(*k) + k.GetAuthKeeper().GetModuleAccount(ctx, types.ModuleName) + admin := sample.AccAddress() + + authorityMock := keepertest.GetFungibleAuthorityMock(t, k) + + systemContractAddr := sample.EthAddress() + connectorAddr := sample.EthAddress() + k.SetSystemContract(ctx, types.SystemContract{ + SystemContract: systemContractAddr.Hex(), + ConnectorZevm: connectorAddr.Hex(), + Gateway: sample.EthAddress().Hex(), + }) + + newGatewayAddr := sample.EthAddress() + + msg := types.NewMsgUpdateGatewayContract(admin, newGatewayAddr.Hex()) + keepertest.MockCheckAuthorization(&authorityMock.Mock, msg, nil) + + // ACT + _, err := msgServer.UpdateGatewayContract(ctx, msg) + + // ASSERT + require.NoError(t, err) + sc, found := k.GetSystemContract(ctx) + require.True(t, found) + + // gateway is updated + require.EqualValues(t, newGatewayAddr.Hex(), sc.Gateway) + + // system contract and connector remain the same + require.EqualValues(t, systemContractAddr.Hex(), sc.SystemContract) + require.EqualValues(t, connectorAddr.Hex(), sc.ConnectorZevm) + }) + + t.Run( + "can update and overwrite the gateway contract if system contract state variable not found", + func(t *testing.T) { + // ARRANGE + k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ + UseAuthorityMock: true, + }) + + msgServer := keeper.NewMsgServerImpl(*k) + k.GetAuthKeeper().GetModuleAccount(ctx, types.ModuleName) + admin := sample.AccAddress() + + authorityMock := keepertest.GetFungibleAuthorityMock(t, k) + + newGatewayAddr := sample.EthAddress() + + _, found := k.GetSystemContract(ctx) + require.False(t, found) + + msg := types.NewMsgUpdateGatewayContract(admin, newGatewayAddr.Hex()) + keepertest.MockCheckAuthorization(&authorityMock.Mock, msg, nil) + + // ACT + _, err := msgServer.UpdateGatewayContract(ctx, msg) + + // ASSERT + require.NoError(t, err) + sc, found := k.GetSystemContract(ctx) + require.True(t, found) + + // gateway is updated + require.EqualValues(t, newGatewayAddr.Hex(), sc.Gateway) + + // system contract and connector are not updated + require.EqualValues(t, "", sc.SystemContract) + require.EqualValues(t, "", sc.ConnectorZevm) + }, + ) + + t.Run("should prevent update the gateway contract if not admin", func(t *testing.T) { + // ARRANGE + k, ctx, _, _ := keepertest.FungibleKeeperWithMocks(t, keepertest.FungibleMockOptions{ + UseAuthorityMock: true, + }) + + msgServer := keeper.NewMsgServerImpl(*k) + k.GetAuthKeeper().GetModuleAccount(ctx, types.ModuleName) + + admin := sample.AccAddress() + authorityMock := keepertest.GetFungibleAuthorityMock(t, k) + + msg := types.NewMsgUpdateSystemContract(admin, sample.EthAddress().Hex()) + keepertest.MockCheckAuthorization(&authorityMock.Mock, msg, authoritytypes.ErrUnauthorized) + + // ACT + _, err := msgServer.UpdateSystemContract(ctx, msg) + + // ASSERT + require.Error(t, err) + require.ErrorIs(t, err, authoritytypes.ErrUnauthorized) + }) + +} diff --git a/x/fungible/types/codec.go b/x/fungible/types/codec.go index fd31724336..29c2f831fd 100644 --- a/x/fungible/types/codec.go +++ b/x/fungible/types/codec.go @@ -17,6 +17,7 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgUpdateZRC20LiquidityCap{}, "fungible/UpdateZRC20LiquidityCap", nil) cdc.RegisterConcrete(&MsgPauseZRC20{}, "fungible/PauseZRC20", nil) cdc.RegisterConcrete(&MsgUnpauseZRC20{}, "fungible/UnpauseZRC20", nil) + cdc.RegisterConcrete(&MsgUpdateGatewayContract{}, "fungible/UpdateGatewayContract", nil) } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { @@ -30,6 +31,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgUpdateZRC20LiquidityCap{}, &MsgPauseZRC20{}, &MsgUnpauseZRC20{}, + &MsgUpdateGatewayContract{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/fungible/types/events.pb.go b/x/fungible/types/events.pb.go index 41795a24b7..6e4d5784c0 100644 --- a/x/fungible/types/events.pb.go +++ b/x/fungible/types/events.pb.go @@ -596,6 +596,74 @@ func (m *EventBytecodeUpdated) GetSigner() string { return "" } +type EventGatewayContractUpdated struct { + MsgTypeUrl string `protobuf:"bytes,1,opt,name=msg_type_url,json=msgTypeUrl,proto3" json:"msg_type_url,omitempty"` + NewContractAddress string `protobuf:"bytes,2,opt,name=new_contract_address,json=newContractAddress,proto3" json:"new_contract_address,omitempty"` + OldContractAddress string `protobuf:"bytes,3,opt,name=old_contract_address,json=oldContractAddress,proto3" json:"old_contract_address,omitempty"` + Signer string `protobuf:"bytes,4,opt,name=signer,proto3" json:"signer,omitempty"` +} + +func (m *EventGatewayContractUpdated) Reset() { *m = EventGatewayContractUpdated{} } +func (m *EventGatewayContractUpdated) String() string { return proto.CompactTextString(m) } +func (*EventGatewayContractUpdated) ProtoMessage() {} +func (*EventGatewayContractUpdated) Descriptor() ([]byte, []int) { + return fileDescriptor_1e6611815bc2713b, []int{7} +} +func (m *EventGatewayContractUpdated) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventGatewayContractUpdated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventGatewayContractUpdated.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventGatewayContractUpdated) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventGatewayContractUpdated.Merge(m, src) +} +func (m *EventGatewayContractUpdated) XXX_Size() int { + return m.Size() +} +func (m *EventGatewayContractUpdated) XXX_DiscardUnknown() { + xxx_messageInfo_EventGatewayContractUpdated.DiscardUnknown(m) +} + +var xxx_messageInfo_EventGatewayContractUpdated proto.InternalMessageInfo + +func (m *EventGatewayContractUpdated) GetMsgTypeUrl() string { + if m != nil { + return m.MsgTypeUrl + } + return "" +} + +func (m *EventGatewayContractUpdated) GetNewContractAddress() string { + if m != nil { + return m.NewContractAddress + } + return "" +} + +func (m *EventGatewayContractUpdated) GetOldContractAddress() string { + if m != nil { + return m.OldContractAddress + } + return "" +} + +func (m *EventGatewayContractUpdated) GetSigner() string { + if m != nil { + return m.Signer + } + return "" +} + func init() { proto.RegisterType((*EventSystemContractUpdated)(nil), "zetachain.zetacore.fungible.EventSystemContractUpdated") proto.RegisterType((*EventZRC20Deployed)(nil), "zetachain.zetacore.fungible.EventZRC20Deployed") @@ -604,6 +672,7 @@ func init() { proto.RegisterType((*EventZRC20Unpaused)(nil), "zetachain.zetacore.fungible.EventZRC20Unpaused") proto.RegisterType((*EventSystemContractsDeployed)(nil), "zetachain.zetacore.fungible.EventSystemContractsDeployed") proto.RegisterType((*EventBytecodeUpdated)(nil), "zetachain.zetacore.fungible.EventBytecodeUpdated") + proto.RegisterType((*EventGatewayContractUpdated)(nil), "zetachain.zetacore.fungible.EventGatewayContractUpdated") } func init() { @@ -611,55 +680,55 @@ func init() { } var fileDescriptor_1e6611815bc2713b = []byte{ - // 754 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xdd, 0x4e, 0xdb, 0x48, - 0x14, 0xc6, 0x04, 0x02, 0x19, 0x7e, 0x12, 0x46, 0xd1, 0xca, 0x1b, 0x56, 0x11, 0xca, 0x2e, 0xbb, - 0x59, 0xb4, 0x9b, 0xa0, 0xf4, 0x09, 0x0a, 0x2d, 0x2d, 0x52, 0x2f, 0xaa, 0xb4, 0xb4, 0x12, 0x37, - 0xd6, 0xc4, 0x3e, 0x38, 0x16, 0xf6, 0x8c, 0xe5, 0x99, 0xc4, 0x98, 0xa7, 0xe8, 0x65, 0x1f, 0xa2, - 0x4f, 0xd0, 0x27, 0xe8, 0x25, 0x52, 0x6f, 0x7a, 0x59, 0xc1, 0x4b, 0xf4, 0xb2, 0x9a, 0xf1, 0xd8, - 0xb1, 0x29, 0x20, 0xe8, 0x45, 0x6f, 0xa2, 0x39, 0x93, 0x6f, 0xce, 0xf9, 0xce, 0xe7, 0xef, 0xcc, - 0xa0, 0xee, 0x39, 0x08, 0x62, 0x8f, 0x89, 0x47, 0xfb, 0x6a, 0xc5, 0x22, 0xe8, 0x9f, 0x4c, 0xa8, - 0xeb, 0x8d, 0x7c, 0xe8, 0xc3, 0x14, 0xa8, 0xe0, 0xbd, 0x30, 0x62, 0x82, 0xe1, 0xcd, 0x1c, 0xd9, - 0xcb, 0x90, 0xbd, 0x0c, 0xd9, 0xfa, 0xeb, 0xae, 0x34, 0xe2, 0x2c, 0x4d, 0xd1, 0x6a, 0xba, 0xcc, - 0x65, 0x6a, 0xd9, 0x97, 0x2b, 0xbd, 0xfb, 0xf7, 0x0d, 0x67, 0xc3, 0x53, 0xb7, 0x6f, 0x33, 0x8f, - 0xaa, 0x9f, 0x14, 0xd7, 0xf9, 0x68, 0xa0, 0xd6, 0x53, 0xc9, 0xe8, 0x55, 0xc2, 0x05, 0x04, 0xfb, - 0x8c, 0x8a, 0x88, 0xd8, 0xe2, 0x28, 0x74, 0x88, 0x00, 0x07, 0x6f, 0xa1, 0xd5, 0x80, 0xbb, 0x96, - 0x48, 0x42, 0xb0, 0x26, 0x91, 0x6f, 0x1a, 0x5b, 0x46, 0xb7, 0x36, 0x44, 0x01, 0x77, 0x5f, 0x27, - 0x21, 0x1c, 0x45, 0x3e, 0xde, 0x45, 0x4d, 0x0a, 0xb1, 0x65, 0xeb, 0x83, 0x16, 0x71, 0x9c, 0x08, - 0x38, 0x37, 0xe7, 0x15, 0x12, 0x53, 0x88, 0xb3, 0x9c, 0x8f, 0xd3, 0x7f, 0xe4, 0x09, 0xe6, 0x3b, - 0x3f, 0x9e, 0xa8, 0xa4, 0x27, 0x98, 0xef, 0x5c, 0x3f, 0xf1, 0x1b, 0xaa, 0x72, 0xcf, 0xa5, 0x10, - 0x99, 0x0b, 0x0a, 0xa3, 0xa3, 0xce, 0x87, 0x79, 0x84, 0x15, 0xf9, 0xe3, 0xe1, 0xfe, 0x60, 0xf7, - 0x09, 0x84, 0x3e, 0x4b, 0xee, 0x45, 0xfa, 0x77, 0xb4, 0xac, 0xb4, 0xb1, 0x3c, 0x47, 0x11, 0xad, - 0x0c, 0x97, 0x54, 0x7c, 0xe8, 0xe0, 0x16, 0x5a, 0xce, 0x98, 0x69, 0x46, 0x79, 0x8c, 0x31, 0x5a, - 0xa0, 0x24, 0x00, 0xcd, 0x42, 0xad, 0x15, 0xb7, 0x24, 0x18, 0x31, 0xdf, 0x5c, 0xd4, 0xdc, 0x54, - 0x24, 0xf3, 0x38, 0x60, 0x7b, 0x01, 0xf1, 0xb9, 0x59, 0x55, 0x25, 0xf2, 0x18, 0xef, 0xa1, 0x9a, - 0xfc, 0x04, 0x8a, 0xa1, 0xb9, 0xb4, 0x65, 0x74, 0xd7, 0x07, 0xdb, 0xbd, 0x1b, 0x9c, 0x10, 0x9e, - 0xba, 0x3d, 0xf5, 0xad, 0xf6, 0x99, 0x47, 0x25, 0x77, 0xc9, 0x25, 0x5d, 0xe1, 0x26, 0x5a, 0x84, - 0xc8, 0x1e, 0xec, 0x9a, 0xcb, 0xaa, 0x6c, 0x1a, 0xe0, 0x4d, 0x54, 0x73, 0x09, 0xb7, 0x7c, 0x2f, - 0xf0, 0x84, 0x59, 0x4b, 0xcb, 0xba, 0x84, 0xbf, 0x90, 0x71, 0xe7, 0xdb, 0x3c, 0xfa, 0x63, 0x26, - 0xd7, 0x5b, 0x4f, 0x8c, 0x9d, 0x88, 0xc4, 0x07, 0x00, 0xf7, 0xff, 0xda, 0x77, 0x08, 0x57, 0x6a, - 0xaa, 0xf2, 0x73, 0x4d, 0xfd, 0x89, 0xd6, 0xce, 0x65, 0x1f, 0xb9, 0x27, 0x52, 0xa5, 0x57, 0xd5, - 0x66, 0xe6, 0x86, 0x2e, 0x6a, 0x48, 0xff, 0xc4, 0x9a, 0xbf, 0x75, 0x02, 0xa0, 0xb5, 0x5f, 0x67, - 0xbe, 0x53, 0x68, 0x4b, 0x22, 0xa5, 0x37, 0x4b, 0xc8, 0x6a, 0x8a, 0xa4, 0x10, 0x17, 0x91, 0x33, - 0x87, 0x2d, 0x15, 0x1d, 0x86, 0x3b, 0x68, 0x4d, 0xd6, 0x9a, 0x69, 0x9a, 0xaa, 0xbd, 0xc2, 0x7c, - 0xe7, 0x99, 0x96, 0x55, 0x62, 0x64, 0x95, 0xb2, 0xee, 0xb5, 0xe1, 0x0a, 0x85, 0x38, 0xc3, 0x74, - 0x26, 0xa8, 0x31, 0x53, 0xfe, 0x25, 0x99, 0xf0, 0x7b, 0xa9, 0xfd, 0x0f, 0xaa, 0x97, 0xe4, 0x00, - 0x39, 0x56, 0x15, 0x49, 0xbf, 0x28, 0x08, 0x14, 0x07, 0xa4, 0x52, 0x1a, 0x90, 0xb8, 0x38, 0x1f, - 0x47, 0x34, 0xfc, 0x65, 0x85, 0xdf, 0x67, 0x56, 0x2b, 0x5f, 0x2b, 0xfc, 0x01, 0x33, 0xfa, 0x1f, - 0xc2, 0x13, 0xea, 0xf1, 0x98, 0x84, 0xd6, 0x74, 0x60, 0x9d, 0x10, 0x5b, 0xb0, 0x28, 0xd1, 0xd7, - 0x4a, 0x43, 0xff, 0xf3, 0x66, 0x70, 0x90, 0xee, 0xcb, 0x71, 0x88, 0xa5, 0xc5, 0x34, 0x8f, 0x34, - 0xc0, 0x3b, 0x68, 0xa3, 0x90, 0x23, 0x62, 0x13, 0x91, 0xdf, 0x21, 0xf5, 0x3c, 0xc5, 0x50, 0x6d, - 0xe3, 0x6d, 0xb4, 0x6e, 0x33, 0x4a, 0x41, 0xe6, 0xb3, 0xce, 0x61, 0x1a, 0x68, 0x53, 0xad, 0xe5, - 0xbb, 0xc7, 0x30, 0x0d, 0xa4, 0x34, 0x5c, 0xf5, 0x94, 0x5f, 0x60, 0x99, 0xa5, 0x78, 0xa9, 0xd5, - 0xdb, 0x2c, 0xd5, 0xf9, 0x6c, 0xa0, 0xa6, 0x92, 0x66, 0x2f, 0x11, 0x60, 0x33, 0xe7, 0x01, 0xd3, - 0xf7, 0x2f, 0x6a, 0xdc, 0x72, 0xcf, 0xd6, 0xed, 0x6b, 0x57, 0xe6, 0x0e, 0xda, 0x90, 0xa6, 0x1c, - 0xe9, 0x1a, 0xd6, 0x98, 0xf0, 0xb1, 0xd6, 0xa6, 0x4e, 0x21, 0xce, 0x6a, 0x3f, 0x27, 0x7c, 0x2c, - 0xb1, 0xd2, 0xe4, 0x65, 0xac, 0x56, 0x89, 0xf9, 0x4e, 0x09, 0x3b, 0xeb, 0x6a, 0xb1, 0xd8, 0xd5, - 0xde, 0xe1, 0xa7, 0xcb, 0xb6, 0x71, 0x71, 0xd9, 0x36, 0xbe, 0x5e, 0xb6, 0x8d, 0x77, 0x57, 0xed, - 0xb9, 0x8b, 0xab, 0xf6, 0xdc, 0x97, 0xab, 0xf6, 0xdc, 0x71, 0xdf, 0xf5, 0xc4, 0x78, 0x32, 0xea, - 0xd9, 0x2c, 0x50, 0x4f, 0xd1, 0xff, 0xd7, 0x5e, 0xa5, 0xb3, 0xc2, 0x9b, 0x96, 0x84, 0xc0, 0x47, - 0x55, 0xf5, 0x32, 0x3d, 0xfa, 0x1e, 0x00, 0x00, 0xff, 0xff, 0x55, 0x3b, 0x93, 0x8b, 0x46, 0x07, - 0x00, 0x00, + // 766 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4d, 0x6e, 0xd3, 0x40, + 0x14, 0xae, 0x9b, 0x36, 0x6d, 0xa6, 0x3f, 0x49, 0xad, 0x08, 0x99, 0x14, 0x45, 0x55, 0xa0, 0x10, + 0x2a, 0x48, 0xaa, 0x70, 0x02, 0x5a, 0x68, 0xa9, 0xc4, 0x02, 0x05, 0x0a, 0x52, 0x37, 0xd6, 0xc4, + 0x7e, 0x75, 0xac, 0xda, 0x33, 0x96, 0x67, 0x12, 0xd7, 0x3d, 0x05, 0x4b, 0x0e, 0xc1, 0x09, 0xe0, + 0x02, 0x2c, 0x2b, 0xb1, 0x61, 0x89, 0xda, 0x4b, 0xb0, 0x44, 0x33, 0x1e, 0x3b, 0x76, 0x69, 0xab, + 0x96, 0x05, 0x12, 0x9b, 0x68, 0xde, 0xe4, 0x9b, 0xf7, 0xbe, 0xf7, 0xf9, 0x7b, 0x33, 0xa8, 0x7d, + 0x02, 0x1c, 0x5b, 0x43, 0xec, 0x92, 0xae, 0x5c, 0xd1, 0x10, 0xba, 0x87, 0x23, 0xe2, 0xb8, 0x03, + 0x0f, 0xba, 0x30, 0x06, 0xc2, 0x59, 0x27, 0x08, 0x29, 0xa7, 0xfa, 0x6a, 0x86, 0xec, 0xa4, 0xc8, + 0x4e, 0x8a, 0x6c, 0x3c, 0xb8, 0x2e, 0x0d, 0x3f, 0x4e, 0x52, 0x34, 0xea, 0x0e, 0x75, 0xa8, 0x5c, + 0x76, 0xc5, 0x4a, 0xed, 0x3e, 0xbc, 0xe4, 0x6c, 0x70, 0xe4, 0x74, 0x2d, 0xea, 0x12, 0xf9, 0x93, + 0xe0, 0x5a, 0x5f, 0x34, 0xd4, 0x78, 0x29, 0x18, 0xbd, 0x8d, 0x19, 0x07, 0x7f, 0x9b, 0x12, 0x1e, + 0x62, 0x8b, 0xef, 0x07, 0x36, 0xe6, 0x60, 0xeb, 0x6b, 0x68, 0xd1, 0x67, 0x8e, 0xc9, 0xe3, 0x00, + 0xcc, 0x51, 0xe8, 0x19, 0xda, 0x9a, 0xd6, 0xae, 0xf4, 0x91, 0xcf, 0x9c, 0x77, 0x71, 0x00, 0xfb, + 0xa1, 0xa7, 0x6f, 0xa2, 0x3a, 0x81, 0xc8, 0xb4, 0xd4, 0x41, 0x13, 0xdb, 0x76, 0x08, 0x8c, 0x19, + 0xd3, 0x12, 0xa9, 0x13, 0x88, 0xd2, 0x9c, 0xcf, 0x93, 0x7f, 0xc4, 0x09, 0xea, 0xd9, 0x7f, 0x9e, + 0x28, 0x25, 0x27, 0xa8, 0x67, 0x5f, 0x3c, 0x71, 0x07, 0x95, 0x99, 0xeb, 0x10, 0x08, 0x8d, 0x19, + 0x89, 0x51, 0x51, 0xeb, 0xf3, 0x34, 0xd2, 0x25, 0xf9, 0x83, 0xfe, 0x76, 0x6f, 0xf3, 0x05, 0x04, + 0x1e, 0x8d, 0x6f, 0x44, 0xfa, 0x2e, 0x9a, 0x97, 0xda, 0x98, 0xae, 0x2d, 0x89, 0x96, 0xfa, 0x73, + 0x32, 0xde, 0xb3, 0xf5, 0x06, 0x9a, 0x4f, 0x99, 0x29, 0x46, 0x59, 0xac, 0xeb, 0x68, 0x86, 0x60, + 0x1f, 0x14, 0x0b, 0xb9, 0x96, 0xdc, 0x62, 0x7f, 0x40, 0x3d, 0x63, 0x56, 0x71, 0x93, 0x91, 0xc8, + 0x63, 0x83, 0xe5, 0xfa, 0xd8, 0x63, 0x46, 0x59, 0x96, 0xc8, 0x62, 0x7d, 0x0b, 0x55, 0xc4, 0x27, + 0x90, 0x0c, 0x8d, 0xb9, 0x35, 0xad, 0xbd, 0xdc, 0x5b, 0xef, 0x5c, 0xe2, 0x84, 0xe0, 0xc8, 0xe9, + 0xc8, 0x6f, 0xb5, 0x4d, 0x5d, 0x22, 0xb8, 0x0b, 0x2e, 0xc9, 0x4a, 0xaf, 0xa3, 0x59, 0x08, 0xad, + 0xde, 0xa6, 0x31, 0x2f, 0xcb, 0x26, 0x81, 0xbe, 0x8a, 0x2a, 0x0e, 0x66, 0xa6, 0xe7, 0xfa, 0x2e, + 0x37, 0x2a, 0x49, 0x59, 0x07, 0xb3, 0xd7, 0x22, 0x6e, 0xfd, 0x9a, 0x46, 0xf7, 0x26, 0x72, 0x7d, + 0x70, 0xf9, 0xd0, 0x0e, 0x71, 0xb4, 0x03, 0x70, 0xf3, 0xaf, 0x7d, 0x8d, 0x70, 0x85, 0xa6, 0x4a, + 0x7f, 0xd7, 0xd4, 0x7d, 0xb4, 0x74, 0x22, 0xfa, 0xc8, 0x3c, 0x91, 0x28, 0xbd, 0x28, 0x37, 0x53, + 0x37, 0xb4, 0x51, 0x4d, 0xf8, 0x27, 0x52, 0xfc, 0xcd, 0x43, 0x00, 0xa5, 0xfd, 0x32, 0xf5, 0xec, + 0x5c, 0x5b, 0x02, 0x29, 0xbc, 0x59, 0x40, 0x96, 0x13, 0x24, 0x81, 0x28, 0x8f, 0x9c, 0x38, 0x6c, + 0x2e, 0xef, 0x30, 0xbd, 0x85, 0x96, 0x44, 0xad, 0x89, 0xa6, 0x89, 0xda, 0x0b, 0xd4, 0xb3, 0x77, + 0x95, 0xac, 0x02, 0x23, 0xaa, 0x14, 0x75, 0xaf, 0xf4, 0x17, 0x08, 0x44, 0x29, 0xa6, 0x35, 0x42, + 0xb5, 0x89, 0xf2, 0x6f, 0xf0, 0x88, 0xdd, 0x48, 0xed, 0x47, 0xa8, 0x5a, 0x90, 0x03, 0xc4, 0x58, + 0x95, 0x04, 0xfd, 0xbc, 0x20, 0x90, 0x1f, 0x90, 0x52, 0x61, 0x40, 0xa2, 0xfc, 0x7c, 0xec, 0x93, + 0xe0, 0x9f, 0x15, 0xfe, 0x94, 0x5a, 0xad, 0x78, 0xad, 0xb0, 0x5b, 0xcc, 0xe8, 0x13, 0xa4, 0x8f, + 0x88, 0xcb, 0x22, 0x1c, 0x98, 0xe3, 0x9e, 0x79, 0x88, 0x2d, 0x4e, 0xc3, 0x58, 0x5d, 0x2b, 0x35, + 0xf5, 0xcf, 0xfb, 0xde, 0x4e, 0xb2, 0x2f, 0xc6, 0x21, 0x12, 0x16, 0x53, 0x3c, 0x92, 0x40, 0xdf, + 0x40, 0x2b, 0xb9, 0x1c, 0x21, 0x1d, 0xf1, 0xec, 0x0e, 0xa9, 0x66, 0x29, 0xfa, 0x72, 0x5b, 0x5f, + 0x47, 0xcb, 0x16, 0x25, 0x04, 0x44, 0x3e, 0xf3, 0x04, 0xc6, 0xbe, 0x32, 0xd5, 0x52, 0xb6, 0x7b, + 0x00, 0x63, 0x5f, 0x48, 0xc3, 0x64, 0x4f, 0xd9, 0x05, 0x96, 0x5a, 0x8a, 0x15, 0x5a, 0xbd, 0xca, + 0x52, 0xad, 0xef, 0x1a, 0xaa, 0x4b, 0x69, 0xb6, 0x62, 0x0e, 0x16, 0xb5, 0x6f, 0x31, 0x7d, 0x8f, + 0x51, 0xed, 0x8a, 0x7b, 0xb6, 0x6a, 0x5d, 0xb8, 0x32, 0x37, 0xd0, 0x8a, 0x30, 0xe5, 0x40, 0xd5, + 0x30, 0x87, 0x98, 0x0d, 0x95, 0x36, 0x55, 0x02, 0x51, 0x5a, 0xfb, 0x15, 0x66, 0x43, 0x81, 0x15, + 0x26, 0x2f, 0x62, 0x95, 0x4a, 0xd4, 0xb3, 0x0b, 0xd8, 0x49, 0x57, 0xb3, 0x85, 0xae, 0xbe, 0x6a, + 0x68, 0x55, 0x76, 0xb5, 0x8b, 0x39, 0x44, 0x38, 0xfe, 0xaf, 0x1e, 0x92, 0xad, 0xbd, 0x6f, 0x67, + 0x4d, 0xed, 0xf4, 0xac, 0xa9, 0xfd, 0x3c, 0x6b, 0x6a, 0x1f, 0xcf, 0x9b, 0x53, 0xa7, 0xe7, 0xcd, + 0xa9, 0x1f, 0xe7, 0xcd, 0xa9, 0x83, 0xae, 0xe3, 0xf2, 0xe1, 0x68, 0xd0, 0xb1, 0xa8, 0x2f, 0x1f, + 0xd2, 0xa7, 0x17, 0xde, 0xd4, 0xe3, 0xdc, 0x8b, 0x1c, 0x07, 0xc0, 0x06, 0x65, 0xf9, 0xae, 0x3e, + 0xfb, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x11, 0xe2, 0x57, 0x41, 0x04, 0x08, 0x00, 0x00, } func (m *EventSystemContractUpdated) Marshal() (dAtA []byte, err error) { @@ -1095,6 +1164,57 @@ func (m *EventBytecodeUpdated) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *EventGatewayContractUpdated) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventGatewayContractUpdated) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventGatewayContractUpdated) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0x22 + } + if len(m.OldContractAddress) > 0 { + i -= len(m.OldContractAddress) + copy(dAtA[i:], m.OldContractAddress) + i = encodeVarintEvents(dAtA, i, uint64(len(m.OldContractAddress))) + i-- + dAtA[i] = 0x1a + } + if len(m.NewContractAddress) > 0 { + i -= len(m.NewContractAddress) + copy(dAtA[i:], m.NewContractAddress) + i = encodeVarintEvents(dAtA, i, uint64(len(m.NewContractAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.MsgTypeUrl) > 0 { + i -= len(m.MsgTypeUrl) + copy(dAtA[i:], m.MsgTypeUrl) + i = encodeVarintEvents(dAtA, i, uint64(len(m.MsgTypeUrl))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { offset -= sovEvents(v) base := offset @@ -1327,6 +1447,31 @@ func (m *EventBytecodeUpdated) Size() (n int) { return n } +func (m *EventGatewayContractUpdated) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.MsgTypeUrl) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.NewContractAddress) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.OldContractAddress) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + return n +} + func sovEvents(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -2885,6 +3030,184 @@ func (m *EventBytecodeUpdated) Unmarshal(dAtA []byte) error { } return nil } +func (m *EventGatewayContractUpdated) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventGatewayContractUpdated: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventGatewayContractUpdated: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MsgTypeUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MsgTypeUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NewContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OldContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OldContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipEvents(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/fungible/types/message_update_gateway_contract.go b/x/fungible/types/message_update_gateway_contract.go new file mode 100644 index 0000000000..d83d4d4da6 --- /dev/null +++ b/x/fungible/types/message_update_gateway_contract.go @@ -0,0 +1,57 @@ +package types + +import ( + cosmoserrors "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + ethcommon "github.com/ethereum/go-ethereum/common" +) + +const TypeMsgUpdateGatewayContract = "update_gateway_contract" + +var _ sdk.Msg = &MsgUpdateGatewayContract{} + +func NewMsgUpdateGatewayContract(creator string, gatewayContractAddr string) *MsgUpdateGatewayContract { + return &MsgUpdateGatewayContract{ + Creator: creator, + NewGatewayContractAddress: gatewayContractAddr, + } +} + +func (msg *MsgUpdateGatewayContract) Route() string { + return RouterKey +} + +func (msg *MsgUpdateGatewayContract) Type() string { + return TypeMsgUpdateGatewayContract +} + +func (msg *MsgUpdateGatewayContract) GetSigners() []sdk.AccAddress { + creator, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + panic(err) + } + return []sdk.AccAddress{creator} +} + +func (msg *MsgUpdateGatewayContract) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} + +func (msg *MsgUpdateGatewayContract) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.Creator) + if err != nil { + return cosmoserrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid creator address (%s)", err) + } + // check if the system contract address is valid + if ethcommon.HexToAddress(msg.NewGatewayContractAddress) == (ethcommon.Address{}) { + return cosmoserrors.Wrapf( + sdkerrors.ErrInvalidAddress, + "invalid gateway contract address (%s)", + msg.NewGatewayContractAddress, + ) + } + + return nil +} diff --git a/x/fungible/types/message_update_gateway_contract_test.go b/x/fungible/types/message_update_gateway_contract_test.go new file mode 100644 index 0000000000..f1c143591d --- /dev/null +++ b/x/fungible/types/message_update_gateway_contract_test.go @@ -0,0 +1,105 @@ +package types_test + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/stretchr/testify/require" + + "github.com/zeta-chain/zetacore/testutil/sample" + "github.com/zeta-chain/zetacore/x/fungible/types" +) + +func TestMsgUpdateGatewayContract_ValidateBasic(t *testing.T) { + tests := []struct { + name string + msg *types.MsgUpdateGatewayContract + err error + }{ + { + name: "invalid address", + msg: types.NewMsgUpdateGatewayContract("invalid_address", sample.EthAddress().String()), + err: sdkerrors.ErrInvalidAddress, + }, + { + name: "invalid new gateway contract address", + msg: types.NewMsgUpdateGatewayContract(sample.AccAddress(), "invalid_address"), + err: sdkerrors.ErrInvalidAddress, + }, + { + name: "valid message", + msg: types.NewMsgUpdateGatewayContract(sample.AccAddress(), sample.EthAddress().String()), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.msg.ValidateBasic() + if tt.err != nil { + require.ErrorIs(t, err, tt.err) + return + } + require.NoError(t, err) + }) + } +} + +func TestMsgUpdateGatewayContract_GetSigners(t *testing.T) { + signer := sample.AccAddress() + tests := []struct { + name string + msg types.MsgUpdateGatewayContract + panics bool + }{ + { + name: "valid signer", + msg: types.MsgUpdateGatewayContract{ + Creator: signer, + }, + panics: false, + }, + { + name: "invalid signer", + msg: types.MsgUpdateGatewayContract{ + Creator: "invalid", + }, + panics: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if !tt.panics { + signers := tt.msg.GetSigners() + require.Equal(t, []sdk.AccAddress{sdk.MustAccAddressFromBech32(signer)}, signers) + } else { + require.Panics(t, func() { + tt.msg.GetSigners() + }) + } + }) + } +} + +func TestMsgUpdateGatewayContract_Type(t *testing.T) { + msg := types.MsgUpdateGatewayContract{ + Creator: sample.AccAddress(), + } + require.Equal(t, types.TypeMsgUpdateGatewayContract, msg.Type()) +} + +func TestMsgUpdateGatewayContract_Route(t *testing.T) { + msg := types.MsgUpdateGatewayContract{ + Creator: sample.AccAddress(), + } + require.Equal(t, types.RouterKey, msg.Route()) +} + +func TestMsgUpdateGatewayContract_GetSignBytes(t *testing.T) { + msg := types.MsgUpdateGatewayContract{ + Creator: sample.AccAddress(), + } + require.NotPanics(t, func() { + msg.GetSignBytes() + }) +} diff --git a/x/fungible/types/system_contract.pb.go b/x/fungible/types/system_contract.pb.go index ef828c5958..ef9c5ba15f 100644 --- a/x/fungible/types/system_contract.pb.go +++ b/x/fungible/types/system_contract.pb.go @@ -26,6 +26,7 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type SystemContract struct { SystemContract string `protobuf:"bytes,1,opt,name=system_contract,json=systemContract,proto3" json:"system_contract,omitempty"` ConnectorZevm string `protobuf:"bytes,2,opt,name=connector_zevm,json=connectorZevm,proto3" json:"connector_zevm,omitempty"` + Gateway string `protobuf:"bytes,3,opt,name=gateway,proto3" json:"gateway,omitempty"` } func (m *SystemContract) Reset() { *m = SystemContract{} } @@ -75,6 +76,13 @@ func (m *SystemContract) GetConnectorZevm() string { return "" } +func (m *SystemContract) GetGateway() string { + if m != nil { + return m.Gateway + } + return "" +} + func init() { proto.RegisterType((*SystemContract)(nil), "zetachain.zetacore.fungible.SystemContract") } @@ -84,21 +92,22 @@ func init() { } var fileDescriptor_98608b52bf5b9ddd = []byte{ - // 209 bytes of a gzipped FileDescriptorProto + // 226 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0xac, 0x4a, 0x2d, 0x49, 0x4c, 0xce, 0x48, 0xcc, 0xcc, 0xd3, 0x07, 0xb3, 0xf2, 0x8b, 0x52, 0xf5, 0xd3, 0x4a, 0xf3, 0xd2, 0x33, 0x93, 0x72, 0x52, 0xf5, 0x8b, 0x2b, 0x8b, 0x4b, 0x52, 0x73, 0xe3, 0x93, 0xf3, 0xf3, 0x4a, 0x8a, 0x12, 0x93, 0x4b, 0xf4, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0xa4, 0xe1, 0x5a, 0xf4, 0x60, 0x5a, 0xf4, 0x60, 0x5a, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0xea, 0xf4, 0x41, 0x2c, 0x88, - 0x16, 0xa5, 0x04, 0x2e, 0xbe, 0x60, 0xb0, 0x59, 0xce, 0x50, 0xa3, 0x84, 0xd4, 0xb9, 0xf8, 0xd1, + 0x16, 0xa5, 0x2a, 0x2e, 0xbe, 0x60, 0xb0, 0x59, 0xce, 0x50, 0xa3, 0x84, 0xd4, 0xb9, 0xf8, 0xd1, 0x4c, 0x97, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0xe2, 0x2b, 0x46, 0x55, 0xa8, 0xca, 0xc5, 0x97, 0x9c, 0x9f, 0x97, 0x97, 0x9a, 0x5c, 0x92, 0x5f, 0x14, 0x5f, 0x95, 0x5a, 0x96, 0x2b, 0xc1, 0x04, - 0x56, 0xc7, 0x0b, 0x17, 0x8d, 0x4a, 0x2d, 0xcb, 0x75, 0xf2, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, - 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, - 0xc6, 0x63, 0x39, 0x86, 0x28, 0xfd, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, - 0xb0, 0x17, 0x75, 0xd1, 0x7c, 0x5b, 0x81, 0xf0, 0x6f, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, - 0xd8, 0xcd, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x75, 0x5d, 0xa7, 0x0c, 0x1b, 0x01, 0x00, - 0x00, + 0x56, 0xc7, 0x0b, 0x17, 0x8d, 0x4a, 0x2d, 0xcb, 0x15, 0x92, 0xe0, 0x62, 0x4f, 0x4f, 0x2c, 0x49, + 0x2d, 0x4f, 0xac, 0x94, 0x60, 0x06, 0xcb, 0xc3, 0xb8, 0x4e, 0x9e, 0x27, 0x1e, 0xc9, 0x31, 0x5e, + 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, + 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x9f, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, + 0x0b, 0xf6, 0xbc, 0x2e, 0x5a, 0x38, 0x54, 0x20, 0x42, 0xa2, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, + 0x0d, 0xec, 0x1b, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, 0x8e, 0xa4, 0xee, 0x35, 0x01, + 0x00, 0x00, } func (m *SystemContract) Marshal() (dAtA []byte, err error) { @@ -121,6 +130,13 @@ func (m *SystemContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Gateway) > 0 { + i -= len(m.Gateway) + copy(dAtA[i:], m.Gateway) + i = encodeVarintSystemContract(dAtA, i, uint64(len(m.Gateway))) + i-- + dAtA[i] = 0x1a + } if len(m.ConnectorZevm) > 0 { i -= len(m.ConnectorZevm) copy(dAtA[i:], m.ConnectorZevm) @@ -163,6 +179,10 @@ func (m *SystemContract) Size() (n int) { if l > 0 { n += 1 + l + sovSystemContract(uint64(l)) } + l = len(m.Gateway) + if l > 0 { + n += 1 + l + sovSystemContract(uint64(l)) + } return n } @@ -265,6 +285,38 @@ func (m *SystemContract) Unmarshal(dAtA []byte) error { } m.ConnectorZevm = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Gateway", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSystemContract + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSystemContract + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSystemContract + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Gateway = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSystemContract(dAtA[iNdEx:]) diff --git a/x/fungible/types/tx.pb.go b/x/fungible/types/tx.pb.go index 8409ef6f36..f5c3778af3 100644 --- a/x/fungible/types/tx.pb.go +++ b/x/fungible/types/tx.pb.go @@ -921,6 +921,94 @@ func (m *MsgUnpauseZRC20Response) XXX_DiscardUnknown() { var xxx_messageInfo_MsgUnpauseZRC20Response proto.InternalMessageInfo +type MsgUpdateGatewayContract struct { + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + NewGatewayContractAddress string `protobuf:"bytes,2,opt,name=new_gateway_contract_address,json=newGatewayContractAddress,proto3" json:"new_gateway_contract_address,omitempty"` +} + +func (m *MsgUpdateGatewayContract) Reset() { *m = MsgUpdateGatewayContract{} } +func (m *MsgUpdateGatewayContract) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateGatewayContract) ProtoMessage() {} +func (*MsgUpdateGatewayContract) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{18} +} +func (m *MsgUpdateGatewayContract) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateGatewayContract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateGatewayContract.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateGatewayContract) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateGatewayContract.Merge(m, src) +} +func (m *MsgUpdateGatewayContract) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateGatewayContract) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateGatewayContract.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateGatewayContract proto.InternalMessageInfo + +func (m *MsgUpdateGatewayContract) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgUpdateGatewayContract) GetNewGatewayContractAddress() string { + if m != nil { + return m.NewGatewayContractAddress + } + return "" +} + +type MsgUpdateGatewayContractResponse struct { +} + +func (m *MsgUpdateGatewayContractResponse) Reset() { *m = MsgUpdateGatewayContractResponse{} } +func (m *MsgUpdateGatewayContractResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateGatewayContractResponse) ProtoMessage() {} +func (*MsgUpdateGatewayContractResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_7bea9688d1d01113, []int{19} +} +func (m *MsgUpdateGatewayContractResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateGatewayContractResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateGatewayContractResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgUpdateGatewayContractResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateGatewayContractResponse.Merge(m, src) +} +func (m *MsgUpdateGatewayContractResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateGatewayContractResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateGatewayContractResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateGatewayContractResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*MsgDeploySystemContracts)(nil), "zetachain.zetacore.fungible.MsgDeploySystemContracts") proto.RegisterType((*MsgDeploySystemContractsResponse)(nil), "zetachain.zetacore.fungible.MsgDeploySystemContractsResponse") @@ -940,6 +1028,8 @@ func init() { proto.RegisterType((*MsgPauseZRC20Response)(nil), "zetachain.zetacore.fungible.MsgPauseZRC20Response") proto.RegisterType((*MsgUnpauseZRC20)(nil), "zetachain.zetacore.fungible.MsgUnpauseZRC20") proto.RegisterType((*MsgUnpauseZRC20Response)(nil), "zetachain.zetacore.fungible.MsgUnpauseZRC20Response") + proto.RegisterType((*MsgUpdateGatewayContract)(nil), "zetachain.zetacore.fungible.MsgUpdateGatewayContract") + proto.RegisterType((*MsgUpdateGatewayContractResponse)(nil), "zetachain.zetacore.fungible.MsgUpdateGatewayContractResponse") } func init() { @@ -947,69 +1037,73 @@ func init() { } var fileDescriptor_7bea9688d1d01113 = []byte{ - // 992 bytes of a gzipped FileDescriptorProto + // 1047 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xdd, 0x6e, 0xdb, 0x36, - 0x14, 0x8e, 0x92, 0xe6, 0xef, 0x2c, 0x4e, 0x32, 0xc2, 0x6d, 0x54, 0x65, 0x70, 0x5a, 0x35, 0x6b, - 0xb3, 0x62, 0xb5, 0x3a, 0x2f, 0x5b, 0x31, 0x60, 0xed, 0xb0, 0x78, 0xcd, 0x56, 0xa0, 0x06, 0x06, - 0x35, 0xe9, 0xb0, 0xdc, 0x08, 0x8c, 0xc4, 0xc8, 0x42, 0x6c, 0x52, 0x13, 0xe5, 0xb9, 0xee, 0xdd, - 0x80, 0x5d, 0x15, 0x18, 0x50, 0x60, 0x0f, 0xb0, 0x67, 0xd8, 0x5b, 0xf4, 0xb2, 0x97, 0x43, 0x31, - 0x14, 0x43, 0xf2, 0x22, 0x03, 0xa9, 0x9f, 0x4a, 0xb6, 0x15, 0x3b, 0x4e, 0x6f, 0x12, 0x91, 0xfe, - 0xce, 0xc7, 0x8f, 0x87, 0xe7, 0x3b, 0x94, 0x60, 0xf3, 0x39, 0x09, 0xb1, 0xdd, 0xc4, 0x1e, 0x35, - 0xe4, 0x13, 0x0b, 0x88, 0x71, 0xd4, 0xa1, 0xae, 0x77, 0xd8, 0x22, 0x46, 0xf8, 0xac, 0xea, 0x07, - 0x2c, 0x64, 0x68, 0x3d, 0x45, 0x55, 0x13, 0x54, 0x35, 0x41, 0x69, 0x65, 0x97, 0xb9, 0x4c, 0xe2, - 0x0c, 0xf1, 0x14, 0x85, 0x68, 0x37, 0x87, 0x10, 0xfb, 0xc7, 0xae, 0x61, 0x33, 0x8f, 0xca, 0x3f, - 0x11, 0x4e, 0xdf, 0x06, 0xb5, 0xc1, 0xdd, 0xef, 0x88, 0xdf, 0x62, 0xbd, 0x27, 0x3d, 0x1e, 0x92, - 0x76, 0x9d, 0xd1, 0x30, 0xc0, 0x76, 0xc8, 0x91, 0x0a, 0xf3, 0x76, 0x40, 0x70, 0xc8, 0x02, 0x55, - 0xb9, 0xa6, 0x6c, 0x2d, 0x9a, 0xc9, 0x50, 0xff, 0x57, 0x81, 0x6b, 0x45, 0x61, 0x26, 0xe1, 0x3e, - 0xa3, 0x9c, 0xa0, 0xdb, 0xb0, 0xda, 0xa1, 0x1e, 0xef, 0x62, 0xff, 0x69, 0x6d, 0x17, 0xdb, 0x21, - 0x0b, 0x7a, 0x31, 0xcf, 0xc0, 0x3c, 0x2a, 0xc3, 0x6c, 0x57, 0xe8, 0x54, 0xa7, 0x25, 0x20, 0x1a, - 0xa0, 0x2d, 0x58, 0x49, 0x91, 0x26, 0xeb, 0x84, 0x24, 0x50, 0x67, 0xe4, 0xef, 0xfd, 0xd3, 0x68, - 0x13, 0x4a, 0x36, 0xa3, 0x94, 0x08, 0xb6, 0x83, 0x87, 0x4f, 0x1b, 0xea, 0x25, 0x89, 0xcb, 0x4f, - 0xa2, 0x9b, 0xb0, 0xcc, 0x73, 0x62, 0xd5, 0x59, 0x09, 0xeb, 0x9b, 0xd5, 0x5f, 0x4c, 0xc3, 0xd5, - 0x06, 0x77, 0xf7, 0x7d, 0x07, 0x87, 0xe4, 0xc0, 0xac, 0xd7, 0xee, 0xfe, 0xe4, 0x85, 0x4d, 0x27, - 0xc0, 0xdd, 0x5d, 0x42, 0x8a, 0xd3, 0x82, 0x6e, 0x40, 0xe9, 0x79, 0x60, 0xd7, 0xee, 0x5a, 0xd8, - 0x71, 0x02, 0xc2, 0x79, 0xbc, 0x9b, 0x25, 0x39, 0xf9, 0x6d, 0x34, 0x87, 0x7e, 0x86, 0x55, 0x4a, - 0xba, 0x56, 0x37, 0x66, 0xb4, 0x8e, 0x08, 0x51, 0xe7, 0x04, 0x6e, 0xc7, 0x78, 0xf5, 0x76, 0x63, - 0xea, 0xcd, 0xdb, 0x8d, 0x5b, 0xae, 0x17, 0x36, 0x3b, 0x87, 0x55, 0x9b, 0xb5, 0x0d, 0x9b, 0xf1, - 0x36, 0xe3, 0xf1, 0xbf, 0x3b, 0xdc, 0x39, 0x36, 0xc2, 0x9e, 0x4f, 0x78, 0x75, 0xdf, 0xa3, 0xa1, - 0xb9, 0x4c, 0x49, 0x37, 0xab, 0xec, 0x09, 0x94, 0x04, 0xb5, 0x8b, 0xb9, 0xd5, 0xf2, 0xda, 0x5e, - 0xa8, 0xce, 0x4f, 0xc6, 0xfb, 0x01, 0x25, 0xdd, 0xef, 0x31, 0x7f, 0x2c, 0x38, 0xf4, 0x1b, 0x70, - 0xbd, 0x30, 0x17, 0xc9, 0x59, 0xeb, 0x01, 0xac, 0xa5, 0xa0, 0x7c, 0x3d, 0x9c, 0x91, 0xae, 0xfb, - 0xb0, 0x2e, 0xe4, 0x46, 0xc9, 0xb7, 0xec, 0x38, 0xa0, 0x2f, 0x79, 0x2a, 0x25, 0xdd, 0x3c, 0x63, - 0x9c, 0x48, 0xfd, 0x3a, 0x6c, 0x14, 0xac, 0x99, 0xca, 0xfa, 0x6b, 0x1a, 0xb4, 0xb4, 0x4e, 0x77, - 0x63, 0xc7, 0xd4, 0x99, 0x47, 0xe5, 0x46, 0xce, 0x90, 0x56, 0x86, 0xd9, 0x87, 0x02, 0x92, 0xd4, - 0xa3, 0x1c, 0xa0, 0x2d, 0x58, 0x3d, 0x62, 0x01, 0xf1, 0x5c, 0x6a, 0x49, 0x6b, 0x59, 0x9e, 0x23, - 0x0b, 0x72, 0xc6, 0x5c, 0x8e, 0xe7, 0xeb, 0x62, 0xfa, 0x91, 0x83, 0x34, 0x58, 0x70, 0x88, 0xed, - 0xb5, 0x71, 0x8b, 0xcb, 0x52, 0x2c, 0x99, 0xe9, 0x18, 0x21, 0xb8, 0x44, 0x71, 0x9b, 0xc4, 0xb5, - 0x27, 0x9f, 0xd1, 0x15, 0x98, 0xe3, 0xbd, 0xf6, 0x21, 0x6b, 0x45, 0xa5, 0x60, 0xc6, 0x23, 0xb4, - 0x03, 0x8b, 0xc2, 0xac, 0x96, 0x38, 0x1c, 0x79, 0x9a, 0xcb, 0xb5, 0x8f, 0xab, 0x43, 0xba, 0x81, - 0x7f, 0xec, 0x56, 0xa5, 0xab, 0xc5, 0xe6, 0xf6, 0x7a, 0x3e, 0x31, 0x17, 0xec, 0xf8, 0x09, 0xad, - 0xc3, 0xe2, 0xbb, 0x8a, 0x58, 0x90, 0x72, 0x17, 0xdc, 0xe4, 0x74, 0x1f, 0x80, 0x5e, 0x9c, 0xa0, - 0xd4, 0xca, 0x2a, 0xcc, 0x27, 0xa7, 0x12, 0x27, 0x2a, 0x1e, 0xea, 0xfb, 0x50, 0x6e, 0x70, 0xd7, - 0x24, 0x6d, 0xf6, 0x2b, 0xd9, 0x8d, 0x73, 0xc0, 0x3c, 0x7a, 0x41, 0x93, 0xe8, 0x15, 0xf8, 0x68, - 0x18, 0x6d, 0x7a, 0xb0, 0xbf, 0x2b, 0x19, 0x87, 0x26, 0xc7, 0xbe, 0xd3, 0x0b, 0x89, 0xcd, 0x9c, - 0xb3, 0x1c, 0xfa, 0x09, 0xac, 0x16, 0xd4, 0xd9, 0x8a, 0x9d, 0x2f, 0x2f, 0xa4, 0x47, 0x66, 0x12, - 0x84, 0x56, 0x13, 0xf3, 0x66, 0xdc, 0x7a, 0x84, 0x37, 0xea, 0xcc, 0x21, 0x3f, 0x60, 0xde, 0xcc, - 0x79, 0xa3, 0x5f, 0x45, 0xaa, 0xf5, 0x6f, 0x45, 0x16, 0x61, 0xc6, 0x41, 0x8f, 0xbd, 0x5f, 0x3a, - 0x9e, 0xe3, 0x85, 0xbd, 0x3a, 0xf6, 0x2f, 0xda, 0x4e, 0xf6, 0xa0, 0xd4, 0x4a, 0xe8, 0x2c, 0x1b, - 0xfb, 0x91, 0xcc, 0xf3, 0x7b, 0x7e, 0xa9, 0x95, 0x11, 0xa5, 0x6f, 0xca, 0xb2, 0x28, 0x90, 0x9c, - 0xee, 0xcc, 0x84, 0x52, 0x83, 0xbb, 0x3f, 0xe2, 0x0e, 0x27, 0xa3, 0x0c, 0x75, 0x0b, 0x56, 0x72, - 0x7b, 0x21, 0x62, 0x37, 0x33, 0xa2, 0xf7, 0x66, 0x77, 0x43, 0xb8, 0xbe, 0x06, 0x97, 0x73, 0x9c, - 0xe9, 0x62, 0x7b, 0xb0, 0x22, 0x24, 0x51, 0xff, 0xbd, 0x2e, 0x77, 0x35, 0x6a, 0x5c, 0x19, 0xd6, - 0x64, 0xc1, 0xda, 0x9b, 0x45, 0x98, 0x69, 0x70, 0x17, 0xfd, 0xa1, 0xc0, 0xe5, 0xe1, 0x17, 0xe4, - 0x17, 0xd5, 0x33, 0x2e, 0xe6, 0x6a, 0xd1, 0x05, 0xa9, 0xdd, 0x9f, 0x28, 0x2c, 0x35, 0xe3, 0x9f, - 0x0a, 0xac, 0x15, 0x75, 0xb4, 0x7b, 0xe3, 0x51, 0x0f, 0x04, 0x6a, 0xdf, 0x4c, 0x18, 0x98, 0xaa, - 0xfa, 0x4d, 0x81, 0x0f, 0x07, 0xdb, 0xc0, 0x67, 0xa3, 0x68, 0x07, 0x42, 0xb4, 0xaf, 0xce, 0x1d, - 0x92, 0x6a, 0x78, 0xa1, 0x40, 0x79, 0xe8, 0x1d, 0xb4, 0x3d, 0x8a, 0x73, 0x58, 0x94, 0xf6, 0xf5, - 0x24, 0x51, 0xa9, 0x98, 0x97, 0x0a, 0x5c, 0x29, 0xe8, 0x4f, 0x5f, 0x8e, 0x47, 0xdc, 0x1f, 0xa7, - 0x3d, 0x98, 0x2c, 0x6e, 0x88, 0xa4, 0x81, 0x97, 0x9a, 0x31, 0x25, 0xf5, 0xc7, 0x8d, 0x2b, 0xa9, - 0xe8, 0xc5, 0x41, 0x16, 0x73, 0x51, 0x67, 0xbc, 0x77, 0x0e, 0xee, 0x6c, 0xe0, 0xe8, 0x62, 0x1e, - 0xd1, 0xd8, 0x50, 0x0b, 0x20, 0xd3, 0xd5, 0x6e, 0x8f, 0xa2, 0x7b, 0x87, 0xd5, 0x6a, 0xe3, 0x63, - 0xd3, 0xd5, 0x02, 0x58, 0xca, 0xb5, 0xb5, 0x4f, 0x47, 0xca, 0xcf, 0xa0, 0xb5, 0xed, 0xf3, 0xa0, - 0x93, 0x35, 0x77, 0x1e, 0xbd, 0x3a, 0xa9, 0x28, 0xaf, 0x4f, 0x2a, 0xca, 0x7f, 0x27, 0x15, 0xe5, - 0xe5, 0x69, 0x65, 0xea, 0xf5, 0x69, 0x65, 0xea, 0x9f, 0xd3, 0xca, 0xd4, 0x81, 0x91, 0xb9, 0x31, - 0x04, 0xdf, 0x9d, 0xbe, 0xaf, 0x88, 0x67, 0x99, 0x0f, 0x14, 0x71, 0x7d, 0x1c, 0xce, 0xc9, 0x2f, - 0x89, 0xcf, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xe6, 0xe8, 0x3c, 0x66, 0xcc, 0x0c, 0x00, 0x00, + 0x14, 0x8e, 0x92, 0xe6, 0xef, 0x2c, 0x4e, 0x32, 0xc2, 0x6d, 0x14, 0xa5, 0x70, 0x5a, 0x35, 0x6b, + 0xb3, 0x62, 0xb5, 0x3b, 0x2f, 0x5d, 0x31, 0x60, 0x6d, 0xb1, 0x78, 0x4d, 0x57, 0xa0, 0x06, 0x06, + 0x35, 0xe9, 0xb0, 0xdc, 0x08, 0x8c, 0xc4, 0xc8, 0x42, 0x6c, 0x51, 0x13, 0xe5, 0xb9, 0xee, 0xdd, + 0x80, 0x5d, 0x15, 0x18, 0x50, 0x60, 0x0f, 0xb0, 0x67, 0xd8, 0x5b, 0xf4, 0xb2, 0x97, 0xc3, 0x30, + 0x14, 0x43, 0x72, 0xb7, 0xa7, 0x18, 0x48, 0x49, 0xac, 0x64, 0x5b, 0xb6, 0xe3, 0xf6, 0x26, 0x11, + 0xe9, 0xf3, 0x7d, 0xfc, 0x78, 0x78, 0xce, 0x47, 0x09, 0xb6, 0x5e, 0x90, 0x10, 0x5b, 0x0d, 0xec, + 0x7a, 0x15, 0xf1, 0x44, 0x03, 0x52, 0x39, 0x6e, 0x7b, 0x8e, 0x7b, 0xd4, 0x24, 0x95, 0xf0, 0x79, + 0xd9, 0x0f, 0x68, 0x48, 0xd1, 0x86, 0x8c, 0x2a, 0x27, 0x51, 0xe5, 0x24, 0x4a, 0x2b, 0x3a, 0xd4, + 0xa1, 0x22, 0xae, 0xc2, 0x9f, 0x22, 0x88, 0x76, 0x7d, 0x00, 0xb1, 0x7f, 0xe2, 0x54, 0x2c, 0xea, + 0x7a, 0xe2, 0x4f, 0x14, 0xa7, 0xef, 0x80, 0x5a, 0x67, 0xce, 0xb7, 0xc4, 0x6f, 0xd2, 0xee, 0xd3, + 0x2e, 0x0b, 0x49, 0xab, 0x46, 0xbd, 0x30, 0xc0, 0x56, 0xc8, 0x90, 0x0a, 0xf3, 0x56, 0x40, 0x70, + 0x48, 0x03, 0x55, 0xb9, 0xa2, 0x6c, 0x2f, 0x1a, 0xc9, 0x50, 0xff, 0x47, 0x81, 0x2b, 0x79, 0x30, + 0x83, 0x30, 0x9f, 0x7a, 0x8c, 0xa0, 0x9b, 0xb0, 0xda, 0xf6, 0x5c, 0xd6, 0xc1, 0xfe, 0xb3, 0xea, + 0x1e, 0xb6, 0x42, 0x1a, 0x74, 0x63, 0x9e, 0xbe, 0x79, 0x54, 0x84, 0xd9, 0x0e, 0xd7, 0xa9, 0x4e, + 0x8b, 0x80, 0x68, 0x80, 0xb6, 0x61, 0x45, 0x46, 0x1a, 0xb4, 0x1d, 0x92, 0x40, 0x9d, 0x11, 0xbf, + 0xf7, 0x4e, 0xa3, 0x2d, 0x28, 0x58, 0xd4, 0xf3, 0x08, 0x67, 0x3b, 0x7c, 0xf8, 0xac, 0xae, 0x5e, + 0x10, 0x71, 0xd9, 0x49, 0x74, 0x1d, 0x96, 0x59, 0x46, 0xac, 0x3a, 0x2b, 0xc2, 0x7a, 0x66, 0xf5, + 0x97, 0xd3, 0xb0, 0x5e, 0x67, 0xce, 0x81, 0x6f, 0xe3, 0x90, 0x1c, 0x1a, 0xb5, 0xea, 0xed, 0x1f, + 0xdc, 0xb0, 0x61, 0x07, 0xb8, 0xb3, 0x47, 0x48, 0x7e, 0x5a, 0xd0, 0x35, 0x28, 0xbc, 0x08, 0xac, + 0xea, 0x6d, 0x13, 0xdb, 0x76, 0x40, 0x18, 0x8b, 0x77, 0xb3, 0x24, 0x26, 0xbf, 0x89, 0xe6, 0xd0, + 0x8f, 0xb0, 0xea, 0x91, 0x8e, 0xd9, 0x89, 0x19, 0xcd, 0x63, 0x42, 0xd4, 0x39, 0x1e, 0xb7, 0x5b, + 0x79, 0xfd, 0x76, 0x73, 0xea, 0xef, 0xb7, 0x9b, 0x37, 0x1c, 0x37, 0x6c, 0xb4, 0x8f, 0xca, 0x16, + 0x6d, 0x55, 0x2c, 0xca, 0x5a, 0x94, 0xc5, 0xff, 0x6e, 0x31, 0xfb, 0xa4, 0x12, 0x76, 0x7d, 0xc2, + 0xca, 0x07, 0xae, 0x17, 0x1a, 0xcb, 0x1e, 0xe9, 0xa4, 0x95, 0x3d, 0x85, 0x02, 0xa7, 0x76, 0x30, + 0x33, 0x9b, 0x6e, 0xcb, 0x0d, 0xd5, 0xf9, 0xc9, 0x78, 0x3f, 0xf2, 0x48, 0xe7, 0x11, 0x66, 0x4f, + 0x38, 0x87, 0x7e, 0x0d, 0xae, 0xe6, 0xe6, 0x22, 0x39, 0x6b, 0x3d, 0x80, 0x35, 0x19, 0x94, 0xad, + 0x87, 0x21, 0xe9, 0xba, 0x07, 0x1b, 0x5c, 0x6e, 0x94, 0x7c, 0xd3, 0x8a, 0x01, 0x3d, 0xc9, 0x53, + 0x3d, 0xd2, 0xc9, 0x32, 0xc6, 0x89, 0xd4, 0xaf, 0xc2, 0x66, 0xce, 0x9a, 0x52, 0xd6, 0x1f, 0xd3, + 0xa0, 0xc9, 0x3a, 0xdd, 0x8b, 0x3b, 0xa6, 0x46, 0x5d, 0x4f, 0x6c, 0x64, 0x88, 0xb4, 0x22, 0xcc, + 0x3e, 0xe4, 0x21, 0x49, 0x3d, 0x8a, 0x01, 0xda, 0x86, 0xd5, 0x63, 0x1a, 0x10, 0xd7, 0xf1, 0x4c, + 0xd1, 0x5a, 0xa6, 0x6b, 0x8b, 0x82, 0x9c, 0x31, 0x96, 0xe3, 0xf9, 0x1a, 0x9f, 0x7e, 0x6c, 0x23, + 0x0d, 0x16, 0x6c, 0x62, 0xb9, 0x2d, 0xdc, 0x64, 0xa2, 0x14, 0x0b, 0x86, 0x1c, 0x23, 0x04, 0x17, + 0x3c, 0xdc, 0x22, 0x71, 0xed, 0x89, 0x67, 0x74, 0x09, 0xe6, 0x58, 0xb7, 0x75, 0x44, 0x9b, 0x51, + 0x29, 0x18, 0xf1, 0x08, 0xed, 0xc2, 0x22, 0x6f, 0x56, 0x93, 0x1f, 0x8e, 0x38, 0xcd, 0xe5, 0xea, + 0x27, 0xe5, 0x01, 0x6e, 0xe0, 0x9f, 0x38, 0x65, 0xd1, 0xd5, 0x7c, 0x73, 0xfb, 0x5d, 0x9f, 0x18, + 0x0b, 0x56, 0xfc, 0x84, 0x36, 0x60, 0xf1, 0x5d, 0x45, 0x2c, 0x08, 0xb9, 0x0b, 0x4e, 0x72, 0xba, + 0xf7, 0x41, 0xcf, 0x4f, 0x90, 0x6c, 0x65, 0x15, 0xe6, 0x93, 0x53, 0x89, 0x13, 0x15, 0x0f, 0xf5, + 0x03, 0x28, 0xd6, 0x99, 0x63, 0x90, 0x16, 0xfd, 0x99, 0xec, 0xc5, 0x39, 0xa0, 0xae, 0xf7, 0x9e, + 0x4d, 0xa2, 0x97, 0xe0, 0xf2, 0x20, 0x5a, 0x79, 0xb0, 0xbf, 0x2a, 0xa9, 0x0e, 0x4d, 0x8e, 0x7d, + 0xb7, 0x1b, 0x12, 0x8b, 0xda, 0xc3, 0x3a, 0xf4, 0x53, 0x58, 0xcd, 0xa9, 0xb3, 0x15, 0x2b, 0x5b, + 0x5e, 0x48, 0x8f, 0x9a, 0x89, 0x13, 0x9a, 0x0d, 0xcc, 0x1a, 0xb1, 0xf5, 0xf0, 0xde, 0xa8, 0x51, + 0x9b, 0x7c, 0x87, 0x59, 0x23, 0xd3, 0x1b, 0xbd, 0x2a, 0xa4, 0xd6, 0x3f, 0x15, 0x51, 0x84, 0xa9, + 0x0e, 0x7a, 0xe2, 0xfe, 0xd4, 0x76, 0x6d, 0x37, 0xec, 0xd6, 0xb0, 0xff, 0xbe, 0x76, 0xb2, 0x0f, + 0x85, 0x66, 0x42, 0x67, 0x5a, 0xd8, 0x8f, 0x64, 0x9e, 0xbf, 0xe7, 0x97, 0x9a, 0x29, 0x51, 0xfa, + 0x96, 0x28, 0x8b, 0x1c, 0xc9, 0x72, 0x67, 0x06, 0x14, 0xea, 0xcc, 0xf9, 0x1e, 0xb7, 0x19, 0x19, + 0xd5, 0x50, 0x37, 0x60, 0x25, 0xb3, 0x17, 0xc2, 0x77, 0x33, 0xc3, 0xbd, 0x37, 0xbd, 0x1b, 0xc2, + 0xf4, 0x35, 0xb8, 0x98, 0xe1, 0x94, 0x8b, 0xed, 0xc3, 0x0a, 0x97, 0xe4, 0xf9, 0x1f, 0x74, 0xb9, + 0xf5, 0xc8, 0xb8, 0x52, 0xac, 0x72, 0xc1, 0xb6, 0xb8, 0x1a, 0xa3, 0x1c, 0x3c, 0xc2, 0x21, 0xe9, + 0xe0, 0xee, 0x18, 0xa6, 0xf6, 0x00, 0x2e, 0x47, 0x1e, 0x2c, 0x00, 0x79, 0xae, 0xb6, 0x2e, 0x1c, + 0x36, 0xc3, 0x99, 0x94, 0xbe, 0x2e, 0xae, 0xd6, 0x81, 0xcb, 0x26, 0xd2, 0xaa, 0xff, 0x01, 0xcc, + 0xd4, 0x99, 0x83, 0x7e, 0x53, 0xe0, 0xe2, 0xe0, 0xbb, 0xfb, 0x4e, 0x79, 0xc8, 0x3b, 0x43, 0x39, + 0xef, 0xee, 0xd6, 0xee, 0x4d, 0x04, 0x93, 0x3e, 0xf1, 0xbb, 0x02, 0x6b, 0x79, 0x66, 0x7b, 0x77, + 0x3c, 0xea, 0x3e, 0xa0, 0xf6, 0x60, 0x42, 0xa0, 0x54, 0xf5, 0x8b, 0x02, 0x1f, 0xf7, 0x3b, 0xd4, + 0xe7, 0xa3, 0x68, 0xfb, 0x20, 0xda, 0x57, 0xe7, 0x86, 0x48, 0x0d, 0x2f, 0x15, 0x28, 0x0e, 0xbc, + 0x1e, 0x77, 0x46, 0x71, 0x0e, 0x42, 0x69, 0x5f, 0x4f, 0x82, 0x92, 0x62, 0x5e, 0x29, 0x70, 0x29, + 0xc7, 0x3a, 0xbf, 0x1c, 0x8f, 0xb8, 0x17, 0xa7, 0xdd, 0x9f, 0x0c, 0x37, 0x40, 0x52, 0xdf, 0xfb, + 0xd6, 0x98, 0x92, 0x7a, 0x71, 0xe3, 0x4a, 0xca, 0x7b, 0xa7, 0x11, 0xc5, 0x9c, 0x67, 0xda, 0x77, + 0xcf, 0xc1, 0x9d, 0x06, 0x8e, 0x2e, 0xe6, 0x11, 0x9e, 0x8b, 0x9a, 0x00, 0x29, 0xc3, 0xbd, 0x39, + 0x8a, 0xee, 0x5d, 0xac, 0x56, 0x1d, 0x3f, 0x56, 0xae, 0x16, 0xc0, 0x52, 0xc6, 0x71, 0x3f, 0x1b, + 0x29, 0x3f, 0x15, 0xad, 0xed, 0x9c, 0x27, 0x5a, 0xae, 0xc9, 0x4d, 0x6d, 0xb0, 0xeb, 0xde, 0x19, + 0x2f, 0x79, 0x3d, 0xb0, 0xd1, 0xa6, 0x36, 0xd4, 0x6c, 0x77, 0x1f, 0xbf, 0x3e, 0x2d, 0x29, 0x6f, + 0x4e, 0x4b, 0xca, 0xbf, 0xa7, 0x25, 0xe5, 0xd5, 0x59, 0x69, 0xea, 0xcd, 0x59, 0x69, 0xea, 0xaf, + 0xb3, 0xd2, 0xd4, 0x61, 0x25, 0x75, 0xb9, 0x72, 0xe2, 0x5b, 0x3d, 0x1f, 0x5c, 0xcf, 0x53, 0xdf, + 0x72, 0xfc, 0xa6, 0x3d, 0x9a, 0x13, 0x1f, 0x5d, 0x5f, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x47, + 0x87, 0xc9, 0xcd, 0xf7, 0x0d, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1033,6 +1127,7 @@ type MsgClient interface { UpdateZRC20LiquidityCap(ctx context.Context, in *MsgUpdateZRC20LiquidityCap, opts ...grpc.CallOption) (*MsgUpdateZRC20LiquidityCapResponse, error) PauseZRC20(ctx context.Context, in *MsgPauseZRC20, opts ...grpc.CallOption) (*MsgPauseZRC20Response, error) UnpauseZRC20(ctx context.Context, in *MsgUnpauseZRC20, opts ...grpc.CallOption) (*MsgUnpauseZRC20Response, error) + UpdateGatewayContract(ctx context.Context, in *MsgUpdateGatewayContract, opts ...grpc.CallOption) (*MsgUpdateGatewayContractResponse, error) } type msgClient struct { @@ -1124,6 +1219,15 @@ func (c *msgClient) UnpauseZRC20(ctx context.Context, in *MsgUnpauseZRC20, opts return out, nil } +func (c *msgClient) UpdateGatewayContract(ctx context.Context, in *MsgUpdateGatewayContract, opts ...grpc.CallOption) (*MsgUpdateGatewayContractResponse, error) { + out := new(MsgUpdateGatewayContractResponse) + err := c.cc.Invoke(ctx, "/zetachain.zetacore.fungible.Msg/UpdateGatewayContract", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // MsgServer is the server API for Msg service. type MsgServer interface { DeploySystemContracts(context.Context, *MsgDeploySystemContracts) (*MsgDeploySystemContractsResponse, error) @@ -1135,6 +1239,7 @@ type MsgServer interface { UpdateZRC20LiquidityCap(context.Context, *MsgUpdateZRC20LiquidityCap) (*MsgUpdateZRC20LiquidityCapResponse, error) PauseZRC20(context.Context, *MsgPauseZRC20) (*MsgPauseZRC20Response, error) UnpauseZRC20(context.Context, *MsgUnpauseZRC20) (*MsgUnpauseZRC20Response, error) + UpdateGatewayContract(context.Context, *MsgUpdateGatewayContract) (*MsgUpdateGatewayContractResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1168,6 +1273,9 @@ func (*UnimplementedMsgServer) PauseZRC20(ctx context.Context, req *MsgPauseZRC2 func (*UnimplementedMsgServer) UnpauseZRC20(ctx context.Context, req *MsgUnpauseZRC20) (*MsgUnpauseZRC20Response, error) { return nil, status.Errorf(codes.Unimplemented, "method UnpauseZRC20 not implemented") } +func (*UnimplementedMsgServer) UpdateGatewayContract(ctx context.Context, req *MsgUpdateGatewayContract) (*MsgUpdateGatewayContractResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateGatewayContract not implemented") +} func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) @@ -1335,6 +1443,24 @@ func _Msg_UnpauseZRC20_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } +func _Msg_UpdateGatewayContract_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateGatewayContract) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateGatewayContract(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/zetachain.zetacore.fungible.Msg/UpdateGatewayContract", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateGatewayContract(ctx, req.(*MsgUpdateGatewayContract)) + } + return interceptor(ctx, in, info, handler) +} + var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "zetachain.zetacore.fungible.Msg", HandlerType: (*MsgServer)(nil), @@ -1375,6 +1501,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "UnpauseZRC20", Handler: _Msg_UnpauseZRC20_Handler, }, + { + MethodName: "UpdateGatewayContract", + Handler: _Msg_UpdateGatewayContract_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "zetachain/zetacore/fungible/tx.proto", @@ -2030,6 +2160,66 @@ func (m *MsgUnpauseZRC20Response) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgUpdateGatewayContract) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateGatewayContract) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateGatewayContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.NewGatewayContractAddress) > 0 { + i -= len(m.NewGatewayContractAddress) + copy(dAtA[i:], m.NewGatewayContractAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.NewGatewayContractAddress))) + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateGatewayContractResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgUpdateGatewayContractResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateGatewayContractResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintTx(dAtA []byte, offset int, v uint64) int { offset -= sovTx(v) base := offset @@ -2329,6 +2519,32 @@ func (m *MsgUnpauseZRC20Response) Size() (n int) { return n } +func (m *MsgUpdateGatewayContract) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.NewGatewayContractAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateGatewayContractResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovTx(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -4245,6 +4461,170 @@ func (m *MsgUnpauseZRC20Response) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgUpdateGatewayContract) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateGatewayContract: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateGatewayContract: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NewGatewayContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NewGatewayContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgUpdateGatewayContractResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgUpdateGatewayContractResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateGatewayContractResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipTx(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/zetaclient/chains/bitcoin/observer/inbound.go b/zetaclient/chains/bitcoin/observer/inbound.go index 15a3bfdc99..470c56d86f 100644 --- a/zetaclient/chains/bitcoin/observer/inbound.go +++ b/zetaclient/chains/bitcoin/observer/inbound.go @@ -477,3 +477,39 @@ func GetBtcEvent( } return nil, nil } + +// GetBtcEventWithWitness either returns a valid BTCInboundEvent or nil. +// This method supports data with more than 80 bytes by scanning the witness for possible presence of a tapscript. +// It will first prioritize OP_RETURN over tapscript. +func GetBtcEventWithWitness( + client interfaces.BTCRPCClient, + tx btcjson.TxRawResult, + tssAddress string, + blockNumber uint64, + logger zerolog.Logger, + netParams *chaincfg.Params, + depositorFee float64, +) (*BTCInboundEvent, error) { + // first check for OP_RETURN data + event, err := GetBtcEvent( + client, + tx, + tssAddress, + blockNumber, + logger, + netParams, + depositorFee, + ) + + if err != nil { + return nil, errors.Wrap(err, "unable to get btc event") + } + + if event != nil { + return event, nil + } + + // TODO: integrate parsing script + + return nil, nil +} diff --git a/zetaclient/chains/bitcoin/tokenizer.go b/zetaclient/chains/bitcoin/tokenizer.go new file mode 100644 index 0000000000..5708bfa250 --- /dev/null +++ b/zetaclient/chains/bitcoin/tokenizer.go @@ -0,0 +1,162 @@ +package bitcoin + +import ( + "encoding/binary" + "fmt" + + "github.com/btcsuite/btcd/txscript" +) + +func newScriptTokenizer(script []byte) scriptTokenizer { + return scriptTokenizer{ + script: script, + offset: 0, + } +} + +// scriptTokenizer is supposed to be replaced by txscript.ScriptTokenizer. However, +// it seems currently the btcsuite version does not have ScriptTokenizer. A simplified +// version of that is implemented here. This is fully compatible with txscript.ScriptTokenizer +// one should consider upgrading txscript and remove this implementation +type scriptTokenizer struct { + script []byte + offset int + op byte + data []byte + err error +} + +// Done returns true when either all opcodes have been exhausted or a parse +// failure was encountered and therefore the state has an associated error. +func (t *scriptTokenizer) Done() bool { + return t.err != nil || t.offset >= len(t.script) +} + +// Data returns the data associated with the most recently successfully parsed +// opcode. +func (t *scriptTokenizer) Data() []byte { + return t.data +} + +// Err returns any errors currently associated with the tokenizer. This will +// only be non-nil in the case a parsing error was encountered. +func (t *scriptTokenizer) Err() error { + return t.err +} + +// Opcode returns the current opcode associated with the tokenizer. +func (t *scriptTokenizer) Opcode() byte { + return t.op +} + +// Next attempts to parse the next opcode and returns whether or not it was +// successful. It will not be successful if invoked when already at the end of +// the script, a parse failure is encountered, or an associated error already +// exists due to a previous parse failure. +// +// In the case of a true return, the parsed opcode and data can be obtained with +// the associated functions and the offset into the script will either point to +// the next opcode or the end of the script if the final opcode was parsed. +// +// In the case of a false return, the parsed opcode and data will be the last +// successfully parsed values (if any) and the offset into the script will +// either point to the failing opcode or the end of the script if the function +// was invoked when already at the end of the script. +// +// Invoking this function when already at the end of the script is not +// considered an error and will simply return false. +func (t *scriptTokenizer) Next() bool { + if t.Done() { + return false + } + + op := t.script[t.offset] + + // Only the following op_code will be encountered: + // OP_PUSHDATA*, OP_DATA_*, OP_CHECKSIG, OP_IF, OP_ENDIF, OP_FALSE + switch { + // No additional data. Note that some of the opcodes, notably OP_1NEGATE, + // OP_0, and OP_[1-16] represent the data themselves. + case op == txscript.OP_FALSE || op == txscript.OP_IF || op == txscript.OP_CHECKSIG || op == txscript.OP_ENDIF: + t.offset++ + t.op = op + t.data = nil + return true + + // Data pushes of specific lengths -- OP_DATA_[1-75]. + case op >= txscript.OP_DATA_1 && op <= txscript.OP_DATA_75: + script := t.script[t.offset:] + + // The length should be: int(op) - txscript.OP_DATA_1 + 2, i.e. op is txscript.OP_DATA_10, that means + // the data length should be 10, which is txscript.OP_DATA_10 - txscript.OP_DATA_1 + 1. + // Here, 2 instead of 1 because `script` also includes the opcode which means it contains one more byte. + // Since txscript.OP_DATA_1 is 1, then length is just int(op) - 1 + 2 = int(op) + 1 + length := int(op) + 1 + if len(script) < length { + t.err = fmt.Errorf("opcode %d detected, but script only %d bytes remaining", op, len(script)) + return false + } + + // Move the offset forward and set the opcode and data accordingly. + t.offset += length + t.op = op + t.data = script[1:length] + return true + + case op > txscript.OP_PUSHDATA4: + t.err = fmt.Errorf("unexpected op code %d", op) + return false + + // Data pushes with parsed lengths -- OP_PUSHDATA{1,2,4}. + default: + var length int + switch op { + case txscript.OP_PUSHDATA1: + length = 1 + case txscript.OP_PUSHDATA2: + length = 2 + case txscript.OP_PUSHDATA4: + length = 4 + default: + t.err = fmt.Errorf("unexpected op code %d", op) + return false + } + + script := t.script[t.offset+1:] + if len(script) < length { + t.err = fmt.Errorf("opcode %d requires %d bytes, only %d remaining", op, length, len(script)) + return false + } + + // Next -length bytes are little endian length of data. + var dataLen int + switch length { + case 1: + dataLen = int(script[0]) + case 2: + dataLen = int(binary.LittleEndian.Uint16(script[:length])) + case 4: + dataLen = int(binary.LittleEndian.Uint32(script[:length])) + default: + t.err = fmt.Errorf("invalid opcode length %d", length) + return false + } + + // Move to the beginning of the data. + script = script[length:] + + // Disallow entries that do not fit script or were sign extended. + if dataLen > len(script) || dataLen < 0 { + t.err = fmt.Errorf("opcode %d pushes %d bytes, only %d remaining", op, dataLen, len(script)) + return false + } + + // Move the offset forward and set the opcode and data accordingly. + // 1 is the opcode size, which is just 1 byte. int(op) is the opcode value, + // it should not be mixed with the size. + t.offset += 1 + length + dataLen + t.op = op + t.data = script[:dataLen] + return true + } +} diff --git a/zetaclient/chains/bitcoin/tx_script.go b/zetaclient/chains/bitcoin/tx_script.go index b5f0bed226..8c0ebf5ff4 100644 --- a/zetaclient/chains/bitcoin/tx_script.go +++ b/zetaclient/chains/bitcoin/tx_script.go @@ -192,6 +192,36 @@ func DecodeOpReturnMemo(scriptHex string, txid string) ([]byte, bool, error) { return nil, false, nil } +// DecodeScript decodes memo wrapped in an inscription like script in witness +// returns (memo, found, error) +// +// Note: the format of the script is following that of "inscription" defined in ordinal theory. +// However, to separate from inscription (as this use case is not an NFT), simplifications are made. +// The bitcoin envelope script is as follows: +// OP_DATA_32 <32 byte of public key> OP_CHECKSIG +// OP_FALSE +// OP_IF +// +// OP_PUSH 0x... +// OP_PUSH 0x... +// +// OP_ENDIF +// There are no content-type or any other attributes, it's just raw bytes. +func DecodeScript(script []byte) ([]byte, bool, error) { + t := newScriptTokenizer(script) + + if err := checkInscriptionEnvelope(&t); err != nil { + return nil, false, errors.Wrap(err, "checkInscriptionEnvelope: unable to check the envelope") + } + + memoBytes, err := decodeInscriptionPayload(&t) + if err != nil { + return nil, false, errors.Wrap(err, "decodeInscriptionPayload: unable to decode the payload") + } + + return memoBytes, true, nil +} + // EncodeAddress returns a human-readable payment address given a ripemd160 hash // and netID which encodes the bitcoin network and address type. It is used // in both pay-to-pubkey-hash (P2PKH) and pay-to-script-hash (P2SH) address @@ -245,3 +275,44 @@ func DecodeTSSVout(vout btcjson.Vout, receiverExpected string, chain chains.Chai return receiverVout, amount, nil } + +func decodeInscriptionPayload(t *scriptTokenizer) ([]byte, error) { + if !t.Next() || t.Opcode() != txscript.OP_FALSE { + return nil, fmt.Errorf("OP_FALSE not found") + } + + if !t.Next() || t.Opcode() != txscript.OP_IF { + return nil, fmt.Errorf("OP_IF not found") + } + + memo := make([]byte, 0) + var next byte + for t.Next() { + next = t.Opcode() + if next == txscript.OP_ENDIF { + return memo, nil + } + if next < txscript.OP_DATA_1 || next > txscript.OP_PUSHDATA4 { + return nil, fmt.Errorf("expecting data push, found %d", next) + } + memo = append(memo, t.Data()...) + } + if t.Err() != nil { + return nil, t.Err() + } + return nil, fmt.Errorf("should contain more data, but script ended") +} + +// checkInscriptionEnvelope decodes the envelope for the script monitoring. The format is +// OP_PUSHBYTES_32 <32 bytes> OP_CHECKSIG +func checkInscriptionEnvelope(t *scriptTokenizer) error { + if !t.Next() || t.Opcode() != txscript.OP_DATA_32 { + return fmt.Errorf("cannot obtain public key bytes op %d or err %s", t.Opcode(), t.Err()) + } + + if !t.Next() || t.Opcode() != txscript.OP_CHECKSIG { + return fmt.Errorf("cannot parse OP_CHECKSIG, op %d or err %s", t.Opcode(), t.Err()) + } + + return nil +} diff --git a/zetaclient/chains/bitcoin/tx_script_test.go b/zetaclient/chains/bitcoin/tx_script_test.go index eea97fc7b5..f1b17f2119 100644 --- a/zetaclient/chains/bitcoin/tx_script_test.go +++ b/zetaclient/chains/bitcoin/tx_script_test.go @@ -491,3 +491,66 @@ func TestDecodeTSSVoutErrors(t *testing.T) { require.Zero(t, amount) }) } + +func TestDecodeScript(t *testing.T) { + t.Run("should decode longer data ok", func(t *testing.T) { + // 600 bytes of random data generated offline + data := "2001a7bae79bd61c2368fe41a565061d6cf22b4f509fbc1652caea06d98b8fd0c7ac00634d0802c7faa771dd05f27993d22c42988758882d20080241074462884c8774e1cdf4b04e5b3b74b6568bd1769722708306c66270b6b2a7f68baced83627eeeb2d494e8a1749277b92a4c5a90b1b4f6038e5f704405515109d4d0021612ad298b8dad6e12245f8f0020e11a7a319652ba6abe261958201ce5e83131cd81302c0ecec60d4afa9f72540fc84b6b9c1f3d903ab25686df263b192a403a4aa22b799ba24369c49ff4042012589a07d4211e05f80f18a1262de5a1577ce0ec9e1fa9283cfa25d98d7d0b4217951dfcb8868570318c63f1e1424cfdb7d7a33c6b9e3ced4b2ffa0178b3a5fac8bace2991e382a402f56a2c6a9191463740910056483e4fd0f5ac729ffac66bf1b3ec4570c4e75c116f7d9fd65718ec3ed6c7647bf335b77e7d6a4e2011276dc8031b78403a1ad82c92fb339ec916c263b6dd0f003ba4381ad5410e90e88effbfa7f961b8e8a6011c525643a434f7abe2c1928a892cc57d6291831216c4e70cb80a39a79a3889211070e767c23db396af9b4c2093c3743d8cbcbfcb73d29361ecd3857e94ab3c800be1299fd36a5685ec60607a60d8c2e0f99ff0b8b9e86354d39a43041f7d552e95fe2d33b6fc0f540715da0e7e1b344c778afe73f82d00881352207b719f67dcb00b4ff645974d4fd7711363d26400e2852890cb6ea9cbfe63ac43080870049b1023be984331560c6350bb64da52b4b81bc8910934915f0a96701f4c50646d5386146596443bee9b2d116706e1687697fb42542196c1d764419c23a914896f9212946518ac59e1ba5d1fc37e503313133ebdf2ced5785e0eaa9738fe3f9ad73646e733931ebb7cff26e96106fe68" + script, _ := hex.DecodeString(data) + + memo, isFound, err := DecodeScript(script) + require.Nil(t, err) + require.True(t, isFound) + + // the expected memo + expected := "c7faa771dd05f27993d22c42988758882d20080241074462884c8774e1cdf4b04e5b3b74b6568bd1769722708306c66270b6b2a7f68baced83627eeeb2d494e8a1749277b92a4c5a90b1b4f6038e5f704405515109d4d0021612ad298b8dad6e12245f8f0020e11a7a319652ba6abe261958201ce5e83131cd81302c0ecec60d4afa9f72540fc84b6b9c1f3d903ab25686df263b192a403a4aa22b799ba24369c49ff4042012589a07d4211e05f80f18a1262de5a1577ce0ec9e1fa9283cfa25d98d7d0b4217951dfcb8868570318c63f1e1424cfdb7d7a33c6b9e3ced4b2ffa0178b3a5fac8bace2991e382a402f56a2c6a9191463740910056483e4fd0f5ac729ffac66bf1b3ec4570c4e75c116f7d9fd65718ec3ed6c7647bf335b77e7d6a4e2011276dc8031b78403a1ad82c92fb339ec916c263b6dd0f003ba4381ad5410e90e88effbfa7f961b8e8a6011c525643a434f7abe2c1928a892cc57d6291831216c4e70cb80a39a79a3889211070e767c23db396af9b4c2093c3743d8cbcbfcb73d29361ecd3857e94ab3c800be1299fd36a5685ec60607a60d8c2e0f99ff0b8b9e86354d39a43041f7d552e95fe2d33b6fc0f540715da0e7e1b344c778afe73f82d00881352207b719f67dcb00b4ff645974d4fd7711363d26400e2852890cb6ea9cbfe63ac43080870049b1023be984331560c6350bb64da52b4b81bc8910934915f0a96701f646d5386146596443bee9b2d116706e1687697fb42542196c1d764419c23a914896f9212946518ac59e1ba5d1fc37e503313133ebdf2ced5785e0eaa9738fe3f9ad73646e733931ebb7cff26e96106fe" + require.Equal(t, hex.EncodeToString(memo), expected) + }) + + t.Run("should decode shorter data ok", func(t *testing.T) { + // 81 bytes of random data generated offline + data := "20d6f59371037bf30115d9fd6016f0e3ef552cdfc0367ee20aa9df3158f74aaeb4ac00634c51bdd33073d76f6b4ae6510d69218100575eafabadd16e5faf9f42bd2fbbae402078bdcaa4c0413ce96d053e3c0bbd4d5944d6857107d640c248bdaaa7de959d9c1e6b9962b51428e5a554c28c397160881668" + script, _ := hex.DecodeString(data) + + memo, isFound, err := DecodeScript(script) + require.Nil(t, err) + require.True(t, isFound) + + // the expected memo + expected := "bdd33073d76f6b4ae6510d69218100575eafabadd16e5faf9f42bd2fbbae402078bdcaa4c0413ce96d053e3c0bbd4d5944d6857107d640c248bdaaa7de959d9c1e6b9962b51428e5a554c28c3971608816" + require.Equal(t, hex.EncodeToString(memo), expected) + }) + + t.Run("decode error due to missing data byte", func(t *testing.T) { + // missing OP_ENDIF at the end + data := "20cabd6ecc0245c40f27ca6299dcd3732287c317f3946734f04e27568fc5334218ac00634d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068" + script, _ := hex.DecodeString(data) + + memo, isFound, err := DecodeScript(script) + require.ErrorContains(t, err, "should contain more data, but script ended") + require.False(t, isFound) + require.Nil(t, memo) + }) + + t.Run("decode error due to missing data for public key", func(t *testing.T) { + // missing OP_ENDIF at the end + data := "2001a7bae79bd61c2368fe41a565061d6cf22b4f509fbc1652caea06d98b8fd0" + script, _ := hex.DecodeString(data) + + memo, isFound, err := DecodeScript(script) + require.ErrorContains(t, err, "cannot obtain public key bytes") + require.False(t, isFound) + require.Nil(t, memo) + }) + + t.Run("decode error due to missing OP_CHECKSIG", func(t *testing.T) { + // missing OP_ENDIF at the end + data := "2001a7bae79bd61c2368fe41a565061d6cf22b4f509fbc1652caea06d98b8fd0c7ab" + script, _ := hex.DecodeString(data) + + memo, isFound, err := DecodeScript(script) + require.ErrorContains(t, err, "cannot parse OP_CHECKSIG") + require.False(t, isFound) + require.Nil(t, memo) + }) +}