@keep-network/tbtc-v2 0.1.1-dev.68 → 0.1.1-dev.70
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 +21 -21
- package/artifacts/DefaultProxyAdmin.json +5 -5
- package/artifacts/Deposit.json +11 -11
- package/artifacts/DepositSweep.json +9 -9
- package/artifacts/EcdsaDkgValidator.json +4 -4
- package/artifacts/EcdsaInactivity.json +3 -3
- package/artifacts/Fraud.json +21 -21
- 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 +16 -16
- package/artifacts/NuCypherStakingEscrow.json +1 -1
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeaconStub.json +3 -3
- package/artifacts/Redemption.json +13 -13
- package/artifacts/ReimbursementPool.json +5 -5
- package/artifacts/Relay.json +11 -11
- package/artifacts/SortitionPool.json +6 -6
- 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 +12 -12
- package/artifacts/WalletRegistry_Implementation.json +3 -3
- package/artifacts/WalletRegistry_Proxy.json +12 -12
- package/artifacts/Wallets.json +7 -7
- package/artifacts/solcInputs/{849676ae534cda0adec6ccf4d074608c.json → 922f95457ca7980d018c851fb3308a7e.json} +5 -5
- 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 +34 -34
- 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 +4 -4
- 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 +5 -5
- 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 +9 -9
- 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 +6 -6
- 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/IVault.sol/IVault.dbg.json +1 -1
- package/build/contracts/vault/TBTCVault.sol/TBTCVault.dbg.json +1 -1
- package/contracts/bridge/Bridge.sol +45 -35
- package/contracts/bridge/Deposit.sol +2 -2
- package/contracts/bridge/Fraud.sol +38 -22
- package/contracts/bridge/MovingFunds.sol +10 -7
- package/contracts/bridge/Redemption.sol +4 -4
- package/export.json +36 -36
- package/package.json +1 -1
|
@@ -59,7 +59,6 @@ import "../bank/Bank.sol";
|
|
|
59
59
|
/// functionalities in this contract is: deposit, sweep, redemption,
|
|
60
60
|
/// moving funds, wallet lifecycle, frauds, parameters.
|
|
61
61
|
///
|
|
62
|
-
/// TODO: Revisit all events and look which parameters should be indexed.
|
|
63
62
|
/// TODO: Align the convention around `param` and `dev` endings. They should
|
|
64
63
|
/// not have a punctuation mark.
|
|
65
64
|
contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
@@ -76,10 +75,10 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
76
75
|
event DepositRevealed(
|
|
77
76
|
bytes32 fundingTxHash,
|
|
78
77
|
uint32 fundingOutputIndex,
|
|
79
|
-
address depositor,
|
|
78
|
+
address indexed depositor,
|
|
80
79
|
uint64 amount,
|
|
81
80
|
bytes8 blindingFactor,
|
|
82
|
-
bytes20 walletPubKeyHash,
|
|
81
|
+
bytes20 indexed walletPubKeyHash,
|
|
83
82
|
bytes20 refundPubKeyHash,
|
|
84
83
|
bytes4 refundLocktime,
|
|
85
84
|
address vault
|
|
@@ -88,21 +87,21 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
88
87
|
event DepositsSwept(bytes20 walletPubKeyHash, bytes32 sweepTxHash);
|
|
89
88
|
|
|
90
89
|
event RedemptionRequested(
|
|
91
|
-
bytes20 walletPubKeyHash,
|
|
90
|
+
bytes20 indexed walletPubKeyHash,
|
|
92
91
|
bytes redeemerOutputScript,
|
|
93
|
-
address redeemer,
|
|
92
|
+
address indexed redeemer,
|
|
94
93
|
uint64 requestedAmount,
|
|
95
94
|
uint64 treasuryFee,
|
|
96
95
|
uint64 txMaxFee
|
|
97
96
|
);
|
|
98
97
|
|
|
99
98
|
event RedemptionsCompleted(
|
|
100
|
-
bytes20 walletPubKeyHash,
|
|
99
|
+
bytes20 indexed walletPubKeyHash,
|
|
101
100
|
bytes32 redemptionTxHash
|
|
102
101
|
);
|
|
103
102
|
|
|
104
103
|
event RedemptionTimedOut(
|
|
105
|
-
bytes20 walletPubKeyHash,
|
|
104
|
+
bytes20 indexed walletPubKeyHash,
|
|
106
105
|
bytes redeemerOutputScript
|
|
107
106
|
);
|
|
108
107
|
|
|
@@ -112,26 +111,29 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
112
111
|
);
|
|
113
112
|
|
|
114
113
|
event MovingFundsCommitmentSubmitted(
|
|
115
|
-
bytes20 walletPubKeyHash,
|
|
114
|
+
bytes20 indexed walletPubKeyHash,
|
|
116
115
|
bytes20[] targetWallets,
|
|
117
116
|
address submitter
|
|
118
117
|
);
|
|
119
118
|
|
|
120
|
-
event MovingFundsTimeoutReset(bytes20 walletPubKeyHash);
|
|
119
|
+
event MovingFundsTimeoutReset(bytes20 indexed walletPubKeyHash);
|
|
121
120
|
|
|
122
121
|
event MovingFundsCompleted(
|
|
123
|
-
bytes20 walletPubKeyHash,
|
|
122
|
+
bytes20 indexed walletPubKeyHash,
|
|
124
123
|
bytes32 movingFundsTxHash
|
|
125
124
|
);
|
|
126
125
|
|
|
127
|
-
event MovingFundsTimedOut(bytes20 walletPubKeyHash);
|
|
126
|
+
event MovingFundsTimedOut(bytes20 indexed walletPubKeyHash);
|
|
128
127
|
|
|
129
|
-
event MovingFundsBelowDustReported(bytes20 walletPubKeyHash);
|
|
128
|
+
event MovingFundsBelowDustReported(bytes20 indexed walletPubKeyHash);
|
|
130
129
|
|
|
131
|
-
event MovedFundsSwept(
|
|
130
|
+
event MovedFundsSwept(
|
|
131
|
+
bytes20 indexed walletPubKeyHash,
|
|
132
|
+
bytes32 sweepTxHash
|
|
133
|
+
);
|
|
132
134
|
|
|
133
135
|
event MovedFundsSweepTimedOut(
|
|
134
|
-
bytes20 walletPubKeyHash,
|
|
136
|
+
bytes20 indexed walletPubKeyHash,
|
|
135
137
|
bytes32 movingFundsTxHash,
|
|
136
138
|
uint32 movingFundsTxOutputIndex
|
|
137
139
|
);
|
|
@@ -159,17 +161,20 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
159
161
|
);
|
|
160
162
|
|
|
161
163
|
event FraudChallengeSubmitted(
|
|
162
|
-
bytes20 walletPubKeyHash,
|
|
164
|
+
bytes20 indexed walletPubKeyHash,
|
|
163
165
|
bytes32 sighash,
|
|
164
166
|
uint8 v,
|
|
165
167
|
bytes32 r,
|
|
166
168
|
bytes32 s
|
|
167
169
|
);
|
|
168
170
|
|
|
169
|
-
event FraudChallengeDefeated(
|
|
171
|
+
event FraudChallengeDefeated(
|
|
172
|
+
bytes20 indexed walletPubKeyHash,
|
|
173
|
+
bytes32 sighash
|
|
174
|
+
);
|
|
170
175
|
|
|
171
176
|
event FraudChallengeDefeatTimedOut(
|
|
172
|
-
bytes20 walletPubKeyHash,
|
|
177
|
+
bytes20 indexed walletPubKeyHash,
|
|
173
178
|
bytes32 sighash
|
|
174
179
|
);
|
|
175
180
|
|
|
@@ -888,12 +893,14 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
888
893
|
/// challenge or confiscated otherwise.
|
|
889
894
|
/// @param walletPublicKey The public key of the wallet in the uncompressed
|
|
890
895
|
/// and unprefixed format (64 bytes)
|
|
891
|
-
/// @param
|
|
892
|
-
///
|
|
893
|
-
///
|
|
894
|
-
///
|
|
895
|
-
///
|
|
896
|
-
///
|
|
896
|
+
/// @param preimageSha256 The hash that was generated by applying SHA-256
|
|
897
|
+
/// one time over the preimage used during input signing. The preimage
|
|
898
|
+
/// is a serialized subset of the transaction and its structure
|
|
899
|
+
/// depends on the transaction input (see BIP-143 for reference).
|
|
900
|
+
/// Notice that applying SHA-256 over the `preimageSha256` results
|
|
901
|
+
/// in `sighash`. The path from `preimage` to `sighash` looks like
|
|
902
|
+
/// this:
|
|
903
|
+
/// preimage -> (SHA-256) -> preimageSha256 -> (SHA-256) -> sighash
|
|
897
904
|
/// @param signature Bitcoin signature in the R/S/V format
|
|
898
905
|
/// @dev Requirements:
|
|
899
906
|
/// - Wallet behind `walletPublicKey` must be in Live or MovingFunds
|
|
@@ -902,13 +909,14 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
902
909
|
/// fraud challenge deposit
|
|
903
910
|
/// - The signature (represented by r, s and v) must be generated by
|
|
904
911
|
/// the wallet behind `walletPubKey` during signing of `sighash`
|
|
912
|
+
/// which was calculated from `preimageSha256`
|
|
905
913
|
/// - Wallet can be challenged for the given signature only once
|
|
906
914
|
function submitFraudChallenge(
|
|
907
915
|
bytes calldata walletPublicKey,
|
|
908
|
-
|
|
916
|
+
bytes memory preimageSha256,
|
|
909
917
|
BitcoinTx.RSVSignature calldata signature
|
|
910
918
|
) external payable {
|
|
911
|
-
self.submitFraudChallenge(walletPublicKey,
|
|
919
|
+
self.submitFraudChallenge(walletPublicKey, preimageSha256, signature);
|
|
912
920
|
}
|
|
913
921
|
|
|
914
922
|
/// @notice Allows to defeat a pending fraud challenge against a wallet if
|
|
@@ -992,17 +1000,19 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
992
1000
|
/// @param walletPublicKey The public key of the wallet in the uncompressed
|
|
993
1001
|
/// and unprefixed format (64 bytes)
|
|
994
1002
|
/// @param walletMembersIDs Identifiers of the wallet signing group members
|
|
995
|
-
/// @param
|
|
996
|
-
///
|
|
997
|
-
///
|
|
998
|
-
///
|
|
999
|
-
///
|
|
1000
|
-
///
|
|
1003
|
+
/// @param preimageSha256 The hash that was generated by applying SHA-256
|
|
1004
|
+
/// one time over the preimage used during input signing. The preimage
|
|
1005
|
+
/// is a serialized subset of the transaction and its structure
|
|
1006
|
+
/// depends on the transaction input (see BIP-143 for reference).
|
|
1007
|
+
/// Notice that applying SHA-256 over the `preimageSha256` results
|
|
1008
|
+
/// in `sighash`. The path from `preimage` to `sighash` looks like
|
|
1009
|
+
/// this:
|
|
1010
|
+
/// preimage -> (SHA-256) -> preimageSha256 -> (SHA-256) -> sighash
|
|
1001
1011
|
/// @dev Requirements:
|
|
1002
1012
|
/// - The wallet must be in the Live or MovingFunds or Closing or
|
|
1003
1013
|
/// Terminated state
|
|
1004
|
-
/// - The `walletPublicKey` and `sighash`
|
|
1005
|
-
/// challenge
|
|
1014
|
+
/// - The `walletPublicKey` and `sighash` calculated from
|
|
1015
|
+
/// `preimageSha256` must identify an open fraud challenge
|
|
1006
1016
|
/// - The expression `keccak256(abi.encode(walletMembersIDs))` must
|
|
1007
1017
|
/// be exactly the same as the hash stored under `membersIdsHash`
|
|
1008
1018
|
/// for the given `walletID`. Those IDs are not directly stored
|
|
@@ -1014,12 +1024,12 @@ contract Bridge is Governable, EcdsaWalletOwner, Initializable {
|
|
|
1014
1024
|
function notifyFraudChallengeDefeatTimeout(
|
|
1015
1025
|
bytes calldata walletPublicKey,
|
|
1016
1026
|
uint32[] calldata walletMembersIDs,
|
|
1017
|
-
|
|
1027
|
+
bytes memory preimageSha256
|
|
1018
1028
|
) external {
|
|
1019
1029
|
self.notifyFraudChallengeDefeatTimeout(
|
|
1020
1030
|
walletPublicKey,
|
|
1021
1031
|
walletMembersIDs,
|
|
1022
|
-
|
|
1032
|
+
preimageSha256
|
|
1023
1033
|
);
|
|
1024
1034
|
}
|
|
1025
1035
|
|
|
@@ -103,10 +103,10 @@ library Deposit {
|
|
|
103
103
|
event DepositRevealed(
|
|
104
104
|
bytes32 fundingTxHash,
|
|
105
105
|
uint32 fundingOutputIndex,
|
|
106
|
-
address depositor,
|
|
106
|
+
address indexed depositor,
|
|
107
107
|
uint64 amount,
|
|
108
108
|
bytes8 blindingFactor,
|
|
109
|
-
bytes20 walletPubKeyHash,
|
|
109
|
+
bytes20 indexed walletPubKeyHash,
|
|
110
110
|
bytes20 refundPubKeyHash,
|
|
111
111
|
bytes4 refundLocktime,
|
|
112
112
|
address vault
|
|
@@ -74,17 +74,20 @@ library Fraud {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
event FraudChallengeSubmitted(
|
|
77
|
-
bytes20 walletPubKeyHash,
|
|
77
|
+
bytes20 indexed walletPubKeyHash,
|
|
78
78
|
bytes32 sighash,
|
|
79
79
|
uint8 v,
|
|
80
80
|
bytes32 r,
|
|
81
81
|
bytes32 s
|
|
82
82
|
);
|
|
83
83
|
|
|
84
|
-
event FraudChallengeDefeated(
|
|
84
|
+
event FraudChallengeDefeated(
|
|
85
|
+
bytes20 indexed walletPubKeyHash,
|
|
86
|
+
bytes32 sighash
|
|
87
|
+
);
|
|
85
88
|
|
|
86
89
|
event FraudChallengeDefeatTimedOut(
|
|
87
|
-
bytes20 walletPubKeyHash,
|
|
90
|
+
bytes20 indexed walletPubKeyHash,
|
|
88
91
|
// Sighash calculated as a Bitcoin's hash256 (double sha2) of:
|
|
89
92
|
// - a preimage of a transaction spending UTXO according to the protocol
|
|
90
93
|
// rules OR
|
|
@@ -109,12 +112,14 @@ library Fraud {
|
|
|
109
112
|
/// challenge or confiscated otherwise
|
|
110
113
|
/// @param walletPublicKey The public key of the wallet in the uncompressed
|
|
111
114
|
/// and unprefixed format (64 bytes)
|
|
112
|
-
/// @param
|
|
113
|
-
///
|
|
114
|
-
///
|
|
115
|
-
///
|
|
116
|
-
///
|
|
117
|
-
///
|
|
115
|
+
/// @param preimageSha256 The hash that was generated by applying SHA-256
|
|
116
|
+
/// one time over the preimage used during input signing. The preimage
|
|
117
|
+
/// is a serialized subset of the transaction and its structure
|
|
118
|
+
/// depends on the transaction input (see BIP-143 for reference).
|
|
119
|
+
/// Notice that applying SHA-256 over the `preimageSha256` results
|
|
120
|
+
/// in `sighash`. The path from `preimage` to `sighash` looks like
|
|
121
|
+
/// this:
|
|
122
|
+
/// preimage -> (SHA-256) -> preimageSha256 -> (SHA-256) -> sighash
|
|
118
123
|
/// @param signature Bitcoin signature in the R/S/V format
|
|
119
124
|
/// @dev Requirements:
|
|
120
125
|
/// - Wallet behind `walletPublicKey` must be in Live or MovingFunds
|
|
@@ -122,12 +127,13 @@ library Fraud {
|
|
|
122
127
|
/// - The challenger must send appropriate amount of ETH used as
|
|
123
128
|
/// fraud challenge deposit
|
|
124
129
|
/// - The signature (represented by r, s and v) must be generated by
|
|
125
|
-
/// the wallet behind `
|
|
130
|
+
/// the wallet behind `walletPubKey` during signing of `sighash`
|
|
131
|
+
/// which was calculated from `preimageSha256`
|
|
126
132
|
/// - Wallet can be challenged for the given signature only once
|
|
127
133
|
function submitFraudChallenge(
|
|
128
134
|
BridgeState.Storage storage self,
|
|
129
135
|
bytes calldata walletPublicKey,
|
|
130
|
-
|
|
136
|
+
bytes memory preimageSha256,
|
|
131
137
|
BitcoinTx.RSVSignature calldata signature
|
|
132
138
|
) external {
|
|
133
139
|
require(
|
|
@@ -135,6 +141,12 @@ library Fraud {
|
|
|
135
141
|
"The amount of ETH deposited is too low"
|
|
136
142
|
);
|
|
137
143
|
|
|
144
|
+
// To prevent ECDSA signature forgery `sighash` must be calculated
|
|
145
|
+
// inside the function and not passed as a function parameter.
|
|
146
|
+
// Signature forgery could result in a wrongful fraud accusation
|
|
147
|
+
// against a wallet.
|
|
148
|
+
bytes32 sighash = sha256(preimageSha256);
|
|
149
|
+
|
|
138
150
|
require(
|
|
139
151
|
CheckBitcoinSigs.checkSig(
|
|
140
152
|
walletPublicKey,
|
|
@@ -335,8 +347,8 @@ library Fraud {
|
|
|
335
347
|
/// @notice Notifies about defeat timeout for the given fraud challenge.
|
|
336
348
|
/// Can be called only if there was a fraud challenge identified by
|
|
337
349
|
/// the provided `walletPublicKey` and `sighash` and it was not
|
|
338
|
-
/// defeated on time. The amount of time that needs to pass after
|
|
339
|
-
/// fraud challenge is reported is indicated by the
|
|
350
|
+
/// defeated on time. The amount of time that needs to pass after
|
|
351
|
+
/// a fraud challenge is reported is indicated by the
|
|
340
352
|
/// `challengeDefeatTimeout`. After a successful fraud challenge
|
|
341
353
|
/// defeat timeout notification the fraud challenge is marked as
|
|
342
354
|
/// resolved, the stake of each operator is slashed, the ether
|
|
@@ -345,17 +357,19 @@ library Fraud {
|
|
|
345
357
|
/// @param walletPublicKey The public key of the wallet in the uncompressed
|
|
346
358
|
/// and unprefixed format (64 bytes)
|
|
347
359
|
/// @param walletMembersIDs Identifiers of the wallet signing group members
|
|
348
|
-
/// @param
|
|
349
|
-
///
|
|
350
|
-
///
|
|
351
|
-
///
|
|
352
|
-
///
|
|
353
|
-
///
|
|
360
|
+
/// @param preimageSha256 The hash that was generated by applying SHA-256
|
|
361
|
+
/// one time over the preimage used during input signing. The preimage
|
|
362
|
+
/// is a serialized subset of the transaction and its structure
|
|
363
|
+
/// depends on the transaction input (see BIP-143 for reference).
|
|
364
|
+
/// Notice that applying SHA-256 over the `preimageSha256` results
|
|
365
|
+
/// in `sighash`. The path from `preimage` to `sighash` looks like
|
|
366
|
+
/// this:
|
|
367
|
+
/// preimage -> (SHA-256) -> preimageSha256 -> (SHA-256) -> sighash
|
|
354
368
|
/// @dev Requirements:
|
|
355
369
|
/// - The wallet must be in the Live or MovingFunds or Closing or
|
|
356
370
|
/// Terminated state
|
|
357
|
-
/// - The `walletPublicKey` and `sighash`
|
|
358
|
-
/// challenge
|
|
371
|
+
/// - The `walletPublicKey` and `sighash` calculated from
|
|
372
|
+
/// `preimageSha256` must identify an open fraud challenge
|
|
359
373
|
/// - The expression `keccak256(abi.encode(walletMembersIDs))` must
|
|
360
374
|
/// be exactly the same as the hash stored under `membersIdsHash`
|
|
361
375
|
/// for the given `walletID`. Those IDs are not directly stored
|
|
@@ -368,8 +382,10 @@ library Fraud {
|
|
|
368
382
|
BridgeState.Storage storage self,
|
|
369
383
|
bytes calldata walletPublicKey,
|
|
370
384
|
uint32[] calldata walletMembersIDs,
|
|
371
|
-
|
|
385
|
+
bytes memory preimageSha256
|
|
372
386
|
) external {
|
|
387
|
+
bytes32 sighash = sha256(preimageSha256);
|
|
388
|
+
|
|
373
389
|
uint256 challengeKey = uint256(
|
|
374
390
|
keccak256(abi.encodePacked(walletPublicKey, sighash))
|
|
375
391
|
);
|
|
@@ -93,26 +93,29 @@ library MovingFunds {
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
event MovingFundsCommitmentSubmitted(
|
|
96
|
-
bytes20 walletPubKeyHash,
|
|
96
|
+
bytes20 indexed walletPubKeyHash,
|
|
97
97
|
bytes20[] targetWallets,
|
|
98
98
|
address submitter
|
|
99
99
|
);
|
|
100
100
|
|
|
101
|
-
event MovingFundsTimeoutReset(bytes20 walletPubKeyHash);
|
|
101
|
+
event MovingFundsTimeoutReset(bytes20 indexed walletPubKeyHash);
|
|
102
102
|
|
|
103
103
|
event MovingFundsCompleted(
|
|
104
|
-
bytes20 walletPubKeyHash,
|
|
104
|
+
bytes20 indexed walletPubKeyHash,
|
|
105
105
|
bytes32 movingFundsTxHash
|
|
106
106
|
);
|
|
107
107
|
|
|
108
|
-
event MovingFundsTimedOut(bytes20 walletPubKeyHash);
|
|
108
|
+
event MovingFundsTimedOut(bytes20 indexed walletPubKeyHash);
|
|
109
109
|
|
|
110
|
-
event MovingFundsBelowDustReported(bytes20 walletPubKeyHash);
|
|
110
|
+
event MovingFundsBelowDustReported(bytes20 indexed walletPubKeyHash);
|
|
111
111
|
|
|
112
|
-
event MovedFundsSwept(
|
|
112
|
+
event MovedFundsSwept(
|
|
113
|
+
bytes20 indexed walletPubKeyHash,
|
|
114
|
+
bytes32 sweepTxHash
|
|
115
|
+
);
|
|
113
116
|
|
|
114
117
|
event MovedFundsSweepTimedOut(
|
|
115
|
-
bytes20 walletPubKeyHash,
|
|
118
|
+
bytes20 indexed walletPubKeyHash,
|
|
116
119
|
bytes32 movingFundsTxHash,
|
|
117
120
|
uint32 movingFundsTxOutputIndex
|
|
118
121
|
);
|
|
@@ -213,21 +213,21 @@ library Redemption {
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
event RedemptionRequested(
|
|
216
|
-
bytes20 walletPubKeyHash,
|
|
216
|
+
bytes20 indexed walletPubKeyHash,
|
|
217
217
|
bytes redeemerOutputScript,
|
|
218
|
-
address redeemer,
|
|
218
|
+
address indexed redeemer,
|
|
219
219
|
uint64 requestedAmount,
|
|
220
220
|
uint64 treasuryFee,
|
|
221
221
|
uint64 txMaxFee
|
|
222
222
|
);
|
|
223
223
|
|
|
224
224
|
event RedemptionsCompleted(
|
|
225
|
-
bytes20 walletPubKeyHash,
|
|
225
|
+
bytes20 indexed walletPubKeyHash,
|
|
226
226
|
bytes32 redemptionTxHash
|
|
227
227
|
);
|
|
228
228
|
|
|
229
229
|
event RedemptionTimedOut(
|
|
230
|
-
bytes20 walletPubKeyHash,
|
|
230
|
+
bytes20 indexed walletPubKeyHash,
|
|
231
231
|
bytes redeemerOutputScript
|
|
232
232
|
);
|
|
233
233
|
|