OSDN Git Service

53b6c9b5550e1219f7459a598d16dfc6733dff33
[bytom/vapor.git] / toolbar / common / address.go
1 package common
2
3 import (
4         "github.com/vapor/common"
5         "github.com/vapor/consensus"
6         "github.com/vapor/consensus/segwit"
7 )
8
9 func GetAddressFromControlProgram(prog []byte) string {
10         if segwit.IsP2WPKHScript(prog) {
11                 if pubHash, err := segwit.GetHashFromStandardProg(prog); err == nil {
12                         return buildP2PKHAddress(pubHash)
13                 }
14         } else if segwit.IsP2WSHScript(prog) {
15                 if scriptHash, err := segwit.GetHashFromStandardProg(prog); err == nil {
16                         return buildP2SHAddress(scriptHash)
17                 }
18         }
19
20         return ""
21 }
22
23 func buildP2PKHAddress(pubHash []byte) string {
24         address, err := common.NewAddressWitnessPubKeyHash(pubHash, &consensus.ActiveNetParams)
25         if err != nil {
26                 return ""
27         }
28
29         return address.EncodeAddress()
30 }
31
32 func buildP2SHAddress(scriptHash []byte) string {
33         address, err := common.NewAddressWitnessScriptHash(scriptHash, &consensus.ActiveNetParams)
34         if err != nil {
35                 return ""
36         }
37
38         return address.EncodeAddress()
39 }