@@ -2,14 +2,12 @@ use crate::EthereumChannel;
2
2
use async_trait:: async_trait;
3
3
use chrono:: Utc ;
4
4
use error:: * ;
5
- use ethabi:: token:: Token ;
6
- use ethkey:: Password ;
7
- use ethstore:: SafeAccount ;
8
- use futures:: { compat:: Future01CompatExt , TryFutureExt } ;
9
- use lazy_static:: lazy_static;
10
- use parity_crypto:: publickey:: {
11
- public_to_address, recover, verify_address, Address , Message , Signature ,
5
+ use ethstore:: {
6
+ ethkey:: { public_to_address, recover, verify_address, Address , Message , Password , Signature } ,
7
+ SafeAccount ,
12
8
} ;
9
+ use futures:: TryFutureExt ;
10
+ use lazy_static:: lazy_static;
13
11
use primitives:: {
14
12
adapter:: { Adapter , AdapterResult , Error as AdapterError , KeystoreOptions , Session } ,
15
13
channel_validator:: ChannelValidator ,
@@ -21,13 +19,12 @@ use serde::{Deserialize, Serialize};
21
19
use serde_json:: Value ;
22
20
use std:: convert:: TryFrom ;
23
21
use std:: fs;
24
- use std:: sync:: Arc ;
25
22
use tiny_keccak:: Keccak ;
26
23
use web3:: {
24
+ contract:: tokens:: Tokenizable ,
27
25
contract:: { Contract , Options } ,
28
- transports:: EventLoopHandle ,
29
26
transports:: Http ,
30
- types:: U256 ,
27
+ types:: { H256 , U256 } ,
31
28
Web3 ,
32
29
} ;
33
30
@@ -46,7 +43,6 @@ pub struct EthereumAdapter {
46
43
keystore_pwd : Password ,
47
44
config : Config ,
48
45
wallet : Option < SafeAccount > ,
49
- event_loop : Arc < EventLoopHandle > ,
50
46
web3 : Web3 < Http > ,
51
47
relayer : RelayerClient ,
52
48
}
@@ -70,9 +66,8 @@ impl EthereumAdapter {
70
66
71
67
let address = ValidatorId :: try_from ( & address) . map_err ( KeystoreError :: AddressInvalid ) ?;
72
68
73
- let ( eloop , transport) =
69
+ let transport =
74
70
web3:: transports:: Http :: new ( & config. ethereum_network ) . map_err ( Error :: Web3 ) ?;
75
- let event_loop = Arc :: new ( eloop) ;
76
71
let web3 = web3:: Web3 :: new ( transport) ;
77
72
let relayer =
78
73
RelayerClient :: new ( & config. ethereum_adapter_relayer ) . map_err ( Error :: RelayerClient ) ?;
@@ -83,7 +78,6 @@ impl EthereumAdapter {
83
78
keystore_pwd : opts. keystore_pwd . into ( ) ,
84
79
wallet : None ,
85
80
config : config. to_owned ( ) ,
86
- event_loop,
87
81
web3,
88
82
relayer,
89
83
} )
@@ -115,7 +109,7 @@ impl Adapter for EthereumAdapter {
115
109
fn sign ( & self , state_root : & str ) -> AdapterResult < String , Self :: AdapterError > {
116
110
if let Some ( wallet) = & self . wallet {
117
111
let state_root = hex:: decode ( state_root) . map_err ( VerifyError :: StateRootDecoding ) ?;
118
- let message = Message :: from_slice ( & hash_message ( & state_root) ) ;
112
+ let message = Message :: from ( hash_message ( & state_root) ) ;
119
113
let wallet_sign = wallet
120
114
. sign ( & self . keystore_pwd , & message)
121
115
. map_err ( EwtSigningError :: SigningMessage ) ?;
@@ -139,10 +133,10 @@ impl Adapter for EthereumAdapter {
139
133
return Err ( VerifyError :: SignatureNotPrefixed . into ( ) ) ;
140
134
}
141
135
let decoded_signature = hex:: decode ( & sig[ 2 ..] ) . map_err ( VerifyError :: SignatureDecoding ) ?;
142
- let address = Address :: from_slice ( signer. inner ( ) ) ;
136
+ let address = Address :: from ( * signer. inner ( ) ) ;
143
137
let signature = Signature :: from_electrum ( & decoded_signature) ;
144
138
let state_root = hex:: decode ( state_root) . map_err ( VerifyError :: StateRootDecoding ) ?;
145
- let message = Message :: from_slice ( & hash_message ( & state_root) ) ;
139
+ let message = Message :: from ( hash_message ( & state_root) ) ;
146
140
147
141
let verify_address = verify_address ( & address, & signature, & message)
148
142
. map_err ( VerifyError :: PublicKeyRecovery ) ?;
@@ -173,20 +167,21 @@ impl Adapter for EthereumAdapter {
173
167
) ) ;
174
168
}
175
169
176
- let contract_address: Address = self . config . ethereum_core_address . into ( ) ;
177
-
178
- let contract = Contract :: from_json ( self . web3 . eth ( ) , contract_address, & ADEXCORE_ABI )
179
- . map_err ( Error :: ContractInitialization ) ?;
170
+ let contract = Contract :: from_json (
171
+ self . web3 . eth ( ) ,
172
+ self . config . ethereum_core_address . into ( ) ,
173
+ & ADEXCORE_ABI ,
174
+ )
175
+ . map_err ( Error :: ContractInitialization ) ?;
180
176
181
177
let channel_status: U256 = contract
182
178
. query (
183
179
"states" ,
184
- Token :: FixedBytes ( channel. id . as_ref ( ) . to_vec ( ) ) ,
180
+ H256 ( * channel. id ) . into_token ( ) ,
185
181
None ,
186
182
Options :: default ( ) ,
187
183
None ,
188
184
)
189
- . compat ( )
190
185
. await
191
186
. map_err ( Error :: ContractQuerying ) ?;
192
187
@@ -382,7 +377,7 @@ pub fn ewt_sign(
382
377
& serde_json:: to_string ( payload) . map_err ( EwtSigningError :: PayloadSerialization ) ?,
383
378
base64:: URL_SAFE_NO_PAD ,
384
379
) ;
385
- let message = Message :: from_slice ( & hash_message (
380
+ let message = Message :: from ( hash_message (
386
381
& format ! ( "{}.{}" , header_encoded, payload_encoded) . as_bytes ( ) ,
387
382
) ) ;
388
383
let signature: Signature = signer
@@ -404,7 +399,7 @@ pub fn ewt_verify(
404
399
payload_encoded : & str ,
405
400
token : & str ,
406
401
) -> Result < VerifyPayload , EwtVerifyError > {
407
- let message = Message :: from_slice ( & hash_message (
402
+ let message = Message :: from ( hash_message (
408
403
& format ! ( "{}.{}" , header_encoded, payload_encoded) . as_bytes ( ) ,
409
404
) ) ;
410
405
@@ -424,7 +419,7 @@ pub fn ewt_verify(
424
419
serde_json:: from_str ( & payload_string) . map_err ( EwtVerifyError :: PayloadDeserialization ) ?;
425
420
426
421
let verified_payload = VerifyPayload {
427
- from : ValidatorId :: from ( address. as_fixed_bytes ( ) ) ,
422
+ from : ValidatorId :: from ( & address. 0 ) ,
428
423
payload,
429
424
} ;
430
425
@@ -436,13 +431,13 @@ mod test {
436
431
use super :: * ;
437
432
use crate :: EthereumChannel ;
438
433
use chrono:: { Duration , Utc } ;
439
- use ethabi:: token:: Token ;
440
434
use hex:: FromHex ;
441
435
use primitives:: adapter:: KeystoreOptions ;
442
436
use primitives:: config:: configuration;
443
437
use primitives:: ChannelId ;
444
438
use primitives:: { ChannelSpec , EventSubmission , SpecValidators , ValidatorDesc } ;
445
439
use std:: convert:: TryFrom ;
440
+ use web3:: types:: Address ;
446
441
447
442
fn setup_eth_adapter ( contract_address : Option < [ u8 ; 20 ] > ) -> EthereumAdapter {
448
443
let mut config = configuration ( "development" , None ) . expect ( "failed parse config" ) ;
@@ -577,7 +572,7 @@ mod test {
577
572
578
573
#[ tokio:: test]
579
574
async fn should_validate_valid_channel_properly ( ) {
580
- let ( _eloop , http) =
575
+ let http =
581
576
web3:: transports:: Http :: new ( "http://localhost:8545" ) . expect ( "failed to init transport" ) ;
582
577
583
578
let web3 = web3:: Web3 :: new ( http) ;
@@ -604,10 +599,8 @@ mod test {
604
599
opt. gas = Some ( 6_721_975 . into ( ) ) ;
605
600
} ) )
606
601
. execute ( token_bytecode, ( ) , leader_account)
607
- . expect ( "Correct parameters are passed to the constructor." )
608
- . compat ( )
609
602
. await
610
- . expect ( "failed to wait " ) ;
603
+ . expect ( "Correct parameters are passed to the constructor. " ) ;
611
604
612
605
let adex_contract = Contract :: deploy ( web3. eth ( ) , & ADEXCORE_ABI )
613
606
. expect ( "invalid adex contract" )
@@ -617,23 +610,17 @@ mod test {
617
610
opt. gas = Some ( 6_721_975 . into ( ) ) ;
618
611
} ) )
619
612
. execute ( adex_bytecode, ( ) , leader_account)
620
- . expect ( "Correct parameters are passed to the constructor." )
621
- . compat ( )
622
613
. await
623
- . expect ( "failed to init adex contract " ) ;
614
+ . expect ( "Correct parameters are passed to the constructor. " ) ;
624
615
625
616
// contract call set balance
626
617
token_contract
627
618
. call (
628
619
"setBalanceTo" ,
629
- (
630
- Token :: Address ( leader_account) ,
631
- Token :: Uint ( U256 :: from ( 2000 as u64 ) ) ,
632
- ) ,
620
+ ( Address :: from ( leader_account) , U256 :: from ( 2000_u64 ) ) ,
633
621
leader_account,
634
622
Options :: default ( ) ,
635
623
)
636
- . compat ( )
637
624
. await
638
625
. expect ( "Failed to set balance" ) ;
639
626
@@ -697,7 +684,6 @@ mod test {
697
684
leader_account,
698
685
Options :: default ( ) ,
699
686
)
700
- . compat ( )
701
687
. await
702
688
. expect ( "open channel" ) ;
703
689
0 commit comments