package v2 import ( "github.com/prysmaticlabs/prysm/encoding/bytesutil" ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1" ) // currentSyncCommitteeVal of the current sync committee in beacon chain state. // This assumes that a lock is already held on BeaconState. func (b *BeaconState) currentSyncCommitteeVal() *ethpb.SyncCommittee { return CopySyncCommittee(b.currentSyncCommittee) } // nextSyncCommitteeVal of the next sync committee in beacon chain state. // This assumes that a lock is already held on BeaconState. func (b *BeaconState) nextSyncCommitteeVal() *ethpb.SyncCommittee { return CopySyncCommittee(b.nextSyncCommittee) } // CurrentSyncCommittee of the current sync committee in beacon chain state. func (b *BeaconState) CurrentSyncCommittee() (*ethpb.SyncCommittee, error) { b.lock.RLock() defer b.lock.RUnlock() if b.currentSyncCommittee == nil { return nil, nil } return b.currentSyncCommitteeVal(), nil } // NextSyncCommittee of the next sync committee in beacon chain state. func (b *BeaconState) NextSyncCommittee() (*ethpb.SyncCommittee, error) { b.lock.RLock() defer b.lock.RUnlock() if b.nextSyncCommittee == nil { return nil, nil } return b.nextSyncCommitteeVal(), nil } // CopySyncCommittee copies the provided sync committee object. func CopySyncCommittee(data *ethpb.SyncCommittee) *ethpb.SyncCommittee { if data == nil { return nil } return ðpb.SyncCommittee{ Pubkeys: bytesutil.SafeCopy2dBytes(data.Pubkeys), AggregatePubkey: bytesutil.SafeCopyBytes(data.AggregatePubkey), } }