Skip to content

Commit 2321aeb

Browse files
Update Usage.md
1 parent 8555b85 commit 2321aeb

File tree

1 file changed

+144
-7
lines changed

1 file changed

+144
-7
lines changed

Documentation/Usage.md

Lines changed: 144 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,157 @@
44

55
### Create Account
66

7+
#### Create Account With Private Key
78
```swift
8-
// Create keystore and account with password.
9+
public func createWalletWithPrivateKey(withName: String?,
10+
password: String,
11+
completion: @escaping (KeyWalletModel?, Error?) -> Void)
12+
{
13+
guard let newWallet = try? EthereumKeystoreV3(password: password) else {
14+
completion(nil, WalletSavingError.couldNotCreateKeystore)
15+
return
16+
}
17+
guard let wallet = newWallet, wallet.addresses?.count == 1 else {
18+
completion(nil, WalletSavingError.couldNotCreateWalletWithAddress)
19+
return
20+
}
21+
guard let keyData = try? JSONEncoder().encode(wallet.keystoreParams) else {
22+
completion(nil, WalletSavingError.couldNotGetKeyData)
23+
return
24+
}
25+
guard let address = wallet.addresses?.first?.address else {
26+
completion(nil, WalletSavingError.couldNotCreateAddress)
27+
return
28+
}
29+
let walletModel = KeyWalletModel(address: address,
30+
data: keyData,
31+
name: withName ?? "",
32+
isHD: false)
33+
completion(walletModel, nil)
34+
}
35+
36+
```
37+
38+
#### Create Account With Mnemonics Phrase
39+
```swift
40+
func generateMnemonics(bitsOfEntropy: Int) -> String? {
41+
guard let mnemonics = try? BIP39.generateMnemonics(bitsOfEntropy: bitsOfEntropy),
42+
let unwrapped = mnemonics else {
43+
return nil
44+
}
45+
return unwrapped
46+
}
947

10-
let keystore = try! EthereumKeystoreV3(password: "changeme"); // generates a private key internally if node "privateKey" parameter supplied
11-
let account = keystore!.addresses![0]
12-
print(account)
48+
func createHDWallet(withName name: String,
49+
password: String,
50+
completion: @escaping (KeyWalletModel?, Error?) -> Void)
51+
{
52+
53+
guard let mnemonics = keysService.generateMnemonics(bitsOfEntropy: 128) else {
54+
completion(nil, WalletSavingError.couldNotGenerateMnemonics)
55+
return
56+
}
1357

14-
let data = try! keystore!.serialize() // internally serializes to JSON
15-
print(try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions(rawValue:0)))
16-
let key = try! keystore!.UNSAFE_getPrivateKeyData(password: "changeme", account: account) // you should rarely use this and expose a key manually
58+
guard let keystore = try? BIP32Keystore(
59+
mnemonics: mnemonics,
60+
password: password,
61+
mnemonicsPassword: "",
62+
language: .english
63+
),
64+
let wallet = keystore else {
65+
completion(nil, WalletSavingError.couldNotCreateKeystore)
66+
return
67+
}
68+
guard let address = wallet.addresses?.first?.address else {
69+
completion(nil, WalletSavingError.couldNotCreateAddress)
70+
return
71+
}
72+
guard let keyData = try? JSONEncoder().encode(wallet.keystoreParams) else {
73+
completion(nil, WalletSavingError.couldNotGetKeyData)
74+
return
75+
}
76+
let walletModel = KeyWalletModel(address: address,
77+
data: keyData,
78+
name: name,
79+
isHD: true)
80+
completion(walletModel, nil)
81+
}
1782
```
1883

1984
### Import Account
2085

86+
#### Import Account With Private Key
87+
```swift
88+
public func addWalletWithPrivateKey(withName: String?,
89+
key: String,
90+
password: String,
91+
completion: @escaping (KeyWalletModel?, Error?) -> Void)
92+
{
93+
let text = key.trimmingCharacters(in: .whitespacesAndNewlines)
94+
95+
guard let data = Data.fromHex(text) else {
96+
completion(nil, WalletSavingError.wrongKey)
97+
return
98+
}
99+
100+
guard let newWallet = try? EthereumKeystoreV3(privateKey: data, password: password) else {
101+
completion(nil, WalletSavingError.couldNotSaveTheWallet)
102+
return
103+
}
104+
105+
guard let wallet = newWallet, wallet.addresses?.count == 1 else {
106+
completion(nil, WalletSavingError.couldNotCreateWalletWithAddress)
107+
return
108+
}
109+
guard let keyData = try? JSONEncoder().encode(wallet.keystoreParams) else {
110+
completion(nil, WalletSavingError.couldNotGetKeyData)
111+
return
112+
}
113+
guard let address = newWallet?.addresses?.first?.address else {
114+
completion(nil, WalletSavingError.couldNotCreateAddress)
115+
return
116+
}
117+
let walletModel = KeyWalletModel(address: address,
118+
data: keyData,
119+
name: withName ?? "",
120+
isHD: false)
121+
completion(walletModel, nil)
122+
}
123+
124+
```
125+
126+
#### Import Account With Mnemonics Phrase
127+
```swift
128+
func addHDWallet(withName name: String,
129+
password: String,
130+
mnemonics: String,
131+
completion: @escaping (KeyWalletModel?, Error?) -> Void)
132+
{
133+
guard let keystore = try? BIP32Keystore(
134+
mnemonics: mnemonics,
135+
password: password,
136+
mnemonicsPassword: "",
137+
language: .english
138+
),
139+
let wallet = keystore else {
140+
completion(nil, WalletSavingError.couldNotCreateKeystore)
141+
return
142+
}
143+
guard let address = wallet.addresses?.first?.address else {
144+
completion(nil, WalletSavingError.couldNotCreateAddress)
145+
return
146+
}
147+
guard let keyData = try? JSONEncoder().encode(wallet.keystoreParams) else {
148+
completion(nil, WalletSavingError.couldNotGetKeyData)
149+
return
150+
}
151+
let walletModel = KeyWalletModel(address: address,
152+
data: keyData,
153+
name: name,
154+
isHD: true)
155+
completion(walletModel, nil)
156+
}
157+
```
21158

22159
### Manage Keystore
23160

0 commit comments

Comments
 (0)