From 20939d260964fa6d5bc4f23a9095a05ffc7fc74b Mon Sep 17 00:00:00 2001 From: Steve Jain Date: Mon, 19 Nov 2018 17:12:52 -0500 Subject: [PATCH 1/3] Add draft of btcnode role doc --- btcnode.adoc | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++ index.adoc | 1 + 2 files changed, 96 insertions(+) create mode 100644 btcnode.adoc diff --git a/btcnode.adoc b/btcnode.adoc new file mode 100644 index 0000000..f41464c --- /dev/null +++ b/btcnode.adoc @@ -0,0 +1,95 @@ += Bitcoin Core Nodes + +Bisq contributors run a federation of Bitcoin Core nodes to ensure Bisq connects to nodes with consistent Bitcoin Core implementations. + + +== Introduction + +In the past, Bisq connected to arbitrary Bitcoin Core nodes, but the prospect of the SegWit2x hard fork in Fall 2017 made it clear this was not ideal—in the case of a hard fork, it would be impossible for Bisq to tell which fork a connected node was running. The SegWit2x hard fork never happened, but if it did, there was a chance transactions would execute on an undesirable fork, and even worse, a chance that transactions would execute on different forks. + +Hence the decision to run a federation of Bitcoin nodes known to run the same Bitcoin Core implementation and configuration—Bisq can expect all bitcoin nodes it connects to enforce consistent block validation rules. + +An important additional benefit of this setup is added user privacy: bloom filters in bitcoinj are not implemented very well, so connecting only to nodes run by trusted Bisq contributors avoids monitoring from arbitrary public nodes. + +Note: Bisq users can still choose to connect to arbitrary public nodes, as before, or even connect to specific nodes they prefer. + +== Infrastructure + +=== GitHub + +Issues are managed in the {gh-org}/bisq-btcnode[bisq-network/bisq-btcnode] repository. + +=== Slack + +Discussion of Bitcoin Core node status and updates takes place in the `#bisq-btcnode` Slack channel. + + +== Roles + + +=== Maintainer + +The contributor(s) responsible for full node <> and <>.footnote:[See link:roles.html#maintainer[]] + +==== Role Issue + +{gh-org}/roles/issues/66[bisq-network/roles#66] footnote:[See link:roles.html#issue[]] + +==== Role Team +:btcnode-maintainers: {gh-team}/btcnode-maintainers[@bisq-network/btcnode-maintainers] + +{btcnode-maintainers} footnote:[See link:roles.html#team[]] + +==== Duties + + * Monitor communications on the `#bisq-btcnode` Slack channel.footnote:[See link:roles.html#communication[]] + * Keep this documentation up to date (in particular, the <> detailed below).footnote:[See link:roles.html#documentation[]] + * Write a monthly report on the Bitcoin Node Maintainer <>.footnote:[See link:roles.html#reporting[]] + +==== Rights + + * Write access to the {gh-org}/bisq-btcnode[bisq-network/bisq-btcnode] repository. + +=== Operator + +The contributor(s) responsible for keeping full nodes running as outlined in <>.footnote:[See link:roles.html#maintainer[]] + +==== Role Issue + +{gh-org}/roles/issues/67[bisq-network/roles#67] footnote:[See link:roles.html#issue[]] + +==== Role Team +:btcnode-operators: {gh-team}/btcnode-operators[@bisq-network/btcnode-operators] + +{btcnode-operators} footnote:[See link:roles.html#team[]] + +==== Duties + + * Operate bitcoin nodes as detailed below in <>. + * Monitor communications on the `#bisq-btcnode` Slack channel.footnote:[See link:roles.html#communication[]] + * Write a monthly report on the Bitcoin Node Operator <>.footnote:[See link:roles.html#reporting[]] + +==== Rights + + * N/A + + +== Process + +[ the following is a rough outline in need of feedback and with blanks to fill ] + +=== Step 0. Evaluate + +Determine if this is really a role you can fill. It's expected that your node will maintain (1) good uptime and (2) an up-to-date config and bitcoind version (as required by the Bitcoin Node Maintainer). There are no strict requirements for either, but it's expected that you will make your best effort to stay current. + +=== Step 1. Get in Touch + +Contact the Bitcoin Core Maintainer to convey your intention of setting up a Bitcoin Core node for Bisq. + +=== Step 2. Set it Up + +Set up a Bitcoin Core node, making sure to use the configuration https://github.com/bisq-network/bisq-btcnode[specified here] [where is it, actually?]. Also make sure your node runs in a secure environment [ details? ] and that it allows onion connections so Bisq can connect to it. + +=== Step 3. Include Node in Bisq Source + +Once your node is ready, send a PR to include it as a Bitcoin Core node for Bisq (they're currently specified https://github.com/bisq-network/bisq/blob/ff4e22d5f537ec8e77bffb3fec116b96fa387c46/core/src/main/java/bisq/core/btc/nodes/BtcNodes.java[here]). diff --git a/index.adoc b/index.adoc index 42fd598..cc84114 100644 --- a/index.adoc +++ b/index.adoc @@ -53,6 +53,7 @@ Docs without hyperlinks haven't been written yet. If you want to write one, <> * <> * <> + * <> == Papers From 69489f0bb7ed03270d9293c27dec1184983e89b3 Mon Sep 17 00:00:00 2001 From: Steve Jain Date: Tue, 27 Nov 2018 11:41:45 -0500 Subject: [PATCH 2/3] Integrate feedback from cbeams and ManfredKarrer Emphasize user privacy in abstract and intro; link to master branch in URL. --- btcnode.adoc | 8 ++++---- index.adoc | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/btcnode.adoc b/btcnode.adoc index f41464c..bcdb148 100644 --- a/btcnode.adoc +++ b/btcnode.adoc @@ -1,15 +1,15 @@ = Bitcoin Core Nodes -Bisq contributors run a federation of Bitcoin Core nodes to ensure Bisq connects to nodes with consistent Bitcoin Core implementations. +Bisq contributors run a federation of Bitcoin Core nodes to (1) avoid relying on bloom filters to protect user privacy when connecting to arbitrary public nodes and (2) ensure Bisq connects to nodes with consistent Bitcoin Core implementations. == Introduction In the past, Bisq connected to arbitrary Bitcoin Core nodes, but the prospect of the SegWit2x hard fork in Fall 2017 made it clear this was not ideal—in the case of a hard fork, it would be impossible for Bisq to tell which fork a connected node was running. The SegWit2x hard fork never happened, but if it did, there was a chance transactions would execute on an undesirable fork, and even worse, a chance that transactions would execute on different forks. -Hence the decision to run a federation of Bitcoin nodes known to run the same Bitcoin Core implementation and configuration—Bisq can expect all bitcoin nodes it connects to enforce consistent block validation rules. +Critically, bloom filters introduce serious privacy flaws when connecting to arbitrary bitcoin nodes, as chain analysis companies spy on SPV wallets. Connecting only to nodes run by trusted Bisq contributors avoids such monitoring. -An important additional benefit of this setup is added user privacy: bloom filters in bitcoinj are not implemented very well, so connecting only to nodes run by trusted Bisq contributors avoids monitoring from arbitrary public nodes. +Hence the decision to run a federation of Bitcoin nodes: more robust user privacy and a consistent Bitcoin Core implementation Bisq can rely on. Note: Bisq users can still choose to connect to arbitrary public nodes, as before, or even connect to specific nodes they prefer. @@ -92,4 +92,4 @@ Set up a Bitcoin Core node, making sure to use the configuration https://github. === Step 3. Include Node in Bisq Source -Once your node is ready, send a PR to include it as a Bitcoin Core node for Bisq (they're currently specified https://github.com/bisq-network/bisq/blob/ff4e22d5f537ec8e77bffb3fec116b96fa387c46/core/src/main/java/bisq/core/btc/nodes/BtcNodes.java[here]). +Once your node is ready, send a PR to include it as a Bitcoin Core node for Bisq (they're currently specified https://github.com/bisq-network/bisq/blob/master/core/src/main/java/bisq/core/btc/nodes/BtcNodes.java[here]). diff --git a/index.adoc b/index.adoc index cc84114..c242f30 100644 --- a/index.adoc +++ b/index.adoc @@ -49,11 +49,12 @@ Docs without hyperlinks haven't been written yet. If you want to write one, <> * <> * <> + ** <> * <> * <> * <> * <> - * <> + == Papers From 5e03e36560dfa9028259013343ca7514f157b205 Mon Sep 17 00:00:00 2001 From: Steve Jain Date: Fri, 30 Nov 2018 12:48:02 -0500 Subject: [PATCH 3/3] Add feedback from sqrrm on process --- btcnode.adoc | 4 +--- index.adoc | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/btcnode.adoc b/btcnode.adoc index bcdb148..b6fa2f3 100644 --- a/btcnode.adoc +++ b/btcnode.adoc @@ -76,8 +76,6 @@ The contributor(s) responsible for keeping full nodes running as outlined in <

> * <> * <> - ** <> + ** <> * <> * <> * <>