bitcoinj / bitcoinj/bitcoinj

bitcoinj GraalVM native-image support, starting with build of WalletTool

Open
#1,886 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
5.2k
Forks
2.6k
Avg merge
10h 56m
Merged PRs (30d)
18

Description

**bitcoinj** core should be made GraalVM `native-image` compatible and some of the tools and sample apps should be able to be (optionally) compiled to GraalVM `native-image`s.

The first step IMO is to add an (optional) Gradle task that uses the GraalVM [native-image](https://www.graalvm.org/docs/reference-manual/aot-compilation/) tool to build a natively-compiled version of the `WalletTool`command-line tool in the `wallettool` subproject. Also perhaps for `BlockImporter` and/or some of the other command-line tools.

Once the wallet-tool is behaving well we should probably move the GraalVM meta-data (`reflect-config.json and `resource-config.json` to be bundled in the `bitcoinj-core` JAR)

Contributor guide

Open the contributing guide

Research direction

Start in the wallettool subproject and inspect how WalletTool is built through Gradle. Check the GraalVM native-image documentation and determine what an optional native-image build requires; done means WalletTool can be compiled and behaves correctly as a native executable, with any later bitcoinj-core metadata work treated as a separate follow-up.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.