@lodestar/state-transition 1.47.0-dev.f3dcc639a0 → 1.47.0-dev.f591cb177e
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.
|
@@ -141,9 +141,10 @@ function onboardBuildersFromPendingDeposits(state, metrics) {
|
|
|
141
141
|
let dropped = 0;
|
|
142
142
|
let sigFromCache = 0;
|
|
143
143
|
let sigVerified = 0;
|
|
144
|
-
// Track pubkeys of new builders added when applying deposits
|
|
145
|
-
//
|
|
146
|
-
|
|
144
|
+
// Track pubkeys of new builders added when applying deposits, mapped to their registry
|
|
145
|
+
// index. `state.builders` starts empty at the fork and this loop only ever appends, so the
|
|
146
|
+
// index is stable and a top-up can go straight to it instead of scanning.
|
|
147
|
+
const builderIndexByPubkey = new Map();
|
|
147
148
|
const pendingDeposits = ssz.gloas.PendingDeposits.defaultViewDU();
|
|
148
149
|
const pendingDepositsLookup = PendingDepositsLookup.buildEmpty();
|
|
149
150
|
for (const deposit of state.pendingDeposits.getAllReadonly()) {
|
|
@@ -157,15 +158,10 @@ function onboardBuildersFromPendingDeposits(state, metrics) {
|
|
|
157
158
|
kept++;
|
|
158
159
|
continue;
|
|
159
160
|
}
|
|
160
|
-
|
|
161
|
+
const builderIndex = builderIndexByPubkey.get(pubkeyHex);
|
|
162
|
+
if (builderIndex !== undefined) {
|
|
161
163
|
// Top up an already-onboarded builder
|
|
162
|
-
|
|
163
|
-
for (let j = 0; j < state.builders.length; j++) {
|
|
164
|
-
if (toPubkeyHex(state.builders.getReadonly(j).pubkey) === pubkeyHex) {
|
|
165
|
-
state.builders.get(j).balance += deposit.amount;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
164
|
+
state.builders.get(builderIndex).balance += deposit.amount;
|
|
169
165
|
topups++;
|
|
170
166
|
continue;
|
|
171
167
|
}
|
|
@@ -203,7 +199,8 @@ function onboardBuildersFromPendingDeposits(state, metrics) {
|
|
|
203
199
|
continue;
|
|
204
200
|
}
|
|
205
201
|
appendBuilderToRegistry(state, deposit.pubkey, PAYLOAD_BUILDER_VERSION, deposit.withdrawalCredentials.subarray(12), deposit.amount, deposit.slot);
|
|
206
|
-
|
|
202
|
+
// appendBuilderToRegistry() pushes, so the new builder is the last entry
|
|
203
|
+
builderIndexByPubkey.set(pubkeyHex, state.builders.length - 1);
|
|
207
204
|
onboarded++;
|
|
208
205
|
}
|
|
209
206
|
state.pendingDeposits = pendingDeposits;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,mCAAmC,CAAC;AAYlE,OAAO,EAAC,wBAAwB,EAAE,uBAAuB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;AAC9G,OAAO,
|
|
1
|
+
{"version":3,"file":"upgradeStateToGloas.js","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.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.47.0-dev.
|
|
14
|
+
"version": "1.47.0-dev.f591cb177e",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -71,14 +71,14 @@
|
|
|
71
71
|
"@chainsafe/pubkey-index-map": "^3.0.0",
|
|
72
72
|
"@chainsafe/ssz": "^1.6.2",
|
|
73
73
|
"@chainsafe/swap-or-not-shuffle": "^1.2.1",
|
|
74
|
-
"@lodestar/config": "^1.47.0-dev.
|
|
75
|
-
"@lodestar/params": "^1.47.0-dev.
|
|
76
|
-
"@lodestar/types": "^1.47.0-dev.
|
|
77
|
-
"@lodestar/utils": "^1.47.0-dev.
|
|
74
|
+
"@lodestar/config": "^1.47.0-dev.f591cb177e",
|
|
75
|
+
"@lodestar/params": "^1.47.0-dev.f591cb177e",
|
|
76
|
+
"@lodestar/types": "^1.47.0-dev.f591cb177e",
|
|
77
|
+
"@lodestar/utils": "^1.47.0-dev.f591cb177e",
|
|
78
78
|
"@vekexasia/bigint-buffer2": "^1.1.1"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@lodestar/api": "^1.47.0-dev.
|
|
81
|
+
"@lodestar/api": "^1.47.0-dev.f591cb177e"
|
|
82
82
|
},
|
|
83
83
|
"keywords": [
|
|
84
84
|
"ethereum",
|
|
@@ -86,5 +86,5 @@
|
|
|
86
86
|
"beacon",
|
|
87
87
|
"blockchain"
|
|
88
88
|
],
|
|
89
|
-
"gitHead": "
|
|
89
|
+
"gitHead": "07cdd0aad9cd2f4dcadda5e3a857656e9cd7855c"
|
|
90
90
|
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
ValueOf,
|
|
12
12
|
} from "@chainsafe/ssz";
|
|
13
13
|
import {BUILDER_INDEX_SELF_BUILD, PAYLOAD_BUILDER_VERSION, SLOTS_PER_HISTORICAL_ROOT} from "@lodestar/params";
|
|
14
|
-
import {ssz} from "@lodestar/types";
|
|
14
|
+
import {BuilderIndex, ssz} from "@lodestar/types";
|
|
15
15
|
import {toPubkeyHex} from "@lodestar/utils";
|
|
16
16
|
import {isValidDepositSignature} from "../block/processDeposit.js";
|
|
17
17
|
import {getCachedBeaconState} from "../cache/stateCache.js";
|
|
@@ -197,9 +197,10 @@ function onboardBuildersFromPendingDeposits(
|
|
|
197
197
|
let sigFromCache = 0;
|
|
198
198
|
let sigVerified = 0;
|
|
199
199
|
|
|
200
|
-
// Track pubkeys of new builders added when applying deposits
|
|
201
|
-
//
|
|
202
|
-
|
|
200
|
+
// Track pubkeys of new builders added when applying deposits, mapped to their registry
|
|
201
|
+
// index. `state.builders` starts empty at the fork and this loop only ever appends, so the
|
|
202
|
+
// index is stable and a top-up can go straight to it instead of scanning.
|
|
203
|
+
const builderIndexByPubkey = new Map<string, BuilderIndex>();
|
|
203
204
|
|
|
204
205
|
const pendingDeposits = ssz.gloas.PendingDeposits.defaultViewDU();
|
|
205
206
|
const pendingDepositsLookup = PendingDepositsLookup.buildEmpty();
|
|
@@ -218,15 +219,10 @@ function onboardBuildersFromPendingDeposits(
|
|
|
218
219
|
continue;
|
|
219
220
|
}
|
|
220
221
|
|
|
221
|
-
|
|
222
|
+
const builderIndex = builderIndexByPubkey.get(pubkeyHex);
|
|
223
|
+
if (builderIndex !== undefined) {
|
|
222
224
|
// Top up an already-onboarded builder
|
|
223
|
-
|
|
224
|
-
for (let j = 0; j < state.builders.length; j++) {
|
|
225
|
-
if (toPubkeyHex(state.builders.getReadonly(j).pubkey) === pubkeyHex) {
|
|
226
|
-
state.builders.get(j).balance += deposit.amount;
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
225
|
+
state.builders.get(builderIndex).balance += deposit.amount;
|
|
230
226
|
topups++;
|
|
231
227
|
continue;
|
|
232
228
|
}
|
|
@@ -282,7 +278,8 @@ function onboardBuildersFromPendingDeposits(
|
|
|
282
278
|
deposit.amount,
|
|
283
279
|
deposit.slot
|
|
284
280
|
);
|
|
285
|
-
|
|
281
|
+
// appendBuilderToRegistry() pushes, so the new builder is the last entry
|
|
282
|
+
builderIndexByPubkey.set(pubkeyHex, state.builders.length - 1);
|
|
286
283
|
onboarded++;
|
|
287
284
|
}
|
|
288
285
|
|