Fix monacoin parser
This commit is contained in:
parent
6c4204e93f
commit
e37ec52d5b
@ -65,7 +65,9 @@ type MonacoinParser struct {
|
||||
|
||||
// NewMonacoinParser returns new MonacoinParser instance
|
||||
func NewMonacoinParser(params *chaincfg.Params, c *btc.Configuration) *MonacoinParser {
|
||||
return &MonacoinParser{BitcoinParser: btc.NewBitcoinParser(params, c)}
|
||||
p := &MonacoinParser{BitcoinParser: btc.NewBitcoinParser(params, c)}
|
||||
p.OutputScriptToAddressesFunc = p.outputScriptToAddresses
|
||||
return p
|
||||
}
|
||||
|
||||
// GetChainParams contains network parameters for the main Monacoin network,
|
||||
@ -82,17 +84,6 @@ func GetChainParams(chain string) *chaincfg.Params {
|
||||
}
|
||||
}
|
||||
|
||||
// GetMonaChainParams contains network parameters for the main Monacoin network,
|
||||
// and the test Monacoin network
|
||||
func GetMonaChainParams(chain string) *monacoinCfg.Params {
|
||||
switch chain {
|
||||
case "test":
|
||||
return &MonaTestParams
|
||||
default:
|
||||
return &MonaMainParams
|
||||
}
|
||||
}
|
||||
|
||||
// GetAddrDescFromAddress returns internal address representation (descriptor) of given address
|
||||
func (p *MonacoinParser) GetAddrDescFromAddress(address string) (bchain.AddressDescriptor, error) {
|
||||
return p.addressToOutputScript(address)
|
||||
@ -123,3 +114,52 @@ func (p *MonacoinParser) addressToOutputScript(address string) ([]byte, error) {
|
||||
return script, nil
|
||||
}
|
||||
}
|
||||
|
||||
// GetAddressesFromAddrDesc returns addresses for given address descriptor with flag if the addresses are searchable
|
||||
func (p *MonacoinParser) GetAddressesFromAddrDesc(addrDesc bchain.AddressDescriptor) ([]string, bool, error) {
|
||||
return p.OutputScriptToAddressesFunc(addrDesc)
|
||||
}
|
||||
|
||||
// outputScriptToAddresses converts ScriptPubKey to bitcoin addresses
|
||||
func (p *MonacoinParser) outputScriptToAddresses(script []byte) ([]string, bool, error) {
|
||||
switch p.Params.Net {
|
||||
case MainnetMagic:
|
||||
sc, addresses, _, err := txscript.ExtractPkScriptAddrs(script, &MonaMainParams)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
rv := make([]string, len(addresses))
|
||||
for i, a := range addresses {
|
||||
rv[i] = a.EncodeAddress()
|
||||
}
|
||||
var s bool
|
||||
if sc != txscript.NonStandardTy && sc != txscript.NullDataTy {
|
||||
s = true
|
||||
} else if len(rv) == 0 {
|
||||
or := btc.TryParseOPReturn(script)
|
||||
if or != "" {
|
||||
rv = []string{or}
|
||||
}
|
||||
}
|
||||
return rv, s, nil
|
||||
default:
|
||||
sc, addresses, _, err := txscript.ExtractPkScriptAddrs(script, &MonaTestParams)
|
||||
if err != nil {
|
||||
return nil, false, err
|
||||
}
|
||||
rv := make([]string, len(addresses))
|
||||
for i, a := range addresses {
|
||||
rv[i] = a.EncodeAddress()
|
||||
}
|
||||
var s bool
|
||||
if sc != txscript.NonStandardTy && sc != txscript.NullDataTy {
|
||||
s = true
|
||||
} else if len(rv) == 0 {
|
||||
or := btc.TryParseOPReturn(script)
|
||||
if or != "" {
|
||||
rv = []string{or}
|
||||
}
|
||||
}
|
||||
return rv, s, nil
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user