Skip to content

Commit

Permalink
Merge pull request #101 from RootstockCollective/gnosis-safe-upgrade
Browse files Browse the repository at this point in the history
Gnosis safe upgrade
  • Loading branch information
jessgusclark authored Dec 4, 2024
2 parents 0708939 + c509487 commit 2278f60
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 6 deletions.
1 change: 1 addition & 0 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import './tasks/updateIpfsFolder'
import './tasks/cancelProposal'
import './tasks/withdrawTreasury'
import './tasks/airdrop'
import './tasks/stRifUpgradeV1-v2'

dotent.config()

Expand Down
11 changes: 6 additions & 5 deletions ignition/modules/StRifModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ export const stRifProxyModule = buildModule('stRifProxy', m => {
const owner = m.getParameter('owner')
// deploy StRIF implementation
const rifAddress = m.getParameter('rifAddress')
const stRif = m.contract('StRIFToken')
const stRif = m.contract('StRIFToken', [], { id: 'Implementation' })
// deploy ERC1967 proxy in order to use UUPS upgradable smart contracts
const stRifProxy = m.contract('ERC1967Proxy', [
stRif,
m.encodeFunctionCall(stRif, 'initialize', [rifAddress, owner]),
])
const stRifProxy = m.contract(
'ERC1967Proxy',
[stRif, m.encodeFunctionCall(stRif, 'initialize', [rifAddress, owner])],
{ id: 'Proxy' },
)
return { stRifProxy }
})

Expand Down
11 changes: 11 additions & 0 deletions ignition/modules/StRifV2ImplementationModule.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/**
* StRIF contract v.2 implementation deployment module
*/
import { buildModule } from '@nomicfoundation/hardhat-ignition/modules'

export const stRifV02ImplementationModule = buildModule('stRifV02Implementation', m => {
const stRifV02Implementation = m.contract('StRIFTokenV02', [], { id: 'Implementation' })

return { stRifV02Implementation }
})
export default stRifV02ImplementationModule
6 changes: 6 additions & 0 deletions params/StRif/v1Testnet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"stRifProxy": {
"owner": "0x8ee0a7e48fd05ebcd5e717a743526b8bc7fe2c0e",
"rifAddress": "0x19F64674D8A5B4E652319F5e239eFd3bc969A1fE"
}
}
2 changes: 1 addition & 1 deletion params/StRif/v2UpgradeTestnet.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"StRIFTokenV02": {
"StRifAddress": "0x47955BbC3a077FFA59BD7aedf25fcD1f2f0360e3"
"StRifAddress": "0x4861198e9A6814EBfb152552D1b1a37426C54D23"
}
}
20 changes: 20 additions & 0 deletions tasks/stRifUpgradeV1-v2.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { task } from 'hardhat/config'
import StRifV02ImplementationModule from '../ignition/modules/StRifV2ImplementationModule'
import { StRIFTokenV02 } from '../typechain-types'

task('upgrade-strif-v2', 'Upgrade StRIF from v.1 to v.2')
.addParam('id', 'Ignition deployment ID')
.setAction(async ({ id }, hre) => {
try {
// deploy new StRIF implementation
const v2 = (await hre.ignition.deploy(StRifV02ImplementationModule, { deploymentId: id }))
.stRifV02Implementation as unknown as StRIFTokenV02
// encode the call of reinitializer on the new implementation
const initializeV2Call = v2.interface.encodeFunctionData('initializeV2')
console.log(
`New Implementation: ${await v2.getAddress()}\nUpgrade transaction data: ${initializeV2Call}`,
)
} catch (error) {
console.log(error instanceof Error ? error.message : error)
}
})

0 comments on commit 2278f60

Please sign in to comment.