@lodestar/state-transition 1.40.0-dev.3be9500fa9 → 1.40.0-dev.ba0be9204c
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/index.d.ts +1 -0
- package/lib/block/index.d.ts.map +1 -1
- package/lib/block/index.js +1 -0
- package/lib/block/index.js.map +1 -1
- package/lib/block/processDepositRequest.d.ts +8 -2
- package/lib/block/processDepositRequest.d.ts.map +1 -1
- package/lib/block/processDepositRequest.js +81 -8
- package/lib/block/processDepositRequest.js.map +1 -1
- package/lib/block/processExecutionPayloadBid.d.ts.map +1 -1
- package/lib/block/processExecutionPayloadBid.js +14 -27
- package/lib/block/processExecutionPayloadBid.js.map +1 -1
- package/lib/block/processExecutionPayloadEnvelope.d.ts.map +1 -1
- package/lib/block/processExecutionPayloadEnvelope.js +25 -24
- package/lib/block/processExecutionPayloadEnvelope.js.map +1 -1
- package/lib/block/processOperations.js +1 -1
- package/lib/block/processOperations.js.map +1 -1
- package/lib/block/processVoluntaryExit.d.ts +1 -1
- package/lib/block/processVoluntaryExit.d.ts.map +1 -1
- package/lib/block/processVoluntaryExit.js +44 -2
- package/lib/block/processVoluntaryExit.js.map +1 -1
- package/lib/block/processWithdrawals.d.ts +1 -0
- package/lib/block/processWithdrawals.d.ts.map +1 -1
- package/lib/block/processWithdrawals.js +121 -66
- package/lib/block/processWithdrawals.js.map +1 -1
- package/lib/epoch/processBuilderPendingPayments.d.ts.map +1 -1
- package/lib/epoch/processBuilderPendingPayments.js +1 -4
- package/lib/epoch/processBuilderPendingPayments.js.map +1 -1
- package/lib/util/electra.d.ts.map +1 -1
- package/lib/util/electra.js +1 -2
- package/lib/util/electra.js.map +1 -1
- package/lib/util/gloas.d.ts +43 -3
- package/lib/util/gloas.d.ts.map +1 -1
- package/lib/util/gloas.js +93 -5
- package/lib/util/gloas.js.map +1 -1
- package/lib/util/validator.d.ts +5 -0
- package/lib/util/validator.d.ts.map +1 -1
- package/lib/util/validator.js +25 -2
- package/lib/util/validator.js.map +1 -1
- package/package.json +7 -7
- package/src/block/index.ts +1 -0
- package/src/block/processDepositRequest.ts +101 -8
- package/src/block/processExecutionPayloadBid.ts +18 -40
- package/src/block/processExecutionPayloadEnvelope.ts +33 -29
- package/src/block/processOperations.ts +1 -1
- package/src/block/processVoluntaryExit.ts +59 -4
- package/src/block/processWithdrawals.ts +168 -70
- package/src/epoch/processBuilderPendingPayments.ts +1 -5
- package/src/util/electra.ts +1 -4
- package/src/util/gloas.ts +109 -8
- package/src/util/validator.ts +31 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { byteArrayEquals } from "@chainsafe/ssz";
|
|
2
|
-
import { FAR_FUTURE_EPOCH, ForkSeq, MAX_EFFECTIVE_BALANCE, MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP, MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP, MAX_WITHDRAWALS_PER_PAYLOAD, MIN_ACTIVATION_BALANCE, } from "@lodestar/params";
|
|
2
|
+
import { FAR_FUTURE_EPOCH, ForkSeq, MAX_BUILDERS_PER_WITHDRAWALS_SWEEP, MAX_EFFECTIVE_BALANCE, MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP, MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP, MAX_WITHDRAWALS_PER_PAYLOAD, MIN_ACTIVATION_BALANCE, } from "@lodestar/params";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
import { toRootHex } from "@lodestar/utils";
|
|
5
|
-
import {
|
|
6
|
-
import { decreaseBalance, getMaxEffectiveBalance, hasEth1WithdrawalCredential, hasExecutionWithdrawalCredential, isCapellaPayloadHeader, } from "../util/index.js";
|
|
5
|
+
import { convertBuilderIndexToValidatorIndex, convertValidatorIndexToBuilderIndex, isBuilderIndex, isParentBlockFull, } from "../util/gloas.js";
|
|
6
|
+
import { decreaseBalance, getMaxEffectiveBalance, hasEth1WithdrawalCredential, hasExecutionWithdrawalCredential, isCapellaPayloadHeader, isPartiallyWithdrawableValidator, } from "../util/index.js";
|
|
7
7
|
export function processWithdrawals(fork, state, payload) {
|
|
8
8
|
// Return early if the parent block is empty
|
|
9
9
|
if (fork >= ForkSeq.gloas && !isParentBlockFull(state)) {
|
|
@@ -11,8 +11,9 @@ export function processWithdrawals(fork, state, payload) {
|
|
|
11
11
|
}
|
|
12
12
|
// processedBuilderWithdrawalsCount is withdrawals coming from builder payment since gloas (EIP-7732)
|
|
13
13
|
// processedPartialWithdrawalsCount is withdrawals coming from EL since electra (EIP-7002)
|
|
14
|
+
// processedBuildersSweepCount is withdrawals from builder sweep since gloas (EIP-7732)
|
|
14
15
|
// processedValidatorSweepCount is withdrawals coming from validator sweep
|
|
15
|
-
const { expectedWithdrawals, processedBuilderWithdrawalsCount, processedPartialWithdrawalsCount } = getExpectedWithdrawals(fork, state);
|
|
16
|
+
const { expectedWithdrawals, processedBuilderWithdrawalsCount, processedPartialWithdrawalsCount, processedBuildersSweepCount, } = getExpectedWithdrawals(fork, state);
|
|
16
17
|
const numWithdrawals = expectedWithdrawals.length;
|
|
17
18
|
// After gloas, withdrawals are verified later in processExecutionPayloadEnvelope
|
|
18
19
|
if (fork < ForkSeq.gloas) {
|
|
@@ -46,18 +47,15 @@ export function processWithdrawals(fork, state, payload) {
|
|
|
46
47
|
}
|
|
47
48
|
if (fork >= ForkSeq.gloas) {
|
|
48
49
|
const stateGloas = state;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
.
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
...unprocessedWithdrawals,
|
|
59
|
-
...remainingWithdrawals,
|
|
60
|
-
]);
|
|
50
|
+
// Store expected withdrawals for verification
|
|
51
|
+
stateGloas.payloadExpectedWithdrawals = ssz.capella.Withdrawals.toViewDU(expectedWithdrawals);
|
|
52
|
+
// Update builder pending withdrawals queue
|
|
53
|
+
stateGloas.builderPendingWithdrawals = stateGloas.builderPendingWithdrawals.sliceFrom(processedBuilderWithdrawalsCount);
|
|
54
|
+
// Update next builder index for sweep
|
|
55
|
+
if (stateGloas.builders.length > 0) {
|
|
56
|
+
const nextIndex = stateGloas.nextWithdrawalBuilderIndex + processedBuildersSweepCount;
|
|
57
|
+
stateGloas.nextWithdrawalBuilderIndex = nextIndex % stateGloas.builders.length;
|
|
58
|
+
}
|
|
61
59
|
}
|
|
62
60
|
// Update the nextWithdrawalIndex
|
|
63
61
|
// https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.0/specs/capella/beacon-chain.md#new-update_next_withdrawal_index
|
|
@@ -78,52 +76,89 @@ export function processWithdrawals(fork, state, payload) {
|
|
|
78
76
|
(state.nextWithdrawalValidatorIndex + MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP) % state.validators.length;
|
|
79
77
|
}
|
|
80
78
|
}
|
|
81
|
-
function getBuilderWithdrawals(state, withdrawalIndex,
|
|
79
|
+
function getBuilderWithdrawals(state, withdrawalIndex, priorWithdrawals, builderBalanceAfterWithdrawals) {
|
|
80
|
+
const withdrawalsLimit = MAX_WITHDRAWALS_PER_PAYLOAD - 1;
|
|
81
|
+
if (priorWithdrawals.length > withdrawalsLimit) {
|
|
82
|
+
throw Error(`Prior withdrawals exceed limit: ${priorWithdrawals.length} > ${withdrawalsLimit}`);
|
|
83
|
+
}
|
|
82
84
|
const builderWithdrawals = [];
|
|
83
|
-
const epoch = state.epochCtx.epoch;
|
|
84
85
|
const allBuilderPendingWithdrawals = state.builderPendingWithdrawals.length <= MAX_WITHDRAWALS_PER_PAYLOAD
|
|
85
86
|
? state.builderPendingWithdrawals.getAllReadonly()
|
|
86
87
|
: null;
|
|
87
88
|
let processedCount = 0;
|
|
88
89
|
for (let i = 0; i < state.builderPendingWithdrawals.length; i++) {
|
|
90
|
+
// Check combined length against limit
|
|
91
|
+
const allWithdrawals = priorWithdrawals.length + builderWithdrawals.length;
|
|
92
|
+
if (allWithdrawals >= withdrawalsLimit) {
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
89
95
|
const withdrawal = allBuilderPendingWithdrawals
|
|
90
96
|
? allBuilderPendingWithdrawals[i]
|
|
91
97
|
: state.builderPendingWithdrawals.getReadonly(i);
|
|
92
|
-
|
|
98
|
+
const builderIndex = withdrawal.builderIndex;
|
|
99
|
+
// Get builder balance (from builder.balance, not state.balances)
|
|
100
|
+
let balance = builderBalanceAfterWithdrawals.get(builderIndex);
|
|
101
|
+
if (balance === undefined) {
|
|
102
|
+
balance = state.builders.getReadonly(builderIndex).balance;
|
|
103
|
+
builderBalanceAfterWithdrawals.set(builderIndex, balance);
|
|
104
|
+
}
|
|
105
|
+
// Use the withdrawal amount directly as specified in the spec
|
|
106
|
+
builderWithdrawals.push({
|
|
107
|
+
index: withdrawalIndex,
|
|
108
|
+
validatorIndex: convertBuilderIndexToValidatorIndex(builderIndex),
|
|
109
|
+
address: withdrawal.feeRecipient,
|
|
110
|
+
amount: BigInt(withdrawal.amount),
|
|
111
|
+
});
|
|
112
|
+
withdrawalIndex++;
|
|
113
|
+
builderBalanceAfterWithdrawals.set(builderIndex, balance - withdrawal.amount);
|
|
114
|
+
processedCount++;
|
|
115
|
+
}
|
|
116
|
+
return { builderWithdrawals, withdrawalIndex, processedCount };
|
|
117
|
+
}
|
|
118
|
+
function getBuildersSweepWithdrawals(state, withdrawalIndex, numPriorWithdrawal, builderBalanceAfterWithdrawals) {
|
|
119
|
+
const withdrawalsLimit = MAX_WITHDRAWALS_PER_PAYLOAD - 1;
|
|
120
|
+
if (numPriorWithdrawal > withdrawalsLimit) {
|
|
121
|
+
throw Error(`Prior withdrawals exceed limit: ${numPriorWithdrawal} > ${withdrawalsLimit}`);
|
|
122
|
+
}
|
|
123
|
+
const buildersSweepWithdrawals = [];
|
|
124
|
+
const epoch = state.epochCtx.epoch;
|
|
125
|
+
const builders = state.builders;
|
|
126
|
+
// Return early if no builders
|
|
127
|
+
if (builders.length === 0) {
|
|
128
|
+
return { buildersSweepWithdrawals, withdrawalIndex, processedCount: 0 };
|
|
129
|
+
}
|
|
130
|
+
const buildersLimit = Math.min(builders.length, MAX_BUILDERS_PER_WITHDRAWALS_SWEEP);
|
|
131
|
+
let processedCount = 0;
|
|
132
|
+
for (let n = 0; n < buildersLimit; n++) {
|
|
133
|
+
if (buildersSweepWithdrawals.length + numPriorWithdrawal >= withdrawalsLimit) {
|
|
93
134
|
break;
|
|
94
135
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
address: withdrawal.feeRecipient,
|
|
116
|
-
amount: BigInt(withdrawableBalance),
|
|
117
|
-
});
|
|
118
|
-
withdrawalIndex++;
|
|
119
|
-
balanceAfterWithdrawals.set(builderIndex, balance - withdrawableBalance);
|
|
120
|
-
}
|
|
136
|
+
// Get next builder in turn
|
|
137
|
+
const builderIndex = (state.nextWithdrawalBuilderIndex + n) % builders.length;
|
|
138
|
+
const builder = builders.getReadonly(builderIndex);
|
|
139
|
+
// Get builder balance
|
|
140
|
+
let balance = builderBalanceAfterWithdrawals.get(builderIndex);
|
|
141
|
+
if (balance === undefined) {
|
|
142
|
+
balance = builder.balance;
|
|
143
|
+
builderBalanceAfterWithdrawals.set(builderIndex, balance);
|
|
144
|
+
}
|
|
145
|
+
// Check if builder is withdrawable and has balance
|
|
146
|
+
if (builder.withdrawableEpoch <= epoch && balance > 0) {
|
|
147
|
+
// Withdraw full balance to builder's execution address
|
|
148
|
+
buildersSweepWithdrawals.push({
|
|
149
|
+
index: withdrawalIndex,
|
|
150
|
+
validatorIndex: convertBuilderIndexToValidatorIndex(builderIndex),
|
|
151
|
+
address: builder.executionAddress,
|
|
152
|
+
amount: BigInt(balance),
|
|
153
|
+
});
|
|
154
|
+
withdrawalIndex++;
|
|
155
|
+
builderBalanceAfterWithdrawals.set(builderIndex, 0);
|
|
121
156
|
}
|
|
122
157
|
processedCount++;
|
|
123
158
|
}
|
|
124
|
-
return {
|
|
159
|
+
return { buildersSweepWithdrawals, withdrawalIndex, processedCount };
|
|
125
160
|
}
|
|
126
|
-
function getPendingPartialWithdrawals(state, withdrawalIndex, numPriorWithdrawal,
|
|
161
|
+
function getPendingPartialWithdrawals(state, withdrawalIndex, numPriorWithdrawal, validatorBalanceAfterWithdrawals) {
|
|
127
162
|
const epoch = state.epochCtx.epoch;
|
|
128
163
|
const pendingPartialWithdrawals = [];
|
|
129
164
|
const validators = state.validators;
|
|
@@ -142,15 +177,15 @@ function getPendingPartialWithdrawals(state, withdrawalIndex, numPriorWithdrawal
|
|
|
142
177
|
? allPendingPartialWithdrawals[i]
|
|
143
178
|
: state.pendingPartialWithdrawals.getReadonly(i);
|
|
144
179
|
if (withdrawal.withdrawableEpoch > epoch ||
|
|
145
|
-
pendingPartialWithdrawals.length + numPriorWithdrawal
|
|
180
|
+
pendingPartialWithdrawals.length + numPriorWithdrawal >= partialWithdrawalBound) {
|
|
146
181
|
break;
|
|
147
182
|
}
|
|
148
183
|
const validatorIndex = withdrawal.validatorIndex;
|
|
149
184
|
const validator = validators.getReadonly(validatorIndex);
|
|
150
|
-
let balance =
|
|
185
|
+
let balance = validatorBalanceAfterWithdrawals.get(validatorIndex);
|
|
151
186
|
if (balance === undefined) {
|
|
152
187
|
balance = state.balances.get(validatorIndex);
|
|
153
|
-
|
|
188
|
+
validatorBalanceAfterWithdrawals.set(validatorIndex, balance);
|
|
154
189
|
}
|
|
155
190
|
if (validator.exitEpoch === FAR_FUTURE_EPOCH &&
|
|
156
191
|
validator.effectiveBalance >= MIN_ACTIVATION_BALANCE &&
|
|
@@ -164,13 +199,13 @@ function getPendingPartialWithdrawals(state, withdrawalIndex, numPriorWithdrawal
|
|
|
164
199
|
amount: withdrawableBalance,
|
|
165
200
|
});
|
|
166
201
|
withdrawalIndex++;
|
|
167
|
-
|
|
202
|
+
validatorBalanceAfterWithdrawals.set(validatorIndex, balance - Number(withdrawableBalance));
|
|
168
203
|
}
|
|
169
204
|
processedCount++;
|
|
170
205
|
}
|
|
171
206
|
return { pendingPartialWithdrawals, withdrawalIndex, processedCount };
|
|
172
207
|
}
|
|
173
|
-
function getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, numPriorWithdrawal,
|
|
208
|
+
function getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, numPriorWithdrawal, validatorBalanceAfterWithdrawals) {
|
|
174
209
|
const sweepWithdrawals = [];
|
|
175
210
|
const epoch = state.epochCtx.epoch;
|
|
176
211
|
const { validators, balances, nextWithdrawalValidatorIndex } = state;
|
|
@@ -186,12 +221,12 @@ function getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, numPriorWit
|
|
|
186
221
|
// Get next validator in turn
|
|
187
222
|
const validatorIndex = (nextWithdrawalValidatorIndex + n) % validators.length;
|
|
188
223
|
const validator = validators.getReadonly(validatorIndex);
|
|
189
|
-
let balance =
|
|
224
|
+
let balance = validatorBalanceAfterWithdrawals.get(validatorIndex);
|
|
190
225
|
if (balance === undefined) {
|
|
191
226
|
balance = balances.get(validatorIndex);
|
|
192
|
-
|
|
227
|
+
validatorBalanceAfterWithdrawals.set(validatorIndex, balance);
|
|
193
228
|
}
|
|
194
|
-
const { withdrawableEpoch, withdrawalCredentials
|
|
229
|
+
const { withdrawableEpoch, withdrawalCredentials } = validator;
|
|
195
230
|
const hasWithdrawableCredentials = isPostElectra
|
|
196
231
|
? hasExecutionWithdrawalCredential(withdrawalCredentials)
|
|
197
232
|
: hasEth1WithdrawalCredential(withdrawalCredentials);
|
|
@@ -210,12 +245,12 @@ function getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, numPriorWit
|
|
|
210
245
|
amount: BigInt(balance),
|
|
211
246
|
});
|
|
212
247
|
withdrawalIndex++;
|
|
213
|
-
|
|
248
|
+
validatorBalanceAfterWithdrawals.set(validatorIndex, 0);
|
|
214
249
|
}
|
|
215
|
-
else if (
|
|
216
|
-
balance > effectiveBalance) {
|
|
250
|
+
else if (isPartiallyWithdrawableValidator(fork, validator, balance)) {
|
|
217
251
|
// capella partial withdrawal
|
|
218
|
-
const
|
|
252
|
+
const maxEffectiveBalance = isPostElectra ? getMaxEffectiveBalance(withdrawalCredentials) : MAX_EFFECTIVE_BALANCE;
|
|
253
|
+
const partialAmount = balance - maxEffectiveBalance;
|
|
219
254
|
sweepWithdrawals.push({
|
|
220
255
|
index: withdrawalIndex,
|
|
221
256
|
validatorIndex,
|
|
@@ -223,7 +258,7 @@ function getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, numPriorWit
|
|
|
223
258
|
amount: BigInt(partialAmount),
|
|
224
259
|
});
|
|
225
260
|
withdrawalIndex++;
|
|
226
|
-
|
|
261
|
+
validatorBalanceAfterWithdrawals.set(validatorIndex, balance - partialAmount);
|
|
227
262
|
}
|
|
228
263
|
processedCount++;
|
|
229
264
|
}
|
|
@@ -231,7 +266,17 @@ function getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, numPriorWit
|
|
|
231
266
|
}
|
|
232
267
|
function applyWithdrawals(state, withdrawals) {
|
|
233
268
|
for (const withdrawal of withdrawals) {
|
|
234
|
-
|
|
269
|
+
if (isBuilderIndex(withdrawal.validatorIndex)) {
|
|
270
|
+
// Handle builder withdrawal
|
|
271
|
+
const builderIndex = convertValidatorIndexToBuilderIndex(withdrawal.validatorIndex);
|
|
272
|
+
const builder = state.builders.get(builderIndex);
|
|
273
|
+
const withdrawalAmount = Number(withdrawal.amount);
|
|
274
|
+
builder.balance -= Math.min(withdrawalAmount, builder.balance);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Handle validator withdrawal
|
|
278
|
+
decreaseBalance(state, withdrawal.validatorIndex, Number(withdrawal.amount));
|
|
279
|
+
}
|
|
235
280
|
}
|
|
236
281
|
}
|
|
237
282
|
export function getExpectedWithdrawals(fork, state) {
|
|
@@ -240,31 +285,41 @@ export function getExpectedWithdrawals(fork, state) {
|
|
|
240
285
|
}
|
|
241
286
|
let withdrawalIndex = state.nextWithdrawalIndex;
|
|
242
287
|
const expectedWithdrawals = [];
|
|
243
|
-
//
|
|
288
|
+
// Separate maps to track balances after applying withdrawals
|
|
244
289
|
// https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.0/specs/capella/beacon-chain.md#new-get_balance_after_withdrawals
|
|
245
|
-
const
|
|
290
|
+
const builderBalanceAfterWithdrawals = new Map();
|
|
291
|
+
const validatorBalanceAfterWithdrawals = new Map();
|
|
246
292
|
// partialWithdrawalsCount is withdrawals coming from EL since electra (EIP-7002)
|
|
247
293
|
let processedPartialWithdrawalsCount = 0;
|
|
248
294
|
// builderWithdrawalsCount is withdrawals coming from builder payments since Gloas (EIP-7732)
|
|
249
295
|
let processedBuilderWithdrawalsCount = 0;
|
|
296
|
+
// buildersSweepCount is withdrawals from builder sweep since Gloas (EIP-7732)
|
|
297
|
+
let processedBuildersSweepCount = 0;
|
|
250
298
|
if (fork >= ForkSeq.gloas) {
|
|
251
|
-
const { builderWithdrawals, withdrawalIndex: newWithdrawalIndex, processedCount, } = getBuilderWithdrawals(state, withdrawalIndex,
|
|
299
|
+
const { builderWithdrawals, withdrawalIndex: newWithdrawalIndex, processedCount, } = getBuilderWithdrawals(state, withdrawalIndex, expectedWithdrawals, builderBalanceAfterWithdrawals);
|
|
252
300
|
expectedWithdrawals.push(...builderWithdrawals);
|
|
253
301
|
withdrawalIndex = newWithdrawalIndex;
|
|
254
302
|
processedBuilderWithdrawalsCount = processedCount;
|
|
255
303
|
}
|
|
256
304
|
if (fork >= ForkSeq.electra) {
|
|
257
|
-
const { pendingPartialWithdrawals, withdrawalIndex: newWithdrawalIndex, processedCount, } = getPendingPartialWithdrawals(state, withdrawalIndex, expectedWithdrawals.length,
|
|
305
|
+
const { pendingPartialWithdrawals, withdrawalIndex: newWithdrawalIndex, processedCount, } = getPendingPartialWithdrawals(state, withdrawalIndex, expectedWithdrawals.length, validatorBalanceAfterWithdrawals);
|
|
258
306
|
expectedWithdrawals.push(...pendingPartialWithdrawals);
|
|
259
307
|
withdrawalIndex = newWithdrawalIndex;
|
|
260
308
|
processedPartialWithdrawalsCount = processedCount;
|
|
261
309
|
}
|
|
262
|
-
|
|
310
|
+
if (fork >= ForkSeq.gloas) {
|
|
311
|
+
const { buildersSweepWithdrawals, withdrawalIndex: newWithdrawalIndex, processedCount, } = getBuildersSweepWithdrawals(state, withdrawalIndex, expectedWithdrawals.length, builderBalanceAfterWithdrawals);
|
|
312
|
+
expectedWithdrawals.push(...buildersSweepWithdrawals);
|
|
313
|
+
withdrawalIndex = newWithdrawalIndex;
|
|
314
|
+
processedBuildersSweepCount = processedCount;
|
|
315
|
+
}
|
|
316
|
+
const { sweepWithdrawals, processedCount: processedValidatorSweepCount } = getValidatorsSweepWithdrawals(fork, state, withdrawalIndex, expectedWithdrawals.length, validatorBalanceAfterWithdrawals);
|
|
263
317
|
expectedWithdrawals.push(...sweepWithdrawals);
|
|
264
318
|
return {
|
|
265
319
|
expectedWithdrawals,
|
|
266
320
|
processedBuilderWithdrawalsCount,
|
|
267
321
|
processedPartialWithdrawalsCount,
|
|
322
|
+
processedBuildersSweepCount,
|
|
268
323
|
processedValidatorSweepCount,
|
|
269
324
|
};
|
|
270
325
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processWithdrawals.js","sourceRoot":"","sources":["../../src/block/processWithdrawals.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processWithdrawals.js","sourceRoot":"","sources":["../../src/block/processWithdrawals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processBuilderPendingPayments.d.ts","sourceRoot":"","sources":["../../src/epoch/processBuilderPendingPayments.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"processBuilderPendingPayments.d.ts","sourceRoot":"","sources":["../../src/epoch/processBuilderPendingPayments.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAkBjF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
|
-
import { computeExitEpochAndUpdateChurn } from "../util/epoch.js";
|
|
4
3
|
import { getBuilderPaymentQuorumThreshold } from "../util/gloas.js";
|
|
5
4
|
/**
|
|
6
5
|
* Processes the builder pending payments from the previous epoch.
|
|
@@ -9,9 +8,7 @@ export function processBuilderPendingPayments(state) {
|
|
|
9
8
|
const quorum = getBuilderPaymentQuorumThreshold(state);
|
|
10
9
|
for (let i = 0; i < SLOTS_PER_EPOCH; i++) {
|
|
11
10
|
const payment = state.builderPendingPayments.get(i);
|
|
12
|
-
if (payment.weight
|
|
13
|
-
const exitQueueEpoch = computeExitEpochAndUpdateChurn(state, BigInt(payment.withdrawal.amount));
|
|
14
|
-
payment.withdrawal.withdrawableEpoch = exitQueueEpoch + state.config.MIN_VALIDATOR_WITHDRAWABILITY_DELAY;
|
|
11
|
+
if (payment.weight >= quorum) {
|
|
15
12
|
state.builderPendingWithdrawals.push(payment.withdrawal);
|
|
16
13
|
}
|
|
17
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processBuilderPendingPayments.js","sourceRoot":"","sources":["../../src/epoch/processBuilderPendingPayments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"processBuilderPendingPayments.js","sourceRoot":"","sources":["../../src/epoch/processBuilderPendingPayments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAC,gCAAgC,EAAC,MAAM,kBAAkB,CAAC;AAElE;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAA6B;IACzE,MAAM,MAAM,GAAG,gCAAgC,CAAC,KAAK,CAAC,CAAC;IAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;YAC7B,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7D,IAAI,CAAC,GAAG,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACrG,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electra.d.ts","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"electra.d.ts","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAM,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAC,wBAAwB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAG7E,wBAAgB,kCAAkC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAE7F;AAED,wBAAgB,gCAAgC,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAI3F;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,KAAK,EAAE,cAAc,GACpB,IAAI,CAcN;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,KAAK,EAAE,cAAc,GACpB,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAEnH;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,wBAAwB,GAAG,sBAAsB,EACxD,KAAK,EAAE,cAAc,GAAG,IAAI,GAC3B,KAAK,IAAI,cAAc,CAEzB"}
|
package/lib/util/electra.js
CHANGED
|
@@ -2,9 +2,8 @@ import { COMPOUNDING_WITHDRAWAL_PREFIX, GENESIS_SLOT, MIN_ACTIVATION_BALANCE } f
|
|
|
2
2
|
import { ssz } from "@lodestar/types";
|
|
3
3
|
import { G2_POINT_AT_INFINITY } from "../constants/constants.js";
|
|
4
4
|
import { hasEth1WithdrawalCredential } from "./capella.js";
|
|
5
|
-
import { hasBuilderWithdrawalCredential } from "./gloas.js";
|
|
6
5
|
export function hasCompoundingWithdrawalCredential(withdrawalCredentials) {
|
|
7
|
-
return
|
|
6
|
+
return withdrawalCredentials[0] === COMPOUNDING_WITHDRAWAL_PREFIX;
|
|
8
7
|
}
|
|
9
8
|
export function hasExecutionWithdrawalCredential(withdrawalCredentials) {
|
|
10
9
|
return (hasCompoundingWithdrawalCredential(withdrawalCredentials) || hasEth1WithdrawalCredential(withdrawalCredentials));
|
package/lib/util/electra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"electra.js","sourceRoot":"","sources":["../../src/util/electra.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,6BAA6B,EAAE,YAAY,EAAE,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAiB,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAC,2BAA2B,EAAC,MAAM,cAAc,CAAC;AAEzD,MAAM,UAAU,kCAAkC,CAAC,qBAAiC;IAClF,OAAO,qBAAqB,CAAC,CAAC,CAAC,KAAK,6BAA6B,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,qBAAiC;IAChF,OAAO,CACL,kCAAkC,CAAC,qBAAqB,CAAC,IAAI,2BAA2B,CAAC,qBAAqB,CAAC,CAChH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAAwD,EACxD,KAAqB;IAErB,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,mFAAmF;IACnF,mFAAmF;IACnF,uEAAuE;IACvE,MAAM,wBAAwB,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAC9D,SAAS,CAAC,qBAAqB,EAC/B,CAAC,EACD,SAAS,CAAC,qBAAqB,CAAC,MAAM,CACvC,CAAC;IACF,wBAAwB,CAAC,CAAC,CAAC,GAAG,6BAA6B,CAAC;IAC5D,SAAS,CAAC,qBAAqB,GAAG,wBAAwB,CAAC;IAC3D,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAwD,EACxD,KAAqB;IAErB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,sBAAsB,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,GAAG,sBAAsB,CAAC;QACvD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAElD,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;YACzD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,qBAAqB,EAAE,SAAS,CAAC,qBAAqB;YACtD,MAAM,EAAE,aAAa;YACrB,gEAAgE;YAChE,SAAS,EAAE,oBAAoB;YAC/B,iEAAiE;YACjE,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QACH,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAwD,EAAE,MAAkB;IACxG,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAwD,EACxD,KAA4B;IAE5B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3D,CAAC"}
|
package/lib/util/gloas.d.ts
CHANGED
|
@@ -1,10 +1,50 @@
|
|
|
1
|
-
import { gloas } from "@lodestar/types";
|
|
2
1
|
import { AttestationData } from "@lodestar/types/phase0";
|
|
3
2
|
import { CachedBeaconStateGloas } from "../types.ts";
|
|
4
3
|
import { RootCache } from "./rootCache.ts";
|
|
5
|
-
export declare function
|
|
4
|
+
export declare function isBuilderWithdrawalCredential(withdrawalCredentials: Uint8Array): boolean;
|
|
6
5
|
export declare function getBuilderPaymentQuorumThreshold(state: CachedBeaconStateGloas): number;
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Check if a validator index represents a builder (has the builder flag set).
|
|
8
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-is_builder_index
|
|
9
|
+
*/
|
|
10
|
+
export declare function isBuilderIndex(validatorIndex: number): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Convert a builder index to a flagged validator index for use in Withdrawal containers.
|
|
13
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_builder_index_to_validator_index
|
|
14
|
+
*/
|
|
15
|
+
export declare function convertBuilderIndexToValidatorIndex(builderIndex: number): number;
|
|
16
|
+
/**
|
|
17
|
+
* Convert a flagged validator index back to a builder index.
|
|
18
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_validator_index_to_builder_index
|
|
19
|
+
*/
|
|
20
|
+
export declare function convertValidatorIndexToBuilderIndex(validatorIndex: number): number;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a builder is active (deposited and not yet withdrawable).
|
|
23
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#isactivebuilder
|
|
24
|
+
*/
|
|
25
|
+
export declare function isActiveBuilder(state: CachedBeaconStateGloas, builderIndex: number): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Get the total pending balance to withdraw for a builder (from withdrawals + payments).
|
|
28
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-get_pending_balance_to_withdraw_for_builder
|
|
29
|
+
*/
|
|
30
|
+
export declare function getPendingBalanceToWithdrawForBuilder(state: CachedBeaconStateGloas, builderIndex: number): number;
|
|
31
|
+
/**
|
|
32
|
+
* Check if a builder has sufficient balance to cover a bid amount.
|
|
33
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-can_builder_cover_bid
|
|
34
|
+
*/
|
|
35
|
+
export declare function canBuilderCoverBid(state: CachedBeaconStateGloas, builderIndex: number, bidAmount: number): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Initiate a builder exit by setting their withdrawable epoch.
|
|
38
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-initiate_builder_exit
|
|
39
|
+
*/
|
|
40
|
+
export declare function initiateBuilderExit(state: CachedBeaconStateGloas, builderIndex: number): void;
|
|
41
|
+
/**
|
|
42
|
+
* Find the index of a builder by their public key.
|
|
43
|
+
* Returns null if not found.
|
|
44
|
+
*
|
|
45
|
+
* May consider builder pubkey cache if performance becomes an issue.
|
|
46
|
+
*/
|
|
47
|
+
export declare function findBuilderIndexByPubkey(state: CachedBeaconStateGloas, pubkey: Uint8Array): number | null;
|
|
8
48
|
export declare function isAttestationSameSlot(state: CachedBeaconStateGloas, data: AttestationData): boolean;
|
|
9
49
|
export declare function isAttestationSameSlotRootCache(rootCache: RootCache, data: AttestationData): boolean;
|
|
10
50
|
export declare function isParentBlockFull(state: CachedBeaconStateGloas): boolean;
|
package/lib/util/gloas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gloas.d.ts","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAWA,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAEzC,wBAAgB,6BAA6B,CAAC,qBAAqB,EAAE,UAAU,GAAG,OAAO,CAExF;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAMtF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAK5F;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAoBjH;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAUlH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAW7F;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAOzG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAOnG;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAExE"}
|
package/lib/util/gloas.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { byteArrayEquals } from "@chainsafe/ssz";
|
|
2
|
-
import { BUILDER_PAYMENT_THRESHOLD_DENOMINATOR, BUILDER_PAYMENT_THRESHOLD_NUMERATOR, BUILDER_WITHDRAWAL_PREFIX, EFFECTIVE_BALANCE_INCREMENT, SLOTS_PER_EPOCH, } from "@lodestar/params";
|
|
2
|
+
import { BUILDER_INDEX_FLAG, BUILDER_PAYMENT_THRESHOLD_DENOMINATOR, BUILDER_PAYMENT_THRESHOLD_NUMERATOR, BUILDER_WITHDRAWAL_PREFIX, EFFECTIVE_BALANCE_INCREMENT, FAR_FUTURE_EPOCH, MIN_DEPOSIT_AMOUNT, SLOTS_PER_EPOCH, } from "@lodestar/params";
|
|
3
3
|
import { getBlockRootAtSlot } from "./blockRoot.js";
|
|
4
4
|
import { computeEpochAtSlot } from "./epoch.js";
|
|
5
|
-
export function
|
|
5
|
+
export function isBuilderWithdrawalCredential(withdrawalCredentials) {
|
|
6
6
|
return withdrawalCredentials[0] === BUILDER_WITHDRAWAL_PREFIX;
|
|
7
7
|
}
|
|
8
8
|
export function getBuilderPaymentQuorumThreshold(state) {
|
|
@@ -10,10 +10,98 @@ export function getBuilderPaymentQuorumThreshold(state) {
|
|
|
10
10
|
BUILDER_PAYMENT_THRESHOLD_NUMERATOR;
|
|
11
11
|
return Math.floor(quorum / BUILDER_PAYMENT_THRESHOLD_DENOMINATOR);
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Check if a validator index represents a builder (has the builder flag set).
|
|
15
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-is_builder_index
|
|
16
|
+
*/
|
|
17
|
+
export function isBuilderIndex(validatorIndex) {
|
|
18
|
+
return (validatorIndex & BUILDER_INDEX_FLAG) !== 0;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Convert a builder index to a flagged validator index for use in Withdrawal containers.
|
|
22
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_builder_index_to_validator_index
|
|
23
|
+
*/
|
|
24
|
+
export function convertBuilderIndexToValidatorIndex(builderIndex) {
|
|
25
|
+
return builderIndex | BUILDER_INDEX_FLAG;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert a flagged validator index back to a builder index.
|
|
29
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-convert_validator_index_to_builder_index
|
|
30
|
+
*/
|
|
31
|
+
export function convertValidatorIndexToBuilderIndex(validatorIndex) {
|
|
32
|
+
return validatorIndex & ~BUILDER_INDEX_FLAG;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if a builder is active (deposited and not yet withdrawable).
|
|
36
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#isactivebuilder
|
|
37
|
+
*/
|
|
38
|
+
export function isActiveBuilder(state, builderIndex) {
|
|
39
|
+
const builder = state.builders.getReadonly(builderIndex);
|
|
40
|
+
const finalizedEpoch = state.finalizedCheckpoint.epoch;
|
|
41
|
+
return builder.depositEpoch < finalizedEpoch && builder.withdrawableEpoch === FAR_FUTURE_EPOCH;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the total pending balance to withdraw for a builder (from withdrawals + payments).
|
|
45
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-get_pending_balance_to_withdraw_for_builder
|
|
46
|
+
*/
|
|
47
|
+
export function getPendingBalanceToWithdrawForBuilder(state, builderIndex) {
|
|
48
|
+
let pendingBalance = 0;
|
|
49
|
+
// Sum pending withdrawals
|
|
50
|
+
for (let i = 0; i < state.builderPendingWithdrawals.length; i++) {
|
|
51
|
+
const withdrawal = state.builderPendingWithdrawals.getReadonly(i);
|
|
52
|
+
if (withdrawal.builderIndex === builderIndex) {
|
|
53
|
+
pendingBalance += withdrawal.amount;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Sum pending payments
|
|
57
|
+
for (let i = 0; i < state.builderPendingPayments.length; i++) {
|
|
58
|
+
const payment = state.builderPendingPayments.getReadonly(i);
|
|
59
|
+
if (payment.withdrawal.builderIndex === builderIndex) {
|
|
60
|
+
pendingBalance += payment.withdrawal.amount;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return pendingBalance;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if a builder has sufficient balance to cover a bid amount.
|
|
67
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-can_builder_cover_bid
|
|
68
|
+
*/
|
|
69
|
+
export function canBuilderCoverBid(state, builderIndex, bidAmount) {
|
|
70
|
+
const builder = state.builders.getReadonly(builderIndex);
|
|
71
|
+
const pendingBalance = getPendingBalanceToWithdrawForBuilder(state, builderIndex);
|
|
72
|
+
const minBalance = MIN_DEPOSIT_AMOUNT + pendingBalance;
|
|
73
|
+
if (builder.balance < minBalance) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return builder.balance - minBalance >= bidAmount;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Initiate a builder exit by setting their withdrawable epoch.
|
|
80
|
+
* Spec: https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.1/specs/gloas/beacon-chain.md#new-initiate_builder_exit
|
|
81
|
+
*/
|
|
82
|
+
export function initiateBuilderExit(state, builderIndex) {
|
|
83
|
+
const builder = state.builders.get(builderIndex);
|
|
84
|
+
// Return if builder already initiated exit
|
|
85
|
+
if (builder.withdrawableEpoch !== FAR_FUTURE_EPOCH) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Set builder exit epoch
|
|
15
89
|
const currentEpoch = computeEpochAtSlot(state.slot);
|
|
16
|
-
|
|
90
|
+
builder.withdrawableEpoch = currentEpoch + state.config.MIN_BUILDER_WITHDRAWABILITY_DELAY;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Find the index of a builder by their public key.
|
|
94
|
+
* Returns null if not found.
|
|
95
|
+
*
|
|
96
|
+
* May consider builder pubkey cache if performance becomes an issue.
|
|
97
|
+
*/
|
|
98
|
+
export function findBuilderIndexByPubkey(state, pubkey) {
|
|
99
|
+
for (let i = 0; i < state.builders.length; i++) {
|
|
100
|
+
if (byteArrayEquals(state.builders.getReadonly(i).pubkey, pubkey)) {
|
|
101
|
+
return i;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
17
105
|
}
|
|
18
106
|
export function isAttestationSameSlot(state, data) {
|
|
19
107
|
if (data.slot === 0)
|
package/lib/util/gloas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EACL,qCAAqC,EACrC,mCAAmC,EACnC,yBAAyB,EACzB,2BAA2B,EAC3B,eAAe,GAChB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"gloas.js","sourceRoot":"","sources":["../../src/util/gloas.ts"],"names":[],"mappings":"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"}
|