migration_research_migration.gno
1.27 Kb · 49 lines
1package admin
2
3import (
4 "gno.land/p/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/accesscontrol"
5 oldadmin "gno.land/r/g1nqnrt3aldzhu6zzeg75yw97wvavqy7wr77g56q/deploy-test/v0/v0/admin"
6)
7
8var (
9 migrationInitialized bool
10 migrationFinalized bool
11)
12
13// MigrationInit is the only state-changing admin migration call.
14func MigrationInit(cur realm) {
15 accesscontrol.AssertIsAdmin(0, cur, oldadmin.IsAdmin)
16 if migrationInitialized {
17 panic("migration already initialized")
18 }
19 if migrationFinalized {
20 panic("migration already finalized")
21 }
22
23 state := oldadmin.GetMigrationState()
24 admin = state.Admin
25 pendingAdmin = state.PendingAdmin
26 explorerURL = state.ExplorerURL
27 feeCollectorAddr = state.FeeCollector
28 protocolAddr = state.Protocol
29 frozen = state.Frozen
30 faucetTargetAmount = state.FaucetTargetAmount
31
32 operatorAddrs = make(map[address]bool)
33 for _, operator := range state.Operators {
34 operatorAddrs[operator] = true
35 }
36
37 migrationInitialized = true
38 migrationFinalized = true
39}
40
41// IsMigrationInitialized reports whether MigrationInit has copied the admin state.
42func IsMigrationInitialized() bool {
43 return migrationInitialized
44}
45
46// IsMigrationFinalized reports whether the one-shot admin migration is complete.
47func IsMigrationFinalized() bool {
48 return migrationFinalized
49}