@keep-network/tbtc-v2 1.8.0 → 1.8.2

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 (203) hide show
  1. package/artifacts/Bridge.json +1998 -1972
  2. package/artifacts/Bridge_v2_Implementation.json +2817 -0
  3. package/artifacts/Deposit.json +7 -7
  4. package/artifacts/Redemption.json +95 -171
  5. package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
  6. package/build/contracts/Timelock.sol/Timelock.dbg.json +1 -1
  7. package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
  8. package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.dbg.json +1 -1
  9. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
  10. package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
  11. package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  12. package/build/contracts/bridge/Bridge.sol/Bridge.json +74 -48
  13. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.dbg.json +1 -1
  14. package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +2 -2
  15. package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
  16. package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
  17. package/build/contracts/bridge/BridgeState.sol/BridgeState.json +2 -2
  18. package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
  19. package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
  20. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.dbg.json +1 -1
  21. package/build/contracts/bridge/DepositSweep.sol/DepositSweep.json +2 -2
  22. package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
  23. package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
  24. package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
  25. package/build/contracts/bridge/Heartbeat.sol/Heartbeat.dbg.json +1 -1
  26. package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
  27. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
  28. package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
  29. package/build/contracts/bridge/Redemption.sol/IRedemptionWatchtower.dbg.json +1 -1
  30. package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
  31. package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
  32. package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
  33. package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
  34. package/build/contracts/bridge/RedemptionWatchtower.sol/RedemptionWatchtower.dbg.json +1 -1
  35. package/build/contracts/bridge/RedemptionWatchtower.sol/RedemptionWatchtower.json +2 -2
  36. package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
  37. package/build/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.dbg.json +1 -1
  38. package/build/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.dbg.json +1 -1
  39. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.dbg.json +1 -1
  40. package/build/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +2 -2
  41. package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
  42. package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
  43. package/build/contracts/cross-chain/AbstractL1BTCDepositor.sol/AbstractL1BTCDepositor.dbg.json +1 -1
  44. package/build/contracts/cross-chain/L2TBTC.sol/L2TBTC.dbg.json +1 -1
  45. package/build/contracts/cross-chain/starknet/StarkNetBitcoinDepositor.sol/StarkNetBitcoinDepositor.dbg.json +1 -1
  46. package/build/contracts/cross-chain/starknet/interfaces/IStarkGateBridge.sol/IStarkGateBridge.dbg.json +1 -1
  47. package/build/contracts/cross-chain/utils/Crosschain.sol/CrosschainUtils.dbg.json +1 -1
  48. package/build/contracts/cross-chain/wormhole/BTCDepositorWormhole.sol/BTCDepositorWormhole.dbg.json +1 -1
  49. package/build/contracts/cross-chain/wormhole/L1BTCDepositorWormhole.sol/L1BTCDepositorWormhole.dbg.json +1 -1
  50. package/build/contracts/cross-chain/wormhole/L2BTCDepositorWormhole.sol/L2BTCDepositorWormhole.dbg.json +1 -1
  51. package/build/contracts/cross-chain/wormhole/L2WormholeGateway.sol/L2WormholeGateway.dbg.json +1 -1
  52. package/build/contracts/cross-chain/wormhole/Wormhole.sol/IWormhole.dbg.json +1 -1
  53. package/build/contracts/cross-chain/wormhole/Wormhole.sol/IWormholeGateway.dbg.json +1 -1
  54. package/build/contracts/cross-chain/wormhole/Wormhole.sol/IWormholeReceiver.dbg.json +1 -1
  55. package/build/contracts/cross-chain/wormhole/Wormhole.sol/IWormholeRelayer.dbg.json +1 -1
  56. package/build/contracts/cross-chain/wormhole/Wormhole.sol/IWormholeTokenBridge.dbg.json +1 -1
  57. package/build/contracts/cross-chain/wormhole/Wormhole.sol/WormholeTypes.dbg.json +1 -1
  58. package/build/contracts/cross-chain/wormhole/Wormhole.sol/WormholeUtils.dbg.json +1 -1
  59. package/build/contracts/integrator/AbstractBTCDepositor.sol/AbstractBTCDepositor.dbg.json +1 -1
  60. package/build/contracts/integrator/IBridge.sol/IBridge.dbg.json +1 -1
  61. package/build/contracts/integrator/IBridge.sol/IBridgeTypes.dbg.json +1 -1
  62. package/build/contracts/integrator/ITBTCVault.sol/ITBTCVault.dbg.json +1 -1
  63. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
  64. package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +2 -2
  65. package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
  66. package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
  67. package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
  68. package/build/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.dbg.json +1 -1
  69. package/build/contracts/test/BankStub.sol/BankStub.dbg.json +1 -1
  70. package/build/contracts/test/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  71. package/build/contracts/test/BridgeStub.sol/BridgeStub.json +74 -48
  72. package/build/contracts/test/HeartbeatStub.sol/HeartbeatStub.dbg.json +1 -1
  73. package/build/contracts/test/LightRelayStub.sol/LightRelayStub.dbg.json +1 -1
  74. package/build/contracts/test/MockBridgeForStarkNet.sol/MockBridgeForStarkNet.dbg.json +1 -1
  75. package/build/contracts/test/MockStarkGateBridge.sol/MockStarkGateBridge.dbg.json +1 -1
  76. package/build/contracts/test/MockTBTCBridge.sol/MockTBTCBridge.dbg.json +1 -1
  77. package/build/contracts/test/MockTBTCBridgeWithSweep.sol/MockTBTCBridgeWithSweep.dbg.json +1 -1
  78. package/build/contracts/test/MockTBTCToken.sol/MockTBTCToken.dbg.json +1 -1
  79. package/build/contracts/test/MockTBTCVault.sol/MockTBTCVault.dbg.json +1 -1
  80. package/build/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.dbg.json +1 -1
  81. package/build/contracts/test/ReentrancyAttacker.sol/ReentrancyAttacker.dbg.json +1 -1
  82. package/build/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.dbg.json +1 -1
  83. package/build/contracts/test/SystemTestRelay.sol/SystemTestRelay.dbg.json +1 -1
  84. package/build/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +2 -2
  85. package/build/contracts/test/TestBTCDepositor.sol/MockBridge.dbg.json +1 -1
  86. package/build/contracts/test/TestBTCDepositor.sol/MockTBTCVault.dbg.json +1 -1
  87. package/build/contracts/test/TestBTCDepositor.sol/TestBTCDepositor.dbg.json +1 -1
  88. package/build/contracts/test/TestBitcoinTx.sol/TestBitcoinTx.dbg.json +1 -1
  89. package/build/contracts/test/TestBitcoinTx.sol/TestBitcoinTx.json +2 -2
  90. package/build/contracts/test/TestERC20.sol/TestERC20.dbg.json +1 -1
  91. package/build/contracts/test/TestERC721.sol/TestERC721.dbg.json +1 -1
  92. package/build/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.dbg.json +1 -1
  93. package/build/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.dbg.json +1 -1
  94. package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
  95. package/build/contracts/vault/DonationVault.sol/DonationVault.dbg.json +1 -1
  96. package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
  97. package/build/contracts/vault/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.dbg.json +1 -1
  98. package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
  99. package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
  100. package/contracts/bridge/Bridge.sol +34 -0
  101. package/contracts/bridge/Deposit.sol +7 -5
  102. package/deploy/80_upgrade_bridge_v2.ts +107 -54
  103. package/deploy/81_upgrade_bridge_v2_vault_fix.ts +160 -0
  104. package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +4891 -4170
  105. package/export/artifacts/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +207 -207
  106. package/export/artifacts/contracts/bridge/RedemptionWatchtower.sol/RedemptionWatchtower.json +104 -104
  107. package/export/artifacts/contracts/bridge/VendingMachine.sol/VendingMachine.json +67 -67
  108. package/export/artifacts/contracts/bridge/VendingMachineV2.sol/VendingMachineV2.json +24 -24
  109. package/export/artifacts/contracts/bridge/VendingMachineV3.sol/VendingMachineV3.json +26 -26
  110. package/export/artifacts/contracts/bridge/WalletProposalValidator.sol/WalletProposalValidator.json +72 -72
  111. package/export/artifacts/contracts/cross-chain/L2TBTC.sol/L2TBTC.json +40 -40
  112. package/export/artifacts/contracts/cross-chain/starknet/StarkNetBitcoinDepositor.sol/StarkNetBitcoinDepositor.json +3360 -3360
  113. package/export/artifacts/contracts/cross-chain/wormhole/BTCDepositorWormhole.sol/BTCDepositorWormhole.json +117 -117
  114. package/export/artifacts/contracts/cross-chain/wormhole/L1BTCDepositorWormhole.sol/L1BTCDepositorWormhole.json +140 -140
  115. package/export/artifacts/contracts/cross-chain/wormhole/L2BTCDepositorWormhole.sol/L2BTCDepositorWormhole.json +37 -37
  116. package/export/artifacts/contracts/cross-chain/wormhole/L2WormholeGateway.sol/L2WormholeGateway.json +51 -51
  117. package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +103 -103
  118. package/export/artifacts/contracts/relay/LightRelay.sol/LightRelay.json +57 -57
  119. package/export/artifacts/contracts/relay/LightRelayMaintainerProxy.sol/LightRelayMaintainerProxy.json +31 -31
  120. package/export/artifacts/contracts/test/BankStub.sol/BankStub.json +2 -2
  121. package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +5130 -4414
  122. package/export/artifacts/contracts/test/HeartbeatStub.sol/HeartbeatStub.json +4 -4
  123. package/export/artifacts/contracts/test/LightRelayStub.sol/LightRelayStub.json +59 -59
  124. package/export/artifacts/contracts/test/MockBridgeForStarkNet.sol/MockBridgeForStarkNet.json +730 -730
  125. package/export/artifacts/contracts/test/MockStarkGateBridge.sol/MockStarkGateBridge.json +956 -956
  126. package/export/artifacts/contracts/test/MockTBTCBridge.sol/MockTBTCBridge.json +781 -781
  127. package/export/artifacts/contracts/test/MockTBTCBridgeWithSweep.sol/MockTBTCBridgeWithSweep.json +458 -458
  128. package/export/artifacts/contracts/test/MockTBTCToken.sol/MockTBTCToken.json +1273 -1273
  129. package/export/artifacts/contracts/test/MockTBTCVault.sol/MockTBTCVault.json +305 -305
  130. package/export/artifacts/contracts/test/ReceiveApprovalStub.sol/ReceiveApprovalStub.json +7 -7
  131. package/export/artifacts/contracts/test/ReentrancyAttacker.sol/ReentrancyAttacker.json +204 -204
  132. package/export/artifacts/contracts/test/SepoliaLightRelay.sol/SepoliaLightRelay.json +59 -59
  133. package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +19 -19
  134. package/export/artifacts/contracts/test/TestBTCDepositor.sol/MockBridge.json +34 -34
  135. package/export/artifacts/contracts/test/TestBTCDepositor.sol/MockTBTCVault.json +20 -20
  136. package/export/artifacts/contracts/test/TestBTCDepositor.sol/TestBTCDepositor.json +52 -52
  137. package/export/artifacts/contracts/test/TestBitcoinTx.sol/TestBitcoinTx.json +124 -124
  138. package/export/artifacts/contracts/test/TestERC20.sol/TestERC20.json +6 -6
  139. package/export/artifacts/contracts/test/TestERC721.sol/TestERC721.json +8 -8
  140. package/export/artifacts/contracts/test/TestEcdsaLib.sol/TestEcdsaLib.json +4 -4
  141. package/export/artifacts/contracts/test/WormholeBridgeStub.sol/WormholeBridgeStub.json +37 -37
  142. package/export/artifacts/contracts/token/TBTC.sol/TBTC.json +2 -2
  143. package/export/artifacts/contracts/vault/DonationVault.sol/DonationVault.json +11 -11
  144. package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +144 -144
  145. package/export/deploy/80_upgrade_bridge_v2.js +127 -90
  146. package/export/deploy/81_upgrade_bridge_v2_vault_fix.js +211 -0
  147. package/export/typechain/AbstractBTCRedeemer.js +2 -0
  148. package/export/typechain/IBank.js +2 -0
  149. package/export/typechain/IL2WormholeGateway.js +2 -0
  150. package/export/typechain/INttManager.js +2 -0
  151. package/export/typechain/INttManagerWithExecutor.js +2 -0
  152. package/export/typechain/L1BTCDepositorNtt.js +2 -0
  153. package/export/typechain/L1BTCDepositorNttWithExecutor.js +2 -0
  154. package/export/typechain/L1BTCRedeemerWormhole.js +2 -0
  155. package/export/typechain/L2BTCRedeemerWormhole.js +2 -0
  156. package/export/typechain/MockBank.js +2 -0
  157. package/export/typechain/MockBridgeWithRebateStaking.js +2 -0
  158. package/export/typechain/MockL1BTCRedeemerWormhole.js +2 -0
  159. package/export/typechain/MockNttManager.js +2 -0
  160. package/export/typechain/MockNttManagerWithExecutor.js +2 -0
  161. package/export/typechain/NativeBTCDepositor.js +2 -0
  162. package/export/typechain/RebateStaking.js +2 -0
  163. package/export/typechain/TestBTCRedeemer.js +2 -0
  164. package/export/typechain/TestBTCUtilsHelper.js +2 -0
  165. package/export/typechain/TransceiverStructs.js +2 -0
  166. package/export/typechain/factories/AbstractBTCRedeemer__factory.js +204 -0
  167. package/export/typechain/factories/BridgeGovernance__factory.js +1 -1
  168. package/export/typechain/factories/BridgeState__factory.js +1 -1
  169. package/export/typechain/factories/BridgeStub__factory.js +27 -1
  170. package/export/typechain/factories/Bridge__factory.js +27 -1
  171. package/export/typechain/factories/DepositSweep__factory.js +1 -1
  172. package/export/typechain/factories/Deposit__factory.js +1 -1
  173. package/export/typechain/factories/Fraud__factory.js +1 -1
  174. package/export/typechain/factories/IBank__factory.js +138 -0
  175. package/export/typechain/factories/IL2WormholeGateway__factory.js +61 -0
  176. package/export/typechain/factories/INttManagerWithExecutor__factory.js +183 -0
  177. package/export/typechain/factories/INttManager__factory.js +51 -0
  178. package/export/typechain/factories/L1BTCDepositorNttWithExecutor__factory.js +1454 -0
  179. package/export/typechain/factories/L1BTCDepositorNtt__factory.js +920 -0
  180. package/export/typechain/factories/L1BTCRedeemerWormhole__factory.js +622 -0
  181. package/export/typechain/factories/L2BTCRedeemerWormhole__factory.js +348 -0
  182. package/export/typechain/factories/MaintainerProxy__factory.js +1 -1
  183. package/export/typechain/factories/MockBank__factory.js +248 -0
  184. package/export/typechain/factories/MockBridgeWithRebateStaking__factory.js +129 -0
  185. package/export/typechain/factories/MockL1BTCRedeemerWormhole__factory.js +638 -0
  186. package/export/typechain/factories/MockNttManagerWithExecutor__factory.js +423 -0
  187. package/export/typechain/factories/MockNttManager__factory.js +211 -0
  188. package/export/typechain/factories/MovingFunds__factory.js +1 -1
  189. package/export/typechain/factories/NativeBTCDepositor__factory.js +635 -0
  190. package/export/typechain/factories/RebateStaking__factory.js +720 -0
  191. package/export/typechain/factories/RedemptionWatchtower__factory.js +1 -1
  192. package/export/typechain/factories/Redemption__factory.js +1 -1
  193. package/export/typechain/factories/SystemTestRelay__factory.js +1 -1
  194. package/export/typechain/factories/TBTCVault__factory.js +1 -1
  195. package/export/typechain/factories/TestBTCRedeemer__factory.js +425 -0
  196. package/export/typechain/factories/TestBTCUtilsHelper__factory.js +109 -0
  197. package/export/typechain/factories/TestBitcoinTx__factory.js +1 -1
  198. package/export/typechain/factories/TransceiverStructs__factory.js +853 -0
  199. package/export/typechain/factories/WalletProposalValidator__factory.js +1 -1
  200. package/export/typechain/factories/Wallets__factory.js +1 -1
  201. package/export/typechain/index.js +40 -2
  202. package/export.json +40910 -0
  203. package/package.json +1 -1
