diff --git a/docs.json b/docs.json index 3d98b098..9e5ad7ea 100644 --- a/docs.json +++ b/docs.json @@ -2928,6 +2928,14 @@ "ibc/latest/middleware/callbacks/callbacks-IBCv2" ] }, + { + "group": "Packet Forward Middleware", + "pages": [ + "ibc/latest/middleware/packet-forward-middleware/overview", + "ibc/latest/middleware/packet-forward-middleware/integration", + "ibc/latest/middleware/packet-forward-middleware/example-usage" + ] + }, { "group": "Rate Limit Middleware", "pages": [ @@ -3486,6 +3494,14 @@ "ibc/next/middleware/callbacks/callbacks-IBCv2" ] }, + { + "group": "Packet Forward Middleware", + "pages": [ + "ibc/next/middleware/packet-forward-middleware/overview", + "ibc/next/middleware/packet-forward-middleware/integration", + "ibc/next/middleware/packet-forward-middleware/example-usage" + ] + }, { "group": "Rate Limit Middleware", "pages": [ diff --git a/ibc/latest/middleware/packet-forward-middleware/example-usage.mdx b/ibc/latest/middleware/packet-forward-middleware/example-usage.mdx index 94c0150e..3b81c514 100644 --- a/ibc/latest/middleware/packet-forward-middleware/example-usage.mdx +++ b/ibc/latest/middleware/packet-forward-middleware/example-usage.mdx @@ -43,7 +43,6 @@ sequenceDiagram autonumber Chain A ->> Chain B: PFM transfer Chain B ->> Chain C: Forward - Chain B ->> Chain C: Forward (errors) Chain C ->> Chain B: ACK error Chain B ->> Chain A: ACK error ``` @@ -111,11 +110,10 @@ sequenceDiagram ### A -> B -> C with C error ACK -10. `B` On ICS-020 ACK from `C` find `in flight packet`, delete it -11. `B` Burns or escrows tokens. -12. `B` And write error `ACK` for original packet from `A`. -13. `A` Handle ICS-020 timeout as usual -14. `C` writes success `ACK` for packet from `B` +10. `B` On ICS-020 error `ACK` from `C`, find the `in flight packet` and delete it. +11. `B` reverses the tokens it moved when forwarding, refunding them toward `A`. +12. `B` writes an error `ACK` for the original packet from `A`. +13. `A` handles the error `ACK` (a refund) as usual. Same behavior in case of timeout on `C` @@ -138,7 +136,7 @@ In this case `A` assets `hang` until final hop timeouts or ACK. In the case of a timeout after 10 minutes for either forward, the packet would be retried up to 2 times, afterwards an error ack would be written to issue a refund on the prior chain. -`next` is the `memo` to pass for the next transfer hop. Per `memo` intended usage of a JSON string, it should be either JSON which will be Marshaled retaining key order, or an escaped JSON string which will be passed directly. +`next` is the `memo` to pass to the next transfer hop. Provide it either as a nested JSON object or as an escaped JSON string; PFM accepts both forms and re-serializes the value for the next hop. `next` as JSON diff --git a/ibc/latest/middleware/packet-forward-middleware/integration.mdx b/ibc/latest/middleware/packet-forward-middleware/integration.mdx index 4fdd3013..0d2f39f4 100644 --- a/ibc/latest/middleware/packet-forward-middleware/integration.mdx +++ b/ibc/latest/middleware/packet-forward-middleware/integration.mdx @@ -22,9 +22,9 @@ Integration of the PFM should take approximately 20 minutes. // Import the packet forward middleware import ( - packetforward "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware" - packetforwardkeeper "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware/keeper" - packetforwardtypes "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware/types" + packetforward "github.com/cosmos/ibc-go/v11/modules/apps/packet-forward-middleware" + packetforwardkeeper "github.com/cosmos/ibc-go/v11/modules/apps/packet-forward-middleware/keeper" + packetforwardtypes "github.com/cosmos/ibc-go/v11/modules/apps/packet-forward-middleware/types" ) ... @@ -48,7 +48,7 @@ type App struct { ... // Create store keys -keys := sdk.NewKVStoreKeys( +keys := storetypes.NewKVStoreKeys( ... packetforwardtypes.StoreKey, ... diff --git a/ibc/next/middleware/packet-forward-middleware/example-usage.mdx b/ibc/next/middleware/packet-forward-middleware/example-usage.mdx index c68cc294..a87a8e9f 100644 --- a/ibc/next/middleware/packet-forward-middleware/example-usage.mdx +++ b/ibc/next/middleware/packet-forward-middleware/example-usage.mdx @@ -45,7 +45,6 @@ sequenceDiagram autonumber Chain A ->> Chain B: PFM transfer Chain B ->> Chain C: Forward - Chain B ->> Chain C: Forward (errors) Chain C ->> Chain B: ACK error Chain B ->> Chain A: ACK error ``` @@ -113,11 +112,10 @@ sequenceDiagram ### A -> B -> C with C error ACK -10. `B` On ICS-020 ACK from `C` find `in flight packet`, delete it -11. `B` Burns or escrows tokens. -12. `B` And write error `ACK` for original packet from `A`. -13. `A` Handle ICS-020 timeout as usual -14. `C` writes success `ACK` for packet from `B` +10. `B` On ICS-020 error `ACK` from `C`, find the `in flight packet` and delete it. +11. `B` reverses the tokens it moved when forwarding, refunding them toward `A`. +12. `B` writes an error `ACK` for the original packet from `A`. +13. `A` handles the error `ACK` (a refund) as usual. Same behavior in case of timeout on `C` @@ -140,7 +138,7 @@ In this case `A` assets `hang` until final hop timeouts or ACK. In the case of a timeout after 10 minutes for either forward, the packet would be retried up to 2 times, afterwards an error ack would be written to issue a refund on the prior chain. -`next` is the `memo` to pass for the next transfer hop. Per `memo` intended usage of a JSON string, it should be either JSON which will be Marshaled retaining key order, or an escaped JSON string which will be passed directly. +`next` is the `memo` to pass to the next transfer hop. Provide it either as a nested JSON object or as an escaped JSON string; PFM accepts both forms and re-serializes the value for the next hop. `next` as JSON diff --git a/ibc/next/middleware/packet-forward-middleware/integration.mdx b/ibc/next/middleware/packet-forward-middleware/integration.mdx index 1420ad12..60f29a7c 100644 --- a/ibc/next/middleware/packet-forward-middleware/integration.mdx +++ b/ibc/next/middleware/packet-forward-middleware/integration.mdx @@ -24,9 +24,9 @@ Integration of the PFM should take approximately 20 minutes. // Import the packet forward middleware import ( - packetforward "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware" - packetforwardkeeper "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware/keeper" - packetforwardtypes "github.com/cosmos/ibc-go/v10/modules/apps/packet-forward-middleware/types" + packetforward "github.com/cosmos/ibc-go/v11/modules/apps/packet-forward-middleware" + packetforwardkeeper "github.com/cosmos/ibc-go/v11/modules/apps/packet-forward-middleware/keeper" + packetforwardtypes "github.com/cosmos/ibc-go/v11/modules/apps/packet-forward-middleware/types" ) ... @@ -50,7 +50,7 @@ type App struct { ... // Create store keys -keys := sdk.NewKVStoreKeys( +keys := storetypes.NewKVStoreKeys( ... packetforwardtypes.StoreKey, ...