internal

package
v1.1.0-rc2 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2021 License: Apache-2.0, MIT Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const MessageVersion = uint64(0)

Variables

View Source
var AttoFil = NewInt(1)

Blocks (e)

View Source
var EmptyInt = BigInt{}
View Source
var EmptyTSK = TipSetKey{}
View Source
var EmptyTokenAmount = abi.TokenAmount{}
View Source
var ErrActorNotFound = errors.New("actor not found")
View Source
var ErrNotFound = fmt.Errorf("not found")

ErrNotFound is not the error you are looking for.

View Source
var FemtoFil = BigMul(AttoFil, NewInt(1000))
View Source
var MaxWinCount = 3 * int64(BlocksPerEpoch)
View Source
var NanoFil = BigMul(PicoFil, NewInt(1000))
View Source
var PicoFil = BigMul(FemtoFil, NewInt(1000))
View Source
var TotalFilecoinInt = FromFil(constants.FilBase)
View Source
var UndefTipSet = &TipSet{}

UndefTipSet is a singleton representing a nil or undefined tipset.

View Source
var ZeroAddress = mustParseAddress("f3yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaby2smx7a")

ZeroAddress the 'f' prefix doesn't matter

View Source
var ZeroFIL = fbig.NewInt(0)

Functions

func AssertCidsEqual

func AssertCidsEqual(t *testing.T, m cid.Cid, n cid.Cid)

AssertCidsEqual asserts that two CIDS are identical.

func AssertHaveSameCid

func AssertHaveSameCid(t *testing.T, m HasCid, n HasCid)

AssertHaveSameCid asserts that two values have identical CIDs.

func BigCmp

func BigCmp(a, b BigInt) int

func BigDivFloat

func BigDivFloat(num, den BigInt) float64

func CidArrsEqual

func CidArrsEqual(a, b []cid.Cid) bool

func CidFromString

func CidFromString(t *testing.T, input string) cid.Cid

CidFromString generates Cid from string input

func DeciStr

func DeciStr(bi BigInt) string

func MustGenerateBLSKeyInfo

func MustGenerateBLSKeyInfo(n int, seed byte) []crypto.KeyInfo

MustGenerateBLSKeyInfo produces n distinct BLS keyinfos.

func MustGenerateKeyInfo

func MustGenerateKeyInfo(n int, seed byte) []crypto.KeyInfo

MustGenerateKeyInfo generates `n` distinct keyinfos using seed `seed`. The result is deterministic (for stable tests), don't use this for real keys!

func MustGenerateMixedKeyInfo

func MustGenerateMixedKeyInfo(m int, n int) []crypto.KeyInfo

MustGenerateMixedKeyInfo produces m bls keys and n secp keys. BLS and Secp will be interleaved. The keys will be valid, but not deterministic.

func NewAttoFIL

func NewAttoFIL(x *big.Int) specsbig.Int

NewAttoFIL allocates and returns a new AttoFIL set to x.

func NewAttoFILFromFIL

func NewAttoFILFromFIL(x uint64) specsbig.Int

NewAttoFILFromFIL returns a new AttoFIL representing a quantity of attofilecoin equal to x filecoin.

func NewAttoFILFromFILString

func NewAttoFILFromFILString(s string) (specsbig.Int, bool)

NewAttoFILFromFILString allocates a new AttoFIL set to the value of s filecoin, interpreted as a decimal in base 10, and returns it and a boolean indicating success.

func NewAttoFILFromString

func NewAttoFILFromString(s string, base int) (specsbig.Int, bool)

NewAttoFILFromString allocates a new AttoFIL set to the value of s attofilecoin, interpreted in the given base, and returns it and a boolean indicating success.

func NewCidForTestGetter

func NewCidForTestGetter() func() cid.Cid

NewCidForTestGetter returns a closure that returns a Cid unique to that invocation. The Cid is unique wrt the closure returned, not globally. You can use this function in tests.

func NewForTestGetter

func NewForTestGetter() func() address.Address

NewForTestGetter returns a closure that returns an address unique to that invocation. The address is unique wrt the closure returned, not globally.

func NewGasFeeCap

func NewGasFeeCap(price int64) abi.TokenAmount

func NewGasPremium

func NewGasPremium(price int64) abi.TokenAmount

