@lodestar/state-transition 1.47.0-dev.f19ee70a9e → 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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAM1E;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,OAAO,CAAC,EAAE,4BAA4B,GAAG,IAAI,GAC5C,sBAAsB,
|
|
1
|
+
{"version":3,"file":"upgradeStateToGloas.d.ts","sourceRoot":"","sources":["../../src/slot/upgradeStateToGloas.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,eAAe,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAM1E;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,qBAAqB,EAChC,OAAO,CAAC,EAAE,4BAA4B,GAAG,IAAI,GAC5C,sBAAsB,CAoGxB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getNodesAtDepth } from "@chainsafe/persistent-merkle-tree";
|
|
2
|
-
import { PAYLOAD_BUILDER_VERSION, SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
|
|
2
|
+
import { BUILDER_INDEX_SELF_BUILD, PAYLOAD_BUILDER_VERSION, SLOTS_PER_HISTORICAL_ROOT } from "@lodestar/params";
|
|
3
3
|
import { ssz } from "@lodestar/types";
|
|
4
4
|
import { toPubkeyHex } from "@lodestar/utils";
|
|
5
5
|
import { isValidDepositSignature } from "../block/processDeposit.js";
|
|
@@ -44,9 +44,21 @@ export function upgradeStateToGloas(stateFulu, metrics) {
|
|
|
44
44
|
stateGloasView.inactivityScores = migrateBasicListToGloas(stateGloasCloned.inactivityScores, ssz.gloas.InactivityScores);
|
|
45
45
|
stateGloasView.currentSyncCommittee = stateGloasCloned.currentSyncCommittee;
|
|
46
46
|
stateGloasView.nextSyncCommittee = stateGloasCloned.nextSyncCommittee;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const latestExecutionPayloadBid = ssz.gloas.ExecutionPayloadBid.toViewDU({
|
|
48
|
+
parentBlockHash: stateFulu.latestExecutionPayloadHeader.parentHash,
|
|
49
|
+
parentBlockRoot: stateFulu.latestBlockHeader.parentRoot,
|
|
50
|
+
blockHash: stateFulu.latestExecutionPayloadHeader.blockHash,
|
|
51
|
+
prevRandao: stateFulu.latestExecutionPayloadHeader.prevRandao,
|
|
52
|
+
feeRecipient: ssz.ExecutionAddress.defaultValue(),
|
|
53
|
+
gasLimit: BigInt(stateFulu.latestExecutionPayloadHeader.gasLimit),
|
|
54
|
+
builderIndex: BUILDER_INDEX_SELF_BUILD,
|
|
55
|
+
slot: stateFulu.latestBlockHeader.slot,
|
|
56
|
+
value: 0,
|
|
57
|
+
executionPayment: 0n,
|
|
58
|
+
blobKzgCommitments: ssz.gloas.BlobKzgCommitments.defaultValue(),
|
|
59
|
+
executionRequestsRoot: ssz.gloas.ExecutionRequests.hashTreeRoot(ssz.gloas.ExecutionRequests.defaultValue()),
|
|
60
|
+
});
|
|
61
|
+
stateGloasView.latestExecutionPayloadBid = latestExecutionPayloadBid;
|
|
50
62
|
stateGloasView.nextWithdrawalIndex = stateGloasCloned.nextWithdrawalIndex;
|
|
51
63
|
stateGloasView.nextWithdrawalValidatorIndex = stateGloasCloned.nextWithdrawalValidatorIndex;
|
|
52
64
|
stateGloasView.historicalSummaries = stateGloasCloned.historicalSummaries;
|
|
@@ -129,9 +141,10 @@ function onboardBuildersFromPendingDeposits(state, metrics) {
|
|
|
129
141
|
let dropped = 0;
|
|
130
142
|
let sigFromCache = 0;
|
|
131
143
|
let sigVerified = 0;
|
|
132
|
-
// Track pubkeys of new builders added when applying deposits
|
|
133
|
-
//
|
|
134
|
-
|
|
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();
|
|
135
148
|
const pendingDeposits = ssz.gloas.PendingDeposits.defaultViewDU();
|
|
136
149
|
const pendingDepositsLookup = PendingDepositsLookup.buildEmpty();
|
|
137
150
|
for (const deposit of state.pendingDeposits.getAllReadonly()) {
|
|
@@ -145,15 +158,10 @@ function onboardBuildersFromPendingDeposits(state, metrics) {
|
|
|
145
158
|
kept++;
|
|
146
159
|
continue;
|
|
147
160
|
}
|
|
148
|
-
|
|
161
|
+
const builderIndex = builderIndexByPubkey.get(pubkeyHex);
|
|
162
|
+
if (builderIndex !== undefined) {
|
|
149
163
|
// Top up an already-onboarded builder
|
|
150
|
-
|
|
151
|
-
for (let j = 0; j < state.builders.length; j++) {
|
|
152
|
-
if (toPubkeyHex(state.builders.getReadonly(j).pubkey) === pubkeyHex) {
|
|
153
|
-
state.builders.get(j).balance += deposit.amount;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
164
|
+
state.builders.get(builderIndex).balance += deposit.amount;
|
|
157
165
|
topups++;
|
|
158
166
|
continue;
|
|
159
167
|
}
|
|
@@ -191,7 +199,8 @@ function onboardBuildersFromPendingDeposits(state, metrics) {
|
|
|
191
199
|
continue;
|
|
192
200
|
}
|
|
193
201
|
appendBuilderToRegistry(state, deposit.pubkey, PAYLOAD_BUILDER_VERSION, deposit.withdrawalCredentials.subarray(12), deposit.amount, deposit.slot);
|
|
194
|
-
|
|
202
|
+
// appendBuilderToRegistry() pushes, so the new builder is the last entry
|
|
203
|
+
builderIndexByPubkey.set(pubkeyHex, state.builders.length - 1);
|
|
195
204
|
onboarded++;
|
|
196
205
|
}
|
|
197
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,uBAAuB,EAAE,yBAAyB,EAAC,MAAM,kBAAkB,CAAC;
|
|
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
|
}
|
|
@@ -10,8 +10,8 @@ import {
|
|
|
10
10
|
ProgressiveListCompositeType,
|
|
11
11
|
ValueOf,
|
|
12
12
|
} from "@chainsafe/ssz";
|
|
13
|
-
import {PAYLOAD_BUILDER_VERSION, SLOTS_PER_HISTORICAL_ROOT} from "@lodestar/params";
|
|
14
|
-
import {ssz} from "@lodestar/types";
|
|
13
|
+
import {BUILDER_INDEX_SELF_BUILD, PAYLOAD_BUILDER_VERSION, SLOTS_PER_HISTORICAL_ROOT} from "@lodestar/params";
|
|
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";
|
|
@@ -73,11 +73,21 @@ export function upgradeStateToGloas(
|
|
|
73
73
|
);
|
|
74
74
|
stateGloasView.currentSyncCommittee = stateGloasCloned.currentSyncCommittee;
|
|
75
75
|
stateGloasView.nextSyncCommittee = stateGloasCloned.nextSyncCommittee;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
const latestExecutionPayloadBid = ssz.gloas.ExecutionPayloadBid.toViewDU({
|
|
77
|
+
parentBlockHash: stateFulu.latestExecutionPayloadHeader.parentHash,
|
|
78
|
+
parentBlockRoot: stateFulu.latestBlockHeader.parentRoot,
|
|
79
|
+
blockHash: stateFulu.latestExecutionPayloadHeader.blockHash,
|
|
80
|
+
prevRandao: stateFulu.latestExecutionPayloadHeader.prevRandao,
|
|
81
|
+
feeRecipient: ssz.ExecutionAddress.defaultValue(),
|
|
82
|
+
gasLimit: BigInt(stateFulu.latestExecutionPayloadHeader.gasLimit),
|
|
83
|
+
builderIndex: BUILDER_INDEX_SELF_BUILD,
|
|
84
|
+
slot: stateFulu.latestBlockHeader.slot,
|
|
85
|
+
value: 0,
|
|
86
|
+
executionPayment: 0n,
|
|
87
|
+
blobKzgCommitments: ssz.gloas.BlobKzgCommitments.defaultValue(),
|
|
88
|
+
executionRequestsRoot: ssz.gloas.ExecutionRequests.hashTreeRoot(ssz.gloas.ExecutionRequests.defaultValue()),
|
|
89
|
+
});
|
|
90
|
+
stateGloasView.latestExecutionPayloadBid = latestExecutionPayloadBid;
|
|
81
91
|
stateGloasView.nextWithdrawalIndex = stateGloasCloned.nextWithdrawalIndex;
|
|
82
92
|
stateGloasView.nextWithdrawalValidatorIndex = stateGloasCloned.nextWithdrawalValidatorIndex;
|
|
83
93
|
stateGloasView.historicalSummaries = stateGloasCloned.historicalSummaries;
|
|
@@ -187,9 +197,10 @@ function onboardBuildersFromPendingDeposits(
|
|
|
187
197
|
let sigFromCache = 0;
|
|
188
198
|
let sigVerified = 0;
|
|
189
199
|
|
|
190
|
-
// Track pubkeys of new builders added when applying deposits
|
|
191
|
-
//
|
|
192
|
-
|
|
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>();
|
|
193
204
|
|
|
194
205
|
const pendingDeposits = ssz.gloas.PendingDeposits.defaultViewDU();
|
|
195
206
|
const pendingDepositsLookup = PendingDepositsLookup.buildEmpty();
|
|
@@ -208,15 +219,10 @@ function onboardBuildersFromPendingDeposits(
|
|
|
208
219
|
continue;
|
|
209
220
|
}
|
|
210
221
|
|
|
211
|
-
|
|
222
|
+
const builderIndex = builderIndexByPubkey.get(pubkeyHex);
|
|
223
|
+
if (builderIndex !== undefined) {
|
|
212
224
|
// Top up an already-onboarded builder
|
|
213
|
-
|
|
214
|
-
for (let j = 0; j < state.builders.length; j++) {
|
|
215
|
-
if (toPubkeyHex(state.builders.getReadonly(j).pubkey) === pubkeyHex) {
|
|
216
|
-
state.builders.get(j).balance += deposit.amount;
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
225
|
+
state.builders.get(builderIndex).balance += deposit.amount;
|
|
220
226
|
topups++;
|
|
221
227
|
continue;
|
|
222
228
|
}
|
|
@@ -272,7 +278,8 @@ function onboardBuildersFromPendingDeposits(
|
|
|
272
278
|
deposit.amount,
|
|
273
279
|
deposit.slot
|
|
274
280
|
);
|
|
275
|
-
|
|
281
|
+
// appendBuilderToRegistry() pushes, so the new builder is the last entry
|
|
282
|
+
builderIndexByPubkey.set(pubkeyHex, state.builders.length - 1);
|
|
276
283
|
onboarded++;
|
|
277
284
|
}
|
|
278
285
|
|