github.com/Bytom/bytom@v1.1.2-0.20210127130405-ae40204c0b09/protocol/vm/context.go (about)

     1  package vm
     2  
     3  // Context contains the execution context for the virtual machine.
     4  //
     5  // Most fields are pointers and are not required to be present in all
     6  // cases. A nil pointer means the value is absent in that context. If
     7  // an opcode executes that requires an absent field to be present, it
     8  // will return ErrContext.
     9  //
    10  // By convention, variables of this type have the name context, _not_
    11  // ctx (to avoid confusion with context.Context).
    12  type Context struct {
    13  	VMVersion uint64
    14  	Code      []byte
    15  	Arguments [][]byte
    16  
    17  	EntryID []byte
    18  
    19  	// TxVersion must be present when verifying transaction components
    20  	// (such as spends and issuances).
    21  	TxVersion   *uint64
    22  	BlockHeight *uint64
    23  
    24  	// Fields below this point are required by particular opcodes when
    25  	// verifying transaction components.
    26  
    27  	NumResults    *uint64
    28  	AssetID       *[]byte
    29  	Amount        *uint64
    30  	DestPos       *uint64
    31  	SpentOutputID *[]byte
    32  
    33  	TxSigHash   func() []byte
    34  	CheckOutput func(index uint64, amount uint64, assetID []byte, vmVersion uint64, code []byte, expansion bool) (bool, error)
    35  }