tlb

package
v0.0.0-...-54f08f8 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AccountStatusActive   = "ACTIVE"
	AccountStatusUninit   = "UNINIT"
	AccountStatusFrozen   = "FROZEN"
	AccountStatusNonExist = "NON_EXIST"
)

Variables

This section is empty.

Functions

func LoadFromCell

func LoadFromCell(v interface{}, loader *cell.LoadCell) error

LoadFromCell automatically parses cell based on struct tags ## N - means integer with N bits, if size <= 64 it loads to uint of any size, if > 64 it loads to *big.Int ^ - loads ref and calls recursively, if field type is *cell.Cell, it loads without parsing . - calls recursively to continue load from current loader (inner struct) [^]dict N [-> array [^]] - loads dictionary with key size N, transformation '->' can be applied to convert dict to array, example: 'dict 256 -> array ^' will give you array of deserialized refs (^) of values bits N - loads bit slice N len to []byte bool - loads 1 bit boolean addr - loads ton address maybe - reads 1 bit, and loads rest if its 1, can be used in combination with others only either X Y - reads 1 bit, if its 0 - loads X, if 1 - loads Y Some tags can be combined, for example "dict 256", "maybe ^" Magic can be used to load first bits and check struct type, in tag can be specified magic number itself, in [#]HEX or [$]BIN format Example: _ Magic `tlb:"#deadbeef" _ Magic `tlb:"$1101" func LoadFromCell(v any, loader *cell.LoadCell) error { // go 1.18

Types

type AccountState

type AccountState struct {
	IsValid     bool
	Address     *address.Address
	StorageInfo StorageInfo

	AccountStorage
}

func (*AccountState) LoadFromCell

func (a *AccountState) LoadFromCell(loader *cell.LoadCell) error

type AccountStatus

type AccountStatus string

func (*AccountStatus) LoadFromCell

func (g *AccountStatus) LoadFromCell(loader *cell.LoadCell) error

type AccountStorage

type AccountStorage struct {
	Status            AccountStatus
	LastTransactionLT uint64
	Balance           *Grams
}

func (*AccountStorage) LoadFromCell

func (s *AccountStorage) LoadFromCell(loader *cell.LoadCell) error

type AllShardsInfo

type AllShardsInfo struct {
	ShardHashes *cell.Dictionary `tlb:"dict 32"`
}

type AnyMessage

type AnyMessage interface {
	Payload() *cell.Cell
	SenderAddr() *address.Address
	DestAddr() *address.Address
}

type BinTree

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

func (*BinTree) All

func (b *BinTree) All() []*cell.HashmapKV

func (*BinTree) Get

func (b *BinTree) Get(key *cell.Cell) *cell.Cell

func (*BinTree) LoadFromCell

func (b *BinTree) LoadFromCell(loader *cell.LoadCell) error

type Block

type Block struct {
	GlobalID    int32       `tlb:"## 32"`
	BlockInfo   *cell.Cell  `tlb:"^"`
	ValueFlow   *cell.Cell  `tlb:"^"`
	StateUpdate StateUpdate `tlb:"^"`
	Extra       *BlockExtra `tlb:"^"`
	// contains filtered or unexported fields
}

type BlockExtra

type BlockExtra struct {
	InMsgDesc          *cell.Cell    `tlb:"^"`
	OutMsgDesc         *cell.Cell    `tlb:"^"`
	ShardAccountBlocks *cell.Cell    `tlb:"^"`
	RandSeed           []byte        `tlb:"bits 256"`
	CreatedBy          []byte        `tlb:"bits 256"`
	Custom             *McBlockExtra `tlb:"maybe ^"`
}

type BlockInfo

type BlockInfo struct {
	Workchain int32
	Shard     uint64
	SeqNo     uint32
	RootHash  []byte
	FileHash  []byte
}

func (*BlockInfo) Load

func (b *BlockInfo) Load(data []byte) ([]byte, error)

func (*BlockInfo) Serialize

func (b *BlockInfo) Serialize() []byte

type CurrencyCollection

type CurrencyCollection struct {
	Coins           *Grams           `tlb:"."`
	ExtraCurrencies *cell.Dictionary `tlb:"dict 32"`
}

type DepthBalanceInfo

type DepthBalanceInfo struct {
	Depth      uint32             `tlb:"## 5"`
	Currencies CurrencyCollection `tlb:"."`
}

type ExternalMessageIn

