@lodestar/state-transition 1.39.0 → 1.40.0-dev.3715a82f3f

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 (139) hide show
  1. package/lib/block/index.d.ts +1 -0
  2. package/lib/block/index.d.ts.map +1 -1
  3. package/lib/block/index.js +1 -0
  4. package/lib/block/index.js.map +1 -1
  5. package/lib/block/isValidIndexedAttestation.d.ts +4 -5
  6. package/lib/block/isValidIndexedAttestation.d.ts.map +1 -1
  7. package/lib/block/isValidIndexedAttestation.js +9 -10
  8. package/lib/block/isValidIndexedAttestation.js.map +1 -1
  9. package/lib/block/processAttestationPhase0.d.ts.map +1 -1
  10. package/lib/block/processAttestationPhase0.js +1 -1
  11. package/lib/block/processAttestationPhase0.js.map +1 -1
  12. package/lib/block/processAttesterSlashing.d.ts +3 -2
  13. package/lib/block/processAttesterSlashing.d.ts.map +1 -1
  14. package/lib/block/processAttesterSlashing.js +3 -3
  15. package/lib/block/processAttesterSlashing.js.map +1 -1
  16. package/lib/block/processBlsToExecutionChange.d.ts +3 -1
  17. package/lib/block/processBlsToExecutionChange.d.ts.map +1 -1
  18. package/lib/block/processBlsToExecutionChange.js +7 -11
  19. package/lib/block/processBlsToExecutionChange.js.map +1 -1
  20. package/lib/block/processDepositRequest.d.ts +8 -2
  21. package/lib/block/processDepositRequest.d.ts.map +1 -1
  22. package/lib/block/processDepositRequest.js +81 -8
  23. package/lib/block/processDepositRequest.js.map +1 -1
  24. package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
  25. package/lib/block/processExecutionPayloadBid.js +14 -27
  26. package/lib/block/processExecutionPayloadBid.js.map +1 -1
  27. package/lib/block/processExecutionPayloadEnvelope.d.ts.map +1 -1
  28. package/lib/block/processExecutionPayloadEnvelope.js +25 -24
  29. package/lib/block/processExecutionPayloadEnvelope.js.map +1 -1
  30. package/lib/block/processOperations.js +1 -1
  31. package/lib/block/processOperations.js.map +1 -1
  32. package/lib/block/processProposerSlashing.d.ts +5 -2
  33. package/lib/block/processProposerSlashing.d.ts.map +1 -1
  34. package/lib/block/processProposerSlashing.js +7 -5
  35. package/lib/block/processProposerSlashing.js.map +1 -1
  36. package/lib/block/processVoluntaryExit.d.ts +1 -1
  37. package/lib/block/processVoluntaryExit.d.ts.map +1 -1
  38. package/lib/block/processVoluntaryExit.js +44 -2
  39. package/lib/block/processVoluntaryExit.js.map +1 -1
  40. package/lib/block/processWithdrawals.d.ts +1 -0
  41. package/lib/block/processWithdrawals.d.ts.map +1 -1
  42. package/lib/block/processWithdrawals.js +121 -66
  43. package/lib/block/processWithdrawals.js.map +1 -1
  44. package/lib/cache/epochCache.d.ts +8 -28
  45. package/lib/cache/epochCache.d.ts.map +1 -1
  46. package/lib/cache/epochCache.js +40 -180
  47. package/lib/cache/epochCache.js.map +1 -1
  48. package/lib/cache/epochTransitionCache.d.ts +5 -12
  49. package/lib/cache/epochTransitionCache.d.ts.map +1 -1
  50. package/lib/cache/epochTransitionCache.js +4 -14
  51. package/lib/cache/epochTransitionCache.js.map +1 -1
  52. package/lib/cache/stateCache.d.ts.map +1 -1
  53. package/lib/cache/stateCache.js +1 -2
  54. package/lib/cache/stateCache.js.map +1 -1
  55. package/lib/epoch/processBuilderPendingPayments.d.ts.map +1 -1
  56. package/lib/epoch/processBuilderPendingPayments.js +1 -4
  57. package/lib/epoch/processBuilderPendingPayments.js.map +1 -1
  58. package/lib/epoch/processProposerLookahead.d.ts.map +1 -1
  59. package/lib/epoch/processProposerLookahead.js +3 -6
  60. package/lib/epoch/processProposerLookahead.js.map +1 -1
  61. package/lib/index.d.ts +1 -1
  62. package/lib/index.d.ts.map +1 -1
  63. package/lib/index.js +1 -1
  64. package/lib/index.js.map +1 -1
  65. package/lib/rewards/blockRewards.d.ts +2 -1
  66. package/lib/rewards/blockRewards.d.ts.map +1 -1
  67. package/lib/rewards/blockRewards.js +3 -2
  68. package/lib/rewards/blockRewards.js.map +1 -1
  69. package/lib/rewards/syncCommitteeRewards.d.ts.map +1 -1
  70. package/lib/rewards/syncCommitteeRewards.js +10 -11
  71. package/lib/rewards/syncCommitteeRewards.js.map +1 -1
  72. package/lib/signatureSets/blsToExecutionChange.d.ts +1 -2
  73. package/lib/signatureSets/blsToExecutionChange.d.ts.map +1 -1
  74. package/lib/signatureSets/blsToExecutionChange.js +2 -2
  75. package/lib/signatureSets/blsToExecutionChange.js.map +1 -1
  76. package/lib/types.d.ts +1 -1
  77. package/lib/types.d.ts.map +1 -1
  78. package/lib/util/electra.d.ts.map +1 -1
  79. package/lib/util/electra.js +1 -2
  80. package/lib/util/electra.js.map +1 -1
  81. package/lib/util/epochShuffling.d.ts +1 -34
  82. package/lib/util/epochShuffling.d.ts.map +1 -1
  83. package/lib/util/epochShuffling.js +1 -1
  84. package/lib/util/epochShuffling.js.map +1 -1
  85. package/lib/util/gloas.d.ts +43 -3
  86. package/lib/util/gloas.d.ts.map +1 -1
  87. package/lib/util/gloas.js +93 -5
  88. package/lib/util/gloas.js.map +1 -1
  89. package/lib/util/index.d.ts +1 -2
  90. package/lib/util/index.d.ts.map +1 -1
  91. package/lib/util/index.js +1 -2
  92. package/lib/util/index.js.map +1 -1
  93. package/lib/util/shuffling.d.ts +58 -0
  94. package/lib/util/shuffling.d.ts.map +1 -0
  95. package/lib/util/shuffling.js +175 -0
  96. package/lib/util/shuffling.js.map +1 -0
  97. package/lib/util/validator.d.ts +5 -0
  98. package/lib/util/validator.d.ts.map +1 -1
  99. package/lib/util/validator.js +25 -2
  100. package/lib/util/validator.js.map +1 -1
  101. package/package.json +7 -7
  102. package/src/block/index.ts +1 -0
  103. package/src/block/isValidIndexedAttestation.ts +17 -12
  104. package/src/block/processAttestationPhase0.ts +2 -1
  105. package/src/block/processAttesterSlashing.ts +16 -4
  106. package/src/block/processBlsToExecutionChange.ts +13 -14
  107. package/src/block/processDepositRequest.ts +101 -8
  108. package/src/block/processExecutionPayloadBid.ts +18 -40
  109. package/src/block/processExecutionPayloadEnvelope.ts +33 -29
  110. package/src/block/processOperations.ts +1 -1
  111. package/src/block/processProposerSlashing.ts +21 -11
  112. package/src/block/processVoluntaryExit.ts +59 -4
  113. package/src/block/processWithdrawals.ts +168 -70
  114. package/src/cache/epochCache.ts +52 -214
  115. package/src/cache/epochTransitionCache.ts +9 -34
  116. package/src/cache/stateCache.ts +1 -2
  117. package/src/epoch/processBuilderPendingPayments.ts +1 -5
  118. package/src/epoch/processProposerLookahead.ts +3 -7
  119. package/src/index.ts +0 -2
  120. package/src/rewards/blockRewards.ts +6 -3
  121. package/src/rewards/syncCommitteeRewards.ts +10 -13
  122. package/src/signatureSets/blsToExecutionChange.ts +2 -3
  123. package/src/types.ts +1 -0
  124. package/src/util/electra.ts +1 -4
  125. package/src/util/epochShuffling.ts +2 -43
  126. package/src/util/gloas.ts +109 -8
  127. package/src/util/index.ts +1 -2
  128. package/src/util/shuffling.ts +234 -0
  129. package/src/util/validator.ts +31 -1
  130. package/lib/util/calculateCommitteeAssignments.d.ts +0 -12
  131. package/lib/util/calculateCommitteeAssignments.d.ts.map +0 -1
  132. package/lib/util/calculateCommitteeAssignments.js +0 -26
  133. package/lib/util/calculateCommitteeAssignments.js.map +0 -1
  134. package/lib/util/shufflingDecisionRoot.d.ts +0 -20
  135. package/lib/util/shufflingDecisionRoot.d.ts.map +0 -1
  136. package/lib/util/shufflingDecisionRoot.js +0 -76
  137. package/lib/util/shufflingDecisionRoot.js.map +0 -1
  138. package/src/util/calculateCommitteeAssignments.ts +0 -43
  139. package/src/util/shufflingDecisionRoot.ts +0 -81
