summaryrefslogtreecommitdiff
path: root/fd/6a351658dd13b71449c091a6481c88a664e41a
blob: 7f413ae294e976b22459bbb76375092610cb1582 (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
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
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
Return-Path: <rryananizer@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 3A2DCE2A
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed,  9 Dec 2015 04:44:11 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-io0-f171.google.com (mail-io0-f171.google.com
	[209.85.223.171])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 3ECF7154
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Wed,  9 Dec 2015 04:44:10 +0000 (UTC)
Received: by ioir85 with SMTP id r85so47425300ioi.1
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue, 08 Dec 2015 20:44:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:in-reply-to:references:date:message-id:subject:from:to
	:cc:content-type;
	bh=TvJI5YZmrv9PnHc4AD9irZ0o2zRnwqR6EakZZGg0Wgo=;
	b=x9GlTxbgxfjV7+ztcV7RYkvZc269fbFrz57jmnPpa0fswt+RlaW6R+C0qqJbkT5JqI
	ogbQgeUtIVpvRY5Hlxl9KbbA1r8ClkiABpaQA18BFwocn19540dFHVZHE+4+fruvD9R7
	J6/kyCFU397AWZnMoPQvMzAa9SRcCPjW8fqrwdtLA5+ZMQN8kpJJEIgB24XvYRIlaMOM
	QR4fXmqVMEIgcQDYeHDOXWz13Jqc7wW5MaLz5HuqoiFvqR/lpA4w6st64AGlka8VITyl
	N/ocPLL0zypr5mxBQ3uey8+dWm6d1eGVUGlU8t/IOHALkjqiDTyNrbU/GaKod7eve/af
	8CcA==
MIME-Version: 1.0
X-Received: by 10.107.14.137 with SMTP id 131mr3308897ioo.69.1449636249660;
	Tue, 08 Dec 2015 20:44:09 -0800 (PST)
Received: by 10.107.137.226 with HTTP; Tue, 8 Dec 2015 20:44:09 -0800 (PST)
In-Reply-To: <CAAS2fgSxpSat3VOje3-C4zgaRUVJVx-eRJbSYJqhvfR5SvCDwA@mail.gmail.com>
References: <CAAS2fgQyVs1fAEj+vqp8E2=FRnqsgs7VUKqALNBHNxRMDsHdVg@mail.gmail.com>
	<20151208110752.GA31180@amethyst.visucore.com>
	<CABm2gDpcek=u=Rpe68EMOq6M7Bji9J=s5VvoQWKRqaQDAP5kTw@mail.gmail.com>
	<CABsx9T1wga3Tandoe2mVGSKdHJytHoc9Ko7HRm2SvJXABEFk9w@mail.gmail.com>
	<CAAS2fgTGYSiAJHZq80rD4UieV8XetS=W0b45b5onWAS9gF-F7g@mail.gmail.com>
	<CABsx9T1i50Gvxj18W=n2mYGNpsMrSkDT26CdA3aQqT5FFN86yw@mail.gmail.com>
	<CAAS2fgSxpSat3VOje3-C4zgaRUVJVx-eRJbSYJqhvfR5SvCDwA@mail.gmail.com>
Date: Tue, 8 Dec 2015 22:44:09 -0600
Message-ID: <CAF_2MyUJMdJyh7FKq6UYCtwJZQ59i-pnWT_tFEK5EQx65iwHDQ@mail.gmail.com>
From: Ryan Butler <rryananizer@gmail.com>
To: Gregory Maxwell <greg@xiph.org>
Content-Type: multipart/alternative; boundary=001a113fdfd2b6f17005266fbd25
X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW
	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: Wed, 09 Dec 2015 05:25:43 +0000
Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Capacity increases for the Bitcoin system.
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Bitcoin Development 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: Wed, 09 Dec 2015 04:44:11 -0000

--001a113fdfd2b6f17005266fbd25
Content-Type: text/plain; charset=UTF-8

>I agree, but nothing I have advocated creates significant technical
>debt. It is also a bad engineering practice to combine functional
>changes (especially ones with poorly understood system wide
>consequences and low user autonomy) with structural tidying.

I don't think I would classify placing things in consensus critical code
when it doesn't need to be as "structural tidying".  Gavin said "pile on"
which you took as implying "a lot", he can correct me, but I believe he
meant "add to".

> (especially ones with poorly understood system wide consequences and low
user autonomy)

This implies there you have no confidence in the unit tests and functional
testing around Bitcoin and should not be a reason to avoid refactoring.
It's more a reason to increase testing so that you will have confidence
when you refactor.

Also I don't think Martin Fowler would agree with you...

"Refactoring should be done in conjunction with adding new features."

"Always leave the code better than when you found it."

"Often you start working on adding new functionality and you realize the
existing structures don't play well with what you're about to do.

In this situation it usually pays to begin by refactoring the existing code
into the shape you now know is the right shape for what you're about to do."

-Martin Fowler








On Tue, Dec 8, 2015 at 7:31 PM, Gregory Maxwell via bitcoin-dev <
bitcoin-dev@lists.linuxfoundation.org> wrote:

> On Wed, Dec 9, 2015 at 1:09 AM, Gavin Andresen <gavinandresen@gmail.com>
> wrote:
> > Create a 1-megabyte transaction, with all of it's inputs spending
> > segwitness-spending SIGHASH_ALL inputs.
> >
> > Because the segwitness inputs are smaller in the block, you can fit more
> of
> > them into 1 megabyte. Each will hash very close to one megabyte of data.
>
> Witness size comes out of the 1MB at a factor of 0.25. It is not
> possible to make a block which has signatures with the full 1MB of
> data under the sighash while also having signatures externally.  So
> every byte moved into the witness and thus only counted as 25% comes
> out of the data being hashed and is hashed nInputs (*checksigs) less
> times.
>
> > I think it is a huge mistake not to "design for success" (see
> > http://gavinandresen.ninja/designing-for-success ).
>
> We are designing for success; including the success of being able to
> adapt and cope with uncertainty-- which is the most critical kind of
> success we can have in a world where nothing is and can be
> predictable.
>
> > I think it is a huge mistake to pile on technical debt in
> consensus-critical
> > code. I think we should be working harder to make things simpler, not
> more
> > complex, whenever possible.
>
> I agree, but nothing I have advocated creates significant technical
> debt. It is also a bad engineering practice to combine functional
> changes (especially ones with poorly understood system wide
> consequences and low user autonomy) with structural tidying.
>
> > And I think there are pretty big self-inflicted current problems because
> > worries about theoretical future problems have prevented us from coming
> to
> > consensus on simple solutions.
>
> That isn't my perspective. I believe we've suffered delays because of
> a strong desire to be inclusive and hear out all ideas, and not
> forestall market adoption, even for ideas that eschewed pragmatism and
> tried to build for forever in a single step and which in our hear of
> hearts we knew were not the right path today. It's time to move past
> that and get back on track with the progress can make and have been
> making, in terms of capacity as well as many other areas. I think that
> is designing for success.
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

--001a113fdfd2b6f17005266fbd25
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><span style=3D"font-size:12.8px">&gt;I agree, but not=
hing I have advocated creates significant technical</span><br style=3D"font=
-size:12.8px"><span style=3D"font-size:12.8px">&gt;debt. It is also a bad e=
ngineering practice to combine functional</span><br style=3D"font-size:12.8=
px"><span style=3D"font-size:12.8px">&gt;changes (especially ones with poor=
ly understood system wide</span><br style=3D"font-size:12.8px"><span style=
=3D"font-size:12.8px">&gt;consequences and low user autonomy) with structur=
al tidying.</span><br></div><div><span style=3D"font-size:12.8px"><br></spa=
n></div><div><span style=3D"font-size:12.8px">I don&#39;t think I would cla=
ssify placing things in consensus critical code when it doesn&#39;t need to=
 be as &quot;structural tidying&quot;. =C2=A0</span><span style=3D"font-siz=
e:12.8px">Gavin said &quot;pile on&quot; which you took as implying &quot;a=
 lot&quot;, he can correct me, but I believe he meant &quot;add to&quot;. =
=C2=A0</span></div><div><span style=3D"font-size:12.8px"><br></span></div><=
div><font color=3D"#000000" face=3D"Open Sans, serif"><span style=3D"font-s=
ize:15px;line-height:18px">&gt;</span></font><span style=3D"font-size:12.8p=
x">=C2=A0</span><span style=3D"font-size:12.8px">(especially ones with poor=
ly understood system wide=C2=A0</span><span style=3D"font-size:12.8px">cons=
equences and low user autonomy)</span><span style=3D"font-size:12.8px"><br>=
</span></div><div><span style=3D"font-size:12.8px"><br></span></div><div><s=
pan style=3D"font-size:12.8px">This implies there you have no confidence in=
 the unit tests and functional testing around Bitcoin and should not be a r=
