Skip to content

Chaosnet 0: contract deployment #3315

@pdyraga

Description

@pdyraga
Team Address
Deployment Team 0x123694886DBf5Ac94DDA07135349534536D14cAf
Threshold Council 0x9f6e831c8f8939dc0c830c6e492e7cef4f9c2f5f

Prerequisites

Release Sortition Pools

  • Update solidity/package.json and solidity/package-lock.json version to v2.0.0
  • Tag v2.0.0 version
  • Sign commit hash
  • Publish @keep-network/sortition-pools 2.0.0 NPM package
  • Release v2.0.0 version on GitHub
  • Update solidity/package.json and solidity/package-lock.json version to v2.1.0-pre

Release Threshold Token Staking

Background: We need to clean up NPM package and main state after TokenStaking contract upgrade. v1.2.0 package was not published to NPM.

  • Commit artifacts from v1.2.0 contract upgrade to main.
  • Publish v1.2.1 package with floating Solidity pragma to NPM registry.
  • Update @threshold-network/solidity-contracts/package.json version in main to v1.3.0-dev.
  • Release v1.2.1 version on GitHub.

Random Beacon deployment

  • Update solidity/random-beacon/package.json version to v2.0.0
  • Deploy ReimbursementPool contract (address: 0x8adF3f35dBE4026112bCFc078872bcb967732Ea8) with the following parameters:
    • _staticGas = 40800
    • _maxGasPrice = 500000000000
  • Deploy Random Beacon SortitionPool contract (address: 0x4e4cBA3779d56386ED43631b4dCD6d8EacEcBCF6) with the following parameters:
    • _rewardToken = 0xCdF7028ceAB81fA0C6971208e83fa7872994beE5
    • _poolWeightDivisor = 1000000000000000000
  • Transfer chaosnet owner role to Threshold Council. (tx: 0xdca81e8b4b948f1674adebe2d2317f7a40247188676635a1f660cb58150c4743)
  • Deploy BeaconDkgValidator contract (address: 0x4EDC83c5C5B0C41A594371485554B95280653f94) with the following parameters:
    • _sortitionPool = BeaconSortitionPool.address
  • Deploy RandomBeacon contract (address: 0x5499f54b4A1CB4816eefCf78962040461be3D80b) with the following parameters:
    • _sortitionPool = BeaconSortitionPool.address
    • _tToken = 0xCdF7028ceAB81fA0C6971208e83fa7872994beE5
    • _staking = 0x01B67b1194C75264d06F808A921228a95C765dd7
    • _dkgValidator = BeaconDkgValidator.address
    • _reimbursementPool = ReimbursementPool.address
  • Transfer Random Beacon SortitionPool ownership to RandomBeacon contract (tx: 0x2ca59f0ae08f12ae2415348857791395cd7bc4fc80b7ec50d83e9728fe43cd2c)
  • Authorize RandomBeacon in ReimbursementPool (tx: 0x832e3a5ff5c8f1c1abe83195866d92a1c16c0f9fc543faec0522779588a23485)
  • Deploy RandomBeaconGovernance contract (address: 0xd0A3088eD9fff4357b79cd3896bd38876fcB1c63) with the following parameters:
    • _randomBeacon = RandomBeacon.address
    • _governanceDelay = 604800
  • Verify ReimbursementPool on Etherscan
  • Verify SortitionPool on Etherscan
  • Verify BeaconDkgValidator on Etherscan
  • Verify RandomBeacon on Etherscan
  • Verify RandomBeaconGovernance on Etherscan
  • Verify ReimbursementPool on Tenderly
  • Verify SortitionPool on Tenderly
  • Verify BeaconDkgValidator on Tenderly
  • Verify RandomBeacon on Tenderly
  • Verify RandomBeaconGovernance on Tenderly
  • Publish @keep-network/random-beacon 2.0.0 NPM package tagged mainnet and latest

