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