func NewMessageForTestGetter

func NewMessageForTestGetter() func() *UnsignedMessage

NewMessageForTestGetter returns a closure that returns a message unique to that invocation. The message is unique wrt the closure returned, not globally. You can use this function in tests instead of manually creating messages -- it both reduces duplication and gives us exactly one place to create valid messages for tests if messages require validation in the future.

func NewSignedMessageForTestGetter

func NewSignedMessageForTestGetter(ms MockSigner) func(uint64) *SignedMessage

NewSignedMessageForTestGetter returns a closure that returns a SignedMessage unique to that invocation. The message is unique wrt the closure returned, not globally. You can use this function in tests instead of manually creating messages -- it both reduces duplication and gives us exactly one place to create valid messages for tests if messages require validation in the future. TODO support chosing from address

func RequireIDAddress

func RequireIDAddress(t *testing.T, i int) address.Address

func ReverseFullBlock

func ReverseFullBlock(chain []*FullTipSet)

Reverse reverses the order of the slice `chain`.

func ReverseTipSet

func ReverseTipSet(chain []*TipSet)

Reverse reverses the order of the slice `chain`.

func SizeStr

func SizeStr(bi BigInt) string

Types

type Actor

type Actor struct {
	// Code is a CID of the VM code for this actor's implementation (or a constant for actors implemented in Go code).
	// Code may be nil for an uninitialized actor (which exists because it has received a balance).
	Code cid.Cid
	// Head is the CID of the root of the actor's state tree.
	Head cid.Cid
	// Nonce is the number expected on the next message from this actor.
	// Messages are processed in strict, contiguous order.
	Nonce uint64
	// Balance is the amount of attoFIL in the actor's account.
	Balance abi.TokenAmount
}

Actor is the central abstraction of entities in the system.

Both individual accounts, as well as contracts (user & system level) are represented as actors. An actor has the following core functionality implemented on a system level: - track a Filecoin balance, using the `Balance` field - execute code stored in the `Code` field - read & write memory - replay protection, using the `Nonce` field

Value sent to a non-existent address will be tracked as an empty actor that has a Balance but nil Code and Memory. You must nil check Code cids before comparing them.

More specific capabilities for individual accounts or contract specific must be implemented inside the code.

Not safe for concurrent access.

func NewActor

func NewActor(code cid.Cid, balance abi.TokenAmount, head cid.Cid) *Actor

NewActor constructs a new actor.

func (*Actor) Empty

func (t *Actor) Empty() bool

Empty tests whether the actor's code is defined.

func (*Actor) IncrementSeqNum

func (t *Actor) IncrementSeqNum()

IncrementSeqNum increments the seq number.

func (*Actor) MarshalCBOR

func (t *Actor) MarshalCBOR(w io.Writer) error

func (*Actor) UnmarshalCBOR

func (t *Actor) UnmarshalCBOR(r io.Reader) error

type BeaconEntry

type BeaconEntry struct {
	Round uint64
	Data  []byte
}

func (*BeaconEntry) MarshalCBOR

func (t *BeaconEntry) MarshalCBOR(w io.Writer) error

func (*BeaconEntry) UnmarshalCBOR

func (t *BeaconEntry) UnmarshalCBOR(r io.Reader) error

type BigInt

type BigInt = big2.Int

func BigAdd

func BigAdd(a, b BigInt) BigInt

func BigDiv

func BigDiv(a, b BigInt) BigInt

func BigFromBytes

func BigFromBytes(b []byte) BigInt

func BigFromString

func BigFromString(s string) (BigInt, error)

func BigMod

func BigMod(a, b BigInt) BigInt

func BigMul

func BigMul(a, b BigInt) BigInt

func BigSub

func BigSub(a, b BigInt) BigInt

func FromFil

func FromFil(i uint64) BigInt

func NewInt

func NewInt(i uint64) BigInt

type BlockHeader

