package main import "bytes" // TXOutput represents a transaction output type TXOutput struct { Value int PubKeyHash []byte } // newTXOutput creates a new output transaction func NewTXOutput(value int, address string) *TXOutput { txo := &TXOutput{value, nil} txo.Lock([]byte(address)) return txo } // Lock signs the output func (out *TXOutput) Lock(address []byte) { pubKeyHash := Base58Decode(address) pubKeyHash = pubKeyHash[1 : len(pubKeyHash)-4] out.PubKeyHash = pubKeyHash } // IsLockedWithKey checks if the output can be used by the owner of the pubkey func (out *TXOutput) IsLockedWithKey(pubKeyHash []byte) bool { return bytes.Compare(out.PubKeyHash, pubKeyHash) == 0 }