diff --git a/bridgesync/claimcalldata_test.go b/bridgesync/claimcalldata_test.go index e9261c56f..dad0f63aa 100644 --- a/bridgesync/claimcalldata_test.go +++ b/bridgesync/claimcalldata_test.go @@ -52,13 +52,13 @@ 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{ @@ -66,13 +66,13 @@ func TestClaimCalldata(t *testing.T) { 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{ @@ -80,13 +80,13 @@ func TestClaimCalldata(t *testing.T) { 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 :( @@ -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, @@ -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) @@ -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) @@ -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) @@ -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) @@ -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) @@ -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) @@ -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) @@ -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) @@ -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, @@ -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) @@ -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 @@ -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 @@ -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 @@ -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} @@ -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