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}