github.com/ava-labs/avalanchego@v1.11.11/vms/components/avax/utxo.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package avax
     5  
     6  import (
     7  	"errors"
     8  
     9  	"github.com/ava-labs/avalanchego/vms/components/verify"
    10  )
    11  
    12  var (
    13  	errNilUTXO   = errors.New("nil utxo is not valid")
    14  	errEmptyUTXO = errors.New("empty utxo is not valid")
    15  
    16  	_ verify.Verifiable = (*UTXO)(nil)
    17  )
    18  
    19  type UTXO struct {
    20  	UTXOID `serialize:"true"`
    21  	Asset  `serialize:"true"`
    22  
    23  	Out verify.State `serialize:"true" json:"output"`
    24  }
    25  
    26  func (utxo *UTXO) Verify() error {
    27  	switch {
    28  	case utxo == nil:
    29  		return errNilUTXO
    30  	case utxo.Out == nil:
    31  		return errEmptyUTXO
    32  	default:
    33  		return verify.All(&utxo.UTXOID, &utxo.Asset, utxo.Out)
    34  	}
    35  }