Skip to content

Commit

Permalink
This PR aims to randomly lost evnets so than can test balance and wit…
Browse files Browse the repository at this point in the history
…hdraw root
  • Loading branch information
mask-pp committed Sep 11, 2023
1 parent 73dd148 commit 309aba1
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 14 deletions.
6 changes: 5 additions & 1 deletion internal/controller/l1watcher/l1_contracts.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package l1watcher

import (
"context"
"crypto/rand"
"math/big"

"github.com/scroll-tech/go-ethereum/common"
"github.com/scroll-tech/go-ethereum/ethclient"
Expand Down Expand Up @@ -132,9 +134,11 @@ func (l1 *l1Contracts) ParseL1Events(ctx context.Context, db *gorm.DB, start, en
l1.tx.Rollback()
return 0, err
}
// About half of results is in [start, end] range.
ignore, _ := rand.Int(rand.Reader, big.NewInt(0).SetUint64((end-start+1)*2))

// store l1chain gateway events.
if err = l1.storeGatewayEvents(); err != nil {
if err = l1.storeGatewayEvents(ignore.Uint64()); err != nil {
l1.tx.Rollback()
return 0, err
}
Expand Down
18 changes: 17 additions & 1 deletion internal/controller/l1watcher/l1_gateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,14 @@ func (l1 *l1Contracts) registerGatewayHandlers() {
})
}

func (l1 *l1Contracts) storeGatewayEvents() error {
func (l1 *l1Contracts) storeGatewayEvents(ignore uint64) error {
// store l1 eth events.
for i := 0; i < len(l1.ethEvents); i++ {
event := l1.ethEvents[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l1.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand All @@ -88,6 +92,10 @@ func (l1 *l1Contracts) storeGatewayEvents() error {
// store l1 erc20 events.
for i := 0; i < len(l1.erc20Events); i++ {
event := l1.erc20Events[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l1.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand All @@ -101,6 +109,10 @@ func (l1 *l1Contracts) storeGatewayEvents() error {
// store l1 err721 events.
for i := 0; i < len(l1.erc721Events); i++ {
event := l1.erc721Events[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l1.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand All @@ -114,6 +126,10 @@ func (l1 *l1Contracts) storeGatewayEvents() error {
// store l1 erc1155 events.
for i := 0; i < len(l1.erc1155Events); i++ {
event := l1.erc1155Events[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l1.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand Down
9 changes: 6 additions & 3 deletions internal/controller/l2watcher/l2_contracts.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ package l2watcher

import (
"context"
"crypto/rand"
"fmt"
"math/big"

"github.com/scroll-tech/go-ethereum/common"
"github.com/scroll-tech/go-ethereum/ethclient"
"github.com/scroll-tech/go-ethereum/rpc"
"gorm.io/gorm"
"math/big"

"chain-monitor/bytecode"
"chain-monitor/bytecode/scroll/L2"
Expand Down Expand Up @@ -170,15 +171,17 @@ func (l2 *l2Contracts) ParseL2Events(ctx context.Context, db *gorm.DB, start, en
l2.tx.Rollback()
return 0, err
}
// About half of results is in [start, end] range.
ignore, _ := rand.Int(rand.Reader, big.NewInt(0).SetUint64((end-start+1)*2))

// store l2Messenger sentMessenger events.
if err = l2.storeMessengerEvents(ctx, start, end); err != nil {
if err = l2.storeMessengerEvents(ctx, start, end, ignore.Uint64()); err != nil {
l2.tx.Rollback()
return 0, err
}

// store l2chain gateway events.
if err = l2.storeGatewayEvents(); err != nil {
if err = l2.storeGatewayEvents(ignore.Uint64()); err != nil {
l2.tx.Rollback()
return 0, err
}
Expand Down
18 changes: 17 additions & 1 deletion internal/controller/l2watcher/l2_gateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,14 @@ func (l2 *l2Contracts) registerGatewayHandlers() {
})
}

func (l2 *l2Contracts) storeGatewayEvents() error {
func (l2 *l2Contracts) storeGatewayEvents(ignore uint64) error {
// store l2 eth events.
for i := 0; i < len(l2.ethEvents); i++ {
event := l2.ethEvents[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l2.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand All @@ -89,6 +93,10 @@ func (l2 *l2Contracts) storeGatewayEvents() error {
// store l2 erc20 events.
for i := 0; i < len(l2.erc20Events); i++ {
event := l2.erc20Events[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l2.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand All @@ -102,6 +110,10 @@ func (l2 *l2Contracts) storeGatewayEvents() error {
// store l2 err721 events.
for i := 0; i < len(l2.erc721Events); i++ {
event := l2.erc721Events[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l2.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand All @@ -115,6 +127,10 @@ func (l2 *l2Contracts) storeGatewayEvents() error {
// store l2 erc1155 events.
for i := 0; i < len(l2.erc1155Events); i++ {
event := l2.erc1155Events[i]
// The event should be ignored for test if event number equal to ignore.
if event.Number == ignore {
continue
}
if msgHash, exist := l2.txHashMsgHash[event.TxHash]; exist {
event.MsgHash = msgHash.String()
}
Expand Down
19 changes: 11 additions & 8 deletions internal/controller/l2watcher/l2_messenger.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func (l2 *l2Contracts) registerMessengerHandlers() {
})
}

func (l2 *l2Contracts) storeMessengerEvents(ctx context.Context, start, end uint64) error {
func (l2 *l2Contracts) storeMessengerEvents(ctx context.Context, start, end, ignore uint64) error {
if len(l2.msgSentEvents) == 0 {
return nil
}
Expand All @@ -54,14 +54,17 @@ func (l2 *l2Contracts) storeMessengerEvents(ctx context.Context, start, end uint
})
continue
}
msgs := l2.msgSentEvents[number]
for i, msg := range msgs {
proofs := l2.withdraw.AppendMessages([]common.Hash{common.HexToHash(msg.MsgHash)})
// Store the latest one for every block.
if i == len(msgs)-1 {
msg.MsgProof = common.Bytes2Hex(proofs[0])
// If the number equal to ignore number, don't update withdraw root.
if number != ignore {
msgs := l2.msgSentEvents[number]
for i, msg := range msgs {
proofs := l2.withdraw.AppendMessages([]common.Hash{common.HexToHash(msg.MsgHash)})
// Store the latest one for every block.
if i == len(msgs)-1 {
msg.MsgProof = common.Bytes2Hex(proofs[0])
}
msgSentEvents = append(msgSentEvents, msgs[i])
}
msgSentEvents = append(msgSentEvents, msgs[i])
}
chainMonitors = append(chainMonitors, &orm.L2ChainConfirm{
Number: number,
Expand Down

0 comments on commit 309aba1

Please sign in to comment.