Documentation

Index

Constants

View Source
const BigIntMaxSerializedLen = 128 // is this big enough? or too big?
View Source
const MessageVersion = 0
View Source
const TestGasLimit = 100e6

Variables

View Source
var (
	ErrKeyInfoNotFound = fmt.Errorf("key info not found")
	ErrKeyExists       = fmt.Errorf("key already exists")
)
View Source
var EmptyInt = BigInt{}
View Source
var EmptyTSK = TipSetKey{}
View Source
var ErrActorNotFound = errors.New("actor not found")
View Source
var MaxWinCount = 3 * int64(build.BlocksPerEpoch)
View Source
var TotalFilecoinInt = FromFil(build.FilBase)

Functions

func BigCmp

func BigCmp(a, b BigInt) int

func CidArrsContains

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

func CidArrsEqual

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

func CidArrsSubset

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

func DeciStr

func DeciStr(bi BigInt) string

func IsTicketWinner

func IsTicketWinner(vrfTicket []byte, mypow BigInt, totpow BigInt) bool

func SizeStr

func SizeStr(bi BigInt) string

Types

type Actor

type Actor struct {
	// Identifies the type of actor (string coded as a CID), see `chain/actors/actors.go`.
	Code    cid.Cid
	Head    cid.Cid
	Nonce   uint64
	Balance BigInt
}

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 NewBeaconEntry

func NewBeaconEntry(round uint64, data []byte) BeaconEntry

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                 address.Address    // 0 unique per block/miner
	Ticket                *Ticket            // 1 unique per block/miner: should be a valid VRF
	ElectionProof         *ElectionProof     // 2 unique per block/miner: should be a valid VRF
	BeaconEntries         []BeaconEntry      // 3 identical for all blocks in same tipset
	WinPoStProof          []proof2.PoStProof // 4 unique per block/miner
	Parents               []cid.Cid          // 5 identical for all blocks in same tipset
	ParentWeight          BigInt             // 6 identical for all blocks in same tipset
	Height                abi.ChainEpoch     // 7 identical for all blocks in same tipset
	ParentStateRoot       cid.Cid            // 8 identical for all blocks in same tipset
	ParentMessageReceipts cid.Cid            // 9 identical for all blocks in same tipset
	Messages              cid.Cid            // 10 unique per block
	BLSAggregate          *crypto.Signature  // 11 unique per block: aggrregate of BLS messages from above
	Timestamp             uint64             // 12 identical for all blocks in same tipset / hard-tied to the value of Height above
	BlockSig              *crypto.Signature  // 13 unique per block/miner: miner signature
	ForkSignaling         uint64             // 14 currently unused/undefined
	ParentBaseFee         abi.TokenAmount    // 15 identical for all blocks in same tipset: the base fee after executing parent tipset
	// contains filtered or unexported fields
}

func DecodeBlock

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

func (*BlockHeader) Cid

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

func (*BlockHeader) IsValidated

func (blk *BlockHeader) IsValidated() bool

func (*BlockHeader) LastTicket

func (blk *BlockHeader) LastTicket() *Ticket

func (*BlockHeader) MarshalCBOR

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

func (*BlockHeader) Serialize

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

func (*BlockHeader) SetValidated

func (blk *BlockHeader) SetValidated()

func (*BlockHeader) SigningBytes

func (blk *BlockHeader) SigningBytes() ([]byte, error)

func (*BlockHeader) ToStorageBlock

func (blk *BlockHeader) ToStorageBlock() (block.Block, error)

func (*BlockHeader) UnmarshalCBOR

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

type BlockMsg

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

func DecodeBlockMsg

func DecodeBlockMsg(b []byte) (*BlockMsg, error)

func (*BlockMsg) Cid

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

func (*BlockMsg) MarshalCBOR

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

func (*BlockMsg) Serialize

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

func (*BlockMsg) UnmarshalCBOR

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

type ChainMsg

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

type ElectionProof

type ElectionProof struct {
	WinCount int64
	VRFProof []byte
}

func (*ElectionProof) ComputeWinCount

