Search Apps Documentation Source Content File Folder Download Copy Actions Download

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}