blob

package
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2020 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	HeaderLen      = 1 + 1 + 63 + 8 + 32 + 65
	SectorLen      = 65536
	SectorCount    = 256
	Size           = SectorLen * SectorCount
	CurrentVersion = 1
)
View Source
const (
	MerkleTreeHeight = 8
	MerkleProofLen   = 8 * 32

	SubsectorSize        = 4096
	SubsectorCountBlob   = Size / SubsectorSize
	SubsectorCountSector = SectorLen / SubsectorSize
	SubsectorProofLevel  = 8
)

Variables

View Source
var (
	EmptyBlobMerkleRoot = crypto.Hash{0x7d, 0x1e, 0x84, 0xe6, 0x2d, 0x7e, 0xc9, 0xf6, 0xbc, 0x3f, 0x88, 0x66, 0x75, 0x73, 0x3d, 0xa0, 0x6d, 0xaf, 0x02, 0x77, 0xad, 0x8f, 0xfc, 0xf7, 0xc5, 0x39, 0x93, 0x8c, 0xa5, 0xee, 0x9c, 0xf2}
	EmptyBlobBaseHash   = crypto.Hash{0x53, 0x2a, 0x12, 0xf0, 0x9f, 0xeb, 0xf8, 0x52, 0x14, 0x19, 0x95, 0x99, 0x73, 0xad, 0x53, 0x46, 0x94, 0x4c, 0x2b, 0x22, 0xbf, 0x76, 0x4d, 0x0e, 0x1a, 0x34, 0x25, 0x5b, 0x65, 0x64, 0xfe, 0x4b}
	ZeroMerkleBase      MerkleBase
)
View Source
var (
	ErrTransactionClosed  = errors.New("transaction already closed")
	ErrTransactionRemoved = errors.New("transaction removed")
)
View Source
var ErrNotFound = errors.New("not found")
View Source
var (
	ErrWriteBeyondBlobBounds = errors.New("write beyond blob bounds")
)

Functions

func HashSector

func HashSector(sector Sector) crypto.Hash

func NewReader

func NewReader(r io.ReaderAt) io.Reader

func NewStore

func NewStore(blobsPath string) *storeImpl

func NewWriter

func NewWriter(w io.WriterAt) io.Writer

func PathifyName

func PathifyName(n string) string

func ReadBlobAt

func ReadBlobAt(r io.ReaderAt, b []byte, off int64) (int, error)

func SealHash

func SealHash(name string, ts time.Time, merkleRoot crypto.Hash, reservedRoot crypto.Hash) crypto.Hash

func SignSeal

func SignSeal(signer crypto.Signer, name string, ts time.Time, merkleRoot crypto.Hash, reservedRoot crypto.Hash) (crypto.Signature, error)

func VerifySectorProof

func VerifySectorProof(sector Sector, sectorID uint8, merkleRoot crypto.Hash, proof MerkleProof) bool

func WriteBlobAt

func WriteBlobAt(w io.WriterAt, b []byte, off int64) (int, error)

func WriteSector

func WriteSector(w io.WriterAt, id uint8, sector Sector) error

Types

type Blob

type Blob interface {
	io.Closer
	Readable
	Transaction() (Transaction, error)
}

func NewInStorePath

func NewInStorePath(blobsPath string, name string) (Blob, error)

type MerkleBase

type MerkleBase [256]crypto.Hash

func (*MerkleBase) Decode

func (m *MerkleBase) Decode(r io.Reader) error

func (MerkleBase) DiffWith

func (m MerkleBase) DiffWith(other MerkleBase) []uint8

func (MerkleBase) Encode

func (m MerkleBase) Encode(w io.Writer) error

type MerkleProof

type MerkleProof [MerkleProofLen]byte

func MakeSectorProof

func MakeSectorProof(tree MerkleTree, sectorID uint8) MerkleProof

func (*MerkleProof) Decode

func (m *MerkleProof) Decode(r io.Reader) error

func (MerkleProof) Encode

func (m MerkleProof) Encode(w io.Writer) error

type MerkleTree

type MerkleTree [][]crypto.Hash

func MakeTreeFromBase

func MakeTreeFromBase(base MerkleBase) MerkleTree

func Merkleize

func Merkleize(br io.Reader) (MerkleTree, error)

func NewMerkleTreeFromReader

func NewMerkleTreeFromReader(r io.Reader, leafCount int, leafSize int) (MerkleTree, error)

func (*MerkleTree) Decode

func (t *MerkleTree) Decode(r io.Reader) error

func (MerkleTree) Encode

func (t MerkleTree) Encode(w io.Writer) error

func (MerkleTree) Height

func (t MerkleTree) Height() int

func (MerkleTree) Level

func (t MerkleTree) Level(i int) []crypto.Hash

func (MerkleTree) ProtocolBase

func (t MerkleTree) ProtocolBase() MerkleBase

func (MerkleTree) Root

func (t MerkleTree) Root() crypto.Hash

func (MerkleTree) String

func (t MerkleTree) String() string

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

func NewPool

func NewPool(getter PoolGetter) *Pool

func (*Pool) Get

func (p *Pool) Get(name string) (Blob, error)

func (*Pool) Put

func (p *Pool) Put(blob Blob) error

type PoolGetter

type PoolGetter func(name string) (Blob, error)

type Readable

type Readable interface {
	io.ReaderAt
	SectorReader
	Name() string
}

type Reader

type Reader struct {
	// contains filtered or unexported fields
}

func (*Reader) Read

func (b *Reader) Read(p []byte) (int, error)

type Sector

type Sector [SectorLen]byte
var ZeroSector Sector

func ReadSector

func ReadSector(r io.ReaderAt, id uint8) (Sector, error)

func (*Sector) Decode

func (s *Sector) Decode(r io.Reader) error

func (Sector) Encode

func (s Sector) Encode(w io.Writer) error

type SectorReader

type SectorReader interface {
	ReadSector(sectorID uint8) (Sector, error)
}

type Store

type Store interface {
	Open(name string) (Blob, error)
	Exists(name string) (bool, error)
}

type Transaction

type Transaction interface {
	Readable
	io.WriterAt
	WriteSector(id uint8, sector Sector) error
	Truncate() error
	Commit() error
	Rollback() error
	Remove() error
}

type Writer

type Writer struct {
	// contains filtered or unexported fields
}

func (*Writer) Write

func (w *Writer) Write(p []byte) (int, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL