erigon-pulse/cl/freezer/utils.go
a 436493350e
Sentinel refactor (#8296)
1. changes sentinel to use an http-like interface

2. moves hexutil, crypto/blake2b, metrics packages to erigon-lib
2023-10-22 01:17:18 +02:00

33 lines
733 B
Go

package freezer
import (
"bytes"
"fmt"
"github.com/ledgerwatch/erigon/cl/sentinel/communication/ssz_snappy"
"github.com/ledgerwatch/erigon-lib/types/ssz"
)
type marshalerHashable interface {
ssz.Marshaler
ssz.HashableSSZ
}
func PutObjectSSZIntoFreezer(objectName, freezerNamespace string, numericalId uint64, object marshalerHashable, record Freezer) error {
if record == nil {
return nil
}
buffer := new(bytes.Buffer)
if err := ssz_snappy.EncodeAndWrite(buffer, object); err != nil {
return err
}
id := fmt.Sprintf("%d", numericalId)
// put the hash of the object as the sidecar.
h, err := object.HashSSZ()
if err != nil {
return err
}
return record.Put(buffer, h[:], freezerNamespace, objectName, id)
}