ceremonyclient/node/store/data_proof.go
2025-09-30 02:46:49 -05:00

72 lines
1.5 KiB
Go

package store
import (
"encoding/binary"
"go.uber.org/zap"
"source.quilibrium.com/quilibrium/monorepo/types/store"
)
var _ store.DataProofStore = (*PebbleDataProofStore)(nil)
type PebbleDataProofStore struct {
db store.KVDB
logger *zap.Logger
}
func NewPebbleDataProofStore(
db store.KVDB,
logger *zap.Logger,
) *PebbleDataProofStore {
return &PebbleDataProofStore{
db,
logger,
}
}
func dataProofMetadataKey(filter []byte, commitment []byte) []byte {
key := []byte{DATA_PROOF, DATA_PROOF_METADATA}
key = append(key, commitment...)
key = append(key, filter...)
return key
}
func dataProofInclusionKey(
filter []byte,
commitment []byte,
seqNo uint64,
) []byte {
key := []byte{DATA_PROOF, DATA_PROOF_INCLUSION}
key = append(key, commitment...)
key = binary.BigEndian.AppendUint64(key, seqNo)
key = append(key, filter...)
return key
}
func dataProofSegmentKey(
filter []byte,
hash []byte,
) []byte {
key := []byte{DATA_PROOF, DATA_PROOF_SEGMENT}
key = append(key, hash...)
key = append(key, filter...)
return key
}
func dataTimeProofKey(peerId []byte, increment uint32) []byte {
key := []byte{DATA_TIME_PROOF, DATA_TIME_PROOF_DATA}
key = append(key, peerId...)
key = binary.BigEndian.AppendUint32(key, increment)
return key
}
func dataTimeProofLatestKey(peerId []byte) []byte {
key := []byte{DATA_TIME_PROOF, DATA_TIME_PROOF_LATEST}
key = append(key, peerId...)
return key
}
func (p *PebbleDataProofStore) NewTransaction() (store.Transaction, error) {
return p.db.NewBatch(false), nil
}