github.com/sixexorg/magnetic-ring@v0.0.0-20191119090307-31705a21e419/gomobile/walletutil/address.go (about)

     1  package walletutil
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/sixexorg/magnetic-ring/account"
     6  	"github.com/sixexorg/magnetic-ring/common"
     7  	"github.com/sixexorg/magnetic-ring/crypto"
     8  )
     9  
    10  func ToAddress(pubkbufstr string) string {
    11  
    12  	pubkbuf,err := common.Hex2Bytes(pubkbufstr)
    13  	if err != nil {
    14  		return "hex 2 bytes error"
    15  	}
    16  
    17  	hash := common.Sha256Ripemd160(pubkbuf)
    18  
    19  	addr := common.BytesToAddress(hash,common.NormalAddress)
    20  	return addr.ToString()
    21  }
    22  
    23  
    24  func ToMagneticAddress(pubkbufstr string) string {
    25  
    26  	buf,err := common.Hex2Bytes(pubkbufstr)
    27  	if err != nil {
    28  		return "hex 2 bytes error"
    29  	}
    30  
    31  	pubk,err := crypto.UnmarshalPubkey(buf)
    32  
    33  	if err != nil {
    34  		return newErrorResp(err.Error())
    35  	}
    36  
    37  	mult := account.MultiAccountUnit{1, []crypto.PublicKey{pubk}}
    38  
    39  	muls := make(account.MultiAccountUnits, 1)
    40  	muls[0] = mult
    41  
    42  	muladdress,err := muls.Address()
    43  	if err != nil {
    44  		return newErrorResp(err.Error())
    45  	}
    46  	return newResp(fmt.Sprintf("%s", muladdress.ToString()))
    47  }