MCPcopy Create free account
hub / github.com/copernet/copernicus / ExtractDestinations

Method ExtractDestinations

model/script/script.go:431–479  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

429}
430
431func (s *Script) ExtractDestinations() (sType int, addresses []*Address, sigCountRequired int, err error) {
432 sType, pubKeys, isStandard := s.IsStandardScriptPubKey()
433 if !isStandard {
434 return
435 }
436 if sType == ScriptPubkey {
437 sigCountRequired = 1
438 addresses = make([]*Address, 0, 1)
439 address, err := AddressFromPublicKey(pubKeys[0])
440 if err != nil {
441 return sType, nil, 0, err
442 }
443 addresses = append(addresses, address)
444 return sType, addresses, sigCountRequired, nil
445 }
446 if sType == ScriptPubkeyHash {
447 sigCountRequired = 1
448 addresses = make([]*Address, 0, 1)
449 address, err := AddressFromHash160(pubKeys[0], AddressVerPubKey())
450 if err != nil {
451 return sType, nil, 0, err
452 }
453 addresses = append(addresses, address)
454 return sType, addresses, sigCountRequired, nil
455 }
456 if sType == ScriptHash {
457 sigCountRequired = 1
458 addresses = make([]*Address, 0, 1)
459 address, err := AddressFromHash160(pubKeys[0], AddressVerScript())
460 if err != nil {
461 return sType, nil, 0, err
462 }
463 addresses = append(addresses, address)
464 return sType, addresses, sigCountRequired, nil
465 }
466 if sType == ScriptMultiSig {
467 sigCountRequired = int(pubKeys[0][0])
468 addresses = make([]*Address, 0, len(pubKeys)-2)
469 for _, e := range pubKeys[1 : len(pubKeys)-1] {
470 address, err := AddressFromPublicKey(e)
471 if err != nil {
472 return sType, nil, 0, err
473 }
474 addresses = append(addresses, address)
475 }
476 return
477 }
478 return
479}
480
481func (s *Script) IsCommitment(data []byte) bool {
482 if len(data) > 64 || s.Size() != len(data)+2 {

Calls 5

AddressFromPublicKeyFunction · 0.85
AddressFromHash160Function · 0.85
AddressVerPubKeyFunction · 0.85
AddressVerScriptFunction · 0.85