summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamas Blummer <tamas.blummer@gmail.com>2019-02-03 21:15:25 +0100
committerbitcoindev <bitcoindev@gnusha.org>2019-02-03 20:15:32 +0000
commit13016e55ef9083d5cdeb3caa3942262f3369368a (patch)
tree87839e749119a56786111b42a97da940583be79c
parent51df9d96177265b85551d733a2fb12f9f8be6b2a (diff)
downloadpi-bitcoindev-13016e55ef9083d5cdeb3caa3942262f3369368a.tar.gz
pi-bitcoindev-13016e55ef9083d5cdeb3caa3942262f3369368a.zip
[bitcoin-dev] BIP157 server Murmel introduced, enchancement suggestion to BIP158
-rw-r--r--a3/3ec61030249bf7328d01f9958f68edd505eb19129
1 files changed, 129 insertions, 0 deletions
diff --git a/a3/3ec61030249bf7328d01f9958f68edd505eb19 b/a3/3ec61030249bf7328d01f9958f68edd505eb19
new file mode 100644
index 000000000..e821cface
--- /dev/null
+++ b/a3/3ec61030249bf7328d01f9958f68edd505eb19
@@ -0,0 +1,129 @@
+Return-Path: <tamas.blummer@gmail.com>
+Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
+ [172.17.192.35])
+ by mail.linuxfoundation.org (Postfix) with ESMTPS id 5DAA784EB
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Sun, 3 Feb 2019 20:15:32 +0000 (UTC)
+X-Greylist: whitelisted by SQLgrey-1.7.6
+Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com
+ [209.85.221.43])
+ by smtp1.linuxfoundation.org (Postfix) with ESMTPS id C1CCF165
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Sun, 3 Feb 2019 20:15:31 +0000 (UTC)
+Received: by mail-wr1-f43.google.com with SMTP id z5so12303282wrt.11
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Sun, 03 Feb 2019 12:15:31 -0800 (PST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
+ h=from:content-transfer-encoding:mime-version:subject:message-id:date
+ :cc:to; bh=P+QfBuooBNNlyuoeOTvy/UOxq+DLAfyeS7G4WyouP2Q=;
+ b=eXlAl6jV9M6GmRlfbmy2HWdvf+Ivkfti8Sv/jSqc3aBI7EX5B2Smk1KKNe2Y/GmK34
+ 2dGRrJpaQDAP3hz6mgy4UCwi2hI0U/q5psEha3qZoIgWxxJS1PTe7clGr0bPa3c+ABcj
+ aoXiQWgY8SZhU074XN3qlhCYag54bfrmY1jAHoWqe5aCZO7veIiRPRxaIA42yd6R/4hi
+ jhufgKG2j1FXXXaAT2lzzmsBpo5M4BHQHxUxCrInG4X0XISXSk8FLFlpP+oGtKaeeFdi
+ Yl1lGhBIr1UHi2UZgRB8hFM4a3e5od2HPkJeMnPNgFbt1oHJiHNjVQ8rRZ9SxXKHk0Hk
+ EOWA==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=1e100.net; s=20161025;
+ h=x-gm-message-state:from:content-transfer-encoding:mime-version
+ :subject:message-id:date:cc:to;
+ bh=P+QfBuooBNNlyuoeOTvy/UOxq+DLAfyeS7G4WyouP2Q=;
+ b=IYaXBi6SDpKexn+9rillSGsZb050sNUfa+MJ+/UYPxEh9nqp+qJ74luDfYkskSNm6R
+ zuGOvs1YFX8oZGaw9RqFApBjNzgUqKddcNVG7w509WrDvAss4Z+6efwaRlzqplpkGgj4
+ QFJbLX2ZXjL4KJ+V9qaOm6J54xzOSmMuahyDTNJHCo0VYbfzXMcJK33z7shkzk849e9N
+ 44b5cu7A1wbNVRBn1njZuyPmCRu/w4NN/M5ROdeFT9eEEMY2+a0CscoBEVsLQ7L5q1SO
+ 3qO5IUVptF+HScxUIUqSuackt+6qbggDRX762jrMdsQrJkb6phVfciIyeP7+NCse9be+
+ C24A==
+X-Gm-Message-State: AJcUukcuOlNhRimDaH4Ma8DPETblv1MYL36YjluFUzVB5Yig+j2og78a
+ dgduu2pfRU/iqaL2jE9Vktrzx1OB
+X-Google-Smtp-Source: ALg8bN5aW+gDOSzhVWECIN27Dm9b9xHUQrRsOdJLH/XESO15LEQKUtuYl5ejYM2qOX50HmP+BN9dFA==
+X-Received: by 2002:adf:a78a:: with SMTP id j10mr47344054wrc.191.1549224929968;
+ Sun, 03 Feb 2019 12:15:29 -0800 (PST)
+Received: from p200300dd672d1a81e0b322f99ad6a3db.dip0.t-ipconnect.de
+ (p200300DD672D1A81E0B322F99AD6A3DB.dip0.t-ipconnect.de.
+ [2003:dd:672d:1a81:e0b3:22f9:9ad6:a3db])
+ by smtp.gmail.com with ESMTPSA id
+ k23sm7079369wmj.32.2019.02.03.12.15.28
+ (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
+ Sun, 03 Feb 2019 12:15:29 -0800 (PST)
+From: Tamas Blummer <tamas.blummer@gmail.com>
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: quoted-printable
+Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
+Message-Id: <9509A1AC-287A-48E9-84E9-D507D6A2A4CD@gmail.com>
+Date: Sun, 3 Feb 2019 21:15:25 +0100
+To: bitcoin-dev@lists.linuxfoundation.org
+X-Mailer: Apple Mail (2.3273)
+X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,
+ DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM,
+ RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1
+X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
+ smtp1.linux-foundation.org
+X-Mailman-Approved-At: Sun, 03 Feb 2019 20:50:04 +0000
+Cc: jimpo@coinbase.com
+Subject: [bitcoin-dev] BIP157 server Murmel introduced,
+ enchancement suggestion to BIP158
+X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
+List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>,
+ <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
+List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
+List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
+List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
+List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>,
+ <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
+X-List-Received-Date: Sun, 03 Feb 2019 20:15:32 -0000
+
+TLDR: I suggest to add outpoint filter to BIP158 as it proved to be =
+useful while developing a filter server and allows further checks in =
+filter client.
+
+Murmel is my project within the rust-bitcoin community. =
+https://github.com/rust-bitcoin/murmel
+
+Its goal is to provide a lightweight, at least SPV security, settlement =
+layer for the Lightning Network implementation in Rust. =
+https://github.com/rust-bitcoin/rust-lightning
+
+Murmel relies on BIP157 (Client Side Block Filtering). Since Bitcoin =
+Core does not yet support this protocol extension, I also added filter =
+and block server functionality to Murmel and this might be useful for=20
+development purposes any other BIP157 client project.
+
+You may compile and run a Murmel filter server to support your client =
+development. It bootstraps within a few hours. Follow the instructions =
+at: https://github.com/rust-bitcoin/murmel
+
+While implementing both client and server side I made an observation =
+that should be considered for BIP158:
+
+BIP158 specifies base filter containing all scripts spent or created by =
+a block (except those with OP_RETURN). I found it useful to also compute =
+a filter on spent and created outpoints.
+The Murmel filter server consults these outpoint filters to find the =
+transactions with the spent scripts while computing the base script =
+filter. Since outpoints usually getting spent shortly after created, =
+this approach works well enough to
+keep up with the blockchain, although far too slow to rely on it while =
+bootstrapping. An advantage of this approach of looking up UTXO is that =
+there is nothing to be recomputed at re-org, filters are consulted =
+following
+the path from current tip back to genesis. This fits well with =
+Murmel=E2=80=99s storage, that is my other project Hammersbald =
+https://github.com/rust-bitcoin/hammersbald, a highly efficient truly =
+append only blockchain store in Rust.
+Filter matching is also nicely parallelizable looking up subsets of =
+spent outputs in parallel.=20
+
+A lightweight client can use outpoint filters to efficiently validate =
+spent coins or miner reward, which goes beyond SPV guarantees. This is =
+probabilistically possible now, and definitely once filters are =
+committed.
+
+For above reasons I suggest to also add outpoint filter to BIP158, so =
+filter servers may support it, as does Murmel. Murmel is moving quickly; =
+I tagged the version as of this mail with DEVLIST for later reference.
+
+Tamas Blummer=
+