@@ -1,9 +1,9 @@
1
1
  import { PublicKey, Signature, verify } from "@chainsafe/blst";
2
2
  import { byteArrayEquals } from "@chainsafe/ssz";
3
- import { DOMAIN_BEACON_BUILDER, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
3
+ import { BUILDER_INDEX_SELF_BUILD, DOMAIN_BEACON_BUILDER, SLOTS_PER_EPOCH, SLOTS_PER_HISTORICAL_ROOT, } from "@lodestar/params";
4
4
  import { ssz } from "@lodestar/types";
5
5
  import { toHex, toRootHex } from "@lodestar/utils";
6
- import { computeExitEpochAndUpdateChurn, computeSigningRoot, computeTimeAtSlot } from "../util/index.js";
6
+ import { computeSigningRoot, computeTimeAtSlot } from "../util/index.js";
7
7
  import { processConsolidationRequest } from "./processConsolidationRequest.js";
8
8
  import { processDepositRequest } from "./processDepositRequest.js";
9
9
  import { processWithdrawalRequest } from "./processWithdrawalRequest.js";
@@ -12,17 +12,13 @@ export function processExecutionPayloadEnvelope(state, signedEnvelope, verify) {
12
12
  const envelope = signedEnvelope.message;
13
13
  const payload = envelope.payload;
14
14
  const fork = state.config.getForkSeq(envelope.slot);
15
- if (verify) {
16
- const builderIndex = envelope.builderIndex;
17
- const pubkey = state.validators.getReadonly(builderIndex).pubkey;
18
- if (!verifyExecutionPayloadEnvelopeSignature(state, pubkey, signedEnvelope)) {
19
- throw new Error("Payload Envelope has invalid signature");
20
- }
15
+ if (verify && !verifyExecutionPayloadEnvelopeSignature(state, signedEnvelope)) {
16
+ throw Error(`Execution payload envelope has invalid signature builderIndex=${envelope.builderIndex}`);
21
17
  }
22
18
  validateExecutionPayloadEnvelope(state, envelope);
23
19
  const requests = envelope.executionRequests;
24
20
  for (const deposit of requests.deposits) {
25
- processDepositRequest(state, deposit);
21
+ processDepositRequest(fork, state, deposit);
26
22
  }
27
23
  for (const withdrawal of requests.withdrawals) {
28
24
  processWithdrawalRequest(fork, state, withdrawal);
@@ -35,8 +31,6 @@ export function processExecutionPayloadEnvelope(state, signedEnvelope, verify) {
35
31
  const payment = state.builderPendingPayments.get(paymentIndex).clone();
36
32
  const amount = payment.withdrawal.amount;
37
33
  if (amount > 0) {
38
- const exitQueueEpoch = computeExitEpochAndUpdateChurn(state, BigInt(amount));
39
- payment.withdrawal.withdrawableEpoch = exitQueueEpoch + state.config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY;
40
34
  state.builderPendingWithdrawals.push(payment.withdrawal);
41
35
  }
42
36
  state.builderPendingPayments.set(paymentIndex, ssz.gloas.BuilderPendingPayment.defaultViewDU());
@@ -49,6 +43,7 @@ export function processExecutionPayloadEnvelope(state, signedEnvelope, verify) {
49
43
  }
50
44
  function validateExecutionPayloadEnvelope(state, envelope) {
51
45
  const payload = envelope.payload;
46
+ // Cache latest block header state root
52
47
  if (byteArrayEquals(state.latestBlockHeader.stateRoot, ssz.Root.defaultValue())) {
53
48
  const previousStateRoot = state.hashTreeRoot();
54
49
  state.latestBlockHeader.stateRoot = previousStateRoot;
@@ -57,24 +52,26 @@ function validateExecutionPayloadEnvelope(state, envelope) {
57
52
  if (!byteArrayEquals(envelope.beaconBlockRoot, state.latestBlockHeader.hashTreeRoot())) {
58
53
  throw new Error(`Envelope's block is not the latest block header envelope=${toRootHex(envelope.beaconBlockRoot)} latestBlockHeader=${toRootHex(state.latestBlockHeader.hashTreeRoot())}`);
59
54
  }
60
- // Verify consistency with the beacon block
61
55
  if (envelope.slot !== state.slot) {
62
56
  throw new Error(`Slot mismatch between envelope and state envelope=${envelope.slot} state=${state.slot}`);
63
57
  }
64
- const committedBid = state.latestExecutionPayloadBid;
65
58
  // Verify consistency with the committed bid
59
+ const committedBid = state.latestExecutionPayloadBid;
66
60
  if (envelope.builderIndex !== committedBid.builderIndex) {
67
61
  throw new Error(`Builder index mismatch between envelope and committed bid envelope=${envelope.builderIndex} committedBid=${committedBid.builderIndex}`);
68
62
  }
69
- // Verify consistency with the committed bid
70
63
  const envelopeKzgRoot = ssz.deneb.BlobKzgCommitments.hashTreeRoot(envelope.blobKzgCommitments);
71
64
  if (!byteArrayEquals(committedBid.blobKzgCommitmentsRoot, envelopeKzgRoot)) {
72
65
  throw new Error(`Kzg commitment root mismatch between envelope and committed bid envelope=${toRootHex(envelopeKzgRoot)} committedBid=${toRootHex(committedBid.blobKzgCommitmentsRoot)}`);
73
66
  }
74
- // Verify the withdrawals root
75
- const envelopeWithdrawalsRoot = ssz.capella.Withdrawals.hashTreeRoot(envelope.payload.withdrawals);
76
- if (!byteArrayEquals(state.latestWithdrawalsRoot, envelopeWithdrawalsRoot)) {
77
- throw new Error(`Withdrawals root mismatch between envelope and latest withdrawals root envelope=${toRootHex(envelopeWithdrawalsRoot)} latestWithdrawalRoot=${toRootHex(state.latestWithdrawalsRoot)}`);
67
+ if (!byteArrayEquals(committedBid.prevRandao, payload.prevRandao)) {
68
+ throw new Error(`Prev randao mismatch between committed bid and payload committedBid=${toHex(committedBid.prevRandao)} payload=${toHex(payload.prevRandao)}`);
69
+ }
70
+ // Verify consistency with expected withdrawals
71
+ const payloadWithdrawalsRoot = ssz.capella.Withdrawals.hashTreeRoot(payload.withdrawals);
72
+ const expectedWithdrawalsRoot = state.payloadExpectedWithdrawals.hashTreeRoot();
73
+ if (!byteArrayEquals(payloadWithdrawalsRoot, expectedWithdrawalsRoot)) {
74
+ throw new Error(`Withdrawals mismatch between payload and expected withdrawals payload=${toRootHex(payloadWithdrawalsRoot)} expected=${toRootHex(expectedWithdrawalsRoot)}`);
78
75
  }
79
76
  // Verify the gas_limit
80
77
  if (Number(committedBid.gasLimit) !== payload.gasLimit) {
@@ -88,10 +85,6 @@ function validateExecutionPayloadEnvelope(state, envelope) {
88
85
  if (!byteArrayEquals(payload.parentHash, state.latestBlockHash)) {
89
86
  throw new Error(`Parent hash mismatch between envelope's payload and state envelope=${toRootHex(payload.parentHash)} state=${toRootHex(state.latestBlockHash)}`);
90
87
  }
91
- // Verify prev_randao matches committed bid
92
- if (!byteArrayEquals(committedBid.prevRandao, payload.prevRandao)) {
93
- throw new Error(`Prev randao mismatch between committed bid and payload committedBid=${toHex(committedBid.prevRandao)} payload=${toHex(payload.prevRandao)}`);
94
- }
95
88
  // Verify timestamp
96
89
  if (payload.timestamp !== computeTimeAtSlot(state.config, state.slot, state.genesisTime)) {
97
90
  throw new Error(`Timestamp mismatch between envelope's payload and state envelope=${payload.timestamp} state=${computeTimeAtSlot(state.config, state.slot, state.genesisTime)}`);
@@ -103,11 +96,19 @@ function validateExecutionPayloadEnvelope(state, envelope) {
103
96
  }
104
97
  // Skipped: Verify the execution payload is valid
105
98
  }
106
- function verifyExecutionPayloadEnvelopeSignature(state, pubkey, signedEnvelope) {
99
+ function verifyExecutionPayloadEnvelopeSignature(state, signedEnvelope) {
100
+ const builderIndex = signedEnvelope.message.builderIndex;
107
101
  const domain = state.config.getDomain(state.slot, DOMAIN_BEACON_BUILDER);
108
102
  const signingRoot = computeSigningRoot(ssz.gloas.ExecutionPayloadEnvelope, signedEnvelope.message, domain);
109
103
  try {
110
- const publicKey = PublicKey.fromBytes(pubkey);
104
+ let publicKey;
105
+ if (builderIndex === BUILDER_INDEX_SELF_BUILD) {
106
+ const validatorIndex = state.latestBlockHeader.proposerIndex;
107
+ publicKey = state.epochCtx.index2pubkey[validatorIndex];
108
+ }
109
+ else {
110
+ publicKey = PublicKey.fromBytes(state.builders.getReadonly(builderIndex).pubkey);
111
+ }
111
112
  const signature = Signature.fromBytes(signedEnvelope.signature, true);
112
113
  return verify(signingRoot, publicKey, signature);
113
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processExecutionPayloadEnvelope.js","sourceRoot":"","sources":["../../src/block/processExecutionPayloadEnvelope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processExecutionPayloadEnvelope.js","sourceRoot":"","sources":["../../src/block/processExecutionPayloadEnvelope.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export function processOperations(fork, state, body, opts = { verifySignatures:
39
39
  const stateElectra = state;
40
40
  const bodyElectra = body;
41
41
  for (const depositRequest of bodyElectra.executionRequests.deposits) {
42
- processDepositRequest(stateElectra, depositRequest);
42
+ processDepositRequest(fork, stateElectra, depositRequest);
43
43
  }
44
44
  for (const elWithdrawalRequest of bodyElectra.executionRequests.withdrawals) {
45
45
  processWithdrawalRequest(fork, stateElectra, elWithdrawalRequest);
@@ -1 +1 @@
1
- {"version":3,"file":"processOperations.js","sourceRoot":"","sources":["../../src/block/processOperations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processOperations.js","sourceRoot":"","sources":["../../src/block/processOperations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
+ import { BeaconConfig } from "@lodestar/config";
1
2
  import { ForkSeq } from "@lodestar/params";
2
- import { phase0 } from "@lodestar/types";
3
+ import { Slot, phase0 } from "@lodestar/types";
4
+ import { Validator } from "@lodestar/types/phase0";
5
+ import { Index2PubkeyCache } from "../cache/pubkeyCache.js";
3
6
  import { CachedBeaconStateAllForks } from "../types.js";
4
7
  /**
5
8
  * Process a ProposerSlashing operation. Initiates the exit of a validator, decreases the balance of the slashed
@@ -8,5 +11,5 @@ import { CachedBeaconStateAllForks } from "../types.js";
8
11
  * PERF: Work depends on number of ProposerSlashing per block. On regular networks the average is 0 / block.
9
12
  */
10
13
  export declare function processProposerSlashing(fork: ForkSeq, state: CachedBeaconStateAllForks, proposerSlashing: phase0.ProposerSlashing, verifySignatures?: boolean): void;
11
- export declare function assertValidProposerSlashing(state: CachedBeaconStateAllForks, proposerSlashing: phase0.ProposerSlashing, verifySignatures?: boolean): void;
14
+ export declare function assertValidProposerSlashing(config: BeaconConfig, index2pubkey: Index2PubkeyCache, stateSlot: Slot, proposerSlashing: phase0.ProposerSlashing, proposer: Validator, verifySignatures?: boolean): void;
12
15
  //# sourceMappingURL=processProposerSlashing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processProposerSlashing.d.ts","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,yBAAyB,EAAyB,MAAM,aAAa,CAAC;AAK9E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,gBAAgB,UAAO,GACtB,IAAI,CAyBN;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,gBAAgB,UAAO,GACtB,IAAI,CAyCN"}
1
+ {"version":3,"file":"processProposerSlashing.d.ts","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAC,IAAI,EAAE,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,yBAAyB,EAAyB,MAAM,aAAa,CAAC;AAK9E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,gBAAgB,UAAO,GACtB,IAAI,CAiCN;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,EAAE,IAAI,EACf,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EACzC,QAAQ,EAAE,SAAS,EACnB,gBAAgB,UAAO,GACtB,IAAI,CAqCN"}
@@ -11,7 +11,8 @@ import { slashValidator } from "./slashValidator.js";
11
11
  * PERF: Work depends on number of ProposerSlashing per block. On regular networks the average is 0 / block.
12
12
  */
13
13
  export function processProposerSlashing(fork, state, proposerSlashing, verifySignatures = true) {
14
- assertValidProposerSlashing(state, proposerSlashing, verifySignatures);
14
+ const proposer = state.validators.getReadonly(proposerSlashing.signedHeader1.message.proposerIndex);
15
+ assertValidProposerSlashing(state.config, state.epochCtx.index2pubkey, state.slot, proposerSlashing, proposer, verifySignatures);
15
16
  if (fork >= ForkSeq.gloas) {
16
17
  const slot = Number(proposerSlashing.signedHeader1.message.slot);
17
18
  const proposalEpoch = computeEpochAtSlot(slot);
@@ -28,7 +29,7 @@ export function processProposerSlashing(fork, state, proposerSlashing, verifySig
28
29
  }
29
30
  slashValidator(fork, state, proposerSlashing.signedHeader1.message.proposerIndex);
30
31
  }
31
- export function assertValidProposerSlashing(state, proposerSlashing, verifySignatures = true) {
32
+ export function assertValidProposerSlashing(config, index2pubkey, stateSlot, proposerSlashing, proposer, verifySignatures = true) {
32
33
  const header1 = proposerSlashing.signedHeader1.message;
33
34
  const header2 = proposerSlashing.signedHeader2.message;
34
35
  // verify header slots match
@@ -44,13 +45,14 @@ export function assertValidProposerSlashing(state, proposerSlashing, verifySigna
44
45
  throw new Error("ProposerSlashing headers are equal");
45
46
  }
46
47
  // verify the proposer is slashable
47
- const proposer = state.validators.getReadonly(header1.proposerIndex);
48
- if (!isSlashableValidator(proposer, state.epochCtx.epoch)) {
48
+ // ideally we would get the proposer from state.validators using proposerIndex but that requires access to state
49
+ // instead of that we pass in the proposer directly from the consumer side
50
+ if (!isSlashableValidator(proposer, computeEpochAtSlot(stateSlot))) {
49
51
  throw new Error("ProposerSlashing proposer is not slashable");
50
52
  }
51
53
  // verify signatures
52
54
  if (verifySignatures) {
53
- const signatureSets = getProposerSlashingSignatureSets(state.config, state.epochCtx.index2pubkey, state.slot, proposerSlashing);
55
+ const signatureSets = getProposerSlashingSignatureSets(config, index2pubkey, stateSlot, proposerSlashing);
54
56
  for (let i = 0; i < signatureSets.length; i++) {
55
57
  if (!verifySignatureSet(signatureSets[i])) {
56
58
  throw new Error(`ProposerSlashing header${i + 1} signature invalid`);
@@ -1 +1 @@
1
- {"version":3,"file":"processProposerSlashing.js","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processProposerSlashing.js","sourceRoot":"","sources":["../../src/block/processProposerSlashing.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export declare enum VoluntaryExitValidity {
11
11
  invalidSignature = "invalid_signature"
12
12
  }
13
13
  /**
14
- * Process a VoluntaryExit operation. Initiates the exit of a validator.
14
+ * Process a VoluntaryExit operation. Initiates the exit of a validator or builder.
15
15
  *
16
16
  * PERF: Work depends on number of VoluntaryExit per block. On regular networks the average is 0 / block.
17
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"processVoluntaryExit.d.ts","sourceRoot":"","sources":["../../src/block/processVoluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAC,yBAAyB,EAA2B,MAAM,aAAa,CAAC;AAIhF,oBAAY,qBAAqB;IAC/B,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,aAAa,mBAAmB;IAChC,UAAU,gBAAgB;IAC1B,eAAe,sBAAsB;IACrC,kBAAkB,wBAAwB;IAC1C,gBAAgB,sBAAsB;CACvC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAC/C,eAAe,UAAO,GACrB,IAAI,CAQN;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAC/C,eAAe,UAAO,GACrB,qBAAqB,CA0CvB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAC/C,eAAe,UAAO,GACrB,OAAO,CAET"}
1
+ {"version":3,"file":"processVoluntaryExit.d.ts","sourceRoot":"","sources":["../../src/block/processVoluntaryExit.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,yBAAyB,EAAmD,MAAM,aAAa,CAAC;AAWxG,oBAAY,qBAAqB;IAC/B,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,aAAa,mBAAmB;IAChC,UAAU,gBAAgB;IAC1B,eAAe,sBAAsB;IACrC,kBAAkB,wBAAwB;IAC1C,gBAAgB,sBAAsB;CACvC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAC/C,eAAe,UAAO,GACrB,IAAI,CAuDN;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAC/C,eAAe,UAAO,GACrB,qBAAqB,CA0CvB;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,yBAAyB,EAChC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAC/C,eAAe,UAAO,GACrB,OAAO,CAET"}
@@ -1,6 +1,9 @@
1
+ import { PublicKey, Signature, verify } from "@chainsafe/blst";
1
2
  import { FAR_FUTURE_EPOCH, ForkSeq } from "@lodestar/params";
3
+ import { ssz } from "@lodestar/types";
2
4
  import { verifyVoluntaryExitSignature } from "../signatureSets/index.js";
3
- import { getPendingBalanceToWithdraw, isActiveValidator } from "../util/index.js";
5
+ import { convertValidatorIndexToBuilderIndex, getPendingBalanceToWithdrawForBuilder, initiateBuilderExit, isActiveBuilder, isBuilderIndex, } from "../util/gloas.js";
6
+ import { computeSigningRoot, getCurrentEpoch, getPendingBalanceToWithdraw, isActiveValidator } from "../util/index.js";
4
7
  import { initiateValidatorExit } from "./index.js";
5
8
  export var VoluntaryExitValidity;
6
9
  (function (VoluntaryExitValidity) {
@@ -13,11 +16,50 @@ export var VoluntaryExitValidity;
13
16
  VoluntaryExitValidity["invalidSignature"] = "invalid_signature";
14
17
  })(VoluntaryExitValidity || (VoluntaryExitValidity = {}));
15
18
  /**
16
- * Process a VoluntaryExit operation. Initiates the exit of a validator.
19
+ * Process a VoluntaryExit operation. Initiates the exit of a validator or builder.
17
20
  *
18
21
  * PERF: Work depends on number of VoluntaryExit per block. On regular networks the average is 0 / block.
19
22
  */
20
23
  export function processVoluntaryExit(fork, state, signedVoluntaryExit, verifySignature = true) {
24
+ const voluntaryExit = signedVoluntaryExit.message;
25
+ const currentEpoch = getCurrentEpoch(state);
26
+ // Exits must specify an epoch when they become valid; they are not valid before then
27
+ if (currentEpoch < voluntaryExit.epoch) {
28
+ throw Error(`Voluntary exit epoch ${voluntaryExit.epoch} is after current epoch ${currentEpoch}`);
29
+ }
30
+ // Check if this is a builder exit
31
+ if (fork >= ForkSeq.gloas && isBuilderIndex(voluntaryExit.validatorIndex)) {
32
+ const stateGloas = state;
33
+ const builderIndex = convertValidatorIndexToBuilderIndex(voluntaryExit.validatorIndex);
34
+ const builder = stateGloas.builders.getReadonly(builderIndex);
35
+ // Verify the builder is active
36
+ if (!isActiveBuilder(stateGloas, builderIndex)) {
37
+ throw Error(`Builder ${builderIndex} is not active`);
38
+ }
39
+ // Only exit builder if it has no pending withdrawals in the queue
40
+ if (getPendingBalanceToWithdrawForBuilder(stateGloas, builderIndex) !== 0) {
41
+ throw Error(`Builder ${builderIndex} has pending withdrawals`);
42
+ }
43
+ // Verify signature
44
+ if (verifySignature) {
45
+ const domain = state.config.getDomainForVoluntaryExit(state.slot);
46
+ const signingRoot = computeSigningRoot(ssz.phase0.VoluntaryExit, voluntaryExit, domain);
47
+ try {
48
+ const publicKey = PublicKey.fromBytes(builder.pubkey);
49
+ const signature = Signature.fromBytes(signedVoluntaryExit.signature, true);
50
+ if (!verify(signingRoot, publicKey, signature)) {
51
+ throw Error("BLS verify failed");
52
+ }
53
+ }
54
+ catch (e) {
55
+ throw Error(`Builder ${builderIndex} invalid exit signature reason=${e.message}`);
56
+ }
57
+ }
58
+ // Initiate builder exit
59
+ initiateBuilderExit(stateGloas, builderIndex);
60
+ return;
61
+ }
62
+ // Handle validator exit
21
63
  const validity = getVoluntaryExitValidity(fork, state, signedVoluntaryExit, verifySignature);
22
64
  if (validity !== VoluntaryExitValidity.valid) {
23
65
  throw Error(`Invalid voluntary exit at forkSeq=${fork} reason=${validity}`);
@@ -1 +1 @@
1
- {"version":3,"file":"processVoluntaryExit.js","sourceRoot":"","sources":["../../src/block/processVoluntaryExit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processVoluntaryExit.js","sourceRoot":"","sources":["../../src/block/processVoluntaryExit.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare function getExpectedWithdrawals(fork: ForkSeq, state: CachedBeaco
6
6
  expectedWithdrawals: capella.Withdrawal[];
7
7
  processedBuilderWithdrawalsCount: number;
8
8
  processedPartialWithdrawalsCount: number;
9
+ processedBuildersSweepCount: number;
9
10
  processedValidatorSweepCount: number;
10
11
  };
11
12
  //# sourceMappingURL=processWithdrawals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processWithdrawals.d.ts","sourceRoot":"","sources":["../../src/block/processWithdrawals.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EAMR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAiB,OAAO,EAAM,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAC,wBAAwB,EAAE,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAUvG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,sBAAsB,EACnF,OAAO,CAAC,EAAE,OAAO,CAAC,6BAA6B,GAC9C,IAAI,CAuFN;AAkND,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,sBAAsB,GAClF;IACD,mBAAmB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IAC1C,gCAAgC,EAAE,MAAM,CAAC;IACzC,gCAAgC,EAAE,MAAM,CAAC;IACzC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CA6DA"}
1
+ {"version":3,"file":"processWithdrawals.d.ts","sourceRoot":"","sources":["../../src/block/processWithdrawals.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EAOR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA+B,OAAO,EAAM,MAAM,iBAAiB,CAAC;AAE3E,OAAO,EAAC,wBAAwB,EAAE,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAgBvG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,sBAAsB,EACnF,OAAO,CAAC,EAAE,OAAO,CAAC,6BAA6B,GAC9C,IAAI,CA4FN;AA6QD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,sBAAsB,GAClF;IACD,mBAAmB,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;IAC1C,gCAAgC,EAAE,MAAM,CAAC;IACzC,gCAAgC,EAAE,MAAM,CAAC;IACzC,2BAA2B,EAAE,MAAM,CAAC;IACpC,4BAA4B,EAAE,MAAM,CAAC;CACtC,CAuFA"}