type BlockHeader struct {
	// Miner is the address of the miner actor that mined this newBlock.
	Miner address.Address `json:"miner"`

	// Ticket is the ticket submitted with this newBlock.
	Ticket Ticket `json:"ticket"`

	// ElectionProof is the vrf proof giving this newBlock's miner authoring rights
	ElectionProof *ElectionProof `json:"electionProof"`

	// BeaconEntries contain the verifiable oracle randomness used to elect
	// this newBlock's author leader
	BeaconEntries []*BeaconEntry `json:"beaconEntries"`

	// WinPoStProof are the winning post proofs
	WinPoStProof []proof2.PoStProof `json:"winPoStProof"`

	// Parents is the set of parents this newBlock was based on. Typically one,
	// but can be several in the case where there were multiple winning ticket-
	// holders for an epoch.
	Parents TipSetKey `json:"parents"`

	// ParentWeight is the aggregate chain weight of the parent set.
	ParentWeight fbig.Int `json:"parentWeight"`

	// Height is the chain height of this newBlock.
	Height abi.ChainEpoch `json:"height"`

	// ParentStateRoot is the CID of the root of the state tree after application of the messages in the parent tipset
	// to the parent tipset's state root.
	ParentStateRoot cid.Cid `json:"parentStateRoot,omitempty"`

	// ParentMessageReceipts is a list of receipts corresponding to the application of the messages in the parent tipset
	// to the parent tipset's state root (corresponding to this newBlock's ParentStateRoot).
	ParentMessageReceipts cid.Cid `json:"parentMessageReceipts,omitempty"`

	// Messages is the set of messages included in this newBlock
	Messages cid.Cid `json:"messages,omitempty"`

	// The aggregate signature of all BLS signed messages in the newBlock
	BLSAggregate *crypto.Signature `json:"BLSAggregate"`

	// The timestamp, in seconds since the Unix epoch, at which this newBlock was created.
	Timestamp uint64 `json:"timestamp"`

	// The signature of the miner's worker key over the newBlock
	BlockSig *crypto.Signature `json:"blocksig"`

	// ForkSignaling is extra data used by miners to communicate
	ForkSignaling uint64 `json:"forkSignaling"`

	//identical for all blocks in same tipset: the base fee after executing parent tipset
	ParentBaseFee abi.TokenAmount `json:"parentBaseFee"`
	// contains filtered or unexported fields
}

BlockHeader is a newBlock in the blockchain.

func DecodeBlock

func DecodeBlock(b []byte) (*BlockHeader, error)

DecodeBlock decodes raw cbor bytes into a BlockHeader.

func (*BlockHeader) Cid

func (b *BlockHeader) Cid() cid.Cid

Cid returns the content id of this newBlock.

func (*BlockHeader) Equals

func (b *BlockHeader) Equals(other *BlockHeader) bool

Equals returns true if the BlockHeader is equal to other.

func (*BlockHeader) IsValidated

func (b *BlockHeader) IsValidated() bool

IsValidated check whether block signature is valid from memory

func (*BlockHeader) LastTicket

func (b *BlockHeader) LastTicket() *Ticket

LastTicket get ticket in block

func (*BlockHeader) MarshalCBOR

func (t *BlockHeader) MarshalCBOR(w io.Writer) error

func (*BlockHeader) Serialize

func (b *BlockHeader) Serialize() ([]byte, error)

Serialize serialize blockheader to binary

func (*BlockHeader) SetValidated

func (b *BlockHeader) SetValidated()

SetValidated set block signature is valid after checkout blocksig

func (*BlockHeader) SignatureData

func (b *BlockHeader) SignatureData() []byte

SignatureData returns the newBlock's bytes with a null signature field for signature creation and verification

func (*BlockHeader) String

func (b *BlockHeader) String() string

func (*BlockHeader) ToNode

func (b *BlockHeader) ToNode() node.Node

ToNode converts the BlockHeader to an IPLD node.

func (*BlockHeader) ToStorageBlock

func (b *BlockHeader) ToStorageBlock() (blocks.Block, error)

ToStorageBlock convert blockheader to data block with cid

func (*BlockHeader) UnmarshalCBOR

func (t *BlockHeader) UnmarshalCBOR(r io.Reader) error

type BlockMessagesInfo

type BlockMessagesInfo struct {
	BlsMessages   []ChainMsg
	SecpkMessages []ChainMsg

	Block *BlockHeader
}

BlockMessagesInfo contains messages for one newBlock in a tipset.

type BlockMsg

type BlockMsg struct {
	Header        *BlockHeader
	BlsMessages   []cid.Cid
	SecpkMessages []cid.Cid
}

