cell

package
v0.0.0-...-7dd4c70 Latest Latest
Warning

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

Go to latest
Published: Jul 31, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrAddressTypeNotSupported = errors.New("address type is not supported")
View Source
var ErrNegative = errors.New("value should be non negative")
View Source
var ErrNoMoreRefs = errors.New("no more refs exists")
View Source
var ErrNoSuchKeyInDict = errors.New("no such key in dict")
View Source
var ErrNotEnoughData = func(has, need int) error {
	return fmt.Errorf("not enough data in reader, need %d, has %d", need, has)
}
View Source
var ErrNotFit1023 = errors.New("cell data size should fit into 1023 bits")
View Source
var ErrRefCannotBeNil = errors.New("ref cannot be nil")
View Source
var ErrSmallSlice = errors.New("too small slice for this size")
View Source
var ErrTooBigSize = errors.New("too big size")
View Source
var ErrTooBigValue = errors.New("too big value")
View Source
var ErrTooMuchRefs = errors.New("too much refs")

Functions

func CheckProof

func CheckProof(proof *Cell, hash []byte) error

func ToBOCWithFlags

func ToBOCWithFlags(roots []*Cell, flags ...bool) []byte

ToBOCWithFlags - flags are: first - withCRC, second - withIndex, third - withCache

Types

type Builder

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

func BeginCell

func BeginCell() *Builder

func (*Builder) BitsLeft

func (b *Builder) BitsLeft() uint

func (*Builder) BitsUsed

func (b *Builder) BitsUsed() uint

func (*Builder) Copy

func (b *Builder) Copy() *Builder

func (*Builder) EndCell

func (b *Builder) EndCell() *Cell

func (*Builder) MustStoreAddr

func (b *Builder) MustStoreAddr(addr *address.Address) *Builder

func (*Builder) MustStoreBigCoins

func (b *Builder) MustStoreBigCoins(value *big.Int) *Builder

func (*Builder) MustStoreBigInt

func (b *Builder) MustStoreBigInt(value *big.Int, sz uint) *Builder

func (*Builder) MustStoreBigUInt

func (b *Builder) MustStoreBigUInt(value *big.Int, sz uint) *Builder

func (*Builder) MustStoreBigVarUInt

func (b *Builder) MustStoreBigVarUInt(val *big.Int, sz uint) *Builder

func (*Builder) MustStoreBinarySnake

func (b *Builder) MustStoreBinarySnake(data []byte) *Builder

func (*Builder) MustStoreBoolBit

func (b *Builder) MustStoreBoolBit(value bool) *Builder

func (*Builder) MustStoreBuilder

func (b *Builder) MustStoreBuilder(builder *Builder) *Builder

func (*Builder) MustStoreCoins

func (b *Builder) MustStoreCoins(value uint64) *Builder

func (*Builder) MustStoreDict

func (b *Builder) MustStoreDict(dict *Dictionary) *Builder

func (*Builder) MustStoreInt

func (b *Builder) MustStoreInt(value int64, sz uint) *Builder

func (*Builder) MustStoreMaybeRef

func (b *Builder) MustStoreMaybeRef(ref *Cell) *Builder

func (*Builder) MustStoreRef

func (b *Builder) MustStoreRef(ref *Cell) *Builder

func (*Builder) MustStoreSlice

func (b *Builder) MustStoreSlice(bytes []byte, sz uint) *Builder

func (*Builder) MustStoreStringSnake

func (b *Builder) MustStoreStringSnake(str string) *Builder

func (*Builder) MustStoreUInt

func (b *Builder) MustStoreUInt(value uint64, sz uint) *Builder

func (*Builder) MustStoreVarUInt

func (b *Builder) MustStoreVarUInt(val uint64, sz uint) *Builder

func (*Builder) RefsLeft

func (b *Builder) RefsLeft() uint

func (*Builder) RefsUsed

func (b *Builder) RefsUsed() int

func (*Builder) StoreAddr

func (b *Builder) StoreAddr(addr *address.Address) error

func (*Builder) StoreBigCoins

func (b *Builder) StoreBigCoins(value *big.Int) error

func (*Builder) StoreBigInt

func (b *Builder) StoreBigInt(value *big.Int, sz uint) error

func (*Builder) StoreBigUInt

func (b *Builder) StoreBigUInt(value *big.Int, sz uint) error

func (*Builder) StoreBigVarUInt

func (b *Builder) StoreBigVarUInt(val *big.Int, sz uint) error