eason to avoid refactoring.=C2=A0 It&#39;s more a reason to increase testin=
g so that you will have confidence when you refactor.</span><span style=3D"=
font-size:12.8px"><br></span></div><div><br></div><div>Also I don&#39;t thi=
nk Martin Fowler would agree with you...</div><div><br></div>&quot;<span st=
yle=3D"color:rgb(0,0,0);font-family:&#39;Open Sans&#39;,serif;font-size:15p=
x;line-height:18px">Refactoring should be done in conjunction with adding n=
ew features.&quot;</span><div><span style=3D"color:rgb(0,0,0);font-family:&=
#39;Open Sans&#39;,serif;font-size:15px;line-height:18px">=C2=A0</span><div=
><span style=3D"color:rgb(0,0,0);font-family:&#39;Open Sans&#39;,serif;font=
-size:15px;line-height:18px">&quot;</span><span style=3D"color:rgb(0,0,0);f=
ont-family:&#39;Open Sans&#39;,serif;font-size:15px;line-height:18px">Alway=
s leave the code better than when you found it.&quot;</span></div><div><spa=
n style=3D"color:rgb(0,0,0);font-family:&#39;Open Sans&#39;,serif;font-size=
:15px;line-height:18px"><br></span></div><div><span style=3D"color:rgb(0,0,=
0);font-family:&#39;Open Sans&#39;,serif;font-size:15px;line-height:18px">&=
quot;</span><span style=3D"color:rgb(0,0,0);font-family:&#39;Open Sans&#39;=
,serif;font-size:15px;line-height:18px">Often you start working on adding n=
ew functionality and you realize the existing structures don&#39;t play wel=
l with what you&#39;re about to do.</span><p style=3D"margin:0px;padding:0.=
5em 0em;border:0px;outline:0px;font-size:15px;vertical-align:baseline;clear=
:both;color:rgb(0,0,0);font-family:&#39;Open Sans&#39;,serif;line-height:18=
px;background-image:initial;background-repeat:initial">In this situation it=
 usually pays to begin by refactoring the existing code into the shape you =
