config.gno
0.87 Kb ยท 63 lines
1package config
2
3import (
4 "chain/runtime"
5 "errors"
6)
7
8var (
9 main address
10 backup address
11
12 ErrInvalidAddr = errors.New("Invalid address")
13 ErrUnauthorized = errors.New("Unauthorized")
14)
15
16func init() {
17 main = "g1x9qyf6f34v2g52k4q5smn5tctmj3hl2kj7l2ql"
18}
19
20func Address() address {
21 return main
22}
23
24func Backup() address {
25 return backup
26}
27
28func SetAddress(_ realm, a address) error {
29 if !a.IsValid() {
30 return ErrInvalidAddr
31 }
32
33 if err := checkAuthorized(); err != nil {
34 return err
35 }
36
37 main = a
38 return nil
39}
40
41func SetBackup(_ realm, a address) error {
42 if !a.IsValid() {
43 return ErrInvalidAddr
44 }
45
46 if err := checkAuthorized(); err != nil {
47 return err
48 }
49
50 backup = a
51 return nil
52}
53
54func checkAuthorized() error {
55 caller := runtime.PreviousRealm().Address()
56 isAuthorized := caller == main || caller == backup
57
58 if !isAuthorized {
59 return ErrUnauthorized
60 }
61
62 return nil
63}