func (*BlockMsg) Cid

func (bm *BlockMsg) Cid() cid.Cid

Cid return block cid

func (*BlockMsg) MarshalCBOR

func (t *BlockMsg) MarshalCBOR(w io.Writer) error

func (*BlockMsg) Serialize

func (bm *BlockMsg) Serialize() ([]byte, error)

Serialize return blockmsg binary

func (*BlockMsg) UnmarshalCBOR

func (t *BlockMsg) UnmarshalCBOR(r io.Reader) error

type ChainMsg

type ChainMsg interface {
	Cid() cid.Cid
	VMMessage() *UnsignedMessage
	ToStorageBlock() (block.Block, error)
	// FIXME: This is the *message* length, this name is misleading.
	ChainLength() int
	cbor2.Marshaler
	cbor2.Unmarshaler
}

type ElectionProof

type ElectionProof struct {
	WinCount int64

	// A proof output by running a VRF on the VRFProof of the parent ticket
	VRFProof VRFPi
}

func (*ElectionProof) ComputeWinCount

func (ep *ElectionProof) ComputeWinCount(power abi.StoragePower, totalPower abi.StoragePower) int64

ComputeWinCount uses VRFProof to compute number of wins The algorithm is based on Algorand's Sortition with Binomial distribution replaced by Poisson distribution.

func (*ElectionProof) MarshalCBOR

func (t *ElectionProof) MarshalCBOR(w io.Writer) error

func (*ElectionProof) UnmarshalCBOR

func (t *ElectionProof) UnmarshalCBOR(r io.Reader) error

type FIL

type FIL BigInt

func MustParseFIL

func MustParseFIL(s string) FIL

func ParseFIL

func ParseFIL(s string) (FIL, error)

func (FIL) Format

func (f FIL) Format(s fmt.State, ch rune)

func (FIL) MarshalText

func (f FIL) MarshalText() (text []byte, err error)

func (FIL) Nano

func (f FIL) Nano() string

func (FIL) Short

func (f FIL) Short() string

func (FIL) String

func (f FIL) String() string

func (FIL) Unitless

func (f FIL) Unitless() string

func (FIL) UnmarshalText

func (f FIL) UnmarshalText(text []byte) error

type FullBlock

type FullBlock struct {
	Header       *BlockHeader
	BLSMessages  []*UnsignedMessage
	SECPMessages []*SignedMessage
}

FullBlock carries a newBlock header and the message and receipt collections referenced from the header.

func (*FullBlock) Cid

func (fb *FullBlock) Cid() cid.Cid

Cid returns the FullBlock's header's Cid

type FullTipSet

type FullTipSet struct {
	Blocks []*FullBlock
	// contains filtered or unexported fields
}

FullTipSet is an expanded version of the TipSet that contains all the blocks and messages

func NewFullTipSet

func NewFullTipSet(blks []*FullBlock) *FullTipSet

func (*FullTipSet) Cids

func (fts *FullTipSet) Cids() []cid.Cid

func (*FullTipSet) TipSet

func (fts *FullTipSet) TipSet() *TipSet

TipSet returns a narrower view of this FullTipSet elliding the newBlock messages.

type HasCid

type HasCid interface {
	Cid() cid.Cid
}

HasCid allows two values with CIDs to be compared.

type Message

type Message = UnsignedMessage

type MessageMaker

type MessageMaker struct {
	DefaultGasFeeCap  specsbig.Int
	DefaultGasPremium specsbig.Int
	DefaultGasUnits   int64
	// contains filtered or unexported fields
}

MessageMaker creates unique, signed messages for use in tests.

func NewMessageMaker

func NewMessageMaker(t *testing.T, keys []crypto.KeyInfo) *MessageMaker

NewMessageMaker creates a new message maker with a set of signing keys.

func (*MessageMaker) Addresses

func (mm *MessageMaker) Addresses() []address.Address

Addresses returns the addresses for which this maker can sign messages.

func (*MessageMaker) NewSignedMessage

func (mm *MessageMaker) NewSignedMessage(from address.Address, nonce uint64) *SignedMessage

NewSignedMessage creates a new signed message.

func (*MessageMaker) NewUnsignedMessage

