mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
* config values * block protos * get_committee_indices * proto and ssz * attestation interface * Revert "Auxiliary commit to revert individual files from deadb2183723511721b3288c7168808a4fa97c64" This reverts commit 32ad5009537bc5ec0e6caf9f52143d380d00be85. * todos * get_attesting_indices * Revert "Auxiliary commit to revert individual files from dd2789723f90b15eb1f874b561d88d11dcc9c0bf" This reverts commit f39644ed3cb6f3964fc6c86fdf4bd5de2a9668c8. * beacon spec changes * Fix pending attestation. Build ok * Electra: add electra version * Electra: consensus types * gocognit exclusion * @potuz's suggestion * build fix * interfaces for indexed att and slashing * indexed att usage * BuildSignedBeaconBlockFromExecutionPayload * slashing usage * grpc stubs * remove unused methods * Electra attestation interfaces * cleanup * tests * make linter happy * simple casting * test fixes * Fix spectest failures * Regen pb and ssz files * Handle "not ok" type assertion cases * Setters that check version should always return an error. SetAttesterSlashings and SetAttestations * gofmt * Fix TestMinSpanChunksSlice_CheckSlashable --------- Co-authored-by: terence tsao <terence@prysmaticlabs.com> Co-authored-by: Preston Van Loon <preston@pvl.dev>
73 lines
1.8 KiB
Go
73 lines
1.8 KiB
Go
package kv
|
|
|
|
import (
|
|
"github.com/pkg/errors"
|
|
"github.com/prysmaticlabs/prysm/v5/consensus-types/interfaces"
|
|
)
|
|
|
|
// SaveForkchoiceAttestation saves an forkchoice attestation in cache.
|
|
func (c *AttCaches) SaveForkchoiceAttestation(att interfaces.Attestation) error {
|
|
if att == nil {
|
|
return nil
|
|
}
|
|
r, err := hashFn(att)
|
|
if err != nil {
|
|
return errors.Wrap(err, "could not tree hash attestation")
|
|
}
|
|
|
|
att = interfaces.CopyAttestation(att)
|
|
c.forkchoiceAttLock.Lock()
|
|
defer c.forkchoiceAttLock.Unlock()
|
|
c.forkchoiceAtt[r] = att
|
|
|
|
return nil
|
|
}
|
|
|
|
// SaveForkchoiceAttestations saves a list of forkchoice attestations in cache.
|
|
func (c *AttCaches) SaveForkchoiceAttestations(atts []interfaces.Attestation) error {
|
|
for _, att := range atts {
|
|
if err := c.SaveForkchoiceAttestation(att); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ForkchoiceAttestations returns the forkchoice attestations in cache.
|
|
func (c *AttCaches) ForkchoiceAttestations() []interfaces.Attestation {
|
|
c.forkchoiceAttLock.RLock()
|
|
defer c.forkchoiceAttLock.RUnlock()
|
|
|
|
atts := make([]interfaces.Attestation, 0, len(c.forkchoiceAtt))
|
|
for _, att := range c.forkchoiceAtt {
|
|
atts = append(atts, interfaces.CopyAttestation(att) /* Copied */)
|
|
}
|
|
|
|
return atts
|
|
}
|
|
|
|
// DeleteForkchoiceAttestation deletes a forkchoice attestation in cache.
|
|
func (c *AttCaches) DeleteForkchoiceAttestation(att interfaces.Attestation) error {
|
|
if att == nil {
|
|
return nil
|
|
}
|
|
r, err := hashFn(att)
|
|
if err != nil {
|
|
return errors.Wrap(err, "could not tree hash attestation")
|
|
}
|
|
|
|
c.forkchoiceAttLock.Lock()
|
|
defer c.forkchoiceAttLock.Unlock()
|
|
delete(c.forkchoiceAtt, r)
|
|
|
|
return nil
|
|
}
|
|
|
|
// ForkchoiceAttestationCount returns the number of fork choice attestations key in the pool.
|
|
func (c *AttCaches) ForkchoiceAttestationCount() int {
|
|
c.forkchoiceAttLock.RLock()
|
|
defer c.forkchoiceAttLock.RUnlock()
|
|
return len(c.forkchoiceAtt)
|
|
}
|