dcrd/txscript/stdscript/example_test.go
Dave Collins 7d97fd5ff8
stdscript: Move from internal/staging to txscript.
This moves the new stdscript package from the internal staging area to
the txscript module and updates the relevant paths and package README.md
accordingly.
2021-11-18 12:29:53 -06:00

74 lines
2.6 KiB
Go

// Copyright (c) 2021 The Decred developers
// Use of this source code is governed by an ISC
// license that can be found in the LICENSE file.
package stdscript_test
import (
"encoding/hex"
"fmt"
"github.com/decred/dcrd/txscript/v4/stdscript"
)
// hexToBytes converts the passed hex string into bytes and will panic if there
// is an error. This is only provided for the hard-coded constants so errors in
// the source code can be detected. It will only (and must only) be called with
// hard-coded values.
func hexToBytes(s string) []byte {
b, err := hex.DecodeString(s)
if err != nil {
panic("invalid hex in source file: " + s)
}
return b
}
// This example demonstrates determining the type of a script for a given
// scripting language version.
func ExampleDetermineScriptType() {
// Ordinarily the script version and script would be obtained from the
// output of a transaction, but they are hard coded here for the purposes of
// this example.
const scriptVersion = 0
script := hexToBytes("76a914e280cb6e66b96679aec288b1fbdbd4db08077a1b88ac")
scriptType := stdscript.DetermineScriptType(scriptVersion, script)
switch scriptType {
case stdscript.STPubKeyHashEcdsaSecp256k1:
fmt.Printf("standard version %d %v script\n", scriptVersion, scriptType)
default:
fmt.Printf("other script type: %v\n", scriptType)
}
// Output:
// standard version 0 pubkeyhash script
}
// This example demonstrates extracting a public key hash from a standard
// pay-to-pubkey-hash script for scripting language version 0.
func ExampleExtractPubKeyHashV0() {
// Ordinarily the script version and script would be obtained from the
// output of a transaction, but the version is assumed to be zero and the
// script is hard coded here for the purposes of this example.
script := hexToBytes("76a914e280cb6e66b96679aec288b1fbdbd4db08077a1b88ac")
pkHash := stdscript.ExtractPubKeyHashV0(script)
fmt.Printf("public key hash: %x\n", pkHash)
// Output:
// public key hash: e280cb6e66b96679aec288b1fbdbd4db08077a1b
}
// This example demonstrates extracting a script hash from a standard
// pay-to-script-hash script for script language version 0.
func ExampleExtractScriptHashV0() {
// Ordinarily the script version and script would be obtained from the
// output of a transaction, but the version is assumed to be zero and the
// script is hard coded here for the purposes of this example.
script := hexToBytes("a914433ec2ac1ffa1b7b7d027f564529c57197f9ae8887")
scriptHash := stdscript.ExtractScriptHashV0(script)
fmt.Printf("script hash: %x\n", scriptHash)
// Output:
// script hash: 433ec2ac1ffa1b7b7d027f564529c57197f9ae88
}