55 "testing"
66
77 "github.com/btcsuite/btcd/btcutil"
8- "github.com/btcsuite/btcd/btcutil/bech32"
98 "github.com/btcsuite/btcd/chaincfg"
109 sdk "github.com/cosmos/cosmos-sdk/types"
10+ "github.com/sideprotocol/side/bitcoin"
1111 "github.com/sideprotocol/side/bitcoin/keys/segwit"
1212 "github.com/sideprotocol/side/bitcoin/keys/taproot"
1313 "github.com/stretchr/testify/assert"
@@ -37,7 +37,7 @@ func TestAddressEncodeDecode(t *testing.T) {
3737 } else if strings .HasPrefix (a , "bc1q" ) {
3838 assert .Equal (t , 33 , len (addr .Bytes ()), a )
3939 } else {
40- assert .Equal (t , 53 , len (addr .Bytes ()), a )
40+ assert .Equal (t , 32 , len (addr .Bytes ()), a )
4141 }
4242
4343 text_addr := addr .String ()
@@ -52,42 +52,60 @@ func TestGenKeys(t *testing.T) {
5252 conf := sdk .GetConfig ()
5353 conf .SetBech32PrefixForAccount ("side" , "side" )
5454 conf .Seal ()
55+ bitcoin .Network = & chaincfg .MainNetParams
5556
5657 // hash := btcutil.Hash160([]byte{0, 3, 3, 3, 3, 3})
5758 hash := make ([]byte , 32 , 32 )
5859 assert .Equal (t , 32 , len (hash ))
5960
6061 // sh, err := btcutil.NewAddressScriptHashFromHash(hash, &chaincfg.MainNetParams)
6162 // assert.NoError(t, err)
62- std , err := btcutil .NewAddressTaproot (hash , & chaincfg . MainNetParams )
63+ std , err := btcutil .NewAddressTaproot (hash , bitcoin . Network )
6364 assert .NoError (t , err )
6465 assert .Equal (t , 32 , len (std .AddressSegWit .ScriptAddress ()))
6566 // println(std.ScriptAddress())
66- text := std .AddressSegWit .EncodeAddress ()
67- _ , bte , err := bech32 .Decode (text )
68- assert .NoError (t , err )
69- assert .Equal (t , 53 , len (bte ), text )
70- a_str := sdk .MustAccAddressFromBech32 (text )
71- assert .Equal (t , 53 , len (a_str .Bytes ()), text )
72- assert .Equal (t , bte , a_str .Bytes ())
73-
74- addrs := []sdk.Address {sdk .AccAddress (taproot .GenPrivKey ().PubKey ().Address ()), sdk .AccAddress (segwit .GenPrivKey ().PubKey ().Address ())}
75-
76- for _ , a := range addrs {
77- assert .Equal (t , true , strings .HasPrefix (a .String (), "bc" ), a .String ())
78- if strings .HasPrefix (a .String (), "bc1p" ) {
79- assert .Equal (t , 53 , len (a .Bytes ()), a .String ())
80- a2 , err := sdk .AccAddressFromBech32 (a .String ())
81- assert .NoError (t , err )
82- assert .Equal (t , 53 , len (a2 .Bytes ()))
83- } else {
84- assert .Equal (t , 33 , len (a .Bytes ()), a .String ())
85- }
86- // a2, err := sdk.AccAddressFromBech32(a.String())
87- // assert.Equal(t, 53, len(a2.Bytes()))
88- // assert.NoError(t, err, a.String())
89- // assert.Equal(t, a.Bytes(), a2.Bytes(), a.String())
90- }
67+ // text := std.AddressSegWit.EncodeAddress()
68+ // _, bte, err := bech32.Decode(text)
69+ // assert.NoError(t, err)
70+ // assert.Equal(t, 53, len(bte), text)
71+ // a_str := sdk.MustAccAddressFromBech32(text)
72+ // assert.Equal(t, 53, len(a_str.Bytes()), text)
73+ // assert.Equal(t, bte, a_str.Bytes())
74+
75+ // btcutil.DecodeAddress()
76+ // println("taproot:", len(taproot.GenPrivKey().PubKey().Address()))
77+ a := segwit .GenPrivKey ().PubKey ().Address ()
78+ t .Log ("segwit:" , len (a ), sdk .AccAddress (a ).String ())
79+
80+ // aa, _ := btcutil.NewAddressWitnessPubKeyHash(a.Bytes(), keys.Network)
81+ // t.Log("aa", aa.EncodeAddress())
82+
83+ b := taproot .GenPrivKey ().PubKey ().Address ()
84+ t .Log ("taproot:" , len (b ), sdk .AccAddress (b ).String ())
85+ bb , _ := btcutil .NewAddressTaproot (b .Bytes (), bitcoin .Network )
86+ t .Log ("bb" , bb .EncodeAddress ())
87+
88+ // println("bech32:", text)
89+ assert .Equal (t , sdk .AccAddress (b ).String (), bb .EncodeAddress (), "bech32 address should be equal" )
90+
91+ // addrs := []sdk.Address{sdk.AccAddress(taproot.GenPrivKey().PubKey().Address()), sdk.AccAddress(segwit.GenPrivKey().PubKey().Address())}
92+
93+ // for _, a := range addrs {
94+ // println(len(a.Bytes()), a.String())
95+ // assert.Equal(t, true, strings.HasPrefix(a.String(), "bc"), a.String())
96+ // if strings.HasPrefix(a.String(), "bc1p") {
97+ // assert.Equal(t, 32, len(a.Bytes()), a.String())
98+ // a2, err := sdk.AccAddressFromBech32(a.String())
99+ // assert.NoError(t, err)
100+ // assert.Equal(t, 32, len(a2.Bytes()))
101+ // } else {
102+ // assert.Equal(t, 33, len(a.Bytes()), a.String())
103+ // }
104+ // // a2, err := sdk.AccAddressFromBech32(a.String())
105+ // // assert.Equal(t, 53, len(a2.Bytes()))
106+ // // assert.NoError(t, err, a.String())
107+ // // assert.Equal(t, a.Bytes(), a2.Bytes(), a.String())
108+ // }
91109}
92110
93111func TestValAddressEncodeDecode (t * testing.T ) {
@@ -100,19 +118,25 @@ func TestValAddressEncodeDecode(t *testing.T) {
100118 vals := []string {
101119 // "sidevaloper1qqwpwrc0qs0pvrc6rvrsxrc2p583vqstpgdqxxsmzgp3y9gfpvqp7srxm9c", // error case
102120 // "sidevaloper1qqgsc9gfrqfsyrgtp5wpjqgkqct3cqq4rq8pj9cspcgszzqtzv2ssmdxyv7",
103- "sidevaloper1pfakusycd3aful428aqm6ljclu36vk6rzxqvu72g9e7jzaukswgnqd7xhsc" ,
104- "sidevaloper1p8990duvf0d23jelthdl2qgwfrrylny5zul0awymk7j45cjtm52eqqq7yxc" ,
105- "sidevaloper1qfwqngtkrmlytqkqsd54k9t4htufp0hw9sndewh" ,
121+ "sidevaloper1qq9qjpswp5t3j9c8pq93xrc7zsysqpq6r5dqvpczpqz3yzqfrqwsc0aalqh" ,
122+ "sidevaloper1l90rhzz8tka095tpvhjgzamvsvxyqhu34e9335l9npy2zx83lmcq9y82l7" ,
123+ "sidevaloper1qqy3sqqmpv83xqcfry8qvyqazvqp6qqgru23y9q2q52swxggqg8sya58uzu" ,
124+ "sidevaloper1qq0pkzghzcvsz8qwzcqq6xs6rv8qwxctzyzqq8shzy9qu8qhrcgsq8gftvt" ,
125+ "sidevaloper1qqr3wzgzqvpqxycjzyr3kzcequxskxqxzydsjqgeqygq2xqxqgtpuaaajmf" ,
126+ "sidevaloper1yezttrzdh00zmtzzfau9vuy360hxkjnl3gfxw2jzfqz67d8t8myq79pv5g" ,
106127 }
107128
108129 for _ , a := range vals {
109130
110131 addr , err := sdk .ValAddressFromBech32 (a )
111132 assert .NoError (t , err , "invalid address " + a )
133+ t .Log ("addr" , addr .String ())
112134 if strings .HasPrefix (a , "sidevaloper1p" ) {
113- assert .Equal (t , 53 , len (addr ))
114- } else {
115135 assert .Equal (t , 33 , len (addr ))
136+ } else if strings .HasPrefix (a , "sidevaloper1q" ) {
137+ assert .Equal (t , 33 , len (addr ))
138+ } else {
139+ assert .Equal (t , 32 , len (addr ))
116140 }
117141
118142 text_addr := addr .String ()
0 commit comments