@keep-network/tbtc-v2 0.1.1-dev.57 → 0.1.1-dev.58
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 +6 -6
- package/artifacts/Bridge.json +317 -140
- 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/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 +46 -10
- 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/T.json +2 -2
- package/artifacts/TBTC.json +6 -6
- package/artifacts/TBTCToken.json +6 -6
- package/artifacts/TokenStaking.json +1 -1
- package/artifacts/TokenholderGovernor.json +9 -9
- package/artifacts/TokenholderTimelock.json +8 -8
- package/artifacts/VendingMachine.json +13 -13
- 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/{d1140ac40baa1ba6f0d558afe0fa6d54.json → 452e42f1afe94d8639a5bf98bed9e151.json} +4 -4
- 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 +143 -39
- package/build/contracts/bridge/BridgeState.sol/BridgeState.dbg.json +1 -1
- package/build/contracts/bridge/BridgeState.sol/BridgeState.json +20 -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/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 +27 -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/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/bridge/Bridge.sol +88 -4
- package/contracts/bridge/BridgeState.sol +54 -3
- package/contracts/bridge/MovingFunds.sol +121 -15
- package/export.json +159 -3
- package/package.json +1 -1
|
@@ -110,6 +110,17 @@ library BridgeState {
|
|
|
110
110
|
// if per single redemption. `movedFundsSweepTxMaxTotalFee` is a total
|
|
111
111
|
// fee for the entire transaction.
|
|
112
112
|
uint64 movedFundsSweepTxMaxTotalFee;
|
|
113
|
+
// Time after which the moved funds sweep process can be reported as
|
|
114
|
+
// timed out. It is counted from the moment when the recipient wallet
|
|
115
|
+
// was requested to sweep the received funds. Value in seconds.
|
|
116
|
+
uint32 movedFundsSweepTimeout;
|
|
117
|
+
// The amount of stake slashed from each member of a wallet for a moved
|
|
118
|
+
// funds sweep timeout.
|
|
119
|
+
uint96 movedFundsSweepTimeoutSlashingAmount;
|
|
120
|
+
// The percentage of the notifier reward from the staking contract
|
|
121
|
+
// the notifier of a moved funds sweep timeout receives. The value is
|
|
122
|
+
// in the range [0, 100].
|
|
123
|
+
uint256 movedFundsSweepTimeoutNotifierRewardMultiplier;
|
|
113
124
|
// Collection of all moved funds sweep requests indexed by
|
|
114
125
|
// `keccak256(movingFundsTxHash | movingFundsOutputIndex)`.
|
|
115
126
|
// The `movingFundsTxHash` is `bytes32` (ordered as in Bitcoin
|
|
@@ -263,7 +274,10 @@ library BridgeState {
|
|
|
263
274
|
uint32 movingFundsTimeout,
|
|
264
275
|
uint96 movingFundsTimeoutSlashingAmount,
|
|
265
276
|
uint256 movingFundsTimeoutNotifierRewardMultiplier,
|
|
266
|
-
uint64 movedFundsSweepTxMaxTotalFee
|
|
277
|
+
uint64 movedFundsSweepTxMaxTotalFee,
|
|
278
|
+
uint32 movedFundsSweepTimeout,
|
|
279
|
+
uint96 movedFundsSweepTimeoutSlashingAmount,
|
|
280
|
+
uint256 movedFundsSweepTimeoutNotifierRewardMultiplier
|
|
267
281
|
);
|
|
268
282
|
|
|
269
283
|
event WalletParametersUpdated(
|
|
@@ -466,6 +480,19 @@ library BridgeState {
|
|
|
466
480
|
/// of the total BTC transaction fee that is acceptable in a single
|
|
467
481
|
/// moved funds sweep transaction. This is a _total_ max fee for the
|
|
468
482
|
/// entire moved funds sweep transaction.
|
|
483
|
+
/// @param _movedFundsSweepTimeout New value of the moved funds sweep
|
|
484
|
+
/// timeout in seconds. It is the time after which the moved funds
|
|
485
|
+
/// sweep process can be reported as timed out. It is counted from
|
|
486
|
+
/// the moment when the wallet was requested to sweep the received
|
|
487
|
+
/// funds.
|
|
488
|
+
/// @param _movedFundsSweepTimeoutSlashingAmount New value of the moved
|
|
489
|
+
/// funds sweep timeout slashing amount in T, it is the amount
|
|
490
|
+
/// slashed from each wallet member for moved funds sweep timeout
|
|
491
|
+
/// @param _movedFundsSweepTimeoutNotifierRewardMultiplier New value of
|
|
492
|
+
/// the moved funds sweep timeout notifier reward multiplier as
|
|
493
|
+
/// percentage, it determines the percentage of the notifier reward
|
|
494
|
+
/// from the staking contact the notifier of a moved funds sweep
|
|
495
|
+
/// timeout receives. The value must be in the range [0, 100]
|
|
469
496
|
/// @dev Requirements:
|
|
470
497
|
/// - Moving funds transaction max total fee must be greater than zero
|
|
471
498
|
/// - Moving funds dust threshold must be greater than zero
|
|
@@ -473,6 +500,9 @@ library BridgeState {
|
|
|
473
500
|
/// - Moving funds timeout notifier reward multiplier must be in the
|
|
474
501
|
/// range [0, 100]
|
|
475
502
|
/// - Moved funds sweep transaction max total fee must be greater than zero
|
|
503
|
+
/// - Moved funds sweep timeout must be greater than zero
|
|
504
|
+
/// - Moved funds sweep timeout notifier reward multiplier must be in the
|
|
505
|
+
/// range [0, 100]
|
|
476
506
|
function updateMovingFundsParameters(
|
|
477
507
|
Storage storage self,
|
|
478
508
|
uint64 _movingFundsTxMaxTotalFee,
|
|
@@ -480,7 +510,10 @@ library BridgeState {
|
|
|
480
510
|
uint32 _movingFundsTimeout,
|
|
481
511
|
uint96 _movingFundsTimeoutSlashingAmount,
|
|
482
512
|
uint256 _movingFundsTimeoutNotifierRewardMultiplier,
|
|
483
|
-
uint64 _movedFundsSweepTxMaxTotalFee
|
|
513
|
+
uint64 _movedFundsSweepTxMaxTotalFee,
|
|
514
|
+
uint32 _movedFundsSweepTimeout,
|
|
515
|
+
uint96 _movedFundsSweepTimeoutSlashingAmount,
|
|
516
|
+
uint256 _movedFundsSweepTimeoutNotifierRewardMultiplier
|
|
484
517
|
) internal {
|
|
485
518
|
require(
|
|
486
519
|
_movingFundsTxMaxTotalFee > 0,
|
|
@@ -507,6 +540,16 @@ library BridgeState {
|
|
|
507
540
|
"Moved funds sweep transaction max total fee must be greater than zero"
|
|
508
541
|
);
|
|
509
542
|
|
|
543
|
+
require(
|
|
544
|
+
_movedFundsSweepTimeout > 0,
|
|
545
|
+
"Moved funds sweep timeout must be greater than zero"
|
|
546
|
+
);
|
|
547
|
+
|
|
548
|
+
require(
|
|
549
|
+
_movedFundsSweepTimeoutNotifierRewardMultiplier <= 100,
|
|
550
|
+
"Moved funds sweep timeout notifier reward multiplier must be in the range [0, 100]"
|
|
551
|
+
);
|
|
552
|
+
|
|
510
553
|
self.movingFundsTxMaxTotalFee = _movingFundsTxMaxTotalFee;
|
|
511
554
|
self.movingFundsDustThreshold = _movingFundsDustThreshold;
|
|
512
555
|
self.movingFundsTimeout = _movingFundsTimeout;
|
|
@@ -515,6 +558,11 @@ library BridgeState {
|
|
|
515
558
|
self
|
|
516
559
|
.movingFundsTimeoutNotifierRewardMultiplier = _movingFundsTimeoutNotifierRewardMultiplier;
|
|
517
560
|
self.movedFundsSweepTxMaxTotalFee = _movedFundsSweepTxMaxTotalFee;
|
|
561
|
+
self.movedFundsSweepTimeout = _movedFundsSweepTimeout;
|
|
562
|
+
self
|
|
563
|
+
.movedFundsSweepTimeoutSlashingAmount = _movedFundsSweepTimeoutSlashingAmount;
|
|
564
|
+
self
|
|
565
|
+
.movedFundsSweepTimeoutNotifierRewardMultiplier = _movedFundsSweepTimeoutNotifierRewardMultiplier;
|
|
518
566
|
|
|
519
567
|
emit MovingFundsParametersUpdated(
|
|
520
568
|
_movingFundsTxMaxTotalFee,
|
|
@@ -522,7 +570,10 @@ library BridgeState {
|
|
|
522
570
|
_movingFundsTimeout,
|
|
523
571
|
_movingFundsTimeoutSlashingAmount,
|
|
524
572
|
_movingFundsTimeoutNotifierRewardMultiplier,
|
|
525
|
-
_movedFundsSweepTxMaxTotalFee
|
|
573
|
+
_movedFundsSweepTxMaxTotalFee,
|
|
574
|
+
_movedFundsSweepTimeout,
|
|
575
|
+
_movedFundsSweepTimeoutSlashingAmount,
|
|
576
|
+
_movedFundsSweepTimeoutNotifierRewardMultiplier
|
|
526
577
|
);
|
|
527
578
|
}
|
|
528
579
|
|
|
@@ -58,6 +58,19 @@ library MovingFunds {
|
|
|
58
58
|
bytes movingFundsTxOutputVector;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
/// @notice Represents moved funds sweep request state.
|
|
62
|
+
enum MovedFundsSweepRequestState {
|
|
63
|
+
/// @dev The request is unknown to the Bridge.
|
|
64
|
+
Unknown,
|
|
65
|
+
/// @dev Request is pending and can become either processed or timed out.
|
|
66
|
+
Pending,
|
|
67
|
+
/// @dev Request was processed by the target wallet.
|
|
68
|
+
Processed,
|
|
69
|
+
/// @dev Request was not processed in the given time window and
|
|
70
|
+
/// the timeout was reported.
|
|
71
|
+
TimedOut
|
|
72
|
+
}
|
|
73
|
+
|
|
61
74
|
/// @notice Represents a moved funds sweep request. The request is
|
|
62
75
|
/// registered in `submitMovingFundsProof` where we know funds
|
|
63
76
|
/// have been moved to the target wallet and the only step left is
|
|
@@ -70,8 +83,8 @@ library MovingFunds {
|
|
|
70
83
|
uint64 value;
|
|
71
84
|
// UNIX timestamp the request was created at.
|
|
72
85
|
uint32 createdAt;
|
|
73
|
-
//
|
|
74
|
-
|
|
86
|
+
// The current state of the request.
|
|
87
|
+
MovedFundsSweepRequestState state;
|
|
75
88
|
}
|
|
76
89
|
|
|
77
90
|
event MovingFundsCommitmentSubmitted(
|
|
@@ -91,6 +104,12 @@ library MovingFunds {
|
|
|
91
104
|
|
|
92
105
|
event MovedFundsSwept(bytes20 walletPubKeyHash, bytes32 sweepTxHash);
|
|
93
106
|
|
|
107
|
+
event MovedFundsSweepTimedOut(
|
|
108
|
+
bytes20 walletPubKeyHash,
|
|
109
|
+
bytes32 movingFundsTxHash,
|
|
110
|
+
uint32 movingFundsTxOutputIndex
|
|
111
|
+
);
|
|
112
|
+
|
|
94
113
|
/// @notice Submits the moving funds target wallets commitment.
|
|
95
114
|
/// Once all requirements are met, that function registers the
|
|
96
115
|
/// target wallets commitment and opens the way for moving funds
|
|
@@ -420,7 +439,7 @@ library MovingFunds {
|
|
|
420
439
|
outputsValues[outputIndex],
|
|
421
440
|
/* solhint-disable-next-line not-rely-on-time */
|
|
422
441
|
uint32(block.timestamp),
|
|
423
|
-
|
|
442
|
+
MovedFundsSweepRequestState.Pending
|
|
424
443
|
);
|
|
425
444
|
// We added a new moved funds sweep request for the target wallet
|
|
426
445
|
// so we must increment their request counter.
|
|
@@ -571,7 +590,7 @@ library MovingFunds {
|
|
|
571
590
|
/// correspond to appropriate Bitcoin transaction fields to produce
|
|
572
591
|
/// a provable transaction hash.
|
|
573
592
|
/// - The `sweepTx` should represent a Bitcoin transaction with
|
|
574
|
-
/// the first input pointing to a wallet's sweep request and,
|
|
593
|
+
/// the first input pointing to a wallet's sweep Pending request and,
|
|
575
594
|
/// optionally, the second input pointing to the wallet's main UTXO,
|
|
576
595
|
/// if the sweeping wallet has a main UTXO set. There should be only
|
|
577
596
|
/// one output locking funds on the sweeping wallet 20-byte public
|
|
@@ -734,8 +753,8 @@ library MovingFunds {
|
|
|
734
753
|
/// @notice Processes the Bitcoin moved funds sweep transaction input vector.
|
|
735
754
|
/// It extracts the first input and tries to match it with one of
|
|
736
755
|
/// the moved funds sweep requests targeting the sweeping wallet.
|
|
737
|
-
/// If the sweep request is
|
|
738
|
-
/// function marks it as
|
|
756
|
+
/// If the sweep request is an existing Pending request, this
|
|
757
|
+
/// function marks it as Processed. If the sweeping wallet has a
|
|
739
758
|
/// main UTXO, this function extracts the second input, makes sure
|
|
740
759
|
/// it refers to the wallet main UTXO, and marks that main UTXO as
|
|
741
760
|
/// correctly spent.
|
|
@@ -752,9 +771,8 @@ library MovingFunds {
|
|
|
752
771
|
/// - The input vector must consist of one mandatory and one optional
|
|
753
772
|
/// input.
|
|
754
773
|
/// - The mandatory input must be the first input in the vector
|
|
755
|
-
/// - The mandatory input must point to a
|
|
756
|
-
/// request that is
|
|
757
|
-
/// wallet
|
|
774
|
+
/// - The mandatory input must point to a Pending moved funds sweep
|
|
775
|
+
/// request that is targeted to the sweeping wallet
|
|
758
776
|
/// - The optional output must be the second input in the vector
|
|
759
777
|
/// - The optional input is required if the sweeping wallet has a
|
|
760
778
|
/// main UTXO (i.e. the `mainUtxo` is not zeroed). In that case,
|
|
@@ -828,10 +846,10 @@ library MovingFunds {
|
|
|
828
846
|
)
|
|
829
847
|
];
|
|
830
848
|
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
849
|
+
require(
|
|
850
|
+
sweepRequest.state == MovedFundsSweepRequestState.Pending,
|
|
851
|
+
"Sweep request must be in Pending state"
|
|
852
|
+
);
|
|
835
853
|
// We must check if the wallet extracted from the moved funds sweep
|
|
836
854
|
// transaction output is truly the owner of the sweep request connected
|
|
837
855
|
// with the swept UTXO. This is needed to prevent a case when a wallet
|
|
@@ -844,8 +862,7 @@ library MovingFunds {
|
|
|
844
862
|
// If the validation passed, the sweep request must be marked as
|
|
845
863
|
// processed and its value should be counted into the total inputs
|
|
846
864
|
// value sum.
|
|
847
|
-
|
|
848
|
-
sweepRequest.sweptAt = uint32(block.timestamp);
|
|
865
|
+
sweepRequest.state = MovedFundsSweepRequestState.Processed;
|
|
849
866
|
inputsTotalValue += sweepRequest.value;
|
|
850
867
|
|
|
851
868
|
self
|
|
@@ -925,4 +942,93 @@ library MovingFunds {
|
|
|
925
942
|
|
|
926
943
|
return (outpointTxHash, outpointIndex, inputLength);
|
|
927
944
|
}
|
|
945
|
+
|
|
946
|
+
/// @notice Notifies about a timed out moved funds sweep process. If the
|
|
947
|
+
/// wallet is not terminated yet, that function terminates
|
|
948
|
+
/// the wallet and slashes signing group members as a result.
|
|
949
|
+
/// Marks the given sweep request as TimedOut.
|
|
950
|
+
/// @param movingFundsTxHash 32-byte hash of the moving funds transaction
|
|
951
|
+
/// that caused the sweep request to be created
|
|
952
|
+
/// @param movingFundsTxOutputIndex Index of the moving funds transaction
|
|
953
|
+
/// output that is subject of the sweep request.
|
|
954
|
+
/// @param walletMembersIDs Identifiers of the wallet signing group members
|
|
955
|
+
/// @dev Requirements:
|
|
956
|
+
/// - The moved funds sweep request must be in the Pending state
|
|
957
|
+
/// - The moved funds sweep timeout must be actually exceeded
|
|
958
|
+
/// - The wallet must be either in the Live or MovingFunds or
|
|
959
|
+
/// Terminated state
|
|
960
|
+
/// - The expression `keccak256(abi.encode(walletMembersIDs))` must
|
|
961
|
+
/// be exactly the same as the hash stored under `membersIdsHash`
|
|
962
|
+
/// for the given `walletID`. Those IDs are not directly stored
|
|
963
|
+
/// in the contract for gas efficiency purposes but they can be
|
|
964
|
+
/// read from appropriate `DkgResultSubmitted` and `DkgResultApproved`
|
|
965
|
+
/// events of the `WalletRegistry` contract
|
|
966
|
+
function notifyMovedFundsSweepTimeout(
|
|
967
|
+
BridgeState.Storage storage self,
|
|
968
|
+
bytes32 movingFundsTxHash,
|
|
969
|
+
uint32 movingFundsTxOutputIndex,
|
|
970
|
+
uint32[] calldata walletMembersIDs
|
|
971
|
+
) external {
|
|
972
|
+
MovedFundsSweepRequest storage sweepRequest = self
|
|
973
|
+
.movedFundsSweepRequests[
|
|
974
|
+
uint256(
|
|
975
|
+
keccak256(
|
|
976
|
+
abi.encodePacked(
|
|
977
|
+
movingFundsTxHash,
|
|
978
|
+
movingFundsTxOutputIndex
|
|
979
|
+
)
|
|
980
|
+
)
|
|
981
|
+
)
|
|
982
|
+
];
|
|
983
|
+
|
|
984
|
+
require(
|
|
985
|
+
sweepRequest.state == MovedFundsSweepRequestState.Pending,
|
|
986
|
+
"Sweep request must be in Pending state"
|
|
987
|
+
);
|
|
988
|
+
|
|
989
|
+
require(
|
|
990
|
+
/* solhint-disable-next-line not-rely-on-time */
|
|
991
|
+
block.timestamp >
|
|
992
|
+
sweepRequest.createdAt + self.movedFundsSweepTimeout,
|
|
993
|
+
"Sweep request has not timed out yet"
|
|
994
|
+
);
|
|
995
|
+
|
|
996
|
+
bytes20 walletPubKeyHash = sweepRequest.walletPubKeyHash;
|
|
997
|
+
Wallets.Wallet storage wallet = self.registeredWallets[
|
|
998
|
+
walletPubKeyHash
|
|
999
|
+
];
|
|
1000
|
+
Wallets.WalletState walletState = wallet.state;
|
|
1001
|
+
|
|
1002
|
+
require(
|
|
1003
|
+
walletState == Wallets.WalletState.Live ||
|
|
1004
|
+
walletState == Wallets.WalletState.MovingFunds ||
|
|
1005
|
+
walletState == Wallets.WalletState.Terminated,
|
|
1006
|
+
"ECDSA wallet must be in Live or MovingFunds or Terminated state"
|
|
1007
|
+
);
|
|
1008
|
+
|
|
1009
|
+
sweepRequest.state = MovedFundsSweepRequestState.TimedOut;
|
|
1010
|
+
wallet.pendingMovedFundsSweepRequestsCount--;
|
|
1011
|
+
|
|
1012
|
+
if (
|
|
1013
|
+
walletState == Wallets.WalletState.Live ||
|
|
1014
|
+
walletState == Wallets.WalletState.MovingFunds
|
|
1015
|
+
) {
|
|
1016
|
+
self.terminateWallet(walletPubKeyHash);
|
|
1017
|
+
|
|
1018
|
+
self.ecdsaWalletRegistry.seize(
|
|
1019
|
+
self.movedFundsSweepTimeoutSlashingAmount,
|
|
1020
|
+
self.movedFundsSweepTimeoutNotifierRewardMultiplier,
|
|
1021
|
+
msg.sender,
|
|
1022
|
+
wallet.ecdsaWalletID,
|
|
1023
|
+
walletMembersIDs
|
|
1024
|
+
);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
// slither-disable-next-line reentrancy-events
|
|
1028
|
+
emit MovedFundsSweepTimedOut(
|
|
1029
|
+
walletPubKeyHash,
|
|
1030
|
+
movingFundsTxHash,
|
|
1031
|
+
movingFundsTxOutputIndex
|
|
1032
|
+
);
|
|
1033
|
+
}
|
|
928
1034
|
}
|
package/export.json
CHANGED
|
@@ -13918,6 +13918,31 @@
|
|
|
13918
13918
|
"MovingFunds": {
|
|
13919
13919
|
"address": "0x1a6a3e7Bb246158dF31d8f924B84D961669Ba4e5",
|
|
13920
13920
|
"abi": [
|
|
13921
|
+
{
|
|
13922
|
+
"anonymous": false,
|
|
13923
|
+
"inputs": [
|
|
13924
|
+
{
|
|
13925
|
+
"indexed": false,
|
|
13926
|
+
"internalType": "bytes20",
|
|
13927
|
+
"name": "walletPubKeyHash",
|
|
13928
|
+
"type": "bytes20"
|
|
13929
|
+
},
|
|
13930
|
+
{
|
|
13931
|
+
"indexed": false,
|
|
13932
|
+
"internalType": "bytes32",
|
|
13933
|
+
"name": "movingFundsTxHash",
|
|
13934
|
+
"type": "bytes32"
|
|
13935
|
+
},
|
|
13936
|
+
{
|
|
13937
|
+
"indexed": false,
|
|
13938
|
+
"internalType": "uint32",
|
|
13939
|
+
"name": "movingFundsTxOutputIndex",
|
|
13940
|
+
"type": "uint32"
|
|
13941
|
+
}
|
|
13942
|
+
],
|
|
13943
|
+
"name": "MovedFundsSweepTimedOut",
|
|
13944
|
+
"type": "event"
|
|
13945
|
+
},
|
|
13921
13946
|
{
|
|
13922
13947
|
"anonymous": false,
|
|
13923
13948
|
"inputs": [
|
|
@@ -14273,6 +14298,31 @@
|
|
|
14273
14298
|
"name": "GovernanceTransferred",
|
|
14274
14299
|
"type": "event"
|
|
14275
14300
|
},
|
|
14301
|
+
{
|
|
14302
|
+
"anonymous": false,
|
|
14303
|
+
"inputs": [
|
|
14304
|
+
{
|
|
14305
|
+
"indexed": false,
|
|
14306
|
+
"internalType": "bytes20",
|
|
14307
|
+
"name": "walletPubKeyHash",
|
|
14308
|
+
"type": "bytes20"
|
|
14309
|
+
},
|
|
14310
|
+
{
|
|
14311
|
+
"indexed": false,
|
|
14312
|
+
"internalType": "bytes32",
|
|
14313
|
+
"name": "movingFundsTxHash",
|
|
14314
|
+
"type": "bytes32"
|
|
14315
|
+
},
|
|
14316
|
+
{
|
|
14317
|
+
"indexed": false,
|
|
14318
|
+
"internalType": "uint32",
|
|
14319
|
+
"name": "movingFundsTxOutputIndex",
|
|
14320
|
+
"type": "uint32"
|
|
14321
|
+
}
|
|
14322
|
+
],
|
|
14323
|
+
"name": "MovedFundsSweepTimedOut",
|
|
14324
|
+
"type": "event"
|
|
14325
|
+
},
|
|
14276
14326
|
{
|
|
14277
14327
|
"anonymous": false,
|
|
14278
14328
|
"inputs": [
|
|
@@ -14387,6 +14437,24 @@
|
|
|
14387
14437
|
"internalType": "uint64",
|
|
14388
14438
|
"name": "movedFundsSweepTxMaxTotalFee",
|
|
14389
14439
|
"type": "uint64"
|
|
14440
|
+
},
|
|
14441
|
+
{
|
|
14442
|
+
"indexed": false,
|
|
14443
|
+
"internalType": "uint32",
|
|
14444
|
+
"name": "movedFundsSweepTimeout",
|
|
14445
|
+
"type": "uint32"
|
|
14446
|
+
},
|
|
14447
|
+
{
|
|
14448
|
+
"indexed": false,
|
|
14449
|
+
"internalType": "uint96",
|
|
14450
|
+
"name": "movedFundsSweepTimeoutSlashingAmount",
|
|
14451
|
+
"type": "uint96"
|
|
14452
|
+
},
|
|
14453
|
+
{
|
|
14454
|
+
"indexed": false,
|
|
14455
|
+
"internalType": "uint256",
|
|
14456
|
+
"name": "movedFundsSweepTimeoutNotifierRewardMultiplier",
|
|
14457
|
+
"type": "uint256"
|
|
14390
14458
|
}
|
|
14391
14459
|
],
|
|
14392
14460
|
"name": "MovingFundsParametersUpdated",
|
|
@@ -15019,9 +15087,9 @@
|
|
|
15019
15087
|
"type": "uint32"
|
|
15020
15088
|
},
|
|
15021
15089
|
{
|
|
15022
|
-
"internalType": "
|
|
15023
|
-
"name": "
|
|
15024
|
-
"type": "
|
|
15090
|
+
"internalType": "enum MovingFunds.MovedFundsSweepRequestState",
|
|
15091
|
+
"name": "state",
|
|
15092
|
+
"type": "uint8"
|
|
15025
15093
|
}
|
|
15026
15094
|
],
|
|
15027
15095
|
"internalType": "struct MovingFunds.MovedFundsSweepRequest",
|
|
@@ -15065,6 +15133,21 @@
|
|
|
15065
15133
|
"internalType": "uint64",
|
|
15066
15134
|
"name": "movedFundsSweepTxMaxTotalFee",
|
|
15067
15135
|
"type": "uint64"
|
|
15136
|
+
},
|
|
15137
|
+
{
|
|
15138
|
+
"internalType": "uint32",
|
|
15139
|
+
"name": "movedFundsSweepTimeout",
|
|
15140
|
+
"type": "uint32"
|
|
15141
|
+
},
|
|
15142
|
+
{
|
|
15143
|
+
"internalType": "uint96",
|
|
15144
|
+
"name": "movedFundsSweepTimeoutSlashingAmount",
|
|
15145
|
+
"type": "uint96"
|
|
15146
|
+
},
|
|
15147
|
+
{
|
|
15148
|
+
"internalType": "uint256",
|
|
15149
|
+
"name": "movedFundsSweepTimeoutNotifierRewardMultiplier",
|
|
15150
|
+
"type": "uint256"
|
|
15068
15151
|
}
|
|
15069
15152
|
],
|
|
15070
15153
|
"stateMutability": "view",
|
|
@@ -15128,6 +15211,29 @@
|
|
|
15128
15211
|
"stateMutability": "nonpayable",
|
|
15129
15212
|
"type": "function"
|
|
15130
15213
|
},
|
|
15214
|
+
{
|
|
15215
|
+
"inputs": [
|
|
15216
|
+
{
|
|
15217
|
+
"internalType": "bytes32",
|
|
15218
|
+
"name": "movingFundsTxHash",
|
|
15219
|
+
"type": "bytes32"
|
|
15220
|
+
},
|
|
15221
|
+
{
|
|
15222
|
+
"internalType": "uint32",
|
|
15223
|
+
"name": "movingFundsTxOutputIndex",
|
|
15224
|
+
"type": "uint32"
|
|
15225
|
+
},
|
|
15226
|
+
{
|
|
15227
|
+
"internalType": "uint32[]",
|
|
15228
|
+
"name": "walletMembersIDs",
|
|
15229
|
+
"type": "uint32[]"
|
|
15230
|
+
}
|
|
15231
|
+
],
|
|
15232
|
+
"name": "notifyMovedFundsSweepTimeout",
|
|
15233
|
+
"outputs": [],
|
|
15234
|
+
"stateMutability": "nonpayable",
|
|
15235
|
+
"type": "function"
|
|
15236
|
+
},
|
|
15131
15237
|
{
|
|
15132
15238
|
"inputs": [
|
|
15133
15239
|
{
|
|
@@ -16273,6 +16379,41 @@
|
|
|
16273
16379
|
"stateMutability": "view",
|
|
16274
16380
|
"type": "function"
|
|
16275
16381
|
},
|
|
16382
|
+
{
|
|
16383
|
+
"inputs": [
|
|
16384
|
+
{
|
|
16385
|
+
"internalType": "bytes20",
|
|
16386
|
+
"name": "walletPubKeyHash",
|
|
16387
|
+
"type": "bytes20"
|
|
16388
|
+
},
|
|
16389
|
+
{
|
|
16390
|
+
"components": [
|
|
16391
|
+
{
|
|
16392
|
+
"internalType": "bytes32",
|
|
16393
|
+
"name": "txHash",
|
|
16394
|
+
"type": "bytes32"
|
|
16395
|
+
},
|
|
16396
|
+
{
|
|
16397
|
+
"internalType": "uint32",
|
|
16398
|
+
"name": "txOutputIndex",
|
|
16399
|
+
"type": "uint32"
|
|
16400
|
+
},
|
|
16401
|
+
{
|
|
16402
|
+
"internalType": "uint64",
|
|
16403
|
+
"name": "txOutputValue",
|
|
16404
|
+
"type": "uint64"
|
|
16405
|
+
}
|
|
16406
|
+
],
|
|
16407
|
+
"internalType": "struct BitcoinTx.UTXO",
|
|
16408
|
+
"name": "utxo",
|
|
16409
|
+
"type": "tuple"
|
|
16410
|
+
}
|
|
16411
|
+
],
|
|
16412
|
+
"name": "timeoutPendingMovedFundsSweepRequest",
|
|
16413
|
+
"outputs": [],
|
|
16414
|
+
"stateMutability": "nonpayable",
|
|
16415
|
+
"type": "function"
|
|
16416
|
+
},
|
|
16276
16417
|
{
|
|
16277
16418
|
"inputs": [
|
|
16278
16419
|
{
|
|
@@ -16394,6 +16535,21 @@
|
|
|
16394
16535
|
"internalType": "uint64",
|
|
16395
16536
|
"name": "movedFundsSweepTxMaxTotalFee",
|
|
16396
16537
|
"type": "uint64"
|
|
16538
|
+
},
|
|
16539
|
+
{
|
|
16540
|
+
"internalType": "uint32",
|
|
16541
|
+
"name": "movedFundsSweepTimeout",
|
|
16542
|
+
"type": "uint32"
|
|
16543
|
+
},
|
|
16544
|
+
{
|
|
16545
|
+
"internalType": "uint96",
|
|
16546
|
+
"name": "movedFundsSweepTimeoutSlashingAmount",
|
|
16547
|
+
"type": "uint96"
|
|
16548
|
+
},
|
|
16549
|
+
{
|
|
16550
|
+
"internalType": "uint256",
|
|
16551
|
+
"name": "movedFundsSweepTimeoutNotifierRewardMultiplier",
|
|
16552
|
+
"type": "uint256"
|
|
16397
16553
|
}
|
|
16398
16554
|
],
|
|
16399
16555
|
"name": "updateMovingFundsParameters",
|