Skip to content

Commit ebd2712

Browse files
author
beer-1
committed
update migration spec
1 parent 1c8ee7f commit ebd2712

2 files changed

Lines changed: 30 additions & 24 deletions

File tree

specs/migration/readme.md

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,31 @@ Replace OP Bridge with IBC Bridge infrastructure while maintaining backward comp
2525

2626
#### L1 → L2 Flow (Two Options)
2727

28-
**Option A: Bridge Replacement (User Experience Preserved)**
28+
- Option A: Bridge Replacement (User Experience Preserved)
2929

30-
```plaintext
31-
User calls MsgInitiateTokenDeposit → Receives OP tokens on L2
32-
```
30+
```plaintext
31+
User calls MsgInitiateTokenDeposit → Receives OP tokens on L2
32+
```
3333

34-
**Option B: Normal IBC Bridge**
34+
- Option B: Normal IBC Bridge
3535

36-
```plaintext
37-
User calls MsgTransfer → IBC transfer → L2 receives IBC tokens
38-
```
36+
```plaintext
37+
User calls MsgTransfer → IBC transfer → L2 receives IBC tokens → (opchild) convert IBC token to OP token on L2
38+
```
3939

4040
#### L2 → L1 Flow (Two Options)
4141

42-
**Option A: Bridge Replacement (User Experience Preserved)**
42+
- Option A: Bridge Replacement (User Experience Preserved)
4343

44-
```plaintext
45-
User calls MsgInitiateTokenWithdrawal → Receives L1 tokens
46-
```
44+
```plaintext
45+
User calls MsgInitiateTokenWithdrawal → Receives L1 tokens
46+
```
4747

48-
**Option B: Explicit Migration**
48+
- Option B: Explicit Migration
4949

50-
```plaintext
51-
User calls MsgMigrateToken → Gets IBC tokens → Manual IBC transfer
52-
```
50+
```plaintext
51+
User calls MsgMigrateToken → Gets IBC tokens → Manual IBC transfer
52+
```
5353

5454
#### Bridge Hook Preservation
5555

@@ -88,9 +88,9 @@ User calls MsgMigrateToken → Gets IBC tokens → Manual IBC transfer
8888

8989
The IBC middleware intercepts incoming IBC transfer packets and automatically triggers IBC→L2 conversion when:
9090

91-
1. IBC tokens are received for registered denoms
92-
2. Balance increases after IBC processing
93-
3. Migration info exists for the IBC denom
91+
1. The IBC denom is registered in the IBC→L2 denom map
92+
2. The underlying `OnRecvPacket` call succeeds
93+
3. The receiver's balance for the IBC denom increases after processing (i.e. additional IBC tokens arrived)
9494

9595
### OPHost IBC Transfer Integration
9696

specs/migration/technical_specification.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,30 +86,36 @@ func (im IBCMiddleware) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet
8686
return im.app.OnRecvPacket(ctx, packet, relayer)
8787
}
8888

89-
// 5. Record balance before IBC processing
89+
// 5. Resolve receiver address
90+
receiver, err := im.ac.StringToBytes(data.Receiver)
91+
if err != nil {
92+
return newEmitErrorAcknowledgement(err)
93+
}
94+
95+
// 6. Record balance before IBC processing
9096
beforeBalance := im.bankKeeper.GetBalance(ctx, receiver, ibcDenom)
9197

92-
// 6. Process IBC packet normally
98+
// 7. Process IBC packet normally
9399
ack := im.app.OnRecvPacket(ctx, packet, relayer)
94100
if !ack.Success() {
95101
return ack
96102
}
97103

98-
// 7. Check if balance increased
104+
// 8. Check if balance increased
99105
afterBalance := im.bankKeeper.GetBalance(ctx, receiver, ibcDenom)
100106
if afterBalance.Amount.LTE(beforeBalance.Amount) {
101107
return ack
102108
}
103109

104-
// 8. Trigger IBC→L2 conversion
110+
// 9. Trigger IBC→L2 conversion
105111
diff := afterBalance.Amount.Sub(beforeBalance.Amount)
106112
ibcCoin := sdk.NewCoin(ibcDenom, diff)
107113
l2Coin, err := im.opChildKeeper.HandleMigratedTokenDeposit(ctx, receiver, ibcCoin, data.Memo)
108114
if err != nil {
109115
return newEmitErrorAcknowledgement(err)
110116
}
111117

112-
// 9. Emit conversion event
118+
// 10. Emit conversion event
113119
ctx.EventManager().EmitEvent(sdk.NewEvent(
114120
EventTypeHandleMigratedTokenDeposit,
115121
sdk.NewAttribute(AttributeKeyReceiver, data.Receiver),

0 commit comments

Comments
 (0)