@keep-network/tbtc-v2 0.1.1-dev.44 → 0.1.1-dev.47
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.
- package/artifacts/Bank.json +11 -11
- package/artifacts/Bridge.json +183 -151
- package/artifacts/Deposit.json +9 -9
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/Fraud.json +7 -7
- package/artifacts/KeepRegistry.json +1 -1
- package/artifacts/KeepStake.json +2 -2
- package/artifacts/KeepToken.json +2 -2
- package/artifacts/KeepTokenStaking.json +1 -1
- package/artifacts/MovingFunds.json +7 -7
- package/artifacts/NuCypherStakingEscrow.json +1 -1
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeaconStub.json +1 -1
- package/artifacts/Redemption.json +7 -7
- package/artifacts/ReimbursementPool.json +2 -2
- package/artifacts/Relay.json +11 -11
- package/artifacts/SortitionPool.json +2 -2
- package/artifacts/Sweep.json +9 -9
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +13 -13
- package/artifacts/TBTCToken.json +13 -13
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +14 -14
- package/artifacts/VendingMachineKeep.json +1 -1
- package/artifacts/VendingMachineNuCypher.json +1 -1
- package/artifacts/WalletRegistry.json +2 -2
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +7 -7
- package/artifacts/solcInputs/{bbe44823ec28554a9429cce5cafee035.json → d31b3d6fef87d6f4300c2a5aea432ae5.json} +6 -3
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.dbg.json +1 -1
- package/build/contracts/bridge/BitcoinTx.sol/BitcoinTx.json +2 -2
- package/build/contracts/bridge/Bridge.sol/Bridge.dbg.json +1 -1
- package/build/contracts/bridge/Bridge.sol/Bridge.json +89 -67
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +8 -2
- package/build/contracts/bridge/Deposit.sol/Deposit.dbg.json +1 -1
- package/build/contracts/bridge/Deposit.sol/Deposit.json +2 -2
- package/build/contracts/bridge/EcdsaLib.sol/EcdsaLib.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.dbg.json +1 -1
- package/build/contracts/bridge/Fraud.sol/Fraud.json +2 -2
- package/build/contracts/bridge/IRelay.sol/IRelay.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.dbg.json +1 -1
- package/build/contracts/bridge/MovingFunds.sol/MovingFunds.json +2 -2
- package/build/contracts/bridge/Redemption.sol/OutboundTx.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/OutboundTx.json +2 -2
- package/build/contracts/bridge/Redemption.sol/Redemption.dbg.json +1 -1
- package/build/contracts/bridge/Redemption.sol/Redemption.json +2 -2
- package/build/contracts/bridge/Sweep.sol/Sweep.dbg.json +1 -1
- package/build/contracts/bridge/Sweep.sol/Sweep.json +2 -2
- package/build/contracts/bridge/VendingMachine.sol/VendingMachine.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.dbg.json +1 -1
- package/build/contracts/bridge/Wallets.sol/Wallets.json +2 -2
- package/build/contracts/token/TBTC.sol/TBTC.dbg.json +1 -1
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/bridge/Bridge.sol +54 -12
- package/contracts/bridge/BridgeState.sol +54 -4
- package/contracts/bridge/Wallets.sol +28 -5
- package/deploy/07_transfer_ownership.ts +1 -3
- package/deploy/08_transfer_governance.ts +20 -0
- package/export.json +57 -35
- package/package.json +1 -1
|
@@ -105,8 +105,8 @@
|
|
|
105
105
|
"type": "event"
|
|
106
106
|
}
|
|
107
107
|
],
|
|
108
|
-
"bytecode": "
|
|
109
|
-
"deployedBytecode": "
|
|
108
|
+
"bytecode": "0x610fb261003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d56565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610da0565b610305565b8180156100a957600080fd5b5061007b6100b8366004610df1565b610526565b8180156100c957600080fd5b5061007b6100d8366004610e1d565b61064c565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d848461094b565b6109f5565b6bffffffffffffffffffffffff198116600090815260168701602052604081209192506002820154600160a01b900460ff1660058111156101a5576101a5610e4a565b146102185760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160a01b63ffffffff42811668010000000000000000027fffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff90931692909217811790925560148881018054606087901c73ffffffffffffffffffffffffffffffffffffffff19909116178082559390930490911691906102a183610e76565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b601483015460601b6bffffffffffffffffffffffff1990811690831614156103955760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6bffffffffffffffffffffffff1982166000908152601684016020526040902060016002820154600160a01b900460ff1660058111156103d7576103d7610e4a565b1461042f5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601384015460028201546000916104639163ffffffff600160a01b9092048216916801000000000000000090910416610e9a565b63ffffffff16421015905080806104a357506013850154640100000000900467ffffffffffffffff16610497868686610a1c565b67ffffffffffffffff16105b6105155760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b61051f8585610b54565b5050505050565b60028301546001600160a01b031633146105925760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b60006105a161015d848461094b565b905060016bffffffffffffffffffffffff1982166000908152601686016020526040902060020154600160a01b900460ff1660058111156105e4576105e4610e4a565b1461063c5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106468482610b54565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610ec2565b60038111156106f5576106f5610e4a565b146107685760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601482015460601b6bffffffffffffffffffffffff198116156108b3576000610792848385610a1c565b6bffffffffffffffffffffffff1983166000908152601686016020526040812060020154601387015492935063ffffffff680100000000000000009091048116926107de911683610e9a565b63ffffffff1642101590508080156108105750601386015467ffffffffffffffff640100000000909104811690841610155b8061083d5750601386015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108af5760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b50505050505050565b6060600061095a600284610eea565b61098557507f02000000000000000000000000000000000000000000000000000000000000006109a8565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff19821660009081526016840160205260408120600101548015610b4c57808335610a596040860160208701610f0c565b610a696060870160408801610f32565b604051602001610ad69392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610b395760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610b496060840160408501610f32565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260168301602052604090206001810154610b8c57610b878383610ca8565b610c24565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffff909116177402000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601483015460601b6bffffffffffffffffffffffff199081169083161415610c665760148301805473ffffffffffffffffffffffffffffffffffffffff191690555b60148381018054600160a01b900463ffffffff1691610c8483610f5c565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6bffffffffffffffffffffffff198116600081815260168401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff9091161774030000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b60008060008060808587031215610d6c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d9a57600080fd5b50919050565b600080600060a08486031215610db557600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610dd957600080fd5b9150610de88560408601610d88565b90509250925092565b600080600060608486031215610e0657600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3057600080fd5b82359150610e418460208501610d88565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415610e9057610e90610e60565b6001019392505050565b600063ffffffff808316818516808303821115610eb957610eb9610e60565b01949350505050565b600060208284031215610ed457600080fd5b815160048110610ee357600080fd5b9392505050565b600082610f0757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610f1e57600080fd5b813563ffffffff81168114610ee357600080fd5b600060208284031215610f4457600080fd5b813567ffffffffffffffff81168114610ee357600080fd5b600063ffffffff821680610f7257610f72610e60565b600019019291505056fea264697066735822122017aeeb2a3ab4dc17f34c716ba3f7077d4cd4f099d76fb527459453add3950cfa64736f6c63430008090033",
|
|
109
|
+
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634afbe4c91461005b57806399b0b8471461007d578063c87de7f41461009d578063d079fbb1146100bd575b600080fd5b81801561006757600080fd5b5061007b610076366004610d56565b6100dd565b005b81801561008957600080fd5b5061007b610098366004610da0565b610305565b8180156100a957600080fd5b5061007b6100b8366004610df1565b610526565b8180156100c957600080fd5b5061007b6100d8366004610e1d565b61064c565b60028401546001600160a01b0316331461014e5760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b60648201526084015b60405180910390fd5b600061016261015d848461094b565b6109f5565b6bffffffffffffffffffffffff198116600090815260168701602052604081209192506002820154600160a01b900460ff1660058111156101a5576101a5610e4a565b146102185760405162461bcd60e51b815260206004820152602860248201527f45434453412077616c6c657420686173206265656e20616c726561647920726560448201527f67697374657265640000000000000000000000000000000000000000000000006064820152608401610145565b848155600281018054600160a01b63ffffffff42811668010000000000000000027fffffffffffffffffffffff00ffffffffffffffff00000000ffffffffffffffff90931692909217811790925560148881018054606087901c73ffffffffffffffffffffffffffffffffffffffff19909116178082559390930490911691906102a183610e76565b91906101000a81548163ffffffff021916908363ffffffff16021790555050816bffffffffffffffffffffffff1916857f2dbb47dce81d6b11cca1f1e3b10143d6f7e1e7e92d2dd9aacbb1f875379d308e60405160405180910390a3505050505050565b601483015460601b6bffffffffffffffffffffffff1990811690831614156103955760405162461bcd60e51b815260206004820152602c60248201527f4163746976652077616c6c65742063616e6e6f7420626520636f6e736964657260448201527f656420636c6f736561626c6500000000000000000000000000000000000000006064820152608401610145565b6bffffffffffffffffffffffff1982166000908152601684016020526040902060016002820154600160a01b900460ff1660058111156103d7576103d7610e4a565b1461042f5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b601384015460028201546000916104639163ffffffff600160a01b9092048216916801000000000000000090910416610e9a565b63ffffffff16421015905080806104a357506013850154640100000000900467ffffffffffffffff16610497868686610a1c565b67ffffffffffffffff16105b6105155760405162461bcd60e51b815260206004820152603660248201527f57616c6c6574206e6565647320746f206265206f6c6420656e6f756768206f7260448201527f206861766520746f6f20666577207361746f73686973000000000000000000006064820152608401610145565b61051f8585610b54565b5050505050565b60028301546001600160a01b031633146105925760405162461bcd60e51b815260206004820152602760248201527f43616c6c6572206973206e6f74207468652045434453412057616c6c657420526044820152666567697374727960c81b6064820152608401610145565b60006105a161015d848461094b565b905060016bffffffffffffffffffffffff1982166000908152601686016020526040902060020154600160a01b900460ff1660058111156105e4576105e4610e4a565b1461063c5760405162461bcd60e51b815260206004820152602260248201527f45434453412077616c6c6574206d75737420626520696e204c69766520737461604482015261746560f01b6064820152608401610145565b6106468482610b54565b50505050565b6002820154604080517fcc56238800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163cc562388916004808301926020929190829003018186803b1580156106ac57600080fd5b505afa1580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190610ec2565b60038111156106f5576106f5610e4a565b146107685760405162461bcd60e51b815260206004820152602360248201527f57616c6c6574206372656174696f6e20616c726561647920696e2070726f677260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610145565b601482015460601b6bffffffffffffffffffffffff198116156108b3576000610792848385610a1c565b6bffffffffffffffffffffffff1983166000908152601686016020526040812060020154601387015492935063ffffffff680100000000000000009091048116926107de911683610e9a565b63ffffffff1642101590508080156108105750601386015467ffffffffffffffff640100000000909104811690841610155b8061083d5750601386015467ffffffffffffffff6c01000000000000000000000000909104811690841610155b6108af5760405162461bcd60e51b815260206004820152602660248201527f57616c6c6574206372656174696f6e20636f6e646974696f6e7320617265206e60448201527f6f74206d657400000000000000000000000000000000000000000000000000006064820152608401610145565b5050505b6040517f31fecb80caf1e1128496dd5a6f1083ba29fd5fe64c3fe04e2d1b6f9cfc27d5a390600090a18260020160009054906101000a90046001600160a01b03166001600160a01b03166372cc8c6d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561092e57600080fd5b505af1158015610942573d6000803e3d6000fd5b50505050505050565b6060600061095a600284610eea565b61098557507f02000000000000000000000000000000000000000000000000000000000000006109a8565b507f03000000000000000000000000000000000000000000000000000000000000005b6040517fff00000000000000000000000000000000000000000000000000000000000000821660208201526021810185905260410160405160208183030381529060405291505092915050565b60006020600083516020850160025afa50602060006020600060035afa5050600c51919050565b6bffffffffffffffffffffffff19821660009081526016840160205260408120600101548015610b4c57808335610a596040860160208701610f0c565b610a696060870160408801610f32565b604051602001610ad69392919092835260e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016602083015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166024820152602c0190565b6040516020818303038152906040528051906020012014610b395760405162461bcd60e51b815260206004820152601d60248201527f496e76616c69642077616c6c6574206d61696e205554584f20646174610000006044820152606401610145565b610b496060840160408501610f32565b91505b509392505050565b6bffffffffffffffffffffffff198116600090815260168301602052604090206001810154610b8c57610b878383610ca8565b610c24565b60028101805463ffffffff42166c01000000000000000000000000027fffffffffffffffffffffff00ffffffff00000000ffffffffffffffffffffffff909116177402000000000000000000000000000000000000000017905580546040516bffffffffffffffffffffffff19841691907fbdc9ce990a067e5fd3a5d8dfc68e27e9f221aaa3fe55265e0b7e93c460b3efe290600090a35b601483015460601b6bffffffffffffffffffffffff199081169083161415610c665760148301805473ffffffffffffffffffffffffffffffffffffffff191690555b60148381018054600160a01b900463ffffffff1691610c8483610f5c565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6bffffffffffffffffffffffff198116600081815260168401602052604080822060028101805463ffffffff4216700100000000000000000000000000000000027fffffffffffffffffffffff0000000000ffffffffffffffffffffffffffffffff9091161774030000000000000000000000000000000000000000179055805491519093927f68cb496f5e64383745876664ef119840f154a729c03ba866b8aecb5c9f53d51691a3505050565b60008060008060808587031215610d6c57600080fd5b5050823594602084013594506040840135936060013592509050565b600060608284031215610d9a57600080fd5b50919050565b600080600060a08486031215610db557600080fd5b8335925060208401356bffffffffffffffffffffffff1981168114610dd957600080fd5b9150610de88560408601610d88565b90509250925092565b600080600060608486031215610e0657600080fd5b505081359360208301359350604090920135919050565b60008060808385031215610e3057600080fd5b82359150610e418460208501610d88565b90509250929050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff80831681811415610e9057610e90610e60565b6001019392505050565b600063ffffffff808316818516808303821115610eb957610eb9610e60565b01949350505050565b600060208284031215610ed457600080fd5b815160048110610ee357600080fd5b9392505050565b600082610f0757634e487b7160e01b600052601260045260246000fd5b500690565b600060208284031215610f1e57600080fd5b813563ffffffff81168114610ee357600080fd5b600060208284031215610f4457600080fd5b813567ffffffffffffffff81168114610ee357600080fd5b600063ffffffff821680610f7257610f72610e60565b600019019291505056fea264697066735822122017aeeb2a3ab4dc17f34c716ba3f7077d4cd4f099d76fb527459453add3950cfa64736f6c63430008090033",
|
|
110
110
|
"linkReferences": {},
|
|
111
111
|
"deployedLinkReferences": {}
|
|
112
112
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
pragma solidity ^0.8.9;
|
|
17
17
|
|
|
18
|
-
import "@
|
|
18
|
+
import "@keep-network/random-beacon/contracts/Governable.sol";
|
|
19
19
|
|
|
20
20
|
import {IWalletOwner as EcdsaWalletOwner} from "@keep-network/ecdsa/contracts/api/IWalletOwner.sol";
|
|
21
21
|
|
|
@@ -57,7 +57,7 @@ import "../bank/Bank.sol";
|
|
|
57
57
|
/// TODO: Revisit all events and look which parameters should be indexed.
|
|
58
58
|
/// TODO: Align the convention around `param` and `dev` endings. They should
|
|
59
59
|
/// not have a punctuation mark.
|
|
60
|
-
contract Bridge is
|
|
60
|
+
contract Bridge is Governable, EcdsaWalletOwner {
|
|
61
61
|
using BridgeState for BridgeState.Storage;
|
|
62
62
|
using Deposit for BridgeState.Storage;
|
|
63
63
|
using Sweep for BridgeState.Storage;
|
|
@@ -181,7 +181,8 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
181
181
|
uint64 walletMinBtcBalance,
|
|
182
182
|
uint64 walletMaxBtcBalance,
|
|
183
183
|
uint32 walletMaxAge,
|
|
184
|
-
uint64 walletMaxBtcTransfer
|
|
184
|
+
uint64 walletMaxBtcTransfer,
|
|
185
|
+
uint32 walletClosingPeriod
|
|
185
186
|
);
|
|
186
187
|
|
|
187
188
|
event FraudParametersUpdated(
|
|
@@ -234,6 +235,9 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
234
235
|
self.walletMaxBtcBalance = 10e8; // 10 BTC
|
|
235
236
|
self.walletMaxAge = 26 weeks; // ~6 months
|
|
236
237
|
self.walletMaxBtcTransfer = 10e8; // 10 BTC
|
|
238
|
+
self.walletClosingPeriod = 40 days;
|
|
239
|
+
|
|
240
|
+
_transferGovernance(msg.sender);
|
|
237
241
|
}
|
|
238
242
|
|
|
239
243
|
/// @notice Used by the depositor to reveal information about their P2(W)SH
|
|
@@ -656,6 +660,19 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
656
660
|
self.notifyCloseableWallet(walletPubKeyHash, walletMainUtxo);
|
|
657
661
|
}
|
|
658
662
|
|
|
663
|
+
/// @notice Notifies about the end of the closing period for the given wallet.
|
|
664
|
+
/// Closes the wallet ultimately and notifies the ECDSA registry
|
|
665
|
+
/// about this fact.
|
|
666
|
+
/// @param walletPubKeyHash 20-byte public key hash of the wallet
|
|
667
|
+
/// @dev Requirements:
|
|
668
|
+
/// - The wallet must be in the Closing state
|
|
669
|
+
/// - The wallet closing period must have elapsed
|
|
670
|
+
function notifyWalletClosingPeriodElapsed(bytes20 walletPubKeyHash)
|
|
671
|
+
external
|
|
672
|
+
{
|
|
673
|
+
self.notifyWalletClosingPeriodElapsed(walletPubKeyHash);
|
|
674
|
+
}
|
|
675
|
+
|
|
659
676
|
/// @notice Submits a fraud challenge indicating that a UTXO being under
|
|
660
677
|
/// wallet control was unlocked by the wallet but was not used
|
|
661
678
|
/// according to the protocol rules. That means the wallet signed
|
|
@@ -775,7 +792,10 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
775
792
|
/// @param vault The address of the vault
|
|
776
793
|
/// @param isTrusted flag indicating whether the vault is trusted or not
|
|
777
794
|
/// @dev Can only be called by the Governance.
|
|
778
|
-
function setVaultStatus(address vault, bool isTrusted)
|
|
795
|
+
function setVaultStatus(address vault, bool isTrusted)
|
|
796
|
+
external
|
|
797
|
+
onlyGovernance
|
|
798
|
+
{
|
|
779
799
|
self.isVaultTrusted[vault] = isTrusted;
|
|
780
800
|
emit VaultStatusUpdated(vault, isTrusted);
|
|
781
801
|
}
|
|
@@ -801,12 +821,14 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
801
821
|
/// transaction. If the maximum BTC transaction fee is exceeded,
|
|
802
822
|
/// such transaction is considered a fraud
|
|
803
823
|
/// @dev Requirements:
|
|
824
|
+
/// - Deposit dust threshold must be greater than zero
|
|
804
825
|
/// - Deposit treasury fee divisor must be greater than zero
|
|
826
|
+
/// - Deposit transaction max fee must be greater than zero
|
|
805
827
|
function updateDepositParameters(
|
|
806
828
|
uint64 depositDustThreshold,
|
|
807
829
|
uint64 depositTreasuryFeeDivisor,
|
|
808
830
|
uint64 depositTxMaxFee
|
|
809
|
-
) external
|
|
831
|
+
) external onlyGovernance {
|
|
810
832
|
self.updateDepositParameters(
|
|
811
833
|
depositDustThreshold,
|
|
812
834
|
depositTreasuryFeeDivisor,
|
|
@@ -836,6 +858,8 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
836
858
|
/// that can be incurred by each redemption request being part of the
|
|
837
859
|
/// given redemption transaction. If the maximum BTC transaction fee
|
|
838
860
|
/// is exceeded, such transaction is considered a fraud.
|
|
861
|
+
/// This is a per-redemption output max fee for the redemption
|
|
862
|
+
/// transaction.
|
|
839
863
|
/// @param redemptionTimeout New value of the redemption timeout in seconds.
|
|
840
864
|
/// It is the time after which the redemption request can be reported
|
|
841
865
|
/// as timed out. It is counted from the moment when the redemption
|
|
@@ -843,14 +867,16 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
843
867
|
/// out requests are cancelled and locked TBTC is returned to the
|
|
844
868
|
/// redeemer in full amount.
|
|
845
869
|
/// @dev Requirements:
|
|
870
|
+
/// - Redemption dust threshold must be greater than zero
|
|
846
871
|
/// - Redemption treasury fee divisor must be greater than zero
|
|
872
|
+
/// - Redemption transaction max fee must be greater than zero
|
|
847
873
|
/// - Redemption timeout must be greater than zero
|
|
848
874
|
function updateRedemptionParameters(
|
|
849
875
|
uint64 redemptionDustThreshold,
|
|
850
876
|
uint64 redemptionTreasuryFeeDivisor,
|
|
851
877
|
uint64 redemptionTxMaxFee,
|
|
852
878
|
uint256 redemptionTimeout
|
|
853
|
-
) external
|
|
879
|
+
) external onlyGovernance {
|
|
854
880
|
self.updateRedemptionParameters(
|
|
855
881
|
redemptionDustThreshold,
|
|
856
882
|
redemptionTreasuryFeeDivisor,
|
|
@@ -871,11 +897,12 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
871
897
|
/// wallet was requested to move their funds and switched to the
|
|
872
898
|
/// MovingFunds state.
|
|
873
899
|
/// @dev Requirements:
|
|
900
|
+
/// - Moving funds transaction max total fee must be greater than zero
|
|
874
901
|
/// - Moving funds timeout must be greater than zero
|
|
875
902
|
function updateMovingFundsParameters(
|
|
876
903
|
uint64 movingFundsTxMaxTotalFee,
|
|
877
904
|
uint32 movingFundsTimeout
|
|
878
|
-
) external
|
|
905
|
+
) external onlyGovernance {
|
|
879
906
|
self.updateMovingFundsParameters(
|
|
880
907
|
movingFundsTxMaxTotalFee,
|
|
881
908
|
movingFundsTimeout
|
|
@@ -896,24 +923,31 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
896
923
|
/// @param walletMaxBtcTransfer New value of the wallet maximum BTC transfer
|
|
897
924
|
/// in satoshi, determines the maximum amount that can be transferred
|
|
898
925
|
// to a single target wallet during the moving funds process
|
|
926
|
+
/// @param walletClosingPeriod New value of the wallet closing period in
|
|
927
|
+
/// seconds, determines the length of the wallet closing period,
|
|
928
|
+
// i.e. the period when the wallet remains in the Closing state
|
|
929
|
+
// and can be subject of deposit fraud challenges
|
|
899
930
|
/// @dev Requirements:
|
|
900
931
|
/// - Wallet minimum BTC balance must be greater than zero
|
|
901
932
|
/// - Wallet maximum BTC balance must be greater than the wallet
|
|
902
933
|
/// minimum BTC balance
|
|
903
934
|
/// - Wallet maximum BTC transfer must be greater than zero
|
|
935
|
+
/// - Wallet closing period must be greater than zero
|
|
904
936
|
function updateWalletParameters(
|
|
905
937
|
uint32 walletCreationPeriod,
|
|
906
938
|
uint64 walletMinBtcBalance,
|
|
907
939
|
uint64 walletMaxBtcBalance,
|
|
908
940
|
uint32 walletMaxAge,
|
|
909
|
-
uint64 walletMaxBtcTransfer
|
|
910
|
-
|
|
941
|
+
uint64 walletMaxBtcTransfer,
|
|
942
|
+
uint32 walletClosingPeriod
|
|
943
|
+
) external onlyGovernance {
|
|
911
944
|
self.updateWalletParameters(
|
|
912
945
|
walletCreationPeriod,
|
|
913
946
|
walletMinBtcBalance,
|
|
914
947
|
walletMaxBtcBalance,
|
|
915
948
|
walletMaxAge,
|
|
916
|
-
walletMaxBtcTransfer
|
|
949
|
+
walletMaxBtcTransfer,
|
|
950
|
+
walletClosingPeriod
|
|
917
951
|
);
|
|
918
952
|
}
|
|
919
953
|
|
|
@@ -939,7 +973,7 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
939
973
|
uint256 fraudNotifierRewardMultiplier,
|
|
940
974
|
uint256 fraudChallengeDefeatTimeout,
|
|
941
975
|
uint256 fraudChallengeDepositAmount
|
|
942
|
-
) external
|
|
976
|
+
) external onlyGovernance {
|
|
943
977
|
self.updateFraudParameters(
|
|
944
978
|
fraudSlashingAmount,
|
|
945
979
|
fraudNotifierRewardMultiplier,
|
|
@@ -1111,6 +1145,8 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
1111
1145
|
/// can be incurred by each redemption request being part of the
|
|
1112
1146
|
/// given redemption transaction. If the maximum BTC transaction
|
|
1113
1147
|
/// fee is exceeded, such transaction is considered a fraud.
|
|
1148
|
+
/// This is a per-redemption output max fee for the redemption
|
|
1149
|
+
/// transaction.
|
|
1114
1150
|
/// @return redemptionTimeout Time after which the redemption request can be
|
|
1115
1151
|
/// reported as timed out. It is counted from the moment when the
|
|
1116
1152
|
/// redemption request was created via `requestRedemption` call.
|
|
@@ -1162,6 +1198,10 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
1162
1198
|
/// @return walletMaxBtcTransfer The maximum BTC amount in satoshi than
|
|
1163
1199
|
/// can be transferred to a single target wallet during the moving
|
|
1164
1200
|
/// funds process.
|
|
1201
|
+
/// @return walletClosingPeriod Determines the length of the wallet closing
|
|
1202
|
+
/// period, i.e. the period when the wallet remains in the Closing
|
|
1203
|
+
/// state and can be subject of deposit fraud challenges. Value
|
|
1204
|
+
/// in seconds.
|
|
1165
1205
|
function walletParameters()
|
|
1166
1206
|
external
|
|
1167
1207
|
view
|
|
@@ -1170,7 +1210,8 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
1170
1210
|
uint64 walletMinBtcBalance,
|
|
1171
1211
|
uint64 walletMaxBtcBalance,
|
|
1172
1212
|
uint32 walletMaxAge,
|
|
1173
|
-
uint64 walletMaxBtcTransfer
|
|
1213
|
+
uint64 walletMaxBtcTransfer,
|
|
1214
|
+
uint32 walletClosingPeriod
|
|
1174
1215
|
)
|
|
1175
1216
|
{
|
|
1176
1217
|
walletCreationPeriod = self.walletCreationPeriod;
|
|
@@ -1178,6 +1219,7 @@ contract Bridge is Ownable, EcdsaWalletOwner {
|
|
|
1178
1219
|
walletMaxBtcBalance = self.walletMaxBtcBalance;
|
|
1179
1220
|
walletMaxAge = self.walletMaxAge;
|
|
1180
1221
|
walletMaxBtcTransfer = self.walletMaxBtcTransfer;
|
|
1222
|
+
walletClosingPeriod = self.walletClosingPeriod;
|
|
1181
1223
|
}
|
|
1182
1224
|
|
|
1183
1225
|
/// @notice Returns the current values of Bridge fraud parameters.
|
|
@@ -186,6 +186,11 @@ library BridgeState {
|
|
|
186
186
|
// The maximum BTC amount in satoshi than can be transferred to a single
|
|
187
187
|
// target wallet during the moving funds process.
|
|
188
188
|
uint64 walletMaxBtcTransfer;
|
|
189
|
+
// Determines the length of the wallet closing period, i.e. the period
|
|
190
|
+
// when the wallet remains in the Closing state and can be subject
|
|
191
|
+
// of deposit fraud challenges. This value is in seconds and should be
|
|
192
|
+
// greater than the deposit refund time plus some time margin.
|
|
193
|
+
uint32 walletClosingPeriod;
|
|
189
194
|
// Maps the 20-byte wallet public key hash (computed using Bitcoin
|
|
190
195
|
// HASH160 over the compressed ECDSA public key) to the basic wallet
|
|
191
196
|
// information like state and pending redemptions value.
|
|
@@ -215,7 +220,8 @@ library BridgeState {
|
|
|
215
220
|
uint64 walletMinBtcBalance,
|
|
216
221
|
uint64 walletMaxBtcBalance,
|
|
217
222
|
uint32 walletMaxAge,
|
|
218
|
-
uint64 walletMaxBtcTransfer
|
|
223
|
+
uint64 walletMaxBtcTransfer,
|
|
224
|
+
uint32 walletClosingPeriod
|
|
219
225
|
);
|
|
220
226
|
|
|
221
227
|
event FraudParametersUpdated(
|
|
@@ -246,18 +252,30 @@ library BridgeState {
|
|
|
246
252
|
/// transaction. If the maximum BTC transaction fee is exceeded,
|
|
247
253
|
/// such transaction is considered a fraud
|
|
248
254
|
/// @dev Requirements:
|
|
255
|
+
/// - Deposit dust threshold must be greater than zero
|
|
249
256
|
/// - Deposit treasury fee divisor must be greater than zero
|
|
257
|
+
/// - Deposit transaction max fee must be greater than zero
|
|
250
258
|
function updateDepositParameters(
|
|
251
259
|
Storage storage self,
|
|
252
260
|
uint64 _depositDustThreshold,
|
|
253
261
|
uint64 _depositTreasuryFeeDivisor,
|
|
254
262
|
uint64 _depositTxMaxFee
|
|
255
263
|
) internal {
|
|
264
|
+
require(
|
|
265
|
+
_depositDustThreshold > 0,
|
|
266
|
+
"Deposit dust threshold must be greater than zero"
|
|
267
|
+
);
|
|
268
|
+
|
|
256
269
|
require(
|
|
257
270
|
_depositTreasuryFeeDivisor > 0,
|
|
258
271
|
"Deposit treasury fee divisor must be greater than zero"
|
|
259
272
|
);
|
|
260
273
|
|
|
274
|
+
require(
|
|
275
|
+
_depositTxMaxFee > 0,
|
|
276
|
+
"Deposit transaction max fee must be greater than zero"
|
|
277
|
+
);
|
|
278
|
+
|
|
261
279
|
self.depositDustThreshold = _depositDustThreshold;
|
|
262
280
|
self.depositTreasuryFeeDivisor = _depositTreasuryFeeDivisor;
|
|
263
281
|
self.depositTxMaxFee = _depositTxMaxFee;
|
|
@@ -291,6 +309,8 @@ library BridgeState {
|
|
|
291
309
|
/// that can be incurred by each redemption request being part of the
|
|
292
310
|
/// given redemption transaction. If the maximum BTC transaction fee
|
|
293
311
|
/// is exceeded, such transaction is considered a fraud.
|
|
312
|
+
/// This is a per-redemption output max fee for the redemption
|
|
313
|
+
/// transaction.
|
|
294
314
|
/// @param _redemptionTimeout New value of the redemption timeout in seconds.
|
|
295
315
|
/// It is the time after which the redemption request can be reported
|
|
296
316
|
/// as timed out. It is counted from the moment when the redemption
|
|
@@ -298,7 +318,9 @@ library BridgeState {
|
|
|
298
318
|
/// out requests are cancelled and locked TBTC is returned to the
|
|
299
319
|
/// redeemer in full amount.
|
|
300
320
|
/// @dev Requirements:
|
|
321
|
+
/// - Redemption dust threshold must be greater than zero
|
|
301
322
|
/// - Redemption treasury fee divisor must be greater than zero
|
|
323
|
+
/// - Redemption transaction max fee must be greater than zero
|
|
302
324
|
/// - Redemption timeout must be greater than zero
|
|
303
325
|
function updateRedemptionParameters(
|
|
304
326
|
Storage storage self,
|
|
@@ -307,11 +329,21 @@ library BridgeState {
|
|
|
307
329
|
uint64 _redemptionTxMaxFee,
|
|
308
330
|
uint256 _redemptionTimeout
|
|
309
331
|
) internal {
|
|
332
|
+
require(
|
|
333
|
+
_redemptionDustThreshold > 0,
|
|
334
|
+
"Redemption dust threshold must be greater than zero"
|
|
335
|
+
);
|
|
336
|
+
|
|
310
337
|
require(
|
|
311
338
|
_redemptionTreasuryFeeDivisor > 0,
|
|
312
339
|
"Redemption treasury fee divisor must be greater than zero"
|
|
313
340
|
);
|
|
314
341
|
|
|
342
|
+
require(
|
|
343
|
+
_redemptionTxMaxFee > 0,
|
|
344
|
+
"Redemption transaction max fee must be greater than zero"
|
|
345
|
+
);
|
|
346
|
+
|
|
315
347
|
require(
|
|
316
348
|
_redemptionTimeout > 0,
|
|
317
349
|
"Redemption timeout must be greater than zero"
|
|
@@ -342,12 +374,18 @@ library BridgeState {
|
|
|
342
374
|
/// wallet was requested to move their funds and switched to the
|
|
343
375
|
/// MovingFunds state.
|
|
344
376
|
/// @dev Requirements:
|
|
377
|
+
/// - Moving funds transaction max total fee must be greater than zero
|
|
345
378
|
/// - Moving funds timeout must be greater than zero
|
|
346
379
|
function updateMovingFundsParameters(
|
|
347
380
|
Storage storage self,
|
|
348
381
|
uint64 _movingFundsTxMaxTotalFee,
|
|
349
382
|
uint32 _movingFundsTimeout
|
|
350
383
|
) internal {
|
|
384
|
+
require(
|
|
385
|
+
_movingFundsTxMaxTotalFee > 0,
|
|
386
|
+
"Moving funds transaction max total fee must be greater than zero"
|
|
387
|
+
);
|
|
388
|
+
|
|
351
389
|
require(
|
|
352
390
|
_movingFundsTimeout > 0,
|
|
353
391
|
"Moving funds timeout must be greater than zero"
|
|
@@ -375,19 +413,25 @@ library BridgeState {
|
|
|
375
413
|
/// the wallet moving funds process can be requested
|
|
376
414
|
/// @param _walletMaxBtcTransfer New value of the wallet maximum BTC transfer
|
|
377
415
|
/// in satoshi, determines the maximum amount that can be transferred
|
|
378
|
-
|
|
416
|
+
/// to a single target wallet during the moving funds process
|
|
417
|
+
/// @param _walletClosingPeriod New value of the wallet closing period in
|
|
418
|
+
/// seconds, determines the length of the wallet closing period,
|
|
419
|
+
// i.e. the period when the wallet remains in the Closing state
|
|
420
|
+
// and can be subject of deposit fraud challenges
|
|
379
421
|
/// @dev Requirements:
|
|
380
422
|
/// - Wallet minimum BTC balance must be greater than zero
|
|
381
423
|
/// - Wallet maximum BTC balance must be greater than the wallet
|
|
382
424
|
/// minimum BTC balance
|
|
383
425
|
/// - Wallet maximum BTC transfer must be greater than zero
|
|
426
|
+
/// - Wallet closing period must be greater than zero
|
|
384
427
|
function updateWalletParameters(
|
|
385
428
|
Storage storage self,
|
|
386
429
|
uint32 _walletCreationPeriod,
|
|
387
430
|
uint64 _walletMinBtcBalance,
|
|
388
431
|
uint64 _walletMaxBtcBalance,
|
|
389
432
|
uint32 _walletMaxAge,
|
|
390
|
-
uint64 _walletMaxBtcTransfer
|
|
433
|
+
uint64 _walletMaxBtcTransfer,
|
|
434
|
+
uint32 _walletClosingPeriod
|
|
391
435
|
) internal {
|
|
392
436
|
require(
|
|
393
437
|
_walletMinBtcBalance > 0,
|
|
@@ -401,19 +445,25 @@ library BridgeState {
|
|
|
401
445
|
_walletMaxBtcTransfer > 0,
|
|
402
446
|
"Wallet maximum BTC transfer must be greater than zero"
|
|
403
447
|
);
|
|
448
|
+
require(
|
|
449
|
+
_walletClosingPeriod > 0,
|
|
450
|
+
"Wallet closing period must be greater than zero"
|
|
451
|
+
);
|
|
404
452
|
|
|
405
453
|
self.walletCreationPeriod = _walletCreationPeriod;
|
|
406
454
|
self.walletMinBtcBalance = _walletMinBtcBalance;
|
|
407
455
|
self.walletMaxBtcBalance = _walletMaxBtcBalance;
|
|
408
456
|
self.walletMaxAge = _walletMaxAge;
|
|
409
457
|
self.walletMaxBtcTransfer = _walletMaxBtcTransfer;
|
|
458
|
+
self.walletClosingPeriod = _walletClosingPeriod;
|
|
410
459
|
|
|
411
460
|
emit WalletParametersUpdated(
|
|
412
461
|
_walletCreationPeriod,
|
|
413
462
|
_walletMinBtcBalance,
|
|
414
463
|
_walletMaxBtcBalance,
|
|
415
464
|
_walletMaxAge,
|
|
416
|
-
_walletMaxBtcTransfer
|
|
465
|
+
_walletMaxBtcTransfer,
|
|
466
|
+
_walletClosingPeriod
|
|
417
467
|
);
|
|
418
468
|
}
|
|
419
469
|
|
|
@@ -418,16 +418,39 @@ library Wallets {
|
|
|
418
418
|
emit WalletClosing(wallet.ecdsaWalletID, walletPubKeyHash);
|
|
419
419
|
}
|
|
420
420
|
|
|
421
|
+
/// @notice Notifies about the end of the closing period for the given wallet.
|
|
422
|
+
/// Closes the wallet ultimately and notifies the ECDSA registry
|
|
423
|
+
/// about this fact.
|
|
424
|
+
/// @param walletPubKeyHash 20-byte public key hash of the wallet
|
|
425
|
+
/// @dev Requirements:
|
|
426
|
+
/// - The wallet must be in the Closing state
|
|
427
|
+
/// - The wallet closing period must have elapsed
|
|
428
|
+
function notifyWalletClosingPeriodElapsed(
|
|
429
|
+
BridgeState.Storage storage self,
|
|
430
|
+
bytes20 walletPubKeyHash
|
|
431
|
+
) internal {
|
|
432
|
+
Wallet storage wallet = self.registeredWallets[walletPubKeyHash];
|
|
433
|
+
|
|
434
|
+
require(
|
|
435
|
+
wallet.state == WalletState.Closing,
|
|
436
|
+
"ECDSA wallet must be in Closing state"
|
|
437
|
+
);
|
|
438
|
+
|
|
439
|
+
require(
|
|
440
|
+
/* solhint-disable-next-line not-rely-on-time */
|
|
441
|
+
block.timestamp >
|
|
442
|
+
wallet.closingStartedAt + self.walletClosingPeriod,
|
|
443
|
+
"Closing period has not elapsed yet"
|
|
444
|
+
);
|
|
445
|
+
|
|
446
|
+
finalizeWalletClosing(self, walletPubKeyHash);
|
|
447
|
+
}
|
|
448
|
+
|
|
421
449
|
/// @notice Finalizes the closing period of the given wallet and notifies
|
|
422
450
|
/// the ECDSA registry about this fact.
|
|
423
451
|
/// @param walletPubKeyHash 20-byte public key hash of the wallet
|
|
424
452
|
/// @dev Requirements:
|
|
425
453
|
/// - The caller must make sure that the wallet is in the Closing state
|
|
426
|
-
///
|
|
427
|
-
/// TODO: Make this function callable from the Bridge contract if
|
|
428
|
-
/// `block.timestamp > wallet.closingStartedAt + self.walletClosingPeriod`.
|
|
429
|
-
///
|
|
430
|
-
// slither-disable-next-line dead-code
|
|
431
454
|
function finalizeWalletClosing(
|
|
432
455
|
BridgeState.Storage storage self,
|
|
433
456
|
bytes20 walletPubKeyHash
|
|
@@ -6,12 +6,10 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
|
6
6
|
const { deployer, governance } = await getNamedAccounts()
|
|
7
7
|
|
|
8
8
|
await helpers.ownable.transferOwnership("Bank", governance, deployer)
|
|
9
|
-
|
|
10
|
-
await helpers.ownable.transferOwnership("Bridge", governance, deployer)
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
export default func
|
|
14
12
|
|
|
15
13
|
func.tags = ["TransferOwnership"]
|
|
16
|
-
func.dependencies = ["Bank"
|
|
14
|
+
func.dependencies = ["Bank"]
|
|
17
15
|
func.runAtTheEnd = true
|
|
@@ -0,0 +1,20 @@
|
|
|
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, governance } = await getNamedAccounts()
|
|
7
|
+
|
|
8
|
+
await deployments.execute(
|
|
9
|
+
"Bridge",
|
|
10
|
+
{ from: deployer },
|
|
11
|
+
"transferGovernance",
|
|
12
|
+
governance
|
|
13
|
+
)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default func
|
|
17
|
+
|
|
18
|
+
func.tags = ["TransferGovernance"]
|
|
19
|
+
func.dependencies = ["Bridge"]
|
|
20
|
+
func.runAtTheEnd = true
|