Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: IBC transfer scenarios #10852

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 100 additions & 2 deletions a3p-integration/proposals/z:acceptance/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -888,6 +888,15 @@ __metadata:
languageName: node
linkType: hard

"@endo/errors@npm:^1.2.8":
version: 1.2.8
resolution: "@endo/errors@npm:1.2.8"
dependencies:
ses: "npm:^1.10.0"
checksum: 10c0/3f33fc7119ab840ad0f5bdfb70e73cc99630f09593c31928e30de4d9c8e898c85397c5170964d54c819a757a74d3b005f6275480ff8d0f1aa2aa8ef872852e97
languageName: node
linkType: hard

"@endo/errors@npm:^1.2.9":
version: 1.2.9
resolution: "@endo/errors@npm:1.2.9"
Expand All @@ -909,6 +918,15 @@ __metadata:
languageName: node
linkType: hard

"@endo/eventual-send@npm:^1.2.8":
version: 1.2.8
resolution: "@endo/eventual-send@npm:1.2.8"
dependencies:
"@endo/env-options": "npm:^1.1.8"
checksum: 10c0/d7c16c935441b67d029fcb6785f425a1194fb7f936e4b20dde21eb393266cb7366edf7a95d3fdfa96cd4a3246a3659a06d0dbb3c1217045e1718e1cf34c7a3bd
languageName: node
linkType: hard

"@endo/eventual-send@npm:^1.3.0":
version: 1.3.0
resolution: "@endo/eventual-send@npm:1.3.0"
Expand All @@ -933,7 +951,18 @@ __metadata:
languageName: node
linkType: hard

"@endo/far@npm:^1.0.0, @endo/far@npm:^1.1.10":
"@endo/far@npm:^1.0.0":
version: 1.1.9
resolution: "@endo/far@npm:1.1.9"
dependencies:
"@endo/errors": "npm:^1.2.8"
"@endo/eventual-send": "npm:^1.2.8"
"@endo/pass-style": "npm:^1.4.7"
checksum: 10c0/e0d95743c25183b961aa1f11dd81c067739fd2fb3deeab58520e949961eacba9ed109bb01b9ed820d596e8a043b6721d650d9624abf0263296cca647e7286a2e
languageName: node
linkType: hard

"@endo/far@npm:^1.1.10":
version: 1.1.10
resolution: "@endo/far@npm:1.1.10"
dependencies:
Expand Down Expand Up @@ -1012,6 +1041,19 @@ __metadata:
languageName: node
linkType: hard

"@endo/pass-style@npm:^1.4.7":
version: 1.4.7
resolution: "@endo/pass-style@npm:1.4.7"
dependencies:
"@endo/env-options": "npm:^1.1.8"
"@endo/errors": "npm:^1.2.8"
"@endo/eventual-send": "npm:^1.2.8"
"@endo/promise-kit": "npm:^1.1.8"
"@fast-check/ava": "npm:^1.1.5"
checksum: 10c0/ee30e011fb08c292718a315f2ebd5ee2da6d918bf2cdaf2b269e123207c642fa1525493c41180db8c941e1a1959369730114b116656c99e8bb107ca5917f3f4e
languageName: node
linkType: hard

"@endo/pass-style@npm:^1.4.8":
version: 1.4.8
resolution: "@endo/pass-style@npm:1.4.8"
Expand All @@ -1037,6 +1079,15 @@ __metadata:
languageName: node
linkType: hard

"@endo/promise-kit@npm:^1.1.8":
version: 1.1.8
resolution: "@endo/promise-kit@npm:1.1.8"
dependencies:
ses: "npm:^1.10.0"
checksum: 10c0/3a51755822bd4112474bec584005b81f9ffe6a6b590faa16cff7a4994010d001d6d190f58a1e890d85b0feb0eb052d79ed2c5ed88977afb0e47ca53b6b199196
languageName: node
linkType: hard

"@endo/promise-kit@npm:^1.1.9":
version: 1.1.9
resolution: "@endo/promise-kit@npm:1.1.9"
Expand Down Expand Up @@ -1133,6 +1184,17 @@ __metadata:
languageName: node
linkType: hard

"@fast-check/ava@npm:^1.1.5":
version: 1.2.1
resolution: "@fast-check/ava@npm:1.2.1"
dependencies:
fast-check: "npm:^3.0.0"
peerDependencies:
ava: ^4 || ^5 || ^6
checksum: 10c0/3800098fd7e8098102544a2f7a595351d063a7ebaeca18ed4901df5ec2679da2330ba8c0db2c820721d4cbb3e23d817ba22fec6d058957930e229f44fa71a684
languageName: node
linkType: hard

"@humanwhocodes/config-array@npm:^0.13.0":
version: 0.13.0
resolution: "@humanwhocodes/config-array@npm:0.13.0"
Expand Down Expand Up @@ -2483,7 +2545,18 @@ __metadata:
languageName: node
linkType: hard

"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
dependencies:
path-key: "npm:^3.1.0"
shebang-command: "npm:^2.0.0"
which: "npm:^2.0.1"
checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750
languageName: node
linkType: hard

"cross-spawn@npm:^7.0.2":
version: 7.0.5
resolution: "cross-spawn@npm:7.0.5"
dependencies:
Expand Down Expand Up @@ -3102,6 +3175,15 @@ __metadata:
languageName: node
linkType: hard