func (*Builder) StoreBinarySnake

func (b *Builder) StoreBinarySnake(data []byte) error

func (*Builder) StoreBoolBit

func (b *Builder) StoreBoolBit(value bool) error

func (*Builder) StoreBuilder

func (b *Builder) StoreBuilder(builder *Builder) error

func (*Builder) StoreCoins

func (b *Builder) StoreCoins(value uint64) error

func (*Builder) StoreDict

func (b *Builder) StoreDict(dict *Dictionary) error

func (*Builder) StoreInt

func (b *Builder) StoreInt(value int64, sz uint) error

func (*Builder) StoreMaybeRef

func (b *Builder) StoreMaybeRef(ref *Cell) error

func (*Builder) StoreRef

func (b *Builder) StoreRef(ref *Cell) error

func (*Builder) StoreSlice

func (b *Builder) StoreSlice(bytes []byte, sz uint) error

func (*Builder) StoreStringSnake

func (b *Builder) StoreStringSnake(str string) error

func (*Builder) StoreUInt

func (b *Builder) StoreUInt(value uint64, sz uint) error

func (*Builder) StoreVarUInt

func (b *Builder) StoreVarUInt(val uint64, sz uint) error

func (*Builder) ToSlice

func (b *Builder) ToSlice() *Slice

type Cell

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

func FromBOC

func FromBOC(data []byte) (*Cell, error)

func FromBOCMultiRoot

func FromBOCMultiRoot(data []byte) ([]*Cell, error)

func FromRawUnsafe

func FromRawUnsafe(u RawUnsafeCell) *Cell

func UnwrapProof

func UnwrapProof(proof *Cell, hash []byte) (*Cell, error)

func (*Cell) AsDict

func (c *Cell) AsDict(keySz uint) *Dictionary

func (*Cell) BeginParse

func (c *Cell) BeginParse() *Slice

func (*Cell) BitsSize

func (c *Cell) BitsSize() uint

func (*Cell) CreateProof

func (c *Cell) CreateProof(skeleton *ProofSkeleton) (*Cell, error)

func (*Cell) Depth

func (c *Cell) Depth(level ...int) uint16

func (*Cell) Dump

func (c *Cell) Dump(limitLength ...int) string

func (*Cell) DumpBits

func (c *Cell) DumpBits(limitLength ...int) string

func (*Cell) GetType

func (c *Cell) GetType() Type

func (*Cell) Hash

func (c *Cell) Hash(level ...int) []byte

Hash - calculates a hash of cell recursively Once calculated, it is cached and can be reused cheap.

func (*Cell) MarshalJSON

func (c *Cell) MarshalJSON() ([]byte, error)

func (*Cell) MustPeekRef

func (c *Cell) MustPeekRef(i int) *Cell

func (*Cell) PeekRef

func (c *Cell) PeekRef(i int) (*Cell, error)

func (*Cell) RefsNum

func (c *Cell) RefsNum() uint

func (*Cell) Sign

func (c *Cell) Sign(key ed25519.PrivateKey) []byte

func (*Cell) ToBOC

func (c *Cell) ToBOC() []byte

func (*Cell) ToBOCWithFlags

func (c *Cell) ToBOCWithFlags(flags ...bool) []byte

func (*Cell) ToBuilder

func (c *Cell) ToBuilder() *Builder

func (*Cell) ToRawUnsafe

func (c *Cell) ToRawUnsafe() RawUnsafeCell

func (*Cell) UnmarshalJSON

func (c *Cell) UnmarshalJSON(bytes []byte) error

func (*Cell) UnsafeModify

func (c *Cell) UnsafeModify(levelMask LevelMask, special bool)

func (*Cell) Verify

func (c *Cell) Verify(key ed25519.PublicKey, signature []byte) bool

type DictKV

type DictKV struct {
	Key   *Slice
	Value *Slice
}

type Dictionary

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

func NewDict

func NewDict(keySz uint) *Dictionary

func (*Dictionary) All deprecated

func (d *Dictionary) All() []*HashmapKV

Deprecated: use LoadAll, dict was reimplemented, so it will be parsed during this call, and it can return error now.

func (*Dictionary) AsCell

func (d *Dictionary) AsCell() *Cell

func (*Dictionary) Copy

func (d *Dictionary) Copy() *Dictionary

func (*Dictionary) Delete

func (d *Dictionary) Delete(key *Cell) error

func (*Dictionary) DeleteIntKey

