mirror of
https://github.com/FlipsideCrypto/dcrd.git
synced 2026-02-06 10:56:47 +00:00
txscript: Use dcrutil/v2.
This udpates the txscript module to use v2 of the dcrutil module and v2 of the chaincfg module since dcrutil/v2 requires it. While here, it also modifies the signing functions to accept the new dcrutil.AddressParams instead of a pointer to a chaincfg.Params struct in order to remove the tight coupling between txscript and chaincfg at the API boundary. It also updates the tests accordingly.
This commit is contained in:
parent
ae32a34020
commit
1e34495ddb
@ -10,7 +10,6 @@ import (
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg"
|
||||
"github.com/decred/dcrd/wire"
|
||||
)
|
||||
|
||||
@ -562,7 +561,7 @@ func BenchmarkExtractPkScriptAddrsLarge(b *testing.B) {
|
||||
}
|
||||
|
||||
const scriptVersion = 0
|
||||
params := &chaincfg.MainNetParams
|
||||
params := mainNetParams
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, _, _, err := ExtractPkScriptAddrs(scriptVersion, script, params)
|
||||
@ -580,7 +579,7 @@ func BenchmarkExtractPkScriptAddrs(b *testing.B) {
|
||||
"EQUAL")
|
||||
|
||||
const scriptVersion = 0
|
||||
params := &chaincfg.MainNetParams
|
||||
params := mainNetParams
|
||||
b.ResetTimer()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_, _, _, err := ExtractPkScriptAddrs(scriptVersion, script, params)
|
||||
|
||||
@ -9,12 +9,12 @@ import (
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg"
|
||||
"github.com/decred/dcrd/chaincfg/chainec"
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/chaincfg/v2"
|
||||
"github.com/decred/dcrd/chaincfg/v2/chainec"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1"
|
||||
"github.com/decred/dcrd/dcrutil"
|
||||
"github.com/decred/dcrd/dcrutil/v2"
|
||||
"github.com/decred/dcrd/txscript"
|
||||
"github.com/decred/dcrd/wire"
|
||||
)
|
||||
@ -27,8 +27,9 @@ func ExamplePayToAddrScript() {
|
||||
// which is useful to ensure the accuracy of the address and determine
|
||||
// the address type. It is also required for the upcoming call to
|
||||
// PayToAddrScript.
|
||||
mainNetParams := chaincfg.MainNetParams()
|
||||
addressStr := "DsSej1qR3Fyc8kV176DCh9n9cY9nqf9Quxk"
|
||||
address, err := dcrutil.DecodeAddress(addressStr)
|
||||
address, err := dcrutil.DecodeAddress(addressStr, mainNetParams)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
@ -67,8 +68,9 @@ func ExampleExtractPkScriptAddrs() {
|
||||
}
|
||||
|
||||
// Extract and print details from the script.
|
||||
mainNetParams := chaincfg.MainNetParams()
|
||||
scriptClass, addresses, reqSigs, err := txscript.ExtractPkScriptAddrs(
|
||||
scriptVersion, script, &chaincfg.MainNetParams)
|
||||
scriptVersion, script, mainNetParams)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
@ -95,8 +97,9 @@ func ExampleSignTxOutput() {
|
||||
}
|
||||
privKey, pubKey := secp256k1.PrivKeyFromBytes(privKeyBytes)
|
||||
pubKeyHash := dcrutil.Hash160(pubKey.SerializeCompressed())
|
||||
addr, err := dcrutil.NewAddressPubKeyHash(pubKeyHash,
|
||||
&chaincfg.MainNetParams, dcrec.STEcdsaSecp256k1)
|
||||
mainNetParams := chaincfg.MainNetParams()
|
||||
addr, err := dcrutil.NewAddressPubKeyHash(pubKeyHash, mainNetParams,
|
||||
dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
@ -155,10 +158,9 @@ func ExampleSignTxOutput() {
|
||||
// Notice that the script database parameter is nil here since it isn't
|
||||
// used. It must be specified when pay-to-script-hash transactions are
|
||||
// being signed.
|
||||
sigScript, err := txscript.SignTxOutput(&chaincfg.MainNetParams,
|
||||
redeemTx, 0, originTx.TxOut[0].PkScript, txscript.SigHashAll,
|
||||
txscript.KeyClosure(lookupKey), nil, nil,
|
||||
dcrec.STEcdsaSecp256k1)
|
||||
sigScript, err := txscript.SignTxOutput(mainNetParams, redeemTx, 0,
|
||||
originTx.TxOut[0].PkScript, txscript.SigHashAll,
|
||||
txscript.KeyClosure(lookupKey), nil, nil, dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return
|
||||
|
||||
@ -3,12 +3,12 @@ module github.com/decred/dcrd/txscript
|
||||
go 1.11
|
||||
|
||||
require (
|
||||
github.com/decred/dcrd/chaincfg v1.5.1
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.1
|
||||
github.com/decred/dcrd/chaincfg/v2 v2.0.2
|
||||
github.com/decred/dcrd/dcrec v1.0.0
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2
|
||||
github.com/decred/dcrd/dcrutil v1.3.0
|
||||
github.com/decred/dcrd/dcrutil/v2 v2.0.0
|
||||
github.com/decred/dcrd/wire v1.2.0
|
||||
github.com/decred/slog v1.0.0
|
||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8
|
||||
|
||||
@ -8,10 +8,10 @@ github.com/dchest/blake256 v1.0.0 h1:6gUgI5MHdz9g0TdrgKqXsoDX+Zjxmm1Sc6OsoGru50I
|
||||
github.com/dchest/blake256 v1.0.0/go.mod h1:xXNWCE1jsAP8DAjP+rKw2MbeqLczjI3TRx2VK+9OEYY=
|
||||
github.com/decred/base58 v1.0.0 h1:BVi1FQCThIjZ0ehG+I99NJ51o0xcc9A/fDKhmJxY6+w=
|
||||
github.com/decred/base58 v1.0.0/go.mod h1:LLY1p5e3g91byL/UO1eiZaYd+uRoVRarybgcoymu9Ks=
|
||||
github.com/decred/dcrd/chaincfg v1.5.1 h1:u1Xbq0VTnAXIHW5ECqrWe0VYSgf5vWHqpSiwoLBzxAQ=
|
||||
github.com/decred/dcrd/chaincfg v1.5.1/go.mod h1:FukMzTjkwzjPU+hK7CqDMQe3NMbSZAYU5PAcsx1wlv0=
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.1 h1:0vG7U9+dSjSCaHQKdoSKURK2pOb47+b+8FK5q4+Je7M=
|
||||
github.com/decred/dcrd/chaincfg/chainhash v1.0.1/go.mod h1:OVfvaOsNLS/A1y4Eod0Ip/Lf8qga7VXCQjUQLbkY0Go=
|
||||
github.com/decred/dcrd/chaincfg/v2 v2.0.2 h1:VeGY52lHuYT01tIGbvYj+OO0GaGxGaJmnh+4vGca1+U=
|
||||
github.com/decred/dcrd/chaincfg/v2 v2.0.2/go.mod h1:hpKvhLCDAD/xDZ3V1Pqpv9fIKVYYi11DyxETguazyvg=
|
||||
github.com/decred/dcrd/dcrec v1.0.0 h1:W+z6Es+Rai3MXYVoPAxYr5U1DGis0Co33scJ6uH2J6o=
|
||||
github.com/decred/dcrd/dcrec v1.0.0/go.mod h1:HIaqbEJQ+PDzQcORxnqen5/V1FR3B4VpIfmePklt8Q8=
|
||||
github.com/decred/dcrd/dcrec/edwards v1.0.0 h1:UDcPNzclKiJlWqV3x1Fl8xMCJrolo4PB4X9t8LwKDWU=
|
||||
@ -20,8 +20,8 @@ github.com/decred/dcrd/dcrec/secp256k1 v1.0.1 h1:EFWVd1p0t0Y5tnsm/dJujgV0ORogRJ6
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.1/go.mod h1:lhu4eZFSfTJWUnR3CFRcpD+Vta0KUAqnhTsTksHXgy0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2 h1:awk7sYJ4pGWmtkiGHFfctztJjHMKGLV8jctGQhAbKe0=
|
||||
github.com/decred/dcrd/dcrec/secp256k1 v1.0.2/go.mod h1:CHTUIVfmDDd0KFVFpNX1pFVCBUegxW387nN0IGwNKR0=
|
||||
github.com/decred/dcrd/dcrutil v1.3.0 h1:LtKIiDnq925yJT/4OpIKKiU9/WaxfD9LfhxrpLSi0Qs=
|
||||
github.com/decred/dcrd/dcrutil v1.3.0/go.mod h1:7fUT70QAarhDwQK62g92uDbbYpjXlXngpy5RBiecufo=
|
||||
github.com/decred/dcrd/dcrutil/v2 v2.0.0 h1:HTqn2tZ8eqBF4y3hJwjyKBmJt16y7/HjzpE82E/crhY=
|
||||
github.com/decred/dcrd/dcrutil/v2 v2.0.0/go.mod h1:gUshVAXpd51DlcEhr51QfWL2HJGkMDM1U8chY+9VvQg=
|
||||
github.com/decred/dcrd/wire v1.2.0 h1:HqJVB7vcklIguzFWgRXw/WYCQ9cD3bUC5TKj53i1Hng=
|
||||
github.com/decred/dcrd/wire v1.2.0/go.mod h1:/JKOsLInOJu6InN+/zH5AyCq3YDIOW/EqcffvU8fJHM=
|
||||
github.com/decred/slog v1.0.0 h1:Dl+W8O6/JH6n2xIFN2p3DNjCmjYwvrXsjlSJTQQ4MhE=
|
||||
|
||||
@ -18,7 +18,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/dcrutil"
|
||||
"github.com/decred/dcrd/dcrutil/v2"
|
||||
"github.com/decred/dcrd/wire"
|
||||
)
|
||||
|
||||
|
||||
@ -9,10 +9,9 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg"
|
||||
"github.com/decred/dcrd/chaincfg/chainec"
|
||||
"github.com/decred/dcrd/chaincfg/v2/chainec"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrutil"
|
||||
"github.com/decred/dcrd/dcrutil/v2"
|
||||
"github.com/decred/dcrd/wire"
|
||||
)
|
||||
|
||||
@ -227,7 +226,7 @@ func handleStakeOutSign(tx *wire.MsgTx, idx int, subScript []byte,
|
||||
// its input index, a database of keys, a database of scripts, and information
|
||||
// about the type of signature and returns a signature, script class, the
|
||||
// addresses involved, and the number of signatures required.
|
||||
func sign(chainParams *chaincfg.Params, tx *wire.MsgTx, idx int,
|
||||
func sign(chainParams dcrutil.AddressParams, tx *wire.MsgTx, idx int,
|
||||
subScript []byte, hashType SigHashType, kdb KeyDB, sdb ScriptDB,
|
||||
sigType dcrec.SignatureType) ([]byte,
|
||||
ScriptClass, []dcrutil.Address, int, error) {
|
||||
@ -446,7 +445,7 @@ sigLoop:
|
||||
r := pSig.GetR()
|
||||
s := pSig.GetS()
|
||||
if chainec.Secp256k1.Verify(pubKey, hash, r, s) {
|
||||
aStr := addr.EncodeAddress()
|
||||
aStr := addr.Address()
|
||||
if _, ok := addrToSig[aStr]; !ok {
|
||||
addrToSig[aStr] = sig
|
||||
}
|
||||
@ -459,7 +458,7 @@ sigLoop:
|
||||
doneSigs := 0
|
||||
// This assumes that addresses are in the same order as in the script.
|
||||
for _, addr := range addresses {
|
||||
sig, ok := addrToSig[addr.EncodeAddress()]
|
||||
sig, ok := addrToSig[addr.Address()]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
@ -489,7 +488,7 @@ sigLoop:
|
||||
// NOTE: This function is only valid for version 0 scripts. Since the function
|
||||
// does not accept a script version, the results are undefined for other script
|
||||
// versions.
|
||||
func mergeScripts(chainParams *chaincfg.Params, tx *wire.MsgTx, idx int,
|
||||
func mergeScripts(chainParams dcrutil.AddressParams, tx *wire.MsgTx, idx int,
|
||||
pkScript []byte, class ScriptClass, addresses []dcrutil.Address,
|
||||
nRequired int, sigScript, prevScript []byte) []byte {
|
||||
|
||||
@ -593,7 +592,7 @@ func (sc ScriptClosure) GetScript(address dcrutil.Address) ([]byte, error) {
|
||||
// NOTE: This function is only valid for version 0 scripts. Since the function
|
||||
// does not accept a script version, the results are undefined for other script
|
||||
// versions.
|
||||
func SignTxOutput(chainParams *chaincfg.Params, tx *wire.MsgTx, idx int,
|
||||
func SignTxOutput(chainParams dcrutil.AddressParams, tx *wire.MsgTx, idx int,
|
||||
pkScript []byte, hashType SigHashType, kdb KeyDB, sdb ScriptDB,
|
||||
previousScript []byte, sigType dcrec.SignatureType) ([]byte, error) {
|
||||
|
||||
|
||||
@ -12,17 +12,17 @@ import (
|
||||
mrand "math/rand"
|
||||
"testing"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg"
|
||||
"github.com/decred/dcrd/chaincfg/chainec"
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/chaincfg/v2"
|
||||
"github.com/decred/dcrd/chaincfg/v2/chainec"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrutil"
|
||||
"github.com/decred/dcrd/dcrutil/v2"
|
||||
"github.com/decred/dcrd/wire"
|
||||
)
|
||||
|
||||
// testingParams defines the chain params to use throughout these tests so it
|
||||
// can more easily be changed if desired.
|
||||
var testingParams = &chaincfg.RegNetParams
|
||||
var testingParams = chaincfg.RegNetParams()
|
||||
|
||||
const testValueIn = 12345
|
||||
|
||||
@ -40,7 +40,7 @@ func mkGetKey(keys map[string]addressToKey) KeyDB {
|
||||
}
|
||||
return KeyClosure(func(addr dcrutil.Address) (chainec.PrivateKey,
|
||||
bool, error) {
|
||||
a2k, ok := keys[addr.EncodeAddress()]
|
||||
a2k, ok := keys[addr.Address()]
|
||||
if !ok {
|
||||
return nil, false, errors.New("nope 2")
|
||||
}
|
||||
@ -74,7 +74,7 @@ func mkGetScript(scripts map[string][]byte) ScriptDB {
|
||||
}
|
||||
return ScriptClosure(func(addr dcrutil.Address) ([]byte,
|
||||
error) {
|
||||
script, ok := scripts[addr.EncodeAddress()]
|
||||
script, ok := scripts[addr.Address()]
|
||||
if !ok {
|
||||
return nil, errors.New("nope 4")
|
||||
}
|
||||
@ -258,7 +258,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -266,7 +266,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -319,7 +319,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(
|
||||
testingParams, tx, i, pkScript,
|
||||
hashType, mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -332,7 +332,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err = SignTxOutput(
|
||||
testingParams, tx, i, pkScript,
|
||||
hashType, mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), sigScript, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -392,7 +392,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), suite); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -400,7 +400,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -453,7 +453,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams,
|
||||
tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -466,7 +466,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err = SignTxOutput(testingParams,
|
||||
tx, i, pkScript,
|
||||
hashType, mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), sigScript, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -514,7 +514,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err != nil {
|
||||
t.Error(err)
|
||||
@ -523,7 +523,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
@ -563,7 +563,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err != nil {
|
||||
t.Error(err)
|
||||
@ -572,7 +572,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
@ -612,7 +612,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err != nil {
|
||||
t.Error(err)
|
||||
@ -621,7 +621,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
@ -661,7 +661,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err != nil {
|
||||
t.Error(err)
|
||||
@ -670,7 +670,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
@ -711,7 +711,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -719,7 +719,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -945,7 +945,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams,
|
||||
tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -958,7 +958,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err = SignTxOutput(testingParams,
|
||||
tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), sigScript, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -1036,9 +1036,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
if err := signAndCheck(msg, tx, i, scriptPkScript,
|
||||
hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), suite); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -1046,7 +1046,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -1115,9 +1115,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
_, err = SignTxOutput(testingParams, tx, i,
|
||||
scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -1130,9 +1130,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -1208,9 +1208,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
if err := signAndCheck(msg, tx, i, scriptPkScript,
|
||||
hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), suite); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -1218,7 +1218,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -1286,9 +1286,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
_, err = SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -1301,9 +1301,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -1393,16 +1393,16 @@ func TestSignTxOutput(t *testing.T) {
|
||||
if err := signAndCheck(msg, tx, i, scriptPkScript,
|
||||
hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), suite); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -1484,9 +1484,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
_, err = SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -1499,9 +1499,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -1590,9 +1590,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
if err := signAndCheck(msg, tx, i, scriptPkScript,
|
||||
hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), suite); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -1600,7 +1600,7 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, false},
|
||||
address.Address(): {&key, false},
|
||||
}), mkGetScript(nil), suite); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
msg, err)
|
||||
@ -1681,9 +1681,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
_, err = SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -1696,9 +1696,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams,
|
||||
tx, i, scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address.EncodeAddress(): {&key, true},
|
||||
address.Address(): {&key, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, suite)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s a "+
|
||||
@ -1777,10 +1777,10 @@ func TestSignTxOutput(t *testing.T) {
|
||||
if err := signAndCheck(msg, tx, i, scriptPkScript,
|
||||
hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address1.EncodeAddress(): {&key1, true},
|
||||
address2.EncodeAddress(): {&key2, true},
|
||||
address1.Address(): {&key1, true},
|
||||
address2.Address(): {&key2, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), dcrec.STEcdsaSecp256k1); err != nil {
|
||||
t.Error(err)
|
||||
break
|
||||
@ -1788,8 +1788,8 @@ func TestSignTxOutput(t *testing.T) {
|
||||
|
||||
if err := signBadAndCheck(msg, tx, i, pkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address1.EncodeAddress(): {&key1, true},
|
||||
address2.EncodeAddress(): {&key2, true},
|
||||
address1.Address(): {&key1, true},
|
||||
address2.Address(): {&key2, true},
|
||||
}), mkGetScript(nil),
|
||||
dcrec.STEcdsaSecp256k1); err == nil {
|
||||
t.Errorf("corrupted signature validated %s: %v",
|
||||
@ -1860,9 +1860,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams, tx, i,
|
||||
scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address1.EncodeAddress(): {&key1, true},
|
||||
address1.Address(): {&key1, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -1881,9 +1881,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err = SignTxOutput(testingParams, tx, i,
|
||||
scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address2.EncodeAddress(): {&key2, true},
|
||||
address2.Address(): {&key2, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), sigScript, dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg, err)
|
||||
@ -1961,9 +1961,9 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err := SignTxOutput(testingParams, tx, i,
|
||||
scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address1.EncodeAddress(): {&key1, true},
|
||||
address1.Address(): {&key1, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), nil, dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg,
|
||||
@ -1982,10 +1982,10 @@ func TestSignTxOutput(t *testing.T) {
|
||||
sigScript, err = SignTxOutput(testingParams, tx, i,
|
||||
scriptPkScript, hashType,
|
||||
mkGetKey(map[string]addressToKey{
|
||||
address1.EncodeAddress(): {&key1, true},
|
||||
address2.EncodeAddress(): {&key2, true},
|
||||
address1.Address(): {&key1, true},
|
||||
address2.Address(): {&key2, true},
|
||||
}), mkGetScript(map[string][]byte{
|
||||
scriptAddr.EncodeAddress(): pkScript,
|
||||
scriptAddr.Address(): pkScript,
|
||||
}), sigScript, dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
t.Errorf("failed to sign output %s: %v", msg, err)
|
||||
|
||||
@ -9,11 +9,10 @@ import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg"
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1"
|
||||
"github.com/decred/dcrd/dcrutil"
|
||||
"github.com/decred/dcrd/dcrutil/v2"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -816,7 +815,7 @@ func PayToSStx(addr dcrutil.Address) ([]byte, error) {
|
||||
return nil, scriptError(ErrUnsupportedAddress,
|
||||
nilAddrErrStr)
|
||||
}
|
||||
if addr.DSA(addr.Net()) != dcrec.STEcdsaSecp256k1 {
|
||||
if addr.DSA() != dcrec.STEcdsaSecp256k1 {
|
||||
str := "unable to generate payment script for " +
|
||||
"unsupported digital signature algorithm"
|
||||
return nil, scriptError(ErrUnsupportedAddress, str)
|
||||
@ -859,7 +858,7 @@ func PayToSStxChange(addr dcrutil.Address) ([]byte, error) {
|
||||
return nil, scriptError(ErrUnsupportedAddress,
|
||||
nilAddrErrStr)
|
||||
}
|
||||
if addr.DSA(addr.Net()) != dcrec.STEcdsaSecp256k1 {
|
||||
if addr.DSA() != dcrec.STEcdsaSecp256k1 {
|
||||
str := "unable to generate payment script for " +
|
||||
"unsupported digital signature algorithm"
|
||||
return nil, scriptError(ErrUnsupportedAddress, str)
|
||||
@ -902,7 +901,7 @@ func PayToSSGen(addr dcrutil.Address) ([]byte, error) {
|
||||
return nil, scriptError(ErrUnsupportedAddress,
|
||||
nilAddrErrStr)
|
||||
}
|
||||
if addr.DSA(addr.Net()) != dcrec.STEcdsaSecp256k1 {
|
||||
if addr.DSA() != dcrec.STEcdsaSecp256k1 {
|
||||
str := "unable to generate payment script for " +
|
||||
"unsupported digital signature algorithm"
|
||||
return nil, scriptError(ErrUnsupportedAddress, str)
|
||||
@ -964,7 +963,7 @@ func PayToSSRtx(addr dcrutil.Address) ([]byte, error) {
|
||||
return nil, scriptError(ErrUnsupportedAddress,
|
||||
nilAddrErrStr)
|
||||
}
|
||||
if addr.DSA(addr.Net()) != dcrec.STEcdsaSecp256k1 {
|
||||
if addr.DSA() != dcrec.STEcdsaSecp256k1 {
|
||||
str := "unable to generate payment script for " +
|
||||
"unsupported digital signature algorithm"
|
||||
return nil, scriptError(ErrUnsupportedAddress, str)
|
||||
@ -1025,7 +1024,7 @@ func GenerateSStxAddrPush(addr dcrutil.Address, amount dcrutil.Amount, limits ui
|
||||
return nil, scriptError(ErrUnsupportedAddress,
|
||||
nilAddrErrStr)
|
||||
}
|
||||
if addr.DSA(addr.Net()) != dcrec.STEcdsaSecp256k1 {
|
||||
if addr.DSA() != dcrec.STEcdsaSecp256k1 {
|
||||
str := "unable to generate payment script for " +
|
||||
"unsupported digital signature algorithm"
|
||||
return nil, scriptError(ErrUnsupportedAddress, str)
|
||||
@ -1101,7 +1100,7 @@ func PayToAddrScript(addr dcrutil.Address) ([]byte, error) {
|
||||
return nil, scriptError(ErrUnsupportedAddress,
|
||||
nilAddrErrStr)
|
||||
}
|
||||
switch addr.DSA(addr.Net()) {
|
||||
switch addr.DSA() {
|
||||
case dcrec.STEcdsaSecp256k1:
|
||||
return payToPubKeyHashScript(addr.ScriptAddress())
|
||||
case dcrec.STEd25519:
|
||||
@ -1193,7 +1192,7 @@ func PushedData(script []byte) ([][]byte, error) {
|
||||
// pubKeyHashToAddrs is a convenience function to attempt to convert the
|
||||
// passed hash to a pay-to-pubkey-hash address housed within an address
|
||||
// slice. It is used to consolidate common code.
|
||||
func pubKeyHashToAddrs(hash []byte, params *chaincfg.Params) []dcrutil.Address {
|
||||
func pubKeyHashToAddrs(hash []byte, params dcrutil.AddressParams) []dcrutil.Address {
|
||||
// Skip the pubkey hash if it's invalid for some reason.
|
||||
var addrs []dcrutil.Address
|
||||
addr, err := dcrutil.NewAddressPubKeyHash(hash, params,
|
||||
@ -1207,7 +1206,7 @@ func pubKeyHashToAddrs(hash []byte, params *chaincfg.Params) []dcrutil.Address {
|
||||
// scriptHashToAddrs is a convenience function to attempt to convert the passed
|
||||
// hash to a pay-to-script-hash address housed within an address slice. It is
|
||||
// used to consolidate common code.
|
||||
func scriptHashToAddrs(hash []byte, params *chaincfg.Params) []dcrutil.Address {
|
||||
func scriptHashToAddrs(hash []byte, params dcrutil.AddressParams) []dcrutil.Address {
|
||||
// Skip the hash if it's invalid for some reason.
|
||||
var addrs []dcrutil.Address
|
||||
addr, err := dcrutil.NewAddressScriptHashFromHash(hash, params)
|
||||
@ -1226,7 +1225,7 @@ func scriptHashToAddrs(hash []byte, params *chaincfg.Params) []dcrutil.Address {
|
||||
// value will indicate a nonstandard script type for other script versions along
|
||||
// with an invalid script version error.
|
||||
func ExtractPkScriptAddrs(version uint16, pkScript []byte,
|
||||
chainParams *chaincfg.Params) (ScriptClass, []dcrutil.Address, int, error) {
|
||||
chainParams dcrutil.AddressParams) (ScriptClass, []dcrutil.Address, int, error) {
|
||||
if version != 0 {
|
||||
return NonStandardTy, nil, 0, fmt.Errorf("invalid script version")
|
||||
}
|
||||
|
||||
@ -11,13 +11,17 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/decred/dcrd/chaincfg"
|
||||
"github.com/decred/dcrd/chaincfg/chainhash"
|
||||
"github.com/decred/dcrd/chaincfg/v2"
|
||||
"github.com/decred/dcrd/dcrec"
|
||||
"github.com/decred/dcrd/dcrec/secp256k1"
|
||||
"github.com/decred/dcrd/dcrutil"
|
||||
"github.com/decred/dcrd/dcrutil/v2"
|
||||
)
|
||||
|
||||
// mainNetParams is an instance of the main network parameters and is shared
|
||||
// throughout the tests.
|
||||
var mainNetParams = chaincfg.MainNetParams()
|
||||
|
||||
// mustParseShortForm parses the passed short form script and returns the
|
||||
// resulting bytes. It panics if an error occurs. This is only used in the
|
||||
// tests as a helper since the only way it can fail is if there is an error in
|
||||
@ -41,8 +45,7 @@ func newAddressPubKey(serializedPubKey []byte) dcrutil.Address {
|
||||
if err != nil {
|
||||
panic("invalid public key in test source")
|
||||
}
|
||||
addr, err := dcrutil.NewAddressSecpPubKeyCompressed(pubkey,
|
||||
&chaincfg.MainNetParams)
|
||||
addr, err := dcrutil.NewAddressSecpPubKeyCompressed(pubkey, mainNetParams)
|
||||
if err != nil {
|
||||
panic("invalid public key in test source")
|
||||
}
|
||||
@ -55,7 +58,7 @@ func newAddressPubKey(serializedPubKey []byte) dcrutil.Address {
|
||||
// as a helper since the only way it can fail is if there is an error in the
|
||||
// test source code.
|
||||
func newAddressPubKeyHash(pkHash []byte) dcrutil.Address {
|
||||
addr, err := dcrutil.NewAddressPubKeyHash(pkHash, &chaincfg.MainNetParams,
|
||||
addr, err := dcrutil.NewAddressPubKeyHash(pkHash, mainNetParams,
|
||||
dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
panic("invalid public key hash in test source")
|
||||
@ -69,8 +72,7 @@ func newAddressPubKeyHash(pkHash []byte) dcrutil.Address {
|
||||
// as a helper since the only way it can fail is if there is an error in the
|
||||
// test source code.
|
||||
func newAddressScriptHash(scriptHash []byte) dcrutil.Address {
|
||||
addr, err := dcrutil.NewAddressScriptHashFromHash(scriptHash,
|
||||
&chaincfg.MainNetParams)
|
||||
addr, err := dcrutil.NewAddressScriptHashFromHash(scriptHash, mainNetParams)
|
||||
if err != nil {
|
||||
panic("invalid script hash in test source")
|
||||
}
|
||||
@ -326,7 +328,7 @@ func TestExtractPkScriptAddrs(t *testing.T) {
|
||||
t.Logf("Running %d tests.", len(tests))
|
||||
for i, test := range tests {
|
||||
class, addrs, reqSigs, err := ExtractPkScriptAddrs(scriptVersion,
|
||||
test.script, &chaincfg.MainNetParams)
|
||||
test.script, mainNetParams)
|
||||
if err != nil && !test.noparse {
|
||||
t.Errorf("ExtractPkScriptAddrs #%d (%s): %v", i,
|
||||
test.name, err)
|
||||
@ -359,9 +361,9 @@ func TestExtractPkScriptAddrs(t *testing.T) {
|
||||
// unsupported address types are handled properly.
|
||||
type bogusAddress struct{}
|
||||
|
||||
// EncodeAddress simply returns an empty string. It exists to satisfy the
|
||||
// Address simply returns an empty string. It exists to satisfy the
|
||||
// dcrutil.Address interface.
|
||||
func (b *bogusAddress) EncodeAddress() string {
|
||||
func (b *bogusAddress) Address() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
@ -377,28 +379,12 @@ func (b *bogusAddress) Hash160() *[20]byte {
|
||||
return nil
|
||||
}
|
||||
|
||||
// IsForNet lies blatantly to satisfy the dcrutil.Address interface.
|
||||
func (b *bogusAddress) IsForNet(chainParams *chaincfg.Params) bool {
|
||||
return true // why not?
|
||||
}
|
||||
|
||||
// String simply returns an empty string. It exists to satisfy the
|
||||
// dcrutil.Address interface.
|
||||
func (b *bogusAddress) String() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// DSA returns -1.
|
||||
func (b *bogusAddress) DSA(chainParams *chaincfg.Params) dcrec.SignatureType {
|
||||
return -1
|
||||
}
|
||||
|
||||
// Net returns the network for the bogus address. It exists to satisfy the
|
||||
// dcrutil.Address interface.
|
||||
func (b *bogusAddress) Net() *chaincfg.Params {
|
||||
return &chaincfg.RegNetParams
|
||||
}
|
||||
|
||||
// TestPayToAddrScript ensures the PayToAddrScript function generates the
|
||||
// correct scripts for the various types of addresses.
|
||||
func TestPayToAddrScript(t *testing.T) {
|
||||
@ -406,8 +392,7 @@ func TestPayToAddrScript(t *testing.T) {
|
||||
|
||||
// 1MirQ9bwyQcGVJPwKUgapu5ouK2E2Ey4gX
|
||||
p2pkhMain, err := dcrutil.NewAddressPubKeyHash(hexToBytes("e34cce70c86"+
|
||||
"373273efcc54ce7d2a491bb4a0e84"), &chaincfg.MainNetParams,
|
||||
dcrec.STEcdsaSecp256k1)
|
||||
"373273efcc54ce7d2a491bb4a0e84"), mainNetParams, dcrec.STEcdsaSecp256k1)
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to create public key hash address: %v", err)
|
||||
}
|
||||
@ -415,7 +400,7 @@ func TestPayToAddrScript(t *testing.T) {
|
||||
// Taken from transaction:
|
||||
// b0539a45de13b3e0403909b8bd1a555b8cbe45fd4e3f3fda76f3a5f52835c29d
|
||||
p2shMain, _ := dcrutil.NewAddressScriptHashFromHash(hexToBytes("e8c30"+
|
||||
"0c87986efa84c37c0519929019ef86eb5b4"), &chaincfg.MainNetParams)
|
||||
"0c87986efa84c37c0519929019ef86eb5b4"), mainNetParams)
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to create script hash address: %v", err)
|
||||
}
|
||||
@ -423,14 +408,14 @@ func TestPayToAddrScript(t *testing.T) {
|
||||
// mainnet p2pk 13CG6SJ3yHUXo4Cr2RY4THLLJrNFuG3gUg
|
||||
p2pkCompressedMain, err := dcrutil.NewAddressSecpPubKey(hexToBytes("02192d7"+
|
||||
"4d0cb94344c9569c2e77901573d8d7903c3ebec3a957724895dca52c6b4"),
|
||||
&chaincfg.MainNetParams)
|
||||
mainNetParams)
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to create pubkey address (compressed): %v",
|
||||
err)
|
||||
}
|
||||
p2pkCompressed2Main, err := dcrutil.NewAddressSecpPubKey(hexToBytes("03b0b"+
|
||||
"d634234abbb1ba1e986e884185c61cf43e001f9137f23c2c409273eb16e65"),
|
||||
&chaincfg.MainNetParams)
|
||||
mainNetParams)
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to create pubkey address (compressed 2): %v",
|
||||
err)
|
||||
@ -524,14 +509,14 @@ func TestMultiSigScript(t *testing.T) {
|
||||
// mainnet p2pk 13CG6SJ3yHUXo4Cr2RY4THLLJrNFuG3gUg
|
||||
p2pkCompressedMain, err := dcrutil.NewAddressSecpPubKey(hexToBytes("02192d"+
|
||||
"74d0cb94344c9569c2e77901573d8d7903c3ebec3a957724895dca52c6b4"),
|
||||
&chaincfg.MainNetParams)
|
||||
mainNetParams)
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to create pubkey address (compressed): %v",
|
||||
err)
|
||||
}
|
||||
p2pkCompressed2Main, err := dcrutil.NewAddressSecpPubKey(hexToBytes("03b0b"+
|
||||
"d634234abbb1ba1e986e884185c61cf43e001f9137f23c2c409273eb16e65"),
|
||||
&chaincfg.MainNetParams)
|
||||
mainNetParams)
|
||||
if err != nil {
|
||||
t.Fatalf("Unable to create pubkey address (compressed 2): %v",
|
||||
err)
|
||||
@ -1040,14 +1025,17 @@ func TestGenerateProvablyPruneableOut(t *testing.T) {
|
||||
|
||||
// TestGenerateSStxAddrPush ensures an expected OP_RETURN push is generated.
|
||||
func TestGenerateSStxAddrPush(t *testing.T) {
|
||||
testNetParams := chaincfg.TestNet3Params()
|
||||
var tests = []struct {
|
||||
addrStr string
|
||||
net dcrutil.AddressParams
|
||||
amount dcrutil.Amount
|
||||
limits uint16
|
||||
expected []byte
|
||||
}{
|
||||
{
|
||||
"Dcur2mcGjmENx4DhNqDctW5wJCVyT3Qeqkx",
|
||||
mainNetParams,
|
||||
1000,
|
||||
10,
|
||||
hexToBytes("6a1ef5916158e3e2c4551c1796708db8367207ed1" +
|
||||
@ -1055,6 +1043,7 @@ func TestGenerateSStxAddrPush(t *testing.T) {
|
||||
},
|
||||
{
|
||||
"TscB7V5RuR1oXpA364DFEsNDuAs8Rk6BHJE",
|
||||
testNetParams,
|
||||
543543,
|
||||
256,
|
||||
hexToBytes("6a1e7a5c4cca76f2e0b36db4763daacbd6cbb6ee6" +
|
||||
@ -1062,7 +1051,7 @@ func TestGenerateSStxAddrPush(t *testing.T) {
|
||||
},
|
||||
}
|
||||
for _, test := range tests {
|
||||
addr, err := dcrutil.DecodeAddress(test.addrStr)
|
||||
addr, err := dcrutil.DecodeAddress(test.addrStr, test.net)
|
||||
if err != nil {
|
||||
t.Errorf("DecodeAddress failed: %v", err)
|
||||
continue
|
||||
|
||||
Loading…
Reference in New Issue
Block a user