Skip to content

Commit 8bc9a89

Browse files
Update Usage.md
1 parent 92473a1 commit 8bc9a89

File tree

1 file changed

+64
-8
lines changed

1 file changed

+64
-8
lines changed

Documentation/Usage.md

Lines changed: 64 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
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

Comments
 (0)