7 Commits
Author SHA1 Message Date
bj a80561a6c3 Fixed the build.gradle 2020-09-03 00:23:09 +02:00
bj c8d2a4ad75 Updated README.md 2020-09-02 23:58:01 +02:00
bj 7af3fa0123 Merge remote-tracking branch 'origin/master' 2020-09-02 22:44:21 +02:00
bj fd7484b140 Updated maven repo info 2020-09-02 22:43:55 +02:00
bj eb0a92fb4d Made gradlew executable 2020-09-02 22:35:58 +02:00
bj d752a56f2b Added Picocli Autocomplete script generation 2020-09-02 12:12:23 +02:00
bj 8e5fe74f5c Updated build to detect that 'dirty' and 'non-master' branches are not releases 2020-09-02 12:11:37 +02:00
4 changed files with 36 additions and 62 deletions
+24 -56
View File
@@ -1,9 +1,8 @@
# Rudefox Burrow # Rudefox Burrow
Rudefox provides a pair of command line tools for the creation and management of Bitcoin wallets. *Offline Bitcoin Seed Generation and Wallet Tool*
+ Use `burrow` on an air-gapped single-board computer, like a Raspberry Pi, to generate new seed words, obtain addresses and extended public keys from existing seed words and sign PSBT transactions offline. Use [Rudefox](https://rudefox.io/) Burrow on an air-gapped, single-board computer, like a Raspberry Pi, to generate new seed words, derive addresses and extended public keys from existing seed words or sign PSBT transactions offline.
+ Use `reynard` on a connected ("hot") device to view your balance and utxo's and to create new, unsigned transactions.
## Unique Feature: ShowMyWork ## Unique Feature: ShowMyWork
@@ -29,69 +28,38 @@ Input 11 x 8-sided dice rolls [1-8]: 12345678123
ahead slight scout ahead slight scout ahead slight scout ahead slight scan ahead slight scout ahead slight scout ahead slight scout ahead slight scan
``` ```
## Menemonic Generation ## Build Instructions
#### Linux
* Install dependencies: Java 8
```bash ```bash
a[email protected]:~$ burrow mnemonic --interactive --dice-entropy --bits 128 apt install openjdk-8-jdk
Input 50 dice rolls [1-6]: 234322343242422344161254151
Input 23 more dice rolls [1-6]: 33116265515343114314456
Mnemonic Sentence: mountain tilt wing silk rude fox almost volume wine media verify card
``` ```
### Mnemonic Options * Clone the repository and build
```bash ```bash
usage: burrow mnemonic [email protected]:~$ git clone https://git.rudefox.io/rudefox/burrow.git
-b,--bits <128|160|192|224|256> bits of entropy (default: 256) [email protected]:~$ cd burrow
-d,--dice-entropy use dice entropy source [email protected]:~$ ./gradlew build distTar
-e,--events <EVENT_STRING> string representing events from entropy source
-h,--help display help message
-i,--interactive use interactive command line mode
``` ```
## Xpub Export * Find the distribution `.tar` file in `build/distributions/`
```bash ## Quick Raspbery Pi Install
[email protected]:~$ burrow wallet --sentence "stove prefer lunch collect small orphan wasp size beyond auction
guilt great" --passphrase apple
xpub6CKy5SECeJipZid8dF3bopoMGdRzd7hMJuPzMGesZCobrMSssZyASexzXuzRTPVLcqqdyAEZJKPMGvDthgZW2Z3mPHLohxEAVbkvGKAXjqx
```
### QR Code Generation
```bash-qrcode * Download the latest image [here](https://repo.rudefox.io/service/rest/v1/search/assets/download?sort=version&group=io.rudefox&name=burrow-pi-img&maven.extension=zip)
[email protected]:~$ burrow wallet --sentence "stove prefer lunch collect small orphan wasp size beyond auction
guilt great" --passphrase apple -q
█▀▀▀▀▀█ ▄█ █▄█ ▀▄▀ ▀▄▄▄██▄ █▀▄ █▀▀▀▀▀█ * Unzip the image file
█ ███ █ ▀ ▀▄█▄▄▄▄██▄▄▄█ █ █▄ █ ███ █
█ ▀▀▀ █ █▄▀ █▄█▄▄▄▀█▀▄ ▄▀▀█▀ ▄▄▄ █ ▀▀▀ █
▀▀▀▀▀▀▀ █▄▀▄█ ▀▄█▄▀ ▀▄█ █ █▄▀▄▀ ▀ ▀▀▀▀▀▀▀
██ █ ▀█ ███ ██ ▄█▄▀▄▀▀██ █▀▄▄▀▀▀ ▀▀▄
██ ▀ █▀█▄▀█▄██▀ ▀ █▀ ▄▄▄▀██ █▀▀▀█ █▀ █▀
█▀█▄ ▀█▀▀ ▄█▄█▄▀ █▀█ ██▀▄█▀ ▄██▀█ ▀ ▀
▀██ ▀▄▄▀▄ ██ ▀██▄▀▄█▀▀█▄▀▄▀█▀▄▄▀▀█▄▀ █▀
▀█▄▄ ▀▀▄ ▀▀▀▄▀ ██▄▄ ▀ ▀ █▀ ▀▄▀ █ █ █▀█▄ ▄
███ █ ▀██ ▀▄▀█ ▄▄▀ ▄ ▄█▄▄ ▀▄██▄ ▀▄█▀▀ ▀▀
▀█▄█▄ ▀ ▀▄▄█ ▀▄ █ ▄▀▀ ▄▄▀▄█▄█ ██▀▀▀▀▀ █
▀ ▀▀▄ ▀▄█ ▄ ██▄▀▀██▄▄█▄ ▄█▄ █▀ ▄ ▄▀██
█ ▀▄▄▄▀█▀██▄▄▀▄▄▀█▄ █ ▄██▀▄ ▄ ▄▄█▀█ █ ▄
▀ ██ ▀▀▀▄ ▀██▄▄▄ ██ █▀█▀▄█ ▄▄▀▄▀▀ ▄█ ▀█▀
▀▄▄█ █▀ █▄▀ ██▀█▄ █▄▀████▀▄██ ▄▄▀█ █▀█▀▀█
▀ ▄▄ ▀▄▄▄▄▀█ ▄▀▀█████ ▀▀▀▄ █ ▄█▀█▀▀█▀▀▀
▀ ▀▀ ▀▀▄▀▀▄▄▀█▀▄ ▄███ ▀██▀▀█ █▄█▀▀▀█▄ █
█▀▀▀▀▀█ ▀▄█▄▀ ▄ █ ▀▄▄▄▄▄█▀ ▀▀ █ ▀ █ ▄█▄
█ ███ █ ▄ █▄ ▄ █▄▄ ▀█ █ ▄ ▀██ █▀█▀█ ▀█▀
█ ▀▀▀ █ ▄▄▀█ █ ▄ ▄█▄ ▄▄▀█▄▀ ▄█ █ ▀ █▀ █▀
▀▀▀▀▀▀▀ ▀▀ ▀ ▀ ▀▀ ▀ ▀ ▀▀▀ ▀▀▀
[email protected]:~$
```
### Wallet Options * Flash it onto an SD Card
* [Linux](https://www.raspberrypi.org/documentation/installation/installing-images/linux.md)
* [Mac OS](https://www.raspberrypi.org/documentation/installation/installing-images/mac.md)
* [Windows](https://www.raspberrypi.org/documentation/installation/installing-images/windows.md)
* [Chrome OS](https://www.raspberrypi.org/documentation/installation/installing-images/chromeos.md)
```bash * Insert the SD card into the Rasberry Pi and power it up
usage: burrow wallet
-h,--help display help message * **IMPORTANT**: Wait for the device to boot and then wait for it to automatically reboot **TWICE** (once to expand the filesystem and again to activate the read-only filesystem)
-p,--passphrase <PASSPHRASE> optional seed passphrase
-s,--sentence <SENTENCE> mnemonic sentence
-q,--qrcode optional seed passphrase
```
+10 -5
View File
@@ -8,7 +8,7 @@ plugins {
repositories { repositories {
maven { maven {
url "https://repo.rudefox.io/repository/maven-public/" url "https://repo.rudefox.io/repository/maven-releases/"
} }
mavenCentral() mavenCentral()
@@ -17,15 +17,20 @@ repositories {
sourceCompatibility = 1.8 sourceCompatibility = 1.8
targetCompatibility = 1.8 targetCompatibility = 1.8
def isRelease = versionDetails().commitDistance == 0
group 'io.rudefox' group 'io.rudefox'
version isRelease ? gitVersion.call() : gitVersion.call() + "-SNAPSHOT"
application { application {
mainClassName = 'io.rudefox.burrow.RudefoxBurrow' mainClassName = 'io.rudefox.burrow.RudefoxBurrow'
} }
def isRelease = versionDetails().commitDistance == 0 &&
versionDetails().isCleanTag &&
((versionDetails().branchName == 'master') || (versionDetails().branchName == 'null'))
version isRelease ? gitVersion.call() : gitVersion.call() + "-${versionDetails().branchName}-SNAPSHOT"
println "${group}:${project.name}:${version}" + ' ' + (isRelease ? '(RELEASE)' : '(SNAPSHOT)')
run { run {
standardInput = System.in standardInput = System.in
} }
@@ -42,7 +47,7 @@ tasks.withType(Test) {
dependencies { dependencies {
compile 'io.rudefox:vixen:0.0.2' compile 'io.rudefox:vixen:0.0.2'
compile 'info.picocli:picocli:4.0.4' compile 'info.picocli:picocli:4.5.1'
compile 'com.google.zxing:core:3.4.0' compile 'com.google.zxing:core:3.4.0'
testCompile 'com.bjdweck.test:commons-test:0.0.1' testCompile 'com.bjdweck.test:commons-test:0.0.1'
testCompile "org.junit.jupiter:junit-jupiter-params:$junitVersion" testCompile "org.junit.jupiter:junit-jupiter-params:$junitVersion"
Vendored Regular → Executable
View File
@@ -2,13 +2,14 @@ package io.rudefox.burrow;
import com.bjdweck.bitcoin.params.INetworkParameters; import com.bjdweck.bitcoin.params.INetworkParameters;
import com.bjdweck.bitcoin.params.NetworkParameters; import com.bjdweck.bitcoin.params.NetworkParameters;
import picocli.AutoComplete;
import picocli.CommandLine; import picocli.CommandLine;
@CommandLine.Command( @CommandLine.Command(
name = "burrow", name = "burrow",
synopsisSubcommandLabel = "COMMAND", synopsisSubcommandLabel = "COMMAND",
description = "Offline wallet tool", description = "Offline wallet tool",
subcommands = {MnemonicCommand.class, WalletCommand.class} subcommands = {MnemonicCommand.class, WalletCommand.class, AutoComplete.GenerateCompletion.class}
) )
public class RudefoxBurrow implements Runnable { public class RudefoxBurrow implements Runnable {