@@ -79,22 +79,22 @@ func (s *PrecompileTestSuite) TestRun() {
7979 "fail - error during unpack" ,
8080 func () * vm.Contract {
8181 // only pass the method ID to the input
82- contract .Input = s . precompile . Methods [ bech32 .HexToBech32Method ]. ID
82+ contract .Input = bech32 .HexToBech32Selector [:]
8383 return contract
8484 },
8585 func ([]byte ) {},
8686 false ,
87- "abi: attempting to unmarshal an empty string while arguments are expected " ,
87+ "unexpected EOF " ,
8888 },
8989 {
9090 "fail - HexToBech32 method error" ,
9191 func () * vm.Contract {
92- input , err := s . precompile . Pack (
93- bech32 . HexToBech32Method ,
94- s . keyring . GetAddr ( 0 ) ,
95- "" ,
96- )
97- s .Require ().NoError (err , "failed to pack input" )
92+ call := bech32. HexToBech32Call {
93+ Addr : s . keyring . GetAddr ( 0 ) ,
94+ Prefix : "" ,
95+ }
96+ input , err := call . EncodeWithSelector ( )
97+ s .Require ().NoError (err , "failed to encode input" )
9898
9999 // only pass the method ID to the input
100100 contract .Input = input
@@ -107,22 +107,20 @@ func (s *PrecompileTestSuite) TestRun() {
107107 {
108108 "pass - hex to bech32 account (cosmos)" ,
109109 func () * vm.Contract {
110- input , err := s . precompile . Pack (
111- bech32 . HexToBech32Method ,
112- s . keyring . GetAddr ( 0 ) ,
113- "cosmos" ,
114- )
115- s .Require ().NoError (err , "failed to pack input" )
110+ call := bech32. HexToBech32Call {
111+ Addr : s . keyring . GetAddr ( 0 ) ,
112+ Prefix : "cosmos" ,
113+ }
114+ input , err := call . EncodeWithSelector ( )
115+ s .Require ().NoError (err , "failed to encode input" )
116116 contract .Input = input
117117 return contract
118118 },
119119 func (data []byte ) {
120- args , err := s .precompile .Unpack (bech32 .HexToBech32Method , data )
120+ var ret bech32.HexToBech32Return
121+ _ , err := ret .Decode (data )
121122 s .Require ().NoError (err , "failed to unpack output" )
122- s .Require ().Len (args , 1 )
123- addr , ok := args [0 ].(string )
124- s .Require ().True (ok )
125- s .Require ().Equal (s .keyring .GetAccAddr (0 ).String (), addr )
123+ s .Require ().Equal (s .keyring .GetAccAddr (0 ).String (), ret .Bech32Address )
126124 },
127125 true ,
128126 "" ,
@@ -133,79 +131,73 @@ func (s *PrecompileTestSuite) TestRun() {
133131 valAddrCodec := s .network .App .GetStakingKeeper ().ValidatorAddressCodec ()
134132 valAddrBz , err := valAddrCodec .StringToBytes (s .network .GetValidators ()[0 ].GetOperator ())
135133 s .Require ().NoError (err , "failed to convert string to bytes" )
136- input , err := s . precompile . Pack (
137- bech32 . HexToBech32Method ,
138- common . BytesToAddress ( valAddrBz ) ,
139- "cosmosvaloper" ,
140- )
141- s .Require ().NoError (err , "failed to pack input" )
134+ call := bech32. HexToBech32Call {
135+ Addr : common . BytesToAddress ( valAddrBz ) ,
136+ Prefix : "cosmosvaloper" ,
137+ }
138+ input , err := call . EncodeWithSelector ( )
139+ s .Require ().NoError (err , "failed to encode input" )
142140 contract .Input = input
143141 return contract
144142 },
145143 func (data []byte ) {
146- args , err := s .precompile .Unpack (bech32 .HexToBech32Method , data )
144+ var ret bech32.HexToBech32Return
145+ _ , err := ret .Decode (data )
147146 s .Require ().NoError (err , "failed to unpack output" )
148- s .Require ().Len (args , 1 )
149- addr , ok := args [0 ].(string )
150- s .Require ().True (ok )
151- s .Require ().Equal (s .network .GetValidators ()[0 ].OperatorAddress , addr )
147+ s .Require ().Equal (s .network .GetValidators ()[0 ].OperatorAddress , ret .Bech32Address )
152148 },
153149 true ,
154150 "" ,
155151 },
156152 {
157153 "pass - hex to bech32 consensus address (cosmosvalcons)" ,
158154 func () * vm.Contract {
159- input , err := s . precompile . Pack (
160- bech32 . HexToBech32Method ,
161- s . keyring . GetAddr ( 0 ) ,
162- "cosmosvalcons" ,
163- )
164- s .Require ().NoError (err , "failed to pack input" )
155+ call := bech32. HexToBech32Call {
156+ Addr : s . keyring . GetAddr ( 0 ) ,
157+ Prefix : "cosmosvalcons" ,
158+ }
159+ input , err := call . EncodeWithSelector ( )
160+ s .Require ().NoError (err , "failed to encode input" )
165161 contract .Input = input
166162 return contract
167163 },
168164 func (data []byte ) {
169- args , err := s .precompile .Unpack (bech32 .HexToBech32Method , data )
165+ var ret bech32.HexToBech32Return
166+ _ , err := ret .Decode (data )
170167 s .Require ().NoError (err , "failed to unpack output" )
171- s .Require ().Len (args , 1 )
172- addr , ok := args [0 ].(string )
173- s .Require ().True (ok )
174- s .Require ().Equal (sdk .ConsAddress (s .keyring .GetAddr (0 ).Bytes ()).String (), addr )
168+ s .Require ().Equal (sdk .ConsAddress (s .keyring .GetAddr (0 ).Bytes ()).String (), ret .Bech32Address )
175169 },
176170 true ,
177171 "" ,
178172 },
179173 {
180174 "pass - bech32 to hex account address" ,
181175 func () * vm.Contract {
182- input , err := s . precompile . Pack (
183- bech32 . Bech32ToHexMethod ,
184- s . keyring . GetAccAddr ( 0 ). String (),
185- )
186- s .Require ().NoError (err , "failed to pack input" )
176+ call := bech32. Bech32ToHexCall {
177+ Bech32Address : s . keyring . GetAccAddr ( 0 ). String () ,
178+ }
179+ input , err := call . EncodeWithSelector ( )
180+ s .Require ().NoError (err , "failed to encode input" )
187181 contract .Input = input
188182 return contract
189183 },
190184 func (data []byte ) {
191- args , err := s .precompile .Unpack (bech32 .Bech32ToHexMethod , data )
185+ var ret bech32.Bech32ToHexReturn
186+ _ , err := ret .Decode (data )
192187 s .Require ().NoError (err , "failed to unpack output" )
193- s .Require ().Len (args , 1 )
194- addr , ok := args [0 ].(common.Address )
195- s .Require ().True (ok )
196- s .Require ().Equal (s .keyring .GetAddr (0 ), addr )
188+ s .Require ().Equal (s .keyring .GetAddr (0 ), ret .Addr )
197189 },
198190 true ,
199191 "" ,
200192 },
201193 {
202194 "pass - bech32 to hex validator address" ,
203195 func () * vm.Contract {
204- input , err := s . precompile . Pack (
205- bech32 . Bech32ToHexMethod ,
206- s . network . GetValidators ()[ 0 ]. OperatorAddress ,
207- )
208- s .Require ().NoError (err , "failed to pack input" )
196+ call := bech32. Bech32ToHexCall {
197+ Bech32Address : s . network . GetValidators ()[ 0 ]. OperatorAddress ,
198+ }
199+ input , err := call . EncodeWithSelector ( )
200+ s .Require ().NoError (err , "failed to encode input" )
209201 contract .Input = input
210202 return contract
211203 },
@@ -214,34 +206,30 @@ func (s *PrecompileTestSuite) TestRun() {
214206 valAddrBz , err := valAddrCodec .StringToBytes (s .network .GetValidators ()[0 ].GetOperator ())
215207 s .Require ().NoError (err , "failed to convert string to bytes" )
216208
217- args , err := s .precompile .Unpack (bech32 .Bech32ToHexMethod , data )
209+ var ret bech32.Bech32ToHexReturn
210+ _ , err = ret .Decode (data )
218211 s .Require ().NoError (err , "failed to unpack output" )
219- s .Require ().Len (args , 1 )
220- addr , ok := args [0 ].(common.Address )
221- s .Require ().True (ok )
222- s .Require ().Equal (common .BytesToAddress (valAddrBz ), addr )
212+ s .Require ().Equal (common .BytesToAddress (valAddrBz ), ret .Addr )
223213 },
224214 true ,
225215 "" ,
226216 },
227217 {
228218 "pass - bech32 to hex consensus address" ,
229219 func () * vm.Contract {
230- input , err := s . precompile . Pack (
231- bech32 . Bech32ToHexMethod ,
232- sdk . ConsAddress ( s . keyring . GetAddr ( 0 ). Bytes ()). String (),
233- )
234- s .Require ().NoError (err , "failed to pack input" )
220+ call := bech32. Bech32ToHexCall {
221+ Bech32Address : sdk . ConsAddress ( s . keyring . GetAddr ( 0 ). Bytes ()). String () ,
222+ }
223+ input , err := call . EncodeWithSelector ( )
224+ s .Require ().NoError (err , "failed to encode input" )
235225 contract .Input = input
236226 return contract
237227 },
238228 func (data []byte ) {
239- args , err := s .precompile .Unpack (bech32 .Bech32ToHexMethod , data )
229+ var ret bech32.Bech32ToHexReturn
230+ _ , err := ret .Decode (data )
240231 s .Require ().NoError (err , "failed to unpack output" )
241- s .Require ().Len (args , 1 )
242- addr , ok := args [0 ].(common.Address )
243- s .Require ().True (ok )
244- s .Require ().Equal (s .keyring .GetAddr (0 ), addr )
232+ s .Require ().Equal (s .keyring .GetAddr (0 ), ret .Addr )
245233 },
246234 true ,
247235 "" ,
0 commit comments