@lidofinance/lsv-cli 1.0.0-alpha.23 → 1.0.0-alpha.25

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.
Files changed (220) hide show
  1. package/README.md +15 -44
  2. package/dist/abi/BlsHarness.js +232 -0
  3. package/dist/abi/BlsHarness.js.map +1 -0
  4. package/dist/abi/CLProofVerifier.js +47 -79
  5. package/dist/abi/CLProofVerifier.js.map +1 -1
  6. package/dist/abi/Dashboard.js +618 -196
  7. package/dist/abi/Dashboard.js.map +1 -1
  8. package/dist/abi/LidoLocator.js +7 -7
  9. package/dist/abi/LidoLocator.js.map +1 -1
  10. package/dist/abi/{Delegation.js → OperatorGrid.js} +466 -1067
  11. package/dist/abi/OperatorGrid.js.map +1 -0
  12. package/dist/abi/PredepositGuarantee.js +69 -13
  13. package/dist/abi/PredepositGuarantee.js.map +1 -1
  14. package/dist/abi/StEth.js +341 -341
  15. package/dist/abi/StEth.js.map +1 -1
  16. package/dist/abi/StakingVault.js +207 -73
  17. package/dist/abi/StakingVault.js.map +1 -1
  18. package/dist/abi/VaultFactory.js +67 -104
  19. package/dist/abi/VaultFactory.js.map +1 -1
  20. package/dist/abi/VaultHub.js +347 -237
  21. package/dist/abi/VaultHub.js.map +1 -1
  22. package/dist/abi/WstEth.js +478 -0
  23. package/dist/abi/WstEth.js.map +1 -0
  24. package/dist/abi/index.js +5 -2
  25. package/dist/abi/index.js.map +1 -1
  26. package/dist/configs/constants.js +2 -2
  27. package/dist/configs/constants.js.map +1 -1
  28. package/dist/configs/deployed.js +21 -47
  29. package/dist/configs/deployed.js.map +1 -1
  30. package/dist/configs/envs.js +5 -6
  31. package/dist/configs/envs.js.map +1 -1
  32. package/dist/configs/utils.js +4 -8
  33. package/dist/configs/utils.js.map +1 -1
  34. package/dist/contracts/blsHarness.js +24 -0
  35. package/dist/contracts/blsHarness.js.map +1 -0
  36. package/dist/contracts/clProofVerifier.js +4 -10
  37. package/dist/contracts/clProofVerifier.js.map +1 -1
  38. package/dist/contracts/index.js +3 -1
  39. package/dist/contracts/index.js.map +1 -1
  40. package/dist/contracts/locator.js +3 -3
  41. package/dist/contracts/locator.js.map +1 -1
  42. package/dist/contracts/operator-grid.js +17 -0
  43. package/dist/contracts/operator-grid.js.map +1 -0
  44. package/dist/contracts/pdg.js +2 -2
  45. package/dist/contracts/pdg.js.map +1 -1
  46. package/dist/contracts/reportChecker.js +4 -5
  47. package/dist/contracts/reportChecker.js.map +1 -1
  48. package/dist/contracts/steth.js +3 -3
  49. package/dist/contracts/steth.js.map +1 -1
  50. package/dist/contracts/token-manager.js +3 -3
  51. package/dist/contracts/token-manager.js.map +1 -1
  52. package/dist/contracts/vault-factory.js +2 -2
  53. package/dist/contracts/vault-factory.js.map +1 -1
  54. package/dist/contracts/vault-hub.js +3 -3
  55. package/dist/contracts/vault-hub.js.map +1 -1
  56. package/dist/contracts/vault-viewer.js +4 -6
  57. package/dist/contracts/vault-viewer.js.map +1 -1
  58. package/dist/contracts/vault.js +2 -2
  59. package/dist/contracts/vault.js.map +1 -1
  60. package/dist/contracts/voting.js +3 -3
  61. package/dist/contracts/voting.js.map +1 -1
  62. package/dist/contracts/wsteth.js +18 -0
  63. package/dist/contracts/wsteth.js.map +1 -0
  64. package/dist/features/advanced-config.js +3 -2
  65. package/dist/features/advanced-config.js.map +1 -1
  66. package/dist/features/dashboard.js +131 -0
  67. package/dist/features/dashboard.js.map +1 -0
  68. package/dist/features/index.js +8 -4
  69. package/dist/features/index.js.map +1 -1
  70. package/dist/features/operator-grid.js +57 -0
  71. package/dist/features/operator-grid.js.map +1 -0
  72. package/dist/features/pdg.js +79 -0
  73. package/dist/features/pdg.js.map +1 -0
  74. package/dist/features/vault-factory.js +33 -6
  75. package/dist/features/vault-factory.js.map +1 -1
  76. package/dist/features/vault-hub.js +81 -0
  77. package/dist/features/vault-hub.js.map +1 -0
  78. package/dist/features/vault.js +54 -0
  79. package/dist/features/vault.js.map +1 -0
  80. package/dist/features/voting.js +5 -9
  81. package/dist/features/voting.js.map +1 -1
  82. package/dist/index.js +2 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/programs/account.js +107 -5
  85. package/dist/programs/account.js.map +1 -1
  86. package/dist/programs/config.js +2 -2
  87. package/dist/programs/config.js.map +1 -1
  88. package/dist/programs/dashboard/config.js +63 -17
  89. package/dist/programs/dashboard/config.js.map +1 -1
  90. package/dist/programs/dashboard/main.js +0 -7
  91. package/dist/programs/dashboard/main.js.map +1 -1
  92. package/dist/programs/dashboard/read.js +64 -42
  93. package/dist/programs/dashboard/read.js.map +1 -1
  94. package/dist/programs/dashboard/write.js +259 -155
  95. package/dist/programs/dashboard/write.js.map +1 -1
  96. package/dist/programs/hub/config.js +28 -32
  97. package/dist/programs/hub/config.js.map +1 -1
  98. package/dist/programs/hub/main.js +0 -7
  99. package/dist/programs/hub/main.js.map +1 -1
  100. package/dist/programs/hub/read.js +30 -35
  101. package/dist/programs/hub/read.js.map +1 -1
  102. package/dist/programs/hub/write.js +148 -40
  103. package/dist/programs/hub/write.js.map +1 -1
  104. package/dist/programs/index.js +1 -1
  105. package/dist/programs/index.js.map +1 -1
  106. package/dist/programs/operator-grid/config.js +81 -0
  107. package/dist/programs/operator-grid/config.js.map +1 -0
  108. package/dist/programs/operator-grid/index.js.map +1 -0
  109. package/dist/programs/operator-grid/main.js +5 -0
  110. package/dist/programs/operator-grid/main.js.map +1 -0
  111. package/dist/programs/operator-grid/read.js +24 -0
  112. package/dist/programs/operator-grid/read.js.map +1 -0
  113. package/dist/programs/operator-grid/write.js +109 -0
  114. package/dist/programs/operator-grid/write.js.map +1 -0
  115. package/dist/programs/pdg/config.js +49 -13
  116. package/dist/programs/pdg/config.js.map +1 -1
  117. package/dist/programs/pdg/main.js +0 -7
  118. package/dist/programs/pdg/main.js.map +1 -1
  119. package/dist/programs/pdg/read.js +20 -3
  120. package/dist/programs/pdg/read.js.map +1 -1
  121. package/dist/programs/pdg/write.js +147 -82
  122. package/dist/programs/pdg/write.js.map +1 -1
  123. package/dist/programs/pdg-helpers.js +155 -38
  124. package/dist/programs/pdg-helpers.js.map +1 -1
  125. package/dist/programs/report.js +66 -78
  126. package/dist/programs/report.js.map +1 -1
  127. package/dist/programs/vault/config.js +6 -2
  128. package/dist/programs/vault/config.js.map +1 -1
  129. package/dist/programs/vault/main.js +0 -7
  130. package/dist/programs/vault/main.js.map +1 -1
  131. package/dist/programs/vault/read.js +16 -44
  132. package/dist/programs/vault/read.js.map +1 -1
  133. package/dist/programs/vault/write.js +117 -33
  134. package/dist/programs/vault/write.js.map +1 -1
  135. package/dist/programs/vault-factory/main.js +0 -7
  136. package/dist/programs/vault-factory/main.js.map +1 -1
  137. package/dist/programs/vault-factory/read.js +17 -19
  138. package/dist/programs/vault-factory/read.js.map +1 -1
  139. package/dist/programs/vault-factory/write.js +30 -52
  140. package/dist/programs/vault-factory/write.js.map +1 -1
  141. package/dist/programs/vault-viewer/main.js +2 -2
  142. package/dist/programs/vault-viewer/main.js.map +1 -1
  143. package/dist/programs/voting.js +8 -23
  144. package/dist/programs/voting.js.map +1 -1
  145. package/dist/providers/wallet.js +4 -4
  146. package/dist/providers/wallet.js.map +1 -1
  147. package/dist/utils/arguments.js +44 -1
  148. package/dist/utils/arguments.js.map +1 -1
  149. package/dist/utils/bls.js +101 -0
  150. package/dist/utils/bls.js.map +1 -0
  151. package/dist/utils/commands/dashboard.js +103 -0
  152. package/dist/utils/commands/dashboard.js.map +1 -0
  153. package/dist/utils/commands/index.js +2 -0
  154. package/dist/utils/commands/index.js.map +1 -0
  155. package/dist/utils/contract.js +54 -15
  156. package/dist/utils/contract.js.map +1 -1
  157. package/dist/utils/data-validators.js +7 -22
  158. package/dist/utils/data-validators.js.map +1 -1
  159. package/dist/utils/error-handler.js +5 -2
  160. package/dist/utils/error-handler.js.map +1 -1
  161. package/dist/utils/fetchCL.js +57 -0
  162. package/dist/utils/fetchCL.js.map +1 -0
  163. package/dist/utils/get-deposit-data-root.js +3 -3
  164. package/dist/utils/health.js +69 -7
  165. package/dist/utils/health.js.map +1 -1
  166. package/dist/utils/index.js +6 -1
  167. package/dist/utils/index.js.map +1 -1
  168. package/dist/utils/ipfs.js +54 -0
  169. package/dist/utils/ipfs.js.map +1 -0
  170. package/dist/utils/logging/console.js +23 -0
  171. package/dist/utils/logging/console.js.map +1 -0
  172. package/dist/utils/logging/constants.js +12 -0
  173. package/dist/utils/logging/constants.js.map +1 -0
  174. package/dist/utils/logging/index.js +2 -0
  175. package/dist/utils/logging/index.js.map +1 -0
  176. package/dist/utils/prompts/dashboard.js +63 -0
  177. package/dist/utils/prompts/dashboard.js.map +1 -0
  178. package/dist/utils/prompts/index.js +2 -1
  179. package/dist/utils/prompts/index.js.map +1 -1
  180. package/dist/utils/prompts/operations.js +41 -0
  181. package/dist/utils/prompts/operations.js.map +1 -0
  182. package/dist/utils/prompts/predeposit-guarantee.js +10 -13
  183. package/dist/utils/prompts/predeposit-guarantee.js.map +1 -1
  184. package/dist/utils/prompts/vault.js +4 -1
  185. package/dist/utils/prompts/vault.js.map +1 -1
  186. package/dist/utils/proof/create-proof.js +6 -30
  187. package/dist/utils/proof/create-proof.js.map +1 -1
  188. package/dist/utils/proof/first-validator-gindex.js +2 -1
  189. package/dist/utils/proof/first-validator-gindex.js.map +1 -1
  190. package/dist/utils/proof/merkle-utils.js +15 -3
  191. package/dist/utils/proof/merkle-utils.js.map +1 -1
  192. package/dist/utils/proof/report-proof.js +11 -6
  193. package/dist/utils/proof/report-proof.js.map +1 -1
  194. package/dist/utils/read-programs-by-abi.js +2 -2
  195. package/dist/utils/read-programs-by-abi.js.map +1 -1
  196. package/dist/utils/report.js +17 -17
  197. package/dist/utils/report.js.map +1 -1
  198. package/dist/utils/required-lock.js +21 -0
  199. package/dist/utils/required-lock.js.map +1 -0
  200. package/dist/version/index.js +1 -1
  201. package/package.json +10 -4
  202. package/dist/abi/Delegation.js.map +0 -1
  203. package/dist/contracts/delegation.js +0 -11
  204. package/dist/contracts/delegation.js.map +0 -1
  205. package/dist/features/dashboard-delegation.js +0 -25
  206. package/dist/features/dashboard-delegation.js.map +0 -1
  207. package/dist/programs/delegation/config.js +0 -33
  208. package/dist/programs/delegation/config.js.map +0 -1
  209. package/dist/programs/delegation/index.js.map +0 -1
  210. package/dist/programs/delegation/main.js +0 -12
  211. package/dist/programs/delegation/main.js.map +0 -1
  212. package/dist/programs/delegation/read.js +0 -104
  213. package/dist/programs/delegation/read.js.map +0 -1
  214. package/dist/programs/delegation/write.js +0 -323
  215. package/dist/programs/delegation/write.js.map +0 -1
  216. package/dist/utils/parse-string.js +0 -20
  217. package/dist/utils/parse-string.js.map +0 -1
  218. package/dist/utils/prompts/delegation-dashboard.js +0 -29
  219. package/dist/utils/prompts/delegation-dashboard.js.map +0 -1
  220. /package/dist/programs/{delegation → operator-grid}/index.js +0 -0
