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--