/
contracts.go
71 lines (55 loc) · 1.59 KB
/
contracts.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
64
65
66
67
68
69
70
71
package arbitrum_nova_adapter
import (
_ "embed"
"log"
"strings"
"github.com/ethereum/go-ethereum/accounts/abi"
"github.com/ethereum/go-ethereum/common"
"github.com/momentum-xyz/ubercontroller/config"
)
//go:embed abi/token.json
var erc20abi string
//go:embed abi/staking.json
var stakeABI string
//go:embed abi/nft.json
var nftABI string
type Contracts struct {
TokenABI abi.ABI
StakeABI abi.ABI
NftABI abi.ABI
momTokenAddress common.Address
dadTokenAddress common.Address
stakeAddress common.Address
nftAddress common.Address
nodeAddress common.Address
AllAddresses []common.Address
}
func NewContracts(cfg *config.Arbitrum) *Contracts {
tokenABI, err := abi.JSON(strings.NewReader(erc20abi))
if err != nil {
log.Fatal(err)
}
stakeABI, err := abi.JSON(strings.NewReader(stakeABI))
if err != nil {
log.Fatal(err)
}
nftABI, err := abi.JSON(strings.NewReader(nftABI))
if err != nil {
log.Fatal(err)
}
contracts := &Contracts{
TokenABI: tokenABI,
StakeABI: stakeABI,
NftABI: nftABI,
momTokenAddress: common.HexToAddress(cfg.MOMTokenAddress),
dadTokenAddress: common.HexToAddress(cfg.DADTokenAddress),
stakeAddress: common.HexToAddress(cfg.StakeAddress),
nftAddress: common.HexToAddress(cfg.NFTAddress),
nodeAddress: common.HexToAddress(cfg.NodeAddress),
}
allAddresses := make([]common.Address, 0)
allAddresses = append(allAddresses,
contracts.momTokenAddress, contracts.dadTokenAddress, contracts.stakeAddress, contracts.nftAddress, contracts.nodeAddress)
contracts.AllAddresses = allAddresses
return contracts
}