diff --git a/build.sh b/build.sh index 92c8562..ef27e13 100755 --- a/build.sh +++ b/build.sh @@ -2,15 +2,15 @@ TRACING=1 -# CYPHERNODE VERSION "v0.7.0-dev" -CONF_VERSION="v0.7.0-dev-local" -GATEKEEPER_VERSION="v0.7.0-dev-local" -TOR_VERSION="v0.7.0-dev-local" -PROXY_VERSION="v0.7.0-dev-local" -NOTIFIER_VERSION="v0.7.0-dev-local" -PROXYCRON_VERSION="v0.7.0-dev-local" -OTSCLIENT_VERSION="v0.7.0-dev-local" -PYCOIN_VERSION="v0.7.0-dev-local" +# CYPHERNODE VERSION "v0.8.0" +CONF_VERSION="v0.8.0-local" +GATEKEEPER_VERSION="v0.8.0-local" +TOR_VERSION="v0.8.0-local" +PROXY_VERSION="v0.8.0-local" +NOTIFIER_VERSION="v0.8.0-local" +PROXYCRON_VERSION="v0.8.0-local" +OTSCLIENT_VERSION="v0.8.0-local" +PYCOIN_VERSION="v0.8.0-local" trace() { diff --git a/dist/setup.sh b/dist/setup.sh index 83ff08c..91e2043 100755 --- a/dist/setup.sh +++ b/dist/setup.sh @@ -859,17 +859,17 @@ ALWAYSYES=0 SUDO_REQUIRED=0 AUTOSTART=0 -# CYPHERNODE VERSION "v0.7.0-dev" -SETUP_VERSION="v0.7.0-dev" -CONF_VERSION="v0.7.0-dev" -GATEKEEPER_VERSION="v0.7.0-dev" -TOR_VERSION="v0.7.0-dev" -PROXY_VERSION="v0.7.0-dev" -NOTIFIER_VERSION="v0.7.0-dev" -PROXYCRON_VERSION="v0.7.0-dev" -OTSCLIENT_VERSION="v0.7.0-dev" -PYCOIN_VERSION="v0.7.0-dev" -CYPHERAPPS_VERSION="dev" +# CYPHERNODE VERSION "v0.8.0" +SETUP_VERSION="v0.8.0" +CONF_VERSION="v0.8.0" +GATEKEEPER_VERSION="v0.8.0" +TOR_VERSION="v0.8.0" +PROXY_VERSION="v0.8.0" +NOTIFIER_VERSION="v0.8.0" +PROXYCRON_VERSION="v0.8.0" +OTSCLIENT_VERSION="v0.8.0" +PYCOIN_VERSION="v0.8.0" +CYPHERAPPS_VERSION="v0.8.0" BITCOIN_VERSION="v22.0" LIGHTNING_VERSION="v0.10.2" TRAEFIK_VERSION="v1.7.9-alpine" diff --git a/doc/release-notes/release-notes-v0.8.0.md b/doc/release-notes/release-notes-v0.8.0.md new file mode 100644 index 0000000..4bdc1e7 --- /dev/null +++ b/doc/release-notes/release-notes-v0.8.0.md @@ -0,0 +1,76 @@ +# Cyphernode v0.8.0 + +Say hello to PostgreSQL! We moved from SQLite3 to PostgreSQL to take advantage of its enterprise-class features. Here are some of our motivations: + +- Better overall performance +- Easier to implement replicas / distributed redundancy +- Running in an independent container: can be used by other containers as well +- More/better administration tools +- Easier to configure C-lightning to use PostgreSQL +- Future development + +All of that may also be possible with SQLite3, but with a lot more work. + +If you have an existing Cyphernode installation with existing data, Cyphernode will take care of the migration: we built all the required ETL scripts that will hopefully flawlessly move your current instance to the new DBMS. + +There are also several improvements and new features in this release. Thanks go to [@pablof7z](https://twitter.com/pablof7z) @phillamy and @schulterklopfer for their valuable contributions, feedbacks and inputs! + +## New features + +- PostgreSQL: migrating from SQLite3 to PostgreSQL + - Automatic migration from current SQLite3 to new PostgreSQL (ETL) + - New Indexes + - Separate container +- Support for labels when: + - watching addresses + - getting new addresses +- New `ln_paystatus` endpoint +- New `validateaddress` endpoint +- New `deriveindex_bitcoind` endpoint (20x faster than Pycoin), also supports ypub/upub and zpub/vpub notations! +- New `derivepubpath_bitcoind` (20x faster than Pycoin), also supports ypub/upub and zpub/vpub notations! + +## Fixes and improvements + +- Refactoring of _manage_missed_conf_ and _confirmation management_ +- `ln_pay` now first pays using `legacy_pay` (MPP disabled) and on failure (for routing reasons), retry with the `pay` plugin (MPP enabled by default) +- Small fixes in `ln_pay` +- Small fixes in `ln_delinvoice` +- Small fixes in `ln_connectfund` +- Small fixes in LN webhooks +- `ln_listpays` can now take a `bolt11` string argument +- Sometimes, Gatekeeper was not compliant to JWT: now it is but still compatible with previous buggy version +- Fixed CN client examples +- Gatekeeper now returns _401 Unauthorized_ on authentication error and _403 Forbidden_ on authorization error +- Gatekeeper now waits for the Proxy to be ready before listening to requests +- More graceful shutdown on certain containers +- Docker now uses the `helloworld` endpoint to check Proxy's health +- Better way to determine slow machine during setup +- Better tests when starting up +- Fixed a bug when running Cyphernode as current user instead of dedicated user +- When trying to add a batcher that already exists (same `label`), it will now modify existing one +- Got rid of the full rawtx from the database! Let's use Bitcoin Core if needed +- `helloworld` endpoint now returns a JSON compliant response +- Added and improved tests: + - api_auth_docker/tests/test-gatekeeper.sh + - proxy_docker/app/tests/test-manage-missed.sh + - proxy_docker/app/tests/test-batching.sh + - proxy_docker/app/tests/test-derive.sh + - proxy_docker/app/tests/test-watchpub32.sh + - proxy_docker/app/tests/test-watches.sh +- Fixed typos and improved clarity in messages +- Bump ws from 5.2.2 to 5.2.3 in /cyphernodeconf_docker +- Bump path-parse from 1.0.6 to 1.0.7 in /cyphernodeconf_docker +- Bump tmpl from 1.0.4 to 1.0.5 in /cyphernodeconf_docker +- Bump validator from 10.11.0 to 13.7.0 in /cyphernodeconf_docker +- Code cleaning + +## Upgrades + +- C-lightning from v0.10.0 to v0.10.2 +- Bitcoin Core from v0.21.1 to v22.0 + +## Cypherapps + +- Batcher from v0.1.2 to v0.2.0 +- Spark Wallet from v0.2.17 to v0.3.0 +- Specter from v1.3.1 to v1.7.1 diff --git a/docker-build.sh b/docker-build.sh index 83d53cf..4431aeb 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Must be logged to docker hub: # docker login -u cyphernode @@ -59,18 +59,37 @@ x86_docker="amd64" arm_docker="arm" aarch64_docker="arm64" +v1="v0" +v2="v0.8" +v3="v0.8.0" + # Build amd64 and arm64 first, building for arm will trigger the manifest creation and push on hub -#arch_docker=${arm_docker} -#arch_docker=${aarch64_docker} -arch_docker=${x86_docker} +echo -e "\nBuild ${v3} for:\n" +echo "1) AMD 64 bits (Most PCs)" +echo "2) ARM 64 bits (RPi4, Mac M1)" +echo "3) ARM 32 bits (RPi2-3)" +echo -en "\nYour choice (1, 2, 3): " +read arch_input -v1="v0" -v2="v0.7" -v3="v0.7.0" +case "${arch_input}" in + 1) + arch_docker=${x86_docker} + ;; + 2) + arch_docker=${aarch64_docker} + ;; + 3) + arch_docker=${arm_docker} + ;; + *) + echo "Not a valid choice." + exit 1 + ;; +esac -echo "\nBuilding Cyphernode Core containers\n" -echo "arch_docker=$arch_docker\n" +echo -e "\nBuilding Cyphernode Core containers\n" +echo -e "arch_docker=$arch_docker\n" image "gatekeeper" "api_auth_docker/" ${arch_docker} \ && image "proxycron" "cron_docker/" ${arch_docker} \