1
1
package std
2
2
3
- import "crypto/bech32"
3
+ import (
4
+ "crypto/bech32"
5
+ "errors"
6
+ )
4
7
5
8
type Address string // NOTE: bech32
6
9
@@ -19,15 +22,15 @@ const RawAddressSize = 20
19
22
type RawAddress [RawAddressSize]byte
20
23
21
24
func EncodeBech32(prefix string, bz [20]byte) Address {
22
- b32, err := convertAndEncode(prefix, bytes [:])
25
+ b32, err := convertAndEncode(prefix, bz [:])
23
26
if err != nil {
24
27
panic(err) // should not happen
25
28
}
26
- return b32
29
+ return Address( b32)
27
30
}
28
31
29
- func DecodeBech32(addr Address) (prefix string, bz [20]byte, ok bool) {
30
- prefix, bz, err := bech32.Decode(addr)
32
+ func DecodeBech32(addr Address) (string, [20]byte, bool) {
33
+ prefix, bz, err := bech32.Decode(string( addr) )
31
34
if err != nil || len(bz) != 20 {
32
35
return "", [20]byte{}, false
33
36
}
@@ -37,7 +40,7 @@ func DecodeBech32(addr Address) (prefix string, bz [20]byte, ok bool) {
37
40
func convertAndEncode(hrp string, data []byte) (string, error) {
38
41
converted, err := bech32.ConvertBits(data, 8, 5, true)
39
42
if err != nil {
40
- return "", errors.Wrap(err, "encoding bech32 failed" )
43
+ return "", errors.New( "encoding bech32 failed: " + err.Error() )
41
44
}
42
45
return bech32.Encode(hrp, converted)
43
46
}
0 commit comments