@@ -1,72 +1,115 @@
1
- import { getPredepositGuaranteeContract } from '../../contracts/index.js';
2
- import { callWriteMethodWithReceipt, confirmCreateProof, createPDGProof, showSpinner, printError, parseObjectsArray, stringToBigInt, stringToBigIntArray, etherToWei, } from '../../utils/index.js';
1
+ import { formatEther } from 'viem';
2
+ import { Option } from 'commander';
3
+ import { getAccount } from '../../providers/index.js';
4
+ import { getPredepositGuaranteeContract, getStakingVaultContract, } from '../../contracts/index.js';
5
+ import { callWriteMethodWithReceipt, createPDGProof, showSpinner, printError, parseDepositArray, stringToBigInt, stringToBigIntArray, etherToWei, callReadMethod, logResult, logInfo, confirmOperation, confirmMakeProof, getCommandsJson, isValidBLSDeposit, expandBLSSignature, } from '../../utils/index.js';
3
6
  import { pdg } from './main.js';
4
- pdg
7
+ const pdgWrite = pdg
8
+ .command('write')
9
+ .aliases(['w'])
10
+ .description('pdg write commands');
11
+ pdgWrite.addOption(new Option('-cmd2json'));
12
+ pdgWrite.on('option:-cmd2json', function () {
13
+ logInfo(getCommandsJson(pdgWrite));
14
+ process.exit();
15
+ });
16
+ pdgWrite
5
17
  .command('predeposit')
