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}