Update/v26 (#132)

* update submodule

* Add release notes and bump version

* Switch build to new SDK

* Update instructions

* Readme update

* use wildcard for s9pk

* Dockerfile refactor

* Update guides

* Add config warnings for user and password change

* Update dependencies for manager

* Adding build and release workflow

* remove Interactive terminal

* test gcc build

* No need for compat.h patching anymore

* remobe deprecated secp256k1 patching

* bring back clang as compiler and try -O1 build

* Add v2 transport protocol support

* Use online documentation

* update start-sdk link

* Release notes and readme update

* Build and Release workflows update

* return config true
This commit is contained in:
Mariusz Kogen 2023-12-31 10:51:13 +01:00 committed by GitHub
parent 6d62cd944e
commit 224d92117e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
57 changed files with 604 additions and 726 deletions

36
.github/workflows/buildService.yml vendored Normal file
View File

@ -0,0 +1,36 @@
name: Build Service
on:
workflow_dispatch:
pull_request:
paths-ignore: ['*.md']
branches: ['main', 'master']
push:
paths-ignore: ['*.md']
branches: ['main', 'master']
jobs:
BuildPackage:
runs-on: ubuntu-latest
steps:
- name: Prepare StartOS SDK
uses: Start9Labs/sdk@v1
- name: Checkout services repository
uses: actions/checkout@v3
- name: Build the service package
id: build
run: |
git submodule update --init --recursive
start-sdk init
make
PACKAGE_ID=$(yq -oy ".id" manifest.*)
echo "::set-output name=package_id::$PACKAGE_ID"
shell: bash
- name: Upload .s9pk
uses: actions/upload-artifact@v3
with:
name: ${{ steps.build.outputs.package_id }}.s9pk
path: ./${{ steps.build.outputs.package_id }}.s9pk

71
.github/workflows/releaseService.yml vendored Normal file
View File

@ -0,0 +1,71 @@
name: Release Service
on:
push:
tags:
- 'v*.*'
jobs:
ReleasePackage:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Prepare StartOS SDK
uses: Start9Labs/sdk@v1
- name: Checkout services repository
uses: actions/checkout@v3
- name: Build the service package
run: |
git submodule update --init --recursive
start-sdk init
make
- name: Setting package ID and title from the manifest
id: package
run: |
echo "::set-output name=package_id::$(yq -oy ".id" manifest.*)"
echo "::set-output name=package_title::$(yq -oy ".title" manifest.*)"
shell: bash
- name: Generate sha256 checksum
run: |
PACKAGE_ID=${{ steps.package.outputs.package_id }}
sha256sum ${PACKAGE_ID}.s9pk > ${PACKAGE_ID}.s9pk.sha256
shell: bash
- name: Generate changelog
run: |
PACKAGE_ID=${{ steps.package.outputs.package_id }}
echo "## What's Changed" > change-log.txt
yq e '.release-notes' manifest.yaml >> change-log.txt
echo "## SHA256 Hash" >> change-log.txt
echo '```' >> change-log.txt
sha256sum ${PACKAGE_ID}.s9pk >> change-log.txt
echo '```' >> change-log.txt
shell: bash
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
name: ${{ steps.package.outputs.package_title }} ${{ github.ref_name }}
prerelease: true
body_path: change-log.txt
files: |
./${{ steps.package.outputs.package_id }}.s9pk
./${{ steps.package.outputs.package_id }}.s9pk.sha256
- name: Publish to Registry
env:
S9USER: ${{ secrets.S9USER }}
S9PASS: ${{ secrets.S9PASS }}
S9REGISTRY: ${{ secrets.S9REGISTRY }}
run: |
if [[ -z "$S9USER" || -z "$S9PASS" || -z "$S9REGISTRY" ]]; then
echo "Publish skipped: missing registry credentials."
else
start-sdk publish https://$S9USER:$S9PASS@$S9REGISTRY ${{ steps.package.outputs.package_id }}.s9pk
fi

2
.gitignore vendored
View File

@ -1,6 +1,6 @@
manager/target/
**/*.rs.bk
bitcoind.s9pk
*.s9pk
.DS_Store
.vscode/
scripts/embassy.js

View File

@ -4,54 +4,57 @@
FROM lncm/berkeleydb as berkeleydb
# Build stage for Bitcoin Core
FROM alpine:3.16 as bitcoin-core
FROM alpine:3.18 as bitcoin-core
COPY --from=berkeleydb /opt /opt
RUN sed -i 's/http\:\/\/dl-cdn.alpinelinux.org/https\:\/\/alpine.global.ssl.fastly.net/g' /etc/apk/repositories
RUN apk --no-cache add autoconf
RUN apk --no-cache add automake
RUN apk --no-cache add boost-dev
RUN apk --no-cache add build-base
RUN apk --no-cache add chrpath
RUN apk --no-cache add file
RUN apk --no-cache add gnupg
RUN apk --no-cache add libevent-dev
RUN apk --no-cache add libressl
RUN apk --no-cache add libtool
RUN apk --no-cache add linux-headers
RUN apk --no-cache add sqlite-dev
RUN apk --no-cache add zeromq-dev
RUN apk --no-cache add \
autoconf \
automake \
boost-dev \
build-base \
clang \
chrpath \
file \
gnupg \
libevent-dev \
libressl \
libtool \
linux-headers \
sqlite-dev \
zeromq-dev
ADD ./bitcoin /bitcoin
ENV BITCOIN_PREFIX=/opt/bitcoin
WORKDIR /bitcoin
RUN sed -i '/AX_PROG_CC_FOR_BUILD/a\AR_FLAGS=cr' src/secp256k1/configure.ac
RUN ./autogen.sh
RUN ./configure LDFLAGS=-L`ls -d /opt/db*`/lib/ CPPFLAGS=-I`ls -d /opt/db*`/include/ \
# If building on Mac make sure to increase Docker VM memory, or uncomment this line. See https://github.com/bitcoin/bitcoin/issues/6658 for more info.
# CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768" \
CXXFLAGS="-O1" \
CXX=clang++ CC=clang \
--prefix=${BITCOIN_PREFIX} \
--mandir=/usr/share/man \
--disable-man \
--disable-tests \
--disable-bench \
--disable-ccache \
--with-gui=no \
--with-utils \
--with-libs \
--with-sqlite=yes \
--with-daemon
RUN make -j$(($(nproc) - 1))
RUN make -j$(nproc)
RUN make install
RUN strip ${BITCOIN_PREFIX}/bin/*
RUN strip ${BITCOIN_PREFIX}/lib/libbitcoinconsensus.a
RUN strip ${BITCOIN_PREFIX}/lib/libbitcoinconsensus.so.0.0.0
# Build stage for compiled artifacts
FROM alpine:3.16
FROM alpine:3.18
LABEL maintainer.0="João Fonseca (@joaopaulofonseca)" \
maintainer.1="Pedro Branco (@pedrobranco)" \
@ -68,8 +71,8 @@ RUN apk --no-cache add \
libevent \
libzmq \
sqlite-dev \
tini\
yq
tini \
yq \
RUN rm -rf /var/cache/apk/*
ARG ARCH
@ -79,16 +82,15 @@ ENV BITCOIN_PREFIX=/opt/bitcoin
ENV PATH=${BITCOIN_PREFIX}/bin:$PATH
COPY --from=bitcoin-core /opt /opt
ADD ./manager/target/${ARCH}-unknown-linux-musl/release/bitcoind-manager /usr/local/bin/bitcoind-manager
RUN chmod a+x /usr/local/bin/bitcoind-manager
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
RUN chmod a+x /usr/local/bin/docker_entrypoint.sh
ADD ./actions/reindex.sh /usr/local/bin/reindex.sh
RUN chmod a+x /usr/local/bin/reindex.sh
ADD ./check-rpc.sh /usr/local/bin/check-rpc.sh
RUN chmod a+x /usr/local/bin/check-rpc.sh
ADD ./check-synced.sh /usr/local/bin/check-synced.sh
RUN chmod a+x /usr/local/bin/check-synced.sh
COPY ./manager/target/${ARCH}-unknown-linux-musl/release/bitcoind-manager \
./docker_entrypoint.sh \
./actions/reindex.sh \
./check-rpc.sh \
./check-synced.sh \
/usr/local/bin/
RUN chmod a+x /usr/local/bin/bitcoind-manager \
/usr/local/bin/*.sh
EXPOSE 8332 8333

View File

@ -13,35 +13,35 @@ clean:
rm -f scripts/*.js
verify: $(PKG_ID).s9pk
@embassy-sdk verify s9pk $(PKG_ID).s9pk
@start-sdk verify s9pk $(PKG_ID).s9pk
@echo " Done!"
@echo " Filesize: $(shell du -h $(PKG_ID).s9pk) is ready"
# for rebuilding just the arm image.
arm:
@rm -f docker-images/x86_64.tar
ARCH=aarch64 $(MAKE)
@ARCH=aarch64 $(MAKE) -s
# for rebuilding just the x86 image.
x86:
@rm -f docker-images/aarch64.tar
ARCH=x86_64 $(MAKE)
@ARCH=x86_64 $(MAKE) -s
$(PKG_ID).s9pk: manifest.yaml assets/compat/* docker-images/aarch64.tar docker-images/x86_64.tar instructions.md scripts/embassy.js
ifeq ($(ARCH),aarch64)
@echo "embassy-sdk: Preparing aarch64 package ..."
@echo "start-sdk: Preparing aarch64 package ..."
else ifeq ($(ARCH),x86_64)
@echo "embassy-sdk: Preparing x86_64 package ..."
@echo "start-sdk: Preparing x86_64 package ..."
else
@echo "embassy-sdk: Preparing Universal Package ..."
@echo "start-sdk: Preparing Universal Package ..."
endif
@embassy-sdk pack
@start-sdk pack
install: $(PKG_ID).s9pk
install:
ifeq (,$(wildcard ~/.embassy/config.yaml))
@echo; echo "You must define \"host: http://embassy-server-name.local\" in ~/.embassy/config.yaml config file first"; echo
@echo; echo "You must define \"host: http://server-name.local\" in ~/.embassy/config.yaml config file first"; echo
else
embassy-cli package install $(PKG_ID).s9pk
start-cli package install $(PKG_ID).s9pk
endif
docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh manager/target/aarch64-unknown-linux-musl/release/bitcoind-manager manifest.yaml check-rpc.sh check-synced.sh actions/*
@ -59,10 +59,10 @@ else
endif
manager/target/aarch64-unknown-linux-musl/release/bitcoind-manager: $(MANAGER_SRC)
docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src messense/rust-musl-cross:aarch64-musl cargo build --release
docker run --rm -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src messense/rust-musl-cross:aarch64-musl cargo build --release
manager/target/x86_64-unknown-linux-musl/release/bitcoind-manager: $(MANAGER_SRC)
docker run --rm -it -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src messense/rust-musl-cross:x86_64-musl cargo build --release
docker run --rm -v ~/.cargo/registry:/root/.cargo/registry -v "$(shell pwd)"/manager:/home/rust/src messense/rust-musl-cross:x86_64-musl cargo build --release
scripts/embassy.js: scripts/**/*.ts
deno bundle scripts/embassy.ts scripts/embassy.js

View File

@ -1,6 +1,10 @@
# Wrapper for Bitcoin Core
<p align="center">
<img src="icon.png" alt="Project Logo" width="21%">
</p>
This project wraps [Bitcoin](https://bitcoin.org) for EmbassyOS. Bitcoin uses peer-to-peer technology to operate with no central authority or banks - managing transactions and the issuing of bitcoins is carried out collectively by the network.
# Bitcoin Core for StartOS
This project packages [Bitcoin](https://bitcoin.org) for StartOS. Bitcoin uses peer-to-peer technology to operate with no central authority or banks - managing transactions and the issuing of bitcoins is carried out collectively by the network.
## Contributing
@ -12,7 +16,7 @@ For technical contributors, please fork this repository, make your changes accor
### Adding Config Options
To add config options, include the new config options in *both* `config_spec.yaml` and `assets/bitcoin.conf.template`, adhering to the syntax and conventions of those files. To view the full list of config options, complete with descriptions and specifications, check out this [site](https://jlopp.github.io/bitcoin-core-config-generator) from Jameson Lopp.
To add config options, include the new config options in *both* `scripts/services/getConfig.ts` and `assets/compat/bitcoin.conf.template`, adhering to the syntax and conventions of those files. To view the full list of config options, complete with descriptions and specifications, check out this [site](https://jlopp.github.io/bitcoin-core-config-generator) from Jameson Lopp.
## Dependencies
@ -23,7 +27,7 @@ Install the following system dependencies to build this project by following the
- [rust-musl-cross](https://github.com/Start9Labs/rust-musl-cross)
- [yq](https://mikefarah.gitbook.io/yq)
- [rust](https://rustup.rs)
- [embassy-sdk](https://github.com/Start9Labs/embassy-os/blob/master/backend/install-sdk.sh)
- [start-sdk](https://github.com/Start9Labs/start-os/tree/sdk)
- [make](https://www.gnu.org/software/make/)
## Cloning
@ -38,18 +42,43 @@ git submodule update --init
## Building
To build the project for all supported platforms, run the following command:
```
make
```
## Installing (on Embassy)
To build the project for a single platform, run:
```
scp bitcoind.s9pk root@embassy-<id>.local:/embassy-data/package-data/tmp # Copy S9PK to the external disk. Make sure to create the directory if it doesn't already exist
ssh root@embassy-<id>.local
embassy-cli auth login
embassy-cli package install /embassy-data/pacakge-data/tmp/bitcoind.s9pk # Install the sideloaded package
# for amd64
make x86
```
or
```
# for arm64
make arm
```
## Installing (on Start9 server)
Run the following commands to determine successful install:
> :information_source: Change server-name.local to your Start9 server address
```
start-cli auth login
# Enter your StartOS password
start-cli --host https://server-name.local package install bitcoind.s9pk
```
If you already have your `start-cli` config file setup with a default `host`, you can install simply by running:
```
make install
```
> **Tip:** You can also install the `bitcoind.s9pk` using **Sideload Service** under the **System > Manage** section.
## Integrations
Documentation guides for integrating with external applications can be found under [docs/integrations](/docs/integrations).
Our [documentation](https://docs.start9.com/latest/service-guides/bitcoin/bitcoin-integrations) includes guides for integrating Bitcoin with external applications.

View File

@ -46,7 +46,6 @@ bind=0.0.0.0:8333
{{#IF !advanced.peers.listen
listen=0
}}
{{#IF advanced.peers.onlyconnect
{{#FOREACH advanced.peers.addnode
{{#IF advanced.peers.addnode.port
@ -57,7 +56,6 @@ connect={{advanced.peers.addnode.hostname}}
}}
}}
}}
{{#IF !advanced.peers.onlyconnect
{{#FOREACH advanced.peers.addnode
{{#IF advanced.peers.addnode.port
@ -71,6 +69,12 @@ addnode={{advanced.peers.addnode.hostname}}
{{#IF advanced.peers.onlyonion
onlynet=onion
}}
{{#IF advanced.peers.v2transport
v2transport=1
}}
{{#IF !advanced.peers.v2transport
v2transport=0
}}
## WHITELIST
## whitelist all services subnet
@ -92,6 +96,7 @@ disablewallet=1
}}
{{#IF wallet.enable
disablewallet=0
deprecatedrpc=create_bdb
}}
{{#IF wallet.avoidpartialspends
avoidpartialspends=1

@ -1 +1 @@
Subproject commit 8105bce5b384c72cf08b25b7c5343622754e7337
Subproject commit 44d8b13c81e5276eb610c99f227a4d090cc532f6

View File

@ -1,23 +0,0 @@
# Bitcoin Core
## Getting Started
### Config
Your node is highly configurable. Many settings are considered _advanced_ and should be used with caution. For the vast majority of users and use-cases, we recommend using the defaults. This is where you can change RPC credentials as well. Once configured, you may start your node!
### Syncing
Depending on your Internet bandwidth, how many other services are running, and what peers your node happens to connect to, your node should take anywhere from 2-7 days to sync from genesis to present.
### Using a Wallet
Enter your QuickConnect QR code **OR** your raw RPC credentials (both located in `Properties`) into any wallet that supports connecting to a remote node over Tor. For a full list of compatible wallets, as well as guides for setup, please see <a href="https://github.com/start9labs/bitcoind-wrapper/blob/master/docs/wallets.md" target="_blank">https://github.com/start9labs/bitcoind-wrapper/blob/master/docs/wallets.md</a>.
## Pruning
Beginning in EOS v0.3.0, Bitcoin is now set to be an "archival" node by default. This means that it will download and verify the entire blockchain, and will not "prune." Be aware that this takes approximately 400GB as of early 2022. If you enable the `txindex,` this will require an additional ~40GB.
Pruning is a process by which your node discards old blocks and transactions after it verifies them. Pruned nodes and archival nodes are both "full nodes" in that they are fully validating - they validate every block and transaction. Archival nodes store the entire blockchain and are useful to people interested in doing general or historical analysis, or being a provider of blockchain data to others (eg. a blockexplorer). They are also required for the best experience with many popular wallets and other Bitcoin tools.
**If you choose to prune**, the target on your Embassy is configurable and set by default to the minimum of 550MB (0.55 GB!), meaning the resulting blockchain will occupy a negligible amount of storage space. The maximum amount of blockchain data you can retain depends on the storage capacity your device. The config menu will not permit you to select a target that exceeds a certain percentage of your device's available capacity. For most use cases, we recommend sticking with a very low pruning setting.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -1,36 +0,0 @@
# Bisq Setup Guide
Note: You must have "Bloom Filters" set to "Enabled" in your Bitcoin Core service on Embassy.
1. Open Bisq and select "Settings" from the menu at the top
![Bisq Settings](./assets/bisq0.png "Click Settings from top menu")
1. Click "Network Info" from the secondary menu that appears below the main top menu
![Bisq Settings](./assets/bisq1.png "Click Network Info")
1. Select "Use Custom Bitcoin Core Nodes." Enter your Bitcoin Core **PEER** Tor address (found in your Embassy's Bitcoin service page, under "Interfaces"). Be certain to remove the "http://" prefix; Bisq will complain if you do not.
![Bitcoin Core Node](./assets/bisq2.png "Enter Your Node's Peer Onion Address")
1. Click away from the textbox and Bisq will require you to shutdown in order to make the change. Go ahead and do this, then restart Bisq.
![Shutdown Warning](./assets/bisq3.png "Shut Down Your Bisq Application")
1. When you restart Bisq, you will see your node, but will need to select "Use Custom Bitcoin Core Nodes" a second time, this will show the following warning about ensuring you trust the Bitcoin node:
![Node Warning](./assets/bisq4.png "Your Node is Trustworthy")
Fortunately, you already run a soverign Bitcoin node on your Embassy, so you can proceed confidently. Click "OK"
1. At this point you should see that Bisq is syncing with your Bitcoin node in the very bottom left of the application window. If you do not see this, make sure you have selected "Use Custom Bitcoin Core Node" and restart Bisq again.
![Bitcoin Syncing](./assets/bisq5.png "Bitcoin Syncing")
1. Syncing is normally fairly quick, but can take up to 30minutes. Once synced, you will see the following at the bottom left.
![Bitcoin Synced](./assets/bisq6.png "Bitcoin Synced")
That's it! You're synced and ready to use Bisq with your own Bitcoin node on Embassy!!

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

View File

@ -1,55 +0,0 @@
# Sparrow Wallet Setup Guide
You have two options for connecting Sparrow directly to Bitcoin's RPC: LAN (.local) and Tor (.onion). LAN of course only works on the lan but is very fast, while Tor works remotely but is slow. Switching between them is just a matter of changing .local to .onion (or vice versa) and switching the Tor proxy off or on, respectively, and changing the Port used to connect.
If you use LAN (.local), and you run Windows, make sure you have [Bonjour set up](https://docs.start9.com/latest/guides/device-guides/dg-windows/lan-windows#install-bonjour).
If you use Tor (.onion), you will need to have Tor running natively on your device in order to use Sparrow remotely. You can find the relevant setup documentation in the Resources section at the bottom of this page.
## Configuring Sparrow to use the Bitcoin Core RPC
1. Install the Bitcoin Core service to StartOS from the Start9 Marketplace, if you have not already.
2. Configure Bitcoin Core and allow it to begin the Initial Blockchain Download if you have not already. You may continue even if this is still in progress, but you will need to let the sync complete before creating your first transaction. Bitcoin Core MUST have the "Enable Wallet" feature turned on. This is found in *Bitcoin Core > Config > Wallet*.
3. Next, [download](https://sparrowwallet.com/download/), install, and launch Sparrow. If this is the first time you have run Sparrow, you will be guided to a screen where you will be asked to configure your Bitcoin server. Otherwise, you can find the server setup in Preferences. Select the option for "Bitcoin Core" as the **Server** Type:
![Sparrow Server Setup](./assets/sparrow-server-setup2.png "Setup Your Bitcoin Server")
4. From the Bitcoin Core service page in StartOS, click "Interfaces," and copy the `LAN Address` under **RPC Interface**. Paste this into Sparrow's "URL" field, removing the `http://` prefix, as Sparrow will not accept it. In the "Port" field, type `443`:
![Sparrow Server Setup](./assets/sparrow-server-setup3.png "Enter URL & Port")
**Note**: Use port `8332` if you are using your `Tor Address`.
5. Return to your server's Bitcoin Core service page again, and click "Properties" -> "RPC Username". Copy the Username using the button to the right:
![Bitcoin RPC Credentials](./assets/sparrow-server-setup4-rpc-user-pass.png "Copy Bitcoin RPC Username and Password")
In Sparrow, select "User/Pass" as the Authentication method and paste in the previously copied Username into the **User** field in Sparrow. Do the same for the "RPC Password":
![Sparrow Server Setup](./assets/sparrow-server-setup4.png "Add RPC User & Password to Sparrow")
6. OPTIONAL - Only applies if you are using the .onion: Select "Use Proxy," and enter the default values of `localhost` and `9050` for the URL and Port, respectively:
![Sparrow Server Setup](./assets/sparrow-server-setup5.png "Use Tor Proxy")
**Note**: If you are using the .local, leave "Use Proxy" **disabled**.
7. Finally, click "Test Connection" to verify that you are able to reach your Bitcoin node. If your node is not yet synced, Sparrow will let you know it's not fully ready to be connected to. Otherwise, you should just see a Satoshi message:
![Sparrow Server Setup](./assets/sparrow-server-setup6.png "Test Connection")
From here you can click **[Close]** complete your wallet setup and begin using Sparrow Wallet!
## Using an Electrum Server
Electrs on StartOS:
https://github.com/Start9Labs/electrs-wrapper/blob/master/docs/integrations/sparrow/guide.md
## Resources
[Run Tor on Your Device](https://start9.com/latest/user-manual/connecting/connecting-tor/tor-os/)
[Sparrow Wallet](https://sparrowwallet.com/)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 581 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@ -1,93 +0,0 @@
# Specter Desktop - MacOS
Original Author: Community Member [@Chiefmonkey](https://twitter.com/HodlrDotRocks>)
The Tor address provided by the Embassy's Bitcoin service can be used in the configuration settings for [Specter Desktop](https://github.com/cryptoadvance/specter-desktop>).
## Step 1 - Install Homebrew
### For macOS running on ARM chips (ie. newer macs):
- macOS Homebrew running natively on M1/Apple Silicon/ARM has partial functionality. Therefore, some additional steps are needed to setup Homebrew.
- Open a command line editor (Terminal), and run the following commands:
``softwareupdate --install-rosetta``
``arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"``
- Use this to install packages:
``arch -x86_64 brew install <package>``
:warning: macOS Homebrew running natively on M1/Apple Silicon/ARM has partial functionality
### For macOS Big Sur/Catalina:
- If you do not have Homebrew installed, follow the installation instructions [here](https://brew.sh/).
- tldr; Open the command line editor (Terminal) and paste the following line:
``/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"``
- You will be prompted for your system password before installation; proceed with entering your password:
![Homebrew installation](./assets/install-homebrew.png "Homebrew installation")
- You will be notified which directories Homebrew is going to create, hit ``return``:
![Homebrew directories](./assets/install-homebrew1.png "Homebrew directories")
- Homebrew creates the directories and downloads any other files it needs e.g. “Command Line Tool for Xcode” and “Homebrew”.
- Wait 5 minutes whilst it downloads and installs what it needs.
Surprisingly, Homebrew uses Google Analytics to collect anonymous usage data. You can deselect the option to share usage data [by opting out](https://docs.brew.sh/Analytics#opting-out).
## Step 2 - Install Tor
:warning: If you have the Tor Browser open, close it and quit the application.
- For macOS machines prior to December 2020 (pre-ARM chips), in the command line type: ``brew install tor``
- For macOS with ARM chips, in the command line type: ``arch -x86_64 brew install tor``
- See [the tor project](https://2019.www.torproject.org/docs/tor-doc-osx.html.en) for more details.
- Once it is finished you have the following options:
![Install Tor](./assets/install_tor.png "Install Tor")
- In the command line type ``brew services start tor`` or ``arch -x86_64 services start tor``. This will start Tor and ensure that it is always running, even after a restart.
## Step 3 - Download and Configure Specter
- [Download Specter](https://github.com/cryptoadvance/specter-desktop/releases) at the latest release version.
- Drag and drop the Specter icon into Applications once downloaded.
- Launch Specter.
- Click ``Connect Specter to your Bitcoin node``
- Note: for version 1.7 onward - click the Specter icon in the bottom left, then "Continue setup", then "Connect to a node"
![Welcome](./assets/welcome.png "Welcome")
- Disable `Auto-detect`
- Obtain your credentials for Bitcoin Proxy from your Embassy:
- Navigate to the Bitcoin Proxy service
- If you have not yet already created a Bitcoin Proxy user for Specter, navigate to `Config > RPC Users` and click the (+) in the top right corner to add a new RPC user
- Once a RPC user for Specter is created, copy the password under this user in `Config options > RPC Users` OR navigate to `Properties > RPC users` from the Bitcoin Proxy service menu and select the user created for Specter to copy the password
- Paste these RPC credentials in Specter in the `Bitcoin JSON-RPC configuration` menu
- Copy and paste your Bitcoin Proxy Tor address into the Host input under `Bitcoin JSON-RPC configuration` menu
![Add node](./assets/add_node.png "Add node")
- Click `Test`. It can take a few minutes. If all is well several green checkboxes will appear and some config settings.
![Add node](./assets/specter_test_results.png "Add node")
- Click `Save`.
Have a beer and some tacos before journeying further into the rabbit hole.

View File

@ -1,80 +0,0 @@
# Specter Desktop - Windows
Original Author: Community Member @julian
[Why Specter](https://github.com/cryptoadvance/specter-desktop/blob/master/README.md#why)
## Step 1 - Install Tor on Windows
:warning: **DO NOT PROCEED** before [installing Tor](https://docs.start9.com/latest/user-manual/connecting/connecting-tor/tor-os/tor-windows) on your machine!
## Step 2 - Configure Specter RPC user in Bitcoin Proxy
- Connect to your Embassy via browser on your Windows computer.
- Open the “Bitcoin Proxy” service
![Bitcoin Proxy Service](./assets/bitcoin_proxy_service.png "Select the Bitcoin Proxy Service")
- (optional) Copy Tor address (this will be needed in upcoming steps)
- In the Bitcoin Proxy service, under General, select “Config”
![Bitcoin Proxy Config submenu](./assets/bitcoin_proxy_config.png "Select Config on the Service Detail page")
- Click on “RPC Users”
![Bitcoin Proxy Config RPC User submenu](./assets/bitcoin_proxy_rpc.png "Bitcoin Proxy Config RPC User submenu")
- Click on the “+” symbol in the upper-right corner to add a new user
![Bitcoin Proxy Config RPC submenu](./assets/bitcoin_proxy_add_rpc_user.png "Bitcoin Proxy Config RPC submenu")
- Create a user for the Specter app
- Replace default user, bitcoin, with name of choice, ex: specter
- Save password (this will be needed in upcoming steps)
- Go back twice, then save
- Go back and check the current list of users to confirm your user has been created.
![RPC user confirmation](./assets/bitcoin_proxy_confirm_rpc_user.png "RPC user confirmation")
- Download Specter-Setup-v[*.*.*].exe [here](https://github.com/cryptoadvance/specter-desktop/releases)
- Install Specter
- If “Microsoft Defender SmartScreen” blocks the install, select “More info”
![Windows Defender SmartScreen](./assets/windows_smartscreen.png "Windows Defender SmartScreen")
- Then, select “Run Anyway”
![Windows Defender SmartScreen](./assets/windows_smart_screen_run.png "Windows Defender SmartScreen")
Connect Specter to Bitcoin Proxy
--------------------------------
- After installation, run Specter
- Click “Configure Node”
- Note: for version 1.7 onward - click the Specter icon in the bottom left, then "Continue setup", then "Connect to a node"
![Specter Configure Node](./assets/specter_configure_node.png "Specter Configure Node")
- Uncheck Auto-detect
- Insert the required information:
- Username and password: created in previous steps (any user with bitcoin proxy access will work)
- Host: Bitcoin proxy Tor address
- Port:8332
- Save
- Click Test
![Specter RPC configuration](./assets/specter_rpc_configuration.png "Select 'Test' to ensure the credentials are working properly")
- Ensure all tests pass
![Specter RPC configuration test results view](./assets/specter_test_results.png "Specter RPC configuration test results view")
**That's it!** Your Embassy's Bitcoin node is now connected to Specter.
### Note:
If you notice this message:
![Bitcoin Core Node info](./assets/core_info_error.jpg "Bitcoin Core Node info")
Currently, ``blockfilterindex`` is disabled for pruned Bitcoin Core nodes, so you won't be able to enable it on your Embassy. Start9 is working on a workaround.

View File

@ -1,79 +0,0 @@
# Tested Bitcoin Integrations
## Bisq
### Available For
- Linux
- Mac
- Windows
Follow the [guide](./integrations/bisq/guide.md)
## Blockstream Green
**Not possible at this time - No ability to connect to a Bitcoin node**
## BlueWallet
### Available For
- Android
Can connect using an Electrum Server.
See [electrs integrations](https://github.com/Start9Labs/electrs-wrapper/tree/master/docs/integrations/bluewallet/guide.md)
## Fully Noded
### Available For
- iOS
- MacOS
### Instructions
1. In Fully Noded, go to `Settings > Node Manager > +`
2. Enter your Bitcoin Core credentials. You can do this in one of two ways: (1) Use Fully Noded to scan your QuickConnect QR code (located in `Services > Bitcoin Core > properties`); or (2) copy/paste your Bitcoin Core Tor Address (located in `Services > Bitcoin Core`) _with :8332 appended_, as well as you rpc username and password (located in `Services > Bitcoin Core > Config > RPC Settings`).
## Ledger Live
**NOTE:** Built for use with Ledger hardware devices
**Not possible at this time - Requires Tor support**
Track here: https://github.com/LedgerHQ/ledger-live-desktop/issues/3547
## Samourai
**NOTE:** Android only
**Not possible at this time - Requires Dojo Stack**
## Sparrow
### Available For
- Linux
- Mac
- Windows
### Instructions
Follow the [guide](/docs/integrations/sparrow/guide.md)
## Specter
### Available For
- Linux
- MacOS
- Windows
### Instructions
Follow the [guide](/docs/integrations/specter) for your OS
## Trezor Suite
**NOTE:** Built for use with Trezor hardware devices
### Available For
- Linux
- Mac
- Windows
### Instructions
Requires Electrs, find the guide [here](https://github.com/Start9Labs/electrs-wrapper/tree/master/docs/integrations/trezor/guide.md)

View File

@ -1 +0,0 @@
docs/instructions.md

23
instructions.md Normal file
View File

@ -0,0 +1,23 @@
# Bitcoin Core
## Getting Started
### Config
Your node is highly configurable. Many settings are considered _advanced_ and should be used with caution. For the vast majority of users and use-cases, we recommend using the defaults. This is where you can change RPC credentials as well. Once configured, you may start your node!
### Syncing
Depending on your Internet bandwidth, how many other services are running, and what peers your node happens to connect to, your node should take anywhere from 2-7 days to sync from genesis to present.
### Using a Wallet
Enter your QuickConnect QR code **OR** your raw RPC credentials (both located in `Properties`) into any wallet that supports connecting to a remote node over Tor. For a full list of compatible wallets, as well as guides for setup, please see the [documentation](https://docs.start9.com/latest/service-guides/bitcoin/bitcoin-integrations).
## Pruning
Beginning with version **25.0.0.1**, pruning is now handled automatically depending on the available space. If there is insufficient free space, pruning will be automatically configured. Users also have the option to adjust pruning settings manually.
Pruning is a process by which your node discards old blocks and transactions after it verifies them. Pruned nodes and archival nodes are both "full nodes" in that they are fully validating - they validate every block and transaction. Archival nodes store the entire blockchain and are useful to people interested in doing general or historical analysis, or being a provider of blockchain data to others (eg. a blockexplorer). They are also required for the best experience with many popular wallets and other Bitcoin tools.
**If you choose to prune**, the target on your Start9 server is configurable and set by default to the minimum of 550MB (0.55 GB!), meaning the resulting blockchain will occupy a negligible amount of storage space. The maximum amount of blockchain data you can retain depends on the storage capacity your device. The config menu will not permit you to select a target that exceeds a certain percentage of your device's available capacity. For most use cases, we recommend sticking with a very low pruning setting.

627
manager/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -8,15 +8,15 @@ edition = "2018"
[dependencies]
btc-rpc-proxy = { git = "https://github.com/Start9Labs/btc-rpc-proxy.git", branch = "skinny" }
chrono = "0.4.19"
ctrlc = { version = "3.1.7", features = ["termination"] }
chrono = "0.4.31"
ctrlc = { version = "3.4.1", features = ["termination"] }
heck = "0.3.3"
lazy_static = "1.4.0"
linear-map = { version = "*", features = ["serde_impl"] }
nix = "0.26.2"
regex = "1.5.5"
serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.8.15"
nix = "0.27.1"
regex = "1.10.2"
serde = { version = "1.0.193", features = ["derive"] }
serde_yaml = "0.8.17"
serde_json = "1.0"
tiny-tmpl = "0.1.3"
tokio = { version = "1", features = ["rt"] }

View File

@ -1,8 +1,12 @@
id: bitcoind
title: "Bitcoin Core"
version: 25.0.0.3
version: 26.0.0
eos-version: 0.3.4.3
release-notes: Add back delete-peers action
release-notes: |
* Latest release from Core - see full release notes [here](https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-26.0.md)
* Added support for v2 transport protocol (BIP 324)
* Update services base image to alpine 3.18
* Minor readme and instructions update
license: MIT
wrapper-repo: https://github.com/Start9Labs/bitcoind-wrapper
upstream-repo: https://github.com/bitcoin/bitcoin

View File

@ -38,6 +38,7 @@ export const getConfig: T.ExpectedExports.getConfig = async (effects) => {
nullable: false,
name: "Username",
description: "The username for connecting to Bitcoin over RPC.",
warning: "You will need to restart all services that depend on Bitcoin.",
default: "bitcoin",
masked: true,
pattern: "^[a-zA-Z0-9_]+$",
@ -49,6 +50,7 @@ export const getConfig: T.ExpectedExports.getConfig = async (effects) => {
nullable: false,
name: "RPC Password",
description: "The password for connecting to Bitcoin over RPC.",
warning: "You will need to restart all services that depend on Bitcoin.",
default: {
charset: "a-z,2-7",
len: 20,
@ -214,8 +216,7 @@ export const getConfig: T.ExpectedExports.getConfig = async (effects) => {
listen: {
type: "boolean",
name: "Make Public",
description:
"Allow other nodes to find your server on the network.",
description: "Allow other nodes to find your server on the network.",
default: true,
},
onlyconnect: {
@ -230,6 +231,12 @@ export const getConfig: T.ExpectedExports.getConfig = async (effects) => {
description: "Only connect to peers over Tor.",
default: false,
},
v2transport: {
type: "boolean",
name: "Use V2 P2P Transport Protocol",
description: "Enable or disable the use of BIP324 V2 P2P transport protocol.",
default: false,
},
addnode: {
name: "Add Nodes",
description: "Add addresses of nodes to connect to.",
@ -253,8 +260,7 @@ export const getConfig: T.ExpectedExports.getConfig = async (effects) => {
type: "number",
nullable: true,
name: "Port",
description:
"Port that peer is listening on for inbound p2p connections",
description: "Port that peer is listening on for inbound p2p connections",
range: "[0,65535]",
integral: true,
},

View File

@ -229,6 +229,26 @@ export const migration: T.ExpectedExports.migration =
{ version: "25.0.0.2", type: "down" }
),
},
"26.0.0": {
up: compat.migrations.updateConfig(
(config: any) => {
config.advanced.peers.v2transport = false;
return config;
},
true,
{ version: "26.0.0", type: "up" }
),
down: compat.migrations.updateConfig(
(config: any) => {
delete config.advanced.peers.v2transport;
return config;
},
true,
{ version: "26.0.0", type: "down" }
),
},
},
"25.0.0.3"
"26.0.0"
);