Documentation ¶
Index ¶
- Constants
- Variables
- func ApplyOk(t *testing.T, v *VM, from, to address.Address, value abi.TokenAmount, ...) cbor.Marshaler
- func CreateAccounts(ctx context.Context, t testing.TB, vm *VM, n int, balance abi.TokenAmount, ...) []address.Address
- func ExpectAttoFil(amount big.Int) *big.Int
- func ExpectBytes(b []byte) *objectExpectation
- func ExpectExitCode(code exitcode.ExitCode) *exitcode.ExitCode
- func ExpectObject(v cbor.Marshaler) *objectExpectation
- func GetDealState(t *testing.T, vm *VM, dealID abi.DealID) (*market.DealState, bool)
- func MinerDLInfo(t *testing.T, v *VM, minerIDAddr address.Address) *dline.Info
- func MinerPower(t *testing.T, vm *VM, minerIdAddr address.Address) miner.PowerPair
- func NextMinerDLInfo(t *testing.T, v *VM, minerIDAddr address.Address) *dline.Info
- func ParamsForInvocation(t *testing.T, vm *VM, idxs ...int) interface{}
- func PowerForMinerSector(t *testing.T, vm *VM, minerIdAddr address.Address, ...) miner.PowerPair
- func SectorDeadline(t *testing.T, v *VM, minerIDAddress address.Address, ...) (uint64, uint64)
- func ValueForInvocation(t *testing.T, vm *VM, idxs ...int) abi.TokenAmount
- type ActorImplLookup
- type CallStats
- type ChainMessage
- type ExpectInvocation
- type GasCharge
- type InternalMessage
- type Invocation
- type MessageResult
- type MethodKey
- type MinerBalances
- type NetworkStats
- type Option
- func SetCircSupply(circSupply big.Int) Option
- func SetEndStateTree(rawRoot cid.Cid, store adt.Store) Option
- func SetEpoch(e abi.ChainEpoch) Option
- func SetID(id string) Option
- func SetMessage(from, to address.Address, nonce uint64, value big.Int, method abi.MethodNum, ...) Option
- func SetNetworkVersion(nv network.Version) Option
- func SetReceipt(res MessageResult) Option
- func SetStartState(v *VM) Option
- func StartConditions(v *VM, id string) []Option
- type Pricelist
- type StateInfo0
- type StateRoot
- type StateTreeVersion
- type StatsByCall
- type StatsSource
- type VM
- func AdvanceByDeadline(t *testing.T, v *VM, minerIDAddr address.Address, ...) (*VM, *dline.Info)
- func AdvanceByDeadlineTillEpoch(t *testing.T, v *VM, minerIDAddr address.Address, e abi.ChainEpoch) (*VM, *dline.Info)
- func AdvanceByDeadlineTillIndex(t *testing.T, v *VM, minerIDAddr address.Address, i uint64) (*VM, *dline.Info)
- func AdvanceTillProvingDeadline(t *testing.T, v *VM, minerIDAddress address.Address, ...) (*dline.Info, uint64, *VM)
- func NewVM(ctx context.Context, actorImpls ActorImplLookup, store adt.Store) *VM
- func NewVMAtEpoch(ctx context.Context, actorImpls ActorImplLookup, store adt.Store, ...) (*VM, error)
- func NewVMWithSingletons(ctx context.Context, t testing.TB, bs ipldcbor.IpldBlockstore) *VM
- func (vm *VM) Abortf(errExitCode exitcode.ExitCode, msg string, args ...interface{})
- func (vm *VM) ApplyMessage(from, to address.Address, value abi.TokenAmount, method abi.MethodNum, ...) (MessageResult, error)
- func (vm *VM) GetActor(a address.Address) (*states.Actor, bool, error)
- func (vm *VM) GetActorImpls() map[cid.Cid]rt.VMActor
- func (vm *VM) GetCallStats() map[MethodKey]*CallStats
- func (vm *VM) GetCirculatingSupply() abi.TokenAmount
- func (vm *VM) GetEpoch() abi.ChainEpoch
- func (vm *VM) GetLogs() []string
- func (vm *VM) GetState(addr address.Address, out cbor.Unmarshaler) error
- func (vm *VM) GetStateTree() (*states.Tree, error)
- func (vm *VM) GetStatsSource() StatsSource
- func (vm *VM) GetTotalActorBalance() (abi.TokenAmount, error)
- func (vm *VM) Invocations() []*Invocation
- func (vm *VM) LastInvocation() *Invocation
- func (vm *VM) Log(_ rt.LogLevel, msg string, args ...interface{})
- func (vm *VM) NormalizeAddress(addr address.Address) (address.Address, bool)
- func (vm *VM) SetActorState(ctx context.Context, key address.Address, state cbor.Marshaler) error
- func (vm *VM) SetCirculatingSupply(supply abi.TokenAmount)
- func (vm *VM) SetStatsSource(s StatsSource)
- func (vm *VM) StateRoot() cid.Cid
- func (vm *VM) Store() adt.Store
- func (vm *VM) StoreReadBytes() uint64
- func (vm *VM) StoreReads() uint64
- func (vm *VM) StoreWriteBytes() uint64
- func (vm *VM) StoreWrites() uint64
- func (vm *VM) WithEpoch(epoch abi.ChainEpoch) (*VM, error)
- func (vm *VM) WithNetworkVersion(nv network.Version) (*VM, error)
Constants ¶
const CurrentStateTreeVersion = 3
const RandString = "i_am_random_____i_am_random_____"
This is set to match the test vector default randomness value. If set differently it will cause all generated conformance tests over randomness syscalls to fail. https://github.com/filecoin-project/test-vectors/blob/master/schema/schema_randomness.go#L76
Variables ¶
var EmptyObjectCid cid.Cid
var ExpectOK = &okExitCode
var FIL = big.NewInt(1e18)
var UnsealedCIDPrefix = cid.Prefix{ Version: 1, Codec: cid.FilCommitmentUnsealed, MhType: mh.POSEIDON_BLS12_381_A1_FC1, MhLength: 32, }
Prefix for testing unsealed sector CIDs (CommD).
var VerifregRoot address.Address
Functions ¶
func CreateAccounts ¶
func CreateAccounts(ctx context.Context, t testing.TB, vm *VM, n int, balance abi.TokenAmount, seed int64) []address.Address
Creates n account actors in the VM with the given balance
func ExpectAttoFil ¶
helpers to simplify pointer creation
func ExpectBytes ¶
func ExpectBytes(b []byte) *objectExpectation
func ExpectObject ¶
func GetDealState ¶
func MinerPower ¶
func NextMinerDLInfo ¶
func PowerForMinerSector ¶
func SectorDeadline ¶
func SectorDeadline(t *testing.T, v *VM, minerIDAddress address.Address, sectorNumber abi.SectorNumber) (uint64, uint64)
find the proving deadline and partition index of a miner's sector
func ValueForInvocation ¶
Types ¶
type ActorImplLookup ¶
type ActorImplLookup vm2.ActorImplLookup
type ActorImplLookup map[cid.Cid]runtime.VMActor
type CallStats ¶
startReads uint64 startWrites uint64 startReadBytes uint64 startWriteBytes uint64 }
type ChainMessage ¶
type ChainMessage 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 (*ChainMessage) MarshalCBOR ¶
func (t *ChainMessage) MarshalCBOR(w io.Writer) error
func (*ChainMessage) UnmarshalCBOR ¶
func (t *ChainMessage) UnmarshalCBOR(r io.Reader) error
type ExpectInvocation ¶
type ExpectInvocation struct { To address.Address Method abi.MethodNum // optional Exitcode exitcode.ExitCode From address.Address Value *abi.TokenAmount Params *objectExpectation Ret *objectExpectation SubInvocations []ExpectInvocation }
ExpectInvocation is a pattern for a message invocation within the VM. The To and Method fields must be supplied. Exitcode defaults to exitcode.Ok. All other field are optional, where a nil or Undef value indicates that any value will match. SubInvocations will be matched recursively.
func (ExpectInvocation) Matches ¶
func (ei ExpectInvocation) Matches(t *testing.T, invocations *Invocation)
type GasCharge ¶
type GasCharge struct { Name string Extra interface{} ComputeGas int64 StorageGas int64 VirtualCompute int64 VirtualStorage int64 }
func (GasCharge) WithVirtual ¶
type InternalMessage ¶
type InternalMessage struct {
// contains filtered or unexported fields
}
func (InternalMessage) Caller ¶
func (msg InternalMessage) Caller() address.Address
Caller implements runtime.MessageInfo.
func (InternalMessage) Receiver ¶
func (msg InternalMessage) Receiver() address.Address
Receiver implements runtime.MessageInfo.
func (InternalMessage) ValueReceived ¶
func (msg InternalMessage) ValueReceived() abi.TokenAmount
ValueReceived implements runtime.MessageInfo.
type Invocation ¶
type Invocation struct { Msg *InternalMessage Exitcode exitcode.ExitCode Ret cbor.Marshaler SubInvocations []*Invocation }
type MessageResult ¶
func RequireApplyMessage ¶
func RequireApplyMessage(t *testing.T, v *VM, from, to address.Address, value abi.TokenAmount, method abi.MethodNum, params interface{}, name string) MessageResult
type MinerBalances ¶
type MinerBalances struct { AvailableBalance abi.TokenAmount VestingBalance abi.TokenAmount InitialPledge abi.TokenAmount PreCommitDeposit abi.TokenAmount }
func GetMinerBalances ¶
func GetMinerBalances(t *testing.T, vm *VM, minerIdAddr address.Address) MinerBalances
type NetworkStats ¶
type NetworkStats struct { power.State TotalRawBytePower abi.StoragePower TotalBytesCommitted abi.StoragePower TotalQualityAdjPower abi.StoragePower TotalQABytesCommitted abi.StoragePower TotalPledgeCollateral abi.TokenAmount ThisEpochRawBytePower abi.StoragePower ThisEpochQualityAdjPower abi.StoragePower ThisEpochPledgeCollateral abi.TokenAmount MinerCount int64 MinerAboveMinPowerCount int64 ThisEpochReward abi.TokenAmount ThisEpochRewardSmoothed smoothing.FilterEstimate ThisEpochBaselinePower abi.StoragePower TotalStoragePowerReward abi.TokenAmount TotalClientLockedCollateral abi.TokenAmount TotalProviderLockedCollateral abi.TokenAmount TotalClientStorageFee abi.TokenAmount }
func GetNetworkStats ¶
func GetNetworkStats(t *testing.T, vm *VM) NetworkStats
type Option ¶
type Option func(tv *testVector) error
func SetCircSupply ¶
func SetEndStateTree ¶
func SetEpoch ¶
func SetEpoch(e abi.ChainEpoch) Option
func SetMessage ¶
func SetNetworkVersion ¶
func SetReceipt ¶
func SetReceipt(res MessageResult) Option
func SetStartState ¶
func StartConditions ¶
type Pricelist ¶
type Pricelist interface { // OnChainMessage returns the gas used for storing a message of a given size in the chain. OnChainMessage(msgSize int) GasCharge // OnChainReturnValue returns the gas used for storing the response of a message in the chain. OnChainReturnValue(dataSize int) GasCharge // OnMethodInvocation returns the gas used when invoking a method. OnMethodInvocation(value abi.TokenAmount, methodNum abi.MethodNum) GasCharge // OnIpldGet returns the gas used for storing an object OnIpldGet() GasCharge // OnIpldPut returns the gas used for storing an object OnIpldPut(dataSize int) GasCharge // OnCreateActor returns the gas used for creating an actor OnCreateActor() GasCharge // OnDeleteActor returns the gas used for deleting an actor OnDeleteActor() GasCharge OnVerifySignature(sigType crypto.SigType, planTextSize int) (GasCharge, error) OnHashing(dataSize int) GasCharge OnComputeUnsealedSectorCid(proofType abi.RegisteredSealProof, pieces []abi.PieceInfo) GasCharge OnVerifySeal(info proof.SealVerifyInfo) GasCharge OnVerifyPost(info proof.WindowPoStVerifyInfo) GasCharge OnVerifyConsensusFault() GasCharge }
type StateInfo0 ¶
type StateInfo0 struct{}
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 }
type StateTreeVersion ¶
type StateTreeVersion uint64
type StatsSource ¶
type StatsSource = vm2.StatsSource
type StatsSource interface { WriteCount() uint64 ReadCount() uint64 WriteSize() uint64 ReadSize() uint64 }
type VM ¶
type VM struct { ActorImpls ActorImplLookup // contains filtered or unexported fields }
VM is a simplified message execution framework for the purposes of testing inter-actor communication. The VM maintains actor state and can be used to simulate message validation for a single block or tipset. The VM does not track gas charges, provide working syscalls, validate message nonces and many other things that a compliant VM needs to do.
func AdvanceByDeadline ¶
func AdvanceByDeadline(t *testing.T, v *VM, minerIDAddr address.Address, predicate advanceDeadlinePredicate) (*VM, *dline.Info)
AdvanceByDeadline creates a new VM advanced to an epoch specified by the predicate while keeping the miner state upu-to-date by running a cron at the end of each deadline period.
func AdvanceByDeadlineTillEpoch ¶
func AdvanceByDeadlineTillEpoch(t *testing.T, v *VM, minerIDAddr address.Address, e abi.ChainEpoch) (*VM, *dline.Info)
Advances by deadline until e is contained within the deadline period represented by the returned deadline info. The VM returned will be set to the last deadline close, not at e.
func AdvanceByDeadlineTillIndex ¶
func AdvanceByDeadlineTillIndex(t *testing.T, v *VM, minerIDAddr address.Address, i uint64) (*VM, *dline.Info)
Advances by deadline until the deadline index matches the given index. The vm returned will be set to the close epoch of the previous deadline.
func AdvanceTillProvingDeadline ¶
func AdvanceTillProvingDeadline(t *testing.T, v *VM, minerIDAddress address.Address, sectorNumber abi.SectorNumber) (*dline.Info, uint64, *VM)
Advance to the epoch when the sector is due to be proven. Returns the deadline info for proving deadline for sector, partition index of sector, and a VM at the opening of the deadline (ready for SubmitWindowedPoSt).
func NewVMAtEpoch ¶
func NewVMAtEpoch(ctx context.Context, actorImpls ActorImplLookup, store adt.Store, stateRoot cid.Cid, epoch abi.ChainEpoch) (*VM, error)
NewVM creates a new runtime for executing messages.
func NewVMWithSingletons ¶
Creates a new VM and initializes all singleton actors plus a root verifier account.
func (*VM) ApplyMessage ¶
func (vm *VM) ApplyMessage(from, to address.Address, value abi.TokenAmount, method abi.MethodNum, params interface{}, info string) (MessageResult, error)
ApplyMessage applies the message to the current state. It returns result of message application and any internal vm errors. If test-vector environment variables are set this method generates tests-vectors as a side effect
func (*VM) GetActorImpls ¶
func (*VM) GetCirculatingSupply ¶
func (vm *VM) GetCirculatingSupply() abi.TokenAmount
Set the FIL circulating supply passed to actors through runtime
func (*VM) GetStatsSource ¶
func (vm *VM) GetStatsSource() StatsSource
func (*VM) GetTotalActorBalance ¶
func (vm *VM) GetTotalActorBalance() (abi.TokenAmount, error)
func (*VM) Invocations ¶
func (vm *VM) Invocations() []*Invocation
func (*VM) LastInvocation ¶
func (vm *VM) LastInvocation() *Invocation
func (*VM) NormalizeAddress ¶
func (*VM) SetActorState ¶
SetActorState stores the state and updates the addressed actor
func (*VM) SetCirculatingSupply ¶
func (vm *VM) SetCirculatingSupply(supply abi.TokenAmount)
Set the FIL circulating supply passed to actors through runtime
func (*VM) SetStatsSource ¶
func (vm *VM) SetStatsSource(s StatsSource)