Skip to content

Deploy Timelock in front of Bridge, RedemptionWatchtower, and WalletRegistry #830

@pdyraga

Description

@pdyraga
Team Address
Deployment Team 0x123694886DBf5Ac94DDA07135349534536D14cAf
Threshold Council 0x9f6e831c8f8939dc0c830c6e492e7cef4f9c2f5f
Contract Address
Bridge Proxy contract 0x5e4861a80B55f035D899f66772117F00FA0E8e7B
Bridge Implementation contract 0xa4996de73682bdf9cf514fbf238ee387c1a21a26
Bridge ProxyAdmin contract 0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706
RedemptionWatchtower Proxy contract 0xB8dF0A949aC45ff8f401553A1dcb742Feb38E6D3
RedemptionWatchtower implementation contract 0xbfd04e3928923ad8c86256b9a8f64ebd01cf1daf
RedemptionWatchtower ProxyAdmin contract 0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706
WalletRegistry Proxy contract 0x46d52E41C2F300BC82217Ce22b920c34995204eb
WalletRegistry implementation contract 0x08d7e8ce124921caafd7670502379ced0065c832
WalletRegistry ProxyAdmin contract 0x7affa05f726d293eb1193807a91617318292008e

Prerequisites

Deployment

  • Deploy the Timelock contract (address: 0x92f2d8b72a7F6a551Be60b9aa4194248E9B4913D)
  • Verify Timelock contract on Etherscan

Tag and publish artifacts

  • Publish v1.7.0 deployment artifacts to NPM as @keep-network/tbtc-v2
  • Tag solidity/v1.7.0
  • Bump up solidity module version to 1.8.0-dev

Governance Actions

Threshold Council executes four transactions:

  • To schedule WalletRegistry upgrade
  • To schedule Bridge upgrade
  • To transfer WalletRegistry ProxyAdmin ownership and test the upgrade
  • To transfer Bridge ProxyAdmin ownership and test the upgrade

The test upgrade transaction will upgrade implementations to the same version as currently used. No changes are expected. We want to execute a test upgrade in the same transaction as the ProxyAdmin ownership transfer to ensure future upgrades will be possible and that no human error will happen when assembling those transactions.

Schedule WalletRegistry upgrade

  • Prepare TX data: ProxyAdmin.encodeFunctionData("upgrade", ["0x46d52E41C2F300BC82217Ce22b920c34995204eb", "0x08d7e8ce124921caafd7670502379ced0065c832"]) (data: 0x99a88ec400000000000000000000000046d52e41c2f300bc82217ce22b920c34995204eb00000000000000000000000008d7e8ce124921caafd7670502379ced0065c832)
  • Schedule upgrade: Timelock.schedule(0x7affa05f726d293eb1193807a91617318292008e, 0, 0x99a88ec400000000000000000000000046d52e41c2f300bc82217ce22b920c34995204eb00000000000000000000000008d7e8ce124921caafd7670502379ced0065c832, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000, 86400) (tx: 0x8472bf5de4543f80189f7f167d4289b294bec5fb79615de61f157e33346c91e4)

Schedule Bridge upgrade

  • Prepare TX data: ProxyAdmin.encodeFunctionData("upgrade", ["0x5e4861a80B55f035D899f66772117F00FA0E8e7B", "0xa4996de73682bdf9cf514fbf238ee387c1a21a26"]) (data: 0x99a88ec40000000000000000000000005e4861a80b55f035d899f66772117f00fa0e8e7b000000000000000000000000a4996de73682bdf9cf514fbf238ee387c1a21a26)
  • Schedule upgrade: Timelock.schedule(0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706, 0, 0x99a88ec40000000000000000000000005e4861a80b55f035d899f66772117f00fa0e8e7b000000000000000000000000a4996de73682bdf9cf514fbf238ee387c1a21a26, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000, 86400) (tx: 0x8472bf5de4543f80189f7f167d4289b294bec5fb79615de61f157e33346c91e4)

Schedule RedemptionWatchtower upgrade

  • Prepare TX data: ProxyAdmin.encodeFunctionData("upgrade", ["0xB8dF0A949aC45ff8f401553A1dcb742Feb38E6D3", "0xbfd04e3928923ad8c86256b9a8f64ebd01cf1daf"]) (data: 0x99a88ec4000000000000000000000000b8df0a949ac45ff8f401553a1dcb742feb38e6d3000000000000000000000000bfd04e3928923ad8c86256b9a8f64ebd01cf1daf)
  • Schedule upgrade: Timelock.schedule(0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706, 0, 0x99a88ec4000000000000000000000000b8df0a949ac45ff8f401553a1dcb742feb38e6d3000000000000000000000000bfd04e3928923ad8c86256b9a8f64ebd01cf1daf, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000, 86400) (tx: 0x8472bf5de4543f80189f7f167d4289b294bec5fb79615de61f157e33346c91e4)

Transfer WalletRegistry ProxyAdmin ownership and test the upgrade

  • The following batch transaction is executed (tx: 0x...):
    • ProxyAdmin@0x7affa05f726d293eb1193807a91617318292008e.transferOwnership(Timelock.address)
    • Timelock.execute(0x7affa05f726d293eb1193807a91617318292008e, 0, 0x99a88ec400000000000000000000000046d52e41c2f300bc82217ce22b920c34995204eb00000000000000000000000008d7e8ce124921caafd7670502379ced0065c832, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000)

Transfer Bridge & RedemptionWatchtower ProxyAdmin ownership and test the upgrade

  • The following batch transaction is executed (tx: 0x...):
    • ProxyAdmin@0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706.transferOwnership(Timelock.address)
    • Timelock.execute(0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706, 0, 0x99a88ec40000000000000000000000005e4861a80b55f035d899f66772117f00fa0e8e7b000000000000000000000000a4996de73682bdf9cf514fbf238ee387c1a21a26, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000)
    • Timelock.execute(0x16a76d3cd3c1e3ce843c6680d6b37e9116b5c706, 0, 0x99a88ec4000000000000000000000000b8df0a949ac45ff8f401553a1dcb742feb38e6d3000000000000000000000000bfd04e3928923ad8c86256b9a8f64ebd01cf1daf, 0x0000000000000000000000000000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000000000000000000000000000)

Release notes

  • Publish solidity/v1.7.0 release notes along with the references to transactions introducing the Timelock.

Metadata

Metadata

Labels

:shipit: deploymentDeployments and CI workflows

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions