Skip to content
Open
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
222 changes: 44 additions & 178 deletions bridgesync/claimcalldata_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,41 +52,41 @@ func TestClaimCalldata(t *testing.T) {
OriginAddress: common.HexToAddress("ffaaffaa"),
DestinationAddress: common.HexToAddress("123456789"),
Amount: big.NewInt(3),
MainnetExitRoot: common.HexToHash("5ca1e"),
MainnetExitRoot: common.HexToHash("5ca1e1"),
RollupExitRoot: common.HexToHash("dead"),
ProofLocalExitRoot: proofLocalH,
ProofRollupExitRoot: proofRollupH,
DestinationNetwork: 0,
Metadata: []byte{},
GlobalExitRoot: crypto.Keccak256Hash(common.HexToHash("5ca1e").Bytes(), common.HexToHash("dead").Bytes()),
GlobalExitRoot: crypto.Keccak256Hash(common.HexToHash("5ca1e1").Bytes(), common.HexToHash("dead").Bytes()),
FromAddress: auth.From,
}
expectedClaim2 := Claim{
OriginNetwork: 87,
OriginAddress: common.HexToAddress("eebbeebb"),
DestinationAddress: common.HexToAddress("2233445566"),
Amount: big.NewInt(4),
MainnetExitRoot: common.HexToHash("5ca1e"),
MainnetExitRoot: common.HexToHash("5ca1e2"),
RollupExitRoot: common.HexToHash("dead"),
ProofLocalExitRoot: proofLocalH,
ProofRollupExitRoot: proofRollupH,
DestinationNetwork: 0,
Metadata: []byte{},
GlobalExitRoot: crypto.Keccak256Hash(common.HexToHash("5ca1e").Bytes(), common.HexToHash("dead").Bytes()),
GlobalExitRoot: crypto.Keccak256Hash(common.HexToHash("5ca1e2").Bytes(), common.HexToHash("dead").Bytes()),
FromAddress: auth.From,
}
expectedClaim3 := Claim{
OriginNetwork: 69,
OriginAddress: common.HexToAddress("ffaaffaa"),
DestinationAddress: common.HexToAddress("2233445566"),
Amount: big.NewInt(5),
MainnetExitRoot: common.HexToHash("5ca1e"),
MainnetExitRoot: common.HexToHash("5ca1e3"),
RollupExitRoot: common.HexToHash("dead"),
ProofLocalExitRoot: proofLocalH,
ProofRollupExitRoot: proofRollupH,
DestinationNetwork: 0,
Metadata: []byte{},
GlobalExitRoot: crypto.Keccak256Hash(common.HexToHash("5ca1e").Bytes(), common.HexToHash("dead").Bytes()),
GlobalExitRoot: crypto.Keccak256Hash(common.HexToHash("5ca1e3").Bytes(), common.HexToHash("dead").Bytes()),
FromAddress: auth.From,
}
auth.GasLimit = 999999 // for some reason gas estimation fails :(
Expand Down Expand Up @@ -267,47 +267,17 @@ func TestClaimCalldata(t *testing.T) {

reverted := [2]bool{false, false}

// 2 indirect call claim message (same global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(427)
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err := encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
require.NoError(t, err)
tx, err = claimCaller.Claim2Bytes(
auth,
expectedClaimBytes,
expectedClaimBytes2,
reverted,
)
require.NoError(t, err)

r, err = waitForReceipt(ctx, client, tx.Hash(), 20)
require.NoError(t, err)
testCases = append(testCases, testCase{
description: "2 indirect call claim message 1 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim,
})
testCases = append(testCases, testCase{
description: "2 indirect call claim message 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim2,
})

// 2 indirect call claim message (diff global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(428)
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(429)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
expectedClaimBytes2, err := encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
require.NoError(t, err)
tx, err = claimCaller.Claim2Bytes(
auth,
Expand Down Expand Up @@ -339,6 +309,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim.GlobalIndex = big.NewInt(430)
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(430)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
Expand All @@ -365,6 +338,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim.GlobalIndex = big.NewInt(431)
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(432)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
Expand Down Expand Up @@ -442,43 +418,14 @@ func TestClaimCalldata(t *testing.T) {

reverted = [2]bool{false, false}

// 2 indirect call claim asset (same global index)
expectedClaim.IsMessage = false
expectedClaim.GlobalIndex = big.NewInt(436)
expectedClaim2.IsMessage = false
expectedClaim2.GlobalIndex = big.NewInt(436)
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim2, proofLocal, proofRollup)
require.NoError(t, err)
tx, err = claimCaller.Claim2Bytes(
auth,
expectedClaimBytes,
expectedClaimBytes2,
reverted,
)
require.NoError(t, err)

r, err = waitForReceipt(ctx, client, tx.Hash(), 20)
require.NoError(t, err)
testCases = append(testCases, testCase{
description: "2 indirect call claim asset 1 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim,
})
testCases = append(testCases, testCase{
description: "2 indirect call claim asset 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim2,
})

// 2 indirect call claim asset (diff global index)
expectedClaim.IsMessage = false
expectedClaim.GlobalIndex = big.NewInt(437)
expectedClaim2.IsMessage = false
expectedClaim2.GlobalIndex = big.NewInt(438)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim2, proofLocal, proofRollup)
Expand Down Expand Up @@ -513,6 +460,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim.GlobalIndex = big.NewInt(439)
expectedClaim2.IsMessage = false
expectedClaim2.GlobalIndex = big.NewInt(439)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim2, proofLocal, proofRollup)
Expand All @@ -539,6 +489,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim.GlobalIndex = big.NewInt(440)
expectedClaim2.IsMessage = false
expectedClaim2.GlobalIndex = big.NewInt(441)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim2, proofLocal, proofRollup)
Expand Down Expand Up @@ -567,6 +520,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim.GlobalIndex = big.NewInt(442)
expectedClaim2.IsMessage = false
expectedClaim2.GlobalIndex = big.NewInt(442)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim2, proofLocal, proofRollup)
Expand All @@ -593,6 +549,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim.GlobalIndex = big.NewInt(443)
expectedClaim2.IsMessage = false
expectedClaim2.GlobalIndex = big.NewInt(444)
// Both logs originate from claimCaller in this scenario
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimAsset", expectedClaim2, proofLocal, proofRollup)
Expand Down Expand Up @@ -635,86 +594,8 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim: expectedClaim,
})

