Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(opbot): fix refund forever #3082

Merged
merged 10 commits into from
Aug 30, 2024
82 changes: 42 additions & 40 deletions contrib/opbot/botmd/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,63 +278,65 @@ func (b *Bot) rfqRefund() *slacker.CommandDefinition {
return
}

var rawRequest *relapi.GetQuoteRequestResponse
var err error
for _, relayer := range b.cfg.RelayerURLS {
relClient := relapi.NewRelayerClient(b.handler, relayer)

rawRequest, err := getQuoteRequest(ctx.Context(), relClient, tx)
if err != nil {
_, err := ctx.Response().Reply("error fetching quote request")
if err != nil {
log.Println(err)
}
return
rawRequest, err = getQuoteRequest(ctx.Context(), relClient, tx)
if err == nil {
break
}

fastBridgeContract, err := b.makeFastBridge(ctx.Context(), rawRequest)
}
if err != nil {
_, err := ctx.Response().Reply("error fetching quote request")
if err != nil {
_, err := ctx.Response().Reply(err.Error())
if err != nil {
log.Println(err)
}
return
log.Println(err)
}
return
}

canRefund, err := b.screener.ScreenAddress(ctx.Context(), rawRequest.Sender)
fastBridgeContract, err := b.makeFastBridge(ctx.Context(), rawRequest)
if err != nil {
_, err := ctx.Response().Reply(err.Error())
if err != nil {
_, err := ctx.Response().Reply("error screening address")
if err != nil {
log.Println(err)
}
return
log.Println(err)
}
return
}

if !canRefund {
_, err := ctx.Response().Reply("address cannot be refunded")
if err != nil {
log.Println(err)
}
return
canRefund, err := b.screener.ScreenAddress(ctx.Context(), rawRequest.Sender)
if err != nil {
_, err := ctx.Response().Reply("error screening address")
if err != nil {
log.Println(err)
}

nonce, err := b.submitter.SubmitTransaction(ctx.Context(), big.NewInt(int64(rawRequest.OriginChainID)), func(transactor *bind.TransactOpts) (tx *types.Transaction, err error) {
tx, err = fastBridgeContract.Refund(transactor, common.Hex2Bytes(rawRequest.QuoteRequestRaw))
if err != nil {
return nil, fmt.Errorf("error submitting refund: %w", err)
}
return tx, nil
})
return
}
if !canRefund {
_, err := ctx.Response().Reply("address cannot be refunded")
if err != nil {
log.Printf("error submitting refund: %v\n", err)
continue
log.Println(err)
}
return
}

// TODO: follow the lead of https://github.com/synapsecns/sanguine/pull/2845
_, err = ctx.Response().Reply(fmt.Sprintf("refund submitted with nonce %d", nonce))
nonce, err := b.submitter.SubmitTransaction(ctx.Context(), big.NewInt(int64(rawRequest.OriginChainID)), func(transactor *bind.TransactOpts) (tx *types.Transaction, err error) {
tx, err = fastBridgeContract.Refund(transactor, common.Hex2Bytes(rawRequest.QuoteRequestRaw))
if err != nil {
log.Println(err)
return nil, fmt.Errorf("error submitting refund: %w", err)
}
return tx, nil
})
if err != nil {
log.Printf("error submitting refund: %v\n", err)
return
}

// TODO: follow the lead of https://github.com/synapsecns/sanguine/pull/2845
_, err = ctx.Response().Reply(fmt.Sprintf("refund submitted with nonce %d", nonce))
if err != nil {
log.Println(err)
}
},
}
}
Expand Down
Loading