This repository has been archived by the owner on Jul 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
is-relayer.go
63 lines (58 loc) · 1.59 KB
/
is-relayer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package admin
import (
"fmt"
"math/big"
"github.com/ChainSafe/chainbridge-celo/cbcli/cliutils"
"github.com/ChainSafe/chainbridge-celo/chain/client"
"github.com/ChainSafe/chainbridge-celo/utils"
"github.com/ethereum/go-ethereum/common"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
)
var isRelayerCMD = &cli.Command{
Name: "is-relayer",
Description: "Check if an address is registered as a relayer",
Action: isRelayer,
Flags: []cli.Flag{
&cli.StringFlag{
Name: "relayer",
Usage: "Address to check",
},
&cli.StringFlag{
Name: "bridge",
Usage: "Bridge contract address",
},
},
}
func isRelayer(cctx *cli.Context) error {
url := cctx.String("url")
gasLimit := cctx.Uint64("gasLimit")
gasPrice := cctx.Uint64("gasPrice")
sender, err := cliutils.DefineSender(cctx)
if err != nil {
return err
}
bridgeAddress, err := cliutils.DefineBridgeAddress(cctx)
if err != nil {
return err
}
relayer := cctx.String("relayer")
if !common.IsHexAddress(relayer) {
return fmt.Errorf("invalid relayer address %s", relayer)
}
relayerAddress := common.HexToAddress(relayer)
ethClient, err := client.NewClient(url, false, sender, big.NewInt(0).SetUint64(gasLimit), big.NewInt(0).SetUint64(gasPrice), big.NewFloat(1))
if err != nil {
return err
}
isRelayer, err := utils.AdminIsRelayer(ethClient, bridgeAddress, relayerAddress)
if err != nil {
return err
}
if isRelayer {
log.Info().Msgf("Requested address %s is relayer", relayerAddress.String())
} else {
log.Info().Msgf("Requested address %s is not a relayer", relayerAddress.String())
}
return nil
}