func (mm *MessageMaker) NewUnsignedMessage(from address.Address, nonce uint64) *UnsignedMessage

NewUnsignedMessage creates a new message.

func (*MessageMaker) Signer

func (mm *MessageMaker) Signer() *MockSigner

Signer returns the signer with which this maker signs messages.

type MessageReceipt

type MessageReceipt struct {
	ExitCode    exitcode.ExitCode `json:"exitCode"`
	ReturnValue []byte            `json:"return"`
	GasUsed     int64             `json:"gasUsed"`
}

MessageReceipt is what is returned by executing a message on the vm.

func EmptyReceipts

func EmptyReceipts(n int) []*MessageReceipt

EmptyReceipts returns a slice of n empty receipts.

func (*MessageReceipt) MarshalCBOR

func (t *MessageReceipt) MarshalCBOR(w io.Writer) error

func (*MessageReceipt) String

func (r *MessageReceipt) String() string

func (*MessageReceipt) UnmarshalCBOR

func (t *MessageReceipt) UnmarshalCBOR(r io.Reader) error

type MockSigner

type MockSigner struct {
	AddrKeyInfo map[address.Address]crypto.KeyInfo
	Addresses   []address.Address
	PubKeys     [][]byte
}

MockSigner implements the Signer interface

func NewMockSigner

func NewMockSigner(kis []crypto.KeyInfo) MockSigner

NewMockSigner returns a new mock signer, capable of signing data with keys (addresses derived from) in keyinfo

func NewMockSignersAndKeyInfo

func NewMockSignersAndKeyInfo(numSigners int) (MockSigner, []crypto.KeyInfo)

NewMockSignersAndKeyInfo is a convenience function to generate a mock signers with some keys.

func (MockSigner) GetAddressForPubKey

func (ms MockSigner) GetAddressForPubKey(pk []byte) (address.Address, error)

GetAddressForPubKey looks up a KeyInfo address associated with a given PublicKeyForSecpSecretKey for a MockSigner

func (MockSigner) HasAddress

func (ms MockSigner) HasAddress(_ context.Context, addr address.Address) (bool, error)

HasAddress returns whether the signer can sign with this address

func (MockSigner) SignBytes

func (ms MockSigner) SignBytes(_ context.Context, data []byte, addr address.Address) (*crypto.Signature, error)

SignBytes cryptographically signs `data` using the `addr`.

type ReceiptMaker

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

ReceiptMaker generates unique receipts

func NewReceiptMaker

func NewReceiptMaker() *ReceiptMaker

NewReceiptMaker creates a new receipt maker

func (*ReceiptMaker) NewReceipt

func (rm *ReceiptMaker) NewReceipt() MessageReceipt

NewReceipt creates a new distinct receipt.

type SignedMessage

type SignedMessage struct {
	Message   UnsignedMessage  `json:"message"`
	Signature crypto.Signature `json:"signature"`
}

SignedMessage contains a message and its signature

func NewSignedMessage

func NewSignedMessage(ctx context.Context, msg UnsignedMessage, s Signer) (*SignedMessage, error)

NewSignedMessage accepts a message `msg` and a signer `s`. NewSignedMessage returns a `SignedMessage` containing a signature derived from the serialized `msg` and `msg.From` NOTE: this method can only sign message with From being a public-key type address, not an ID address. We should deprecate this and move to more explicit signing via an address resolver.

func NewSignedMsgs

func NewSignedMsgs(n uint, ms MockSigner) []*SignedMessage

NewSignedMsgs returns n signed messages. The messages returned are unique to this invocation but are not unique globally (ie, a second call to NewSignedMsgs will return the same set of messages).

func SignMsgs

func SignMsgs(ms MockSigner, msgs []*UnsignedMessage) ([]*SignedMessage, error)

SignMsgs returns a slice of signed messages where the original messages are `msgs`, if signing one of the `msgs` fails an error is returned

func (*SignedMessage) ChainLength

func (smsg *SignedMessage) ChainLength() int

ChainLength return length of message binary

func (*SignedMessage) Cid

func (smsg *SignedMessage) Cid() cid.Cid

Cid returns the canonical CID for the SignedMessage.

func (*SignedMessage) Equals

func (smsg *SignedMessage) Equals(other *SignedMessage) bool

