migration.gno
1.68 Kb · 74 lines
1package admin
2
3import "gno.land/p/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v2/accesscontrol"
4
5var (
6 migrationExportCompleted bool
7 migrationStateCleaned bool
8)
9
10type MigrationState struct {
11 Admin address
12 PendingAdmin address
13 ExplorerURL string
14 FeeCollector address
15 Protocol address
16 Frozen bool
17 FaucetTargetAmount int64
18 Operators []address
19}
20
21func GetMigrationState() MigrationState {
22 assertMigrationStateAvailable()
23 return MigrationState{
24 Admin: admin,
25 PendingAdmin: pendingAdmin,
26 ExplorerURL: explorerURL,
27 FeeCollector: feeCollectorAddr,
28 Protocol: protocolAddr,
29 Frozen: frozen,
30 FaucetTargetAmount: faucetTargetAmount,
31 Operators: GetOperators(),
32 }
33}
34
35func SetMigrationExportCompleted(cur realm, completed bool) {
36 accesscontrol.AssertIsAdmin(0, cur, IsAdmin)
37 assertMigrationStateAvailable()
38 migrationExportCompleted = completed
39}
40
41func IsMigrationExportCompleted() bool {
42 return migrationExportCompleted
43}
44
45func IsMigrationStateCleaned() bool {
46 return migrationStateCleaned
47}
48
49func CleanupMigrationState(cur realm) {
50 assertCanCleanupMigrationState(0, cur)
51
52 operatorAddrs = nil
53 faucetTargetAmount = 0
54 migrationStateCleaned = true
55}
56
57func assertMigrationStateAvailable() {
58 if migrationStateCleaned {
59 panic("migration state cleaned")
60 }
61}
62
63func assertCanCleanupMigrationState(_ int, rlm realm) {
64 accesscontrol.AssertIsAdmin(0, rlm, IsAdmin)
65 if !frozen {
66 panic("contract must be frozen")
67 }
68 if !migrationExportCompleted {
69 panic("migration not completed")
70 }
71 if migrationStateCleaned {
72 panic("migration state already cleaned")
73 }
74}