Learning-Bitcoin-from-the-C.../17_6_Accessing_Bitcoind_with_Swift.md
2020-09-15 14:54:30 -10:00

2.5 KiB
Raw Blame History

17.6: Accessing Bitcoind with Swift

NOTE: This is a draft in progress, so that I can get some feedback from early reviewers. It is not yet ready for learning.

This section explains how to interact with bitcoind using the Swift programming language.

Setting Up Swift on Your Mac

To date, we've built all of our alternative programming languages on your Debian virtual node. However, that's not the best platform for Swift. Though there is a version of Swift available for Ubuntu platforms, it's not fully featured, and it works somewhat differently from the Mac-native Swift. A "Variant" at the bototm of this chapter explains how to set it up, but be warned that you'll be in uncharted territory.

As for setting up Swift on your Mac, it's pretty easy. Generally, you'll just call up the App Store and install "Xcode" on your Mac. But, if you prefer

  1. Call up the App Store and Select Xcode

Still on Mojave? [may be safer methodology too]

Download the xip for 10.3.1: https://developer.apple.com/download/more/

Click on XIP to extract Move to Apps

  1. Install GordianServer

[...]

  1. Find GordianServer Info

Click on gear, should show data directory

By default: Library/Application Support/Bitcoin/ bitcoin.conf

rpcuser=oIjA53JC2u rpcpassword=ebVCeSyyM0LurvgQyi0exWTqm4oU0rZU

Setting Up Swift (Debian)

$ sudo apt-get install clang
$ sudo apt-get install libcurl4 libpython2.7 libpython2.7-dev

Debian 10 or higher:

$ sudo apt-get install libtinfo5 libncurses5
$ wget https://swift.org/builds/swift-5.1.3-release/ubuntu1804/swift-5.1.3-RELEASE/swift-5.1.3-RELEASE-ubuntu18.04.tar.gz
$ tar xzfv swift-5.1.3-RELEASE-ubuntu18.04.tar.gz 
$ sudo mv swift-5.1.3-RELEASE-ubuntu18.04 /usr/share/swift
$ echo "export PATH=/usr/share/swift/usr/bin:$PATH" >> ~/.bashrc
$ source ~/.bashrc
$ swift --version
Swift version 5.1.3 (swift-5.1.3-RELEASE)
Target: x86_64-unknown-linux-gnu

Creating a Project

$ mkdir swift-project
$ cd swift-project/
/swift-project$ swift package init --type executable
Creating executable package: swift-project
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/swift-project/main.swift
Creating Tests/
Creating Tests/LinuxMain.swift
Creating Tests/swift-projectTests/
Creating Tests/swift-projectTests/swift_projectTests.swift
Creating Tests/swift-projectTests/XCTestManifests.swift
$ swift build
[4/4] Linking swift-project
$ .build/debug/swift-project
Hello, world!