@lodestar/state-transition 1.23.0-dev.cd98c23768 → 1.23.0-dev.cf722195b5
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/lib/block/isValidIndexedAttestation.js +2 -6
- package/lib/block/isValidIndexedAttestation.js.map +1 -1
- package/lib/block/processAttestationPhase0.js +4 -8
- package/lib/block/processAttestationPhase0.js.map +1 -1
- package/lib/block/processConsolidationRequest.js +1 -1
- package/lib/block/processConsolidationRequest.js.map +1 -1
- package/lib/block/processDeposit.js +2 -2
- package/lib/block/processDeposit.js.map +1 -1
- package/lib/block/processEth1Data.js +1 -3
- package/lib/block/processEth1Data.js.map +1 -1
- package/lib/block/processOperations.js +3 -3
- package/lib/block/processOperations.js.map +1 -1
- package/lib/block/processSyncCommittee.js +1 -3
- package/lib/block/processSyncCommittee.js.map +1 -1
- package/lib/block/processWithdrawalRequest.js +1 -1
- package/lib/block/processWithdrawalRequest.js.map +1 -1
- package/lib/cache/epochCache.d.ts +5 -3
- package/lib/cache/epochCache.js +22 -23
- package/lib/cache/epochCache.js.map +1 -1
- package/lib/cache/pubkeyCache.d.ts +1 -9
- package/lib/cache/pubkeyCache.js +0 -18
- package/lib/cache/pubkeyCache.js.map +1 -1
- package/lib/cache/stateCache.js +2 -0
- package/lib/cache/stateCache.js.map +1 -1
- package/lib/cache/syncCommitteeCache.d.ts +1 -1
- package/lib/cache/syncCommitteeCache.js +1 -1
- package/lib/cache/syncCommitteeCache.js.map +1 -1
- package/lib/epoch/processPendingBalanceDeposits.js +5 -7
- package/lib/epoch/processPendingBalanceDeposits.js.map +1 -1
- package/lib/epoch/processSlashings.js +8 -2
- package/lib/epoch/processSlashings.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/metrics.js +2 -0
- package/lib/metrics.js.map +1 -1
- package/lib/signatureSets/attesterSlashings.js +1 -3
- package/lib/signatureSets/attesterSlashings.js.map +1 -1
- package/lib/signatureSets/proposerSlashings.js +1 -3
- package/lib/signatureSets/proposerSlashings.js.map +1 -1
- package/lib/slot/upgradeStateToAltair.js +1 -0
- package/lib/slot/upgradeStateToAltair.js.map +1 -1
- package/lib/slot/upgradeStateToCapella.js +1 -0
- package/lib/slot/upgradeStateToCapella.js.map +1 -1
- package/lib/slot/upgradeStateToDeneb.js +1 -0
- package/lib/slot/upgradeStateToDeneb.js.map +1 -1
- package/lib/slot/upgradeStateToElectra.js +3 -8
- package/lib/slot/upgradeStateToElectra.js.map +1 -1
- package/lib/util/balance.d.ts +1 -1
- package/lib/util/blindedBlock.js +17 -13
- package/lib/util/blindedBlock.js.map +1 -1
- package/lib/util/computeAnchorCheckpoint.js.map +1 -1
- package/lib/util/deposit.js +2 -6
- package/lib/util/deposit.js.map +1 -1
- package/lib/util/epochShuffling.d.ts +1 -0
- package/lib/util/epochShuffling.js +31 -12
- package/lib/util/epochShuffling.js.map +1 -1
- package/lib/util/execution.js +6 -17
- package/lib/util/execution.js.map +1 -1
- package/lib/util/index.d.ts +0 -1
- package/lib/util/index.js +0 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/loadState/loadValidator.js +1 -3
- package/lib/util/loadState/loadValidator.js.map +1 -1
- package/lib/util/seed.js +1 -1
- package/lib/util/seed.js.map +1 -1
- package/lib/util/shufflingDecisionRoot.js +5 -11
- package/lib/util/shufflingDecisionRoot.js.map +1 -1
- package/lib/util/validator.js +2 -6
- package/lib/util/validator.js.map +1 -1
- package/lib/util/weakSubjectivity.js +0 -1
- package/lib/util/weakSubjectivity.js.map +1 -1
- package/package.json +10 -8
- package/lib/util/shuffle.d.ts +0 -9
- package/lib/util/shuffle.js +0 -197
- package/lib/util/shuffle.js.map +0 -1
package/lib/util/execution.js
CHANGED
|
@@ -39,11 +39,9 @@ export function isMergeTransitionComplete(state) {
|
|
|
39
39
|
// TODO: Performance
|
|
40
40
|
ssz.bellatrix.ExecutionPayloadHeader.defaultValue());
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
ssz.capella.ExecutionPayloadHeader.defaultValue());
|
|
46
|
-
}
|
|
42
|
+
return !ssz.capella.ExecutionPayloadHeader.equals(state.latestExecutionPayloadHeader,
|
|
43
|
+
// TODO: Performance
|
|
44
|
+
ssz.capella.ExecutionPayloadHeader.defaultValue());
|
|
47
45
|
}
|
|
48
46
|
/** Type guard for bellatrix.BeaconState */
|
|
49
47
|
export function isExecutionStateType(state) {
|
|
@@ -69,12 +67,10 @@ export function getFullOrBlindedPayloadFromBody(body) {
|
|
|
69
67
|
if (isBlindedBeaconBlockBody(body)) {
|
|
70
68
|
return body.executionPayloadHeader;
|
|
71
69
|
}
|
|
72
|
-
|
|
70
|
+
if (body.executionPayload !== undefined) {
|
|
73
71
|
return body.executionPayload;
|
|
74
72
|
}
|
|
75
|
-
|
|
76
|
-
throw Error("Not full or blinded beacon block");
|
|
77
|
-
}
|
|
73
|
+
throw Error("Not full or blinded beacon block");
|
|
78
74
|
}
|
|
79
75
|
export function isCapellaPayload(payload) {
|
|
80
76
|
return (payload.withdrawals !== undefined ||
|
|
@@ -109,14 +105,7 @@ export function executionPayloadToPayloadHeader(fork, payload) {
|
|
|
109
105
|
bellatrixPayloadFields.blobGasUsed = payload.blobGasUsed;
|
|
110
106
|
bellatrixPayloadFields.excessBlobGas = payload.excessBlobGas;
|
|
111
107
|
}
|
|
112
|
-
|
|
113
|
-
bellatrixPayloadFields.depositRequestsRoot =
|
|
114
|
-
ssz.electra.DepositRequests.hashTreeRoot(payload.depositRequests);
|
|
115
|
-
bellatrixPayloadFields.withdrawalRequestsRoot =
|
|
116
|
-
ssz.electra.WithdrawalRequests.hashTreeRoot(payload.withdrawalRequests);
|
|
117
|
-
bellatrixPayloadFields.consolidationRequestsRoot =
|
|
118
|
-
ssz.electra.ConsolidationRequests.hashTreeRoot(payload.consolidationRequests);
|
|
119
|
-
}
|
|
108
|
+
// No change in Electra
|
|
120
109
|
return bellatrixPayloadFields;
|
|
121
110
|
}
|
|
122
111
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/util/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,wBAAwB,EACxB,GAAG,EAIH,kBAAkB,GAInB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAA0B,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAWlE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA4B,EAAE,KAAuC;IACtG,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wGAAwG;IACxG,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/C,iHAAiH;IACjH,oFAAoF;IACpF,yDAAyD;IAEzD,oGAAoG;IACpG,0DAA0D;IAC1D,OAAO,kBAAkB,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAChG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAC1C,KAAK,CAAC,4BAA4B;QAClC,oBAAoB;QACpB,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,CACpD,CAAC;AACR,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAA4B,EAAE,IAA+B;IAClG,OAAO,CACL,CAAC,yBAAyB,CAAC,KAAK,CAAC;QACjC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAC7G,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA4B;IACpE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,CAChD,KAA8B,CAAC,4BAA4B;QAC5D,oBAAoB;QACpB,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,YAAY,EAAE,CACpD,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAC/C,KAAK,CAAC,4BAA4B;IAClC,oBAAoB;IACpB,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAClD,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,OAAQ,KAA+B,CAAC,4BAA4B,KAAK,SAAS,CAAC;AACrF,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,OAAO,CACJ,KAA4B,CAAC,4BAA4B,KAAK,SAAS;QACvE,KAA4B,CAAC,4BAA4B,CAAC,eAAe,KAAK,SAAS,CACzF,CAAC;AACJ,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,0BAA0B,CAAC,KAAgC;IACzE,OAAQ,KAAqC,CAAC,4BAA4B,KAAK,SAAS,CAAC;AAC3F,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,wBAAwB,CAAC,SAA0B;IACjE,OAAQ,SAA4C,CAAC,gBAAgB,KAAK,SAAS,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAkB;IACxD,OAAO,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,IAA8C;IAE9C,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAED,IAAK,IAAkC,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACvE,OAAQ,IAAkC,CAAC,gBAAgB,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,CAAC,kCAAkC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAkD;IAElD,OAAO,CACJ,OAA8C,CAAC,WAAW,KAAK,SAAS;QACxE,OAAoD,CAAC,eAAe,KAAK,SAAS,CACpF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA8C;IAE9C,OAAQ,OAA0C,CAAC,eAAe,KAAK,SAAS,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,IAAa,EAAE,OAAyB;IACtF,MAAM,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEvF,MAAM,sBAAsB,GAA2B;QACrD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,gBAAgB;KACjB,CAAC;IAEF,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,sBAAyD,CAAC,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAC9G,OAAoC,CAAC,WAAW,CAClD,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,+GAA+G;QAC9G,sBAAuD,CAAC,WAAW,GAClE,OACD,CAAC,WAAW,CAAC;QACb,sBAAuD,CAAC,aAAa,GACpE,OACD,CAAC,aAAa,CAAC;IAClB,CAAC;IAED,uBAAuB;IAEvB,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
|
package/lib/util/index.d.ts
CHANGED
|
@@ -17,7 +17,6 @@ export * from "./genesis.js";
|
|
|
17
17
|
export * from "./interop.js";
|
|
18
18
|
export * from "./rootCache.js";
|
|
19
19
|
export * from "./seed.js";
|
|
20
|
-
export * from "./shuffle.js";
|
|
21
20
|
export * from "./shufflingDecisionRoot.js";
|
|
22
21
|
export * from "./signatureSets.js";
|
|
23
22
|
export * from "./signingRoot.js";
|
package/lib/util/index.js
CHANGED
|
@@ -17,7 +17,6 @@ export * from "./genesis.js";
|
|
|
17
17
|
export * from "./interop.js";
|
|
18
18
|
export * from "./rootCache.js";
|
|
19
19
|
export * from "./seed.js";
|
|
20
|
-
export * from "./shuffle.js";
|
|
21
20
|
export * from "./shufflingDecisionRoot.js";
|
|
22
21
|
export * from "./signatureSets.js";
|
|
23
22
|
export * from "./signingRoot.js";
|
package/lib/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oCAAoC,CAAC;AACnD,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC"}
|
|
@@ -13,9 +13,7 @@ export function loadValidator(seedValidator, newValidatorBytes) {
|
|
|
13
13
|
}
|
|
14
14
|
return ssz.phase0.Validator.toViewDU(newValidatorValue);
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
return ssz.phase0.Validator.deserializeToViewDU(newValidatorBytes);
|
|
18
|
-
}
|
|
16
|
+
return ssz.phase0.Validator.deserializeToViewDU(newValidatorBytes);
|
|
19
17
|
}
|
|
20
18
|
/**
|
|
21
19
|
* Return pubkey or withdrawalCredentials or both if they are the same.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadValidator.js","sourceRoot":"","sources":["../../../src/util/loadState/loadValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gCAAgC,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,aAA2D,EAC3D,iBAA6B;IAE7B,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACtE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACnH,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,iBAAiB,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC;
|
|
1
|
+
{"version":3,"file":"loadValidator.js","sourceRoot":"","sources":["../../../src/util/loadState/loadValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gCAAgC,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEtE;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,aAA2D,EAC3D,iBAA6B;IAE7B,MAAM,aAAa,GAAG,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IACtE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,iBAAiB,GAAG,gCAAgC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACnH,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,iBAAiB,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,SAAuD,EACvD,cAA0B;IAE1B,MAAM,aAAa,GAA2C,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,qBAAqB,GAAG,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjF,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/lib/util/seed.js
CHANGED
|
@@ -100,7 +100,7 @@ export function computeShuffledIndex(index, indexCount, seed) {
|
|
|
100
100
|
const position = Math.max(permuted, flip);
|
|
101
101
|
const source = digest(Buffer.concat([_seed, intToBytes(i, 1), intToBytes(Math.floor(position / 256), 4)]));
|
|
102
102
|
const byte = source[Math.floor((position % 256) / 8)];
|
|
103
|
-
const bit = (byte >> position % 8) % 2;
|
|
103
|
+
const bit = (byte >> (position % 8)) % 2;
|
|
104
104
|
permuted = bit ? flip : permuted;
|
|
105
105
|
}
|
|
106
106
|
return permuted;
|
package/lib/util/seed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/util/seed.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,12 +9,10 @@ import { computeStartSlotAtEpoch } from "./epoch.js";
|
|
|
9
9
|
*/
|
|
10
10
|
export function proposerShufflingDecisionRoot(state) {
|
|
11
11
|
const decisionSlot = proposerShufflingDecisionSlot(state);
|
|
12
|
-
if (state.slot
|
|
12
|
+
if (state.slot === decisionSlot) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
|
|
16
|
-
return getBlockRootAtSlot(state, decisionSlot);
|
|
17
|
-
}
|
|
15
|
+
return getBlockRootAtSlot(state, decisionSlot);
|
|
18
16
|
}
|
|
19
17
|
/**
|
|
20
18
|
* Returns the slot at which the proposer shuffling was decided. The block root at this slot
|
|
@@ -33,12 +31,10 @@ function proposerShufflingDecisionSlot(state) {
|
|
|
33
31
|
*/
|
|
34
32
|
export function attesterShufflingDecisionRoot(state, requestedEpoch) {
|
|
35
33
|
const decisionSlot = attesterShufflingDecisionSlot(state, requestedEpoch);
|
|
36
|
-
if (state.slot
|
|
34
|
+
if (state.slot === decisionSlot) {
|
|
37
35
|
return null;
|
|
38
36
|
}
|
|
39
|
-
|
|
40
|
-
return getBlockRootAtSlot(state, decisionSlot);
|
|
41
|
-
}
|
|
37
|
+
return getBlockRootAtSlot(state, decisionSlot);
|
|
42
38
|
}
|
|
43
39
|
/**
|
|
44
40
|
* Returns the slot at which the proposer shuffling was decided. The block root at this slot
|
|
@@ -72,8 +68,6 @@ function attesterShufflingDecisionEpoch(state, requestedEpoch) {
|
|
|
72
68
|
if (requestedEpoch < currentEpoch) {
|
|
73
69
|
throw Error(`EpochTooLow: current ${currentEpoch} requested ${requestedEpoch}`);
|
|
74
70
|
}
|
|
75
|
-
|
|
76
|
-
throw Error(`EpochTooHigh: current ${currentEpoch} requested ${requestedEpoch}`);
|
|
77
|
-
}
|
|
71
|
+
throw Error(`EpochTooHigh: current ${currentEpoch} requested ${requestedEpoch}`);
|
|
78
72
|
}
|
|
79
73
|
//# sourceMappingURL=shufflingDecisionRoot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shufflingDecisionRoot.js","sourceRoot":"","sources":["../../src/util/shufflingDecisionRoot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAgC;IAC5E,MAAM,YAAY,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"shufflingDecisionRoot.js","sourceRoot":"","sources":["../../src/util/shufflingDecisionRoot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAgC;IAC5E,MAAM,YAAY,GAAG,6BAA6B,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,SAAS,6BAA6B,CAAC,KAAgC;IACrE,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAgC,EAAE,cAAqB;IACnG,MAAM,YAAY,GAAG,6BAA6B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,SAAS,6BAA6B,CAAC,KAAgC,EAAE,cAAqB;IAC5F,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,8BAA8B,CAAC,KAAgC,EAAE,cAAqB;IAC7F,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAE1C,OAAO;IACP,IAAI,cAAc,KAAK,YAAY,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7D,UAAU;IACV,IAAI,cAAc,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,WAAW;IACX,IAAI,cAAc,KAAK,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9E,IAAI,cAAc,GAAG,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,wBAAwB,YAAY,cAAc,cAAc,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,KAAK,CAAC,yBAAyB,YAAY,cAAc,cAAc,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
package/lib/util/validator.js
CHANGED
|
@@ -32,9 +32,7 @@ export function getActivationChurnLimit(config, fork, activeValidatorCount) {
|
|
|
32
32
|
if (fork >= ForkSeq.deneb) {
|
|
33
33
|
return Math.min(config.MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT, getChurnLimit(config, activeValidatorCount));
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
return getChurnLimit(config, activeValidatorCount);
|
|
37
|
-
}
|
|
35
|
+
return getChurnLimit(config, activeValidatorCount);
|
|
38
36
|
}
|
|
39
37
|
export function getChurnLimit(config, activeValidatorCount) {
|
|
40
38
|
return Math.max(config.MIN_PER_EPOCH_CHURN_LIMIT, intDiv(activeValidatorCount, config.CHURN_LIMIT_QUOTIENT));
|
|
@@ -58,9 +56,7 @@ export function getMaxEffectiveBalance(withdrawalCredentials) {
|
|
|
58
56
|
if (hasCompoundingWithdrawalCredential(withdrawalCredentials)) {
|
|
59
57
|
return MAX_EFFECTIVE_BALANCE_ELECTRA;
|
|
60
58
|
}
|
|
61
|
-
|
|
62
|
-
return MIN_ACTIVATION_BALANCE;
|
|
63
|
-
}
|
|
59
|
+
return MIN_ACTIVATION_BALANCE;
|
|
64
60
|
}
|
|
65
61
|
export function getActiveBalance(state, validatorIndex) {
|
|
66
62
|
const validatorMaxEffectiveBalance = getMaxEffectiveBalance(state.validators.getReadonly(validatorIndex).withdrawalCredentials);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/util/validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,OAAO,EACP,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,kCAAkC,EAAC,MAAM,cAAc,CAAC;AAEhE;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAA2B,EAAE,KAAY;IACzE,OAAO,SAAS,CAAC,eAAe,IAAI,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA2B,EAAE,KAAY;IAC5E,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,eAAe,IAAI,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,iBAAiB,CAAC;AACzG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAA0B,EAAE,KAAY;IAChF,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAuB,EAAE,IAAa,EAAE,oBAA4B;IAC1G,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,oCAAoC,EAAE,aAAa,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC5G,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/util/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,6 @@ export function computeWeakSubjectivityPeriodFromConstituents(activeValidatorCou
|
|
|
50
50
|
const t = Math.floor(totalBalanceByIncrement / N);
|
|
51
51
|
const T = MAX_EFFECTIVE_BALANCE / ETH_TO_GWEI;
|
|
52
52
|
const delta = churnLimit;
|
|
53
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
54
53
|
const Delta = MAX_DEPOSITS * SLOTS_PER_EPOCH;
|
|
55
54
|
const D = SAFETY_DECAY;
|
|
56
55
|
let wsPeriod = minWithdrawabilityDelay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"weakSubjectivity.js","sourceRoot":"","sources":["../../src/util/weakSubjectivity.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,2BAA2B,EAAE,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEnH,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,iCAAiC,EAAC,MAAM,YAAY,CAAC;AAClG,OAAO,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;AACzC,OAAO,EAAC,yBAAyB,EAAE,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAExE,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,CAAC,CAAC;AACnC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,wCAAwC,CACtD,MAAuB,EACvB,KAAgC;IAEhC,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,wCAAwC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,wCAAwC,CACtD,MAAuB,EACvB,KAAgC;IAEhC,MAAM,oBAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC;IAClF,OAAO,6CAA6C,CAClD,oBAAoB,EACpB,KAAK,CAAC,QAAQ,CAAC,4BAA4B,EAC3C,aAAa,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC3C,MAAM,CAAC,mCAAmC,CAC3C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAuB,EAAE,KAA0B;IAC/F,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC3D,IAAI,4BAA4B,GAAG,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,4BAA4B,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,gBAAgB,GAAG,2BAA2B,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,4BAA4B,IAAI,CAAC,EAAE,CAAC;QACtC,4BAA4B,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,6CAA6C,CAClD,aAAa,CAAC,MAAM,EACpB,4BAA4B,EAC5B,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3C,MAAM,CAAC,mCAAmC,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6CAA6C,CAC3D,oBAA4B,EAC5B,uBAA+B,EAC/B,UAAkB,EAClB,uBAA+B;IAE/B,MAAM,CAAC,GAAG,oBAAoB,CAAC;IAC/B,+EAA+E;IAC/E,6GAA6G;IAC7G,uFAAuF;IACvF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,qBAAqB,GAAG,WAAW,CAAC;IAC9C,MAAM,KAAK,GAAG,UAAU,CAAC;IACzB,
|
|
1
|
+
{"version":3,"file":"weakSubjectivity.js","sourceRoot":"","sources":["../../src/util/weakSubjectivity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.23.0-dev.
|
|
14
|
+
"version": "1.23.0-dev.cf722195b5",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"build:release": "yarn clean && yarn build",
|
|
51
51
|
"check-build": "node -e \"(async function() { await import('./lib/index.js') })()\"",
|
|
52
52
|
"check-types": "tsc",
|
|
53
|
-
"lint": "
|
|
54
|
-
"lint:fix": "yarn run lint --
|
|
53
|
+
"lint": "biome check src/ test/",
|
|
54
|
+
"lint:fix": "yarn run lint --write",
|
|
55
55
|
"test": "yarn test:unit",
|
|
56
56
|
"test:unit": "vitest --run --dir test/unit/",
|
|
57
57
|
"check-readme": "typescript-docs-verifier"
|
|
@@ -62,11 +62,13 @@
|
|
|
62
62
|
"@chainsafe/blst": "^2.0.3",
|
|
63
63
|
"@chainsafe/persistent-merkle-tree": "^0.8.0",
|
|
64
64
|
"@chainsafe/persistent-ts": "^0.19.1",
|
|
65
|
+
"@chainsafe/pubkey-index-map": "2.0.0",
|
|
65
66
|
"@chainsafe/ssz": "^0.17.1",
|
|
66
|
-
"@
|
|
67
|
-
"@lodestar/
|
|
68
|
-
"@lodestar/
|
|
69
|
-
"@lodestar/
|
|
67
|
+
"@chainsafe/swap-or-not-shuffle": "^0.0.2",
|
|
68
|
+
"@lodestar/config": "1.23.0-dev.cf722195b5",
|
|
69
|
+
"@lodestar/params": "1.23.0-dev.cf722195b5",
|
|
70
|
+
"@lodestar/types": "1.23.0-dev.cf722195b5",
|
|
71
|
+
"@lodestar/utils": "1.23.0-dev.cf722195b5",
|
|
70
72
|
"bigint-buffer": "^1.1.5",
|
|
71
73
|
"immutable": "^4.3.2"
|
|
72
74
|
},
|
|
@@ -76,5 +78,5 @@
|
|
|
76
78
|
"beacon",
|
|
77
79
|
"blockchain"
|
|
78
80
|
],
|
|
79
|
-
"gitHead": "
|
|
81
|
+
"gitHead": "ae6a32b481d1fcb0637c3e079fcb6d0385a6fbfd"
|
|
80
82
|
}
|
package/lib/util/shuffle.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Bytes32 } from "@lodestar/types";
|
|
2
|
-
type Shuffleable = {
|
|
3
|
-
readonly length: number;
|
|
4
|
-
[index: number]: number;
|
|
5
|
-
};
|
|
6
|
-
export declare function shuffleList(input: Shuffleable, seed: Bytes32): void;
|
|
7
|
-
export declare function unshuffleList(input: Shuffleable, seed: Bytes32): void;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=shuffle.d.ts.map
|
package/lib/util/shuffle.js
DELETED
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import { digest } from "@chainsafe/as-sha256";
|
|
2
|
-
import { SHUFFLE_ROUND_COUNT } from "@lodestar/params";
|
|
3
|
-
import { assert, bytesToBigInt } from "@lodestar/utils";
|
|
4
|
-
// ShuffleList shuffles a list, using the given seed for randomness. Mutates the input list.
|
|
5
|
-
export function shuffleList(input, seed) {
|
|
6
|
-
innerShuffleList(input, seed, true);
|
|
7
|
-
}
|
|
8
|
-
// UnshuffleList undoes a list shuffling using the seed of the shuffling. Mutates the input list.
|
|
9
|
-
export function unshuffleList(input, seed) {
|
|
10
|
-
innerShuffleList(input, seed, false);
|
|
11
|
-
}
|
|
12
|
-
const _SHUFFLE_H_SEED_SIZE = 32;
|
|
13
|
-
const _SHUFFLE_H_ROUND_SIZE = 1;
|
|
14
|
-
const _SHUFFLE_H_POSITION_WINDOW_SIZE = 4;
|
|
15
|
-
const _SHUFFLE_H_PIVOT_VIEW_SIZE = _SHUFFLE_H_SEED_SIZE + _SHUFFLE_H_ROUND_SIZE;
|
|
16
|
-
const _SHUFFLE_H_TOTAL_SIZE = _SHUFFLE_H_SEED_SIZE + _SHUFFLE_H_ROUND_SIZE + _SHUFFLE_H_POSITION_WINDOW_SIZE;
|
|
17
|
-
/*
|
|
18
|
-
|
|
19
|
-
def shuffle(list_size, seed):
|
|
20
|
-
indices = list(range(list_size))
|
|
21
|
-
for round in range(90):
|
|
22
|
-
hash_bytes = b''.join([
|
|
23
|
-
hash(seed + round.to_bytes(1, 'little') + (i).to_bytes(4, 'little'))
|
|
24
|
-
for i in range((list_size + 255) // 256)
|
|
25
|
-
])
|
|
26
|
-
pivot = int.from_bytes(hash(seed + round.to_bytes(1, 'little')), 'little') % list_size
|
|
27
|
-
|
|
28
|
-
powers_of_two = [1, 2, 4, 8, 16, 32, 64, 128]
|
|
29
|
-
|
|
30
|
-
for i, index in enumerate(indices):
|
|
31
|
-
flip = (pivot - index) % list_size
|
|
32
|
-
hash_pos = index if index > flip else flip
|
|
33
|
-
byte = hash_bytes[hash_pos // 8]
|
|
34
|
-
if byte & powers_of_two[hash_pos % 8]:
|
|
35
|
-
indices[i] = flip
|
|
36
|
-
return indices
|
|
37
|
-
|
|
38
|
-
Heavily-optimized version of the set-shuffling algorithm proposed by Vitalik to shuffle all items in a list together.
|
|
39
|
-
|
|
40
|
-
Original here:
|
|
41
|
-
https://github.com/ethereum/consensus-specs/pull/576
|
|
42
|
-
|
|
43
|
-
Main differences, implemented by @protolambda:
|
|
44
|
-
- User can supply input slice to shuffle, simple provide [0,1,2,3,4, ...] to get a list of cleanly shuffled indices.
|
|
45
|
-
- Input slice is shuffled (hence no return value), no new array is allocated
|
|
46
|
-
- Allocations as minimal as possible: only a very minimal buffer for hashing
|
|
47
|
-
(this should be allocated on the stack, compiler will find it with escape analysis).
|
|
48
|
-
This is not bigger than what's used for shuffling a single index!
|
|
49
|
-
As opposed to larger allocations (size O(n) instead of O(1)) made in the original.
|
|
50
|
-
- Replaced pseudocode/python workarounds with bit-logic.
|
|
51
|
-
- User can provide their own hash-function (as long as it outputs a 32 len byte slice)
|
|
52
|
-
|
|
53
|
-
This Typescript version is an adaption of the Python version, in turn an adaption of the original Go version.
|
|
54
|
-
Python: https://github.com/protolambda/eth2fastspec/blob/14e04e9db77ef7c8b7788ffdaa7e142d7318dd7e/eth2fastspec.py#L63
|
|
55
|
-
Go: https://github.com/protolambda/eth2-shuffle
|
|
56
|
-
All three implemented by @protolambda, but meant for public use, like the original spec version.
|
|
57
|
-
*/
|
|
58
|
-
function setPositionUint32(value, buf) {
|
|
59
|
-
// Little endian, optimized version
|
|
60
|
-
buf[_SHUFFLE_H_PIVOT_VIEW_SIZE] = (value >> 0) & 0xff;
|
|
61
|
-
buf[_SHUFFLE_H_PIVOT_VIEW_SIZE + 1] = (value >> 8) & 0xff;
|
|
62
|
-
buf[_SHUFFLE_H_PIVOT_VIEW_SIZE + 2] = (value >> 16) & 0xff;
|
|
63
|
-
buf[_SHUFFLE_H_PIVOT_VIEW_SIZE + 3] = (value >> 24) & 0xff;
|
|
64
|
-
}
|
|
65
|
-
// Shuffles or unshuffles, depending on the `dir` (true for shuffling, false for unshuffling
|
|
66
|
-
function innerShuffleList(input, seed, dir) {
|
|
67
|
-
if (input.length <= 1) {
|
|
68
|
-
// nothing to (un)shuffle
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (SHUFFLE_ROUND_COUNT == 0) {
|
|
72
|
-
// no shuffling
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
// uint32 is sufficient, and necessary in JS,
|
|
76
|
-
// as we do a lot of bit math on it, which cannot be done as fast on more bits.
|
|
77
|
-
const listSize = input.length >>> 0;
|
|
78
|
-
// check if list size fits in uint32
|
|
79
|
-
assert.equal(listSize, input.length, "input length does not fit uint32");
|
|
80
|
-
// check that the seed is 32 bytes
|
|
81
|
-
assert.lte(seed.length, _SHUFFLE_H_SEED_SIZE, `seed length is not lte ${_SHUFFLE_H_SEED_SIZE} bytes`);
|
|
82
|
-
const buf = Buffer.alloc(_SHUFFLE_H_TOTAL_SIZE);
|
|
83
|
-
let r = 0;
|
|
84
|
-
if (!dir) {
|
|
85
|
-
// Start at last round.
|
|
86
|
-
// Iterating through the rounds in reverse, un-swaps everything, effectively un-shuffling the list.
|
|
87
|
-
r = SHUFFLE_ROUND_COUNT - 1;
|
|
88
|
-
}
|
|
89
|
-
// Seed is always the first 32 bytes of the hash input, we never have to change this part of the buffer.
|
|
90
|
-
buf.set(seed, 0);
|
|
91
|
-
// initial values here are not used: overwritten first within the inner for loop.
|
|
92
|
-
let source = seed; // just setting it to a Bytes32
|
|
93
|
-
let byteV = 0;
|
|
94
|
-
// eslint-disable-next-line no-constant-condition
|
|
95
|
-
while (true) {
|
|
96
|
-
// spec: pivot = bytes_to_int(hash(seed + int_to_bytes1(round))[0:8]) % list_size
|
|
97
|
-
// This is the "int_to_bytes1(round)", appended to the seed.
|
|
98
|
-
buf[_SHUFFLE_H_SEED_SIZE] = r;
|
|
99
|
-
// Seed is already in place, now just hash the correct part of the buffer, and take a uint64 from it,
|
|
100
|
-
// and modulo it to get a pivot within range.
|
|
101
|
-
const h = digest(buf.subarray(0, _SHUFFLE_H_PIVOT_VIEW_SIZE));
|
|
102
|
-
const pivot = Number(bytesToBigInt(h.subarray(0, 8)) % BigInt(listSize)) >>> 0;
|
|
103
|
-
// Split up the for-loop in two:
|
|
104
|
-
// 1. Handle the part from 0 (incl) to pivot (incl). This is mirrored around (pivot / 2)
|
|
105
|
-
// 2. Handle the part from pivot (excl) to N (excl). This is mirrored around ((pivot / 2) + (size/2))
|
|
106
|
-
// The pivot defines a split in the array, with each of the splits mirroring their data within the split.
|
|
107
|
-
// Print out some example even/odd sized index lists, with some even/odd pivots,
|
|
108
|
-
// and you can deduce how the mirroring works exactly.
|
|
109
|
-
// Note that the mirror is strict enough to not consider swapping the index @mirror with itself.
|
|
110
|
-
let mirror = (pivot + 1) >> 1;
|
|
111
|
-
// Since we are iterating through the "positions" in order, we can just repeat the hash every 256th position.
|
|
112
|
-
// No need to pre-compute every possible hash for efficiency like in the example code.
|
|
113
|
-
// We only need it consecutively (we are going through each in reverse order however, but same thing)
|
|
114
|
-
//
|
|
115
|
-
// spec: source = hash(seed + int_to_bytes1(round) + int_to_bytes4(position // 256))
|
|
116
|
-
// - seed is still in 0:32 (excl., 32 bytes)
|
|
117
|
-
// - round number is still in 32
|
|
118
|
-
// - mix in the position for randomness, except the last byte of it,
|
|
119
|
-
// which will be used later to select a bit from the resulting hash.
|
|
120
|
-
// We start from the pivot position, and work back to the mirror position (of the part left to the pivot).
|
|
121
|
-
// This makes us process each pear exactly once (instead of unnecessarily twice, like in the spec)
|
|
122
|
-
setPositionUint32(pivot >> 8, buf); // already using first pivot byte below.
|
|
123
|
-
source = digest(buf);
|
|
124
|
-
byteV = source[(pivot & 0xff) >> 3];
|
|
125
|
-
for (let i = 0, j; i < mirror; i++) {
|
|
126
|
-
j = pivot - i;
|
|
127
|
-
// -- step() fn start
|
|
128
|
-
// The pair is i,j. With j being the bigger of the two, hence the "position" identifier of the pair.
|
|
129
|
-
// Every 256th bit (aligned to j).
|
|
130
|
-
if ((j & 0xff) == 0xff) {
|
|
131
|
-
// just overwrite the last part of the buffer, reuse the start (seed, round)
|
|
132
|
-
setPositionUint32(j >> 8, buf);
|
|
133
|
-
source = digest(buf);
|
|
134
|
-
}
|
|
135
|
-
// Same trick with byte retrieval. Only every 8th.
|
|
136
|
-
if ((j & 0x7) == 0x7) {
|
|
137
|
-
byteV = source[(j & 0xff) >> 3];
|
|
138
|
-
}
|
|
139
|
-
const bitV = (byteV >> (j & 0x7)) & 0x1;
|
|
140
|
-
if (bitV == 1) {
|
|
141
|
-
// swap the pair items
|
|
142
|
-
const tmp = input[j];
|
|
143
|
-
input[j] = input[i];
|
|
144
|
-
input[i] = tmp;
|
|
145
|
-
}
|
|
146
|
-
// -- step() fn end
|
|
147
|
-
}
|
|
148
|
-
// Now repeat, but for the part after the pivot.
|
|
149
|
-
mirror = (pivot + listSize + 1) >> 1;
|
|
150
|
-
const end = listSize - 1;
|
|
151
|
-
// Again, seed and round input is in place, just update the position.
|
|
152
|
-
// We start at the end, and work back to the mirror point.
|
|
153
|
-
// This makes us process each pear exactly once (instead of unnecessarily twice, like in the spec)
|
|
154
|
-
setPositionUint32(end >> 8, buf);
|
|
155
|
-
source = digest(buf);
|
|
156
|
-
byteV = source[(end & 0xff) >> 3];
|
|
157
|
-
for (let i = pivot + 1, j; i < mirror; i++) {
|
|
158
|
-
j = end - i + pivot + 1;
|
|
159
|
-
// -- step() fn start
|
|
160
|
-
// The pair is i,j. With j being the bigger of the two, hence the "position" identifier of the pair.
|
|
161
|
-
// Every 256th bit (aligned to j).
|
|
162
|
-
if ((j & 0xff) == 0xff) {
|
|
163
|
-
// just overwrite the last part of the buffer, reuse the start (seed, round)
|
|
164
|
-
setPositionUint32(j >> 8, buf);
|
|
165
|
-
source = digest(buf);
|
|
166
|
-
}
|
|
167
|
-
// Same trick with byte retrieval. Only every 8th.
|
|
168
|
-
if ((j & 0x7) == 0x7) {
|
|
169
|
-
byteV = source[(j & 0xff) >> 3];
|
|
170
|
-
}
|
|
171
|
-
const bitV = (byteV >> (j & 0x7)) & 0x1;
|
|
172
|
-
if (bitV == 1) {
|
|
173
|
-
// swap the pair items
|
|
174
|
-
const tmp = input[j];
|
|
175
|
-
input[j] = input[i];
|
|
176
|
-
input[i] = tmp;
|
|
177
|
-
}
|
|
178
|
-
// -- step() fn end
|
|
179
|
-
}
|
|
180
|
-
// go forwards?
|
|
181
|
-
if (dir) {
|
|
182
|
-
// -> shuffle
|
|
183
|
-
r += 1;
|
|
184
|
-
if (r == SHUFFLE_ROUND_COUNT) {
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
if (r == 0) {
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
// -> un-shuffle
|
|
193
|
-
r -= 1;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
//# sourceMappingURL=shuffle.js.map
|
package/lib/util/shuffle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shuffle.js","sourceRoot":"","sources":["../../src/util/shuffle.ts"],"names":[],"mappings":"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"}
|