"fast-check@npm:^3.0.0":
version: 3.22.0
resolution: "fast-check@npm:3.22.0"
dependencies:
pure-rand: "npm:^6.1.0"
checksum: 10c0/15c70f83df655f9bdcec4f8ed7e3207a933bf6e22c220a4fafc7ea17a28a009bc5d0a85588689f5726e3514796745cb5b35e7295ce469ac286992548fd55cc1d
languageName: node
linkType: hard

"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
Expand Down Expand Up @@ -5444,6 +5526,13 @@ __metadata:
languageName: node
linkType: hard

"pure-rand@npm:^6.1.0":
version: 6.1.0
resolution: "pure-rand@npm:6.1.0"
checksum: 10c0/1abe217897bf74dcb3a0c9aba3555fe975023147b48db540aa2faf507aee91c03bf54f6aef0eb2bf59cc259a16d06b28eca37f0dc426d94f4692aeff02fb0e65
languageName: node
linkType: hard

"query-string@npm:^9.1.1":
version: 9.1.1
resolution: "query-string@npm:9.1.1"
Expand Down Expand Up @@ -5760,6 +5849,15 @@ __metadata:
languageName: node
linkType: hard

"ses@npm:^1.10.0":
version: 1.10.0
resolution: "ses@npm:1.10.0"
dependencies:
"@endo/env-options": "npm:^1.1.8"
checksum: 10c0/83b92bc49e27af04eeb7ee01a2196a0c4b0906e4de51e70403aa9ffc82be1d27a0c3506f2d54da8d6d260be0855f2123a13a7e2c6896e81ec85899df1a428609
languageName: node
linkType: hard

"ses@npm:^1.11.0":
version: 1.11.0
resolution: "ses@npm:1.11.0"
Expand Down
18 changes: 13 additions & 5 deletions golang/cosmos/types/address_hooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,15 @@ import (
)

type AddressRole string
type PacketOrigin string

const (
RoleSender AddressRole = "Sender"
RoleReceiver AddressRole = "Receiver"

PacketSrc PacketOrigin = "src"
PacketDst PacketOrigin = "dst"

AddressHookVersion = 0
BaseAddressLengthBytes = 2
)
Expand Down Expand Up @@ -192,11 +196,15 @@ func ExtractBaseAddressFromPacket(cdc codec.Codec, packet ibcexported.PacketI, r
return target, nil
}

// Create a new packet with the new transfer packet data.
// Re-serialize the packet data with the base addresses.
newData, err := cdc.MarshalJSON(newTransferData)
if err != nil {
return target, err
// Create new packet data from the new transfer data.
var newData []byte
if *newTransferData == transferData {
// The transfer data properties were not modified, so we can reuse the
// original packet data.
newData = bytes.Clone(packet.GetData())
} else {
// Re-serialize the packet data with the base addresses.
newData = newTransferData.GetBytes()
}

// Create the new packet.
Expand Down
20 changes: 13 additions & 7 deletions golang/cosmos/x/vibc/types/receiver.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (

var (
_ vm.PortHandler = (*Receiver)(nil)
_ exported.Acknowledgement = (*rawAcknowledgement)(nil)
_ exported.Acknowledgement = (*RawAcknowledgement)(nil)
)

type ReceiverImpl interface {
Expand All @@ -38,7 +38,7 @@ func NewReceiver(impl ReceiverImpl) Receiver {
}
}

type portMessage struct { // comes from swingset's IBC handler
type PortMessage struct { // comes from swingset's IBC handler
Type string `json:"type"` // IBC_METHOD
Method string `json:"method"`
Packet channeltypes.Packet `json:"packet"`
Expand Down Expand Up @@ -71,15 +71,21 @@ func orderToString(order channeltypes.Order) string {
}
}

type rawAcknowledgement struct {
type RawAcknowledgement struct {
data []byte
}

func (r rawAcknowledgement) Acknowledgement() []byte {
func NewRawAcknowledgement(data []byte) RawAcknowledgement {
return RawAcknowledgement{
data: data,
}
}

func (r RawAcknowledgement) Acknowledgement() []byte {
return r.data
}

func (r rawAcknowledgement) Success() bool {
func (r RawAcknowledgement) Success() bool {
return true
}

Expand All @@ -94,7 +100,7 @@ func (ir Receiver) Receive(cctx context.Context, jsonRequest string) (jsonReply
ctx := sdk.UnwrapSDKContext(cctx)
impl := ir.impl

msg := new(portMessage)
msg := new(PortMessage)
err = json.Unmarshal([]byte(jsonRequest), &msg)
if err != nil {
return "", err
Expand Down Expand Up @@ -137,7 +143,7 @@ func (ir Receiver) Receive(cctx context.Context, jsonRequest string) (jsonReply
)

case "receiveExecuted":
ack := rawAcknowledgement{
ack := RawAcknowledgement{
data: msg.Ack,
}
err = impl.ReceiveWriteAcknowledgement(ctx, msg.Packet, ack)
Expand Down
6 changes: 5 additions & 1 deletion golang/cosmos/x/vtransfer/ibc_middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,11 @@ func (im IBCMiddleware) WriteAcknowledgement(
packet exported.PacketI,
ack exported.Acknowledgement,
) error {
return im.vtransferKeeper.InterceptWriteAcknowledgement(ctx, chanCap, packet, ack)
syncAck, origPacket := im.vtransferKeeper.InterceptWriteAcknowledgement(ctx, chanCap, packet, ack)
if syncAck != nil {
return im.vtransferKeeper.WriteAcknowledgement(ctx, chanCap, origPacket, syncAck)
}
return nil
}

///////////////////////////////////
Expand Down
Loading
Loading