func (d *Dictionary) DeleteIntKey(key *big.Int) error

func (*Dictionary) Get deprecated

func (d *Dictionary) Get(key *Cell) *Cell

Deprecated: use LoadValue

func (*Dictionary) GetByIntKey deprecated

func (d *Dictionary) GetByIntKey(key *big.Int) *Cell

Deprecated: use LoadValueByIntKey

func (*Dictionary) GetKeySize

func (d *Dictionary) GetKeySize() uint

func (*Dictionary) IsEmpty

func (d *Dictionary) IsEmpty() bool

func (*Dictionary) LoadAll

func (d *Dictionary) LoadAll() ([]DictKV, error)

func (*Dictionary) LoadValue

func (d *Dictionary) LoadValue(key *Cell) (*Slice, error)

LoadValue - searches key in the underline dict cell and returns its value

If key is not found ErrNoSuchKeyInDict will be returned

func (*Dictionary) LoadValueByIntKey

func (d *Dictionary) LoadValueByIntKey(key *big.Int) (*Slice, error)

LoadValueByIntKey - same as LoadValue, but constructs cell key from int

func (*Dictionary) LoadValueWithProof

func (d *Dictionary) LoadValueWithProof(key *Cell, skeleton *ProofSkeleton) (*Slice, *ProofSkeleton, error)

LoadValueWithProof - searches key in the underline dict cell, constructs proof path and returns leaf

If key is not found ErrNoSuchKeyInDict will be returned,
and path with proof of non-existing key will be attached to skeleton (if passed)

func (*Dictionary) MustToCell deprecated

func (d *Dictionary) MustToCell() *Cell

Deprecated: use AsCell

func (*Dictionary) Set

func (d *Dictionary) Set(key, value *Cell) error

func (*Dictionary) SetIntKey

func (d *Dictionary) SetIntKey(key *big.Int, value *Cell) error

func (*Dictionary) Size deprecated

func (d *Dictionary) Size() int

Deprecated: use IsEmpty or LoadAll and then len

func (*Dictionary) ToCell deprecated

func (d *Dictionary) ToCell() (*Cell, error)

Deprecated: use AsCell

type HashmapKV

type HashmapKV struct {
	Key   *Cell
	Value *Cell
}

type LevelMask

type LevelMask struct {
	Mask byte
}

func (LevelMask) Apply

func (m LevelMask) Apply(level int) LevelMask

func (LevelMask) GetLevel

func (m LevelMask) GetLevel() int

func (LevelMask) IsSignificant

func (m LevelMask) IsSignificant(level int) bool

type ProofSkeleton

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

func CreateProofSkeleton

func CreateProofSkeleton() *ProofSkeleton

func (*ProofSkeleton) AttachAt

func (s *ProofSkeleton) AttachAt(i int, sk *ProofSkeleton)

AttachAt - attach skeleton chain at specific ref slot

func (*ProofSkeleton) Copy

func (s *ProofSkeleton) Copy() *ProofSkeleton

func (*ProofSkeleton) Merge

func (s *ProofSkeleton) Merge(sk *ProofSkeleton)

Merge - merge 2 proof chains in a single proof tree

func (*ProofSkeleton) ProofRef

func (s *ProofSkeleton) ProofRef(i int) *ProofSkeleton

ProofRef - include ref with index i to proof

func (*ProofSkeleton) SetRecursive

func (s *ProofSkeleton) SetRecursive()

SetRecursive - include all underlying refs recursively in ordinary form to proof

type RawUnsafeCell

type RawUnsafeCell struct {
	IsSpecial bool
	LevelMask LevelMask
	BitsSz    uint
	Data      []byte

	Refs []*Cell
}

type Slice

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

func (*Slice) BitsLeft

func (c *Slice) BitsLeft() uint

func (*Slice) Copy

func (c *Slice) Copy() *Slice

func (*Slice) IsSpecial

func (c *Slice) IsSpecial() bool

func (*Slice) LoadAddr

func (c *Slice) LoadAddr() (*address.Address, error)

func (*Slice) LoadBigCoins

func (c *Slice) LoadBigCoins() (*big.Int, error)

func (*Slice) LoadBigInt

func (c *Slice) LoadBigInt(sz uint) (*big.Int, error)

func (*Slice) LoadBigUInt

func (c *Slice) LoadBigUInt(sz uint) (*big.Int, error)

func (*Slice) LoadBinarySnake

