bitcoindevkit / bdk-ffi Goto Github PK
View Code? Open in Web Editor NEWPlease consider this project *experimental*. But we hope to have an official release out soon.
License: Other
Please consider this project *experimental*. But we hope to have an official release out soon.
License: Other
By supporting the existing bdk-jni
APIs we will be able to support the padawan-wallet
project and other projects that are currently using bdk-jni
.
We need to support the following target triples:
Reference: https://doc.rust-lang.org/nightly/rustc/platform-support.html#tier-1-with-host-tools
Error with test.sh -a
. Some sort of class path problem.
> Task :android:mergeLibDexDebugAndroidTest FAILED
ERROR:/Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/android/build/.transforms/f8f486ba184b26ea1f15591ec62fc9a1/transformed/classes/classes.dex: D8: Type org.bitcoindevkit.BdkException$ErrorHandler$lift$1 is defined multiple times: /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/android/build/.transforms/f8f486ba184b26ea1f15591ec62fc9a1/transformed/classes/classes.dex, /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/jvm/build/.transforms/4e2c77aa7006fe94dfc61462ec41c77b/transformed/jetified-jvm/classes.dex
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type org.bitcoindevkit.BdkException$ErrorHandler$lift$1 is defined multiple times: /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/android/build/.transforms/f8f486ba184b26ea1f15591ec62fc9a1/transformed/classes/classes.dex, /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/jvm/build/.transforms/4e2c77aa7006fe94dfc61462ec41c77b/transformed/jetified-jvm/classes.dex
at com.android.builder.dexing.D8DexArchiveMerger.getExceptionToRethrow(D8DexArchiveMerger.java:128)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:115)
at com.android.build.gradle.internal.transforms.DexMergerTransformCallable.call(DexMergerTransformCallable.java:111)
at com.android.build.gradle.internal.tasks.DexMergingWorkAction.merge(DexMergingTask.kt:805)
at com.android.build.gradle.internal.tasks.DexMergingWorkAction.run(DexMergingTask.kt:760)
at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:79)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:79)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:206)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:214)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/android/build/.transforms/f8f486ba184b26ea1f15591ec62fc9a1/transformed/classes/classes.dex
at Version.fakeStackEntry(Version_2.2.66.java:0)
at com.android.tools.r8.utils.a0.a(SourceFile:89)
at com.android.tools.r8.D8.run(D8.java:11)
at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:113)
... 36 more
Caused by: com.android.tools.r8.utils.b: Type org.bitcoindevkit.BdkException$ErrorHandler$lift$1 is defined multiple times: /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/android/build/.transforms/f8f486ba184b26ea1f15591ec62fc9a1/transformed/classes/classes.dex, /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/jvm/build/.transforms/4e2c77aa7006fe94dfc61462ec41c77b/transformed/jetified-jvm/classes.dex
at com.android.tools.r8.utils.V0.a(SourceFile:22)
at com.android.tools.r8.utils.V0.a(SourceFile:25)
at com.android.tools.r8.utils.T0.b(SourceFile:6)
at com.android.tools.r8.utils.T0.a(SourceFile:24)
at com.android.tools.r8.utils.T0.a(SourceFile:10)
at java.base/java.util.concurrent.ConcurrentHashMap.merge(ConcurrentHashMap.java:2056)
at com.android.tools.r8.utils.T0.a(SourceFile:6)
at com.android.tools.r8.graph.i1$c.e(SourceFile:3)
at com.android.tools.r8.dex.a.a(SourceFile:336)
at com.android.tools.r8.dex.a.a(SourceFile:265)
at com.android.tools.r8.D8.a(D8.java:22)
at com.android.tools.r8.D8.d(D8.java:6)
at com.android.tools.r8.D8.b(D8.java:1)
at com.android.tools.r8.utils.a0.a(SourceFile:47)
... 38 more
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':android:mergeLibDexDebugAndroidTest'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingTaskDelegate
> There was a failure while executing work items
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingWorkAction
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type org.bitcoindevkit.BdkException$ErrorHandler$lift$1 is defined multiple times: /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/android/build/.transforms/f8f486ba184b26ea1f15591ec62fc9a1/transformed/classes/classes.dex, /Users/steve/git/notmandatory/bdk-ffi/bindings/bdk-kotlin/jvm/build/.transforms/4e2c77aa7006fe94dfc61462ec41c77b/transformed/jetified-jvm/classes.dex
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 8s
more platforms than linux, such as osx, and win.
This kotlin % would just be very small (test/demo source) if we didn't have generated bindings here - and since generated bindings are just outputs, it might be a good idea to isolate them from source control.
We would still need to figure out how to test stuff. For the demo application and tests, I just use ./gradlew
right now and run everything from the terminal. There might be a way to run these tests / code from scripts/clis without having to setup a complete kotlin project setup committed to source control
I know the jars don't ship with the libbdkffi.dylib
in them by default. Would a FAT jar be a solution for this or can they just be included with some configuration setting we need to turn on?
Other temporary solution would be to make them available as artifacts for download as part of the release page on GitHub.
Wasn't able to get this done in #74.
Required for #2
And maybe rename it?
Related:
Description
Add or update APIs in bdk-ffi
to support basic spending policy features. Also test the new APIs by updating bdk-kotlin
or bdk-swift
to use the new and updated APIs. See "Spending Policy Demo" for bdk-cli
based example usage.
APIs include:
Expected Outcomes
bdk.udl
and lib.rs
with functions and structs as neededbdk-kotlin
or bdk-swift
and add tests to cover new spending policy functionalityResources
Skills Required
Mentor(s)
Difficulty
Medium
Competency Test (optional)
bdk-ffi
and build and test bdk-swift
or bdk-kotlin
.bdk-cli
to walk through the "Spending Policy Demo"bdk-kotlin
or bdk-swift
example wallet.Take a look at examples/arithmetic/uniffi.toml over at mozilla/uniffi-rs
Test with:
https://github.com/notmandatory/bitcoindevkit-android-sample-app/tree/upgrade-to-bdk-ffi/
and fork of padawan-wallet
We can use FinalizedBitcoinTransaction
if that's better terminology.
It may be useful to consume #44
Setup build and test structure similar to bdk-jni
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.