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 }