func (c *Slice) LoadBinarySnake() ([]byte, error)

func (*Slice) LoadBoolBit

func (c *Slice) LoadBoolBit() (bool, error)

func (*Slice) LoadCoins

func (c *Slice) LoadCoins() (uint64, error)

func (*Slice) LoadDict

func (c *Slice) LoadDict(keySz uint) (*Dictionary, error)

func (*Slice) LoadInt

func (c *Slice) LoadInt(sz uint) (int64, error)

func (*Slice) LoadMaybeRef

func (c *Slice) LoadMaybeRef() (*Slice, error)

func (*Slice) LoadRef

func (c *Slice) LoadRef() (*Slice, error)

func (*Slice) LoadRefCell

func (c *Slice) LoadRefCell() (*Cell, error)

func (*Slice) LoadSlice

func (c *Slice) LoadSlice(sz uint) ([]byte, error)

func (*Slice) LoadStringSnake

func (c *Slice) LoadStringSnake() (string, error)

func (*Slice) LoadUInt

func (c *Slice) LoadUInt(sz uint) (uint64, error)

func (*Slice) LoadVarUInt

func (c *Slice) LoadVarUInt(sz uint) (*big.Int, error)

func (*Slice) MustLoadAddr

func (c *Slice) MustLoadAddr() *address.Address

func (*Slice) MustLoadBigCoins

func (c *Slice) MustLoadBigCoins() *big.Int

func (*Slice) MustLoadBigUInt

func (c *Slice) MustLoadBigUInt(sz uint) *big.Int

func (*Slice) MustLoadBinarySnake

func (c *Slice) MustLoadBinarySnake() []byte

func (*Slice) MustLoadBoolBit

func (c *Slice) MustLoadBoolBit() bool

func (*Slice) MustLoadCoins

func (c *Slice) MustLoadCoins() uint64

func (*Slice) MustLoadDict

func (c *Slice) MustLoadDict(keySz uint) *Dictionary

func (*Slice) MustLoadInt

func (c *Slice) MustLoadInt(sz uint) int64

func (*Slice) MustLoadMaybeRef

func (c *Slice) MustLoadMaybeRef() *Slice

func (*Slice) MustLoadRef

func (c *Slice) MustLoadRef() *Slice

func (*Slice) MustLoadSlice

func (c *Slice) MustLoadSlice(sz uint) []byte

func (*Slice) MustLoadStringSnake

func (c *Slice) MustLoadStringSnake() string

func (*Slice) MustLoadUInt

func (c *Slice) MustLoadUInt(sz uint) uint64

func (*Slice) MustLoadVarUInt

func (c *Slice) MustLoadVarUInt(sz uint) *big.Int

func (*Slice) MustPreloadBigUInt

func (c *Slice) MustPreloadBigUInt(sz uint) *big.Int

func (*Slice) MustPreloadSlice

func (c *Slice) MustPreloadSlice(sz uint) []byte

func (*Slice) MustPreloadUInt

func (c *Slice) MustPreloadUInt(sz uint) uint64

func (*Slice) MustToCell

func (c *Slice) MustToCell() *Cell

func (*Slice) PreloadBigUInt

func (c *Slice) PreloadBigUInt(sz uint) (*big.Int, error)

func (*Slice) PreloadRef

func (c *Slice) PreloadRef() (*Slice, error)

func (*Slice) PreloadRefCell

func (c *Slice) PreloadRefCell() (*Cell, error)

func (*Slice) PreloadSlice

func (c *Slice) PreloadSlice(sz uint) ([]byte, error)

func (*Slice) PreloadUInt

func (c *Slice) PreloadUInt(sz uint) (uint64, error)

func (*Slice) RefsNum

func (c *Slice) RefsNum() int

func (*Slice) RestBits

func (c *Slice) RestBits() (uint, []byte, error)

func (*Slice) ToBuilder

func (c *Slice) ToBuilder() *Builder

func (*Slice) ToCell

func (c *Slice) ToCell() (*Cell, error)

func (*Slice) ToDict

func (c *Slice) ToDict(keySz uint) (*Dictionary, error)

type Type

type Type uint8
const (
	OrdinaryCellType     Type = 0x00
	PrunedCellType       Type = 0x01
	LibraryCellType      Type = 0x02
	MerkleProofCellType  Type = 0x03
	MerkleUpdateCellType Type = 0x04
	UnknownCellType      Type = 0xFF
)

Jump to

Keyboard shortcuts

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