11# Usage
22
3+ # Account
4+
35## Account Management
46
57#### Preffered keys Wallet Model
@@ -12,10 +14,10 @@ struct WalletModel {
1214 let isHD: Bool
1315
1416 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 )
1921 return model
2022 }
2123}
@@ -66,9 +68,9 @@ class ERC20TokenModel {
6668
6769 static func fromCoreData (crModel : ERC20Token) -> ERC20TokenModel {
6870 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 ?? " " )
7274 return model
7375 }
7476}
@@ -281,6 +283,42 @@ func getPrivateKey(for wallet: WalletModel, password: String) throws -> String {
281283}
282284```
283285
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+
284322### Ethereum Address
285323
286324#### Initializing Ethereum Address
@@ -301,7 +339,7 @@ func getETHbalance(for wallet: WalletModel) throws -> String {
301339 guard let walletAddress = EthereumAddress (wallet.address ) else {
302340 throw Web3Error.walletError
303341 }
304- let web3 = self . web3Instance
342+ let web3 = web3Instance
305343 let balanceResult = try web3.eth .getBalance (address : walletAddress)
306344 guard let balanceString = Web3.Utils.formatToEthereumUnits (balanceResult, toUnits : .eth , decimals : 3 ) else {
307345 throw Web3Error.dataError
@@ -513,3 +551,21 @@ func getBlockNumber(_ web3: web3) throws -> BigUInt {
513551 }
514552}
515553```
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