Equals tests whether two signed messages are equal.

func (*SignedMessage) MarshalCBOR

func (t *SignedMessage) MarshalCBOR(w io.Writer) error

func (*SignedMessage) Serialize

func (smsg *SignedMessage) Serialize() ([]byte, error)

Serialize return message binary

func (*SignedMessage) String

func (smsg *SignedMessage) String() string

String return message json string

func (*SignedMessage) ToNode

func (smsg *SignedMessage) ToNode() (ipld.Node, error)

ToNode converts the SignedMessage to an IPLD node.

func (*SignedMessage) ToStorageBlock

func (smsg *SignedMessage) ToStorageBlock() (blocks.Block, error)

ToStorageBlock return db block of message binary

func (*SignedMessage) UnmarshalCBOR

func (t *SignedMessage) UnmarshalCBOR(r io.Reader) error

func (*SignedMessage) VMMessage

func (smsg *SignedMessage) VMMessage() *UnsignedMessage

type Signer

type Signer interface {
	SignBytes(ctx context.Context, data []byte, addr address.Address) (*crypto.Signature, error)
	HasAddress(ctx context.Context, addr address.Address) (bool, error)
}

Signer signs data with a private key obtained internally from a provided address.

type Ticket

type Ticket struct {
	// A proof output by running a VRF on the VRFProof of the parent ticket
	VRFProof VRFPi
}

A Ticket is a marker of a tick of the blockchain's clock. It is the source of randomness for proofs of storage and leader election. It is generated by the miner of a newBlock using a VRF.

func (*Ticket) Compare

func (t *Ticket) Compare(o *Ticket) int

func (*Ticket) Less

func (t *Ticket) Less(o *Ticket) bool

func (*Ticket) MarshalCBOR

func (t *Ticket) MarshalCBOR(w io.Writer) error

func (*Ticket) Quality

func (t *Ticket) Quality() float64

func (Ticket) String

func (t Ticket) String() string

String returns the string representation of the VRFProof of the ticket

func (*Ticket) UnmarshalCBOR

func (t *Ticket) UnmarshalCBOR(r io.Reader) error

type TipSet

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

TipSet is a non-empty, immutable set of blocks at the same height with the same parent set. Blocks in a tipset are canonically ordered by ticket. Blocks may be iterated either via ToSlice() (which involves a shallow copy) or efficiently by index with At(). TipSet is a lightweight value type; passing by pointer is usually unnecessary.

Canonical tipset newBlock ordering does not match the order of CIDs in a TipSetKey used as a tipset "key".

func NewTipSet

func NewTipSet(blocks ...*BlockHeader) (*TipSet, error)

NewTipSet builds a new TipSet from a collection of blocks. The blocks must be distinct (different CIDs), have the same height, and same parent set.

func RequireNewTipSet

func RequireNewTipSet(t *testing.T, blks ...*BlockHeader) *TipSet

RequireNewTipSet instantiates and returns a new tipset of the given blocks and requires that the setup validation succeed.

func (*TipSet) At

func (ts *TipSet) At(i int) *BlockHeader

At returns the i'th newBlock in the tipset. An index outside the half-open range [0, Len()) will panic.

func (*TipSet) Blocks

func (ts *TipSet) Blocks() []*BlockHeader

func (*TipSet) Cids

func (ts *TipSet) Cids() []cid.Cid

func (*TipSet) Defined

func (ts *TipSet) Defined() bool

Defined checks whether the tipset is defined. Invoking any other methods on an undefined tipset will result in undefined behaviour (c.f. cid.Undef)

func (*TipSet) Equals

func (ts *TipSet) Equals(ts2 *TipSet) bool

Equals tests whether the tipset contains the same blocks as another. Equality is not tested deeply: two tipsets are considered equal if their keys (ordered newBlock CIDs) are equal.

func (*TipSet) Height

func (ts *TipSet) Height() abi.ChainEpoch

Height returns the height of a tipset.

func (*TipSet) IsChildOf

func (ts *TipSet) IsChildOf(parent *TipSet) bool

func (*TipSet) Key

func (ts *TipSet) Key() TipSetKey

Key returns a key for the tipset.

func (*TipSet) Len

func (ts *TipSet) Len() int

Len returns the number of blocks in the tipset.

