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.
The primary class to use is
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
load method resumes atomic swaps previously in progress.
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.
Initiator takes response and starts the swap
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.
- Xcode 10.0+
- Swift 5+
- iOS 11+
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
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
All features of the library are used in example project. It can be referred as a starting point for usage of the library.
- HSHDWalletKit - HD Wallet related features, mnemonic phrase geneartion.
- HSCryptoKit - Crypto functions required for working with blockchain.
AtomicSwapKit-iOS toolkit is open source and available under the terms of the MIT License.