@keep-network/tbtc-v2 0.1.1-dev.1 → 0.1.1-dev.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.adoc +12 -0
  2. package/artifacts/Bank.json +807 -0
  3. package/artifacts/Bridge.json +2300 -0
  4. package/artifacts/BridgeGovernance.json +2931 -0
  5. package/artifacts/BridgeGovernanceParameters.json +1445 -0
  6. package/artifacts/Deposit.json +117 -0
  7. package/artifacts/DepositSweep.json +77 -0
  8. package/artifacts/EcdsaDkgValidator.json +532 -0
  9. package/artifacts/EcdsaInactivity.json +156 -0
  10. package/artifacts/EcdsaSortitionPool.json +1004 -0
  11. package/artifacts/Fraud.json +164 -0
  12. package/artifacts/KeepRegistry.json +99 -0
  13. package/artifacts/KeepStake.json +286 -0
  14. package/artifacts/KeepToken.json +711 -0
  15. package/artifacts/KeepTokenStaking.json +483 -0
  16. package/artifacts/MovingFunds.json +249 -0
  17. package/artifacts/NuCypherStakingEscrow.json +256 -0
  18. package/artifacts/NuCypherToken.json +711 -0
  19. package/artifacts/RandomBeaconStub.json +141 -0
  20. package/artifacts/Redemption.json +174 -0
  21. package/artifacts/ReimbursementPool.json +509 -0
  22. package/artifacts/Relay.json +123 -0
  23. package/artifacts/T.json +1148 -0
  24. package/artifacts/TBTC.json +27 -26
  25. package/artifacts/TBTCToken.json +27 -26
  26. package/artifacts/TBTCVault.json +691 -0
  27. package/artifacts/TokenStaking.json +2288 -0
  28. package/artifacts/TokenholderGovernor.json +1795 -0
  29. package/artifacts/TokenholderTimelock.json +1058 -0
  30. package/artifacts/VendingMachine.json +31 -30
  31. package/artifacts/VendingMachineKeep.json +400 -0
  32. package/artifacts/VendingMachineNuCypher.json +400 -0
  33. package/artifacts/WalletRegistry.json +1843 -0
  34. package/artifacts/WalletRegistryGovernance.json +2754 -0
  35. package/artifacts/Wallets.json +186 -0
  36. package/artifacts/solcInputs/af641e0b3597cdfa29d6ad42d1cd8742.json +320 -0
  37. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  38. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.json +2 -2
  39. package/build/contracts/bank/Bank.sol/Bank.dbg.json +4 -0
  40. package/build/contracts/bank/Bank.sol/Bank.json +542 -0
  41. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +4 -0
  42. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.json +34 -0
  43. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +4 -0
  44. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +10 -0
  45. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +4 -0
  46. package/build/contracts/bridge/Bridge.sol/Bridge.json +2686 -0
  47. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.dbg.json +4 -0
  48. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +2246 -0
  49. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +4 -0
  50. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.json +971 -0
  51. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +4 -0
  52. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +226 -0
  53. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +4 -0
  54. package/build/contracts/bridge/Deposit.sol/Deposit.json +72 -0
  55. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +4 -0
  56. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +30 -0
  57. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +4 -0
  58. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.json +10 -0
  59. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +4 -0
  60. package/build/contracts/bridge/Fraud.sol/Fraud.json +86 -0
  61. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +4 -0
  62. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.json +10 -0
  63. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +4 -0
  64. package/build/contracts/bridge/IRelay.sol/IRelay.json +37 -0
  65. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +4 -0
  66. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +138 -0
  67. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +4 -0
  68. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +10 -0
  69. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +4 -0
  70. package/build/contracts/bridge/Redemption.sol/Redemption.json +92 -0
  71. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  72. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.json +2 -2
  73. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +4 -0
  74. package/build/contracts/bridge/Wallets.sol/Wallets.json +112 -0
  75. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  76. package/build/contracts/token/TBTC.sol/TBTC.json +2 -2
  77. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +4 -0
  78. package/build/contracts/vault/DonationVault.sol/DonationVault.json +108 -0
  79. package/build/contracts/vault/IVault.sol/IVault.dbg.json +4 -0
  80. package/build/contracts/vault/IVault.sol/IVault.json +52 -0
  81. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +4 -0
  82. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +449 -0
  83. package/contracts/GovernanceUtils.sol +4 -4
  84. package/contracts/bank/Bank.sol +436 -0
  85. package/contracts/bank/IReceiveBalanceApproval.sol +45 -0
  86. package/contracts/bridge/BitcoinTx.sol +361 -0
  87. package/contracts/bridge/Bridge.sol +1799 -0
  88. package/contracts/bridge/BridgeGovernance.sol +1533 -0
  89. package/contracts/bridge/BridgeGovernanceParameters.sol +1695 -0
  90. package/contracts/bridge/BridgeState.sol +768 -0
  91. package/contracts/bridge/Deposit.sol +269 -0
  92. package/contracts/bridge/DepositSweep.sol +574 -0
  93. package/contracts/bridge/EcdsaLib.sol +45 -0
  94. package/contracts/bridge/Fraud.sol +579 -0
  95. package/contracts/bridge/Heartbeat.sol +112 -0
  96. package/contracts/bridge/IRelay.sol +28 -0
  97. package/contracts/bridge/MovingFunds.sol +1077 -0
  98. package/contracts/bridge/Redemption.sol +1058 -0
  99. package/contracts/bridge/VendingMachine.sol +2 -2
  100. package/contracts/bridge/Wallets.sol +719 -0
  101. package/contracts/hardhat-dependency-compiler/.hardhat-dependency-compiler +1 -0
  102. package/contracts/hardhat-dependency-compiler/@keep-network/ecdsa/contracts/WalletRegistry.sol +3 -0
  103. package/contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol +3 -0
  104. package/contracts/hardhat-dependency-compiler/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +3 -0
  105. package/contracts/token/TBTC.sol +1 -1
  106. package/contracts/vault/DonationVault.sol +125 -0
  107. package/contracts/vault/IVault.sol +44 -0
  108. package/contracts/vault/TBTCVault.sol +305 -0
  109. package/deploy/00_resolve_relay.ts +28 -0
  110. package/deploy/{03_transfer_roles.ts → 03_transfer_vending_machine_roles.ts} +1 -1
  111. package/deploy/04_deploy_bank.ts +27 -0
  112. package/deploy/05_deploy_bridge.ts +80 -0
  113. package/deploy/06_deploy_tbtc_vault.ts +30 -0
  114. package/deploy/07_deploy_bridge_governance.ts +40 -0
  115. package/deploy/08_bank_update_bridge.ts +19 -0
  116. package/deploy/09_transfer_bank_ownership.ts +15 -0
  117. package/deploy/10_transfer_tbtc_vault_ownership.ts +15 -0
  118. package/deploy/11_transfer_bridge_governance_ownership.ts +19 -0
  119. package/deploy/12_transfer_bridge_governance.ts +22 -0
  120. package/deploy/13_initialize_wallet_owner.ts +18 -0
  121. package/deploy/14_deploy_proxy_admin_with_deputy.ts +33 -0
  122. package/deploy/15_transfer_proxy_admin_ownership.ts +30 -0
  123. package/export.json +18510 -475
  124. package/package.json +35 -26
  125. package/artifacts/solcInputs/0c46d22cee2363c42c8bb0664dc1be66.json +0 -104
