A Lightning Network light wallet implementation on native iOS using Swift
SwiftLightning is a work-in-progress codename for a Lightning Network light wallet implementation based on the open sourced LND - Lightning Network Daemon. This project is written in native Swift for iOS. By being an early implementation of a mobile Lighting wallet, it is hoped that SwiftLightning can act as a test harness to help accelerate LND's features and reliability for iOS.
The Go Lang toolchain, along with Go Dep, are required. This is in addition to of course the Xcode toolchain on MacOS. You can get:
Go Lang from https://golang.org/
Go Dep from https://github.com/golang/dep
A LND branch with support for direct functional bindings is required to build SwiftLighting. An example of that can be found at https://github.com/biscottigelato/lnd/tree/mobile-support. You should be able to generate Lndmobile.framework with mobile-support branch by just executing
$ ./lnd/mobile/dep ensure
$ ./lnd/mobile/build_mobile.sh
Lndmobile.framework should then be found under /lnd/mobile/build/ios/. Please see the instruction in the LND Github page for further details. Once Lndmobile.framework is generated, copy it to /SwiftLightning/ios/Lndmobile.framework.
Make sure Lndmobile.framework is placed under /SwiftLightning/ios/
Install all Cocoapod dependencies
$ cd ios
$ pod install
Start Xcode!
$ xcode ios/SwiftLightning.xcworkspace
If there are changes to the LND .proto files, you might need to regenerate the Swift proto bindings.
Install Swift Protobuf
$ brew install swift-protobuf
Install Swift GRPC. The following sometimes doesn't work. So follow the instructions on the Swift GRPC Github for the most accurate instructions
$ git clone https://www.github.com/grpc/grpc-swift
make install
You will need to have LND in your GOPATH for this script to work
$ ./gen_protos.sh