func (*TipSet) MarshalJSON

func (ts *TipSet) MarshalJSON() ([]byte, error)

func (*TipSet) MinTicket

func (ts *TipSet) MinTicket() Ticket

MinTicket returns the smallest ticket of all blocks in the tipset.

func (*TipSet) MinTicketBlock

func (ts *TipSet) MinTicketBlock() *BlockHeader

func (*TipSet) MinTimestamp

func (ts *TipSet) MinTimestamp() uint64

func (*TipSet) ParentState

func (ts *TipSet) ParentState() cid.Cid

Parents returns the CIDs of the parents of the blocks in the tipset.

func (*TipSet) ParentWeight

func (ts *TipSet) ParentWeight() fbig.Int

ParentWeight returns the tipset's ParentWeight in fixed point form.

func (*TipSet) Parents

func (ts *TipSet) Parents() TipSetKey

Parents returns the CIDs of the parents of the blocks in the tipset.

func (TipSet) String

func (ts TipSet) String() string

String returns a formatted string of the CIDs in the TipSet. "{ <cid1> <cid2> <cid3> }" Note: existing callers use this as a unique key for the tipset. We should change them to use the TipSetKey explicitly

func (*TipSet) ToSlice

func (ts *TipSet) ToSlice() []*BlockHeader

ToSlice returns an ordered slice of pointers to the tipset's blocks.

func (*TipSet) UnmarshalJSON

func (ts *TipSet) UnmarshalJSON(b []byte) error

type TipSetKey

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

A TipSetKey is an immutable collection of CIDs forming a unique key for a tipset. The CIDs are assumed to be distinct and in canonical order. Two keys with the same CIDs in a different order are not considered equal. TipSetKey is a lightweight value type, and may be compared for equality with ==.

func NewTipSetKey

func NewTipSetKey(cids ...cid.Cid) TipSetKey

NewTipSetKey builds a new key from a slice of CIDs. The CIDs are assumed to be ordered correctly.

func TipSetKeyFromBytes

func TipSetKeyFromBytes(encoded []byte) (TipSetKey, error)

TipSetKeyFromBytes wraps an encoded key, validating correct decoding.

func (TipSetKey) Bytes

func (tipsetKey TipSetKey) Bytes() []byte

Bytes returns a binary representation of the key.

func (TipSetKey) Cids

func (tipsetKey TipSetKey) Cids() []cid.Cid

Cids returns a slice of the CIDs comprising this key.

func (TipSetKey) ContainsAll

func (tipsetKey TipSetKey) ContainsAll(other TipSetKey) bool

ContainsAll checks if another set is a subset of this one. We can assume that the relative order of members of one key is maintained in the other since we assume that all ids are sorted by corresponding newBlock ticket value.

func (TipSetKey) Equals

func (tipsetKey TipSetKey) Equals(other TipSetKey) bool

Equals checks whether the set contains exactly the same CIDs as another.

func (TipSetKey) Has

func (tipsetKey TipSetKey) Has(id cid.Cid) bool

Has checks whether the set contains `id`.

func (TipSetKey) IsEmpty

func (tipsetKey TipSetKey) IsEmpty() bool

func (TipSetKey) MarshalCBOR

func (tipsetKey TipSetKey) MarshalCBOR(w io.Writer) error

func (TipSetKey) MarshalJSON

func (tipsetKey TipSetKey) MarshalJSON() ([]byte, error)

func (TipSetKey) String

func (tipsetKey TipSetKey) String() string

String returns a human-readable representation of the key.

func (*TipSetKey) UnmarshalCBOR

func (tipsetKey *TipSetKey) UnmarshalCBOR(r io.Reader) error

func (*TipSetKey) UnmarshalJSON

func (tipsetKey *TipSetKey) UnmarshalJSON(b []byte) error

type TxMeta

type TxMeta struct {
	BLSRoot  cid.Cid `json:"blsRoot"`
	SecpRoot cid.Cid `json:"secpRoot"`
}

TxMeta tracks the merkleroots of both secp and bls messages separately

func (*TxMeta) Cid

func (m *TxMeta) Cid() cid.Cid

func (*TxMeta) MarshalCBOR

func (t *TxMeta) MarshalCBOR(w io.Writer) error