6
18
  .description('predeposit')
7
19
  .argument('<vault>', 'vault address')
8
- .argument('<deposits>', 'deposits')
9
- .action(async (vault, deposits) => {
20
+ .argument('<deposits>', 'deposits', parseDepositArray)
21
+ .option('--no-bls-check', 'skip bls signature check')
22
+ .action(async (vault, deposits, options) => {
10
23
  const pdgContract = await getPredepositGuaranteeContract();
11
- const parsedDeposits = parseObjectsArray(deposits);
24
+ if (options.blsCheck) {
25
+ const PREDEPOSIT_AMOUNT = await callReadMethod(pdgContract, 'PREDEPOSIT_AMOUNT');
26
+ const vaultContract = getStakingVaultContract(vault);
27
+ const withdrawalCredentials = await callReadMethod(vaultContract, 'withdrawalCredentials');
28
+ for (const deposit of deposits) {
29
+ const isBLSValid = isValidBLSDeposit(deposit, withdrawalCredentials);
30
+ if (deposit.amount !== PREDEPOSIT_AMOUNT) {
31
+ console.info(`❌ Deposit amount is not equal to PREDEPOSIT_AMOUNT for pubkey ${deposit.pubkey}`);
32
+ }
33
+ if (!isBLSValid) {
34
+ console.info(`❌ Offchain - BLS signature is not valid for Pubkey ${deposit.pubkey}`);
35
+ }
36
+ }
37
+ }
38
+ const depositsY = deposits.map((deposit) => {
39
+ const expanded = expandBLSSignature(deposit.signature, deposit.pubkey);
40
+ return {
41
+ pubkeyY: { a: expanded.pubkeyY_a, b: expanded.pubkeyY_b },
42
+ signatureY: {
43
+ c0_a: expanded.sigY_c0_a,
44
+ c0_b: expanded.sigY_c0_b,
45
+ c1_a: expanded.sigY_c1_a,
46
+ c1_b: expanded.sigY_c1_b,
47
+ },
48
+ };
49
+ });
50
+ const confirm = await confirmOperation(`Are you sure you want to predeposit ${deposits.length} deposits to the vault ${vault}?
51
+ Pubkeys: ${deposits.map((i) => i.pubkey).join(', ')}`);
52
+ if (!confirm)
53
+ return;
12
54
  await callWriteMethodWithReceipt(pdgContract, 'predeposit', [
13
55
  vault,
14
- parsedDeposits,
56
+ deposits,
57
+ depositsY,
15
58
  ]);
16
59
  });
17
- pdg
18
- .command('create-proof-and-prove')
19
- .description('create proof and prove')
60
+ pdgWrite
61
+ .command('proof-and-prove')
62
+ .aliases(['prove'])
63
+ .description('make proof and prove')
20
64
  .argument('<index>', 'validator index', stringToBigInt)
21
65
  .action(async (index) => {
22
66
  const pdgContract = await getPredepositGuaranteeContract();
23
- const validatorIndex = await confirmCreateProof(index);
67
+ const validatorIndex = await confirmMakeProof(index);
24
68
  if (!validatorIndex)
25
69
  return;
26
70
  const hideSpinner = showSpinner({
27
71
  type: 'bouncingBar',
28
- message: 'Creating proof...',
72
+ message: 'Making proof...',
29
73
  });
30
74
  try {
31
75
  const packageProof = await createPDGProof(Number(validatorIndex));
32
76
  hideSpinner();
33
77
  const { proof, pubkey, childBlockTimestamp, withdrawalCredentials } = packageProof;
34
- console.info('----------------------proof----------------------');
35
- console.info(proof);
36
- console.info('---------------------pubkey---------------------');
37
- console.table(pubkey);
38
- console.info('---------------childBlockTimestamp---------------');
39
- console.table(childBlockTimestamp);
40
- console.info('--------------withdrawalCredentials--------------');
41
- console.table(withdrawalCredentials);
42
- console.info('------------------------------------------------');
43
- console.info('-----------------------end-----------------------');
78
+ logInfo('----------------------proof----------------------');
79
+ logInfo(proof);
80
+ logInfo('---------------------pubkey---------------------');
81
+ logResult(pubkey);
82
+ logInfo('---------------childBlockTimestamp---------------');
83
+ logResult(childBlockTimestamp);
84
+ logInfo('--------------withdrawalCredentials--------------');
85
+ logResult(withdrawalCredentials);
86
+ logInfo('------------------------------------------------');
87
+ logInfo('-----------------------end-----------------------');
44
88
  await callWriteMethodWithReceipt(pdgContract, 'proveValidatorWC', [
45
89
  { proof, pubkey, validatorIndex, childBlockTimestamp },
46
90
  ]);
47
91
  }
48
92
  catch (err) {
49
93
  hideSpinner();
50
- printError(err, 'Error when creating proof');
94
+ printError(err, 'Error when making proof');
51
95
  }
52
96
  });
53
- pdg
97
+ pdgWrite
54
98
  .command('prove-and-deposit')
55
99
  .description('prove and deposit')
56
100
  .argument('<indexes>', 'validator indexes', stringToBigIntArray)
57
101
  .argument('<vault>', 'vault address')
58
- .argument('<deposits>', 'deposits')
102
+ .argument('<deposits>', 'deposits', parseDepositArray)
59
103
  .action(async (indexes, vault, deposits) => {
60
104
  const pdgContract = await getPredepositGuaranteeContract();
61
- const parsedDeposits = parseObjectsArray(deposits);
62
105
  const witnesses = [];
63
106
  for (const index of indexes) {
64
- const validatorIndex = await confirmCreateProof(index);
107
+ const validatorIndex = await confirmMakeProof(index);
65
108
  if (!validatorIndex)
66
109
  return;
67
110
  const hideSpinner = showSpinner({
68
111
  type: 'bouncingBar',
69
- message: 'Creating proof...',
112
+ message: 'Making proof...',
70
113
  });
71
114
  try {
72
115
  const packageProof = await createPDGProof(Number(validatorIndex));
@@ -78,78 +121,83 @@ pdg
78
121
  validatorIndex,
79
122
  childBlockTimestamp,
80
123
  });
81
- console.info('----------------------proof----------------------');
82
- console.info(proof);
83
- console.info('---------------------pubkey---------------------');
84
- console.table(pubkey);
85
- console.info('---------------childBlockTimestamp---------------');
86
- console.table(childBlockTimestamp);
87
- console.info('--------------withdrawalCredentials--------------');
88
- console.table(withdrawalCredentials);
89
- console.info('------------------------------------------------');
90
- console.info('-----------------------end-----------------------');
124
+ logInfo('----------------------proof----------------------');
125
+ logInfo(proof);
126
+ logInfo('---------------------pubkey---------------------');
127
+ logResult(pubkey);
128
+ logInfo('---------------childBlockTimestamp---------------');
129
+ logResult(childBlockTimestamp);
130
+ logInfo('--------------withdrawalCredentials--------------');
131
+ logResult(withdrawalCredentials);
132
+ logInfo('------------------------------------------------');
133
+ logInfo('-----------------------end-----------------------');
91
134
  }
92
135
  catch (err) {
93
136
  hideSpinner();
94
- printError(err, 'Error when creating proof');
137
+ printError(err, 'Error when making proof');
95
138
  }
96
139
  }
97
140
  await callWriteMethodWithReceipt(pdgContract, 'proveAndDeposit', [
98
141
  witnesses,
99
- parsedDeposits,
142
+ deposits,
100
143
  vault,
101
144
  ]);
102
145
  });