@@ -35,135 +35,172 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
35
35
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
36
  }
37
37
  };
38
- var __read = (this && this.__read) || function (o, n) {
39
- var m = typeof Symbol === "function" && o[Symbol.iterator];
40
- if (!m) return o;
41
- var i = m.call(o), r, ar = [], e;
42
- try {
43
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
- }
45
- catch (error) { e = { error: error }; }
46
- finally {
47
- try {
48
- if (r && !r.done && (m = i["return"])) m.call(i);
49
- }
50
- finally { if (e) throw e.error; }
51
- }
52
- return ar;
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
53
40
  };
54
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
+ var fs_1 = __importDefault(require("fs"));
43
+ var path_1 = __importDefault(require("path"));
55
44
  var func = function (hre) {
56
45
  return __awaiter(this, void 0, void 0, function () {
57
- var ethers, helpers, deployments, getNamedAccounts, get, _a, deployer, treasury, Bank, LightRelay, WalletRegistry, ReimbursementPool, txProofDifficultyFactor, Deposit, DepositSweep, Redemption, Wallets, Fraud, MovingFunds, _b, bridge, proxyDeployment, _c, _d, _e;
58
- var _f, _g;
59
- return __generator(this, function (_h) {
60
- switch (_h.label) {
46
+ var ethers, deployments, getNamedAccounts, get, _a, deployer, treasury, Bank, LightRelay, WalletRegistry, ReimbursementPool, txProofDifficultyFactor, Deposit, DepositSweep, Redemption, Wallets, Fraud, MovingFunds, Bridge, bridgeLibraries, bridgeFactory, _b, _c, _d, deployBridgeImplementation, isProxyRegistered, ozNetworkFile, ozData, adminSlot, adminData, proxyAdminAddress, proxyAdmin, proxyAdminOwner, deployerSigner, deployerAddress, implementationAddress, proxyAdminInterface, upgradeCalldata, proxyAdminWithUpgrade, upgradeTx;
47
+ var _e;
48
+ var _this = this;
49
+ return __generator(this, function (_f) {
50
+ switch (_f.label) {
61
51
  case 0:
62
- ethers = hre.ethers, helpers = hre.helpers, deployments = hre.deployments, getNamedAccounts = hre.getNamedAccounts;
52
+ ethers = hre.ethers, deployments = hre.deployments, getNamedAccounts = hre.getNamedAccounts;
63
53
  get = deployments.get;
64
54
  return [4 /*yield*/, getNamedAccounts()];
65
55
  case 1:
66
- _a = _h.sent(), deployer = _a.deployer, treasury = _a.treasury;
56
+ _a = _f.sent(), deployer = _a.deployer, treasury = _a.treasury;
67
57
  return [4 /*yield*/, deployments.get("Bank")];
68
58
  case 2:
69
- Bank = _h.sent();
59
+ Bank = _f.sent();
70
60
  return [4 /*yield*/, deployments.get("LightRelay")];
71
61
  case 3:
72
- LightRelay = _h.sent();
62
+ LightRelay = _f.sent();
73
63
  return [4 /*yield*/, deployments.get("WalletRegistry")];
74
64
  case 4:
75
- WalletRegistry = _h.sent();
65
+ WalletRegistry = _f.sent();
76
66
  return [4 /*yield*/, deployments.get("ReimbursementPool")];
77
67
  case 5:
78
- ReimbursementPool = _h.sent();
68
+ ReimbursementPool = _f.sent();
79
69
  txProofDifficultyFactor = 6;
80
- return [4 /*yield*/, get("Deposit")];
70
+ return [4 /*yield*/, deployments.deploy("Deposit", {
71
+ from: deployer,
72
+ log: true,
73
+ waitConfirmations: 1,
74
+ })];
81
75
  case 6:
82
- Deposit = _h.sent();
76
+ Deposit = _f.sent();
77
+ if (Deposit.newlyDeployed) {
78
+ console.log("New Deposit library deployed at: ".concat(Deposit.address));
79
+ }
83
80
  return [4 /*yield*/, get("DepositSweep")];
84
81
  case 7:
85
- DepositSweep = _h.sent();
82
+ DepositSweep = _f.sent();
86
83
  return [4 /*yield*/, get("Redemption")];
87
84
  case 8:
88
- Redemption = _h.sent();
85
+ Redemption = _f.sent();
89
86
  return [4 /*yield*/, get("Wallets")];
90
87
  case 9:
91
- Wallets = _h.sent();
88
+ Wallets = _f.sent();
92
89
  return [4 /*yield*/, get("Fraud")];
93
90
  case 10:
94
- Fraud = _h.sent();
91
+ Fraud = _f.sent();
95
92
  return [4 /*yield*/, get("MovingFunds")];
96
93
  case 11:
97
- MovingFunds = _h.sent();
98
- _d = (_c = helpers.upgrades).upgradeProxy;
99
- _e = ["Bridge",
100
- "Bridge"];
101
- _f = {
102
- contractName: "Bridge",
103
- initializerArgs: [
104
- Bank.address,
105
- LightRelay.address,
106
- treasury,
107
- WalletRegistry.address,
108
- ReimbursementPool.address,
109
- txProofDifficultyFactor,
110
- ]
94
+ MovingFunds = _f.sent();
95
+ return [4 /*yield*/, deployments.get("Bridge")];
96
+ case 12:
97
+ Bridge = _f.sent();
98
+ bridgeLibraries = {
99
+ Deposit: Deposit.address,
100
+ DepositSweep: DepositSweep.address,
101
+ Redemption: Redemption.address,
102
+ Wallets: Wallets.address,
103
+ Fraud: Fraud.address,
104
+ MovingFunds: MovingFunds.address,
111
105
  };
112
- _g = {};
106
+ _c = (_b = ethers).getContractFactory;
107
+ _d = ["Bridge"];
108
+ _e = {};
113
109
  return [4 /*yield*/, ethers.getSigner(deployer)];
114
- case 12: return [4 /*yield*/, _d.apply(_c, _e.concat([(_f.factoryOpts = (_g.signer = _h.sent(),
115
- _g.libraries = {
116
- Deposit: Deposit.address,
117
- DepositSweep: DepositSweep.address,
118
- Redemption: Redemption.address,
119
- Wallets: Wallets.address,
120
- Fraud: Fraud.address,
121
- MovingFunds: MovingFunds.address,
122
- },
123
- _g),
124
- _f.proxyOpts = {
125
- kind: "transparent",
126
- // Allow external libraries linking. We need to ensure manually that the
127
- // external libraries we link are upgrade safe, as the OpenZeppelin plugin
128
- // doesn't perform such a validation yet.
129
- // See: https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#why-cant-i-use-external-libraries
130
- unsafeAllow: ["external-library-linking"],
131
- },
132
- _f)]))];
133
- case 13:
134
- _b = __read.apply(void 0, [_h.sent(), 2]), bridge = _b[0], proxyDeployment = _b[1];
135
- if (!hre.network.tags.etherscan) return [3 /*break*/, 15];
136
- // We use `verify` instead of `verify:verify` as the `verify` task is defined
137
- // in "@openzeppelin/hardhat-upgrades" to perform Etherscan verification
138
- // of Proxy and Implementation contracts.
139
- return [4 /*yield*/, hre.run("verify", {
140
- address: proxyDeployment.address,
141
- constructorArgsParams: proxyDeployment.args,
142
- })];
110
+ case 13: return [4 /*yield*/, _c.apply(_b, _d.concat([(_e.signer = _f.sent(),
111
+ _e.libraries = bridgeLibraries,
112
+ _e)]))];
143
113
  case 14:
144
- // We use `verify` instead of `verify:verify` as the `verify` task is defined
145
- // in "@openzeppelin/hardhat-upgrades" to perform Etherscan verification
146
- // of Proxy and Implementation contracts.
147
- _h.sent();
148
- _h.label = 15;
149
- case 15:
150
- if (!hre.network.tags.tenderly) return [3 /*break*/, 17];
151
- return [4 /*yield*/, hre.tenderly.verify({
152
- name: "Bridge",
153
- address: bridge.address,
114
+ bridgeFactory = _f.sent();
115
+ deployBridgeImplementation = function () { return __awaiter(_this, void 0, void 0, function () {
116
+ var implementationDeployment;
117
+ return __generator(this, function (_a) {
118
+ switch (_a.label) {
119
+ case 0: return [4 /*yield*/, deployments.deploy("BridgeImplementation", {
120
+ contract: "Bridge",
121
+ from: deployer,
122
+ log: true,
123
+ waitConfirmations: 1,
124
+ skipIfAlreadyDeployed: false,
125
+ libraries: bridgeLibraries,
126
+ })];
127
+ case 1:
128
+ implementationDeployment = _a.sent();
129
+ return [2 /*return*/, implementationDeployment.address];
130
+ }
131
+ });
132
+ }); };
133
+ isProxyRegistered = false;
134
+ ozNetworkFile = path_1.default.join(__dirname, "../.openzeppelin/".concat(hre.network.name, ".json"));
135
+ if (fs_1.default.existsSync(ozNetworkFile)) {
136
+ ozData = JSON.parse(fs_1.default.readFileSync(ozNetworkFile, "utf8"));
137
+ isProxyRegistered = (ozData.proxies || []).some(function (proxy) { var _a; return ((_a = proxy.address) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === Bridge.address.toLowerCase(); });
138
+ }
139
+ if (!!isProxyRegistered) return [3 /*break*/, 16];
140
+ return [4 /*yield*/, hre.upgrades.forceImport(Bridge.address, bridgeFactory, {
141
+ kind: "transparent",
154
142
  })];
143
+ case 15:
144
+ _f.sent();
145
+ _f.label = 16;
155
146
  case 16:
156
- _h.sent();
157
- _h.label = 17;
158
- case 17: return [2 /*return*/];
147
+ adminSlot = "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103";
148
+ return [4 /*yield*/, ethers.provider.getStorageAt(Bridge.address, adminSlot)];
149
+ case 17:
150
+ adminData = _f.sent();
151
+ proxyAdminAddress = ethers.utils.getAddress("0x".concat(adminData.slice(26)));
152
+ return [4 /*yield*/, ethers.getContractAt(["function owner() view returns (address)"], proxyAdminAddress)];
153
+ case 18:
154
+ proxyAdmin = _f.sent();
155
+ return [4 /*yield*/, proxyAdmin.owner()];
156
+ case 19:
157
+ proxyAdminOwner = _f.sent();
158
+ return [4 /*yield*/, ethers.getSigner(deployer)];
159
+ case 20:
160
+ deployerSigner = _f.sent();
161
+ return [4 /*yield*/, deployerSigner.getAddress()];
162
+ case 21:
163
+ deployerAddress = _f.sent();
164
+ return [4 /*yield*/, deployBridgeImplementation()];
165
+ case 22:
166
+ implementationAddress = _f.sent();
167
+ proxyAdminInterface = new ethers.utils.Interface([
168
+ "function upgrade(address proxy, address implementation)",
169
+ ]);
170
+ upgradeCalldata = proxyAdminInterface.encodeFunctionData("upgrade", [
171
+ Bridge.address,
172
+ implementationAddress,
173
+ ]);
174
+ if (proxyAdminOwner.toLowerCase() !== deployerAddress.toLowerCase()) {
175
+ console.log("ProxyAdmin owner:", proxyAdminOwner);
176
+ console.log("ProxyAdmin address:", proxyAdminAddress);
177
+ console.log("Bridge implementation:", implementationAddress);
178
+ console.log("Upgrade calldata:", upgradeCalldata);
179
+ return [2 /*return*/];
180
+ }
181
+ return [4 /*yield*/, ethers.getContractAt(["function upgrade(address proxy, address implementation)"], proxyAdminAddress)];
182
+ case 23:
183
+ proxyAdminWithUpgrade = _f.sent();
184
+ return [4 /*yield*/, proxyAdminWithUpgrade.upgrade(Bridge.address, implementationAddress)];
185
+ case 24:
186
+ upgradeTx = _f.sent();
187
+ return [4 /*yield*/, upgradeTx.wait(1)];
188
+ case 25:
189
+ _f.sent();
190
+ console.log("ProxyAdmin owner:", proxyAdminOwner);
191
+ console.log("ProxyAdmin address:", proxyAdminAddress);
192
+ console.log("Bridge implementation:", implementationAddress);
193
+ console.log("Upgrade tx:", upgradeTx.hash);
194
+ console.log("Upgrade calldata:", upgradeCalldata);
195
+ return [2 /*return*/];
159
196
  }
160
197
  });
161
198
  });
162
199
  };
163
200
  exports.default = func;
164
201
  func.tags = ["UpgradeBridge"];
165
- // When running an upgrade uncomment the skip below and run the command:
202
+ // Set UPGRADE_BRIDGE=true when running an upgrade.
166
203
  // yarn deploy --tags UpgradeBridge --network <NETWORK>
167
204
  func.skip = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
168
- return [2 /*return*/, true];
205
+ return [2 /*return*/, process.env.UPGRADE_BRIDGE !== "true"];
169
206
  }); }); };
@@ -0,0 +1,211 @@
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
+ var __read = (this && this.__read) || function (o, n) {
39
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
40
+ if (!m) return o;
41
+ var i = m.call(o), r, ar = [], e;
42
+ try {
43
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
44
+ }
45
+ catch (error) { e = { error: error }; }
46
+ finally {
47
+ try {
48
+ if (r && !r.done && (m = i["return"])) m.call(i);
49
+ }
50
+ finally { if (e) throw e.error; }
51
+ }
52
+ return ar;
53
+ };
54
+ Object.defineProperty(exports, "__esModule", { value: true });
55
+ /**
56
+ * @notice This deployment script upgrades the Bridge contract to v2 with the
57
+ * vault=0x0 deposit fix. The fix is implemented as a reinitializer
58
+ * function that runs once during the upgrade.
59
+ *
60
+ * @dev IMPORTANT DEPLOYMENT NOTES:
61
+ *
62
+ * MAINNET:
63
+ * - The upgrade MUST go through the Timelock contract (24h delay)
64
+ * - Council multisig (6-of-9) schedules and executes via Timelock
65
+ * - Timeline: ~36-40 hours total (schedule + 24h delay + execute)
66
+ * - See consensus document for detailed rollout plan
67
+ *
68
+ * SEPOLIA (for upgrade mechanism testing):
69
+ * - No Timelock required, direct EOA upgrade
70
+ * - The reinitializer has MAINNET-SPECIFIC hardcoded values:
71
+ * - Deposit key: specific to the mainnet vault=0x0 deposit
72
+ * - TBTCVault: mainnet address (0x9C070027cdC9dc8F82416B2e5314E11DFb4FE3CD)
73
+ * - On Sepolia, the reinitializer will FAIL if:
74
+ * - The deposit doesn't exist (revealedAt == 0)
75
+ * - The vault is already set (vault != 0x0)
76
+ * - For testing on Sepolia, either:
77
+ * - Create a mock deposit with vault=0x0 first, OR
78
+ * - Use a mainnet fork (recommended for accurate testing)
79
+ *
80
+ * Context:
81
+ * - Wallet 71bfad9a has a deposit with vault=0x0 that is blocking all sweeps
82
+ * - This deposit was revealed on 2026-01-08 by depositor 0xe7c9a5298A2d2e48B5df3F9D361BA1469B0f436B
83
+ * - The reinitializer fixes the deposit's vault to point to TBTCVault
84
+ *
85
+ * Usage:
86
+ * # For Sepolia (testing upgrade mechanism - will fail on reinitializer):
87
+ * yarn deploy --tags UpgradeBridgeVaultFix --network sepolia
88
+ *
89
+ * # For Mainnet (production - requires Timelock):
90
+ * # See consensus document for Timelock-based deployment
91
+ */
92
+ var func = function (hre) {
93
+ return __awaiter(this, void 0, void 0, function () {
94
+ var ethers, helpers, deployments, getNamedAccounts, get, log, deployer, Deposit, DepositSweep, Redemption, Wallets, Fraud, MovingFunds, bridgeDeployment, _a, bridge, proxyDeployment, _b, _c, _d;
95
+ var _e, _f;
96
+ return __generator(this, function (_g) {
97
+ switch (_g.label) {
98
+ case 0:
99
+ ethers = hre.ethers, helpers = hre.helpers, deployments = hre.deployments, getNamedAccounts = hre.getNamedAccounts;
100
+ get = deployments.get, log = deployments.log;
101
+ return [4 /*yield*/, getNamedAccounts()];
102
+ case 1:
103
+ deployer = (_g.sent()).deployer;
104
+ log("=".repeat(80));
105
+ log("Upgrading Bridge with vault=0x0 deposit fix");
106
+ log("=".repeat(80));
107
+ return [4 /*yield*/, get("Deposit")];
108
+ case 2:
109
+ Deposit = _g.sent();
110
+ return [4 /*yield*/, get("DepositSweep")];
111
+ case 3:
112
+ DepositSweep = _g.sent();
113
+ return [4 /*yield*/, get("Redemption")];
114
+ case 4:
115
+ Redemption = _g.sent();
116
+ return [4 /*yield*/, get("Wallets")];
117
+ case 5:
118
+ Wallets = _g.sent();
119
+ return [4 /*yield*/, get("Fraud")];
120
+ case 6:
121
+ Fraud = _g.sent();
122
+ return [4 /*yield*/, get("MovingFunds")];
123
+ case 7:
124
+ MovingFunds = _g.sent();
125
+ log("Using existing libraries:");
126
+ log(" Deposit: ".concat(Deposit.address));
127
+ log(" DepositSweep: ".concat(DepositSweep.address));
128
+ log(" Redemption: ".concat(Redemption.address));
129
+ log(" Wallets: ".concat(Wallets.address));
130
+ log(" Fraud: ".concat(Fraud.address));
131
+ log(" MovingFunds: ".concat(MovingFunds.address));
132
+ return [4 /*yield*/, get("Bridge")];
133
+ case 8:
134
+ bridgeDeployment = _g.sent();
135
+ log("\nExisting Bridge proxy: ".concat(bridgeDeployment.address));
136
+ _c = (_b = helpers.upgrades).upgradeProxy;
137
+ _d = ["Bridge",
138
+ "Bridge"];
139
+ _e = {
140
+ contractName: "Bridge"
141
+ };
142
+ _f = {};
143
+ return [4 /*yield*/, ethers.getSigner(deployer)];
144
+ case 9: return [4 /*yield*/, _c.apply(_b, _d.concat([(_e.factoryOpts = (_f.signer = _g.sent(),
145
+ _f.libraries = {
146
+ Deposit: Deposit.address,
147
+ DepositSweep: DepositSweep.address,
148
+ Redemption: Redemption.address,
149
+ Wallets: Wallets.address,
150
+ Fraud: Fraud.address,
151
+ MovingFunds: MovingFunds.address,
152
+ },
153
+ _f),
154
+ _e.proxyOpts = {
155
+ kind: "transparent",
156
+ // Allow external libraries linking. We need to ensure manually that the
157
+ // external libraries we link are upgrade safe, as the OpenZeppelin plugin
158
+ // doesn't perform such a validation yet.
159
+ // See: https://docs.openzeppelin.com/upgrades-plugins/1.x/faq#why-cant-i-use-external-libraries
160
+ unsafeAllow: ["external-library-linking"],
161
+ // Use call option to invoke the reinitializer instead of the original initializer
162
+ call: {
163
+ fn: "initializeV2_FixVaultZeroDeposit",
164
+ args: [],
165
+ },
166
+ },
167
+ _e)]))];
168
+ case 10:
169
+ _a = __read.apply(void 0, [_g.sent(), 2]), bridge = _a[0], proxyDeployment = _a[1];
170
+ log("\nUpgrade completed!");
171
+ log(" New implementation deployed");
172
+ log(" Bridge proxy: ".concat(proxyDeployment.address));
173
+ log(" Bridge instance: ".concat(bridge.address));
174
+ if (!hre.network.tags.etherscan) return [3 /*break*/, 12];
175
+ log("\nVerifying on Etherscan...");
176
+ return [4 /*yield*/, hre.run("verify", {
177
+ address: proxyDeployment.address,
178
+ constructorArgsParams: proxyDeployment.args,
179
+ })];
180
+ case 11:
181
+ _g.sent();
182
+ _g.label = 12;
183
+ case 12:
184
+ if (!hre.network.tags.tenderly) return [3 /*break*/, 14];
185
+ log("\nVerifying on Tenderly...");
186
+ return [4 /*yield*/, hre.tenderly.verify({
187
+ name: "Bridge",
188
+ address: bridge.address,
189
+ })];
190
+ case 13:
191
+ _g.sent();
192
+ _g.label = 14;
193
+ case 14:
194
+ log("\n".concat("=".repeat(80)));
195
+ log("Upgrade complete. Verify the deposit vault was fixed:");
196
+ log("=".repeat(80));
197
+ log("\nPost-upgrade verification commands:\n\n1. Check new implementation:\n cast call ".concat(bridgeDeployment.address, " \"implementation()\" --rpc-url <RPC_URL>\n\n2. Verify deposit vault was fixed (should return TBTCVault address):\n cast call ").concat(bridgeDeployment.address, " \\\n \"deposits(uint256)(address,uint64,uint32,address,uint64,uint32,bytes32)\" \\\n 0xf3bc9cd6f46f4c206bc8711e40bb5692e8fe5f0ac4d4da0a709dc71bb751c98a \\\n --rpc-url <RPC_URL>\n\n3. Expected vault value after fix:\n - Mainnet TBTCVault: 0x9C070027cdC9dc8F82416B2e5314E11DFb4FE3CD\n - Sepolia TBTCVault: Check deployments/sepolia/TBTCVault.json\n\n4. Check for DepositVaultFixed event in the upgrade transaction\n"));
198
+ return [2 /*return*/];
199
+ }
200
+ });
201
+ });
202
+ };
203
+ exports.default = func;
204
+ func.tags = ["UpgradeBridgeVaultFix"];
205
+ func.dependencies = ["Bridge"];
206
+ // IMPORTANT: Set to false when ready to deploy
207
+ // When running the upgrade, set this to false and run:
208
+ // yarn deploy --tags UpgradeBridgeVaultFix --network <NETWORK>
209
+ func.skip = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
210
+ return [2 /*return*/, true];
211
+ }); }); };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });