@keep-network/tbtc-v2 1.0.0-dev.4 → 1.0.0-dev.6

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 (165) hide show
  1. package/artifacts/BLS.json +1 -1
  2. package/artifacts/Bank.json +3 -3
  3. package/artifacts/BeaconAuthorization.json +1 -1
  4. package/artifacts/BeaconDkg.json +1 -1
  5. package/artifacts/BeaconDkgValidator.json +1 -1
  6. package/artifacts/BeaconInactivity.json +1 -1
  7. package/artifacts/BeaconSortitionPool.json +3 -3
  8. package/artifacts/Bridge.json +5 -5
  9. package/artifacts/BridgeGovernance.json +19 -19
  10. package/artifacts/BridgeGovernanceParameters.json +7 -7
  11. package/artifacts/Deposit.json +7 -7
  12. package/artifacts/DepositSweep.json +7 -7
  13. package/artifacts/DonationVault.json +188 -0
  14. package/artifacts/EcdsaDkgValidator.json +1 -1
  15. package/artifacts/EcdsaInactivity.json +1 -1
  16. package/artifacts/EcdsaSortitionPool.json +3 -3
  17. package/artifacts/Fraud.json +9 -9
  18. package/artifacts/KeepRegistry.json +1 -1
  19. package/artifacts/KeepStake.json +2 -2
  20. package/artifacts/KeepToken.json +2 -2
  21. package/artifacts/KeepTokenStaking.json +1 -1
  22. package/artifacts/LightRelay.json +3 -3
  23. package/artifacts/MaintainerProxy.json +15 -15
  24. package/artifacts/MovingFunds.json +7 -7
  25. package/artifacts/NuCypherStakingEscrow.json +1 -1
  26. package/artifacts/NuCypherToken.json +2 -2
  27. package/artifacts/RandomBeacon.json +2 -2
  28. package/artifacts/RandomBeaconChaosnet.json +2 -2
  29. package/artifacts/RandomBeaconGovernance.json +2 -2
  30. package/artifacts/Redemption.json +7 -7
  31. package/artifacts/ReimbursementPool.json +2 -2
  32. package/artifacts/T.json +2 -2
  33. package/artifacts/TBTC.json +3 -3
  34. package/artifacts/TBTCToken.json +3 -3
  35. package/artifacts/TBTCVault.json +9 -9
  36. package/artifacts/TokenStaking.json +1 -1
  37. package/artifacts/TokenholderGovernor.json +9 -9
  38. package/artifacts/TokenholderTimelock.json +8 -8
  39. package/artifacts/VendingMachine.json +3 -3
  40. package/artifacts/VendingMachineKeep.json +1 -1
  41. package/artifacts/VendingMachineNuCypher.json +1 -1
  42. package/artifacts/WalletRegistry.json +5 -5
  43. package/artifacts/WalletRegistryGovernance.json +2 -2
  44. package/artifacts/Wallets.json +7 -7
  45. package/artifacts/solcInputs/{b63dab89a2e89a0f54eb7f775a5bd516.json → 79a96d1cf4af176d93e6844dc248dcff.json} +2 -2
  46. package/artifacts/solcInputs/{c88caf1374ff7ffc912d8c7e982bd645.json → fccb130292c8c7cc958ab4fa31a3e180.json} +2 -2
  47. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  48. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  49. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  50. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  51. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  52. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  53. package/build/contracts/bridge/Bridge.sol/Bridge.json +2 -2
  54. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.dbg.json +1 -1
  55. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +2 -2
  56. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  57. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  58. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +2 -2
  59. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  60. package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
  61. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  62. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +2 -2
  63. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  64. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  65. package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
  66. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  67. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  68. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  69. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
  70. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  71. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
  72. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  73. package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
  74. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  75. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  76. package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
  77. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  78. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +2 -2
  79. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  80. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  81. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  82. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  83. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  84. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  85. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  86. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  87. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
  88. package/contracts/bridge/Bridge.sol +1 -1
  89. package/contracts/bridge/BridgeState.sol +1 -1
  90. package/deploy/01_deploy_light_relay.ts +1 -1
  91. package/deploy/05_deploy_bank.ts +1 -2
  92. package/deploy/06_deploy_bridge.ts +3 -2
  93. package/deploy/{11_deploy_tbtc_vault.ts → 07_deploy_tbtc_vault.ts} +0 -0
  94. package/deploy/08_deploy_donation_vault.ts +34 -0
  95. package/deploy/{12_deploy_bridge_governance.ts → 09_deploy_bridge_governance.ts} +3 -2
  96. package/deploy/{13_deploy_maintainer_proxy.ts → 10_deploy_maintainer_proxy.ts} +0 -0
  97. package/deploy/{14_bank_update_bridge.ts → 11_bank_update_bridge.ts} +0 -0
  98. package/deploy/{15_authorize_spv_maintainer_in_bridge.ts → 12_authorize_tbtc_vault_in_bridge.ts} +7 -5
  99. package/deploy/{22_authorize_maintainer_proxy_in_bridge.ts → 13_authorize_maintainer_proxy_in_bridge.ts} +0 -0
  100. package/deploy/{10_set_deposit_params.ts → 14_set_deposit_parameters.ts} +1 -1
  101. package/deploy/15_set_wallet_parameters.ts +42 -0
  102. package/deploy/{07_disable_fraud_challenges.ts → 16_disable_fraud_challenges.ts} +7 -8
  103. package/deploy/{08_disable_redemptions.ts → 17_disable_redemptions.ts} +6 -4
  104. package/deploy/{09_disable_moving_funds.ts → 18_disable_moving_funds.ts} +16 -7
  105. package/deploy/19_authorize_spv_maintainer_in_bridge.ts +31 -0
  106. package/deploy/{16_transfer_bank_ownership.ts → 20_transfer_bank_ownership.ts} +1 -1
  107. package/deploy/{17_transfer_bridge_governance.ts → 21_transfer_bridge_governance.ts} +11 -1
  108. package/deploy/{18_transfer_bridge_governance_ownership.ts → 22_transfer_bridge_governance_ownership.ts} +0 -0
  109. package/deploy/{19_transfer_tbtc_vault_ownership.ts → 23_transfer_tbtc_vault_ownership.ts} +0 -0
  110. package/deploy/{20_transfer_maintainer_proxy_ownership.ts → 24_transfer_maintainer_proxy_ownership.ts} +0 -0
  111. package/deploy/{21_transfer_proxy_admin_ownership.ts → 25_transfer_proxy_admin_ownership.ts} +0 -0
  112. package/deploy/{23_authorize_maintainer_proxy_in_reimbursement_pool.ts → 26_authorize_maintainer_proxy_in_reimbursement_pool.ts} +7 -0
  113. package/deploy/{24_authorize_bridge_in_reimbursement_pool.ts → 27_authorize_bridge_in_reimbursement_pool.ts} +7 -0
  114. package/deploy/{25_deploy_proxy_admin_with_deputy.ts → 28_deploy_proxy_admin_with_deputy.ts} +0 -0
  115. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +6 -6
  116. package/export/artifacts/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +5 -5
  117. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +5 -5
  118. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +6 -6
  119. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +5 -5
  120. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +5 -5
  121. package/export/deploy/01_deploy_light_relay.js +1 -1
  122. package/export/deploy/05_deploy_bank.js +1 -1
  123. package/export/deploy/06_deploy_bridge.js +3 -2
  124. package/export/deploy/{11_deploy_tbtc_vault.js → 07_deploy_tbtc_vault.js} +0 -0
  125. package/export/deploy/08_deploy_donation_vault.js +83 -0
  126. package/export/deploy/{12_deploy_bridge_governance.js → 09_deploy_bridge_governance.js} +3 -2
  127. package/export/deploy/{13_deploy_maintainer_proxy.js → 10_deploy_maintainer_proxy.js} +0 -0
  128. package/export/deploy/{14_bank_update_bridge.js → 11_bank_update_bridge.js} +0 -0
  129. package/export/deploy/12_authorize_tbtc_vault_in_bridge.js +63 -0
  130. package/export/deploy/{22_authorize_maintainer_proxy_in_bridge.js → 13_authorize_maintainer_proxy_in_bridge.js} +0 -0
  131. package/export/deploy/{10_set_deposit_params.js → 14_set_deposit_parameters.js} +1 -1
  132. package/export/deploy/15_set_wallet_parameters.js +67 -0
  133. package/export/deploy/{07_disable_fraud_challenges.js → 16_disable_fraud_challenges.js} +4 -6
  134. package/export/deploy/{08_disable_redemptions.js → 17_disable_redemptions.js} +3 -2
  135. package/export/deploy/{09_disable_moving_funds.js → 18_disable_moving_funds.js} +13 -5
  136. package/export/deploy/{15_authorize_spv_maintainer_in_bridge.js → 19_authorize_spv_maintainer_in_bridge.js} +10 -0
  137. package/export/deploy/{16_transfer_bank_ownership.js → 20_transfer_bank_ownership.js} +1 -1
  138. package/export/deploy/{17_transfer_bridge_governance.js → 21_transfer_bridge_governance.js} +11 -1
  139. package/export/deploy/{18_transfer_bridge_governance_ownership.js → 22_transfer_bridge_governance_ownership.js} +0 -0
  140. package/export/deploy/{19_transfer_tbtc_vault_ownership.js → 23_transfer_tbtc_vault_ownership.js} +0 -0
  141. package/export/deploy/{20_transfer_maintainer_proxy_ownership.js → 24_transfer_maintainer_proxy_ownership.js} +0 -0
  142. package/export/deploy/{21_transfer_proxy_admin_ownership.js → 25_transfer_proxy_admin_ownership.js} +0 -0
  143. package/export/deploy/{23_authorize_maintainer_proxy_in_reimbursement_pool.js → 26_authorize_maintainer_proxy_in_reimbursement_pool.js} +7 -0
  144. package/export/deploy/{24_authorize_bridge_in_reimbursement_pool.js → 27_authorize_bridge_in_reimbursement_pool.js} +7 -0
  145. package/export/deploy/{25_deploy_proxy_admin_with_deputy.js → 28_deploy_proxy_admin_with_deputy.js} +0 -0
  146. package/export/hardhat.config.js +19 -8
  147. package/export/tasks/test-utils.js +133 -43
  148. package/export/test/integration/data/bls.js +12 -0
  149. package/export/test/integration/data/integration.js +133 -0
  150. package/export/test/integration/utils/random-beacon.js +193 -0
  151. package/export/typechain/factories/BridgeGovernance__factory.js +1 -1
  152. package/export/typechain/factories/BridgeState__factory.js +1 -1
  153. package/export/typechain/factories/BridgeStub__factory.js +1 -1
  154. package/export/typechain/factories/Bridge__factory.js +1 -1
  155. package/export/typechain/factories/DepositSweep__factory.js +1 -1
  156. package/export/typechain/factories/Deposit__factory.js +1 -1
  157. package/export/typechain/factories/Fraud__factory.js +1 -1
  158. package/export/typechain/factories/MaintainerProxy__factory.js +1 -1
  159. package/export/typechain/factories/MovingFunds__factory.js +1 -1
  160. package/export/typechain/factories/Redemption__factory.js +1 -1
  161. package/export/typechain/factories/SystemTestRelay__factory.js +1 -1
  162. package/export/typechain/factories/TBTCVault__factory.js +1 -1
  163. package/export/typechain/factories/Wallets__factory.js +1 -1
  164. package/package.json +3 -3
  165. package/tasks/test-utils.ts +88 -4
@@ -71,7 +71,7 @@ var func = function (hre) {
71
71
  case 4:
72
72
  if (!hre.network.tags.tenderly) return [3 /*break*/, 6];
73
73
  return [4 /*yield*/, hre.tenderly.verify({
74
- name: "LightRelay",
74
+ name: resolveRelayContract(),
75
75
  address: lightRelay.address,
76
76
  })];
77
77
  case 5:
@@ -48,7 +48,7 @@ var func = function (hre) {
48
48
  case 1:
49
49
  deployer = (_a.sent()).deployer;
50
50
  return [4 /*yield*/, deploy("Bank", {
51
- contract: process.env.TEST_USE_STUBS_TBTC === "true" ? "BankStub" : undefined,
51
+ contract: process.env.TEST_USE_STUBS_TBTC === "true" ? "BankStub" : "Bank",
52
52
  from: deployer,
53
53
  args: [],
54
54
  log: true,
@@ -90,7 +90,8 @@ var func = function (hre) {
90
90
  case 5:
91
91
  ReimbursementPool = _h.sent();
92
92
  txProofDifficultyFactor = deployments.getNetworkName() === "hardhat" ||
93
- deployments.getNetworkName() === "development"
93
+ deployments.getNetworkName() === "development" ||
94
+ deployments.getNetworkName() === "system_tests"
94
95
  ? 1
95
96
  : 6;
96
97
  deployOptions = {
@@ -119,7 +120,7 @@ var func = function (hre) {
119
120
  _d = (_c = helpers.upgrades).deployProxy;
120
121
  _e = ["Bridge"];
121
122
  _f = {
122
- contractName: process.env.TEST_USE_STUBS_TBTC === "true" ? "BridgeStub" : undefined,
123
+ contractName: process.env.TEST_USE_STUBS_TBTC === "true" ? "BridgeStub" : "Bridge",
123
124
  initializerArgs: [
124
125
  Bank.address,
125
126
  LightRelay.address,
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var func = function (hre) {
40
+ return __awaiter(this, void 0, void 0, function () {
41
+ var deployments, getNamedAccounts, helpers, deploy, deployer, Bank, donationVault;
42
+ return __generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ deployments = hre.deployments, getNamedAccounts = hre.getNamedAccounts, helpers = hre.helpers;
46
+ deploy = deployments.deploy;
47
+ return [4 /*yield*/, getNamedAccounts()];
48
+ case 1:
49
+ deployer = (_a.sent()).deployer;
50
+ return [4 /*yield*/, deployments.get("Bank")];
51
+ case 2:
52
+ Bank = _a.sent();
53
+ return [4 /*yield*/, deploy("DonationVault", {
54
+ contract: "DonationVault",
55
+ from: deployer,
56
+ args: [Bank.address],
57
+ log: true,
58
+ waitConfirmations: 1,
59
+ })];
60
+ case 3:
61
+ donationVault = _a.sent();
62
+ if (!hre.network.tags.etherscan) return [3 /*break*/, 5];
63
+ return [4 /*yield*/, helpers.etherscan.verify(donationVault)];
64
+ case 4:
65
+ _a.sent();
66
+ _a.label = 5;
67
+ case 5:
68
+ if (!hre.network.tags.tenderly) return [3 /*break*/, 7];
69
+ return [4 /*yield*/, hre.tenderly.verify({
70
+ name: "DonationVault",
71
+ address: donationVault.address,
72
+ })];
73
+ case 6:
74
+ _a.sent();
75
+ _a.label = 7;
76
+ case 7: return [2 /*return*/];
77
+ }
78
+ });
79
+ });
80
+ };
81
+ exports.default = func;
82
+ func.tags = ["DonationVault"];
83
+ func.dependencies = ["Bank"];
@@ -55,12 +55,13 @@ var func = function (hre) {
55
55
  log: true,
56
56
  waitConfirmations: 1,
57
57
  })
58
- // 60 seconds for Goerli. 1 week otherwise.
58
+ // 60 seconds for Goerli. 48 hours otherwise.
59
59
  ];
60
60
  case 3:
61
61
  bridgeGovernanceParameters = _a.sent();
62
- GOVERNANCE_DELAY = hre.network.name === "goerli" ? 60 : 604800;
62
+ GOVERNANCE_DELAY = hre.network.name === "goerli" ? 60 : 172800;
63
63
  return [4 /*yield*/, deploy("BridgeGovernance", {
64
+ contract: "BridgeGovernance",
64
65
  from: deployer,
65
66
  args: [Bridge.address, GOVERNANCE_DELAY],
66
67
  log: true,
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var func = function (hre) {
40
+ return __awaiter(this, void 0, void 0, function () {
41
+ var getNamedAccounts, deployments, execute, deployer, TBTCVault;
42
+ return __generator(this, function (_a) {
43
+ switch (_a.label) {
44
+ case 0:
45
+ getNamedAccounts = hre.getNamedAccounts, deployments = hre.deployments;
46
+ execute = deployments.execute;
47
+ return [4 /*yield*/, getNamedAccounts()];
48
+ case 1:
49
+ deployer = (_a.sent()).deployer;
50
+ return [4 /*yield*/, deployments.get("TBTCVault")];
51
+ case 2:
52
+ TBTCVault = _a.sent();
53
+ return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "setVaultStatus", TBTCVault.address, true)];
54
+ case 3:
55
+ _a.sent();
56
+ return [2 /*return*/];
57
+ }
58
+ });
59
+ });
60
+ };
61
+ exports.default = func;
62
+ func.tags = ["AuthorizeTBTCVault"];
63
+ func.dependencies = ["Bridge", "TBTCVault"];
@@ -60,7 +60,7 @@ var func = function (hre) { return __awaiter(void 0, void 0, void 0, function ()
60
60
  });
61
61
  }); };
62
62
  exports.default = func;
63
- func.tags = ["SetDepositParams"];
63
+ func.tags = ["SetDepositParameters"];
64
64
  func.dependencies = ["Bridge"];
65
65
  func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
66
66
  return [2 /*return*/, hre.network.name !== "mainnet"];
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var func = function (hre) { return __awaiter(void 0, void 0, void 0, function () {
40
+ var deployments, ethers, getNamedAccounts, execute, read, deployer, walletCreationPeriod, walletCreationMinBtcBalance, walletParameters;
41
+ return __generator(this, function (_a) {
42
+ switch (_a.label) {
43
+ case 0:
44
+ deployments = hre.deployments, ethers = hre.ethers, getNamedAccounts = hre.getNamedAccounts;
45
+ execute = deployments.execute, read = deployments.read;
46
+ return [4 /*yield*/, getNamedAccounts()];
47
+ case 1:
48
+ deployer = (_a.sent()).deployer;
49
+ deployments.log("setting initial wallet parameters");
50
+ walletCreationPeriod = ethers.BigNumber.from("1209600");
51
+ walletCreationMinBtcBalance = ethers.BigNumber.from("0");
52
+ return [4 /*yield*/, read("Bridge", "walletParameters")];
53
+ case 2:
54
+ walletParameters = _a.sent();
55
+ return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateWalletParameters", walletCreationPeriod, walletCreationMinBtcBalance, walletParameters.walletCreationMaxBtcBalance, walletParameters.walletClosureMinBtcBalance, walletParameters.walletMaxAge, walletParameters.walletMaxBtcTransfer, walletParameters.walletClosingPeriod)];
56
+ case 3:
57
+ _a.sent();
58
+ return [2 /*return*/];
59
+ }
60
+ });
61
+ }); };
62
+ exports.default = func;
63
+ func.tags = ["SetWalletParameters"];
64
+ func.dependencies = ["Bridge"];
65
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
66
+ return [2 /*return*/, hre.network.name !== "mainnet"];
67
+ }); }); };
@@ -37,12 +37,12 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var func = function (hre) { return __awaiter(void 0, void 0, void 0, function () {
40
- var deployments, ethers, getNamedAccounts, execute, read, deployer, fraudChallengeDepositAmount, fraudChallengeDefeatTimeout, fraudSlashingAmount, fraudParameters;
40
+ var deployments, ethers, getNamedAccounts, execute, deployer, fraudChallengeDepositAmount, fraudChallengeDefeatTimeout, fraudSlashingAmount, fraudNotifierRewardMultiplier;
41
41
  return __generator(this, function (_a) {
42
42
  switch (_a.label) {
43
43
  case 0:
44
44
  deployments = hre.deployments, ethers = hre.ethers, getNamedAccounts = hre.getNamedAccounts;
45
- execute = deployments.execute, read = deployments.read;
45
+ execute = deployments.execute;
46
46
  return [4 /*yield*/, getNamedAccounts()];
47
47
  case 1:
48
48
  deployer = (_a.sent()).deployer;
@@ -50,11 +50,9 @@ var func = function (hre) { return __awaiter(void 0, void 0, void 0, function ()
50
50
  fraudChallengeDepositAmount = ethers.BigNumber.from("79228162514264337593543950335");
51
51
  fraudChallengeDefeatTimeout = ethers.BigNumber.from("4294967295");
52
52
  fraudSlashingAmount = ethers.BigNumber.from("0");
53
- return [4 /*yield*/, read("Bridge", "fraudParameters")];
53
+ fraudNotifierRewardMultiplier = ethers.BigNumber.from("0");
54
+ return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateFraudParameters", fraudChallengeDepositAmount, fraudChallengeDefeatTimeout, fraudSlashingAmount, fraudNotifierRewardMultiplier)];
54
55
  case 2:
55
- fraudParameters = _a.sent();
56
- return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateFraudParameters", fraudChallengeDepositAmount, fraudChallengeDefeatTimeout, fraudSlashingAmount, fraudParameters.fraudNotifierRewardMultiplier)];
57
- case 3:
58
56
  _a.sent();
59
57
  return [2 /*return*/];
60
58
  }
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var func = function (hre) { return __awaiter(void 0, void 0, void 0, function () {
40
- var deployments, ethers, getNamedAccounts, execute, read, deployer, redemptionDustThreshold, redemptionTimeout, redemptionTimeoutSlashingAmount, redemptionParameters;
40
+ var deployments, ethers, getNamedAccounts, execute, read, deployer, redemptionDustThreshold, redemptionTimeout, redemptionTimeoutSlashingAmount, redemptionTimeoutNotifierRewardMultiplier, redemptionParameters;
41
41
  return __generator(this, function (_a) {
42
42
  switch (_a.label) {
43
43
  case 0:
@@ -50,10 +50,11 @@ var func = function (hre) { return __awaiter(void 0, void 0, void 0, function ()
50
50
  redemptionDustThreshold = ethers.BigNumber.from("18446744073709551615");
51
51
  redemptionTimeout = ethers.BigNumber.from("4294967295");
52
52
  redemptionTimeoutSlashingAmount = ethers.BigNumber.from("0");
53
+ redemptionTimeoutNotifierRewardMultiplier = ethers.BigNumber.from("0");
53
54
  return [4 /*yield*/, read("Bridge", "redemptionParameters")];
54
55
  case 2:
55
56
  redemptionParameters = _a.sent();
56
- return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateRedemptionParameters", redemptionDustThreshold, redemptionParameters.redemptionTreasuryFeeDivisor, redemptionParameters.redemptionTxMaxFee, redemptionParameters.redemptionTxMaxTotalFee, redemptionTimeout, redemptionTimeoutSlashingAmount, redemptionParameters.redemptionTimeoutNotifierRewardMultiplier)];
57
+ return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateRedemptionParameters", redemptionDustThreshold, redemptionParameters.redemptionTreasuryFeeDivisor, redemptionParameters.redemptionTxMaxFee, redemptionParameters.redemptionTxMaxTotalFee, redemptionTimeout, redemptionTimeoutSlashingAmount, redemptionTimeoutNotifierRewardMultiplier)];
57
58
  case 3:
58
59
  _a.sent();
59
60
  return [2 /*return*/];
@@ -37,7 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  var func = function (hre) { return __awaiter(void 0, void 0, void 0, function () {
40
- var deployments, ethers, getNamedAccounts, execute, read, deployer, walletMaxAge, walletClosureMinBtcBalance, walletParameters, movingFundsTimeout, movingFundsTimeoutSlashingAmount, movingFundsParameters;
40
+ var deployments, ethers, getNamedAccounts, execute, read, deployer, walletMaxAge, walletClosureMinBtcBalance, walletParameters, movingFundsTimeout, movedFundsSweepTimeout, movingFundsTimeoutSlashingAmount, movedFundsSweepTimeoutSlashingAmount, movingFundsTimeoutNotifierRewardMultiplier, movedFundsSweepTimeoutNotifierRewardMultiplier, movingFundsParameters;
41
41
  return __generator(this, function (_a) {
42
42
  switch (_a.label) {
43
43
  case 0:
@@ -53,18 +53,26 @@ var func = function (hre) { return __awaiter(void 0, void 0, void 0, function ()
53
53
  case 2:
54
54
  walletParameters = _a.sent();
55
55
  return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateWalletParameters", walletParameters.walletCreationPeriod, walletParameters.walletCreationMinBtcBalance, walletParameters.walletCreationMaxBtcBalance, walletClosureMinBtcBalance, walletMaxAge, walletParameters.walletMaxBtcTransfer, walletParameters.walletClosingPeriod)
56
- // To emphasize the fact that moving funds is disabled, we set the
57
- // movingFundsTimeout to uint32 max value (2^32-1 = 4294967295) and
58
- // movingFundsTimeoutSlashingAmount to zero.
56
+ // To emphasize the fact that moving funds is disabled, we set:
57
+ // - movingFundsTimeout to uint32 max value (2^32-1 = 4294967295),
58
+ // - movedFundsSweepTimeout to uint32 max value,
59
+ // - movingFundsTimeoutSlashingAmount to 0,
60
+ // - movedFundsSweepTimeoutSlashingAmount to 0,
61
+ // - movingFundsTimeoutNotifierRewardMultiplier to 0,
62
+ // - movedFundsSweepTimeoutNotifierRewardMultiplier to 0.
59
63
  ];
60
64
  case 3:
61
65
  _a.sent();
62
66
  movingFundsTimeout = ethers.BigNumber.from("4294967295");
67
+ movedFundsSweepTimeout = ethers.BigNumber.from("4294967295");
63
68
  movingFundsTimeoutSlashingAmount = ethers.BigNumber.from("0");
69
+ movedFundsSweepTimeoutSlashingAmount = ethers.BigNumber.from("0");
70
+ movingFundsTimeoutNotifierRewardMultiplier = ethers.BigNumber.from("0");
71
+ movedFundsSweepTimeoutNotifierRewardMultiplier = ethers.BigNumber.from("0");
64
72
  return [4 /*yield*/, read("Bridge", "movingFundsParameters")];
65
73
  case 4:
66
74
  movingFundsParameters = _a.sent();
67
- return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateMovingFundsParameters", movingFundsParameters.movingFundsTxMaxTotalFee, movingFundsParameters.movingFundsDustThreshold, movingFundsParameters.movingFundsTimeoutResetDelay, movingFundsTimeout, movingFundsTimeoutSlashingAmount, movingFundsParameters.movingFundsTimeoutNotifierRewardMultiplier, movingFundsParameters.movingFundsCommitmentGasOffset, movingFundsParameters.movedFundsSweepTxMaxTotalFee, movingFundsParameters.movedFundsSweepTimeout, movingFundsParameters.movedFundsSweepTimeoutSlashingAmount, movingFundsParameters.movedFundsSweepTimeoutNotifierRewardMultiplier)];
75
+ return [4 /*yield*/, execute("Bridge", { from: deployer, log: true, waitConfirmations: 1 }, "updateMovingFundsParameters", movingFundsParameters.movingFundsTxMaxTotalFee, movingFundsParameters.movingFundsDustThreshold, movingFundsParameters.movingFundsTimeoutResetDelay, movingFundsTimeout, movingFundsTimeoutSlashingAmount, movingFundsTimeoutNotifierRewardMultiplier, movingFundsParameters.movingFundsCommitmentGasOffset, movingFundsParameters.movedFundsSweepTxMaxTotalFee, movedFundsSweepTimeout, movedFundsSweepTimeoutSlashingAmount, movedFundsSweepTimeoutNotifierRewardMultiplier)];
68
76
  case 5:
69
77
  _a.sent();
70
78
  return [2 /*return*/];
@@ -58,3 +58,13 @@ var func = function (hre) {
58
58
  exports.default = func;
59
59
  func.tags = ["AuthorizeSpvMaintainer"];
60
60
  func.dependencies = ["Bridge"];
61
+ // SPV maintainer can submit SPV proofs to the Bridge. We authorize spvMaintainer
62
+ // account for Hardhat network (unit tests) and Goerli (testnet) but we DO NOT
63
+ // want to authorize it for Mainnet deployment. SPV maintainer will be authorized
64
+ // separately by the Governance when sweeping will be activated.
65
+ //
66
+ // Note that at this point MaintainerProxy contract is already authorized in the
67
+ // Bridge (see AuthorizeMaintainerProxyInBridge tag).
68
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
69
+ return [2 /*return*/, hre.network.name === "mainnet"];
70
+ }); }); };
@@ -56,5 +56,5 @@ var func = function (hre) {
56
56
  };
57
57
  exports.default = func;
58
58
  func.tags = ["TransferBankOwnership"];
59
- func.dependencies = ["Bank"];
59
+ func.dependencies = ["Bank", "BankUpdateBridge"];
60
60
  func.runAtTheEnd = true;
@@ -59,5 +59,15 @@ var func = function (hre) {
59
59
  };
60
60
  exports.default = func;
61
61
  func.tags = ["TransferBridgeGovernance"];
62
- func.dependencies = ["Bridge"];
62
+ func.dependencies = [
63
+ "Bridge",
64
+ "AuthorizeTBTCVault",
65
+ "AuthorizeMaintainerProxyInBridge",
66
+ "SetDepositParameters",
67
+ "SetWalletParameters",
68
+ "DisableFraudChallenges",
69
+ "DisableRedemptions",
70
+ "DisableMovingFunds",
71
+ "AuthorizeSpvMaintainer",
72
+ ];
63
73
  func.runAtTheEnd = true;
@@ -61,3 +61,10 @@ var func = function (hre) {
61
61
  exports.default = func;
62
62
  func.tags = ["AuthorizeMaintainerProxyInReimbursementPool"];
63
63
  func.dependencies = ["ReimbursementPool", "MaintainerProxy"];
64
+ // On mainnet, the ReimbursementPool ownership is passed to the Threshold
65
+ // Council / DAO and that address is not controlled by the dev team.
66
+ // Hence, this step can be executed only for non-mainnet networks such as
67
+ // Hardhat (unit tests) and Goerli (testnet).
68
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
69
+ return [2 /*return*/, hre.network.name === "mainnet"];
70
+ }); }); };
@@ -61,3 +61,10 @@ var func = function (hre) {
61
61
  exports.default = func;
62
62
  func.tags = ["AuthorizeBridgeInReimbursementPool"];
63
63
  func.dependencies = ["ReimbursementPool", "Bridge"];
64
+ // On mainnet, the ReimbursementPool ownership is passed to the Threshold
65
+ // Council / DAO and that address is not controlled by the dev team.
66
+ // Hence, this step can be executed only for non-mainnet networks such as
67
+ // Hardhat (unit tests) and Goerli (testnet).
68
+ func.skip = function (hre) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
69
+ return [2 /*return*/, hre.network.name === "mainnet"];
70
+ }); }); };
@@ -101,10 +101,18 @@ var config = {
101
101
  goerli: {
102
102
  url: process.env.CHAIN_API_URL || "",
103
103
  chainId: 5,
104
+ accounts: process.env.ACCOUNTS_PRIVATE_KEYS
105
+ ? process.env.ACCOUNTS_PRIVATE_KEYS.split(",")
106
+ : undefined,
107
+ tags: ["etherscan", "tenderly"],
108
+ },
109
+ mainnet: {
110
+ url: process.env.CHAIN_API_URL || "",
111
+ chainId: 1,
104
112
  accounts: process.env.CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY
105
113
  ? [process.env.CONTRACT_OWNER_ACCOUNT_PRIVATE_KEY]
106
114
  : undefined,
107
- tags: ["tenderly"],
115
+ tags: ["etherscan", "tenderly"],
108
116
  },
109
117
  },
110
118
  tenderly: {
@@ -154,21 +162,22 @@ var config = {
154
162
  default: 1,
155
163
  goerli: 0,
156
164
  },
157
- // TODO: Governance should be the Threshold Council.
158
- // Inspect usages and rename.
159
165
  governance: {
160
166
  default: 2,
161
- goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB", // Dev team
167
+ goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB",
168
+ mainnet: "0x9f6e831c8f8939dc0c830c6e492e7cef4f9c2f5f", // Threshold Council
162
169
  },
163
170
  chaosnetOwner: {
164
171
  default: 3,
165
172
  goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB", // Dev team
166
- // mainnet: ""
173
+ // Not used for mainnet deployment scripts of `@keepn-network/tbtc-v2`.
174
+ // Used by `@keep-network/random-beacon` and `@keep-network/ecdsa`
175
+ // when deploying `SortitionPool`s.
167
176
  },
168
177
  esdm: {
169
178
  default: 4,
170
- goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB", // Dev team
171
- // mainnet: ""
179
+ goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB",
180
+ mainnet: "0x9f6e831c8f8939dc0c830c6e492e7cef4f9c2f5f", // Threshold Council
172
181
  },
173
182
  keepTechnicalWalletTeam: {
174
183
  default: 5,
@@ -182,11 +191,13 @@ var config = {
182
191
  },
183
192
  treasury: {
184
193
  default: 7,
185
- goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB", // Dev team
194
+ goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB",
195
+ mainnet: "0x87F005317692D05BAA4193AB0c961c69e175f45f", // Token Holder DAO
186
196
  },
187
197
  spvMaintainer: {
188
198
  default: 8,
189
199
  goerli: "0xCac19049825F370dB0836cB0d8E4D024F78eb2eB", // Dev team
200
+ // We are not setting SPV maintainer for mainnet in deployment scripts.
190
201
  },
191
202
  },
192
203
  dependencyCompiler: {