@keep-network/tbtc-v2 1.0.0-dev.4 → 1.0.0-dev.6
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/BLS.json +1 -1
- package/artifacts/Bank.json +3 -3
- package/artifacts/BeaconAuthorization.json +1 -1
- package/artifacts/BeaconDkg.json +1 -1
- package/artifacts/BeaconDkgValidator.json +1 -1
- package/artifacts/BeaconInactivity.json +1 -1
- package/artifacts/BeaconSortitionPool.json +3 -3
- package/artifacts/Bridge.json +5 -5
- package/artifacts/BridgeGovernance.json +19 -19
- package/artifacts/BridgeGovernanceParameters.json +7 -7
- package/artifacts/Deposit.json +7 -7
- package/artifacts/DepositSweep.json +7 -7
- package/artifacts/DonationVault.json +188 -0
- package/artifacts/EcdsaDkgValidator.json +1 -1
- package/artifacts/EcdsaInactivity.json +1 -1
- package/artifacts/EcdsaSortitionPool.json +3 -3
- package/artifacts/Fraud.json +9 -9
- 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/LightRelay.json +3 -3
- package/artifacts/MaintainerProxy.json +15 -15
- package/artifacts/MovingFunds.json +7 -7
- package/artifacts/NuCypherStakingEscrow.json +1 -1
- package/artifacts/NuCypherToken.json +2 -2
- package/artifacts/RandomBeacon.json +2 -2
- package/artifacts/RandomBeaconChaosnet.json +2 -2
- package/artifacts/RandomBeaconGovernance.json +2 -2
- package/artifacts/Redemption.json +7 -7
- package/artifacts/ReimbursementPool.json +2 -2
- package/artifacts/T.json +2 -2
- package/artifacts/TBTC.json +3 -3
- package/artifacts/TBTCToken.json +3 -3
- package/artifacts/TBTCVault.json +9 -9
- 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 +7 -7
- package/artifacts/solcInputs/{b63dab89a2e89a0f54eb7f775a5bd516.json → 79a96d1cf4af176d93e6844dc248dcff.json} +2 -2
- package/artifacts/solcInputs/{c88caf1374ff7ffc912d8c7e982bd645.json → fccb130292c8c7cc958ab4fa31a3e180.json} +2 -2
- 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/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/BridgeGovernance.sol/BridgeGovernance.dbg.json +1 -1
- package/build/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +2 -2
- package/build/contracts/bridge/BridgeGovernanceParameters.sol/BridgeGovernanceParameters.dbg.json +1 -1
- 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/maintainer/MaintainerProxy.sol/MaintainerProxy.dbg.json +1 -1
- package/build/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +2 -2
- package/build/contracts/relay/LightRelay.sol/ILightRelay.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/LightRelay.dbg.json +1 -1
- package/build/contracts/relay/LightRelay.sol/RelayUtils.dbg.json +1 -1
- 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/TBTCOptimisticMinting.sol/TBTCOptimisticMinting.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/bridge/Bridge.sol +1 -1
- package/contracts/bridge/BridgeState.sol +1 -1
- package/deploy/01_deploy_light_relay.ts +1 -1
- package/deploy/05_deploy_bank.ts +1 -2
- package/deploy/06_deploy_bridge.ts +3 -2
- package/deploy/{11_deploy_tbtc_vault.ts → 07_deploy_tbtc_vault.ts} +0 -0
- package/deploy/08_deploy_donation_vault.ts +34 -0
- package/deploy/{12_deploy_bridge_governance.ts → 09_deploy_bridge_governance.ts} +3 -2
- package/deploy/{13_deploy_maintainer_proxy.ts → 10_deploy_maintainer_proxy.ts} +0 -0
- package/deploy/{14_bank_update_bridge.ts → 11_bank_update_bridge.ts} +0 -0
- package/deploy/{15_authorize_spv_maintainer_in_bridge.ts → 12_authorize_tbtc_vault_in_bridge.ts} +7 -5
- package/deploy/{22_authorize_maintainer_proxy_in_bridge.ts → 13_authorize_maintainer_proxy_in_bridge.ts} +0 -0
- package/deploy/{10_set_deposit_params.ts → 14_set_deposit_parameters.ts} +1 -1
- package/deploy/15_set_wallet_parameters.ts +42 -0
- package/deploy/{07_disable_fraud_challenges.ts → 16_disable_fraud_challenges.ts} +7 -8
- package/deploy/{08_disable_redemptions.ts → 17_disable_redemptions.ts} +6 -4
- package/deploy/{09_disable_moving_funds.ts → 18_disable_moving_funds.ts} +16 -7
- package/deploy/19_authorize_spv_maintainer_in_bridge.ts +31 -0
- package/deploy/{16_transfer_bank_ownership.ts → 20_transfer_bank_ownership.ts} +1 -1
- package/deploy/{17_transfer_bridge_governance.ts → 21_transfer_bridge_governance.ts} +11 -1
- package/deploy/{18_transfer_bridge_governance_ownership.ts → 22_transfer_bridge_governance_ownership.ts} +0 -0
- package/deploy/{19_transfer_tbtc_vault_ownership.ts → 23_transfer_tbtc_vault_ownership.ts} +0 -0
- package/deploy/{20_transfer_maintainer_proxy_ownership.ts → 24_transfer_maintainer_proxy_ownership.ts} +0 -0
- package/deploy/{21_transfer_proxy_admin_ownership.ts → 25_transfer_proxy_admin_ownership.ts} +0 -0
- package/deploy/{23_authorize_maintainer_proxy_in_reimbursement_pool.ts → 26_authorize_maintainer_proxy_in_reimbursement_pool.ts} +7 -0
- package/deploy/{24_authorize_bridge_in_reimbursement_pool.ts → 27_authorize_bridge_in_reimbursement_pool.ts} +7 -0
- package/deploy/{25_deploy_proxy_admin_with_deputy.ts → 28_deploy_proxy_admin_with_deputy.ts} +0 -0
- package/export/artifacts/contracts/bridge/Bridge.sol/Bridge.json +6 -6
- package/export/artifacts/contracts/bridge/BridgeGovernance.sol/BridgeGovernance.json +5 -5
- package/export/artifacts/contracts/maintainer/MaintainerProxy.sol/MaintainerProxy.json +5 -5
- package/export/artifacts/contracts/test/BridgeStub.sol/BridgeStub.json +6 -6
- package/export/artifacts/contracts/test/SystemTestRelay.sol/SystemTestRelay.json +5 -5
- package/export/artifacts/contracts/vault/TBTCVault.sol/TBTCVault.json +5 -5
- package/export/deploy/01_deploy_light_relay.js +1 -1
- package/export/deploy/05_deploy_bank.js +1 -1
- package/export/deploy/06_deploy_bridge.js +3 -2
- package/export/deploy/{11_deploy_tbtc_vault.js → 07_deploy_tbtc_vault.js} +0 -0
- package/export/deploy/08_deploy_donation_vault.js +83 -0
- package/export/deploy/{12_deploy_bridge_governance.js → 09_deploy_bridge_governance.js} +3 -2
- package/export/deploy/{13_deploy_maintainer_proxy.js → 10_deploy_maintainer_proxy.js} +0 -0
- package/export/deploy/{14_bank_update_bridge.js → 11_bank_update_bridge.js} +0 -0
- package/export/deploy/12_authorize_tbtc_vault_in_bridge.js +63 -0
- package/export/deploy/{22_authorize_maintainer_proxy_in_bridge.js → 13_authorize_maintainer_proxy_in_bridge.js} +0 -0
- package/export/deploy/{10_set_deposit_params.js → 14_set_deposit_parameters.js} +1 -1
- package/export/deploy/15_set_wallet_parameters.js +67 -0
- package/export/deploy/{07_disable_fraud_challenges.js → 16_disable_fraud_challenges.js} +4 -6
- package/export/deploy/{08_disable_redemptions.js → 17_disable_redemptions.js} +3 -2
- package/export/deploy/{09_disable_moving_funds.js → 18_disable_moving_funds.js} +13 -5
- package/export/deploy/{15_authorize_spv_maintainer_in_bridge.js → 19_authorize_spv_maintainer_in_bridge.js} +10 -0
- package/export/deploy/{16_transfer_bank_ownership.js → 20_transfer_bank_ownership.js} +1 -1
- package/export/deploy/{17_transfer_bridge_governance.js → 21_transfer_bridge_governance.js} +11 -1
- package/export/deploy/{18_transfer_bridge_governance_ownership.js → 22_transfer_bridge_governance_ownership.js} +0 -0
- package/export/deploy/{19_transfer_tbtc_vault_ownership.js → 23_transfer_tbtc_vault_ownership.js} +0 -0
- package/export/deploy/{20_transfer_maintainer_proxy_ownership.js → 24_transfer_maintainer_proxy_ownership.js} +0 -0
- package/export/deploy/{21_transfer_proxy_admin_ownership.js → 25_transfer_proxy_admin_ownership.js} +0 -0
- package/export/deploy/{23_authorize_maintainer_proxy_in_reimbursement_pool.js → 26_authorize_maintainer_proxy_in_reimbursement_pool.js} +7 -0
- package/export/deploy/{24_authorize_bridge_in_reimbursement_pool.js → 27_authorize_bridge_in_reimbursement_pool.js} +7 -0
- package/export/deploy/{25_deploy_proxy_admin_with_deputy.js → 28_deploy_proxy_admin_with_deputy.js} +0 -0
- package/export/hardhat.config.js +19 -8
- package/export/tasks/test-utils.js +133 -43
- package/export/test/integration/data/bls.js +12 -0
- package/export/test/integration/data/integration.js +133 -0
- package/export/test/integration/utils/random-beacon.js +193 -0
- package/export/typechain/factories/BridgeGovernance__factory.js +1 -1
- package/export/typechain/factories/BridgeState__factory.js +1 -1
- package/export/typechain/factories/BridgeStub__factory.js +1 -1
- package/export/typechain/factories/Bridge__factory.js +1 -1
- package/export/typechain/factories/DepositSweep__factory.js +1 -1
- package/export/typechain/factories/Deposit__factory.js +1 -1
- package/export/typechain/factories/Fraud__factory.js +1 -1
- package/export/typechain/factories/MaintainerProxy__factory.js +1 -1
- package/export/typechain/factories/MovingFunds__factory.js +1 -1
- package/export/typechain/factories/Redemption__factory.js +1 -1
- package/export/typechain/factories/SystemTestRelay__factory.js +1 -1
- package/export/typechain/factories/TBTCVault__factory.js +1 -1
- package/export/typechain/factories/Wallets__factory.js +1 -1
- package/package.json +3 -3
- package/tasks/test-utils.ts +88 -4
package/tasks/test-utils.ts
CHANGED
|
@@ -4,16 +4,32 @@
|
|
|
4
4
|
import { task, types } from "hardhat/config"
|
|
5
5
|
import type { HardhatRuntimeEnvironment } from "hardhat/types"
|
|
6
6
|
import { BigNumberish, BytesLike } from "ethers"
|
|
7
|
+
import type { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"
|
|
7
8
|
import { authorizeApplication, stake } from "../test/integration/utils/staking"
|
|
8
9
|
import {
|
|
9
10
|
performEcdsaDkg,
|
|
10
11
|
registerOperator,
|
|
11
12
|
} from "../test/integration/utils/ecdsa-wallet-registry"
|
|
12
13
|
import type { Bridge, SortitionPool, WalletRegistry } from "../typechain"
|
|
14
|
+
import {
|
|
15
|
+
offchainDkgTime,
|
|
16
|
+
dkgResultChallengePeriodLength,
|
|
17
|
+
} from "../test/integration/data/integration"
|
|
18
|
+
import blsData from "../test/integration/data/bls"
|
|
19
|
+
import {
|
|
20
|
+
updateDkgResultChallengePeriodLength,
|
|
21
|
+
getGenesisSeed,
|
|
22
|
+
selectGroup,
|
|
23
|
+
signDkgResult,
|
|
24
|
+
hashDKGMembers,
|
|
25
|
+
} from "../test/integration/utils/random-beacon"
|
|
26
|
+
|
|
27
|
+
export type OperatorID = number
|
|
28
|
+
export type Operator = { id: OperatorID; signer: SignerWithAddress }
|
|
13
29
|
|
|
14
30
|
task(
|
|
15
31
|
"test-utils:register-operators",
|
|
16
|
-
"Registers operators in the sortition
|
|
32
|
+
"Registers operators in the sortition pools"
|
|
17
33
|
)
|
|
18
34
|
.addOptionalParam(
|
|
19
35
|
"numberOfOperators",
|
|
@@ -66,15 +82,29 @@ async function registerOperators(
|
|
|
66
82
|
): Promise<void> {
|
|
67
83
|
const { helpers } = hre
|
|
68
84
|
|
|
85
|
+
const { chaosnetOwner } = await helpers.signers.getNamedSigners()
|
|
86
|
+
|
|
69
87
|
const walletRegistry = await helpers.contracts.getContract<WalletRegistry>(
|
|
70
88
|
"WalletRegistry"
|
|
71
89
|
)
|
|
72
|
-
const
|
|
90
|
+
const ecdsaSortitionPool = await helpers.contracts.getContract<SortitionPool>(
|
|
73
91
|
"EcdsaSortitionPool"
|
|
74
92
|
)
|
|
75
93
|
const t = await helpers.contracts.getContract("T")
|
|
76
94
|
const staking = await helpers.contracts.getContract("TokenStaking")
|
|
77
95
|
|
|
96
|
+
if (await ecdsaSortitionPool.isChaosnetActive()) {
|
|
97
|
+
await ecdsaSortitionPool.connect(chaosnetOwner).deactivateChaosnet()
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const randomBeacon = await helpers.contracts.getContract("RandomBeacon")
|
|
101
|
+
const beaconSortitionPool =
|
|
102
|
+
await helpers.contracts.getContract<SortitionPool>("BeaconSortitionPool")
|
|
103
|
+
|
|
104
|
+
if (await beaconSortitionPool.isChaosnetActive()) {
|
|
105
|
+
await beaconSortitionPool.connect(chaosnetOwner).deactivateChaosnet()
|
|
106
|
+
}
|
|
107
|
+
|
|
78
108
|
const signers = (await helpers.signers.getUnnamedSigners()).slice(
|
|
79
109
|
unnamedSignersOffset
|
|
80
110
|
)
|
|
@@ -114,12 +144,24 @@ async function registerOperators(
|
|
|
114
144
|
stakingProvider.address,
|
|
115
145
|
stakeAmount
|
|
116
146
|
)
|
|
147
|
+
await authorizeApplication(
|
|
148
|
+
staking,
|
|
149
|
+
randomBeacon.address,
|
|
150
|
+
authorizer,
|
|
151
|
+
stakingProvider.address,
|
|
152
|
+
stakeAmount
|
|
153
|
+
)
|
|
117
154
|
await registerOperator(
|
|
118
155
|
walletRegistry,
|
|
119
|
-
|
|
156
|
+
ecdsaSortitionPool,
|
|
120
157
|
stakingProvider,
|
|
121
158
|
operator
|
|
122
159
|
)
|
|
160
|
+
await randomBeacon
|
|
161
|
+
.connect(stakingProvider)
|
|
162
|
+
.registerOperator(await operator.getAddress())
|
|
163
|
+
|
|
164
|
+
await randomBeacon.connect(operator).joinSortitionPool()
|
|
123
165
|
}
|
|
124
166
|
|
|
125
167
|
console.log(`Registered ${numberOfOperators} sortition pool operators`)
|
|
@@ -128,7 +170,7 @@ async function registerOperators(
|
|
|
128
170
|
async function createWallet(
|
|
129
171
|
hre: HardhatRuntimeEnvironment,
|
|
130
172
|
walletPublicKey: BytesLike
|
|
131
|
-
) {
|
|
173
|
+
): Promise<void> {
|
|
132
174
|
const { ethers, helpers } = hre
|
|
133
175
|
const { governance } = await helpers.signers.getNamedSigners()
|
|
134
176
|
|
|
@@ -139,6 +181,48 @@ async function createWallet(
|
|
|
139
181
|
const walletRegistryGovernance = await helpers.contracts.getContract(
|
|
140
182
|
"WalletRegistryGovernance"
|
|
141
183
|
)
|
|
184
|
+
const randomBeacon = await helpers.contracts.getContract("RandomBeacon")
|
|
185
|
+
const randomBeaconGovernance = await helpers.contracts.getContract(
|
|
186
|
+
"RandomBeaconGovernance"
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
await updateDkgResultChallengePeriodLength(
|
|
190
|
+
hre,
|
|
191
|
+
governance,
|
|
192
|
+
randomBeaconGovernance
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
const genesisTx = await randomBeacon.genesis()
|
|
196
|
+
const genesisBlock = genesisTx.blockNumber
|
|
197
|
+
const genesisSeed = await getGenesisSeed(hre, genesisBlock)
|
|
198
|
+
|
|
199
|
+
await helpers.time.mineBlocksTo(genesisBlock + offchainDkgTime + 1)
|
|
200
|
+
|
|
201
|
+
const sortitionPool = await helpers.contracts.getContract<SortitionPool>(
|
|
202
|
+
"BeaconSortitionPool"
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
const signers = await selectGroup(hre, sortitionPool, genesisSeed)
|
|
206
|
+
const { members, signingMembersIndices, signaturesBytes } =
|
|
207
|
+
await signDkgResult(hre, signers, blsData.groupPubKey, [], genesisBlock, 33)
|
|
208
|
+
const membersHash = hashDKGMembers(hre, members, [])
|
|
209
|
+
|
|
210
|
+
const dkgResult = {
|
|
211
|
+
submitterMemberIndex: 1,
|
|
212
|
+
groupPubKey: blsData.groupPubKey,
|
|
213
|
+
misbehavedMembersIndices: [],
|
|
214
|
+
signatures: signaturesBytes,
|
|
215
|
+
signingMembersIndices,
|
|
216
|
+
members,
|
|
217
|
+
membersHash,
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const submitter = signers[0].signer
|
|
221
|
+
await randomBeacon.connect(submitter).submitDkgResult(dkgResult)
|
|
222
|
+
|
|
223
|
+
await helpers.time.mineBlocks(dkgResultChallengePeriodLength + 1)
|
|
224
|
+
|
|
225
|
+
await randomBeacon.connect(submitter).approveDkgResult(dkgResult)
|
|
142
226
|
|
|
143
227
|
const requestNewWalletTx = await bridge.requestNewWallet({
|
|
144
228
|
txHash: ethers.constants.HashZero,
|