1
1
# Usage
2
2
3
+ # Account
4
+
3
5
## Account Management
4
6
5
7
#### Preffered keys Wallet Model
@@ -12,10 +14,10 @@ struct WalletModel {
12
14
let isHD: Bool
13
15
14
16
static func fromCoreData (crModel : Wallet) -> WalletModel {
15
- let model = KeyWalletModel (address : crModel.address ?? " " ,
16
- data : crModel.data ,
17
- name : crModel.name ?? " " ,
18
- isHD : crModel.isHD )
17
+ let model = KeyWalletModel (address : crModel.address ?? " " ,
18
+ data : crModel.data ,
19
+ name : crModel.name ?? " " ,
20
+ isHD : crModel.isHD )
19
21
return model
20
22
}
21
23
}
@@ -66,9 +68,9 @@ class ERC20TokenModel {
66
68
67
69
static func fromCoreData (crModel : ERC20Token) -> ERC20TokenModel {
68
70
let model = ERC20TokenModel (name : crModel.name ?? " " ,
69
- address : crModel.address ?? " " ,
70
- decimals : crModel.decimals ?? " " ,
71
- symbol : crModel.symbol ?? " " )
71
+ address : crModel.address ?? " " ,
72
+ decimals : crModel.decimals ?? " " ,
73
+ symbol : crModel.symbol ?? " " )
72
74
return model
73
75
}
74
76
}
@@ -281,6 +283,42 @@ func getPrivateKey(for wallet: WalletModel, password: String) throws -> String {
281
283
}
282
284
```
283
285
286
+ # Web3 and Web2 actions
287
+
288
+ ## web3 instance
289
+
290
+ Firstly you need to initialize 'web3' instance for almost all further operations:
291
+ ``` swift
292
+ // common Http/Https provider
293
+ let web3instance = web3 (provider : Web3HttpProvider (< http/ https provider url> )
294
+ // precompiled Infura providers
295
+ let web3instance = Web3.InfuraMainnetWeb3 () // Mainnet Infura Provider
296
+ let web3instance = Web3.InfuraRinkebyWeb3 () // Mainnet Rinkeby Provider
297
+ let web3instance = Web3.InfuraRopstenWeb3 () // Mainnet Ropsten Provider
298
+ ```
299
+
300
+ Then you will need to attach keystore manager to web3 instance:
301
+ ```swift
302
+ web3.addKeystoreManager (keystoreManager)
303
+ ```
304
+
305
+ You can get it from wallet model we've previosly created:
306
+ ```swift
307
+ var keystoreManager: KeystoreManager? {
308
+ if self .isHD {
309
+ guard let keystore = BIP32Keystore (wallet.data ) else {
310
+ return nil
311
+ }
312
+ return KeystoreManager ([keystore])
313
+ } else {
314
+ guard let keystore = EthereumKeystoreV3 (wallet.data ) else {
315
+ return nil
316
+ }
317
+ return KeystoreManager ([keystore])
318
+ }
319
+ }
320
+ ```
321
+
284
322
### Ethereum Address
285
323
286
324
#### Initializing Ethereum Address
@@ -301,7 +339,7 @@ func getETHbalance(for wallet: WalletModel) throws -> String {
301
339
guard let walletAddress = EthereumAddress (wallet.address ) else {
302
340
throw Web3Error.walletError
303
341
}
304
- let web3 = self . web3Instance
342
+ let web3 = web3Instance
305
343
let balanceResult = try web3.eth .getBalance (address : walletAddress)
306
344
guard let balanceString = Web3.Utils.formatToEthereumUnits (balanceResult, toUnits : .eth , decimals : 3 ) else {
307
345
throw Web3Error.dataError
@@ -513,3 +551,21 @@ func getBlockNumber(_ web3: web3) throws -> BigUInt {
513
551
}
514
552
}
515
553
```
554
+
555
+ ## Infura Websockets
556
+
557
+ ### Subscribe on new pending transactions
558
+
559
+ ```swift
560
+ let delegate: Web3SocketDelegate = < some delegate class which will receive messages from endpoint>
561
+ let socketProvider = InfuraWebsocketProvider.connectToSocket (.Mainnet , delegate : delegate)
562
+ try ! socketProvider.subscribeOnNewPendingTransactions ()
563
+ ```
564
+
565
+ ### Get latest new pending transactions
566
+
567
+ ```swift
568
+ let delegate: Web3SocketDelegate = < some delegate class which will receive messages from endpoint>
569
+ let socketProvider = InfuraWebsocketProvider.connectToSocket (.Mainnet , delegate : delegate)
570
+ try ! socketProvider.filter (method : .newPendingTransactionFilter )
571
+ ```
0 commit comments