Skip to content

Sjors/kernel-i-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node

This project is a SwiftUI proof of concept for feeding signet blocks from mempool.space into libbitcoinkernel.

Node app screenshot

The Xcode build automatically configures, builds, installs, and embeds the right libbitcoinkernel variant for macOS, iPhone Simulator, or iPhone.

Prerequisites

Install Homebrew first.

Then install the build tools and the non-IPC dependencies used by the kernel build:

brew install cmake ninja boost pkgconf

Required tools and packages:

  • cmake
  • ninja
  • boost
  • pkgconf

Optional:

  • ccache to speed up repeated kernel rebuilds

Clone Bitcoin Core

Clone upstream Bitcoin Core into bitcoin-core in this repository root:

git clone https://github.com/bitcoin/bitcoin.git bitcoin-core

If you already have a checkout elsewhere, a symlink also works:

ln -s /path/to/bitcoin bitcoin-core

If ./bitcoin-core is missing, the Xcode build fails immediately with a clear error.

Run The App

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 Frameworks directory

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.

Manual Build

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.

Local Overrides

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

Notes

  • This app uses mempool.space as a block source.
  • This is not a full P2P node. libbitcoinkernel validates and stores blocks, while block download is done externally.
  • The libbitcoinkernel API is experimental and may change as Bitcoin Core evolves.

About

Bitcoin Core kernel experimental node for Apple devices

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors