@lidofinance/lsv-cli 1.9.0 → 1.10.0-alpha.1
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/dist/features/consolidation.d.ts +2 -3
- package/dist/features/consolidation.js +60 -32
- package/dist/features/consolidation.js.map +1 -1
- package/dist/programs/use-cases/consolidation/write.js +4 -4
- package/dist/programs/use-cases/consolidation/write.js.map +1 -1
- package/dist/programs/use-cases/metrics/read.js +4 -4
- package/dist/programs/use-cases/metrics/read.js.map +1 -1
- package/dist/programs/use-cases/report/read.js +4 -4
- package/dist/programs/use-cases/report/read.js.map +1 -1
- package/dist/tests/fixtures/consolidation-fixtures.js +1 -0
- package/dist/tests/fixtures/consolidation-fixtures.js.map +1 -1
- package/dist/tests/utils/consolidation-fee-exemption-calc.test.d.ts +1 -0
- package/dist/tests/utils/consolidation-fee-exemption-calc.test.js +145 -0
- package/dist/tests/utils/consolidation-fee-exemption-calc.test.js.map +1 -0
- package/dist/tests/utils/consolidation-fee-exemption-confirm.test.d.ts +1 -0
- package/dist/tests/utils/consolidation-fee-exemption-confirm.test.js +118 -0
- package/dist/tests/utils/consolidation-fee-exemption-confirm.test.js.map +1 -0
- package/dist/tests/utils/consolidation-fee-exemption.test.d.ts +1 -0
- package/dist/tests/utils/consolidation-fee-exemption.test.js +168 -0
- package/dist/tests/utils/consolidation-fee-exemption.test.js.map +1 -0
- package/dist/tests/utils/first-validator-gindex.test.d.ts +1 -0
- package/dist/tests/utils/first-validator-gindex.test.js +48 -0
- package/dist/tests/utils/first-validator-gindex.test.js.map +1 -0
- package/dist/tests/utils/ipfs-security.test.js +1 -1
- package/dist/tests/utils/ipfs-security.test.js.map +1 -1
- package/dist/tests/utils/ipfs.test.js +32 -4
- package/dist/tests/utils/ipfs.test.js.map +1 -1
- package/dist/utils/consolidation/confirms.js +19 -8
- package/dist/utils/consolidation/confirms.js.map +1 -1
- package/dist/utils/consolidation/fee-exemption.d.ts +19 -0
- package/dist/utils/consolidation/fee-exemption.js +70 -0
- package/dist/utils/consolidation/fee-exemption.js.map +1 -0
- package/dist/utils/consolidation/index.d.ts +1 -0
- package/dist/utils/consolidation/index.js +1 -0
- package/dist/utils/consolidation/index.js.map +1 -1
- package/dist/utils/consolidation/pubkeys.js +2 -0
- package/dist/utils/consolidation/pubkeys.js.map +1 -1
- package/dist/utils/consolidation/types.d.ts +1 -0
- package/dist/utils/consolidation/validator-info.d.ts +2 -1
- package/dist/utils/consolidation/validator-info.js +6 -0
- package/dist/utils/consolidation/validator-info.js.map +1 -1
- package/dist/utils/ipfs.d.ts +6 -1
- package/dist/utils/ipfs.js +34 -17
- package/dist/utils/ipfs.js.map +1 -1
- package/dist/utils/proof/constants.d.ts +1 -0
- package/dist/utils/proof/constants.js +1 -0
- package/dist/utils/proof/constants.js.map +1 -1
- package/dist/utils/proof/first-validator-gindex.js +27 -13
- package/dist/utils/proof/first-validator-gindex.js.map +1 -1
- package/dist/utils/proof/proofs.d.ts +1 -1
- package/dist/utils/proof/proofs.js +1 -1
- package/dist/utils/proof/proofs.js.map +1 -1
- package/dist/version/index.js +1 -1
- package/package.json +13 -9
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { formatEther } from 'viem';
|
|
2
|
+
import { getPublicClient } from '../../providers/index.js';
|
|
3
|
+
import { DashboardAbi } from '../../abi/index.js';
|
|
4
|
+
import { bigIntMax, bigIntMin } from '../big-int.js';
|
|
5
|
+
const AVG_BLOCK_TIME_SEC = 12n;
|
|
6
|
+
// providers commonly cap eth_getLogs at 10k blocks
|
|
7
|
+
const MAX_LOG_RANGE_BLOCKS = 10000n;
|
|
8
|
+
// retries happen within hours; a wider window matches the previous batch's
|
|
9
|
+
// exemption instead, since batch amounts are round and repeat
|
|
10
|
+
export const FEE_EXEMPTION_DUPLICATE_LOOKBACK_SEC = 24n * 60n * 60n; // 24 hours
|
|
11
|
+
// disburseFee also emits SettledGrowthSet; only corrections emit CorrectionTimestampUpdated
|
|
12
|
+
export const matchFeeExemptionLogs = (settledGrowthLogs, correctionTxHashes, amount) => settledGrowthLogs
|
|
13
|
+
.filter((log) => correctionTxHashes.has(log.transactionHash))
|
|
14
|
+
.map((log) => ({
|
|
15
|
+
txHash: log.transactionHash,
|
|
16
|
+
blockNumber: log.blockNumber,
|
|
17
|
+
delta: log.args.newSettledGrowth - log.args.oldSettledGrowth,
|
|
18
|
+
}))
|
|
19
|
+
.filter((match) => match.delta === amount);
|
|
20
|
+
// viem does not validate log envelope fields at runtime
|
|
21
|
+
export const formatFeeExemptionMatch = (match) => {
|
|
22
|
+
const txHash = /^0x[0-9a-fA-F]{64}$/.test(match.txHash)
|
|
23
|
+
? match.txHash
|
|
24
|
+
: '<invalid tx hash from RPC>';
|
|
25
|
+
const timestampMs = Number(match.timestamp) * 1000;
|
|
26
|
+
const at = Number.isSafeInteger(timestampMs)
|
|
27
|
+
? new Date(timestampMs).toISOString()
|
|
28
|
+
: '<invalid timestamp from RPC>';
|
|
29
|
+
return `${formatEther(match.delta)} ETH in tx ${txHash} at ${at}`;
|
|
30
|
+
};
|
|
31
|
+
export const findRecentFeeExemptions = async (dashboard, amount, lookbackSec = FEE_EXEMPTION_DUPLICATE_LOOKBACK_SEC) => {
|
|
32
|
+
const publicClient = await getPublicClient();
|
|
33
|
+
const currentBlock = await publicClient.getBlockNumber();
|
|
34
|
+
const lookbackBlocks = lookbackSec / AVG_BLOCK_TIME_SEC;
|
|
35
|
+
const fromBlock = bigIntMax(currentBlock - lookbackBlocks, 0n);
|
|
36
|
+
const settledGrowthLogs = [];
|
|
37
|
+
const correctionLogs = [];
|
|
38
|
+
for (let chunkStart = fromBlock; chunkStart <= currentBlock; chunkStart += MAX_LOG_RANGE_BLOCKS) {
|
|
39
|
+
const toBlock = bigIntMin(chunkStart + MAX_LOG_RANGE_BLOCKS - 1n, currentBlock);
|
|
40
|
+
const [chunkSettledGrowthLogs, chunkCorrectionLogs] = await Promise.all([
|
|
41
|
+
publicClient.getContractEvents({
|
|
42
|
+
address: dashboard,
|
|
43
|
+
abi: DashboardAbi,
|
|
44
|
+
eventName: 'SettledGrowthSet',
|
|
45
|
+
fromBlock: chunkStart,
|
|
46
|
+
toBlock,
|
|
47
|
+
strict: true,
|
|
48
|
+
}),
|
|
49
|
+
publicClient.getContractEvents({
|
|
50
|
+
address: dashboard,
|
|
51
|
+
abi: DashboardAbi,
|
|
52
|
+
eventName: 'CorrectionTimestampUpdated',
|
|
53
|
+
fromBlock: chunkStart,
|
|
54
|
+
toBlock,
|
|
55
|
+
strict: true,
|
|
56
|
+
}),
|
|
57
|
+
]);
|
|
58
|
+
settledGrowthLogs.push(...chunkSettledGrowthLogs);
|
|
59
|
+
correctionLogs.push(...chunkCorrectionLogs);
|
|
60
|
+
}
|
|
61
|
+
const correctionTxHashes = new Set(correctionLogs.map((log) => log.transactionHash));
|
|
62
|
+
const matches = matchFeeExemptionLogs(settledGrowthLogs, correctionTxHashes, amount);
|
|
63
|
+
return Promise.all(matches.map(async (match) => {
|
|
64
|
+
const block = await publicClient.getBlock({
|
|
65
|
+
blockNumber: match.blockNumber,
|
|
66
|
+
});
|
|
67
|
+
return { ...match, timestamp: block.timestamp };
|
|
68
|
+
}));
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=fee-exemption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fee-exemption.js","sourceRoot":"","sources":["../../../utils/consolidation/fee-exemption.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/consolidation/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../utils/consolidation/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC"}
|
|
@@ -25,6 +25,7 @@ export const addDummyTargetAndSourceValidator = (targetAndSourceValidators, feeE
|
|
|
25
25
|
balance: feeExemption,
|
|
26
26
|
index: '0',
|
|
27
27
|
effectiveBalance: feeExemption,
|
|
28
|
+
slashed: false,
|
|
28
29
|
},
|
|
29
30
|
sourceValidators: new Map([
|
|
30
31
|
[
|
|
@@ -34,6 +35,7 @@ export const addDummyTargetAndSourceValidator = (targetAndSourceValidators, feeE
|
|
|
34
35
|
balance: feeExemption,
|
|
35
36
|
index: '0',
|
|
36
37
|
effectiveBalance: feeExemption,
|
|
38
|
+
slashed: false,
|
|
37
39
|
},
|
|
38
40
|
],
|
|
39
41
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pubkeys.js","sourceRoot":"","sources":["../../../utils/consolidation/pubkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,UAAU,EAAE,MAAM,MAAM,CAAC;AAInD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,yBAAoD,EACnC,EAAE;IACnB,MAAM,aAAa,GAAG,CAAC,GAAG,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,mBAAmB,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aAChC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO,KAAK,MAAM,EAAE,CAAC;IACvB,CAAC,CAAoB,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wCAAwC,GAAG,CACtD,WAAgB,EAC0B,EAAE;IAC5C,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,UAAU,CAC7B,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CACvD,CAAC;IACF,MAAM,YAAY,GAAG,UAAU,CAC7B,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CACpD,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,yBAAoD,EACpD,YAAoB,EACpB,EAAE;IACF,yBAAyB,CAAC,GAAG,CAC3B,oGAAoG,EACpG;QACE,IAAI,EAAE;YACJ,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,GAAG;YACV,gBAAgB,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"pubkeys.js","sourceRoot":"","sources":["../../../utils/consolidation/pubkeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAO,UAAU,EAAE,MAAM,MAAM,CAAC;AAInD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,yBAAoD,EACnC,EAAE;IACnB,MAAM,aAAa,GAAG,CAAC,GAAG,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,mBAAmB,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aAChC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,OAAO,KAAK,MAAM,EAAE,CAAC;IACvB,CAAC,CAAoB,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wCAAwC,GAAG,CACtD,WAAgB,EAC0B,EAAE;IAC5C,MAAM,gBAAgB,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,UAAU,CAC7B,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CACvD,CAAC;IACF,MAAM,YAAY,GAAG,UAAU,CAC7B,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CACpD,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,yBAAoD,EACpD,YAAoB,EACpB,EAAE;IACF,yBAAyB,CAAC,GAAG,CAC3B,oGAAoG,EACpG;QACE,IAAI,EAAE;YACJ,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,GAAG;YACV,gBAAgB,EAAE,YAAY;YAC9B,OAAO,EAAE,KAAK;SACf;QACD,gBAAgB,EAAE,IAAI,GAAG,CAAC;YACxB;gBACE,oGAAoG;gBACpG;oBACE,MAAM,EAAE,gBAAgB;oBACxB,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE,GAAG;oBACV,gBAAgB,EAAE,YAAY;oBAC9B,OAAO,EAAE,KAAK;iBACf;aACF;SACF,CAAC;KACH,CACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Hex } from 'viem';
|
|
2
2
|
import { ValidatorsInfo } from '../fetch-cl.js';
|
|
3
|
-
import { TargetAndSourceValidators } from './types.js';
|
|
3
|
+
import { TargetAndSourceValidators, ValidatorInfo } from './types.js';
|
|
4
|
+
export declare const consolidatedBalance: (info: ValidatorInfo) => bigint;
|
|
4
5
|
export declare const getTargetAndSourceValidatorsInfo: (targetPubkeys: Hex[], targetValidatorsInfo: ValidatorsInfo, sourcePubkeys: Hex[][], sourceValidatorsInfo: ValidatorsInfo) => TargetAndSourceValidators;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { parseGwei } from 'viem';
|
|
2
|
+
import { bigIntMin } from '../big-int.js';
|
|
3
|
+
// what process_pending_consolidations moves to the target:
|
|
4
|
+
// min(balance, effective_balance), and nothing at all for a slashed source
|
|
5
|
+
export const consolidatedBalance = (info) => info.slashed ? 0n : bigIntMin(info.balance, info.effectiveBalance);
|
|
2
6
|
export const getTargetAndSourceValidatorsInfo = (targetPubkeys, targetValidatorsInfo, sourcePubkeys, sourceValidatorsInfo) => {
|
|
3
7
|
const targetAndSourceValidatorsInfo = new Map();
|
|
4
8
|
for (const [i, targetPubkey] of targetPubkeys.entries()) {
|
|
@@ -12,6 +16,7 @@ export const getTargetAndSourceValidatorsInfo = (targetPubkeys, targetValidators
|
|
|
12
16
|
balance: parseGwei(targetValidatorInfo.balance),
|
|
13
17
|
index: targetValidatorInfo.index,
|
|
14
18
|
effectiveBalance: parseGwei(targetValidatorInfo.validator.effective_balance),
|
|
19
|
+
slashed: targetValidatorInfo.validator.slashed,
|
|
15
20
|
},
|
|
16
21
|
sourceValidators: new Map(),
|
|
17
22
|
});
|
|
@@ -28,6 +33,7 @@ export const getTargetAndSourceValidatorsInfo = (targetPubkeys, targetValidators
|
|
|
28
33
|
balance: parseGwei(sourceValidatorInfo.balance),
|
|
29
34
|
index: sourceValidatorInfo.index,
|
|
30
35
|
effectiveBalance: parseGwei(sourceValidatorInfo.validator.effective_balance),
|
|
36
|
+
slashed: sourceValidatorInfo.validator.slashed,
|
|
31
37
|
});
|
|
32
38
|
}
|
|
33
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator-info.js","sourceRoot":"","sources":["../../../utils/consolidation/validator-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"validator-info.js","sourceRoot":"","sources":["../../../utils/consolidation/validator-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,SAAS,EAAE,MAAM,MAAM,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,2DAA2D;AAC3D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAmB,EAAU,EAAE,CACjE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,aAAoB,EACpB,oBAAoC,EACpC,aAAsB,EACtB,oBAAoC,EACT,EAAE;IAC7B,MAAM,6BAA6B,GAA8B,IAAI,GAAG,EAAE,CAAC;IAC3E,KAAK,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CACxD,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,YAAY,CAC3D,CAAC;QACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,YAAY,CAAC,CAAC;QAC5E,CAAC;QACD,6BAA6B,CAAC,GAAG,CAAC,YAAY,EAAE;YAC9C,IAAI,EAAE;gBACJ,MAAM,EAAE,mBAAmB,CAAC,MAAM;gBAClC,OAAO,EAAE,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBAC/C,KAAK,EAAE,mBAAmB,CAAC,KAAK;gBAChC,gBAAgB,EAAE,SAAS,CACzB,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAChD;gBACD,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,OAAO;aAC/C;YACD,gBAAgB,EAAE,IAAI,GAAG,EAAE;SAC5B,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE,CAAC;YAC9C,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CACxD,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,YAAY,CAC3D,CAAC;YACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,gCAAgC,YAAY,YAAY,CACzD,CAAC;YACJ,CAAC;YACD,6BAA6B;iBAC1B,GAAG,CAAC,YAAY,CAAC;gBAClB,EAAE,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE;gBACnC,MAAM,EAAE,mBAAmB,CAAC,MAAM;gBAClC,OAAO,EAAE,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBAC/C,KAAK,EAAE,mBAAmB,CAAC,KAAK;gBAChC,gBAAgB,EAAE,SAAS,CACzB,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAChD;gBACD,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,OAAO;aAC/C,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IACD,OAAO,6BAA6B,CAAC;AACvC,CAAC,CAAC"}
|
package/dist/utils/ipfs.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import { CID, Version } from 'multiformats/cid';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const IPFS_GATEWAYS: {
|
|
3
|
+
readonly ipfsIo: "https://ipfs.io/ipfs";
|
|
4
|
+
readonly filebase: "https://ipfs.filebase.io/ipfs";
|
|
5
|
+
readonly pinata: "https://gateway.pinata.cloud/ipfs";
|
|
6
|
+
};
|
|
7
|
+
export declare const IPFS_GATEWAY: string;
|
|
3
8
|
export declare const DEFAULT_IPFS_MAX_CONTENT_BYTES: number;
|
|
4
9
|
export type BigNumberType = 'bigint' | 'string';
|
|
5
10
|
export type ReportFetchArgs = {
|
package/dist/utils/ipfs.js
CHANGED
|
@@ -7,7 +7,12 @@ import path from 'node:path';
|
|
|
7
7
|
import { logInfo, logTable } from './logging/console.js';
|
|
8
8
|
import { assertSafeUrl } from './data-validators.js';
|
|
9
9
|
import { parseEnvInt } from './env.js';
|
|
10
|
-
export const
|
|
10
|
+
export const IPFS_GATEWAYS = {
|
|
11
|
+
ipfsIo: 'https://ipfs.io/ipfs',
|
|
12
|
+
filebase: 'https://ipfs.filebase.io/ipfs',
|
|
13
|
+
pinata: 'https://gateway.pinata.cloud/ipfs',
|
|
14
|
+
};
|
|
15
|
+
export const IPFS_GATEWAY = IPFS_GATEWAYS.ipfsIo;
|
|
11
16
|
// Max IPFS content size — guards against OOM from an oversized CID.
|
|
12
17
|
// Override: maxBytes arg > IPFS_MAX_CONTENT_BYTES env > this default.
|
|
13
18
|
export const DEFAULT_IPFS_MAX_CONTENT_BYTES = 20 * 1024 * 1024;
|
|
@@ -72,6 +77,30 @@ const readBodyWithLimit = async (response, maxBytes) => {
|
|
|
72
77
|
}
|
|
73
78
|
return streamBodyWithLimit(response.body, maxBytes);
|
|
74
79
|
};
|
|
80
|
+
const fetchFromIPFSGateways = async (cid, gateway) => {
|
|
81
|
+
const gateways = [
|
|
82
|
+
...new Set([gateway, ...Object.values(IPFS_GATEWAYS)].filter(Boolean)),
|
|
83
|
+
];
|
|
84
|
+
for (const currentGateway of gateways) {
|
|
85
|
+
assertSafeUrl(currentGateway, 'IPFS gateway');
|
|
86
|
+
}
|
|
87
|
+
const errors = [];
|
|
88
|
+
for (const currentGateway of gateways) {
|
|
89
|
+
const ipfsUrl = `${currentGateway}/${cid}`;
|
|
90
|
+
logInfo('Fetching content from', ipfsUrl);
|
|
91
|
+
try {
|
|
92
|
+
const response = await fetch(ipfsUrl);
|
|
93
|
+
if (response.ok)
|
|
94
|
+
return response;
|
|
95
|
+
errors.push(`${ipfsUrl}: ${response.status} ${response.statusText}`);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
99
|
+
errors.push(`${ipfsUrl}: ${message}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
throw new Error(`Failed to fetch IPFS content from all gateways: ${errors.join('; ')}`);
|
|
103
|
+
};
|
|
75
104
|
export const fetchIPFS = async (args, cache = true) => {
|
|
76
105
|
const { cid, gateway = IPFS_GATEWAY, maxBytes } = args;
|
|
77
106
|
if (cache)
|
|
@@ -81,15 +110,9 @@ export const fetchIPFS = async (args, cache = true) => {
|
|
|
81
110
|
};
|
|
82
111
|
// Fetching content by CID through IPFS gateway
|
|
83
112
|
export const fetchIPFSDirect = async (args) => {
|
|
84
|
-
const { cid, gateway
|
|
85
|
-
assertSafeUrl(gateway, 'IPFS gateway');
|
|
113
|
+
const { cid, gateway, bigNumberType = 'string' } = args;
|
|
86
114
|
const maxBytes = resolveMaxBytes(args.maxBytes);
|
|
87
|
-
const
|
|
88
|
-
logInfo('Fetching content from', ipfsUrl);
|
|
89
|
-
const response = await fetch(ipfsUrl);
|
|
90
|
-
if (!response.ok) {
|
|
91
|
-
throw new Error(`Failed to fetch IPFS content: ${response.statusText}`);
|
|
92
|
-
}
|
|
115
|
+
const response = await fetchFromIPFSGateways(cid, gateway);
|
|
93
116
|
const raw = new TextDecoder().decode(await readBodyWithLimit(response, maxBytes));
|
|
94
117
|
const params = bigNumberType === 'bigint'
|
|
95
118
|
? { useNativeBigInt: true }
|
|
@@ -99,15 +122,9 @@ export const fetchIPFSDirect = async (args) => {
|
|
|
99
122
|
};
|
|
100
123
|
// Fetching buffer content by CID through IPFS gateway
|
|
101
124
|
export const fetchIPFSBuffer = async (args) => {
|
|
102
|
-
const { cid, gateway
|
|
103
|
-
assertSafeUrl(gateway, 'IPFS gateway');
|
|
125
|
+
const { cid, gateway } = args;
|
|
104
126
|
const maxBytes = resolveMaxBytes(args.maxBytes);
|
|
105
|
-
const
|
|
106
|
-
logInfo('Fetching content from', ipfsUrl);
|
|
107
|
-
const response = await fetch(ipfsUrl);
|
|
108
|
-
if (!response.ok) {
|
|
109
|
-
throw new Error(`Failed to fetch IPFS content: ${response.statusText}`);
|
|
110
|
-
}
|
|
127
|
+
const response = await fetchFromIPFSGateways(cid, gateway);
|
|
111
128
|
return readBodyWithLimit(response, maxBytes);
|
|
112
129
|
};
|
|
113
130
|
// Recalculate CID using full UnixFS logic (like `ipfs add`)
|
package/dist/utils/ipfs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../utils/ipfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../utils/ipfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../utils/proof/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../utils/proof/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAC"}
|
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
import { ssz } from '@lodestar/types';
|
|
2
|
+
import { ListCompositeType, ProgressiveListCompositeType, } from '@chainsafe/ssz';
|
|
2
3
|
import { logResult } from '../index.js';
|
|
4
|
+
// Verifier constructor arg each gindex feeds, see CLProofVerifier.sol
|
|
5
|
+
const PRE_GLOAS_PARAM = 'gIFirstValidatorPreGloas';
|
|
6
|
+
const GLOAS_PARAM = 'gIValidators';
|
|
3
7
|
export const getFirstValidatorGIndex = (forks) => {
|
|
4
|
-
const
|
|
5
|
-
for (const fork of forks) {
|
|
8
|
+
const rows = forks.map((fork) => {
|
|
6
9
|
const Fork = ssz[fork];
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
if (!Fork)
|
|
11
|
+
throw new Error(`Fork name [${fork}] is not supported`);
|
|
12
|
+
const validators = Fork.BeaconState.getPathInfo(['validators']);
|
|
13
|
+
// Gloas: the list is progressive, so it has no fixed depth to pack. The
|
|
14
|
+
// verifier takes the validators field itself and derives each node.
|
|
15
|
+
if (validators.type instanceof ProgressiveListCompositeType) {
|
|
16
|
+
return [fork, toBytes32String(pack(validators.gindex, 0n)), GLOAS_PARAM];
|
|
17
|
+
}
|
|
18
|
+
if (!(validators.type instanceof ListCompositeType)) {
|
|
19
|
+
throw new TypeError(`Unexpected validators type for fork [${fork}]`);
|
|
20
|
+
}
|
|
21
|
+
const gI = Fork.BeaconState.getPathInfo(['validators', 0]).gindex;
|
|
22
|
+
return [
|
|
23
|
+
fork,
|
|
24
|
+
toBytes32String(pack(gI, widthOf(validators.type.limit))),
|
|
25
|
+
PRE_GLOAS_PARAM,
|
|
26
|
+
];
|
|
27
|
+
});
|
|
14
28
|
logResult({
|
|
15
|
-
data:
|
|
29
|
+
data: rows,
|
|
16
30
|
params: {
|
|
17
|
-
head: ['Fork', 'GIndex'],
|
|
31
|
+
head: ['Fork', 'GIndex', 'Deploy param'],
|
|
18
32
|
},
|
|
19
33
|
});
|
|
20
34
|
};
|
|
21
|
-
const
|
|
22
|
-
|
|
35
|
+
const widthOf = (limit) => (limit ? BigInt(Math.log2(limit)) : 0n);
|
|
36
|
+
const pack = (gI, width) => {
|
|
23
37
|
return (gI << 8n) | width;
|
|
24
38
|
};
|
|
25
39
|
const toBytes32String = (gI) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-validator-gindex.js","sourceRoot":"","sources":["../../../utils/proof/first-validator-gindex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"first-validator-gindex.js","sourceRoot":"","sources":["../../../utils/proof/first-validator-gindex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,sEAAsE;AACtE,MAAM,eAAe,GAAG,0BAA0B,CAAC;AACnD,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAe,EAAE,EAAE;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAkC,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,oBAAoB,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAEhE,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,UAAU,CAAC,IAAI,YAAY,4BAA4B,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,YAAY,iBAAiB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,SAAS,CAAC,wCAAwC,IAAI,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClE,OAAO;YACL,IAAI;YACJ,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,eAAe;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC;QACR,IAAI,EAAE,IAAI;QACV,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC;SACzC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE3E,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,KAAa,EAAE,EAAE;IACzC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,EAAE;IACrC,OAAO,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;AAClD,CAAC,CAAC"}
|
|
@@ -6,7 +6,7 @@ import { SupportedFork } from './constants.js';
|
|
|
6
6
|
export type SupportedStateView = {
|
|
7
7
|
[K in keyof typeof SupportedFork]: ContainerTreeViewType<(typeof ssz)[K]['BeaconState']['fields']>;
|
|
8
8
|
}[keyof typeof SupportedFork];
|
|
9
|
-
type Validator = ReturnType<SupportedStateView['validators']['
|
|
9
|
+
type Validator = ReturnType<SupportedStateView['validators']['get']>;
|
|
10
10
|
export type BeaconHeaderResponse = {
|
|
11
11
|
slot: number;
|
|
12
12
|
proposer_index: number;
|
|
@@ -20,7 +20,7 @@ export const createStateProof = async (validatorIndex, bodyBytes, forkName) => {
|
|
|
20
20
|
const stateView = ssz[forkName].BeaconState.deserializeToView(new Uint8Array(bodyBytes));
|
|
21
21
|
if (validatorIndex >= stateView.validators.length)
|
|
22
22
|
throw new Error(`ValidatorIndex ${validatorIndex} out of range`);
|
|
23
|
-
const validator = stateView.validators.
|
|
23
|
+
const validator = stateView.validators.get(Number(validatorIndex));
|
|
24
24
|
const gIValidator = stateView.type.getPathInfo([
|
|
25
25
|
'validators',
|
|
26
26
|
Number(validatorIndex),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proofs.js","sourceRoot":"","sources":["../../../utils/proof/proofs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAO,OAAO,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAGL,SAAS,EACT,WAAW,GAEZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"proofs.js","sourceRoot":"","sources":["../../../utils/proof/proofs.ts"],"names":[],"mappings":"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"}
|
package/dist/version/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = 'v1.
|
|
1
|
+
export const version = 'v1.10.0-alpha.1'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lidofinance/lsv-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0-alpha.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist"
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@chainsafe/blst": "^2.2.0",
|
|
39
|
-
"@chainsafe/persistent-merkle-tree": "^1.0
|
|
40
|
-
"@chainsafe/ssz": "^1.
|
|
41
|
-
"@lodestar/types": "^1.
|
|
39
|
+
"@chainsafe/persistent-merkle-tree": "^1.3.0",
|
|
40
|
+
"@chainsafe/ssz": "^1.6.2",
|
|
41
|
+
"@lodestar/types": "^1.46.0",
|
|
42
42
|
"@openzeppelin/merkle-tree": "^1.0.8",
|
|
43
43
|
"@walletconnect/sign-client": "^2.22.3",
|
|
44
44
|
"blessed": "^0.1.81",
|
|
@@ -60,16 +60,16 @@
|
|
|
60
60
|
"viem": "^2.55.10"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@commitlint/cli": "^
|
|
64
|
-
"@commitlint/config-conventional": "^
|
|
65
|
-
"@commitlint/prompt": "^
|
|
63
|
+
"@commitlint/cli": "^21.2.2",
|
|
64
|
+
"@commitlint/config-conventional": "^21.2.2",
|
|
65
|
+
"@commitlint/prompt": "^21.2.2",
|
|
66
66
|
"@swc/core": "^1.11.21",
|
|
67
67
|
"@types/blessed": "^0.1.25",
|
|
68
68
|
"@types/cli-progress": "^3.11.6",
|
|
69
69
|
"@types/fs-extra": "^11.0.4",
|
|
70
70
|
"@types/json-bigint": "^1.0.4",
|
|
71
71
|
"@types/log-update": "^3.1.0",
|
|
72
|
-
"@types/node": "^
|
|
72
|
+
"@types/node": "^24.13.3",
|
|
73
73
|
"@types/prompts": "^2.4.9",
|
|
74
74
|
"@types/qrcode-terminal": "^0.12.2",
|
|
75
75
|
"@viem/anvil": "^0.0.10",
|
|
@@ -99,7 +99,11 @@
|
|
|
99
99
|
"tar": "^7.5.8",
|
|
100
100
|
"@scure/bip32": "1.7.0",
|
|
101
101
|
"lodash": "4.18.1",
|
|
102
|
-
"uuid": "14.0.0"
|
|
102
|
+
"uuid": "14.0.0",
|
|
103
|
+
"browserslist": "^4.28.7",
|
|
104
|
+
"fast-uri": "^3.1.6",
|
|
105
|
+
"js-yaml": "^4.3.1",
|
|
106
|
+
"@humanfs/node": "^0.16.8"
|
|
103
107
|
},
|
|
104
108
|
"lint-staged": {
|
|
105
109
|
"{!(docs)/**/*.{ts,tsx},*.{ts,tsx}}": [
|