type ExternalMessageIn struct {
	SrcAddr   *address.Address `tlb:"addr"`
	DstAddr   *address.Address `tlb:"addr"`
	ImportFee *Grams           `tlb:"."`

	StateInit *StateInit `tlb:"maybe either . ^"`
	Body      *cell.Cell `tlb:"either . ^"`
	// contains filtered or unexported fields
}

func (*ExternalMessageIn) DestAddr

func (m *ExternalMessageIn) DestAddr() *address.Address

func (*ExternalMessageIn) Payload

func (m *ExternalMessageIn) Payload() *cell.Cell

func (*ExternalMessageIn) SenderAddr

func (m *ExternalMessageIn) SenderAddr() *address.Address

type ExternalMessageOut

type ExternalMessageOut struct {
	SrcAddr   *address.Address `tlb:"addr"`
	DstAddr   *address.Address `tlb:"addr"`
	CreatedLT uint64           `tlb:"## 64"`
	CreatedAt uint32           `tlb:"## 32"`

	StateInit *StateInit `tlb:"maybe either . ^"`
	Body      *cell.Cell `tlb:"either . ^"`
	// contains filtered or unexported fields
}

func (*ExternalMessageOut) DestAddr

func (m *ExternalMessageOut) DestAddr() *address.Address

func (*ExternalMessageOut) Payload

func (m *ExternalMessageOut) Payload() *cell.Cell

func (*ExternalMessageOut) SenderAddr

func (m *ExternalMessageOut) SenderAddr() *address.Address

type Grams

type Grams big.Int

func FromNanoTON

func FromNanoTON(val *big.Int) *Grams

func FromNanoTONU

func FromNanoTONU(val uint64) *Grams

func FromTON

func FromTON(val string) (*Grams, error)

func MustFromTON

func MustFromTON(val string) *Grams

func (*Grams) FromNanoTON

func (g *Grams) FromNanoTON(val *big.Int) *Grams

func (*Grams) LoadFromCell

func (g *Grams) LoadFromCell(loader *cell.LoadCell) error

func (*Grams) MarshalJSON

func (g *Grams) MarshalJSON() ([]byte, error)

func (Grams) NanoTON

func (g Grams) NanoTON() *big.Int

func (*Grams) String

func (g *Grams) String() string

func (Grams) TON

func (g Grams) TON() string

type InternalMessage

type InternalMessage struct {
	IHRDisabled     bool             `tlb:"bool"`
	Bounce          bool             `tlb:"bool"`
	Bounced         bool             `tlb:"bool"`
	SrcAddr         *address.Address `tlb:"addr"`
	DstAddr         *address.Address `tlb:"addr"`
	Amount          *Grams           `tlb:"."`
	ExtraCurrencies *cell.Dictionary `tlb:"dict 32"`
	IHRFee          *Grams           `tlb:"."`
	FwdFee          *Grams           `tlb:"."`
	CreatedLT       uint64           `tlb:"## 64"`
	CreatedAt       uint32           `tlb:"## 32"`

	StateInit *StateInit `tlb:"maybe either . ^"`
	Body      *cell.Cell `tlb:"either . ^"`
	// contains filtered or unexported fields
}

func (*InternalMessage) Comment

func (m *InternalMessage) Comment() string

func (*InternalMessage) DestAddr

func (m *InternalMessage) DestAddr() *address.Address

func (*InternalMessage) Dump

func (m *InternalMessage) Dump() string

func (*InternalMessage) Payload

func (m *InternalMessage) Payload() *cell.Cell

func (*InternalMessage) SenderAddr

func (m *InternalMessage) SenderAddr() *address.Address

func (*InternalMessage) ToCell

func (m *InternalMessage) ToCell() (*cell.Cell, error)

type Magic

type Magic struct{}

type McBlockExtra

type McBlockExtra struct {
	KeyBlock    uint8            `tlb:"## 1"`
	ShardHashes *cell.Dictionary `tlb:"dict 32"`
	ShardFees   *cell.Dictionary `tlb:"dict 96"`
	// contains filtered or unexported fields
}

type Message

type Message struct {
	MsgType MsgType
	Msg     AnyMessage
}

func (*Message) AsExternalIn

func (m *Message) AsExternalIn() *ExternalMessageIn

func (*Message) AsExternalOut

func (m *Message) AsExternalOut() *ExternalMessageOut

func (*Message) AsInternal

func (m *Message) AsInternal() *InternalMessage

func (*Message) LoadFromCell

func (m *Message) LoadFromCell(loader *cell.LoadCell) error

type MsgType

type MsgType string
const (
	MsgTypeInternal    MsgType = "INTERNAL"
	MsgTypeExternalIn  MsgType = "EXTERNAL_IN"
	MsgTypeExternalOut MsgType = "EXTERNAL_OUT"
)

type ShardDesc

type ShardDesc struct {
	SeqNo              uint32 `tlb:"## 32"`
	RegMcSeqno         uint32 `tlb:"## 32"`
	StartLT            uint64 `tlb:"## 64"`
	EndLT              uint64 `tlb:"## 64"`
	RootHash           []byte `tlb:"bits 256"`
	FileHash           []byte `tlb:"bits 256"`
	BeforeSplit        bool   `tlb:"bool"`
	BeforeMerge        bool   `tlb:"bool"`
	WantSplit          bool   `tlb:"bool"`
	WantMerge          bool   `tlb:"bool"`
	NXCCUpdated        bool   `tlb:"bool"`
	Flags              uint8  `tlb:"## 3"`
	NextCatchainSeqNo  uint32 `tlb:"## 32"`
	NextValidatorShard uint64 `tlb:"## 64"`
	MinRefMcSeqNo      uint32 `tlb:"## 32"`
	GenUTime           uint32 `tlb:"## 32"`
	// contains filtered or unexported fields
}

type ShardIdent

type ShardIdent struct {
	PrefixBits  int8   `tlb:"## 6"`
	WorkchainID int32  `tlb:"## 32"`
	ShardPrefix uint64 `tlb:"## 64"`
}

type ShardState

type ShardState struct {
	GlobalID        int32      `tlb:"## 32"`
	ShardIdent      ShardIdent `tlb:"."`
	Seqno           uint32     `tlb:"## 32"`
	OutMsgQueueInfo *cell.Cell `tlb:"^"`
	Accounts        struct {
		ShardAccounts *cell.Dictionary `tlb:"dict 256"`
	} `tlb:"^"`
	// contains filtered or unexported fields
}

type StateInit

type StateInit struct {
	Depth    *uint64          `tlb:"maybe ## 5"`
	TickTock *TickTock        `tlb:"maybe ^"`
	Data     *cell.Cell       `tlb:"maybe ^"`
	Code     *cell.Cell       `tlb:"maybe ^"`
	Lib      *cell.Dictionary `tlb:"dict 256"`
}

func (*StateInit) ToCell

func (m *StateInit) ToCell() (*cell.Cell, error)

type StateUpdate

type StateUpdate struct {
	Old ShardState `tlb:"^"`
	New ShardState `tlb:"^"`
}

type StorageInfo

type StorageInfo struct {
	StorageUsed StorageUsed
	LastPaid    uint32
	DuePayment  *big.Int
}

func (*StorageInfo) LoadFromCell

func (s *StorageInfo) LoadFromCell(loader *cell.LoadCell) error

type StorageUsed

type StorageUsed struct {
	BitsUsed        uint64
	CellsUsed       uint64
	PublicCellsUsed uint64
}

func (*StorageUsed) LoadFromCell

func (s *StorageUsed) LoadFromCell(loader *cell.LoadCell) error

type TickTock

type TickTock struct {
	Tick bool `tlb:"bool"`
	Tock bool `tlb:"bool"`
}

type Transaction

type Transaction struct {
	AccountAddr []byte        `tlb:"bits 256"`
	LT          uint64        `tlb:"## 64"`
	PrevTxHash  []byte        `tlb:"bits 256"`
	PrevTxLT    uint64        `tlb:"## 64"`
	Now         uint32        `tlb:"## 32"`
	OutMsgCount uint16        `tlb:"## 15"`
	OrigStatus  AccountStatus `tlb:"."`
	EndStatus   AccountStatus `tlb:"."`
	IO          struct {
		In  *Message   `tlb:"maybe ^"`
		Out []*Message `tlb:"dict 15 -> array ^"`
	} `tlb:"^"`
	TotalFees   CurrencyCollection `tlb:"."`
	StateUpdate *cell.Cell         `tlb:"^"`
	Description *cell.Cell         `tlb:"^"`
	// contains filtered or unexported fields
}

func (*Transaction) Dump

func (t *Transaction) Dump() string

func (*Transaction) String

func (t *Transaction) String() string

type TransactionID

type TransactionID struct {
	LT        uint64
	Hash      []byte
	AccountID []byte
}

Jump to

Keyboard shortcuts

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