Wallet Registry deployment

  • Update solidity/ecdsa/package.json version to v2.0.0
  • Update @keep-network/random-beacon dependency version in solidity/ecdsa/package.json to 2.0.0
  • Tag solidity/v2.0.0 in keep-core
  • Sign solidity/v2.0.0 commit hash.
  • Copy RandomBeacon and ReimbursementPool artifacts from the random-beacon mainnet package to solidity/ecdsa/external/mainnet
  • Deploy ECDSA SortitionPool contract (address: 0xc2731fb2823af3Efc2694c9bC86F444d5c5bb4Dc) with the following parameters:
    • _rewardToken = 0xCdF7028ceAB81fA0C6971208e83fa7872994beE5
    • _poolWeightDivisor = 1000000000000000000
  • Transfer chaosnet owner role to Threshold Council. (tx: 0xc48cd4304404543ad9b6e76a3b2045f10d40e0a89b1aec16a9f028b623a14151)
  • Deploy EcdsaDkgValidator contract (address: 0x0125c8977a02b2Fa3970b1ED9AF02f5Bedd4eF27) with the following parameters:
    • _sortitionPool = EcdsaSortitionPool.address
  • Deploy WalletRegistry implementation contract (address: 0xfbae130e06bbc8ca198861beecae6e2b830398fb)
  • Deploy WalletRegistry proxy contract (address: 0x46d52E41C2F300BC82217Ce22b920c34995204eb)
  • Deploy WalletRegistry ProxyAdmin (address: 0x7Affa05f726D293eB1193807A91617318292008e)
  • Initialize WalletRegistry proxy contract (tx: 0xe1e6a55e3026832dd8c68138e13a8ebc2be5a7350035cfdf7bf94ae55d3f5e8d) with the following parameters:
    • _ecdsaDkgValidator = EcdsaDkgValidator.address
    • _randomBeacon = RandomBeacon.address
    • _reimbursementPool = ReimbursementPool.address
  • Transfer ECDSA SortitionPool ownership to WalletRegistry contract (tx: 0x9c42ec0d86387509f5bc89c6dc3b410eec481537cef31aba02b01ce542d5227f)
  • Authorize WalletRegistry in ReimbursementPool (tx: 0xb58d99036a0969728cfc98e7354c2b14dfdbec525a31699aaff1d18d71e63f90)
  • Deploy WalletRegistryGovernance contract (address: 0x6aed6cC30D1b2770771052555d257Da86eD47fe8) with the following parameters:
    • _walletRegistry = WalletRegistry.address
    • _governanceDelay = 604800
  • Transfer WalletRegistryGovernance ownership to Threshold Council (tx: 0x2a42657620bfcf65f5f35c309d8b97100e505f8faf3de06374eb9b1f34efb217)
  • Transfer WalletRegistry governance to WalletRegistryGovernance contract (tx: 0x41b6089026f2f5a3aa2aa3bdbdf287376cd87f5157d06ea6e9ac7b0cb02976d7)
  • Transfer ProxyAdmin ownership to Threshold Council (tx: 0xe1e6a55e3026832dd8c68138e13a8ebc2be5a7350035cfdf7bf94ae55d3f5e8d)
  • Authorize WalletRegistry as a relay requester in RandomBeacon (tx: 0x0b26197f23ce302048344b364aea60994a5f176bf7f405ca832214a4893685da)
  • Transfer RandomBeaconGovernance ownership to Threshold Council (tx: 0x7b86ec1aca0d810178b07656083e72d9d513f3240b79405f4b93b720f5179ed1)
  • Transfer RandomBeacon governance to RandomBeaconGovernance contract (tx: 0xf8709ae038360fef76d3d557ffbff5113bfd4e0cd1a3b89f415edd0b55d61ea0)
  • Transfer ReimbursementPool ownership to Threshold Council (tx: 0x2fbac28e73ccef7944e10f1f5b1067f579cf19a3636f4ff65c82065a96d2d2db)
  • Verify EcdsaDkgValidator on Etherscan
  • Verify WalletRegistry implementation on Etherscan
  • Verify WalletRegistry proxy on Etherscan
  • Verify WalletRegistryGovernance on Etherscan
  • Verify EcdsaDkgValidator on Tenderly
  • Verify WalletRegistry implementation on Tenderly
  • Verify WalletRegistry proxy on Tenderly
  • Verify WalletRegistryGovernance on Tenderly
  • Publish @keep-network/ecdsa 2.0.0 NPM package tagged mainnet and latest
  • Update solidity/random-beacon/package.json version to v2.1.0-dev
  • Update solidity/ecdsa/package.json version to v2.1.0-dev
  • Release solidity/v2.0.0 version on GitHub
  • Add contracts labels on Etherscan

Finalization: Threshold Council

  • Approve RandomBeacon application contract in TokenStaking (tx: 0x2aba64e058cb76f1f9078c0ff52de08fc2ff322f81986b677ea467caf5f77369)
  • Approve WalletRegistry application contract in TokenStaking (tx: 0x2aba64e058cb76f1f9078c0ff52de08fc2ff322f81986b677ea467caf5f77369)

Left for the future

  • After deploying tbtc-v2 Bridge contract, wallet owner role should be initialized with a call to WalletRegistryGovernance.initializeWalletOwner. For now, the wallet owner will remain set to zero address.
  • Authorization decrease delay is set to two weeks initially for the first phase of Chaosnet. This value may need to be revisited once the second phase of the Chaosnet launches.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions