Skip to content

Commit

Permalink
update event handler for deposit/withdraw native token
Browse files Browse the repository at this point in the history
  • Loading branch information
nguyenzung committed Dec 11, 2024
1 parent 9d2518f commit 1f83cb7
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 11 deletions.
22 changes: 14 additions & 8 deletions internal/app/thanos-notif/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ import (
)

const (
MessagePassedEventABI = "MessagePassed(uint256,address,address,uint256,uint256,bytes,bytes32)"
WithdrawalFinalizedEventABI = "WithdrawalFinalized(bytes32,bool)"
ETHDepositInitiatedEventABI = "ETHDepositInitiated(address,address,uint256,bytes)"
ETHWithdrawalFinalizedEventABI = "ETHWithdrawalFinalized(address,address,uint256,bytes)"
ERC20DepositInitiatedEventABI = "ERC20DepositInitiated(address,address,address,address,uint256,bytes)"
ERC20WithdrawalFinalizedEventABI = "ERC20WithdrawalFinalized(address,address,address,address,uint256,bytes)"
DepositFinalizedEventABI = "DepositFinalized(address,address,address,address,uint256,bytes)"
WithdrawalInitiatedEventABI = "WithdrawalInitiated(address,address,address,address,uint256,bytes)"
MessagePassedEventABI = "MessagePassed(uint256,address,address,uint256,uint256,bytes,bytes32)"
WithdrawalFinalizedEventABI = "WithdrawalFinalized(bytes32,bool)"
NativeTokenBridgeInitiatedEventABI = "NativeTokenBridgeInitiated(address,address,uint256,bytes)"
NativeTokenBridgeFinalizedEventABI = "NativeTokenBridgeFinalized(address,address,uint256,bytes)"
ETHDepositInitiatedEventABI = "ETHDepositInitiated(address,address,uint256,bytes)"
ETHWithdrawalFinalizedEventABI = "ETHWithdrawalFinalized(address,address,uint256,bytes)"
ERC20DepositInitiatedEventABI = "ERC20DepositInitiated(address,address,address,address,uint256,bytes)"
ERC20WithdrawalFinalizedEventABI = "ERC20WithdrawalFinalized(address,address,address,address,uint256,bytes)"
DepositFinalizedEventABI = "DepositFinalized(address,address,address,address,uint256,bytes)"
WithdrawalInitiatedEventABI = "WithdrawalInitiated(address,address,address,address,uint256,bytes)"
)

