Fix incorrect registration of network params in unobtanium and viacoin

This commit is contained in:
Martin Boehm 2019-11-19 11:13:15 +01:00
parent d26e1fbb3b
commit e754a6c0fd
3 changed files with 99 additions and 13 deletions

View File

@ -46,6 +46,12 @@ func Test_GetAddrDescFromAddress_Mainnet(t *testing.T) {
want: "76a914efb6158f75743c611858fdfd0f4aaec6cc6196bc88ac",
wantErr: false,
},
{
name: "P2PKH3",
args: args{address: "DHobAps6DjZ5n4xMV75n7kJv299Zi85FCG"},
want: "76a9148ae937291e72f7368421dbaa966c44950eb14db788ac",
wantErr: false,
},
{
name: "P2SH1",
args: args{address: "9tg1kVUk339Tk58ewu5T8QT82Z6cE4UvSU"},
@ -76,6 +82,81 @@ func Test_GetAddrDescFromAddress_Mainnet(t *testing.T) {
}
}
func Test_GetAddressesFromAddrDesc_Mainnet(t *testing.T) {
type args struct {
script string
}
tests := []struct {
name string
args args
want []string
want2 bool
wantErr bool
}{
{
name: "P2PKH1",
args: args{script: "76a9148841590909747c0f97af158f22fadacb1652522088ac"},
want: []string{"DHZYinsaM9nW5piCMN639ELRKbZomThPnZ"},
want2: true,
wantErr: false,
},
{
name: "P2PKH2",
args: args{script: "76a914efb6158f75743c611858fdfd0f4aaec6cc6196bc88ac"},
want: []string{"DSzaAYEYyy9ngjoJ294r7jzFM3xhD6bKHK"},
want2: true,
wantErr: false,
},
{
name: "P2PKH3",
args: args{script: "76a91450e86eeac599ad023b8981296d01b50bdabcdd9788ac"},
want: []string{"DCWu3MLz9xBGFuuLyNDf6QjuGp49f5tfc9"},
want2: true,
wantErr: false,
},
{
name: "P2SH1",
args: args{script: "a9141889a089400ea25d28694fd98aa7702b21eeeab187"},
want: []string{"9tg1kVUk339Tk58ewu5T8QT82Z6cE4UvSU"},
want2: true,
wantErr: false,
},
{
name: "OP_RETURN ascii",
args: args{script: "6a0461686f6a"},
want: []string{"OP_RETURN (ahoj)"},
want2: false,
wantErr: false,
},
{
name: "OP_RETURN hex",
args: args{script: "6a072020f1686f6a20"},
want: []string{"OP_RETURN 2020f1686f6a20"},
want2: false,
wantErr: false,
},
}
parser := NewDogecoinParser(GetChainParams("main"), &btc.Configuration{})
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
b, _ := hex.DecodeString(tt.args.script)
got, got2, err := parser.GetAddressesFromAddrDesc(b)
if (err != nil) != tt.wantErr {
t.Errorf("GetAddressesFromAddrDesc() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("GetAddressesFromAddrDesc() = %v, want %v", got, tt.want)
}
if !reflect.DeepEqual(got2, tt.want2) {
t.Errorf("GetAddressesFromAddrDesc() = %v, want %v", got2, tt.want2)
}
})
}
}
var (
testTx1 bchain.Tx
testTxPacked1 = "00030e6d8ba8d7aa2001000000016b3c0c53267964120acf7f7e72217e3f463e52ce622f89659f6a6bb8e69a4d91000000006c493046022100a96454237e3a020994534583e28c04757881374bceac89f933ea9ff00b4db259022100fbb757ff7ea4f02c4e42556b2834c61eba1f1af605db089d836a0614d90a3b46012103cebdde6d1046e285df4f48497bc50dc20a4a258ca5b7308cb0a929c9fdadcd9dffffffff0217e823ca7f0200001976a914eef21768a546590993e313c7f3dfadf6a6efa1e888acaddf4cba010000001976a914e0fee2ea29dd9c6c759d8341bd0da4c4f738cced88ac00000000"

View File

@ -27,11 +27,6 @@ func init() {
// Mainnet address encoding magics
MainNetParams.PubKeyHashAddrID = []byte{130}
MainNetParams.ScriptHashAddrID = []byte{30}
err := chaincfg.Register(&MainNetParams)
if err != nil {
panic(err)
}
}
// UnobtaniumParser handle
@ -44,7 +39,14 @@ func NewUnobtaniumParser(params *chaincfg.Params, c *btc.Configuration) *Unobtan
return &UnobtaniumParser{BitcoinParser: btc.NewBitcoinParser(params, c)}
}
// GetChainParams returns network parameters
func GetChainParams(chain string) *chaincfg.Params {
if !chaincfg.IsRegistered(&MainNetParams) {
err := chaincfg.Register(&MainNetParams)
if err != nil {
panic(err)
}
}
switch chain {
default:
return &MainNetParams

View File

@ -38,14 +38,6 @@ func init() {
RegtestParams.PubKeyHashAddrID = []byte{111} // base58 prefix: m or n
RegtestParams.ScriptHashAddrID = []byte{196} // base58 prefix: 2
RegtestParams.Bech32HRPSegwit = "tvia"
err := chaincfg.Register(&MainNetParams)
if err == nil {
err = chaincfg.Register(&RegtestParams)
}
if err != nil {
panic(err)
}
}
// ViacoinParser handle
@ -58,7 +50,18 @@ func NewViacoinParser(params *chaincfg.Params, c *btc.Configuration) *ViacoinPar
return &ViacoinParser{BitcoinParser: btc.NewBitcoinParser(params, c)}
}
// GetChainParams returns network parameters
func GetChainParams(chain string) *chaincfg.Params {
if !chaincfg.IsRegistered(&MainNetParams) {
err := chaincfg.Register(&MainNetParams)
if err == nil {
err = chaincfg.Register(&RegtestParams)
}
if err != nil {
panic(err)
}
}
switch chain {
case "regtest":
return &RegtestParams