This repository has been archived by the owner on Jul 12, 2022. It is now read-only.
/
add-minter.go
61 lines (55 loc) · 1.54 KB
/
add-minter.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
package erc20
import (
"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/pkg/errors"
"github.com/rs/zerolog/log"
"github.com/urfave/cli/v2"
)
var addMinterCMD = &cli.Command{
Name: "add-minter",
Description: "Add a minter to an ERC20 mintable contact",
Action: addMinter,
Flags: []cli.Flag{
&cli.StringFlag{
Name: "minter",
Usage: "Address of minter",
},
&cli.StringFlag{
Name: "erc20Address",
Usage: "Bridge contract address",
},
},
}
func addMinter(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
}
erc20 := cctx.String("erc20Address")
if !common.IsHexAddress(erc20) {
return errors.New("invalid erc20Address address")
}
erc20Address := common.HexToAddress(erc20)
minter := cctx.String("minter")
if !common.IsHexAddress(minter) {
return errors.New("invalid minter address")
}
minterAddress := common.HexToAddress(minter)
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
}
err = utils.ERC20AddMinter(ethClient, erc20Address, minterAddress)
if err != nil {
return err
}
log.Info().Msgf("%s account granted minter roles", minterAddress.String())
return nil
}