@@ -34,13 +34,19 @@ abigen!(Events, "abi/Events.json");
34
34
pub struct MetaStoreClient {
35
35
address : Address ,
36
36
client : Arc < SignerMiddleware < Arc < NonceManagerMiddleware < Provider < Ws > > > , LocalWallet > > ,
37
+ use_legacy_tx : bool ,
37
38
}
38
39
39
40
unsafe impl Sync for MetaStoreClient { }
40
41
unsafe impl Send for MetaStoreClient { }
41
42
42
43
impl MetaStoreClient {
43
- pub async fn new ( contract_addr : & str , rpc_url : & str , wallet : LocalWallet ) -> Result < Self > {
44
+ pub async fn new (
45
+ contract_addr : & str ,
46
+ rpc_url : & str ,
47
+ wallet : LocalWallet ,
48
+ use_legacy_tx : bool ,
49
+ ) -> Result < Self > {
44
50
let address = contract_addr
45
51
. parse :: < Address > ( )
46
52
. map_err ( |_| DB3Error :: InvalidAddress ) ?;
@@ -51,7 +57,11 @@ impl MetaStoreClient {
51
57
let provider_arc = Arc :: new ( provider) ;
52
58
let signable_client = SignerMiddleware :: new ( provider_arc, wallet) ;
53
59
let client = Arc :: new ( signable_client) ;
54
- Ok ( Self { address, client } )
60
+ Ok ( Self {
61
+ address,
62
+ client,
63
+ use_legacy_tx,
64
+ } )
55
65
}
56
66
57
67
pub async fn register_data_network (
@@ -74,11 +84,21 @@ impl MetaStoreClient {
74
84
empty_index_addresses,
75
85
desc,
76
86
) ;
77
- tx. send ( )
78
- . await
79
- . map_err ( |e| DB3Error :: StoreEventError ( format ! ( "fail to register data network {e}" ) ) ) ?;
87
+ match self . use_legacy_tx {
88
+ true => {
89
+ tx. legacy ( ) . send ( ) . await . map_err ( |e| {
90
+ DB3Error :: StoreEventError ( format ! ( "fail to register data network {e}" ) )
91
+ } ) ?;
92
+ }
93
+ false => {
94
+ tx. send ( ) . await . map_err ( |e| {
95
+ DB3Error :: StoreEventError ( format ! ( "fail to register data network {e}" ) )
96
+ } ) ?;
97
+ }
98
+ }
80
99
Ok ( ( ) )
81
100
}
101
+
82
102
pub async fn create_database ( & self , network : u64 , desc : & str ) -> Result < ( U256 , TxHash ) > {
83
103
let store = DB3MetaStore :: new ( self . address , self . client . clone ( ) ) ;
84
104
let desc_bytes = desc. as_bytes ( ) ;
@@ -88,12 +108,25 @@ impl MetaStoreClient {
88
108
let mut desc_bytes32: [ u8 ; 32 ] = Default :: default ( ) ;
89
109
desc_bytes32[ ..desc_bytes. len ( ) ] . clone_from_slice ( desc_bytes) ;
90
110
let tx = store. create_doc_database ( network. into ( ) , desc_bytes32) ;
91
- let pending_tx = tx. send ( ) . await . map_err ( |e| {
92
- DB3Error :: StoreEventError ( format ! (
93
- "fail to send create doc database request with error {e}"
94
- ) )
95
- } ) ?;
96
- let tx_hash = pending_tx. tx_hash ( ) ;
111
+ let tx_hash = match self . use_legacy_tx {
112
+ true => {
113
+ let tx = tx. legacy ( ) ;
114
+ let pending_tx = tx. send ( ) . await . map_err ( |e| {
115
+ DB3Error :: StoreEventError ( format ! (
116
+ "fail to send create doc database request with error {e}"
117
+ ) )
118
+ } ) ?;
119
+ pending_tx. tx_hash ( )
120
+ }
121
+ false => {
122
+ let pending_tx = tx. send ( ) . await . map_err ( |e| {
123
+ DB3Error :: StoreEventError ( format ! (
124
+ "fail to send create doc database request with error {e}"
125
+ ) )
126
+ } ) ?;
127
+ pending_tx. tx_hash ( )
128
+ }
129
+ } ;
97
130
let mut count_down: i32 = 5 ;
98
131
loop {
99
132
if count_down <= 0 {
@@ -159,11 +192,25 @@ impl MetaStoreClient {
159
192
ar_tx, network
160
193
) ;
161
194
let tx = store. update_rollup_steps ( network_id, ar_tx_binary) ;
162
- //TODO set gas limit
163
- let pending_tx = tx. send ( ) . await . map_err ( |e| {
164
- DB3Error :: StoreEventError ( format ! ( "fail to send update rollup request with error {e}" ) )
165
- } ) ?;
166
- let tx_hash = pending_tx. tx_hash ( ) ;
195
+ let tx_hash = match self . use_legacy_tx {
196
+ true => {
197
+ let tx = tx. legacy ( ) ;
198
+ let pending_tx = tx. send ( ) . await . map_err ( |e| {
199
+ DB3Error :: StoreEventError ( format ! (
200
+ "fail to send create doc database request with error {e}"
201
+ ) )
202
+ } ) ?;
203
+ pending_tx. tx_hash ( )
204
+ }
205
+ false => {
206
+ let pending_tx = tx. send ( ) . await . map_err ( |e| {
207
+ DB3Error :: StoreEventError ( format ! (
208
+ "fail to send create doc database request with error {e}"
209
+ ) )
210
+ } ) ?;
211
+ pending_tx. tx_hash ( )
212
+ }
213
+ } ;
167
214
info ! ( "update rollup step done! tx hash: {}" , tx_hash) ;
168
215
let mut count_down: i32 = 5 ;
169
216
loop {
@@ -195,6 +242,7 @@ mod tests {
195
242
use super :: * ;
196
243
use fastcrypto:: encoding:: { Base64 , Encoding } ;
197
244
use tokio:: time:: { sleep, Duration as TokioDuration } ;
245
+
198
246
#[ tokio:: test]
199
247
async fn register_no1_data_network ( ) {
200
248
let data = hex:: decode ( "ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" )
@@ -206,7 +254,7 @@ mod tests {
206
254
let contract_addr = "0x5fbdb2315678afecb367f032d93f642f64180aa3" ;
207
255
let rpc_url = "ws://127.0.0.1:8545" ;
208
256
sleep ( TokioDuration :: from_millis ( 10 * 1000 ) ) . await ;
209
- let client = MetaStoreClient :: new ( contract_addr, rpc_url, wallet)
257
+ let client = MetaStoreClient :: new ( contract_addr, rpc_url, wallet, false )
210
258
. await
211
259
. unwrap ( ) ;
212
260
let result = client
@@ -226,7 +274,7 @@ mod tests {
226
274
let rollup_node_address = wallet. address ( ) ;
227
275
let contract_addr = "0x5FbDB2315678afecb367f032d93F642f64180aa3" ;
228
276
let rpc_url = "ws://127.0.0.1:8545" ;
229
- let client = MetaStoreClient :: new ( contract_addr, rpc_url, wallet)
277
+ let client = MetaStoreClient :: new ( contract_addr, rpc_url, wallet, false )
230
278
. await
231
279
. unwrap ( ) ;
232
280
let result = client
0 commit comments