registry.gno
1.02 Kb ยท 59 lines
1package registry
2
3import (
4 "chain/runtime"
5 "errors"
6)
7
8var (
9 mainAddress address
10 backupAddress address
11
12 ErrInvalidAddr = errors.New("Ivan's registry: Invalid address")
13 ErrUnauthorized = errors.New("Ivan's registry: Unauthorized")
14)
15
16func init() {
17 mainAddress = "g1d24j8fwnc0w5q427fauyey4gdd30qgu69k6n0x"
18 backupAddress = "g1mw2xft3eava9kfhqw3fjj3kkf3pkammty0mtv7"
19}
20
21func MainAddress() address {
22 return mainAddress
23}
24
25func BackupAddress() address {
26 return backupAddress
27}
28
29func SetMainAddress(_ realm, addr address) error {
30 assertAuthorized()
31
32 if !addr.IsValid() {
33 return ErrInvalidAddr
34 }
35
36 mainAddress = addr
37 return nil
38}
39
40func SetBackupAddress(_ realm, addr address) error {
41 assertAuthorized()
42
43 if !addr.IsValid() {
44 return ErrInvalidAddr
45 }
46
47 backupAddress = addr
48 return nil
49}
50
51// It will stay here for now, might be useful later
52func assertAuthorized() {
53 caller := runtime.PreviousRealm().Address()
54 isAuthorized := caller == mainAddress || caller == backupAddress
55
56 if !isAuthorized {
57 panic(ErrUnauthorized)
58 }
59}