mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 15:37:56 -05:00
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package state_native
|
|
|
|
import (
|
|
"github.com/OffchainLabs/prysm/v7/beacon-chain/state/state-native/types"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// SetStateRoots for the beacon state. Updates the state roots
|
|
// to a new value by overwriting the previous value.
|
|
func (b *BeaconState) SetStateRoots(val [][]byte) error {
|
|
b.lock.Lock()
|
|
defer b.lock.Unlock()
|
|
|
|
if b.stateRootsMultiValue != nil {
|
|
b.stateRootsMultiValue.Detach(b)
|
|
}
|
|
b.stateRootsMultiValue = NewMultiValueStateRoots(val)
|
|
|
|
b.markFieldAsDirty(types.StateRoots)
|
|
b.rebuildTrie[types.StateRoots] = true
|
|
return nil
|
|
}
|
|
|
|
// UpdateStateRootAtIndex for the beacon state. Updates the state root
|
|
// at a specific index to a new value.
|
|
func (b *BeaconState) UpdateStateRootAtIndex(idx uint64, stateRoot [32]byte) error {
|
|
if err := b.stateRootsMultiValue.UpdateAt(b, idx, stateRoot); err != nil {
|
|
return errors.Wrap(err, "could not update state roots")
|
|
}
|
|
|
|
b.lock.Lock()
|
|
defer b.lock.Unlock()
|
|
|
|
b.markFieldAsDirty(types.StateRoots)
|
|
b.addDirtyIndices(types.StateRoots, []uint64{idx})
|
|
return nil
|
|
}
|