WIP: Deneb integration no spectest or proto#12773
WIP: Deneb integration no spectest or proto#12773kasey wants to merge 58 commits intodeneb-integration-spectestfrom
Conversation
Co-authored-by: Nishant Das <nishdas93@gmail.com> Fix Migration Of State (#12423)
* validator signing feature migrated from eip4844 branch, added unit tests * Update proto/prysm/v1alpha1/beacon_block.proto --------- Co-authored-by: Radosław Kapka <rkapka@wp.pl>
* BlobSidecarsByRoot RPC handler * BlobSidecarsByRange rpc handler (#12499) Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com> --------- Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
* test: skip deneb e2e test with an issue * Unskip more stuff
* Add a new blob channel * fix mock * reset the channel * keep a map of channels * gazelle * do not overwrite map * remove pre-declaration
* binary search is the wrong tool for the job, derp * restore protection from array index panics --------- Co-authored-by: Kasey Kirkham <kasey@users.noreply.github.com>
Co-authored-by: terence tsao <terence@prysmaticlabs.com>
| } | ||
| matchedSrcTgt := matchedSrc && matchedTgt | ||
| if matchedSrcTgt && delay <= slotsPerEpoch { | ||
| // Before Deneb no attestation should pass validation without having delay <= slotsPerEpoch. |
There was a problem hiding this comment.
I understand the eip, but doesn't this break pre-deneb core code ?
There was a problem hiding this comment.
No. Because before Deneb, we will fail earlier anyway (See comment). @potuz idea to keep the code clean
| params.BeaconConfig().SlotsPerEpoch, | ||
| ) | ||
|
|
||
| if beaconState.Version() < version.Deneb { |
There was a problem hiding this comment.
don't we have validity checks for attestations after deneb ? what happens if we get a very old attestation here
There was a problem hiding this comment.
Do we not need to validate that it is at least the current or previous epoch ?
There was a problem hiding this comment.
It's verified above. See if data.Target.Epoch != prevEpoch && data.Target.Epoch != currEpoch {
| } | ||
| attSlotEpoch := slots.ToEpoch(attSlot) | ||
| if attSlotEpoch != currentEpoch && attSlotEpoch != prevEpoch { | ||
| return fmt.Errorf("attestation slot %d not within current epoch %d or previous epoch %d", attSlot, currentEpoch, prevEpoch) |
There was a problem hiding this comment.
can you follow the error pattern as how above ? With attError
| return nil, errors.Wrap(err, "could not build block in parallel") | ||
| } | ||
| } else { | ||
| var wg sync.WaitGroup |
There was a problem hiding this comment.
This needs to be changed back to the flag, otherwise we are removing the feature
There was a problem hiding this comment.
That's right. Was hoping we do this at the major release
| } | ||
| // ProposeBeaconBlock is called by a proposer during its assigned slot to create a block in an attempt | ||
| // to get it processed by the beacon node as the canonical head. | ||
| func (vs *Server) ProposeBeaconBlock(ctx context.Context, req *ethpb.GenericSignedBeaconBlock) (*ethpb.ProposeResponse, error) { |
There was a problem hiding this comment.
Yeah the whole feature gets wiped out here, most likely was due to a bad rebase
There was a problem hiding this comment.
This was intended. I would like to fully remove non build block parallel at a major point release. The reason is that this code path is becoming hard to maintain. Now we will have to write get blobs from both builder and local EL for two paths. I'll think about this more. But that's right we can do this anymore because we are merging to develop now.
| case version.Capella: | ||
| fieldRoots = make([][]byte, params.BeaconConfig().BeaconStateCapellaFieldCount) | ||
| case version.Deneb: | ||
| fieldRoots = make([][]byte, params.BeaconConfig().BeaconStateCapellaFieldCount) // Deneb has the same state field count as Capella. |
There was a problem hiding this comment.
we should still set it as a seprate variable here
| case version.Capella: | ||
| fieldCount = params.BeaconConfig().BeaconStateCapellaFieldCount | ||
| case version.Deneb: | ||
| fieldCount = params.BeaconConfig().BeaconStateCapellaFieldCount |
| @@ -61,8 +61,8 @@ func (a *data) PbV2() (*enginev1.PayloadAttributesV2, error) { | |||
| if a == nil { | |||
| return nil, errNilPayloadAttribute | |||
| } | |||
| if a.version != version.Capella { | |||
| return nil, consensus_types.ErrNotSupported("PayloadAttributePbV2", a.version) | |||
| if a.version < version.Capella { | |||
There was a problem hiding this comment.
why is the conditional changed
There was a problem hiding this comment.
This is indeed a bug. PbV2 should be the same for deneb but not anymore
What type of PR is this?
Other
What does this PR do? Why is it needed?
This PR represents deneb-integration rebased onto
deneb-integration-spectest, which builds ondeneb-integration-proto. As such the diff for this PR should show the diff fordeneb-integrationminus the proto and spectests changes, with the goal of making the deneb-integration branch easier to review.builds on #12772