From: Eric Lombrozo <elombrozo@gmail.com>
To: "Jorge Timón" <jtimon@jtimon.cc>,
"Tamas Blummer" <tamas@bitsofproof.com>
Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>,
Libbitcoin <libbitcoin@lists.dyne.org>
Subject: Re: [bitcoin-dev] Libconsensus separated repository (was Bitcoin Core and hard forks)
Date: Fri, 21 Aug 2015 20:07:15 +0000 [thread overview]
Message-ID: <CABr1YTfKFzdJ5DuWrb_ua+s16Px9sgSrdLcYxAjEDujnbiy76Q@mail.gmail.com> (raw)
In-Reply-To: <CABm2gDpcEmiPNQWeUk5aTjuTSRAJSPYfgAKc7B_qrqw0w04xoA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2860 bytes --]
Unfortunately we have no way of rigorously proving functional equivalence
other than code review and unit testing. The simpler the consensus code
(and the more we can write it in a style that affords provability of
correctness) the easier it will be in the future to compare implementations.
Prior to swapping out implementations, we should at the least run it
through the gauntlet and perhaps run both implementations side-by-side.
All I/O should be treated abstractly in the API.
In C++ I really like using a nearly bare-bones signal template for most
async message handling, i.e.
https://github.com/ciphrex/mSIGNA/blob/master/deps/Signals/src/Signals.h
This greatly facilitates support for async bidirectional I/O, etc...with
minimal overhead.
But others might have other stylistic preferences.
- Eric
On Fri, Aug 21, 2015, 12:46 PM Jorge Timón <
bitcoin-dev@lists.linuxfoundation.org> wrote:
> On Thu, Aug 20, 2015 at 10:35 AM, Tamas Blummer <tamas@bitsofproof.com>
> wrote:
> > Every re-implementation, re-factoring even copy-paste introduces a risk
> of disagreement,
> > but also open the chance of doing the work better, in the sense of
> software engineering.
>
> But you don't want something better, you want something functionally
> identical.
> You may want to watch sipa's explanation on why "the implementation is
> the specification" and the reasons to separate libconsensus:
> https://youtu.be/l3O4nh79CUU?t=764
>
> >> On Aug 20, 2015, at 10:06, Jorge Timón <jtimon@jtimon.cc> wrote:
> >>
> >>
> >> But the goal is not reimplementing the consensus rules but rather
> >> extract them from Bitcoin Core so that nobody needs to re-implement
> >> them again.
> >
> >
> >
> > My goal is different. Compatibility with Bitcoin is important as I also
> want to deal with Bitcoins,
> > but it is also imperative to be able to create and serve other block
> chains with other rules and for those
> > I do not want to carry on the legacy of an antique tool set and a
> spaghetti style.
> >
> > Bits of Proof uses scala (akka networking), java (api service), c++
> (leveledb and now libconsensus)
> > and I am eager to integrate secp256k1 (c) as soon as part of consensus.
> The choices were
> > made because each piece appears best in what they do.
>
> Since you already depend on libconsensus for VerifyScript, wouldn't it
> be nice that it also offered VerifyTx, VerifyHeader and VerifyBlock?
> You would still have complete control over storage, concurrency,
> networking, policy...
> My plan is for the C API to interface with the external storage by
> passing a function pointer to it.
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>
[-- Attachment #2: Type: text/html, Size: 3766 bytes --]
next prev parent reply other threads:[~2015-08-21 20:07 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-23 14:30 [bitcoin-dev] Libconsensus separated repository (was Bitcoin Core and hard forks) Jorge Timón
2015-07-23 14:57 ` Milly Bitcoin
2015-07-23 21:02 ` Jorge Timón
2015-07-23 21:30 ` Milly Bitcoin
2015-07-28 6:40 ` Eric Voskuil
2015-07-28 8:47 ` Wladimir J. van der Laan
2015-07-28 9:58 ` Jorge Timón
2015-07-29 20:38 ` Eric Voskuil
2015-07-29 21:46 ` Jorge Timón
2015-08-20 0:53 ` Jorge Timón
2015-08-20 7:14 ` Tamas Blummer
2015-08-20 8:06 ` Jorge Timón
2015-08-20 8:35 ` Tamas Blummer
2015-08-20 17:44 ` Matt Corallo
2015-08-20 21:26 ` Tamas Blummer
2015-08-20 21:35 ` Matt Corallo
2015-08-21 6:46 ` Tamas Blummer
2015-08-21 19:46 ` Jorge Timón
2015-08-21 20:07 ` Eric Lombrozo [this message]
2015-08-22 11:04 ` Tamas Blummer
2015-08-23 1:23 ` Eric Lombrozo
2015-08-23 2:19 ` Eric Lombrozo
2015-08-23 6:42 ` Tamas Blummer
2015-08-29 23:30 ` Jorge Timón
2015-08-29 23:25 ` Jorge Timón
2015-08-29 22:08 ` Jorge Timón
2015-07-28 8:43 ` Wladimir J. van der Laan
2015-07-28 10:09 ` Jorge Timón
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CABr1YTfKFzdJ5DuWrb_ua+s16Px9sgSrdLcYxAjEDujnbiy76Q@mail.gmail.com \
--to=elombrozo@gmail.com \
--cc=bitcoin-dev@lists.linuxfoundation.org \
--cc=jtimon@jtimon.cc \
--cc=libbitcoin@lists.dyne.org \
--cc=tamas@bitsofproof.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox