30 lines
686 B
Go
30 lines
686 B
Go
package main
|
|
|
|
import "bytes"
|
|
|
|
// TXOutput represents a transaction output
|
|
type TXOutput struct {
|
|
Value int
|
|
PubKeyHash []byte
|
|
}
|
|
|
|
// 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
|
|
}
|
|
|
|
// NewTXOutput create a new TXOutput
|
|
func NewTXOutput(value int, address string) *TXOutput {
|
|
txo := &TXOutput{value, nil}
|
|
txo.Lock([]byte(address))
|
|
|
|
return txo
|
|
}
|