func (ep *ElectionProof) ComputeWinCount(power BigInt, totalPower BigInt) 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 ExecutionTrace

    type ExecutionTrace struct {
    	Msg        *Message
    	MsgRct     *MessageReceipt
    	Error      string
    	Duration   time.Duration
    	GasCharges []*GasTrace
    
    	Subcalls []ExecutionTrace
    }

    type ExpTipSet

    type ExpTipSet struct {
    	Cids   []cid.Cid
    	Blocks []*BlockHeader
    	Height abi.ChainEpoch
    }

    func (*ExpTipSet) MarshalCBOR

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

    func (*ExpTipSet) UnmarshalCBOR

    func (t *ExpTipSet) 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) 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   []*Message
    	SecpkMessages []*SignedMessage
    }

    func (*FullBlock) Cid

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

    type GasTrace

    type GasTrace struct {
    	Name string
    
    	Location          []Loc `json:"loc"`
    	TotalGas          int64 `json:"tg"`
    	ComputeGas        int64 `json:"cg"`
    	StorageGas        int64 `json:"sg"`
    	TotalVirtualGas   int64 `json:"vtg"`
    	VirtualComputeGas int64 `json:"vcg"`
    	VirtualStorageGas int64 `json:"vsg"`
    
    	TimeTaken time.Duration `json:"tt"`
    	Extra     interface{}   `json:"ex,omitempty"`
    
    	Callers []uintptr `json:"-"`
    }

    func (*GasTrace) MarshalJSON

    func (gt *GasTrace) MarshalJSON() ([]byte, error)

    type KeyInfo

    type KeyInfo struct {
    	Type       KeyType
    	PrivateKey []byte
    }

      KeyInfo is used for storing keys in KeyStore

      type KeyStore

      type KeyStore interface {
      	// List lists all the keys stored in the KeyStore
      	List() ([]string, error)
      	// Get gets a key out of keystore and returns KeyInfo corresponding to named key
      	Get(string) (KeyInfo, error)
      	// Put saves a key info under given name
      	Put(string, KeyInfo) error
      	// Delete removes a key from keystore
      	Delete(string) error
      }

        KeyStore is used for storing secret keys

        type KeyType

        type KeyType string

          KeyType defines a type of a key

          const (
          	KTBLS             KeyType = "bls"
          	KTSecp256k1       KeyType = "secp256k1"
          	KTSecp256k1Ledger KeyType = "secp256k1-ledger"
          )

          func (*KeyType) UnmarshalJSON

          func (kt *KeyType) UnmarshalJSON(bb []byte) error

          type Loc

          type Loc struct {
          	File     string
          	Line     int
          	Function string
          }

          func (Loc) Important

          func (l Loc) Important() bool

          func (Loc) Show

          func (l Loc) Show() bool

          func (Loc) String

          func (l Loc) String() string

          type LogCids

          type LogCids []cid.Cid

          func (LogCids) MarshalLogArray

          func (cids LogCids) MarshalLogArray(ae zapcore.ArrayEncoder) error

          type Message

          type Message struct {
          	Version uint64
          
          	To   address.Address
          	From address.Address
          
          	Nonce uint64
          
          	Value abi.TokenAmount
          
          	GasLimit   int64
          	GasFeeCap  abi.TokenAmount
          	GasPremium abi.TokenAmount
          
          	Method abi.MethodNum
          	Params []byte
          }

          func DecodeMessage

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

          func (*Message) Caller

          func (m *Message) Caller() address.Address

          func (*Message) ChainLength

          func (m *Message) ChainLength() int

          func (*Message) Cid

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

          func (*Message) EqualCall

          func (m *Message) EqualCall(o *Message) bool

          func (*Message) Equals

          func (m *Message) Equals(o *Message) bool

          func (*Message) MarshalCBOR

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

          func (*Message) MarshalJSON

          func (m *Message) MarshalJSON() ([]byte, error)

          func (*Message) Receiver

          func (m *Message) Receiver() address.Address

          func (*Message) RequiredFunds

          func (m *Message) RequiredFunds() BigInt

          func (*Message) Serialize

          func (m *Message) Serialize() ([]byte, error)

          func (*Message) ToStorageBlock

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

          func (*Message) UnmarshalCBOR

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

          func (*Message) VMMessage

          func (m *Message) VMMessage() *Message

          func (*Message) ValidForBlockInclusion

          func (m *Message) ValidForBlockInclusion(minGas int64, version network.Version) error

          func (*Message) ValueReceived

          func (m *Message) ValueReceived() abi.TokenAmount

          type MessageReceipt

          type MessageReceipt struct {
          	ExitCode exitcode.ExitCode
          	Return   []byte
          	GasUsed  int64
          }

          func (*MessageReceipt) Equals

          func (mr *MessageReceipt) Equals(o *MessageReceipt) bool

          func (*MessageReceipt) MarshalCBOR

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

          func (*MessageReceipt) UnmarshalCBOR

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

          type MpoolConfig

          type MpoolConfig struct {
          	PriorityAddrs          []address.Address
          	SizeLimitHigh          int
          	SizeLimitLow           int
          	ReplaceByFeeRatio      float64
          	PruneCooldown          time.Duration
          	GasLimitOverestimation float64
          }

          func (*MpoolConfig) Clone

          func (mc *MpoolConfig) Clone() *MpoolConfig

          type MsgMeta

          type MsgMeta struct {
          	BlsMessages   cid.Cid
          	SecpkMessages cid.Cid
          }

          func (*MsgMeta) Cid

          func (mm *MsgMeta) Cid() cid.Cid

          func (*MsgMeta) MarshalCBOR

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

          func (*MsgMeta) ToStorageBlock

          func (mm *MsgMeta) ToStorageBlock() (block.Block, error)

          func (*MsgMeta) UnmarshalCBOR

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

          type RawMessage

          type RawMessage Message

          type RawSignedMessage

          type RawSignedMessage SignedMessage

          type SignedMessage

          type SignedMessage struct {
          	Message   Message
          	Signature crypto.Signature
          }

          func DecodeSignedMessage

          func DecodeSignedMessage(data []byte) (*SignedMessage, error)

          func (*SignedMessage) ChainLength

          func (sm *SignedMessage) ChainLength() int

          func (*SignedMessage) Cid

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

          func (*SignedMessage) MarshalCBOR

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

          func (*SignedMessage) MarshalJSON

          func (sm *SignedMessage) MarshalJSON() ([]byte, error)

          func (*SignedMessage) Serialize

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

          func (*SignedMessage) Size

          func (sm *SignedMessage) Size() int

          func (*SignedMessage) ToStorageBlock

          func (sm *SignedMessage) ToStorageBlock() (block.Block, error)

          func (*SignedMessage) UnmarshalCBOR

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

          func (*SignedMessage) VMMessage

          func (sm *SignedMessage) VMMessage() *Message

          type StateInfo0

          type StateInfo0 struct{}

            TODO: version this.

            func (*StateInfo0) MarshalCBOR

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

            func (*StateInfo0) UnmarshalCBOR

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

            type StateRoot

            type StateRoot struct {
            	// State tree version.
            	Version StateTreeVersion
            	// Actors tree. The structure depends on the state root version.
            	Actors cid.Cid
            	// Info. The structure depends on the state root version.
            	Info cid.Cid
            }

            func (*StateRoot) MarshalCBOR

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

            func (*StateRoot) UnmarshalCBOR

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

            type StateTree

            type StateTree interface {
            	SetActor(addr address.Address, act *Actor) error
            	// GetActor returns the actor from any type of `addr` provided.
            	GetActor(addr address.Address) (*Actor, error)
            }

            type StateTreeVersion

            type StateTreeVersion uint64

              StateTreeVersion is the version of the state tree itself, independent of the network version or the actors version.

              const (
              	// StateTreeVersion0 corresponds to actors < v2.
              	StateTreeVersion0 StateTreeVersion = iota
              	// StateTreeVersion1 corresponds to actors v2
              	StateTreeVersion1
              	// StateTreeVersion2 corresponds to actors v3.
              	StateTreeVersion2
              	// StateTreeVersion3 corresponds to actors >= v4.
              	StateTreeVersion3
              )

              type Storage

              type Storage interface {
              	Put(cbg.CBORMarshaler) (cid.Cid, aerrors.ActorError)
              	Get(cid.Cid, cbg.CBORUnmarshaler) aerrors.ActorError
              
              	GetHead() cid.Cid
              
              	// Commit sets the new head of the actors state as long as the current
              	// state matches 'oldh'
              	Commit(oldh cid.Cid, newh cid.Cid) aerrors.ActorError
              }

              type Ticket

              type Ticket struct {
              	VRFProof []byte
              }

              func (*Ticket) Equals

              func (t *Ticket) Equals(ot *Ticket) bool

              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) UnmarshalCBOR

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

              type TipSet

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

              func NewTipSet

              func NewTipSet(blks []*BlockHeader) (*TipSet, error)

                Checks: * A tipset is composed of at least one block. (Because of our variable

                number of blocks per tipset, determined by randomness, we do not impose
                an upper limit.)
                

                * All blocks have the same height. * All blocks have the same parents (same number of them and matching CIDs).

                func (*TipSet) Blocks

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

                func (*TipSet) Cids

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

                func (*TipSet) Contains

                func (ts *TipSet) Contains(oc cid.Cid) bool

                func (*TipSet) Equals

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

                func (*TipSet) Height

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

                func (*TipSet) IsChildOf

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

                func (*TipSet) Key

                func (ts *TipSet) Key() TipSetKey

                func (*TipSet) MarshalCBOR

                func (ts *TipSet) MarshalCBOR(w io.Writer) error

                func (*TipSet) MarshalJSON

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

                func (*TipSet) MinTicket

                func (ts *TipSet) MinTicket() *Ticket

                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

                func (*TipSet) ParentWeight

                func (ts *TipSet) ParentWeight() BigInt

                func (*TipSet) Parents

                func (ts *TipSet) Parents() TipSetKey

                func (*TipSet) String

                func (ts *TipSet) String() string

                func (*TipSet) UnmarshalCBOR

                func (ts *TipSet) UnmarshalCBOR(r io.Reader) error

                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 (k TipSetKey) Bytes() []byte

                        Bytes() returns a binary representation of the key.

                        func (TipSetKey) Cids

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

                          Cids returns a slice of the CIDs comprising this key.

                          func (TipSetKey) IsEmpty

                          func (k TipSetKey) IsEmpty() bool

                          func (TipSetKey) MarshalJSON

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

                          func (TipSetKey) String

                          func (k TipSetKey) String() string

                            String() returns a human-readable representation of the key.

                            func (*TipSetKey) UnmarshalJSON

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

                            Directories

                            Path Synopsis