summaryrefslogtreecommitdiff
path: root/c6/91822ead5e0109962bb1b3696a38cfc7763ff2
blob: 2cbf6b8dae6f2f3cac1cfe3037a6378c4837a8e0 (plain)
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
Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193]
	helo=mx.sourceforge.net)
	by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <decker.christian@gmail.com>) id 1VZIpU-0000VF-A7
	for bitcoin-development@lists.sourceforge.net;
	Thu, 24 Oct 2013 11:11:52 +0000
Received-SPF: pass (sog-mx-3.v43.ch3.sourceforge.com: domain of gmail.com
	designates 209.85.219.50 as permitted sender)
	client-ip=209.85.219.50;
	envelope-from=decker.christian@gmail.com;
	helo=mail-oa0-f50.google.com; 
Received: from mail-oa0-f50.google.com ([209.85.219.50])
	by sog-mx-3.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1VZIpT-0006HO-9e
	for bitcoin-development@lists.sourceforge.net;
	Thu, 24 Oct 2013 11:11:52 +0000
Received: by mail-oa0-f50.google.com with SMTP id j6so1565469oag.9
	for <bitcoin-development@lists.sourceforge.net>;
	Thu, 24 Oct 2013 04:11:46 -0700 (PDT)
X-Received: by 10.182.40.134 with SMTP id x6mr1706795obk.31.1382613105898;
	Thu, 24 Oct 2013 04:11:45 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.76.126.210 with HTTP; Thu, 24 Oct 2013 04:11:05 -0700 (PDT)
In-Reply-To: <5268C632.3030005@250bpm.com>
References: <791a727f-2188-4848-bd77-ea733c8c5c2c@me.com>
	<201310211947.59640.luke@dashjr.org> <52661DB7.7040805@250bpm.com>
	<FAE2A544-9295-4087-96DE-D4602D109CBD@me.com>
	<CAAS2fgS2f=gYRSr1n2DzK7CUH3xG3J2JMnDreCKBoCcJcpGLxg@mail.gmail.com>
	<52662AA1.5050509@250bpm.com>
	<CAJHLa0NDus+Ou5go8b_OHvjYW8f7oxXbpxnHTG3dcvxGR49nxA@mail.gmail.com>
	<52677CF7.9070609@250bpm.com> <20131023194039.GB31497@petertodd.org>
	<52682C24.30700@250bpm.com> <20131023202731.GA31783@petertodd.org>
	<CAPg+sBjv5We415atZocrZniKexFnKmUXB+bMC-tSG4ehQK9rwQ@mail.gmail.com>
	<5268C632.3030005@250bpm.com>
From: Christian Decker <decker.christian@gmail.com>
Date: Thu, 24 Oct 2013 13:11:05 +0200
Message-ID: <CALxbBHVEdTmo1VWL5zj2ZBV6c-Td4TfpbQSQOWuLGbpxHSDRdA@mail.gmail.com>
To: Martin Sustrik <sustrik@250bpm.com>
Content-Type: text/plain; charset=ISO-8859-1
X-Spam-Score: -1.6 (-)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked.
	See
	http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
	for more information. [URIs: 250bpm.com]
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(decker.christian[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
	author's domain
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1VZIpT-0006HO-9e
Cc: Bitcoin Development <bitcoin-development@lists.sourceforge.net>
Subject: Re: [Bitcoin-development] Revisiting the BIPS process, a proposal
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Thu, 24 Oct 2013 11:11:52 -0000

I'd like to add some historical background about how the "protocol
specification" came to be in the first place.

A bit over three years [1] ago I started an attempt to document the
network protocol, by reverse engineering it from the satoshi
client. My goal, back then, was to enable like-minded engineers to
create alternative clients and move away from the client-monoculture
that is still predominant today. It was clear from the beginning that
it would merely be a reverse engineering effort, and that it would
likely lag a bit behind the changes in the main client. It was meant
as a help for engineers that are not well versed in C/C++ to enable
them to contribute by creating new clients, but the satoshi client
would always be the de-facto standard.

With the move from Google Code to the Bitcoin.it wiki somehow this
notion of it being a reverse engineering effort was lost and people
started assuming that if the behavior of the satoshi client did not
match the protocol description it was a bug on the client
side. Instead it is because the reverse engineering of the protocol is
incorrect or simply missing some details. Although the protocol
description is far more complete than it was back when we started, I
still don't feel comfortable giving it the name specification.

I still believe that a client monoculture is bad for the system as a
whole, because a single bug might bring down the whole network. Giving
people the necessary tools to implement new clients brings
stability. I do understand the criticism that writing a specification
might hinder future development as it restricts the possible changes
to the protocol, but isn't this already the case as long as we have
legacy versions of the client participating in the network? I would
also argue that having a specification allows an application
independent review of the protocol to identify possible improvements
and bugs.

I think the protocol description has an important place in the
development of Bitcoin, so much so that we pushed a long time ago to
separate protocol version from the client version. I would love to see
the protocol specification becoming official part of the bitcoin
github repository, which would ideally be maintained alongside the
satoshi client to keep it up to date.

Regards,
Christian Decker

[1] https://bitcointalk.org/index.php?topic=231
--
Christian Decker


On Thu, Oct 24, 2013 at 9:03 AM, Martin Sustrik <sustrik@250bpm.com> wrote:
> On 23/10/13 23:07, Pieter Wuille wrote:
>
>> In short,
>> consistency is more important than correctness.
>
> That's a nice and concise way to put it and any potential protocol
> documentation should start with a statement like that.
>
>> However, I do not think that making it hard to find information about
>> the details of the system is the way to go. Alternate implementations
>> are likely inevitable, and in the long run probably a win for the
>> ecosystem. If effort is put into accurately describing the rules, it
>> should indeed carry a strong notice about it being descriptive rather
>> than normative.
>
> One interesting question is whather alternative implementations are more
> likely to get it wrong because the protocol description is wrong or
> because the authors misunderstood the reference implementation source code.
>
> Extensive documentation of the source code, a la Knuth's literate
> programming, may be some kind of a middle ground.
>
>> If someone is willing to work on that, I am (and likely many people in
>> #bitcoin-dev are) available for any questions about the protocol and
>> its semantics.
>
> Ok. Several people expressed an interest in the topic, so I'll give it a
> try and see how it fares.
>
> Martin
>
>
> ------------------------------------------------------------------------------
> October Webinars: Code for Performance
> Free Intel webinars can help you accelerate application performance.
> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from
> the latest Intel processors and coprocessors. See abstracts and register >
> http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
> _______________________________________________
> Bitcoin-development mailing list
> Bitcoin-development@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bitcoin-development