Definitions:
- TemporaryGovernance -
TemporaryGovernance.solsolidity contract used as temporary implementation for both Governance and Governor - TGovernance - the old governance proxy contract with TemporaryGovernance implementation
- TGovernor - the new governor proxy contact with TemporaryGovernance implementation
phase 0: prep for ab actions
- execute script to push old governance rewards
- deploy registry implementation (create2) and proxy (create1) manually
- transfer registry proxy ownership to AB safe multisig (to avoid deployer compromise risk)
- deploy new contract implementations (create2)
- TemporaryGovernance
- LegacyAssessment
- LegacyMemberRoles
phase 1: first ab actions
- upgrade using old Governance proposal (upgrade multiple contracts):
- upgrade Governance to TemporaryGovernance
- upgrade Assessment to LegacyAssessment
- upgrade MemberRoles to LegacyMemberRoles
- batch transactions using safe multisig calling TGovernance:
- upgrade NXMaster
- NXMaster.transferOwnershipToRegistry
- Registry.migrate (will also upgrade Governor to use TemporaryGovernance)
phase 2: prep for ab actions
- execute script to push LegacyAssessment stake and rewards
- call LegacyMemberRoles.migrateMembers
- deploy non-proxy contracts (create2)
- CoverNFTDescriptor
- VotePower
- StakingViewer
- CoverBroker
- deploy new proxy contract implementations (create2)
- Pool
- SwapOperator
- Ramm
- SafeTracker
- Assessments
- Claims
- TokenController
- Cover
- CoverProducts
- LimitOrders
- StakingProducts
- Governor
phase 3 (second ab action) - all are TGovernor actions except master.migrate
- batch transactions using safe multisig calling TGovernor (todo: check gas limit)
- upgrade contracts
- Pool
- SwapOperator
- Ramm
- SafeTracker
- Assessments
- Claims
- TokenController
- Cover
- CoverProducts
- LimitOrders
- StakingProducts
- registry.setEmergencyAdmin x6
- registry.setKycAuthAddress
- swapOperator.setSwapController
- claims.initialize
- assessments.addAssessorsToGroup (create new group for 3 assessors)
- assessments.setAssessingGroupIdForProductTypes (set new group as assessing group for all product types)
- cover.changeCoverNFTDescriptor to new CoverNFTDescriptor
- master.migrate (copies assets/oracles/mcr and moves the funds!) [TGovernance action]
- transfer Registry proxy ownership to Governor
- upgrade contracts
- safe transaction via TGovernor.execute
- upgrade TGovernor to
Governor.sol- in theory can be batched above
- upgrade TGovernor to
phase 4 (post phase 3 actions)
- Singe AB member ops:
- coverProducts.setProductTypes set assessmentCooldownPeriod and payoutRedemptionPeriod values to all product types
- cover.populateIpfsMetadata sets covers IPFS metadata to storage
- CoverBroker Safe Owner
- switchMembership to new CoverBroker
- maxApproveCoverContract for cbBTC and USDC
- Non AB
- memberRoles.recoverETH
- Enzyme (via UI)
- remove old depositors and set SwapOperator as a depositor
Total transactions for AB: 4