now know is the right shape for what you&#39;re about to do.&quot;</p><span=
 style=3D"color:rgb(0,0,0);font-family:&#39;Open Sans&#39;,serif;font-size:=
15px;line-height:18px"><br></span><span style=3D"color:rgb(0,0,0);font-fami=
ly:&#39;Open Sans&#39;,serif;font-size:15px;line-height:18px">-Martin Fowle=
r</span></div><div><span style=3D"font-size:12.8px"><br></span></div><div><=
br></div><div><span style=3D"font-size:12.8px"><br></span></div><div><span =
style=3D"font-size:12.8px"><br></span></div><div><span style=3D"font-size:1=
2.8px"><br></span></div><div><br></div><div><span style=3D"font-size:12.8px=
"><br></span></div></div></div><div class=3D"gmail_extra"><br><div class=3D=
"gmail_quote">On Tue, Dec 8, 2015 at 7:31 PM, Gregory Maxwell via bitcoin-d=
ev <span dir=3D"ltr">&lt;<a href=3D"mailto:bitcoin-dev@lists.linuxfoundatio=
n.org" target=3D"_blank">bitcoin-dev@lists.linuxfoundation.org</a>&gt;</spa=
n> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;b=
order-left:1px #ccc solid;padding-left:1ex"><span class=3D"">On Wed, Dec 9,=
 2015 at 1:09 AM, Gavin Andresen &lt;<a href=3D"mailto:gavinandresen@gmail.=
com">gavinandresen@gmail.com</a>&gt; wrote:<br>
&gt; Create a 1-megabyte transaction, with all of it&#39;s inputs spending<=
br>
&gt; segwitness-spending SIGHASH_ALL inputs.<br>
&gt;<br>
&gt; Because the segwitness inputs are smaller in the block, you can fit mo=
re of<br>
&gt; them into 1 megabyte. Each will hash very close to one megabyte of dat=
a.<br>
<br>
</span>Witness size comes out of the 1MB at a factor of 0.25. It is not<br>
possible to make a block which has signatures with the full 1MB of<br>
data under the sighash while also having signatures externally.=C2=A0 So<br=
>
every byte moved into the witness and thus only counted as 25% comes<br>
out of the data being hashed and is hashed nInputs (*checksigs) less<br>
times.<br>
<span class=3D""><br>
&gt; I think it is a huge mistake not to &quot;design for success&quot; (se=
e<br>
&gt; <a href=3D"http://gavinandresen.ninja/designing-for-success" rel=3D"no=
referrer" target=3D"_blank">http://gavinandresen.ninja/designing-for-succes=
s</a> ).<br>
<br>
</span>We are designing for success; including the success of being able to=
<br>
adapt and cope with uncertainty-- which is the most critical kind of<br>
success we can have in a world where nothing is and can be<br>
predictable.<br>
<span class=3D""><br>
&gt; I think it is a huge mistake to pile on technical debt in consensus-cr=
itical<br>
&gt; code. I think we should be working harder to make things simpler, not =
more<br>
&gt; complex, whenever possible.<br>
<br>
</span>I agree, but nothing I have advocated creates significant technical<=
br>
debt. It is also a bad engineering practice to combine functional<br>
changes (especially ones with poorly understood system wide<br>
consequences and low user autonomy) with structural tidying.<br>
<span class=3D""><br>
&gt; And I think there are pretty big self-inflicted current problems becau=
se<br>
&gt; worries about theoretical future problems have prevented us from comin=
g to<br>
&gt; consensus on simple solutions.<br>
<br>
</span>That isn&#39;t my perspective. I believe we&#39;ve suffered delays b=
ecause of<br>
a strong desire to be inclusive and hear out all ideas, and not<br>
forestall market adoption, even for ideas that eschewed pragmatism and<br>
tried to build for forever in a single step and which in our hear of<br>
hearts we knew were not the right path today. It&#39;s time to move past<br=
>
that and get back on track with the progress can make and have been<br>
making, in terms of capacity as well as many other areas. I think that<br>
is designing for success.<br>
<div class=3D"HOEnZb"><div class=3D"h5">___________________________________=
____________<br>
bitcoin-dev mailing list<br>
<a href=3D"mailto:bitcoin-dev@lists.linuxfoundation.org">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>
</div></div></blockquote></div><br></div>

--001a113fdfd2b6f17005266fbd25--