@@ -0,0 +1,30 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { deployments, getNamedAccounts } = hre
6
+ const { deploy } = deployments
7
+ const { deployer } = await getNamedAccounts()
8
+
9
+ const Bank = await deployments.get("Bank")
10
+ const TBTC = await deployments.get("TBTC")
11
+
12
+ const TBTCVault = await deploy("TBTCVault", {
13
+ contract: "TBTCVault",
14
+ from: deployer,
15
+ args: [Bank.address, TBTC.address],
16
+ log: true,
17
+ })
18
+
19
+ if (hre.network.tags.tenderly) {
20
+ await hre.tenderly.verify({
21
+ name: "TBTCVault",
22
+ address: TBTCVault.address,
23
+ })
24
+ }
25
+ }
26
+
27
+ export default func
28
+
29
+ func.tags = ["TBTCVault"]
30
+ func.dependencies = ["Bank", "TBTC"]
@@ -0,0 +1,40 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { deployments, getNamedAccounts } = hre
6
+ const { deploy } = deployments
7
+ const { deployer } = await getNamedAccounts()
8
+
9
+ const Bridge = await deployments.get("Bridge")
10
+
11
+ const BridgeGovernanceParameters = await deployments.deploy(
12
+ "BridgeGovernanceParameters",
13
+ {
14
+ from: deployer,
15
+ log: true,
16
+ }
17
+ )
18
+
19
+ const GOVERNANCE_DELAY = 604800 // 1 week
20
+
21
+ const BridgeGovernance = await deploy("BridgeGovernance", {
22
+ from: deployer,
23
+ args: [Bridge.address, GOVERNANCE_DELAY],
24
+ log: true,
25
+ libraries: {
26
+ BridgeGovernanceParameters: BridgeGovernanceParameters.address,
27
+ },
28
+ })
29
+
30
+ if (hre.network.tags.tenderly) {
31
+ await hre.tenderly.verify({
32
+ name: "BridgeGovernance",
33
+ address: BridgeGovernance.address,
34
+ })
35
+ }
36
+ }
37
+
38
+ export default func
39
+
40
+ func.tags = ["BridgeGovernance"]
@@ -0,0 +1,19 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { getNamedAccounts, deployments } = hre
6
+ const { execute, log } = deployments
7
+ const { deployer } = await getNamedAccounts()
8
+
9
+ const Bridge = await deployments.get("Bridge")
10
+
11
+ log("updating Bridge in Bank")
12
+
13
+ await execute("Bank", { from: deployer }, "updateBridge", Bridge.address)
14
+ }
15
+
16
+ export default func
17
+
18
+ func.tags = ["BankUpdateBridge"]
19
+ func.dependencies = ["Bank", "Bridge"]
@@ -0,0 +1,15 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { getNamedAccounts, helpers } = hre
6
+ const { deployer, governance } = await getNamedAccounts()
7
+
8
+ await helpers.ownable.transferOwnership("Bank", governance, deployer)
9
+ }
10
+
11
+ export default func
12
+
13
+ func.tags = ["TransferBankOwnership"]
14
+ func.dependencies = ["Bank"]
15
+ func.runAtTheEnd = true
@@ -0,0 +1,15 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { getNamedAccounts, helpers } = hre
6
+ const { deployer, governance } = await getNamedAccounts()
7
+
8
+ await helpers.ownable.transferOwnership("TBTCVault", governance, deployer)
9
+ }
10
+
11
+ export default func
12
+
13
+ func.tags = ["TransferTBTCVaultOwnership"]
14
+ func.dependencies = ["TBTCVault"]
15
+ func.runAtTheEnd = true
@@ -0,0 +1,19 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { getNamedAccounts, helpers } = hre
6
+ const { deployer, governance } = await getNamedAccounts()
7
+
8
+ await helpers.ownable.transferOwnership(
9
+ "BridgeGovernance",
10
+ governance,
11
+ deployer
12
+ )
13
+ }
14
+
15
+ export default func
16
+
17
+ func.tags = ["BridgeGovernanceOwnership"]
18
+ func.dependencies = ["BridgeGovernance"]
19
+ func.runAtTheEnd = true
@@ -0,0 +1,22 @@
1
+ import { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
5
+ const { getNamedAccounts, deployments } = hre
6
+ const { deployer } = await getNamedAccounts()
7
+
8
+ const BridgeGovernance = await deployments.get("BridgeGovernance")
9
+
10
+ await deployments.execute(
11
+ "Bridge",
12
+ { from: deployer },
13
+ "transferGovernance",
14
+ BridgeGovernance.address
15
+ )
16
+ }
17
+
18
+ export default func
19
+
20
+ func.tags = ["TransferBridgeGovernance"]
21
+ func.dependencies = ["Bridge"]
22
+ func.runAtTheEnd = true
@@ -0,0 +1,18 @@
1
+ import type { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import type { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ import initializeWalletOwner from "@keep-network/ecdsa/export/tasks/initialize-wallet-owner"
5
+
6
+ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
7
+ const Bridge = await hre.deployments.get("Bridge")
8
+
9
+ await initializeWalletOwner(hre, Bridge.address)
10
+ }
11
+
12
+ export default func
13
+
14
+ func.tags = ["InitializeWalletOwner"]
15
+ func.dependencies = ["Bridge"]
16
+
17
+ func.skip = async (hre: HardhatRuntimeEnvironment): Promise<boolean> =>
18
+ hre.network.name === "mainnet"
@@ -0,0 +1,33 @@
1
+ import type { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import type { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
5
+ const { ethers, getNamedAccounts, upgrades, deployments } = hre
6
+ const { deployer, dao, esdm } = await getNamedAccounts()
7
+
8
+ const BridgeProxyAdminWithDeputy = await deployments.deploy(
9
+ "BridgeProxyAdminWithDeputy",
10
+ {
11
+ contract: "ProxyAdminWithDeputy",
12
+ from: deployer,
13
+ args: [dao, esdm],
14
+ log: true,
15
+ }
16
+ )
17
+
18
+ const Bridge = await deployments.get("Bridge")
19
+
20
+ const proxyAdmin = await upgrades.admin.getInstance()
21
+
22
+ await proxyAdmin
23
+ .connect(await ethers.getSigner(esdm))
24
+ .changeProxyAdmin(Bridge.address, BridgeProxyAdminWithDeputy.address)
25
+ }
26
+
27
+ export default func
28
+
29
+ func.tags = ["BridgeProxyAdminWithDeputy"]
30
+ func.dependencies = ["Bridge"]
31
+
32
+ // TODO: For now we skip this script as DAO is not yet established.
33
+ func.skip = async () => true
@@ -0,0 +1,30 @@
1
+ import type { HardhatRuntimeEnvironment } from "hardhat/types"
2
+ import type { DeployFunction } from "hardhat-deploy/types"
3
+
4
+ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
5
+ const { helpers, upgrades, deployments } = hre
6
+ const { esdm, deployer } = await helpers.signers.getNamedSigners()
7
+ const { log } = deployments
8
+
9
+ // TODO: Once a DAO is established we want to switch to ProxyAdminWithDeputy and
10
+ // use the DAO as the proxy admin owner and ESDM as the deputy. Until then we
11
+ // use ESDM as the owner of ProxyAdmin contract.
12
+ const newProxyAdminOwner = esdm.address
13
+
14
+ const proxyAdmin = await upgrades.admin.getInstance()
15
+
16
+ const currentOwner = await proxyAdmin.owner()
17
+
18
+ // The `@openzeppelin/hardhat-upgrades` plugin deploys a single ProxyAdmin
19
+ // per network. We don't want to transfer the ownership if the owner is already
20
+ // set to the desired address.
21
+ if (!helpers.address.equal(currentOwner, newProxyAdminOwner)) {
22
+ log(`transferring ownership of ProxyAdmin to ${newProxyAdminOwner}`)
23
+ await proxyAdmin.connect(deployer).transferOwnership(newProxyAdminOwner)
24
+ }
25
+ }
26
+
27
+ export default func
28
+
29
+ func.tags = ["TransferProxyAdminOwnership"]
30
+ func.dependencies = ["Bridge"]