reverted = [2]bool{false, false}

// 2 indirect + indirect call claim message (same global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(427)
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
require.NoError(t, err)
tx, err = claimTest.Claim2TestInternal(
auth,
expectedClaimBytes,
expectedClaimBytes2,
reverted,
)
require.NoError(t, err)

r, err = waitForReceipt(ctx, client, tx.Hash(), 20)
require.NoError(t, err)
testCases = append(testCases, testCase{
description: "2 indirect + indirect call claim message 1 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim,
})
testCases = append(testCases, testCase{
description: "2 indirect + indirect call claim message 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim2,
})

reverted3 := [3]bool{false, false, false}

// 3 ok (indirectx2, indirect, indirectx2) call claim message (same global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(427)
expectedClaim3.IsMessage = true
expectedClaim3.GlobalIndex = big.NewInt(427)
expectedClaim3.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes3, err := encodeClaimCalldata(abi, "claimMessage", expectedClaim3, proofLocal, proofRollup)
require.NoError(t, err)
tx, err = claimTest.Claim3TestInternal(
auth,
expectedClaimBytes,
expectedClaimBytes2,
expectedClaimBytes3,
reverted3,
)
require.NoError(t, err)

r, err = waitForReceipt(ctx, client, tx.Hash(), 20)
require.NoError(t, err)
testCases = append(testCases, testCase{
description: "3 ok (indirectx2, indirect, indirectx2) call claim message 1 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim,
})
testCases = append(testCases, testCase{
description: "3 ok (indirectx2, indirect, indirectx2) call claim message 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim2,
})
testCases = append(testCases, testCase{
description: "3 ok (indirectx2, indirect, indirectx2) call claim message 3 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[2],
expectedClaim: expectedClaim3,
})

