Skip to content

Commit

Permalink
feat(ibc-eureka): add ibc-go eureka implementation (#7505)
Browse files Browse the repository at this point in the history
* Cherry-pick: Add MsgRegisterCounterparty Struct and Handler from ibc-lite (#6982)

* feat(lite): counterparty client logic (#6307)

* imp: added counterparty client store

* imp: added provide counterparty to proto

* imp: ran 'make proto-all'

* imp: added logic to counterparty client

* imp: fix proto

* imp: fix proto

* imp: ran 'make proto-all'

* feat: finished counterparty client logic

* change counterparty to include custom prefix

* fix imports

* import fixes, review suggestions

* rm lite comment

* applying review suggestions

* add creator tests

* addressing aditya review

* Update proto/ibc/core/client/v1/client.proto

Co-authored-by: DimitrisJim <[email protected]>

* Update modules/core/02-client/types/msgs.go

Co-authored-by: DimitrisJim <[email protected]>

* Update modules/core/keeper/msg_server.go

Co-authored-by: colin axnér <[email protected]>

* addressing jim review

* refactor(proto): use counterparty type in MsgProvideCounterparty. Validate Counterparty type.

* refactor(keys): move Counterparty key to 02-client keys.go

* feat(core): delete creator after registering counterparty.

* chore(core): make GetCreator return a boolean if not found.

* tests(02-client): add tests for counterparty validation.

* tests(02-client): add tests for msg_server provide counterparty handler.

* nit(core): remove stale key for counterparty in host.

* Update modules/core/02-client/keeper/keeper_test.go

---------

Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Aditya Sripal <[email protected]>
Co-authored-by: Stefano Angieri <[email protected]>
Co-authored-by: DimitrisJim <[email protected]>
Co-authored-by: colin axnér <[email protected]>

* chore: move status checks from connection verify_* functions to 02-client verify_* functions. (#7006)

* chore: split out packet handling rpcs (#7007)

* chore: split out packet handling rpcs

* add keeper, expected interfaces, merkle tweaks.

* add verify functions of client keeper.

* self review

* Add versions to packet and create Eureka packet commitment (#6986)

* add versions to packet and separate commitment function

* use IBC Version to switch hashing

* fix build and tests, found bug in switch logic

* add documentation

* improve code docstrings

* address jim review

* rename eureka to v2

* feat(tests): add helper functions, keeper test suite. (#7052)

* feat(tests): add helper functions, keeper test suite.

* wire up packet server in app

---------

Co-authored-by: Aditya Sripal <[email protected]>

* feat(core/eureka): add packet handler (#7048)

* send packet eureka

* test progress

* add tests

* lint

* nit

* lint moar

* refactor tests

* feat(core/eureka): add recv handler (#7041)

* feat(core/eureka): add recv handler.

* review: address feedback, self review.

* tests(core/packet-server): add tests for recv.

* chore: make lint-fix.

* chore: address review nits.

* feat(core/eureka): add timeout handler (#7060)

* timeout eureka implementation

* test progress

* continued progress with tests

* tests

* cleanup and docs

* use sentinel channel in sendPacket events

* address review

* test review fixes

* lint

* feat(core/eureka): add writeack, ack handler. (#7049)

* feat(core/eureka): add writeack, ack handler.

* tests(core/packet-server): add tests for write acknowledgement.

* chore: add packet protocol version checks to both.

* fix: add check for packet receipt being present.

* tests(core/packet-server): add tests for ack.

* tests: address review, add FreezeClient helper to endpoint.

* feat(core): Wire packet handler to core message server (#7091)

* chore: return app version in handlers

* add expected keeper interface for packet handler functions.

* add switch in msg_server to dispatch based on protocol version.

* guard TimeoutExecuted with version check for time being.

* rename interface.

* inline timeoutExecuted

* slipped WriteAck.

* use msg-server entrypoints for packet flow in testing.

* use endpoint.SendPacket in recv test.

* feat(eureka): fix condition in commit packet, added test for zero timeout height (#7109)

* fix condition in commit packet, added test for zero timeout height, change some error messages and add some more comments

* error for verify functions

* refactor: reduce channel lookup for timeout flow (#7149)

* imp: require stricter usage of app version in packet (#7146)

* fix: add validation of protocol version and app version to packet validatebasic

* Update modules/core/04-channel/types/packet_test.go

* Update modules/core/04-channel/types/packet.go

Co-authored-by: Carlos Rodriguez <[email protected]>

---------

Co-authored-by: Carlos Rodriguez <[email protected]>

* chore: remove unnecessary comments (#7155)

* imp: add tests for BuildMerklePath, make merkle path non-nullable in counterparty (#7160)

* refactor: regenerate merkle path as non-nullable + add tests to build merkle path

* fix: avoid mutating prefix provided

* fix test build

---------

Co-authored-by: Aditya Sripal <[email protected]>

* chore: add godoc to packet server handlers (#7156)

* chore: add godoc

* Apply suggestions from code review

---------

Co-authored-by: Aditya <[email protected]>

* feat(eureka): add tests for `MsgProvideCounterparty` (#7179)

* add tests for MsgProvideCounterparty ValidateBasic

* address review comments

* add submodule to logger (#7196)

* add submodule for  logger

* add submodule in keys.go

* tests: msg server tests for eureka (#7162)

* test: TestAcknowledgePacketV2

* fix up recv tests

* add timeout v2 tests

* imp: use expErr instead of expPass

---------

Co-authored-by: Aditya Sripal <[email protected]>
Co-authored-by: Carlos Rodriguez <[email protected]>

* Validate MerklePathPrefix and Path (#7193)

* merkle validation funcs

* add merkle prefix validation and testing

* address comments

---------

Co-authored-by: Carlos Rodriguez <[email protected]>

* add helper to retrieve handler and module based on protocol version (#7198)

* add helper to retrieve handler and module based on protocol version

* address self review comments

* returning values instead of binding vars

* chore: clean up case for v1.

---------

Co-authored-by: Carlos Rodriguez <[email protected]>
Co-authored-by: DimitrisJim <[email protected]>

* feat(eureka): Add gRPC query for Counterparty for a given client identifier (#7120)

* chore: add grpc query for counterParty

* chpre: made changes to the proto

* chore: updated goDoc

* chore: added creator to the respone

* fix: fixes in the grpc_query

* fixes

* improve implementation and add tests

* trying to fix weird linter error

* fix build

* chore: make counterparty field of response a non pointer.

* chore: simplify logic, remove uneeded ifs

* chore(tests): use expError pattern.

---------

Co-authored-by: Carlos Rodriguez <[email protected]>
Co-authored-by: DimitrisJim <[email protected]>

* feat(eureka): add CLI to submit `MsgProvideCounterparty` (#7118)

* wip

* wip

* chore: added description

* fix: fixed lint issues

* address my self-review

* lint

* accept hex-encoded strings for merkle path prefix

* fix build error

---------

Co-authored-by: Carlos Rodriguez <[email protected]>

* Use client and counterparty terminology in packet server  (#7195)

* Use client and counterparty terminology in packet server rather than channel

* add counterparty not found error

* add ErrCounterpartyNotFound

* improve comment

---------

Co-authored-by: Carlos Rodriguez <[email protected]>

* chore: require app version be non-empty when protocol version is version 2 (#7209)

* chore: require app version be non-empty when protocol version is version 2.

* chore(tests): use constructor instead of direct struct initialization.

* chore(tests): update usages in msg_server, packet_server tests to use non-empty app version.

* chore(tests): add case for latest height err case. (#7212)

* feat(events): dont emit channel information for eureka handlers) (#7230)

* feat(02-client/cli): add query for client counterparty. (#7235)

* feat(02-client/cli): add query for client counterparty.

* chore: mirror grpc name.

* Apply suggestions from code review

Co-authored-by: Carlos Rodriguez <[email protected]>

---------

Co-authored-by: Carlos Rodriguez <[email protected]>

* chore: move handler implementations into a relay.go file. (#7271)

Co-authored-by: Aditya <[email protected]>

* refactor: Move Counterparty to packet server (#7280)

* refactor: move Counterparty to packet-server

Co-authored-by: Aditya <[email protected]>

* chore: remove old structs/impls

Co-authored-by: Aditya <[email protected]>

* nit(tests): use second client id to check counterparty isn't found.

---------

Co-authored-by: Aditya <[email protected]>

* chore(packet-server): add queryServer to packet-server (#7283)

* chore(packet-server): add queryServer to packet-server

* chore(packet-server): return error if non of creator/counterparty is stored.

* feat(packet-server): add client. (#7284)

* Add PacketV2 Protos and CommitmentV2 function (#7287)

* chore: adding proto for packetV2

* chore: adding commitV2 hash fn

* chore: addressing PR feedback

* chore: removed accidental comment

* chore: add conversion function from PacketV1 to PacketV2 (#7292)

* chore: adding proto for packetV2

* chore: adding commitV2 hash fn

* chore: addressing PR feedback

* chore: add conversion function from PacketV1 to PacketV2

* chore: added check for protocol version

* go mod tidy and remove function

* chore: default to json encoding in conversion

* pr feedback

---------

Co-authored-by: chatton <[email protected]>

* refactor: change counterparty structure. (#7328)

* refactor: change counterparty structure.

* refactor: add channel id to Counterparty.

* refactor: use client identifier in relay functions.

* chore: suffix _id to identifier.

* chore: move PacketV2 to channel/v2 proto and rename it to Packet (#7357)

* chore: move PacketV2 to channel/v2

* remove file accidentally added

* chore: created packet.go for v2

* rename

* Add fallback function to grab counterparty for non-eureka channels (#7358)

* Add channel keeper v2 (#7377)

* chore: add scaffolding for channel keeper v2

* Update modules/core/04-channel/v2/keeper/keeper.go

Co-authored-by: DimitrisJim <[email protected]>

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: Added SendPacket RPC skeleton and relative proto message (#7364)

* chore: Added SendPacket RPC skeleton

* chore: register new message

* linter

* add v2 codec.go

* rename alias

* linter

* Add new keys and getter / setter functions (#7378)

* chore: adding keys and keeper getter and setter functions

* chore: use BigEndian for sequence in keys

* chore: add MsgRecvPacket skeleton (#7379)

* chore: add MsgRecvPacket skeleton

* Add RPC proto definition for RecvPacket

* chore: add MsgTimeout skeleton (#7380)

* add MsgTimeout skeleton

* missing saved file

* restore docstring

* chore: add Acknowledgement message proto. (#7381)

* chore: add Acknowledgment message!

* chore: fix proto mess

* random fixes

* chore: Add PacketV2 ValidateBasic() function (#7389)

* chore: Add PacketV2 ValidateBasic() function

* remove unused function

* PR feedback

* Added tests

* linter

* solve import cycle

* create ValidateBasic for PacketData

* refactor: Add CreateChannel rpc (#7382)

* refactor: add protos + implementation + validation + tests for CreateChannel rpc.

* Update proto/ibc/core/packetserver/v1/tx.proto

Co-authored-by: colin axnér <[email protected]>

* chore: move signer as final arg

---------

Co-authored-by: colin axnér <[email protected]>

* chore: adding implementation for SendPacket message server (#7383)

* chore: adding implementation for SendPacket message server

* chore: adding issue links

* chore: add additional issue link

* chore: using sourceID

* chore: adding commented aliasing code

* chore: adding tests for aliasing and required functions

* chore: moved IBCModule interface into api directort

* Adding router v2 (#7392)

* chore: adding router v2

* chore: addressing PR feedback

* chore: address PR feedback and fix linter

* Add mock ibc module v2 (#7398)

* chore: adding router v2

* chore: addressing PR feedback

* chore: address PR feedback and fix linter

* chore: adding mock v2 module

* chore: add RecvPacket to V2 (#7399)

* chore: add RecvPacket to V2

* fix wrong log

* Update modules/core/04-channel/v2/keeper/relay.go

Co-authored-by: Cian Hatton <[email protected]>

* PR feeback

---------

Co-authored-by: Cian Hatton <[email protected]>

* chore: create helper function for counterparty falllback. (#7405)

* chore: create helper function for counterparty falllback.

* Fix source/dest ID

* Update modules/core/04-channel/v2/keeper/relay.go

Co-authored-by: colin axnér <[email protected]>

* Update modules/core/04-channel/v2/keeper/relay.go

Co-authored-by: colin axnér <[email protected]>

---------

Co-authored-by: colin axnér <[email protected]>

* chore: Add Timeout to Channel Keeper (#7400)

* chore: Add Timeout to Channel Keeper

* reintroduce method

* linter

* pr feedback

* use helper fn

* chore: register v2 msg service and rename (#7407)

* Wire up simapp to use mock v2 modules (#7401)

* chore: adding router v2

* chore: addressing PR feedback

* chore: address PR feedback and fix linter

* chore: adding mock v2 module

* chore: adding mock application wiring in simapp

* chore: fix linter

* chore: add pluming necessary for testing CreateChannel (#7406)

* chore: add pluming necessary for testings.

* chore: docustring for event func.

* chore: wire up call to emit in msg_server

* chore: fix linter mess.

* chore: review touch ups.

* chore: add OnRecvPacket to IBCModule V2 interface (#7415)

* chore: add OnTimeoutPacket to IBCModule V2 interface (#7418)

* refactor: host keys apis to use uint64 sequence and fmt big endian bytes internally (#7419)

* feat: create channel before invoking provide counterparty. (#7420)

* chore: clean up ProvideCounterparty tx. (#7422)

* chore: clean up msgprovidecounterparty.

* Update modules/core/keeper/msg_server_test.go

Co-authored-by: Aditya <[email protected]>

---------

Co-authored-by: Aditya <[email protected]>

* Rename Id Fields to Channel for Packet V2 (#7428)

* change id fields to channel

* Apply suggestions from code review

Co-authored-by: Damian Nolan <[email protected]>

---------

Co-authored-by: Damian Nolan <[email protected]>

* packetserver: Rename Counterparty to Channel (#7429)

* chore: clean up msgprovidecounterparty.

* Update modules/core/keeper/msg_server_test.go

Co-authored-by: Aditya <[email protected]>

* rename counterparty to channel in packetserver

* change var names

* chore: fix merge mess.

---------

Co-authored-by: DimitrisJim <[email protected]>

* feat: add acknowledgePacket handler to channel/v2 (#7412)

* chore: add commitment.go with temporary commit acknowledgement func

* feat: impl acknowledgePacket handler in channel/v2

* nit: vanity nits

* chore: add placeholder event func and logs

* chore: fix conflict and address todo

* nit: update to pointer recvr args

* chore: update ids in log

* channel/v2: Rename Counterparty to Channel (#7432)

* rename counterparty to channel in v2 folder

* rename getV1Channel to getV2Channel

* fix var naming err from last pr

* Implement MsgSendPacket RPC handler and tests (#7413)

* chore: added application callback to SendPacketV2 rpc

* chore: adding additional msg server tests

* chore: adding additional tests

* chore: address PR feedback

* chore: rename sourceID to sourceChannel

* chore: ensure correct usage of ids. (#7433)

* chore: cleanup ids in eureka branch (#7434)

* chore: sourceID -> channelID

* chore: clientID -> channelID

* chore: move tx's to channel/v2 (#7435)

* chore: move tx's to channel/v2

* Use channel identifier when setting creator.

* chore: Add OnAcknowledgmentPacket to IBCModule V2 Interface (#7438)

* Add OnAcknowledgmentPacket to IBCModule V2 Interface

* chore: fix typo

* nit: reorder proto msgs (#7446)

* chore: fix naming of parameters sourceID/destinationID (#7448)

* Add OnAcknowledgmentPacket to IBCModule V2 Interface

* chore: fix typo

* chore: PR feedback

* chore: fix wrong merge conflict resolution

* Implement v2 RecvPacket rpc handler (#7421)

* chore: added application callback to SendPacketV2 rpc

* chore: adding additional msg server tests

* chore: adding additional tests

* chore: adding on recv handler

* chore: add recv packet happy path

* chore: added test for failed recv result

* chore: adding additional tests

* chore: misc cleanup on self review

* chore: moved fn into packet.go and added no-op telemetry v2 functions

* chore: addressing PR feedback

* chore: add issue links

* chore: ensure no-op case works as intended

* chore: add NoOp test case

* chore: fix ack v2 commitment

* chore: PR feedback

---------

Co-authored-by: bznein <[email protected]>

* chore: Move initialization of next sequence send to create channel rpc handler. (#7449)

* chore: Implement v2 Acknowledgement rpc handler  (#7452)

* chore: added application callback to SendPacketV2 rpc

* chore: adding additional msg server tests

* chore: adding additional tests

* chore: adding on recv handler

* chore: add recv packet happy path

* chore: added test for failed recv result

* chore: adding additional tests

* chore: misc cleanup on self review

* chore: moved fn into packet.go and added no-op telemetry v2 functions

* chore: implement Acknowledgment RPC handler

* chore: add MsgAcknowledgment and test skeleton

* wip

* chore: fix set packet ack

* add more test cases

* merge conflicts

* unneeded file!

* removed duplicate method

* revert error checking

* chore: linter

* PR feedback

* typo

---------

Co-authored-by: chatton <[email protected]>

* chore: replace stale references to clientId. (#7457)

* fix: start error code from 2. (#7458)

* chore: add cli/tx for create channel. (#7460)

* chore: remove stale references to packet-server in channel/v2. (#7451)

* Remove duplication of ConvertToErrorEvents (#7467)

* chore: move convert to errors to internal directory

* chore: removed empty file

* chore: add ValidateBasic for MsgSendPacket (#7468)

* Add helper functions for MsgSendPacket, MsgRecvPacket and MsgAcknowledgePacket (#7465)

* chore: added msg send packet fucntion on endpoint

* chore: added MsgRecvPacket to endpoint

* chore: modify ack test to use new endpoint send and recv functions

* chore: refactored msg ack to use new endpoint fn

* chore: added test case to verify proof failure

* Update testing/endpoint_v2.go

Co-authored-by: DimitrisJim <[email protected]>

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: add ValidateBasic and test for MsgRecvPacket (#7470)

* chore: add ValidateBasic and test for MsgRecvPacket

* merge

* chore: address reviews.

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: Implement v2 Timeout rpc handler (#7463)

* msgTimeout test

* better wording for comment

* chore: use deletepacketcommitment instead of setting an empty one

* typo

* Update modules/core/04-channel/v2/keeper/msg_server_test.go

Co-authored-by: Aditya <[email protected]>

* chore: use deletepacketcommitment instead of setting an empty one

* wip

* chore: debugging timeout test

* chore: removed unneeded proto field and added helper function for endpoint MsgTimeout

---------

Co-authored-by: Aditya <[email protected]>
Co-authored-by: chatton <[email protected]>

* channel/v2: Add Keeper Tests (#7456)

* test progress

* use export_test and fix send_packet

* fix test build

* in-progress fixing tests

* remove test file

* fix mockv2 acknowledgment

* comment on export_test

* appease linter

* fix bug

* fix nits and add test case

* add writeAck tests

* use existing endpoint test fns

* fix: timeout tests after timeout as seconds. (#7480)

* chore: add validation for MsgAcknowledgement. (#7473)

* chore: remove packet-server. (#7481)

* chore: remove packet-server.

* chore: remove commented out test funcs.

* chore: add ValidateBasic for MsgTimeout in ChannelKeeper V2 (#7482)

* chore: add ValidateBasic for MsgTimeout in ChannelKeeper V2

* rename

* chore: rename PacketData to Payload (#7483)

* chore: rename PacketData to Payload

* Update modules/core/04-channel/v2/types/msgs.go

Co-authored-by: Cian Hatton <[email protected]>

* Update proto/ibc/core/channel/v2/tx.proto

Co-authored-by: Cian Hatton <[email protected]>

* Update modules/core/04-channel/v2/keeper/packet.go

Co-authored-by: Cian Hatton <[email protected]>

* Update modules/core/04-channel/v2/keeper/msg_server_test.go

Co-authored-by: Cian Hatton <[email protected]>

* Update modules/core/04-channel/v2/keeper/export_test.go

Co-authored-by: Cian Hatton <[email protected]>

* fixes after renaming - PR feedback

---------

Co-authored-by: Cian Hatton <[email protected]>

* chore: remove copyloopvar check

* chore: further renaming of packetdata to payload (#7485)

* chore: generate distinct channel identifiers in testing library. (#7489)

* chore: limit packet data to length of one. (#7484)

* chore: remove fallback logic for GetChannel in timeout handler (#7490)

* chore: remove fallback logic for GetChannel in timeout handler

* Update modules/core/04-channel/v2/keeper/packet.go

Co-authored-by: DimitrisJim <[email protected]>

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: remove unecessary KeyChannelStorePrefix (#7496)

* tests: fix ProvideCounterparty test. (#7501)

* chore: clean up ctx unwrapping in channel/v2/keeper. (#7497)

* chore: remove notion of protocol version, revert packet/v1 diffs. (#7498)

* chore: Undo split to packet-server in 04-channel/v1. Move v2 testing functions to endpoint_v2. Fix comments in module.go for channel/v2. (#7495)

* chore: revert v1 event changes. (#7499)

* chore: add tests for Channel.Validate (#7504)

* chore: add tests for Channel.Validate

* Update modules/core/04-channel/v2/types/channel_test.go

Co-authored-by: DimitrisJim <[email protected]>

* Update modules/core/04-channel/v2/types/channel_test.go

Co-authored-by: DimitrisJim <[email protected]>

---------

Co-authored-by: DimitrisJim <[email protected]>

* refactor: check timeouts directly in channel/v2 (#7464)

* refactor: check timeouts directly

* chore: add seconds to nanos conversion

* rm stupid if

* chore: regen protos

* Update modules/core/04-channel/v2/keeper/packet.go

Co-authored-by: DimitrisJim <[email protected]>

* Update modules/core/04-channel/v2/keeper/packet.go

* chore: compare timeouts as was done in the olden days

* chore: update comments and use secs in recvPacket

Co-authored-by: Aditya <[email protected]>

* chore: fix the compiler error breakage

---------

Co-authored-by: DimitrisJim <[email protected]>
Co-authored-by: Aditya <[email protected]>

* chore: rename apis to align with spec (#7511)

* chore: rename apis to align with spec

* nit: order interface assertions

* chore: reorder the order of the order of functions

* chore: add v2 packet commitment query (#7494)

* feat: add v2 packet commitment query

* chore: add cli for packet commitment query with abci proof

* chore: correct channel query url path, correct errors numbering

* chore: impl packet acknowledgement query (#7507)

* feat: add v2 packet commitment query

* chore: add cli for packet commitment query with abci proof

* chore: impl packet acknowledgement query

* fix: update identifier validation in grpcs

* chore: remove creator field from channel query (#7523)

* chore: impl packet receipt query (#7513)

* feat: add v2 packet commitment query

* chore: add cli for packet commitment query with abci proof

* chore: impl packet acknowledgement query

* fix: update identifier validation in grpcs

* chore: impl packet receipt query

* Add MaxTimeout condition (#7521)

* enforce maxTimeout

* fixes

* fix error

* run gofumpt

* Apply review suggestions

Co-authored-by: Aditya <[email protected]>

* address review comments

* errors

* use time package

---------

Co-authored-by: Aditya <[email protected]>

* chore: remove usage of v1 errors from v2 (#7528)

* chore: remove usage of v1 errors from v2

* linter

* chore: reduce number of timeout errors, cleanup (#7529)

* chore: add redundancy checks for V2 Msgs (#7509)

* chore: add redundant checks for V2 Msgs

* reintroduce tests

* chore: create ResultType for ChannelV2 (#7534)

* chore: lockin v0.50.10 (#7532)

* chore: create ResultType for ChannelV2

* move redundancy chgecks to new result type

* empty commit

* Revert "chore: lockin v0.50.10 (#7532)"

This reverts commit 5911185.

* Fix timeout in ante tests for V2

---------

Co-authored-by: Damian Nolan <[email protected]>

* feat: add protobuf files for channel/v2 genesis storage. (#7502)

* wire channel query server v2 (#7537)

* wire channel query server v2

* register grpc gateway routes

* fix: channel must exist before channel creator check (#7538)

* fix: channel must exist before channel creator check

* Update modules/core/04-channel/v2/keeper/msg_server.go

Co-authored-by: DimitrisJim <[email protected]>

* fixed failing test

---------

Co-authored-by: DimitrisJim <[email protected]>

* feat: add paginated packet commitments query to channel/v2 (#7533)

* feat: add paginated packet commitments query to channel/v2

* chore: add cli handler

* chore: rm commented code

* chore: make lint-fix

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: revert re-ordering for v1 channel msg.

* chore: revert exporting of deletePacketCommitment.

* Match commitment to specification (#7544)

* fix hash

* prepend hash with byte 0x02

* fix hash to spec

* chore: update function documentation to align with implementation.

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: drop usage of 'channeltypesv2'.

* chore: fix post-merge test failure.

* ICS24: Change Provable keys (#7517)

* refactor packet keys

* provable keys

* chore: fix packet commitments prefix function.

---------

Co-authored-by: DimitrisJim <[email protected]>

* chore: amend event emitted for create channel. (#7557)

* chore: add event for register counterparty (#7556)

* chore: add next sequence send query. (#7550)

* chore: make AliasV1Channel a private function.

* nit: consistent import name for 24-host/v2

* Simplify Acknowledgement structure (#7555)

* simplify ack to array of byte arrays

* simplify test

* lint

* support client identifiers as channels in ics20 denom hops (#7551)

* chore: add unreceived acks rpc (#7562)

* chore: add unreceived acks rpc

* nit: init path in setup function.

* make packet commitments fixed length (#7564)

* make packet commitments fixed length

* updated docs for packet commits

* feat: add custom querier to wasm image (#7559)

* add custom querier to wasmd + build for arm64

* Use build-push-action for multi-platform build

* fix build-args

* fix bad bash

* lint

* add build-essential for building arm64 arch

* add g++-aarch64-linux-gnu for arm64

* add some more info to custom query error msg

* chore: add unreceived packets rpc (#7561)

* add UnreceivedPackets query

* lint

* minor

* use HasChannel and correct flag

* add unit test

* lint

* fix expErr

* Update modules/core/04-channel/v2/keeper/grpc_query.go

Co-authored-by: Damian Nolan <[email protected]>

* using HasPacketReceipt

---------

Co-authored-by: Damian Nolan <[email protected]>

* Ibcmodulev2 transfer application spike (#7524)

* chore: adding ibc module v2 and on recv implementation with hard coded sequence

* chore: adding ack callback

* chore: adding send packet

* chore: adding transfer v2 module to app wiring

* chore: adding happy path and basic failure for send and recv for transfer module

* chore: adding ack test for transfer

* chore: fix some linter errors

* chore: adding timeout test for transfer v2

* chore: adding test case which ensures tokens can be transfered over both v1 and v2

* chore: full transfer flow from A - B - C - B - A

* chore: separated test out into subtests

* chore: add sequence as argument to OnRecvPacket

* chore: adding TODOs for next steps

* chore: adding transferv2 module to wasm simapp

* chore: refactor OnTimeout to accept sequence

* chore: refactor OnAck to accept sequence

* chore: switch argument order

* wip: mid merge with feature branch, build will be broken

* Fix timeoutTimestamp for tests

* linter

* chore: removing duplicate imports in wasm simapp

* chore: adding channelkeeperv2 query server

* register grpc gateway routes

* fix ack structure for v2 transfer tests

* lint

* make signature consistent

---------

Co-authored-by: chatton <[email protected]>
Co-authored-by: bznein <bznein@debian>
Co-authored-by: Gjermund Garaba <[email protected]>

* chore: use encoding fields for packet data unmarshaling (#7574)

* chore: use encoding fields for packet data unmarshaling

* linter

* clean up function

* more comments

* use MIME type and constants

* use application/x-protobuf as MIME type for proto encoding

* renaming and linter

* feat: add type constructors/validation for genesis types. (#7554)

* chore: add events for send packet (#7577)

* chore: add events for recv packet. (#7582)

* chore: add events for send packet

* chore: add events for recv packet.

* chore: lint-fixes

* testing: add merkle path to endpoint struct. (#7576)

* chore: add packet acknowledgements rpc (#7558)

* chore: add packet acknowledgements rpc

* Update modules/core/04-channel/v2/keeper/grpc_query_test.go

Co-authored-by: Gjermund Garaba <[email protected]>

---------

Co-authored-by: Gjermund Garaba <[email protected]>

* imp: added simpler events (#7613)

* feat: add solidity ABI support in ICS20Transfer ics20-1 (#7592)

* add support for abi encoding in ICS20Transfer

* fix abi encoding order

* add tests for unmarshaling packet data with encoding

* change from x-abi to x-solidity-abi

* use solidity abigen for encoding of abi ics20 payloads

* lint

* fix arm64 test build

* install compiler before first build step

* bump ethereum-go

* bump prysm for wasm simapp

* tidy

* add comment to abi encoding function

* code review cleanups

---------

Co-authored-by: srdtrk <[email protected]>

* chore: add channel client state rpc (#7616)

* chore: add channel client state rpc

* chore: drop func to provide proof

* rename v2 event attribute key for encoded data (#7635)

* bug: fix packet commitment path used for timeout (#7646)

* fix: correct error message for payload validation in packet ValidateBasic (#7649)

* chore: add validation for Ack and plug it in. (#7647)

* fix typeos (#7654)

* chore: document packet commitment keys + move prefixes to 24-host (#7633)

* move timestamp checks in SendPacket earlier (#7637)

* rename v2 router api to use portID (#7639)

* chore: fix merge mess

* chore: remove stale connection test cases brought in by merge

* use unordered check (#7689)

* chore: add telemetry reporting for packet methods (#7673)

* chore: remove redundant calls to emit events in cached context. (#7648)

* chore: add channel consensus state rpc (#7619)

* test: add tests for v2 transfer vesting account (#7688)

* test vesting accounts in v2 transfer module

* add changelog + fix godoc

* chore: use separate store paths for channels/creators (#7696)

* proto swager gen (#7722)

Co-authored-by: DimitrisJim <[email protected]>

* lint

* update abigen

* chore: add permissions to wasm image job

* fix: wasm docker file + wasm simapp gas limit (#7830)

* fix: dockerfile layer name

* update wasm simapp image with higher max gas

* lint

* updated max gas to same as cosmos hub

* Move channel back to counterparty (#7842)

* add back client registerCounterparty

* change channel to id in packet

* fix tests

* split messaging key to prefix and clientId

* change eureka packet handlers to no longer rely on channel

* naming suggestions

* fix test file

* start to fix tests

* fix v2/keeper tests

* fix tests

* DELETE channel from v2

* rm commented code

* move nextSeqSend to a better place

* remove resolveV2Identifiers for now

* lint

* lint

* review suggestions

* Update cli.go

* Compare Timeout timestamps in seconds instead of nanoseconds (#7857)

* compare seconds instead of nanoseconds

* remove unnecessary helper func

* improve naming

* imp: simplified `BuildMerklePath` (#7863)

* imp: simplified BuildMerklePath

* imp: review item

* test: improved test structure

* refactor: make transfer module v2 use same core paths as v1 (#7754)

* reuse transfer keeper in v2

* remove keeper from transfer module v2

* moved some comments around and disabled forwarding

* code review fixes

* Update modules/apps/transfer/keeper/relay_test.go

---------

Co-authored-by: Aditya <[email protected]>

* Simplify WriteAck API for async acks (#7869)

* simplify writeack api

* fix tests

* fix: send entire balance not working as expected (#7871)

* imp: updated events to remove channels (#7874)

* imp: updated channel v2 events

* fix: removed event

* fix: build wasm image on native architecture (#7884)

* distribute build on native OS for wasm builds

* fix build-wasm-simd-image-from-tag.yml

* add buildx

* Add install go for macos runner

* setup docker before login

* use linux arm instead of macos

* fix image name

* reference issue in TODO

* test: add initial eureka transfer tests (#7901)

* fix: enable noop error in v2 timeout (#7903)

* imp: harden ICS20 Eureka Module (#7908)

* enforce strict portID check in eureka module

* make base denom check

* fix comments

* lint

* lint moar

* one last time

---------

Co-authored-by: Gjermund Garaba <[email protected]>

* imp: drop solidity-ibc-eureka dependency (#7909)

* imp: abi decoding

* imp: removed abigen

---------

Co-authored-by: Gjermund Garaba <[email protected]>

* imp: use constant error acknowledgement

* test: create tests for constant error acknowledgement (#7925)

* fix msg server

* add tests

* harden transfer ack

* chore: transfer telemetry and events in eureka (#7918)

* chore: transfer telemetry and events in eureka

* lint

* chore: lint after merge

* imp: allow 8 character client-ids (#7931)

---------

Co-authored-by: sangier <[email protected]>
Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Aditya Sripal <[email protected]>
Co-authored-by: Stefano Angieri <[email protected]>
Co-authored-by: colin axnér <[email protected]>
Co-authored-by: Carlos Rodriguez <[email protected]>
Co-authored-by: chandiniv1 <[email protected]>
Co-authored-by: Vishal Potpelliwar <[email protected]>
Co-authored-by: Aditya <[email protected]>
Co-authored-by: Cian Hatton <[email protected]>
Co-authored-by: Nikolas De Giorgis <[email protected]>
Co-authored-by: Damian Nolan <[email protected]>
Co-authored-by: Gjermund Garaba <[email protected]>
Co-authored-by: lacsomot <[email protected]>
Co-authored-by: bznein <bznein@debian>
Co-authored-by: srdtrk <[email protected]>
Co-authored-by: Sruthi2357 <[email protected]>
Co-authored-by: bmo <[email protected]>
Co-authored-by: Alyak <[email protected]>
Co-authored-by: iIvaki <[email protected]>
  • Loading branch information
21 people authored Feb 7, 2025
1 parent 1e788fa commit 5c47a7d
Show file tree
Hide file tree
Showing 152 changed files with 28,254 additions and 4,825 deletions.
122 changes: 90 additions & 32 deletions .github/workflows/build-wasm-simd-image-from-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,95 @@ on:
type: string

env:
REGISTRY: ghcr.io
ORG: cosmos
IMAGE_NAME: ibc-go-wasm-simd
GIT_TAG: "${{ inputs.tag }}"
REGISTRY: ghcr.io
ORG: cosmos
IMAGE_NAME: ibc-go-wasm-simd
GIT_TAG: "${{ inputs.tag }}"

jobs:
build-image-at-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_TAG }}"
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: make python-install-deps
- name: Log in to the Container registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build image
run: |
version="$(scripts/get-libwasm-version.py --get-version)"
checksum="$(scripts/get-libwasm-version.py --get-checksum)"
# remove all `/` or `+` characters from the docker tag and replace them with a -.
# this ensures the docker tag is valid.
docker_tag="$(echo $GIT_TAG | sed 's/[^a-zA-Z0-9\.]/-/g')"
docker build . -t "${REGISTRY}/${ORG}/${IMAGE_NAME}:${docker_tag}" -f modules/light-clients/08-wasm/Dockerfile --build-arg LIBWASM_VERSION=${version} --build-arg LIBWASM_CHECKSUM=${checksum}
docker push "${REGISTRY}/${ORG}/${IMAGE_NAME}:${docker_tag}"
build-image-at-tag:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04
platform: linux/amd64
- os: ubuntu-24.04-arm
platform: linux/arm64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
ref: "${{ env.GIT_TAG }}"
fetch-depth: 0

# TODO: #7885 Get rid of this script, it is super unecessary and can probably be done in the Dockerfile or a bash script
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: make python-install-deps
- name: Get arguments
run: echo "LIBWASM_VERSION=$(scripts/get-libwasm-version.py --get-version)" >> $GITHUB_ENV

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push
id: build
uses: docker/build-push-action@v6
with:
platforms: ${{ matrix.platform }}
file: modules/light-clients/08-wasm/Dockerfile
build-args: LIBWASM_VERSION=${{ env.LIBWASM_VERSION }}
outputs: type=image,"name=${{ env.REGISTRY }}/${{ env.ORG }}/${{ env.IMAGE_NAME }}",push-by-digest=true,name-canonical=true,push=true

- name: Export digest
run: |
mkdir -p ${{ runner.temp }}/digests
digest="${{ steps.build.outputs.digest }}"
touch "${{ runner.temp }}/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ matrix.os }} # If we end up running more builds on the same OS, we need to differentiate more here
path: ${{ runner.temp }}/digests/*
if-no-files-found: error
retention-days: 1

merge:
runs-on: ubuntu-latest
needs:
- build-image-at-tag
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: ${{ runner.temp }}/digests
pattern: digests-*
merge-multiple: true

- name: Get docker tag
# remove all `/` or `+` characters from the docker tag and replace them with a -.
# this ensures the docker tag is valid.
run: echo "DOCKER_TAG=$(echo $GIT_TAG | sed 's/[^a-zA-Z0-9\.]/-/g')" >> $GITHUB_ENV

- name: Log in to the Container registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create manifest list and push
working-directory: ${{ runner.temp }}/digests
run: |
docker buildx imagetools create --tag ${{ env.REGISTRY }}/${{ env.ORG }}/${{ env.IMAGE_NAME }}:${{ env.DOCKER_TAG }} $(printf '${{ env.REGISTRY }}/${{ env.ORG }}/${{ env.IMAGE_NAME }}@sha256:%s ' *)
6 changes: 3 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ jobs:
go.sum
**/go.mod
**/go.sum
- name: Build ibc-go
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build
- name: Install compiler for arm64.
if: matrix.go-arch == 'arm64'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu build-essential
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
- name: Build ibc-go
run: GOARCH=${{ matrix.go-arch }} LEDGER_ENABLED=false make build
- name: Build e2e
run: |
cd e2e
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/wasm-client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
- name: Install compiler for arm64.
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu build-essential
echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV
if: matrix.go-arch == 'arm64'
- name: Build wasm-client
Expand Down
3 changes: 3 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ issues:
- linters:
- staticcheck
text: "SA1019:" # silence errors on usage of deprecated funcs
- text: "G115: integer overflow conversion"
linters:
- gosec

max-issues-per-linter: 10000
max-same-issues: 10000
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@ Ref: https://keepachangelog.com/en/1.0.0/

## [Unreleased]

### Testing

* [\#7430](https://github.com/cosmos/ibc-go/pull/7430) Update the block proposer in test chains for each block.
* [\#7688](https://github.com/cosmos/ibc-go/pull/7688) Added `SendMsgsWithSender` to `TestChain`.

### Dependencies

* [\#7261](https://github.com/cosmos/ibc-go/pull/7261) Bump CometBFT to v1.0.0.
Expand Down
19 changes: 19 additions & 0 deletions docs/client/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,25 @@
}
}
},
{
"url": "./tmp-swagger-gen/ibc/core/channel/v2/query.swagger.json",
"operationIds": {
"rename": {
"Params": "ChannelV2Params",
"Channel": "ChannelV2",
"ChannelClientState": "ChannelClientStateV2",
"ChannelConsensusState": "ChannelConsensusStateV2",
"NextSequenceSend": "NextSequenceSendV2",
"PacketAcknowledgement": "PacketAcknowledgementV2",
"PacketAcknowledgements": "PacketAcknowledgementsV2",
"PacketCommitment": "PacketCommitmentV2",
"PacketCommitments": "PacketCommitmentsV2",
"PacketReceipt": "PacketReceiptV2",
"UnreceivedAcks": "UnreceivedAcksV2",
"UnreceivedPackets": "UnreceivedPacketsV2",
}
}
},
{
"url": "./tmp-swagger-gen/ibc/lightclients/wasm/v1/query.swagger.json",
"operationIds": {
Expand Down
Loading

0 comments on commit 5c47a7d

Please sign in to comment.