Monthly Contribution - December 2024
💡
Opened and merged 1 PR to Dora
Opened 3 PRs, and merged 1 PR to Prysm
Opened 1 issue on Prysm
Opened 3 PRs, and merged 1 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 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
vserror
)
#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:
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.