Skip to content
Atomic Swap iOS library for Bitcoin (BTC) and Bitcoin Cash (BCH) swaps in decentralized manner. Implemented on Swift.
Swift Ruby Objective-C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
AtomicSwapBitcoinProvider
AtomicSwapCore
AtomicSwapKit.xcworkspace
Demo
.DS_Store
.gitignore
AtomicSwapBitcoinProvider.swift.podspec
AtomicSwapCore.swift.podspec
Gemfile
Gemfile.lock
LICENSE
Podfile
Podfile.lock
README.md

README.md

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.

You can’t perform that action at this time.