1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
Return-Path: <jim.posen@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
[172.17.192.35])
by mail.linuxfoundation.org (Postfix) with ESMTPS id 5CE2AE3E
for <bitcoin-dev@lists.linuxfoundation.org>;
Thu, 5 Jul 2018 21:35:55 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-qk0-f182.google.com (mail-qk0-f182.google.com
[209.85.220.182])
by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 999A1762
for <bitcoin-dev@lists.linuxfoundation.org>;
Thu, 5 Jul 2018 21:35:54 +0000 (UTC)
Received: by mail-qk0-f182.google.com with SMTP id v17-v6so2843268qkb.11
for <bitcoin-dev@lists.linuxfoundation.org>;
Thu, 05 Jul 2018 14:35:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
bh=5DU3G0H9bW3Kn5iFsHQjy69Bpj+RdyDV7C7J31jasoM=;
b=j1nXacsgiMkI+Qg5lPi2JDYZMj0vXv/4yakLB1PbdXHnEPFwqcmjCV219gDVdtJXFE
8de7qUEjoVpYneNYSpWUeg8r4m/r9bn3AIyjblQer6pEieKoR73GFKdg9t87MDHBrtCX
MV1CCYV0TxysobeO8M64YDksl7xmoBYma6OX8CUyXlcKE7e4OUZwfk3sONwczxRAEEJY
HFuSNtLt4bI/02b3A/oENGOjdycV1cnuOFBbwbqjI+NlgcVB42PvolTJEGgT1QIZqvYL
auZywWMdzr/thlZcQ4+5yCgAvqsuBPFyjTolBeW4S8fZ8D8VBqxpCwlh/JRBLXiYyRT1
2M0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to;
bh=5DU3G0H9bW3Kn5iFsHQjy69Bpj+RdyDV7C7J31jasoM=;
b=VJX8gZnZQcwwj8RWy8Eidf0QpOsQqAXM4ol+4+PZBJoS4waJTTbd8Hh88HNPtvxAzR
ee32fDhwrExL0f03S4sroUvAaFX3CDPxl7OetdWBCdQXi93D99CMzouoIeOPzdiz+X2S
eNDspAiy7wa+EoNIk2rhp/U+xInEmNjsN0Ovs+ZLyKQ19mo1hLLwoa+5ktL/eXTd+Q0p
KJy/b7X4eRC4WKAWP6BTQhmBa3T59+Q/AfojcktLdvVIBPr5NTGhOCIEvuIgR8zyoJu5
Dvjd2JhgUxad8pSpURCnRjiroO42djZ89j47wM9sd7glG0vx1UnxdW8nVorEUQYK0GzF
MdLQ==
X-Gm-Message-State: APt69E2yg6tA1a9iULW0nzrTc+QjkVChVdcZW1aDNiPG/4jbxUo6Hj7t
/LQYnX5Ow9A7gzr/gqCYYqPRmPtwkMtApUcrrmjotQ==
X-Google-Smtp-Source: AAOMgpdBKCugjLo3l2qQYkFkNt2rmkGzOKPxhXvDxPn4bjdCKGkjtwsseG49UqLXE8RAd1kshojdMhoaTyujZ58rGI0=
X-Received: by 2002:a37:ddd5:: with SMTP id
u82-v6mr6524044qku.420.1530826553572;
Thu, 05 Jul 2018 14:35:53 -0700 (PDT)
MIME-Version: 1.0
References: <1530561781.1478095.1427741280.5FDF82CB@webmail.messagingengine.com>
In-Reply-To: <1530561781.1478095.1427741280.5FDF82CB@webmail.messagingengine.com>
From: Jim Posen <jim.posen@gmail.com>
Date: Thu, 5 Jul 2018 14:35:39 -0700
Message-ID: <CADZtCSgBNiKoWLw=SNZuByX6eeX38pkS_q76Bh3L9yTxxBEc2Q@mail.gmail.com>
To: me@romanzey.de,
Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Content-Type: multipart/alternative; boundary="000000000000f041e505704754a1"
X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, HTML_MESSAGE,
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: Fri, 06 Jul 2018 18:31:18 +0000
Subject: Re: [bitcoin-dev] An efficient re-implementation of Electrum Server
in Rust
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: Thu, 05 Jul 2018 21:35:55 -0000
--000000000000f041e505704754a1
Content-Type: text/plain; charset="UTF-8"
This is awesome, nice work!
On Mon, Jul 2, 2018 at 4:16 PM Roman Zeyde via bitcoin-dev <
bitcoin-dev@lists.linuxfoundation.org> wrote:
> Hello all,
>
> I was working on this project for the last few months, so a user could run
> his own Electrum server, with required hardware resources not much beyond
> those of a full node (using ideas from ElectrumX [1], Electrum Personal
> Server [2] and bitcoincore-indexd [3]).
>
> The code and usage instructions can be found here:
> https://github.com/romanz/electrs
>
> The server indexes the entire Bitcoin blockchain, and the resulting index
> [4] enables fast queries for any given user wallet, allowing the user to
> keep real-time track of his balances and his transaction history using the
> Electrum wallet [5].
> Since it runs on the user's own machine, there is no need for the wallet
> to communicate with external Electrum servers, thus preserving the privacy
> of the user's addresses and balances.
>
> Features:
> * Supports latest Electrum protocol [6].
> * Maintains an index of transaction inputs and outputs, allowing fast
> balance queries
> * Fast synchronization of the Bitcoin blockchain (~2.5 hours for ~185GB @
> June 2018) on modest hardware [7]
> * Low CPU & memory usage (after initial indexing)
> * Low index storage overhead (~20%), relying on a local full node for
> transaction retrieval
> * Efficient mempool tracker allowing better fee estimation [8].
> * `-txindex` is not required for the Bitcoin node
> * Uses `rust-bitcoin` library [9] for efficient
> serialization/deserialization of Bitcoin transactions
> * Uses a single RocksDB [10] database, for better consistency and crash
> recovery
>
> Hope you'll find it useful :)
> Questions, suggestions and pull requests are welcome!
>
> [1] https://github.com/kyuupichan/electrumx
> [2] https://github.com/chris-belcher/electrum-personal-server
> [3] https://github.com/jonasschnelli/bitcoincore-indexd
> [4] https://github.com/romanz/electrs/blob/master/doc/schema.md
> [5] https://electrum.org
> [6] https://electrumx.readthedocs.io/en/latest/protocol.html
> [7] https://gist.github.com/romanz/cd9324474de0c2f121198afe3d063548
> [8]
> https://github.com/spesmilo/electrum/blob/59c1d03f018026ac301c4e74facfc64da8ae4708/RELEASE-NOTES#L34-L46
> )
> [9] https://github.com/rust-bitcoin/rust-bitcoin
> [10] https://github.com/spacejam/rust-rocksdb
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
--000000000000f041e505704754a1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">This is awesome, nice work!<br></div><br><div class=3D"gma=
il_quote"><div dir=3D"ltr">On Mon, Jul 2, 2018 at 4:16 PM Roman Zeyde via b=
itcoin-dev <<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org">bit=
coin-dev@lists.linuxfoundation.org</a>> wrote:<br></div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad=
ding-left:1ex">Hello all,<br>
<br>
I was working on this project for the last few months, so a user could run =
his own Electrum server, with required hardware resources not much beyond t=
hose of a full node (using ideas from ElectrumX [1], Electrum Personal Serv=
er [2] and bitcoincore-indexd [3]).<br>
<br>
The code and usage instructions can be found here:<br>
<a href=3D"https://github.com/romanz/electrs" rel=3D"noreferrer" target=3D"=
_blank">https://github.com/romanz/electrs</a><br>
<br>
The server indexes the entire Bitcoin blockchain, and the resulting index [=
4] enables fast queries for any given user wallet, allowing the user to kee=
p real-time track of his balances and his transaction history using the Ele=
ctrum wallet [5].<br>
Since it runs on the user's own machine, there is no need for the walle=
t to communicate with external Electrum servers, thus preserving the privac=
y of the user's addresses and balances.<br>
<br>
Features:<br>
=C2=A0* Supports latest Electrum protocol [6].<br>
=C2=A0* Maintains an index of transaction inputs and outputs, allowing fast=
balance queries<br>
=C2=A0* Fast synchronization of the Bitcoin blockchain (~2.5 hours for ~185=
GB @ June 2018) on modest hardware [7]<br>
=C2=A0* Low CPU & memory usage (after initial indexing)<br>
=C2=A0* Low index storage overhead (~20%), relying on a local full node for=
transaction retrieval<br>
=C2=A0* Efficient mempool tracker allowing better fee estimation [8].<br>
=C2=A0* `-txindex` is not required for the Bitcoin node<br>
=C2=A0* Uses `rust-bitcoin` library [9] for efficient serialization/deseria=
lization of Bitcoin transactions<br>
=C2=A0* Uses a single RocksDB [10] database, for better consistency and cra=
sh recovery<br>
<br>
Hope you'll find it useful :)<br>
Questions, suggestions and pull requests are welcome!<br>
<br>
[1] <a href=3D"https://github.com/kyuupichan/electrumx" rel=3D"noreferrer" =
target=3D"_blank">https://github.com/kyuupichan/electrumx</a><br>
[2] <a href=3D"https://github.com/chris-belcher/electrum-personal-server" r=
el=3D"noreferrer" target=3D"_blank">https://github.com/chris-belcher/electr=
um-personal-server</a><br>
[3] <a href=3D"https://github.com/jonasschnelli/bitcoincore-indexd" rel=3D"=
noreferrer" target=3D"_blank">https://github.com/jonasschnelli/bitcoincore-=
indexd</a><br>
[4] <a href=3D"https://github.com/romanz/electrs/blob/master/doc/schema.md"=
rel=3D"noreferrer" target=3D"_blank">https://github.com/romanz/electrs/blo=
b/master/doc/schema.md</a><br>
[5] <a href=3D"https://electrum.org" rel=3D"noreferrer" target=3D"_blank">h=
ttps://electrum.org</a><br>
[6] <a href=3D"https://electrumx.readthedocs.io/en/latest/protocol.html" re=
l=3D"noreferrer" target=3D"_blank">https://electrumx.readthedocs.io/en/late=
st/protocol.html</a><br>
[7] <a href=3D"https://gist.github.com/romanz/cd9324474de0c2f121198afe3d063=
548" rel=3D"noreferrer" target=3D"_blank">https://gist.github.com/romanz/cd=
9324474de0c2f121198afe3d063548</a><br>
[8] <a href=3D"https://github.com/spesmilo/electrum/blob/59c1d03f018026ac30=
1c4e74facfc64da8ae4708/RELEASE-NOTES#L34-L46" rel=3D"noreferrer" target=3D"=
_blank">https://github.com/spesmilo/electrum/blob/59c1d03f018026ac301c4e74f=
acfc64da8ae4708/RELEASE-NOTES#L34-L46</a>)<br>
[9] <a href=3D"https://github.com/rust-bitcoin/rust-bitcoin" rel=3D"norefer=
rer" target=3D"_blank">https://github.com/rust-bitcoin/rust-bitcoin</a><br>
[10] <a href=3D"https://github.com/spacejam/rust-rocksdb" rel=3D"noreferrer=
" target=3D"_blank">https://github.com/spacejam/rust-rocksdb</a><br>
_______________________________________________<br>
bitcoin-dev mailing list<br>
<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org" target=3D"_blank">=
bitcoin-dev@lists.linuxfoundation.org</a><br>
<a href=3D"https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev" =
rel=3D"noreferrer" target=3D"_blank">https://lists.linuxfoundation.org/mail=
man/listinfo/bitcoin-dev</a><br>
</blockquote></div>
--000000000000f041e505704754a1--
|