Monthly Contribution - December 2024
💡
Opened and merged 1 PR to Dora
Opened 3 PRs, and merged 2 PR to Prysm
Opened 1 issue on Prysm
Opened 3 PRs, and merged 2 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
vserror
)
#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.
- It was merged at January 25th, 2025.
- 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…
- 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.