@lidofinance/lsv-cli 1.0.0-alpha.22 → 1.0.0-alpha.24

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