@@ -28,6 +28,8 @@ lazy_static! {
2828 include_bytes!( "../../lib/protocol-eth/abi/AdExCore.json" ) ;
2929 static ref IDENTITY_ABI : & ' static [ u8 ] =
3030 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( ) ;
3133}
3234
3335#[ derive( Debug , Clone ) ]
@@ -86,7 +88,7 @@ impl Adapter for EthereumAdapter {
8688 } )
8789 }
8890
89- fn unlock ( & self ) -> AdapterResult < bool > {
91+ fn unlock ( & self ) -> AdapterResult < ( ) > {
9092 let account = SafeAccount :: from_file (
9193 serde_json:: from_value ( self . keystore_json . clone ( ) )
9294 . map_err ( |_| map_error ( "Invalid keystore json provided" ) ) ?,
@@ -97,8 +99,7 @@ impl Adapter for EthereumAdapter {
9799
98100 self . wallet . replace ( Some ( account) ) ;
99101
100- // wallet has been unlocked
101- Ok ( true )
102+ Ok ( ( ) )
102103 }
103104
104105 fn whoami ( & self ) -> String {
@@ -124,7 +125,7 @@ impl Adapter for EthereumAdapter {
124125 fn verify ( & self , signer : & str , state_root : & str , sig : & str ) -> AdapterResult < bool > {
125126 let ( decoded_adress, decoded_signature) = match ( hex:: decode ( signer) , hex:: decode ( sig) ) {
126127 ( Ok ( address) , Ok ( sig) ) => ( address, sig) ,
127- ( _ , _ ) => {
128+ _ => {
128129 return Err ( AdapterError :: Signature (
129130 "invalid signature or address" . to_string ( ) ,
130131 ) )
@@ -135,10 +136,7 @@ impl Adapter for EthereumAdapter {
135136 let signature = Signature :: from_electrum ( & decoded_signature) ;
136137 let message = Message :: from_slice ( & hash_message ( state_root) ) ;
137138
138- match verify_address ( & address, & signature, & message) {
139- Ok ( result) => Ok ( result) ,
140- Err ( _) => Ok ( false ) ,
141- }
139+ verify_address ( & address, & signature, & message) . or ( Ok ( false ) )
142140 }
143141
144142 fn validate_channel ( & self , channel : & Channel ) -> AdapterResult < bool > {
@@ -159,14 +157,8 @@ impl Adapter for EthereumAdapter {
159157 ) ) ;
160158 }
161159 // 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- ) ) ;
160+ if let Err ( error) = EthereumAdapter :: is_channel_valid ( & self . config , channel) {
161+ return Err ( AdapterError :: InvalidChannel ( error. to_string ( ) ) ) ;
170162 }
171163 // query the blockchain for the channel status
172164 let contract_address = Address :: from_slice ( self . config . ethereum_core_address . as_bytes ( ) ) ;
@@ -178,7 +170,7 @@ impl Adapter for EthereumAdapter {
178170 . wait ( )
179171 . map_err ( |_| map_error ( "contract channel status query failed" ) ) ?;
180172
181- if channel_status != 1 . into ( ) {
173+ if channel_status != * CHANNEL_STATE_ACTIVE {
182174 return Err ( AdapterError :: Configuration (
183175 "channel is not Active on the ethereum network" . to_string ( ) ,
184176 ) ) ;
@@ -192,14 +184,11 @@ impl Adapter for EthereumAdapter {
192184 return Err ( AdapterError :: Failed ( "invaild token id" . to_string ( ) ) ) ;
193185 }
194186
195- let token_id = token. to_owned ( ) [ token. len ( ) - 16 ..] . to_string ( ) ;
187+ let token_id = token[ token. len ( ) - 16 ..] . to_string ( ) ;
196188
197189 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 ( ) ) ;
190+ if let Some ( token) = session_tokens. get ( & token_id) {
191+ return Ok ( token. to_owned ( ) ) ;
203192 }
204193
205194 let parts: Vec < & str > = token. split ( '.' ) . collect ( ) ;
@@ -208,7 +197,7 @@ impl Adapter for EthereumAdapter {
208197 ( Some ( header_encoded) , Some ( payload_encoded) , Some ( token_encoded) ) => {
209198 ( header_encoded, payload_encoded, token_encoded)
210199 }
211- ( _ , _ , _ ) => {
200+ _ => {
212201 return Err ( AdapterError :: Failed ( format ! (
213202 "{} token string is incorrect" ,
214203 token
@@ -236,7 +225,7 @@ impl Adapter for EthereumAdapter {
236225 . wait ( )
237226 . map_err ( |_| map_error ( "failed query priviledge level on contract" ) ) ?;
238227
239- if priviledge_level == 0 . into ( ) {
228+ if priviledge_level == * PRIVILEGE_LEVEL_NONE {
240229 return Err ( AdapterError :: Authorization (
241230 "insufficient privilege" . to_string ( ) ,
242231 ) ) ;
@@ -286,14 +275,11 @@ impl Adapter for EthereumAdapter {
286275}
287276
288277fn check_validator_id_checksum ( channel : & Channel ) -> bool {
289- let invalid_address_checkum : Vec < & ValidatorDesc > = channel
278+ channel
290279 . spec
291280 . validators
292281 . into_iter ( )
293- . filter ( |v| v. id != eth_checksum:: checksum ( & v. id ) )
294- . collect ( ) ;
295-
296- invalid_address_checkum. is_empty ( )
282+ . any ( |v| v. id != eth_checksum:: checksum ( & v. id ) )
297283}
298284
299285fn hash_message ( message : & str ) -> [ u8 ; 32 ] {
@@ -361,15 +347,11 @@ pub fn ewt_sign(
361347 alg : "ETH" . to_string ( ) ,
362348 } ;
363349
364- let header_encoded = base64:: encode_config (
365- & serde_json:: to_string ( & header) ?. as_bytes ( ) ,
366- base64:: URL_SAFE_NO_PAD ,
367- ) ;
350+ let header_encoded =
351+ base64:: encode_config ( & serde_json:: to_string ( & header) ?, base64:: URL_SAFE_NO_PAD ) ;
368352
369- let payload_encoded = base64:: encode_config (
370- & serde_json:: to_string ( payload) ?. as_bytes ( ) ,
371- base64:: URL_SAFE_NO_PAD ,
372- ) ;
353+ let payload_encoded =
354+ base64:: encode_config ( & serde_json:: to_string ( payload) ?, base64:: URL_SAFE_NO_PAD ) ;
373355
374356 let message = Message :: from_slice ( & hash_message ( & format ! (
375357 "{}.{}" ,
@@ -441,7 +423,7 @@ mod test {
441423 let eth_adapter = setup_eth_adapter ( ) ;
442424 let unlock = eth_adapter. unlock ( ) . expect ( "should unlock eth adapter" ) ;
443425
444- assert_eq ! ( true , unlock, "failed to unlock eth adapter" ) ;
426+ assert_eq ! ( ( ) , unlock, "failed to unlock eth adapter" ) ;
445427 }
446428
447429 #[ test]
@@ -483,7 +465,7 @@ mod test {
483465
484466 let payload = Payload {
485467 id : "awesomeValidator" . to_string ( ) ,
486- era : 10_0000 ,
468+ era : 100_000 ,
487469 address : Some ( eth_adapter. whoami ( ) ) ,
488470 identity : None ,
489471 } ;
0 commit comments