This project is a SwiftUI proof of concept for feeding signet blocks from mempool.space into libbitcoinkernel.
The Xcode build automatically configures, builds, installs, and embeds the right libbitcoinkernel variant for macOS, iPhone Simulator, or iPhone.
Install Homebrew first.
Then install the build tools and the non-IPC dependencies used by the kernel build:
brew install cmake ninja boost pkgconfRequired tools and packages:
cmakeninjaboostpkgconf
Optional:
ccacheto speed up repeated kernel rebuilds
Clone upstream Bitcoin Core into bitcoin-core in this repository root:
git clone https://github.com/bitcoin/bitcoin.git bitcoin-coreIf you already have a checkout elsewhere, a symlink also works:
ln -s /path/to/bitcoin bitcoin-coreIf ./bitcoin-core is missing, the Xcode build fails immediately with a clear error.
Open Node.xcodeproj in Xcode and build/run the Node target.
During the build, Xcode calls embed-libbitcoinkernel.sh, which in turn uses build-libbitcoinkernel.sh to:
- configures a kernel-only Bitcoin Core build for the current platform
- builds
libbitcoinkernel - installs it into Xcode's DerivedData area
- embeds the matching dylib into the app bundle's
Frameworksdirectory
For iPhone builds you will also need normal Xcode signing and provisioning for your device.
Because those kernel build artifacts now live under DerivedData, Product > Clean Build Folder also clears the CMake build/install outputs.
If you want to inspect the Xcode build helpers, see embed-libbitcoinkernel.sh and build-libbitcoinkernel.sh.
Local settings should go in Config/Node.local.xcconfig, which is ignored by git and included from the tracked Config/Node.xcconfig. Do not commit your personal DEVELOPMENT_TEAM or other machine-specific signing overrides to Node.xcodeproj/project.pbxproj.
Uncomment or add lines in Config/Node.local.xcconfig to override build defaults:
| Setting | Effect | Example |
|---|---|---|
BITCOIN_CORE_BUILD_TYPE |
CMake build type for libbitcoinkernel. Defaults to Debug; Xcode Release builds always use Release. |
BITCOIN_CORE_BUILD_TYPE = Release |
SWIFT_ACTIVE_COMPILATION_CONDITIONS |
Add DISABLE_KERNEL_LOGGING to silence kernel log output. |
SWIFT_ACTIVE_COMPILATION_CONDITIONS = $(inherited) DISABLE_KERNEL_LOGGING |
- This app uses
mempool.spaceas a block source. - This is not a full P2P node.
libbitcoinkernelvalidates and stores blocks, while block download is done externally. - The
libbitcoinkernelAPI is experimental and may change as Bitcoin Core evolves.