103
- pdg
146
+ pdgWrite
104
147
  .command('deposit-to-beacon-chain')
105
148
  .description('deposit to beacon chain')
106
149
  .argument('<vault>', 'vault address')
107
- .argument('<deposits>', 'deposits')
150
+ .argument('<deposits>', 'deposits', parseDepositArray)
108
151
  .action(async (vault, deposits) => {
109
152
  const pdgContract = await getPredepositGuaranteeContract();
110
- const parsedDeposits = parseObjectsArray(deposits);
153
+ const confirm = await confirmOperation(`Are you sure you want to deposit ${deposits.length} deposits to the vault ${vault}?`);
154
+ if (!confirm)
155
+ return;
111
156
  await callWriteMethodWithReceipt(pdgContract, 'depositToBeaconChain', [
112
157
  vault,
113
- parsedDeposits,
158
+ deposits,
114
159
  ]);
115
160
  });
116
- pdg
161
+ pdgWrite
117
162
  .command('top-up')
118
163
  .description('top up no balance')
119
164
  .argument('<nodeOperator>', 'node operator address')
120
165
  .argument('<amount>', 'amount in ETH', etherToWei)
121
166
  .action(async (nodeOperator, amount) => {
122
167
  const pdgContract = await getPredepositGuaranteeContract();
168
+ const confirm = await confirmOperation(`Are you sure you want to top up the node operator ${nodeOperator} with ${formatEther(amount)} ETH?`);
169
+ if (!confirm)
170
+ return;
123
171
  await callWriteMethodWithReceipt(pdgContract, 'topUpNodeOperatorBalance', [nodeOperator], amount);
124
172
  });
