github.com/MetalBlockchain/metalgo@v1.11.9/vms/example/xsvm/execute/expects_context.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package execute
     5  
     6  import (
     7  	"github.com/MetalBlockchain/metalgo/vms/example/xsvm/block"
     8  	"github.com/MetalBlockchain/metalgo/vms/example/xsvm/tx"
     9  )
    10  
    11  var _ tx.Visitor = (*TxExpectsContext)(nil)
    12  
    13  func ExpectsContext(blk *block.Stateless) (bool, error) {
    14  	t := TxExpectsContext{}
    15  	for _, tx := range blk.Txs {
    16  		if err := tx.Unsigned.Visit(&t); err != nil {
    17  			return false, err
    18  		}
    19  	}
    20  	return t.Result, nil
    21  }
    22  
    23  type TxExpectsContext struct {
    24  	Result bool
    25  }
    26  
    27  func (*TxExpectsContext) Transfer(*tx.Transfer) error {
    28  	return nil
    29  }
    30  
    31  func (*TxExpectsContext) Export(*tx.Export) error {
    32  	return nil
    33  }
    34  
    35  func (t *TxExpectsContext) Import(*tx.Import) error {
    36  	t.Result = true
    37  	return nil
    38  }