type App struct {
Expand Down Expand Up @@ -145,6 +147,10 @@ func (p *App) initL1Listener(ctx context.Context, slackNotifier listener.Notifie
// OptimismPortal
l1Service.AddSubscribeRequest(listener.MakeEventRequest(slackNotifier, p.cfg.OptimismPortal, WithdrawalFinalizedEventABI, p.handleWithdrawalFinalized))

// L1StandardBridge TON deposit and withdrawal
l1Service.AddSubscribeRequest(listener.MakeEventRequest(slackNotifier, p.cfg.L1StandardBridge, NativeTokenBridgeInitiatedEventABI, p.depositNativeTokenInitiatedEvent))
l1Service.AddSubscribeRequest(listener.MakeEventRequest(slackNotifier, p.cfg.L1StandardBridge, NativeTokenBridgeFinalizedEventABI, p.withdrawalNativeTokenFinalizedEvent))

// L1StandardBridge ETH deposit and withdrawal
l1Service.AddSubscribeRequest(listener.MakeEventRequest(slackNotifier, p.cfg.L1StandardBridge, ETHDepositInitiatedEventABI, p.depositETHInitiatedEvent))
l1Service.AddSubscribeRequest(listener.MakeEventRequest(slackNotifier, p.cfg.L1StandardBridge, ETHWithdrawalFinalizedEventABI, p.withdrawalETHFinalizedEvent))
Expand Down
29 changes: 29 additions & 0 deletions internal/app/thanos-notif/deposit.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,35 @@ import (
"github.com/tokamak-network/tokamak-thanos-event-listener/pkg/log"
)

func (p *App) depositNativeTokenInitiatedEvent(vLog *ethereumTypes.Log) (string, string, error) {
log.GetLogger().Infow("TON Deposit Event", "event", vLog)

l1BridgeFilterer, _, err := p.getBridgeFilterers()
if err != nil {
return "", "", err
}

event, err := l1BridgeFilterer.ParseNativeTokenBridgeInitiated(*vLog)
if err != nil {
log.GetLogger().Errorw("NativeTokenBridgeInitiated event parsing fail", "error", err)
return "", "", err
}

ethDep := bindings.L1StandardBridgeNativeTokenBridgeInitiated{
From: event.From,
To: event.To,
Amount: event.Amount,
}

Amount := formatAmount(ethDep.Amount, 18)

// Slack notify title and text
title := fmt.Sprintf("[" + p.cfg.Network + "] [TON Deposit Initialized]")
text := fmt.Sprintf("Tx: "+p.cfg.L1ExplorerUrl+"/tx/%s\nFrom: "+p.cfg.L1ExplorerUrl+"/address/%s\nTo: "+p.cfg.L2ExplorerUrl+"/address/%s\nAmount: %s TON", vLog.TxHash, ethDep.From, ethDep.To, Amount)

return title, text, nil
}

func (p *App) depositETHInitiatedEvent(vLog *ethereumTypes.Log) (string, string, error) {
log.GetLogger().Infow("Got ETH Deposit Event", "event", vLog)

Expand Down
34 changes: 32 additions & 2 deletions internal/app/thanos-notif/withdrawal.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ func (p *App) handleMessagePassed(vLog *ethereumTypes.Log) (string, string, erro
nonce, sender, target, value, minGasLimit, message := in[0].(*big.Int), in[1].(common.Address), in[2].(common.Address), in[3], in[4], in[5].([]byte)
log.GetLogger().Debug("[ Sent message ]", nonce, sender, target, value, minGasLimit, message)
if target.Hex() == p.cfg.L1StandardBridge || target.Hex() == p.cfg.L1UsdcBridge {
return "", "", errors.New("handle in another functions")
fmt.Println("Not handled in MessagePassed")
return "", "", errors.New(" handle in other function")
}
}
defaultCase:
Expand Down Expand Up @@ -109,7 +110,7 @@ func (p *App) handleWithdrawalFinalized(vLog *ethereumTypes.Log) (string, string
nonce, sender, target, value, minGasLimit, message := in[0].(*big.Int), in[1].(common.Address), in[2].(common.Address), in[3], in[4], in[5].([]byte)
log.GetLogger().Debug("[Relay Message ]", nonce, sender, target, value, minGasLimit, message)
if target.Hex() == p.cfg.L1StandardBridge || target.Hex() == p.cfg.L1UsdcBridge {
return "", "", errors.New("handle finalizing in another functions")
return "", "", errors.New("handle in other function")
}
}

Expand All @@ -130,6 +131,35 @@ defaultCase:
return title, text, nil
}

func (p *App) withdrawalNativeTokenFinalizedEvent(vLog *ethereumTypes.Log) (string, string, error) {
log.GetLogger().Infow("Got TON Withdrawal Event", "event", vLog)

l1BridgeFilterer, _, err := p.getBridgeFilterers()
if err != nil {
return "", "", err
}

event, err := l1BridgeFilterer.ParseNativeTokenBridgeFinalized(*vLog)
if err != nil {
log.GetLogger().Errorw("NativeTokenBridgeFinalized event log parsing fail", "error", err)
return "", "", err
}

ethWith := bindings.L1StandardBridgeNativeTokenBridgeFinalized{
From: event.From,
To: event.To,
Amount: event.Amount,
}

Amount := formatAmount(ethWith.Amount, 18)

// Slack notify title and text
title := fmt.Sprintf("[" + p.cfg.Network + "] [TON Withdrawal Finalized]")
text := fmt.Sprintf("Tx: "+p.cfg.L1ExplorerUrl+"/tx/%s\nFrom: "+p.cfg.L2ExplorerUrl+"/address/%s\nTo: "+p.cfg.L1ExplorerUrl+"/address/%s\nAmount: %s TON", vLog.TxHash, ethWith.From, ethWith.To, Amount)

return title, text, nil
}

func (p *App) withdrawalETHFinalizedEvent(vLog *ethereumTypes.Log) (string, string, error) {
log.GetLogger().Infow("Got ETH Withdrawal Event", "event", vLog)

Expand Down
6 changes: 5 additions & 1 deletion internal/pkg/notification/debugnotif.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,19 @@ func MakeDebugNotifier() *DebugNotifier {
}

func (notifier *DebugNotifier) NotifyWithReTry(title string, text string) {
fmt.Println()
fmt.Println("Title: ", title)
fmt.Println("Text:\n", text)
fmt.Println()
}

func (notifier *DebugNotifier) Notify(title string, text string) error {
fmt.Println()
fmt.Println(" ------------------------------- ")
fmt.Println(" /* ------------------------------- ")
fmt.Println("Title: ", title)
fmt.Println("Text:\n", text)
fmt.Println(" ------------------------------- */ ")
fmt.Println()
return nil
}

Expand Down

0 comments on commit 1f83cb7

Please sign in to comment.