horizontalsystems / atomic-swap-kit-ios

Atomic Swap iOS library for Bitcoin (BTC) and Bitcoin Cash (BCH) swaps in decentralized manner. Implemented on Swift.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Overview

This is a swift library that allows Atomic Swap, decentralized crypto currency exchange, between 2 parties. The implementation is based on Hash Time Locked Contracts.

Usage

Initialization

The primary class to use is SwapKit.

import BitcoinKit
import BitcoinCashKit
import AtomicSwapKit

let swapKit = SwapKit.instance()

swapKit.register(blockchainCreator: BitcoinSwapBlockchainCreator(kit: bitcoinAdapter.bitcoinKit), forCoin: "BTC")
swapKit.register(blockchainCreator: BitcoinSwapBlockchainCreator(kit: bitcoinCashAdapter.bitcoinCashKit), forCoin: "BCH")
swapKit.load()

The supported coins should be registered to SwapKit. The load method resumes atomic swaps previously in progress.

Exchanging crypto-curencies

There are 2 sides that take part in the process: Initiator and Responder. The process consists of the following steps:

Request for a swap

Initiator creates swap request:

let swapRequest = try swapKit.createSwapRequest(haveCoinCode: "BTC", wantCoinCode: "BCH", rate: 0.2, amount: 0.5)

Response to a swap

Responder creates response for this request:

let swapResponse = swapKit.createSwapResponse(from: swapRequest)

Creating response also starts the swap process in the Responder side.

Initiate swap

Initiator takes response and starts the swap

swapKit.initiateSwap(from: swapResponse)

Initiator and Responder Communication

The Swap Request and Swap Response are the simple data objects. They can be easily serialized into/parsed from strings and interchanged via standard apps, like messenger or email.

Prerequisites

  • Xcode 10.0+
  • Swift 5+
  • iOS 11+

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

CocoaPods 1.5.0+ is required to build BitcoinKit.

To integrate BitcoinKit into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!

target '<Your Target Name>' do
  pod 'AtomicSwapCore.swift'
  pod 'AtomicSwapBitcoinProvider'
end

Then, run the following command:

$ pod install

Example Project

All features of the library are used in example project. It can be referred as a starting point for usage of the library.

Dependencies

  • HSHDWalletKit - HD Wallet related features, mnemonic phrase geneartion.
  • HSCryptoKit - Crypto functions required for working with blockchain.

License

The AtomicSwapKit-iOS toolkit is open source and available under the terms of the MIT License.

About

Atomic Swap iOS library for Bitcoin (BTC) and Bitcoin Cash (BCH) swaps in decentralized manner. Implemented on Swift.

License:MIT License


Languages

Language:Swift 91.4%Language:Ruby 7.5%Language:Objective-C 1.1%