Skip to content

This repository contains Wallet Core used by Zerion iOS and macOS apps.

License

Notifications You must be signed in to change notification settings

zeriontech/wallet-core-ios

Repository files navigation

Zerion Wallet Core

This repository contains Wallet Core used by Zerion app.

Examples

Check tests to see all examples.

Define wallet storage and manager:

let storage = ZerionWalletStorage(service: "com.mywallet")
let manager = ZerionWalletManager(storage: storage)

Import or create wallet:

let walletContainer = try manager.importWalletPersist(mnemonic: mnemonic, password: password, name: "My wallet")
// or
let walletContainer = try manager.importWalletPersist(privateKey: privateKey, password: password, name: "My wallet")
// or
let walletContainer = try manager.createWalletPersist(password: password, name: "My wallet")

Derive accounts with index or derivation path:

let account0 = walletContainer.deriveAccount(accountIndex: 0, password: password)
let account1 = walletContainer.deriveAccount(derivationPath: "m/44'/60'/0'/0/1", password: password)

Access private key via index or derivation path:

let privateKey0 = try walletContainer.decryptPrivateKey(accountIndex: 0, password: password).hexString
let privateKey1 = try walletContainer.decryptPrivateKey(derivationPath: "m/44'/60'/0'/0/1", password: password).hexString

Access seed phrase:

let mnemonic = walletContainer.decryptMnemonic(password: password)

Sign transaction:

let transaction = TransactionInput(
  chainID: ...,
  nonce: ...,
  gasPrice: ...,
  gas: ...,
  toAddress: ...,
  data: ...,
  amount: ...,
)

let signed = try Signer.sign(input: .transaction(transaction), privateKey: privateKey).hexString

Installation via Swift Package Manager

Xcode

Select File > Add Packages... > Add Package Dependency... and insert git url.

CLI

First, create Package.swift that its package declaration includes:

// swift-tools-version:5.0
import PackageDescription

let package = Package(
    name: "MyLibrary",
    products: [
        .library(name: "MyLibrary", targets: ["MyLibrary"]),
    ],
    dependencies: [
        .package(url: "https://github.com/zeriontech/zerion-wallet-core-ios.git", branch: "master"),
    ],
    targets: [
        .target(name: "MyLibrary", dependencies: ["ZerionWalletCore"]),
    ]
)

Then, type

$ swift build

Dependencies

TrustWalletCore - low level wallet cryptography functionality, written in C++ with Swift wrappers.

KeychainAccess - wrapper for iOS keychain.

SwiftyJSON - easy JSON handling with Swift.

CryptoSwift - crypto related functions and helpers for Swift implemented in Swift.

License

Zerion Wallet Core is available under the Apache 2.0 license. See the LICENSE file for more info.

About

This repository contains Wallet Core used by Zerion iOS and macOS apps.

Resources

License

Stars

Watchers

Forks

Languages