Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}