Monthly Contribution - December 2024

Monthly Contribution - December 2024
Photo by AltumCode / Unsplash
💡
Opened and merged 1 PR to Dora
Opened 3 PRs, and merged 1 PR to Prysm
Opened 1 issue on Prysm

Dora

#1

fix: make timestamp copy btn work in epoch page by syjn99 · Pull Request #184 · ethpandaops/dora
Hi, I found that copy button for epoch timestamp doesn’t work. copyTs seems a legacy function, so I changed it as other pages do.
  • 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

chore: add an error field to “Finished building block” by syjn99 · Pull Request #14696 · prysmaticlabs/prysm
What type of PR is this? Other What does this PR do? Why is it needed? time="2024-12-06 03:09:21" level=info msg="Finished building block" prefix="rpc/validator" since…
  • Finished building block doesn'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(info vs error)

#2

Pruning pending deposits in deposit snapshot for post-Electra(EIP-6110) · Issue #14698 · prysmaticlabs/prysm
💎 Issue Background As EIP-6110 is included in the upcoming upgrade(Electra), deposits are directly bridged from EL to CL via execution requests(EIP-7685). Thus, the implementation of EIP-4881 only…
fix: early return for packing local deposits when EIP-6110 is applied by syjn99 · Pull Request #14697 · prysmaticlabs/prysm
What type of PR is this? Optimization What does this PR do? Why is it needed? As mentioned at #14698, a block producer in post-Electra doesn't have to consider the deposit tree from the eth1 lo…
  • 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: depositsnapshot package for Prysm, eth1 crate for Lighthouse.
  • I found that the finalizing logic in EIP-4881 is not compatible with EIP-6110, since eth1_deposit_index in 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, packDepositsAndAttestations is 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.
  • Issue #14698 starts a discussion to prune pending deposits.

#3

fix: validate wall clock when submitting a voluntary exit message by syjn99 · Pull Request #14720 · prysmaticlabs/prysm
What type of PR is this? Bug fix What does this PR do? Why is it needed? If a user submit an voluntary exit message with a valid signature(via POST /eth/v1/beacon/pool/voluntary_exits), the current…