@keep-network/tbtc-v2 0.1.1-dev.79 → 0.1.1-dev.81
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 +89 -29
- package/artifacts/Bridge.json +5 -5
- package/artifacts/Deposit.json +7 -7
- package/artifacts/DepositSweep.json +7 -7
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/EcdsaSortitionPool.json +2 -2
- 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 +9 -9
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +6 -6
- package/artifacts/TBTCToken.json +6 -6
- package/artifacts/TBTCVault.json +462 -0
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +3 -3
- package/artifacts/VendingMachineKeep.json +1 -1
- package/artifacts/VendingMachineNuCypher.json +1 -1
- package/artifacts/WalletRegistry.json +5 -5
- package/artifacts/WalletRegistryGovernance.json +2 -2
- package/artifacts/Wallets.json +9 -9
- package/artifacts/solcInputs/{4f6d4f5cd1e3d835e20ed55926a445cd.json → 3f679eb4591b969794b6013bc0d8da70.json} +1 -1
- package/build/contracts/GovernanceUtils.sol/GovernanceUtils.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.dbg.json +1 -1
- package/build/contracts/bank/Bank.sol/Bank.json +4 -4
- package/build/contracts/bank/IReceiveBalanceApproval.sol/IReceiveBalanceApproval.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 +2 -2
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +2 -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/DepositSweep.sol/DepositSweep.dbg.json +1 -1
- package/build/contracts/bridge/DepositSweep.sol/DepositSweep.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/Heartbeat.sol/Heartbeat.dbg.json +1 -1
- 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/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/DonationVault.sol/DonationVault.dbg.json +1 -1
- package/build/contracts/vault/DonationVault.sol/DonationVault.json +2 -2
- package/build/contracts/vault/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.json +2 -2
- package/contracts/bank/Bank.sol +76 -39
- package/deploy/06_deploy_tbtc_vault.ts +30 -0
- package/deploy/{06_bank_update_bridge.ts → 07_bank_update_bridge.ts} +0 -0
- package/deploy/{07_transfer_ownership.ts → 08_transfer_ownership.ts} +0 -0
- package/deploy/{08_transfer_governance.ts → 09_transfer_governance.ts} +0 -0
- package/deploy/{09_transfer_proxy_admin_ownership.ts → 10_transfer_proxy_admin_ownership.ts} +0 -0
- package/deploy/{10_deploy_proxy_admin_with_deputy.ts → 11_deploy_proxy_admin_with_deputy.ts} +0 -0
- package/export.json +278 -2
- package/package.json +1 -1
package/contracts/bank/Bank.sol
CHANGED
|
@@ -22,16 +22,16 @@ import "../vault/IVault.sol";
|
|
|
22
22
|
|
|
23
23
|
/// @title Bitcoin Bank
|
|
24
24
|
/// @notice Bank is a central component tracking Bitcoin balances. Balances can
|
|
25
|
-
/// be transferred between
|
|
26
|
-
/// balances to be spent by others. Balances in the Bank
|
|
27
|
-
/// depositors who
|
|
28
|
-
/// Bridge can increase balances.
|
|
25
|
+
/// be transferred between balance owners, and balance owners can
|
|
26
|
+
/// approve their balances to be spent by others. Balances in the Bank
|
|
27
|
+
/// are updated for depositors who deposited their Bitcoin into the
|
|
28
|
+
/// Bridge and only the Bridge can increase balances.
|
|
29
29
|
/// @dev Bank is a governable contract and the Governance can upgrade the Bridge
|
|
30
30
|
/// address.
|
|
31
31
|
contract Bank is Ownable {
|
|
32
32
|
address public bridge;
|
|
33
33
|
|
|
34
|
-
/// @notice The balance of
|
|
34
|
+
/// @notice The balance of the given account in the Bank. Zero by default.
|
|
35
35
|
mapping(address => uint256) public balanceOf;
|
|
36
36
|
|
|
37
37
|
/// @notice The remaining amount of balance a spender will be
|
|
@@ -39,16 +39,17 @@ contract Bank is Ownable {
|
|
|
39
39
|
/// `transferBalanceFrom`. Zero by default.
|
|
40
40
|
mapping(address => mapping(address => uint256)) public allowance;
|
|
41
41
|
|
|
42
|
-
/// @notice Returns the current nonce for EIP2612 permission for the
|
|
43
|
-
/// provided balance owner
|
|
44
|
-
/// construct EIP2612 signature provided to `permit`
|
|
42
|
+
/// @notice Returns the current nonce for an EIP2612 permission for the
|
|
43
|
+
/// provided balance owner to protect against replay attacks. Used
|
|
44
|
+
/// to construct an EIP2612 signature provided to the `permit`
|
|
45
|
+
/// function.
|
|
45
46
|
mapping(address => uint256) public nonce;
|
|
46
47
|
|
|
47
48
|
uint256 public immutable cachedChainId;
|
|
48
49
|
bytes32 public immutable cachedDomainSeparator;
|
|
49
50
|
|
|
50
|
-
/// @notice Returns EIP2612 Permit message hash. Used to construct
|
|
51
|
-
/// signature provided to `permit` function.
|
|
51
|
+
/// @notice Returns an EIP2612 Permit message hash. Used to construct
|
|
52
|
+
/// an EIP2612 signature provided to the `permit` function.
|
|
52
53
|
bytes32 public constant PERMIT_TYPEHASH =
|
|
53
54
|
keccak256(
|
|
54
55
|
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
|
|
@@ -87,6 +88,9 @@ contract Bank is Ownable {
|
|
|
87
88
|
/// check the status of the Bridge. The Governance implementation needs
|
|
88
89
|
/// to ensure all requirements for the upgrade are satisfied before
|
|
89
90
|
/// executing this function.
|
|
91
|
+
/// Requirements:
|
|
92
|
+
/// - The new Bridge address must not be zero.
|
|
93
|
+
/// @param _bridge The new Bridge address.
|
|
90
94
|
function updateBridge(address _bridge) external onlyOwner {
|
|
91
95
|
require(_bridge != address(0), "Bridge address must not be 0x0");
|
|
92
96
|
bridge = _bridge;
|
|
@@ -98,19 +102,23 @@ contract Bank is Ownable {
|
|
|
98
102
|
/// @dev Requirements:
|
|
99
103
|
/// - `recipient` cannot be the zero address,
|
|
100
104
|
/// - the caller must have a balance of at least `amount`.
|
|
105
|
+
/// @param recipient The recipient of the balance.
|
|
106
|
+
/// @param amount The amount of the balance transferred.
|
|
101
107
|
function transferBalance(address recipient, uint256 amount) external {
|
|
102
108
|
_transferBalance(msg.sender, recipient, amount);
|
|
103
109
|
}
|
|
104
110
|
|
|
105
111
|
/// @notice Sets `amount` as the allowance of `spender` over the caller's
|
|
106
112
|
/// balance.
|
|
107
|
-
/// @dev If the `amount` is set to `type(uint256).max
|
|
113
|
+
/// @dev If the `amount` is set to `type(uint256).max`,
|
|
108
114
|
/// `transferBalanceFrom` will not reduce an allowance.
|
|
109
115
|
/// Beware that changing an allowance with this function brings the
|
|
110
116
|
/// risk that someone may use both the old and the new allowance by
|
|
111
117
|
/// unfortunate transaction ordering. Please use
|
|
112
118
|
/// `increaseBalanceAllowance` and `decreaseBalanceAllowance` to
|
|
113
119
|
/// eliminate the risk.
|
|
120
|
+
/// @param spender The address that will be allowed to spend the balance.
|
|
121
|
+
/// @param amount The amount the spender is allowed to spend.
|
|
114
122
|
function approveBalance(address spender, uint256 amount) external {
|
|
115
123
|
_approveBalance(msg.sender, spender, amount);
|
|
116
124
|
}
|
|
@@ -125,6 +133,11 @@ contract Bank is Ownable {
|
|
|
125
133
|
/// both the old and the new allowance by unfortunate transaction
|
|
126
134
|
/// ordering. Please use `increaseBalanceAllowance` and
|
|
127
135
|
/// `decreaseBalanceAllowance` to eliminate the risk.
|
|
136
|
+
/// @param spender The smart contract that will be allowed to spend the
|
|
137
|
+
/// balance.
|
|
138
|
+
/// @param amount The amount the spender contract is allowed to spend.
|
|
139
|
+
/// @param extraData Extra data passed to the `spender` contract via
|
|
140
|
+
/// `receiveBalanceApproval` call.
|
|
128
141
|
function approveBalanceAndCall(
|
|
129
142
|
address spender,
|
|
130
143
|
uint256 amount,
|
|
@@ -138,8 +151,10 @@ contract Bank is Ownable {
|
|
|
138
151
|
);
|
|
139
152
|
}
|
|
140
153
|
|
|
141
|
-
/// @notice Atomically increases the balance allowance granted to
|
|
142
|
-
///
|
|
154
|
+
/// @notice Atomically increases the caller's balance allowance granted to
|
|
155
|
+
/// `spender` by the given `addedValue`.
|
|
156
|
+
/// @param spender The spender address for which the allowance is increased.
|
|
157
|
+
/// @param addedValue The amount by which the allowance is increased.
|
|
143
158
|
function increaseBalanceAllowance(address spender, uint256 addedValue)
|
|
144
159
|
external
|
|
145
160
|
{
|
|
@@ -150,8 +165,14 @@ contract Bank is Ownable {
|
|
|
150
165
|
);
|
|
151
166
|
}
|
|
152
167
|
|
|
153
|
-
/// @notice Atomically decreases the balance allowance granted to
|
|
154
|
-
///
|
|
168
|
+
/// @notice Atomically decreases the caller's balance allowance granted to
|
|
169
|
+
/// `spender` by the given `subtractedValue`.
|
|
170
|
+
/// @dev Requirements:
|
|
171
|
+
/// - `spender` must not be the zero address,
|
|
172
|
+
/// - the current allowance for `spender` must not be lower than
|
|
173
|
+
/// the `subtractedValue`.
|
|
174
|
+
/// @param spender The spender address for which the allowance is decreased.
|
|
175
|
+
/// @param subtractedValue The amount by which the allowance is decreased.
|
|
155
176
|
function decreaseBalanceAllowance(address spender, uint256 subtractedValue)
|
|
156
177
|
external
|
|
157
178
|
{
|
|
@@ -175,8 +196,11 @@ contract Bank is Ownable {
|
|
|
175
196
|
/// @dev Requirements:
|
|
176
197
|
/// - `recipient` cannot be the zero address,
|
|
177
198
|
/// - `spender` must have a balance of at least `amount`,
|
|
178
|
-
/// - the caller must have allowance for `spender`'s balance of at
|
|
199
|
+
/// - the caller must have an allowance for `spender`'s balance of at
|
|
179
200
|
/// least `amount`.
|
|
201
|
+
/// @param spender The address from which the balance is transferred.
|
|
202
|
+
/// @param recipient The address to which the balance is transferred.
|
|
203
|
+
/// @param amount The amount of balance that is transferred.
|
|
180
204
|
function transferBalanceFrom(
|
|
181
205
|
address spender,
|
|
182
206
|
address recipient,
|
|
@@ -195,12 +219,13 @@ contract Bank is Ownable {
|
|
|
195
219
|
_transferBalance(spender, recipient, amount);
|
|
196
220
|
}
|
|
197
221
|
|
|
198
|
-
/// @notice EIP2612 approval made with secp256k1 signature.
|
|
199
|
-
///
|
|
200
|
-
/// conforming EIP712 standard, rather than an on-chain
|
|
201
|
-
/// from their address. Anyone can submit this signature
|
|
202
|
-
/// user's behalf by calling the permit function, paying
|
|
203
|
-
/// and possibly performing other actions in the same
|
|
222
|
+
/// @notice An EIP2612 approval made with secp256k1 signature. Users can
|
|
223
|
+
/// authorize a transfer of their balance with a signature
|
|
224
|
+
/// conforming to the EIP712 standard, rather than an on-chain
|
|
225
|
+
/// transaction from their address. Anyone can submit this signature
|
|
226
|
+
/// on the user's behalf by calling the `permit` function, paying
|
|
227
|
+
/// gas fees, and possibly performing other actions in the same
|
|
228
|
+
/// transaction.
|
|
204
229
|
/// @dev The deadline argument can be set to `type(uint256).max to create
|
|
205
230
|
/// permits that effectively never expire. If the `amount` is set
|
|
206
231
|
/// to `type(uint256).max` then `transferBalanceFrom` will not
|
|
@@ -209,6 +234,13 @@ contract Bank is Ownable {
|
|
|
209
234
|
/// new allowance by unfortunate transaction ordering. Please use
|
|
210
235
|
/// `increaseBalanceAllowance` and `decreaseBalanceAllowance` to
|
|
211
236
|
/// eliminate the risk.
|
|
237
|
+
/// @param owner The balance owner who signed the permission.
|
|
238
|
+
/// @param spender The address that will be allowed to spend the balance.
|
|
239
|
+
/// @param amount The amount the spender is allowed to spend.
|
|
240
|
+
/// @param deadline The UNIX time until which the permit is valid.
|
|
241
|
+
/// @param v V part of the permit signature.
|
|
242
|
+
/// @param r R part of the permit signature.
|
|
243
|
+
/// @param s S part of the permit signature.
|
|
212
244
|
function permit(
|
|
213
245
|
address owner,
|
|
214
246
|
address spender,
|
|
@@ -258,7 +290,10 @@ contract Bank is Ownable {
|
|
|
258
290
|
/// @notice Increases balances of the provided `recipients` by the provided
|
|
259
291
|
/// `amounts`. Can only be called by the Bridge.
|
|
260
292
|
/// @dev Requirements:
|
|
261
|
-
/// - length of `recipients` and `amounts` must be the same
|
|
293
|
+
/// - length of `recipients` and `amounts` must be the same,
|
|
294
|
+
/// - none of `recipients` addresses must point to the Bank.
|
|
295
|
+
/// @param recipients Balance increase recipients.
|
|
296
|
+
/// @param amounts Amounts by which balances are increased.
|
|
262
297
|
function increaseBalances(
|
|
263
298
|
address[] calldata recipients,
|
|
264
299
|
uint256[] calldata amounts
|
|
@@ -274,6 +309,10 @@ contract Bank is Ownable {
|
|
|
274
309
|
|
|
275
310
|
/// @notice Increases balance of the provided `recipient` by the provided
|
|
276
311
|
/// `amount`. Can only be called by the Bridge.
|
|
312
|
+
/// @dev Requirements:
|
|
313
|
+
/// - `recipient` address must not point to the Bank.
|
|
314
|
+
/// @param recipient Balance increase recipient.
|
|
315
|
+
/// @param amount Amount by which the balance is increased.
|
|
277
316
|
function increaseBalance(address recipient, uint256 amount)
|
|
278
317
|
external
|
|
279
318
|
onlyBridge
|
|
@@ -282,39 +321,37 @@ contract Bank is Ownable {
|
|
|
282
321
|
}
|
|
283
322
|
|
|
284
323
|
/// @notice Increases the given smart contract `vault`'s balance and
|
|
285
|
-
/// notifies the `vault` contract
|
|
286
|
-
/// the deposits routed by depositors to that `vault` have been
|
|
287
|
-
/// swept by the Bridge. This way, the depositor does not have to
|
|
288
|
-
/// issue a separate transaction to the `vault` contract.
|
|
324
|
+
/// notifies the `vault` contract about it.
|
|
289
325
|
/// Can be called only by the Bridge.
|
|
290
326
|
/// @dev Requirements:
|
|
291
327
|
/// - `vault` must implement `IVault` interface,
|
|
292
|
-
/// - length of `
|
|
328
|
+
/// - length of `recipients` and `amounts` must be the same.
|
|
293
329
|
/// @param vault Address of `IVault` recipient contract.
|
|
294
|
-
/// @param
|
|
295
|
-
/// @param
|
|
296
|
-
/// swept. The `vault`'s balance in the Bank will be increased by the
|
|
297
|
-
/// sum of all elements in this array.
|
|
330
|
+
/// @param recipients Balance increase recipients.
|
|
331
|
+
/// @param amounts Amounts by which balances are increased.
|
|
298
332
|
function increaseBalanceAndCall(
|
|
299
333
|
address vault,
|
|
300
|
-
address[] calldata
|
|
301
|
-
uint256[] calldata
|
|
334
|
+
address[] calldata recipients,
|
|
335
|
+
uint256[] calldata amounts
|
|
302
336
|
) external onlyBridge {
|
|
303
337
|
require(
|
|
304
|
-
|
|
338
|
+
recipients.length == amounts.length,
|
|
305
339
|
"Arrays must have the same length"
|
|
306
340
|
);
|
|
307
341
|
uint256 totalAmount = 0;
|
|
308
|
-
for (uint256 i = 0; i <
|
|
309
|
-
totalAmount +=
|
|
342
|
+
for (uint256 i = 0; i < amounts.length; i++) {
|
|
343
|
+
totalAmount += amounts[i];
|
|
310
344
|
}
|
|
311
345
|
_increaseBalance(vault, totalAmount);
|
|
312
|
-
IVault(vault).receiveBalanceIncrease(
|
|
346
|
+
IVault(vault).receiveBalanceIncrease(recipients, amounts);
|
|
313
347
|
}
|
|
314
348
|
|
|
315
349
|
/// @notice Decreases caller's balance by the provided `amount`. There is no
|
|
316
350
|
/// way to restore the balance so do not call this function unless
|
|
317
351
|
/// you really know what you are doing!
|
|
352
|
+
/// @dev Requirements:
|
|
353
|
+
/// - The caller must have a balance of at least `amount`.
|
|
354
|
+
/// @param amount The amount by which the balance is decreased.
|
|
318
355
|
function decreaseBalance(uint256 amount) external {
|
|
319
356
|
balanceOf[msg.sender] -= amount;
|
|
320
357
|
emit BalanceDecreased(msg.sender, amount);
|
|
@@ -322,7 +359,7 @@ contract Bank is Ownable {
|
|
|
322
359
|
|
|
323
360
|
/// @notice Returns hash of EIP712 Domain struct with `TBTC Bank` as
|
|
324
361
|
/// a signing domain and Bank contract as a verifying contract.
|
|
325
|
-
/// Used to construct EIP2612 signature provided to `permit`
|
|
362
|
+
/// Used to construct an EIP2612 signature provided to the `permit`
|
|
326
363
|
/// function.
|
|
327
364
|
/* solhint-disable-next-line func-name-mixedcase */
|
|
328
365
|
function DOMAIN_SEPARATOR() public view returns (bytes32) {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { HardhatRuntimeEnvironment } from "hardhat/types"
|
|
2
|
+
import { DeployFunction } from "hardhat-deploy/types"
|
|
3
|
+
|
|
4
|
+
const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) {
|
|
5
|
+
const { deployments, getNamedAccounts } = hre
|
|
6
|
+
const { deploy } = deployments
|
|
7
|
+
const { deployer } = await getNamedAccounts()
|
|
8
|
+
|
|
9
|
+
const Bank = await deployments.get("Bank")
|
|
10
|
+
const TBTC = await deployments.get("TBTC")
|
|
11
|
+
|
|
12
|
+
const TBTCVault = await deploy("TBTCVault", {
|
|
13
|
+
contract: "TBTCVault",
|
|
14
|
+
from: deployer,
|
|
15
|
+
args: [Bank.address, TBTC.address],
|
|
16
|
+
log: true,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
if (hre.network.tags.tenderly) {
|
|
20
|
+
await hre.tenderly.verify({
|
|
21
|
+
name: "TBTCVault",
|
|
22
|
+
address: TBTCVault.address,
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default func
|
|
28
|
+
|
|
29
|
+
func.tags = ["TBTCVault"]
|
|
30
|
+
func.dependencies = ["Bank", "TBTC"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/deploy/{09_transfer_proxy_admin_ownership.ts → 10_transfer_proxy_admin_ownership.ts}
RENAMED
|
File without changes
|
package/deploy/{10_deploy_proxy_admin_with_deputy.ts → 11_deploy_proxy_admin_with_deputy.ts}
RENAMED
|
File without changes
|
package/export.json
CHANGED
|
@@ -13523,12 +13523,12 @@
|
|
|
13523
13523
|
},
|
|
13524
13524
|
{
|
|
13525
13525
|
"internalType": "address[]",
|
|
13526
|
-
"name": "
|
|
13526
|
+
"name": "recipients",
|
|
13527
13527
|
"type": "address[]"
|
|
13528
13528
|
},
|
|
13529
13529
|
{
|
|
13530
13530
|
"internalType": "uint256[]",
|
|
13531
|
-
"name": "
|
|
13531
|
+
"name": "amounts",
|
|
13532
13532
|
"type": "uint256[]"
|
|
13533
13533
|
}
|
|
13534
13534
|
],
|
|
@@ -16784,6 +16784,282 @@
|
|
|
16784
16784
|
]
|
|
16785
16785
|
}
|
|
16786
16786
|
]
|
|
16787
|
+
},
|
|
16788
|
+
"TBTCVault": {
|
|
16789
|
+
"address": "0xDadd1125B8Df98A66Abd5EB302C0d9Ca5A061dC2",
|
|
16790
|
+
"abi": [
|
|
16791
|
+
{
|
|
16792
|
+
"inputs": [
|
|
16793
|
+
{
|
|
16794
|
+
"internalType": "contract Bank",
|
|
16795
|
+
"name": "_bank",
|
|
16796
|
+
"type": "address"
|
|
16797
|
+
},
|
|
16798
|
+
{
|
|
16799
|
+
"internalType": "contract TBTC",
|
|
16800
|
+
"name": "_tbtcToken",
|
|
16801
|
+
"type": "address"
|
|
16802
|
+
}
|
|
16803
|
+
],
|
|
16804
|
+
"stateMutability": "nonpayable",
|
|
16805
|
+
"type": "constructor"
|
|
16806
|
+
},
|
|
16807
|
+
{
|
|
16808
|
+
"anonymous": false,
|
|
16809
|
+
"inputs": [
|
|
16810
|
+
{
|
|
16811
|
+
"indexed": false,
|
|
16812
|
+
"internalType": "address",
|
|
16813
|
+
"name": "oldGovernance",
|
|
16814
|
+
"type": "address"
|
|
16815
|
+
},
|
|
16816
|
+
{
|
|
16817
|
+
"indexed": false,
|
|
16818
|
+
"internalType": "address",
|
|
16819
|
+
"name": "newGovernance",
|
|
16820
|
+
"type": "address"
|
|
16821
|
+
}
|
|
16822
|
+
],
|
|
16823
|
+
"name": "GovernanceTransferred",
|
|
16824
|
+
"type": "event"
|
|
16825
|
+
},
|
|
16826
|
+
{
|
|
16827
|
+
"anonymous": false,
|
|
16828
|
+
"inputs": [
|
|
16829
|
+
{
|
|
16830
|
+
"indexed": true,
|
|
16831
|
+
"internalType": "address",
|
|
16832
|
+
"name": "to",
|
|
16833
|
+
"type": "address"
|
|
16834
|
+
},
|
|
16835
|
+
{
|
|
16836
|
+
"indexed": false,
|
|
16837
|
+
"internalType": "uint256",
|
|
16838
|
+
"name": "amount",
|
|
16839
|
+
"type": "uint256"
|
|
16840
|
+
}
|
|
16841
|
+
],
|
|
16842
|
+
"name": "Minted",
|
|
16843
|
+
"type": "event"
|
|
16844
|
+
},
|
|
16845
|
+
{
|
|
16846
|
+
"anonymous": false,
|
|
16847
|
+
"inputs": [
|
|
16848
|
+
{
|
|
16849
|
+
"indexed": true,
|
|
16850
|
+
"internalType": "address",
|
|
16851
|
+
"name": "from",
|
|
16852
|
+
"type": "address"
|
|
16853
|
+
},
|
|
16854
|
+
{
|
|
16855
|
+
"indexed": false,
|
|
16856
|
+
"internalType": "uint256",
|
|
16857
|
+
"name": "amount",
|
|
16858
|
+
"type": "uint256"
|
|
16859
|
+
}
|
|
16860
|
+
],
|
|
16861
|
+
"name": "Redeemed",
|
|
16862
|
+
"type": "event"
|
|
16863
|
+
},
|
|
16864
|
+
{
|
|
16865
|
+
"inputs": [],
|
|
16866
|
+
"name": "bank",
|
|
16867
|
+
"outputs": [
|
|
16868
|
+
{
|
|
16869
|
+
"internalType": "contract Bank",
|
|
16870
|
+
"name": "",
|
|
16871
|
+
"type": "address"
|
|
16872
|
+
}
|
|
16873
|
+
],
|
|
16874
|
+
"stateMutability": "view",
|
|
16875
|
+
"type": "function"
|
|
16876
|
+
},
|
|
16877
|
+
{
|
|
16878
|
+
"inputs": [],
|
|
16879
|
+
"name": "governance",
|
|
16880
|
+
"outputs": [
|
|
16881
|
+
{
|
|
16882
|
+
"internalType": "address",
|
|
16883
|
+
"name": "",
|
|
16884
|
+
"type": "address"
|
|
16885
|
+
}
|
|
16886
|
+
],
|
|
16887
|
+
"stateMutability": "view",
|
|
16888
|
+
"type": "function"
|
|
16889
|
+
},
|
|
16890
|
+
{
|
|
16891
|
+
"inputs": [
|
|
16892
|
+
{
|
|
16893
|
+
"internalType": "uint256",
|
|
16894
|
+
"name": "amount",
|
|
16895
|
+
"type": "uint256"
|
|
16896
|
+
}
|
|
16897
|
+
],
|
|
16898
|
+
"name": "mint",
|
|
16899
|
+
"outputs": [],
|
|
16900
|
+
"stateMutability": "nonpayable",
|
|
16901
|
+
"type": "function"
|
|
16902
|
+
},
|
|
16903
|
+
{
|
|
16904
|
+
"inputs": [
|
|
16905
|
+
{
|
|
16906
|
+
"internalType": "address",
|
|
16907
|
+
"name": "from",
|
|
16908
|
+
"type": "address"
|
|
16909
|
+
},
|
|
16910
|
+
{
|
|
16911
|
+
"internalType": "uint256",
|
|
16912
|
+
"name": "amount",
|
|
16913
|
+
"type": "uint256"
|
|
16914
|
+
},
|
|
16915
|
+
{
|
|
16916
|
+
"internalType": "address",
|
|
16917
|
+
"name": "token",
|
|
16918
|
+
"type": "address"
|
|
16919
|
+
},
|
|
16920
|
+
{
|
|
16921
|
+
"internalType": "bytes",
|
|
16922
|
+
"name": "",
|
|
16923
|
+
"type": "bytes"
|
|
16924
|
+
}
|
|
16925
|
+
],
|
|
16926
|
+
"name": "receiveApproval",
|
|
16927
|
+
"outputs": [],
|
|
16928
|
+
"stateMutability": "nonpayable",
|
|
16929
|
+
"type": "function"
|
|
16930
|
+
},
|
|
16931
|
+
{
|
|
16932
|
+
"inputs": [
|
|
16933
|
+
{
|
|
16934
|
+
"internalType": "address",
|
|
16935
|
+
"name": "owner",
|
|
16936
|
+
"type": "address"
|
|
16937
|
+
},
|
|
16938
|
+
{
|
|
16939
|
+
"internalType": "uint256",
|
|
16940
|
+
"name": "amount",
|
|
16941
|
+
"type": "uint256"
|
|
16942
|
+
},
|
|
16943
|
+
{
|
|
16944
|
+
"internalType": "bytes",
|
|
16945
|
+
"name": "",
|
|
16946
|
+
"type": "bytes"
|
|
16947
|
+
}
|
|
16948
|
+
],
|
|
16949
|
+
"name": "receiveBalanceApproval",
|
|
16950
|
+
"outputs": [],
|
|
16951
|
+
"stateMutability": "nonpayable",
|
|
16952
|
+
"type": "function"
|
|
16953
|
+
},
|
|
16954
|
+
{
|
|
16955
|
+
"inputs": [
|
|
16956
|
+
{
|
|
16957
|
+
"internalType": "address[]",
|
|
16958
|
+
"name": "depositors",
|
|
16959
|
+
"type": "address[]"
|
|
16960
|
+
},
|
|
16961
|
+
{
|
|
16962
|
+
"internalType": "uint256[]",
|
|
16963
|
+
"name": "depositedAmounts",
|
|
16964
|
+
"type": "uint256[]"
|
|
16965
|
+
}
|
|
16966
|
+
],
|
|
16967
|
+
"name": "receiveBalanceIncrease",
|
|
16968
|
+
"outputs": [],
|
|
16969
|
+
"stateMutability": "nonpayable",
|
|
16970
|
+
"type": "function"
|
|
16971
|
+
},
|
|
16972
|
+
{
|
|
16973
|
+
"inputs": [
|
|
16974
|
+
{
|
|
16975
|
+
"internalType": "contract IERC20",
|
|
16976
|
+
"name": "token",
|
|
16977
|
+
"type": "address"
|
|
16978
|
+
},
|
|
16979
|
+
{
|
|
16980
|
+
"internalType": "address",
|
|
16981
|
+
"name": "recipient",
|
|
16982
|
+
"type": "address"
|
|
16983
|
+
},
|
|
16984
|
+
{
|
|
16985
|
+
"internalType": "uint256",
|
|
16986
|
+
"name": "amount",
|
|
16987
|
+
"type": "uint256"
|
|
16988
|
+
}
|
|
16989
|
+
],
|
|
16990
|
+
"name": "recoverERC20",
|
|
16991
|
+
"outputs": [],
|
|
16992
|
+
"stateMutability": "nonpayable",
|
|
16993
|
+
"type": "function"
|
|
16994
|
+
},
|
|
16995
|
+
{
|
|
16996
|
+
"inputs": [
|
|
16997
|
+
{
|
|
16998
|
+
"internalType": "contract IERC721",
|
|
16999
|
+
"name": "token",
|
|
17000
|
+
"type": "address"
|
|
17001
|
+
},
|
|
17002
|
+
{
|
|
17003
|
+
"internalType": "address",
|
|
17004
|
+
"name": "recipient",
|
|
17005
|
+
"type": "address"
|
|
17006
|
+
},
|
|
17007
|
+
{
|
|
17008
|
+
"internalType": "uint256",
|
|
17009
|
+
"name": "tokenId",
|
|
17010
|
+
"type": "uint256"
|
|
17011
|
+
},
|
|
17012
|
+
{
|
|
17013
|
+
"internalType": "bytes",
|
|
17014
|
+
"name": "data",
|
|
17015
|
+
"type": "bytes"
|
|
17016
|
+
}
|
|
17017
|
+
],
|
|
17018
|
+
"name": "recoverERC721",
|
|
17019
|
+
"outputs": [],
|
|
17020
|
+
"stateMutability": "nonpayable",
|
|
17021
|
+
"type": "function"
|
|
17022
|
+
},
|
|
17023
|
+
{
|
|
17024
|
+
"inputs": [
|
|
17025
|
+
{
|
|
17026
|
+
"internalType": "uint256",
|
|
17027
|
+
"name": "amount",
|
|
17028
|
+
"type": "uint256"
|
|
17029
|
+
}
|
|
17030
|
+
],
|
|
17031
|
+
"name": "redeem",
|
|
17032
|
+
"outputs": [],
|
|
17033
|
+
"stateMutability": "nonpayable",
|
|
17034
|
+
"type": "function"
|
|
17035
|
+
},
|
|
17036
|
+
{
|
|
17037
|
+
"inputs": [],
|
|
17038
|
+
"name": "tbtcToken",
|
|
17039
|
+
"outputs": [
|
|
17040
|
+
{
|
|
17041
|
+
"internalType": "contract TBTC",
|
|
17042
|
+
"name": "",
|
|
17043
|
+
"type": "address"
|
|
17044
|
+
}
|
|
17045
|
+
],
|
|
17046
|
+
"stateMutability": "view",
|
|
17047
|
+
"type": "function"
|
|
17048
|
+
},
|
|
17049
|
+
{
|
|
17050
|
+
"inputs": [
|
|
17051
|
+
{
|
|
17052
|
+
"internalType": "address",
|
|
17053
|
+
"name": "newGovernance",
|
|
17054
|
+
"type": "address"
|
|
17055
|
+
}
|
|
17056
|
+
],
|
|
17057
|
+
"name": "transferGovernance",
|
|
17058
|
+
"outputs": [],
|
|
17059
|
+
"stateMutability": "nonpayable",
|
|
17060
|
+
"type": "function"
|
|
17061
|
+
}
|
|
17062
|
+
]
|
|
16787
17063
|
}
|
|
16788
17064
|
}
|
|
16789
17065
|
}
|