Monthly Contribution - December 2024
Opened 3 PRs, and merged 2 PR to Prysm
Opened 1 issue on Prysm
Dora
#1
- This is my first contribution to Dora, and also ethPandaOps projects. I had a small talk with @samcm at this Devcon! See my logs: I was impressed @Devcon 2024
- I found that a copy button in epoch page doesn't work, so fixed one line to make it work!
Prysm
#1
Finished building blockdoesn't contain an error field even if it fails to build a block. This PR adds a field to indicate whether it succeeded or not.- prysm#14722 further improves this idea by making log level clearly(
infovserror)
#2
- In my opinion, EIP-6110 is the best change among the EIPs included in Pectra(Prague for EL, Electra for CL). It will dramatically enhance UX for validators since their deposits would be processed much earlier than status quo.
- Meanwhile, EIP-4881 provides a merkle-tree based snapshot for the deposit logs from receipts. Each consensus client implements this:
depositsnapshotpackage for Prysm,eth1crate for Lighthouse. - I found that the finalizing logic in EIP-4881 is not compatible with EIP-6110, since
eth1_deposit_indexin beacon state will be anchored in the future.
func (vs *Server) packDepositsAndAttestations(
ctx context.Context,
head state.BeaconState,
blkSlot primitives.Slot,
eth1Data *ethpb.Eth1Data,
) ([]*ethpb.Deposit, []ethpb.Att, error) {
eg, egctx := errgroup.WithContext(ctx)
var deposits []*ethpb.Deposit
var atts []ethpb.Att
eg.Go(func() error {
// Pack ETH1 deposits which have not been included in the beacon chain.
localDeposits, err := vs.deposits(egctx, head, eth1Data)
if err != nil {
return status.Errorf(codes.Internal, "Could not get ETH1 deposits: %v", err)
}
// if the original context is cancelled, then cancel this routine too
select {
case <-egctx.Done():
return egctx.Err()
default:
}
deposits = localDeposits
return nil
})
eg.Go(func() error {
// Pack aggregated attestations which have not been included in the beacon chain.
localAtts, err := vs.packAttestations(egctx, head, blkSlot)
if err != nil {
return status.Errorf(codes.Internal, "Could not get attestations to pack into block: %v", err)
}
// if the original context is cancelled, then cancel this routine too
select {
case <-egctx.Done():
return egctx.Err()
default:
}
atts = localAtts
return nil
})
return deposits, atts, eg.Wait() // deposits will be always empty.
}- In Prysm,
packDepositsAndAttestationsis called to pack deposits in a block, but for post-Electra, this function will always return empty list of deposit. - PR #14697 addresses a performance issue while the block producer will face.
- It was merged at January 25th, 2025.
- Issue #14698 starts a discussion to prune pending deposits.
#3
- A validator can submit an invalid voluntary exit request which violates the basic timing check. This request will be rejected by other nodes, leading the submitter to lost its p2p connection.
- This PR addresses this issue by checking the slot by wall clock.