func (TxMeta) String

func (m TxMeta) String() string

String returns a readable printing string of TxMeta

func (*TxMeta) ToStorageBlock

func (m *TxMeta) ToStorageBlock() (block.Block, error)

func (*TxMeta) UnmarshalCBOR

func (t *TxMeta) UnmarshalCBOR(r io.Reader) error

type UnsignedMessage

type UnsignedMessage struct {
	Version uint64 `json:"version"`

	To   address.Address `json:"to"`
	From address.Address `json:"from"`
	// When receiving a message from a user account the nonce in
	// the message must match the expected nonce in the from actor.
	// This prevents replay attacks.
	Nonce uint64 `json:"nonce"`

	Value abi.TokenAmount `json:"value"`

	GasLimit   int64           `json:"gasLimit"`
	GasFeeCap  abi.TokenAmount `json:"gasFeeCap"`
	GasPremium abi.TokenAmount `json:"gasPremium"`

	Method abi.MethodNum `json:"method"`
	Params []byte        `json:"params"`
}

UnsignedMessage is an exchange of information between two actors modeled as a function call.

func DecodeMessage

func DecodeMessage(b []byte) (*UnsignedMessage, error)

func NewMeteredMessage

func NewMeteredMessage(from, to address.Address, nonce uint64, value abi.TokenAmount, method abi.MethodNum, params []byte, gasFeeCap, gasPremium abi.TokenAmount, limit int64) *UnsignedMessage

NewMeteredMessage adds gas price and gas limit to the message

func NewMsgs

func NewMsgs(n int) []*UnsignedMessage

NewMsgs returns n messages. The messages returned are unique to this invocation but are not unique globally (ie, a second call to NewMsgs will return the same set of messages).

func NewMsgsWithAddrs

func NewMsgsWithAddrs(n int, a []address.Address) []*UnsignedMessage

NewMsgsWithAddrs returns a slice of `n` messages who's `From` field's are pulled from `a`. This method should be used when the addresses returned are to be signed at a later point.

func NewUnsignedMessage

func NewUnsignedMessage(from, to address.Address, nonce uint64, value abi.TokenAmount, method abi.MethodNum, params []byte) *UnsignedMessage

NewUnsignedMessage creates a new message.

func (*UnsignedMessage) ChainLength

func (msg *UnsignedMessage) ChainLength() int

func (*UnsignedMessage) Cid

func (msg *UnsignedMessage) Cid() cid.Cid

Cid returns the canonical CID for the message. TODO: can we avoid returning an error?

func (*UnsignedMessage) EqualCall

func (msg *UnsignedMessage) EqualCall(o *Message) bool

func (*UnsignedMessage) Equals

func (msg *UnsignedMessage) Equals(other *UnsignedMessage) bool

Equals tests whether two messages are equal

func (*UnsignedMessage) MarshalCBOR

func (t *UnsignedMessage) MarshalCBOR(w io.Writer) error

func (*UnsignedMessage) RequiredFunds

func (msg *UnsignedMessage) RequiredFunds() abi.TokenAmount

func (*UnsignedMessage) Serialize

func (msg *UnsignedMessage) Serialize() ([]byte, error)

func (*UnsignedMessage) String

func (msg *UnsignedMessage) String() string

func (*UnsignedMessage) ToNode

func (msg *UnsignedMessage) ToNode() (ipld.Node, error)

ToNode converts the Message to an IPLD node.

func (*UnsignedMessage) ToStorageBlock

func (msg *UnsignedMessage) ToStorageBlock() (block.Block, error)

func (*UnsignedMessage) UnmarshalCBOR

func (t *UnsignedMessage) UnmarshalCBOR(r io.Reader) error

func (*UnsignedMessage) VMMessage

func (msg *UnsignedMessage) VMMessage() *UnsignedMessage

func (*UnsignedMessage) ValidForBlockInclusion

func (msg *UnsignedMessage) ValidForBlockInclusion(minGas int64, version network.Version) error

type VRFPi

type VRFPi []byte

VRFPi is the proof output from running a VRF.

func (VRFPi) Digest

func (p VRFPi) Digest() [32]byte

Digest returns the digest (hash) of a proof, for use generating challenges etc.

Jump to

Keyboard shortcuts

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