@@ -28,6 +28,8 @@ lazy_static! {
28
28
include_bytes!( "../../lib/protocol-eth/abi/AdExCore.json" ) ;
29
29
static ref IDENTITY_ABI : & ' static [ u8 ] =
30
30
include_bytes!( "../../lib/protocol-eth/abi/Identity.json" ) ;
31
+ static ref CHANNEL_STATE_ACTIVE : U256 = 1 . into( ) ;
32
+ static ref PRIVILEGE_LEVEL_NONE : U256 = 0 . into( ) ;
31
33
}
32
34
33
35
#[ derive( Debug , Clone ) ]
@@ -124,7 +126,7 @@ impl Adapter for EthereumAdapter {
124
126
fn verify ( & self , signer : & str , state_root : & str , sig : & str ) -> AdapterResult < bool > {
125
127
let ( decoded_adress, decoded_signature) = match ( hex:: decode ( signer) , hex:: decode ( sig) ) {
126
128
( Ok ( address) , Ok ( sig) ) => ( address, sig) ,
127
- ( _ , _ ) => {
129
+ _ => {
128
130
return Err ( AdapterError :: Signature (
129
131
"invalid signature or address" . to_string ( ) ,
130
132
) )
@@ -135,10 +137,7 @@ impl Adapter for EthereumAdapter {
135
137
let signature = Signature :: from_electrum ( & decoded_signature) ;
136
138
let message = Message :: from_slice ( & hash_message ( state_root) ) ;
137
139
138
- match verify_address ( & address, & signature, & message) {
139
- Ok ( result) => Ok ( result) ,
140
- Err ( _) => Ok ( false ) ,
141
- }
140
+ verify_address ( & address, & signature, & message) . or ( Ok ( false ) )
142
141
}
143
142
144
143
fn validate_channel ( & self , channel : & Channel ) -> AdapterResult < bool > {
@@ -159,14 +158,8 @@ impl Adapter for EthereumAdapter {
159
158
) ) ;
160
159
}
161
160
// check if channel is valid
162
- let is_channel_valid = EthereumAdapter :: is_channel_valid ( & self . config , channel) ;
163
- if is_channel_valid. is_err ( ) {
164
- return Err ( AdapterError :: InvalidChannel (
165
- is_channel_valid
166
- . err ( )
167
- . expect ( "failed to get channel error" )
168
- . to_string ( ) ,
169
- ) ) ;
161
+ if let Err ( error) = EthereumAdapter :: is_channel_valid ( & self . config , channel) {
162
+ return Err ( AdapterError :: InvalidChannel ( error. to_string ( ) ) ) ;
170
163
}
171
164
// query the blockchain for the channel status
172
165
let contract_address = Address :: from_slice ( self . config . ethereum_core_address . as_bytes ( ) ) ;
@@ -178,7 +171,7 @@ impl Adapter for EthereumAdapter {
178
171
. wait ( )
179
172
. map_err ( |_| map_error ( "contract channel status query failed" ) ) ?;
180
173
181
- if channel_status != 1 . into ( ) {
174
+ if channel_status != * CHANNEL_STATE_ACTIVE {
182
175
return Err ( AdapterError :: Configuration (
183
176
"channel is not Active on the ethereum network" . to_string ( ) ,
184
177
) ) ;
@@ -192,14 +185,11 @@ impl Adapter for EthereumAdapter {
192
185
return Err ( AdapterError :: Failed ( "invaild token id" . to_string ( ) ) ) ;
193
186
}
194
187
195
- let token_id = token. to_owned ( ) [ token. len ( ) - 16 ..] . to_string ( ) ;
188
+ let token_id = token[ token. len ( ) - 16 ..] . to_string ( ) ;
196
189
197
190
let mut session_tokens = self . session_tokens . borrow_mut ( ) ;
198
- if session_tokens. get ( & token_id) . is_some ( ) {
199
- return Ok ( session_tokens
200
- . get ( & token_id)
201
- . expect ( "failed to get session" )
202
- . to_owned ( ) ) ;
191
+ if let Some ( token) = session_tokens. get ( & token_id) {
192
+ return Ok ( token. to_owned ( ) ) ;
203
193
}
204
194
205
195
let parts: Vec < & str > = token. split ( '.' ) . collect ( ) ;
@@ -208,7 +198,7 @@ impl Adapter for EthereumAdapter {
208
198
( Some ( header_encoded) , Some ( payload_encoded) , Some ( token_encoded) ) => {
209
199
( header_encoded, payload_encoded, token_encoded)
210
200
}
211
- ( _ , _ , _ ) => {
201
+ _ => {
212
202
return Err ( AdapterError :: Failed ( format ! (
213
203
"{} token string is incorrect" ,
214
204
token
@@ -236,7 +226,7 @@ impl Adapter for EthereumAdapter {
236
226
. wait ( )
237
227
. map_err ( |_| map_error ( "failed query priviledge level on contract" ) ) ?;
238
228
239
- if priviledge_level == 0 . into ( ) {
229
+ if priviledge_level == * PRIVILEGE_LEVEL_NONE {
240
230
return Err ( AdapterError :: Authorization (
241
231
"insufficient privilege" . to_string ( ) ,
242
232
) ) ;
@@ -286,14 +276,11 @@ impl Adapter for EthereumAdapter {
286
276
}
287
277
288
278
fn check_validator_id_checksum ( channel : & Channel ) -> bool {
289
- let invalid_address_checkum : Vec < & ValidatorDesc > = channel
279
+ channel
290
280
. spec
291
281
. validators
292
282
. into_iter ( )
293
- . filter ( |v| v. id != eth_checksum:: checksum ( & v. id ) )
294
- . collect ( ) ;
295
-
296
- invalid_address_checkum. is_empty ( )
283
+ . any ( |v| v. id != eth_checksum:: checksum ( & v. id ) )
297
284
}
298
285
299
286
fn hash_message ( message : & str ) -> [ u8 ; 32 ] {
@@ -361,15 +348,11 @@ pub fn ewt_sign(
361
348
alg : "ETH" . to_string ( ) ,
362
349
} ;
363
350
364
- let header_encoded = base64:: encode_config (
365
- & serde_json:: to_string ( & header) ?. as_bytes ( ) ,
366
- base64:: URL_SAFE_NO_PAD ,
367
- ) ;
351
+ let header_encoded =
352
+ base64:: encode_config ( & serde_json:: to_string ( & header) ?, base64:: URL_SAFE_NO_PAD ) ;
368
353
369
- let payload_encoded = base64:: encode_config (
370
- & serde_json:: to_string ( payload) ?. as_bytes ( ) ,
371
- base64:: URL_SAFE_NO_PAD ,
372
- ) ;
354
+ let payload_encoded =
355
+ base64:: encode_config ( & serde_json:: to_string ( payload) ?, base64:: URL_SAFE_NO_PAD ) ;
373
356
374
357
let message = Message :: from_slice ( & hash_message ( & format ! (
375
358
"{}.{}" ,
@@ -483,7 +466,7 @@ mod test {
483
466
484
467
let payload = Payload {
485
468
id : "awesomeValidator" . to_string ( ) ,
486
- era : 10_0000 ,
469
+ era : 100_000 ,
487
470
address : Some ( eth_adapter. whoami ( ) ) ,
488
471
identity : None ,
489
472
} ;
0 commit comments