125
- pdg
173
+ pdgWrite
126
174
  .command('prove-unknown-validator')
127
175
  .description('prove unknown validator')
128
176
  .argument('<index>', 'validator index', stringToBigInt)
129
177
  .argument('<vault>', 'vault address')
130
178
  .action(async (index, vault) => {
131
179
  const pdgContract = await getPredepositGuaranteeContract();
132
- const validatorIndex = await confirmCreateProof(index);
180
+ const validatorIndex = await confirmMakeProof(index);
133
181
  if (!validatorIndex)
134
182
  return;
135
183
  const hideSpinner = showSpinner({
136
184
  type: 'bouncingBar',
137
- message: 'Creating proof...',
185
+ message: 'Making proof...',
138
186
  });
139
187
  try {
140
188
  const packageProof = await createPDGProof(Number(validatorIndex));
141
189
  hideSpinner();
142
190
  const { proof, pubkey, childBlockTimestamp, withdrawalCredentials } = packageProof;
143
- console.info('----------------------proof----------------------');
144
- console.info(proof);
145
- console.info('---------------------pubkey---------------------');
146
- console.table(pubkey);
147
- console.info('---------------childBlockTimestamp---------------');
148
- console.table(childBlockTimestamp);
149
- console.info('--------------withdrawalCredentials--------------');
150
- console.table(withdrawalCredentials);
151
- console.info('------------------------------------------------');
152
- console.info('-----------------------end-----------------------');
191
+ logInfo('----------------------proof----------------------');
192
+ logInfo(proof);
193
+ logInfo('---------------------pubkey---------------------');
194
+ logResult(pubkey);
195
+ logInfo('---------------childBlockTimestamp---------------');
196
+ logResult(childBlockTimestamp);
197
+ logInfo('--------------withdrawalCredentials--------------');
198
+ logResult(withdrawalCredentials);
199
+ logInfo('------------------------------------------------');
200
+ logInfo('-----------------------end-----------------------');
153
201
  await callWriteMethodWithReceipt(pdgContract, 'proveUnknownValidator', [
154
202
  { proof, pubkey, validatorIndex, childBlockTimestamp },
155
203
  vault,
@@ -160,38 +208,38 @@ pdg
160
208
  printError(err, 'Error when proving unknown validator');
161
209
  }
162
210
  });
163
- pdg
211
+ pdgWrite
164
212
  .command('prove-invalid-validator-wc')
165
213
  .description('prove invalid validator withdrawal credentials')
166
214
  .argument('<index>', 'validator index', stringToBigInt)
167
215
  .argument('<invalidWithdrawalCredentials>', 'invalid withdrawal credentials')
168
216
  .action(async (index, invalidWithdrawalCredentials) => {
169
217
  const pdgContract = await getPredepositGuaranteeContract();
170
- const validatorIndex = await confirmCreateProof(index);
218
+ const validatorIndex = await confirmMakeProof(index);
171
219
  if (!validatorIndex)
172
220
  return;
173
221
  const hideSpinner = showSpinner({
174
222
  type: 'bouncingBar',
175
- message: 'Creating proof...',
223
+ message: 'Making proof...',
176
224
  });
177
225
  try {
178
226
  const packageProof = await createPDGProof(Number(validatorIndex));
179
227
  hideSpinner();
180
228
  const { proof, pubkey, childBlockTimestamp, withdrawalCredentials } = packageProof;
181
- console.info('----------------------proof----------------------');
182
- console.info(proof);
183
- console.info('---------------------pubkey---------------------');
184
- console.table(pubkey);
185
- console.info('---------------childBlockTimestamp---------------');
186
- console.table(childBlockTimestamp);
187
- console.info('--------------withdrawalCredentials--------------');
188
- console.table(withdrawalCredentials);
189
- console.info('------------------------------------------------');
190
- console.info('invalid withdrawal credentials');
191
- console.table(invalidWithdrawalCredentials);
192
- console.info('-----------------------end-----------------------');
229
+ logInfo('----------------------proof----------------------');
230
+ logInfo(proof);
231
+ logInfo('---------------------pubkey---------------------');
232
+ logResult(pubkey);
233
+ logInfo('---------------childBlockTimestamp---------------');
234
+ logResult(childBlockTimestamp);
235
+ logInfo('--------------withdrawalCredentials--------------');
236
+ logResult(withdrawalCredentials);
237
+ logInfo('------------------------------------------------');
238
+ logInfo('invalid withdrawal credentials');
239
+ logResult(invalidWithdrawalCredentials);
240
+ logInfo('-----------------------end-----------------------');
193
241
  if (withdrawalCredentials !== invalidWithdrawalCredentials) {
194
- console.info('withdrawal credentials are valid. Operation cancelled');
242
+ logInfo('withdrawal credentials are valid. Operation cancelled');
195
243
  return;
196
244
  }
197
245
  await callWriteMethodWithReceipt(pdgContract, 'proveInvalidValidatorWC', [
@@ -201,46 +249,63 @@ pdg
201
249
  }
202
250
  catch (err) {
203
251
  hideSpinner();
204
- printError(err, 'Error when creating proof');
252
+ printError(err, 'Error when making proof');
205
253
  }
206
254
  });
207
- pdg
255
+ pdgWrite
208
256
  .command('withdraw-no-balance')
209
257
  .description('withdraw node operator balance')
210
258
  .argument('<nodeOperator>', 'node operator address')
211
- .argument('<amount>', 'amount in wei', stringToBigInt)
259
+ .argument('<amount>', 'amount in ETH', etherToWei)
212
260
  .argument('<recipient>', 'recipient address')
213
261
  .action(async (nodeOperator, amount, recipient) => {
214
262
  const pdgContract = await getPredepositGuaranteeContract();
263
+ const confirm = await confirmOperation(`Are you sure you want to withdraw the node operator ${nodeOperator} balance ${amount} ETH to ${recipient}?`);
264
+ if (!confirm)
265
+ return;
215
266
  await callWriteMethodWithReceipt(pdgContract, 'withdrawNodeOperatorBalance', [nodeOperator, amount, recipient]);
216
267
  });
217
- pdg
218
- .command('set-no-g')
268
+ pdgWrite
269
+ .command('set-no-guarantor')
270
+ .aliases(['set-no-g'])
219
271
  .description('set node operator guarantor')
220
272
  .argument('<guarantor>', 'new guarantor address')
221
273
  .action(async (guarantor) => {
222
274
  const pdgContract = await getPredepositGuaranteeContract();
275
+ const account = getAccount();
276
+ const confirm = await confirmOperation(`Are you sure you want to set the node operator (${account.address}) guarantor to ${guarantor}?`);
277
+ if (!confirm)
278
+ return;
223
279
  await callWriteMethodWithReceipt(pdgContract, 'setNodeOperatorGuarantor', [
224
280
  guarantor,
225
281
  ]);
226
282
  });
227
- pdg
228
- .command('claim-g-refund')
283
+ pdgWrite
284
+ .command('claim-guarantor-refund')
285
+ .aliases(['claim-g-refund'])
229
286
  .description('claim guarantor refund')
230
287
  .argument('<recipient>', 'recipient address')
231
288
  .action(async (recipient) => {
232
289
  const pdgContract = await getPredepositGuaranteeContract();
290
+ const account = getAccount();
291
+ const confirm = await confirmOperation(`Are you sure you want to claim the guarantor ${account.address} refund for ${recipient}?`);
292
+ if (!confirm)
293
+ return;
233
294
  await callWriteMethodWithReceipt(pdgContract, 'claimGuarantorRefund', [
234
295
  recipient,
235
296
  ]);
236
297
  });
237
- pdg
298
+ pdgWrite
238
299
  .command('compensate-disproven-predeposit')
300
+ .aliases(['compensate'])
239
301
  .description('compensate disproven predeposit')
240
302
  .argument('<pubkey>', 'validator pubkey')
241
303
  .argument('<recipient>', 'recipient address')
242
304
  .action(async (pubkey, recipient) => {
243
305
  const pdgContract = await getPredepositGuaranteeContract();
306
+ const confirm = await confirmOperation(`Are you sure you want to compensate the disproven predeposit for validator ${pubkey} to ${recipient}?`);
307
+ if (!confirm)
308
+ return;
244
309
  await callWriteMethodWithReceipt(pdgContract, 'compensateDisprovenPredeposit', [pubkey, recipient]);
245
310
  });
246
311
  //# sourceMappingURL=write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/pdg/write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../programs/pdg/write.ts"],"names":[],"mappings":"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"}