neo-go/pkg/wire/util/address/address.go

39 lines
964 B
Go
Raw Normal View History

2019-02-25 22:44:14 +00:00
package address
import (
"encoding/hex"
"github.com/CityOfZion/neo-go/pkg/crypto/base58"
"github.com/CityOfZion/neo-go/pkg/wire/util"
2019-02-25 22:44:14 +00:00
)
// ToScriptHash converts an address to a script hash
2019-02-25 22:44:14 +00:00
func ToScriptHash(address string) string {
decodedAddressAsBytes, err := base58.Decode(address)
if err != nil {
return ""
}
decodedAddressAsHex := hex.EncodeToString(decodedAddressAsBytes)
scriptHash := (decodedAddressAsHex[2:42])
return scriptHash
}
// FromUint160 returns the "NEO address" from the given
// Uint160.
func FromUint160(u util.Uint160) (string, error) {
// Dont forget to prepend the Address version 0x17 (23) A
b := append([]byte{0x17}, u.Bytes()...)
return base58.CheckEncode(b)
}
// Uint160Decode attempts to decode the given NEO address string
// into an Uint160.
func Uint160Decode(s string) (u util.Uint160, err error) {
b, err := base58.CheckDecode(s)
if err != nil {
return u, err
}
return util.Uint160DecodeBytes(b[1:21])
}