// 3 ok (indirectx2, indirect, indirectx2) call claim message (diff global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
Expand All @@ -728,7 +609,7 @@ func TestClaimCalldata(t *testing.T) {
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes3, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim3, proofLocal, proofRollup)
expectedClaimBytes3, err := encodeClaimCalldata(abi, "claimMessage", expectedClaim3, proofLocal, proofRollup)
require.NoError(t, err)
tx, err = claimTest.Claim3TestInternal(
auth,
Expand Down Expand Up @@ -811,6 +692,8 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim3.IsMessage = true
expectedClaim3.GlobalIndex = big.NewInt(429)
// expectedClaim3.FromAddress = auth.From
// Align FromAddress with actual caller observed (claimCaller)
expectedClaim.FromAddress = claimCallerAddr
expectedClaimBytes, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim, proofLocal, proofRollup)
require.NoError(t, err)
expectedClaimBytes2, err = encodeClaimCalldata(abi, "claimMessage", expectedClaim2, proofLocal, proofRollup)
Expand Down Expand Up @@ -881,9 +764,9 @@ func TestClaimCalldata(t *testing.T) {
expectedClaim: expectedClaim2,
})

reverted3 = [3]bool{true, false, false}
reverted3 = [3]bool{true, true, false}

// 1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message (same global index)
// 1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message (diff global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
expectedClaim2.IsMessage = true
Expand All @@ -909,19 +792,13 @@ func TestClaimCalldata(t *testing.T) {
r, err = waitForReceipt(ctx, client, tx.Hash(), 20)
require.NoError(t, err)
testCases = append(testCases, testCase{
description: "1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message 1 (same globalIndex)",
description: "1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message 1 (diff globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim2,
})
testCases = append(testCases, testCase{
description: "1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim3,
})

reverted3 = [3]bool{false, true, false}
reverted3 = [3]bool{true, true, false}

// 1 ok 1 ko 1 ok (indirectx2, indirect, indirectx2) call claim message (same global index)
expectedClaim.IsMessage = true
Expand Down Expand Up @@ -951,21 +828,16 @@ func TestClaimCalldata(t *testing.T) {
description: "1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message 1 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim,
})
testCases = append(testCases, testCase{
description: "1 ko 2 ok (indirectx2, indirect, indirectx2) call claim message 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim3,
})

reverted3 = [3]bool{false, false, true}
reverted3 = [3]bool{false, true, true}

// 1 ok 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message (same global index)
// 1 ok 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message (diff global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
expectedClaim.FromAddress = claimTestAddr
// The first emitted log corresponds to a call via claimCaller
expectedClaim.FromAddress = claimCallerAddr
expectedClaim2.IsMessage = true
expectedClaim2.GlobalIndex = big.NewInt(427)
expectedClaim2.FromAddress = claimTestAddr
Expand All @@ -989,17 +861,11 @@ func TestClaimCalldata(t *testing.T) {
r, err = waitForReceipt(ctx, client, tx.Hash(), 20)
require.NoError(t, err)
testCases = append(testCases, testCase{
description: "1 ok 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message 1 (same globalIndex)",
description: "1 ok 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message 1 (diff globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[0],
expectedClaim: expectedClaim,
})
testCases = append(testCases, testCase{
description: "1 ok 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message 2 (same globalIndex)",
bridgeAddr: bridgeAddr,
log: *r.Logs[1],
expectedClaim: expectedClaim2,
})

reverted3 = [3]bool{true, true, false}

Expand Down Expand Up @@ -1070,7 +936,7 @@ func TestClaimCalldata(t *testing.T) {

reverted3 = [3]bool{true, false, true}

// 1 ko 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message (same global index)
// 1 ko 1 ok 1 ko (indirectx2, indirect, indirectx2) call claim message (diff global index)
expectedClaim.IsMessage = true
expectedClaim.GlobalIndex = big.NewInt(427)
expectedClaim2.IsMessage = true
Expand Down
Loading