summaryrefslogtreecommitdiff
path: root/ad/deebb6c06bda359d7babfc8b8dca8a38b89e75
blob: 90e5bc3f654dee0b7cf83528a04082352350abf8 (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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
Return-Path: <danny.thorpe@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id 9C5F6E38
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 12 Feb 2016 17:08:45 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-qg0-f46.google.com (mail-qg0-f46.google.com
	[209.85.192.46])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 0C74BB0
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 12 Feb 2016 17:08:43 +0000 (UTC)
Received: by mail-qg0-f46.google.com with SMTP id y89so66840409qge.2
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Fri, 12 Feb 2016 09:08:42 -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=R+pq0nvs0QvxobThzk8OTsZd2p3YWQmYzm8JFGde1eU=;
	b=uMWkM+/JPcuB32aDLfSHvWOjHCWGqmE2iyFGbe+/ZhikbpuuC42+KPUB4L3I5RR+yC
	YHYfxVkJFSJLZTen4rjVoO9tbNoCZJIOCYmrQWXUhPSGBhINJYxNGp/6HOcRJS0Qhu9H
	Z/pOAszQxvd1+9dsmxZCUO4uwJEqMkwnG0dVoBtcZ1OkOjzqD3CqE5WjycxPbosapwKF
	+UJ6gnRccMP0FEYRW9WH3Ku1AYaivPWkkTHJmhS5BniZ7efWMf4+Fj3kpcXf/YTKUBwk
	1Ph2PPmDnruEsfdB+lGW7ai4o/0xb3m6ybx46WNVzhf8Bsju0TVKj8hQOXQ7J5wGpEr8
	tzhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20130820;
	h=x-gm-message-state:mime-version:in-reply-to:references:date
	:message-id:subject:from:to:cc:content-type;
	bh=R+pq0nvs0QvxobThzk8OTsZd2p3YWQmYzm8JFGde1eU=;
	b=PGxPng5bCxD99wqn31tkHssPchKea7RdLn22U08VuvzaHUhfyHIQLoPbaqwSLmLTue
	PMmI17pp4vPDOk+hJ4+1gU0nAXv7zsP7Pky9dqPgECnuP+6aHIzKs4qdS9egwgzQXrvx
	B8YoP1AqcTfhv5X4wVE4bCvFfQTK2Ix2T7ljqZKzLPFmuMYKNc92Wc1jttYQpQhbbbCA
	D+MWjDPAoP1WRJHlMG7l3HsSzr1uwelzMKM3bxf9MxFHYZz+1pAzwSFIvHhGokEn3VWp
	EqnxchP5HmBerOx2sQDpOwn3mwgaOrCA1UTzfTmOyIqwILytzl62J+wEhZKO9/ui+3bv
	bwyA==
X-Gm-Message-State: AG10YOS641KIHdAceM2yQiPQPf180XhpVxG4Jsm6Lw2jRfY39uqm3WPdkdEFF27g0KNCJ1P2PVLEBM8FwWVPyQ==
MIME-Version: 1.0
X-Received: by 10.140.95.117 with SMTP id h108mr3255920qge.65.1455296922226;
	Fri, 12 Feb 2016 09:08:42 -0800 (PST)
Received: by 10.140.20.206 with HTTP; Fri, 12 Feb 2016 09:08:42 -0800 (PST)
In-Reply-To: <60215.178.73.210.16.1455174198.squirrel@boosthardware.com>
References: <56BA71D4.5040200@riseup.net> <56BBA879.5030309@riseup.net>
	<60215.178.73.210.16.1455174198.squirrel@boosthardware.com>
Date: Fri, 12 Feb 2016 09:08:42 -0800
Message-ID: <CAJN5wHUBXRdiCcbjZ1bMGhjMzLWZ+6uA9-86gN1UNzLOD78Xcw@mail.gmail.com>
From: Danny Thorpe <danny.thorpe@gmail.com>
To: Patrick Shirkey <pshirkey@boosthardware.com>
Content-Type: multipart/alternative; boundary=001a11c15a8e179526052b95b8d5
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: Fri, 12 Feb 2016 20:17:37 +0000
Cc: Bitcoin Dev <bitcoin-dev@lists.linuxfoundation.org>
Subject: Re: [bitcoin-dev] Clearing up some misconceptions about full nodes
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: Fri, 12 Feb 2016 17:08:45 -0000

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

"With a very powerful "Desktop" machine bitcoin-qt dominates CPU/GPU
resources."

That doesn't match my experience.

System responsiveness / user experience can suffer when running bitcoin-qt
on a spinning hard disk. Disk I/O load will cause the whole system to grind
and severely disrupt the user experience.

Move the Bitcoin data to an SSD, though, and it's an entirely different
story.

The initial blockchain synchronization / "catch up" is CPU and disk
intensive, but after initial sync I find bitcoin-qt uses only a trivial
amount of CPU to keep up with verifying new blocks and new transactions.

Running bitcoin-qt occasionally is a much more painful user experience than
running bitcoin-qt continuously.

I'm running Bitcoin Core v0.12.rc2 on an old dual core Pentium E2160 at
1.8GHz, 6GB RAM, 64 bit Windows 10, with the Bitcoin data on SSD. This
system is about 6 years old and was an economy model even when new. Not
what I would call a powerful system. I've only added RAM and the SSD.

On that machine I run two instances of Bitcoin-qt - one for mainnet, and
another for testnet, and an instance of bfgminer to manage a handful of USB
Block Eruptors for testnet mining. Both bitcoin-qt instances are typically
at their max of 25 connections (each). Total CPU load floats around 11%,
with only occasional spikes to 40% for a few seconds.  The mainnet
bitcoin-qt process uses about 700MB of RAM, testnet about 300MB.

This machine did fall into disk grinding paralysis during initial sync /
catchup with the v0.10 and v0.11 builds of bitcoin-qt, when the Bitcoin
data was on a spinning disk. Moving the Bitcoin data to an SSD drive had
the greatest impact on breaking the disk-bound whole-system paralysis.
Increasing the system RAM, upgrading to v0.12, and upgrading the OS to Win
10 all contributed smaller improvements.

It is possible to run a full node on a small desktop machine concurrent
with user apps. Just get the Bitcoin data off of spinning media and onto
SSD, make sure you have plenty of RAM, and leave bitcoin-qt running all the
time.

-Danny



On Wed, Feb 10, 2016 at 11:03 PM, Patrick Shirkey via bitcoin-dev <
bitcoin-dev@lists.linuxfoundation.org> wrote:

>
> On Thu, February 11, 2016 8:15 am, Chris Belcher via bitcoin-dev wrote:
> > I've been asked to post this to this mailing list too. It's time to
> > clear up some misconceptions floating around about full nodes.
> >
> > === Myth: There are only about 5500 full nodes worldwide ===
> >
> > This number comes from this and similar sites: https://bitnodes.21.co/
> > and it measured by trying to probe every nodes on their open ports.
> >
> > Problem is, not all nodes actually have open ports that can be probed.
> > Either because they are behind firewalls or because their users have
> > configured them to not listen for connections.
> >
> > Nobody knows how many full nodes there are, since many people don't know
> > how to forward ports behind a firewall, and bandwidth can be costly, its
> > quite likely that the number of nodes with closed ports is at least
> > another several thousand.
> >
> > Nodes with open ports are able to upload blocks to new full nodes. In
> > all other ways they are the same as nodes with closed ports. But because
> > open-port-nodes can be measured and closed-port-nodes cannot, some
> > members of the bitcoin community have been mistaken into believing that
> > open-port-nodes are that matters.
> >
> > === Myth: This number of nodes matters and/or is too low. ===
> >
> > Nodes with open ports are useful to the bitcoin network because they
> > help bootstrap new nodes by uploading historical blocks, they are a
> > measure of bandwidth capacity. Right now there is no shortage of
> > bandwidth capacity, and if there was it could be easily added by renting
> > cloud servers.
> >
> > The problem is not bandwidth or connections, but trust, security and
> > privacy. Let me explain.
> >
> > Full nodes are able to check that all of bitcoin's rules are being
> > followed. Rules like following the inflation schedule, no double
> > spending, no spending of coins that don't belong to the holder of the
> > private key and all the other rules required to make bitcoin work (e.g.
> > difficulty)
> >
> > Full nodes are what make bitcoin trustless. No longer do you have to
> > trust a financial institution like a bank or paypal, you can simply run
> > software on your own computer. To put simply, the only node that matters
> > is the one you use.
> >
> > === Myth: There is no incentive to run nodes, the network relies on
> > altruism ===
> >
> > It is very much in the individual bitcoin's users rational self interest
> > to run a full node and use it as their wallet.
> >
> > Using a full node as your wallet is the only way to know for sure that
> > none of bitcoin's rules have been broken. Rules like no coins were spent
> > not belonging to the owner, that no coins were spent twice, that no
> > inflation happens outside of the schedule and that all the rules needed
> > to make the system work are followed  (e.g. difficulty.) All other kinds
> > of wallet involve trusting a third party server.
> >
> > All these checks done by full nodes also increase the security. There
> > are many attacks possible against lightweight wallets that do not affect
> > full node wallets.
> >
> > This is not just mindless paranoia, there have been real world examples
> > where full node users were unaffected by turmoil in the rest of the
> > bitcoin ecosystem. The 4th July 2015 accidental chain fork effected many
> > kinds of wallets. Here is the wiki page on this event
> > https://en.bitcoin.it/wiki/July_2015_chain_forks#Wallet_Advice
> >
> > Notice how updated node software was completely unaffected by the fork.
> > All other wallets required either extra confirmations or checking that
> > the third-party institution was running the correct version.
> >
> > Full nodes wallets are also currently the most private way to use
> > Bitcoin, with nobody else learning which bitcoin addresses belong to
> > you. All other lightweight wallets leak information about which
> > addresses are yours because they must query third-party servers. The
> > Electrum servers will know which addresses belong to you and can link
> > them together. Despite bloom filtering, lightweight wallets based on
> > BitcoinJ do not provide much privacy against nodes who connected
> > directly to the wallet or wiretappers.
> >
> > For many use cases, such privacy may not be required. But an important
> > reason to run a full node and use it as a wallet is to get the full
> > privacy benefits.
> >
> > === Myth: I can just set up a node on a cloud server instance and leave
> > it ===
> >
> > To get the benefits of running a full node, you must use it as your
> > wallet, preferably on hardware you control.
> >
> > Most people who do this do not use a full node as their wallet.
> > Unfortunately because Bitcoin has a similar name to Bittorrent, some
> > people believe that upload capacity is the most important thing for a
> > healthy network. As I've explained above: bandwidth and connections are
> > not a problem today, trust, security and privacy are.
> >
> > === Myth: Running a full node is not recommended, most people should use
> > a lightweight client ===
> >
> > This was common advice in 2012, but since then the full node software
> > has vastly improved in terms of user experience.
> >
> > If you cannot spare the disk space to store the blockchain, you can
> > enable pruning as in:
> > https://bitcoin.org/en/release/v0.11.0#block-file-pruning. In Bitcoin
> > Core 0.12, pruning being enabled will leave the wallet enabled.
> > Altogether this should require less than 1.5GB of hard disk space.
> >
> > If you cannot spare the bandwidth to upload blocks to other nodes, there
> > are number of options to reduce or eliminate the bandwidth requirement
> > found in https://bitcoin.org/en/full-node#reduce-traffic . These include
> > limiting connections, bandwidth targetting and disabling listening.
> > Bitcoin Core 0.12 has the new option -blocksonly, where the node will
> > not download unconfirmed transaction and only download new blocks. This
> > more than halves the bandwidth usage at the expense of not seeing
> > unconfirmed transactions.
> >
> > Synchronizing the blockchain for a new node has improved since 2012 too.
> > Features like headers-first
> > (https://bitcoin.org/en/release/v0.10.0#faster-synchronization) and
> > libsecp256k1 have greatly improved the initial synchronization time.
> >
> > It can be further improved by setting -dbcache=6000 which keeps more of
> > the UTXO set in memory. It reduces the amount of time reading from disk
> > and therefore speeds up synchronization. Tests showed that the entire
> > blockchain can now be synchronized in less than _3 and a half hours_
> > (See
> > https://github.com/bitcoin/bitcoin/pull/6954#issuecomment-154993958)
> > Note that you'll need Bitcoin Core 0.12 or later to get all these
> > efficiency improvements.
> >
> > === How to run a full node as your wallet ===
> >
> > I think every moderate user of bitcoin would benefit by running a full
> > node and using it as their wallet. There are several ways to do this.
> >
> > * Run a bitcoin-qt full node (https://bitcoin.org/en/download).
> >
> > * Use wallet software that is backed by a full node e.g. Armory
> > (https://bitcoinarmory.com/) or JoinMarket
> > (https://github.com/AdamISZ/JMBinary/#jmbinary)
> >
> > * Use a lightweight wallet that connects only to your full node (e.g.
> > Multibit connecting only to your node running at home, Electrum
> > connecting only to your own Electrum server)
> >
> > So what are you waiting for? The benefits are many, the downsides are
> > not that bad. The more people do this, the more robust and healthy the
> > bitcoin ecosystem is.
> >
> >
>
> This is very useful information but from my experience it is not viable to
> have a full node running full time on a desktop system i.e sharing the
> system with a normal desktop workload.
>
> With a very powerful "Desktop" machine bitcoin-qt dominates CPU/GPU
> resources. Surely the majority of nodes NOT running open ports are being
> run on desktop systems.  It's likely that the vast majority of the
> "normal/desktop" user base are not going to setup dedicated machines to
> run a full node full time.
>
> It's likely that the vast majority of full nodes that are not running open
> ports are used occasionally when the user wants to make a transaction or
> "catch up" with the blockchain.
>
> That creates a divide between those who do have the resources to
> contribute to the system on a full time basis (minority) and those who do
> not (majority).
>
> Does the power of p2p decentralization lie with the vast majority or the
> "wealthy" resource rich minority?
>
> How will the move to 2MB hard fork affect the vast majority of nodes?
>
> For example Debian unstable currently provides the following:
>
> apt-cache  madison bitcoin-qt
> bitcoin-qt |   0.11.2-1 | http://ftp.lug.ro/debian/ unstable/main amd64
> Packages
>    bitcoin |   0.11.2-1 | http://ftp.lug.ro/debian/ unstable/main Sources
>
>
> The rollout affect of the hard fork on the entire bitcoin ecosystem is a
> difficult process to plan in advance. It's not viable to simply rely on
> press releases to encourage users to upgrade their nodes. The debacle with
> Pulse Audio during the mid 2000's should be a lesson for those who seek
> that route.
>
> Compare that to the requirements for spinning up "bitcoin-2.0" and
> enabling users to move their wallets to the new blockchain at their
> leisure.
>
> The ecosystem doesn't suffer from instant degradation. Bitcoin "brand"
> loyalty will ensure that users who want to move forward with the economic
> potential of the 2MB blocksize will be able to keep their existing funds
> safe while testing the waters with the new blocksize.
>
> After all Bitcoin is still the only game in town when it comes to scale
> and proven history of financial return.
>
> As the new blockchain builds momentum the old one will eventually become
> obsolete. However it may also become the digital equivalency of Silver and
> that is also a useful, profitable and viable alternative with a proven
> history of success.
>
>
>
>
> --
> Patrick Shirkey
> Boost Hardware Ltd
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
>

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

<div dir=3D"ltr">&quot;<span style=3D"font-size:12.8px">With a very powerfu=
l &quot;Desktop&quot; machine bitcoin-qt dominates CPU/GPU</span><br style=
=3D"font-size:12.8px"><span style=3D"font-size:12.8px">resources.&quot;</sp=
an><div><span style=3D"font-size:12.8px"><br></span></div><div><span style=
=3D"font-size:12.8px">That doesn&#39;t match my experience.=C2=A0</span></d=
iv><div><span style=3D"font-size:12.8px"><br></span></div><div><span style=
=3D"font-size:12.8px">System responsiveness / user experience can suffer wh=
en running bitcoin-qt on a spinning hard disk. Disk I/O load will cause the=
 whole system to grind and severely disrupt the user experience.</span></di=
v><div><span style=3D"font-size:12.8px"><br></span></div><div><span style=
=3D"font-size:12.8px">Move the Bitcoin data to an SSD, though, and it&#39;s=
 an entirely different story.</span><br></div><div><br></div><div><span sty=
le=3D"font-size:12.8px">The initial blockchain synchronization / &quot;catc=
h up&quot; is CPU and disk intensive, but after initial sync I find bitcoin=
-qt uses only a trivial amount of CPU to keep up with verifying new blocks =
and new transactions. =C2=A0</span></div><div><span style=3D"font-size:12.8=
px"><br></span></div><div><span style=3D"font-size:12.8px">Running bitcoin-=
qt occasionally is a much more painful user experience than running bitcoin=
-qt continuously.</span></div><div><span style=3D"font-size:12.8px"><br></s=
pan></div><div><span style=3D"font-size:12.8px">I&#39;m running Bitcoin Cor=
e v0.12.rc2 on an old dual core Pentium E2160 at 1.8GHz, 6GB RAM, 64 bit Wi=
ndows 10, with the Bitcoin data on SSD. This system is about 6 years old an=
d was an economy model even when new. Not what I would call a powerful syst=
em. I&#39;ve only added RAM and the SSD.</span></div><div><span style=3D"fo=
nt-size:12.8px"><br></span></div><div><span style=3D"font-size:12.8px">On t=
hat machine I run two instances of Bitcoin-qt - one for mainnet, and anothe=
r for testnet, and an instance of bfgminer to manage a handful of USB Block=
 Eruptors for testnet mining. Both bitcoin-qt instances are typically at th=
eir max of 25 connections (each). Total CPU load floats around 11%, with on=
ly occasional spikes to 40% for a few seconds.=C2=A0 The mainnet bitcoin-qt=
 process uses about 700MB of RAM, testnet about 300MB.</span></div><div><sp=
an style=3D"font-size:12.8px"><br></span></div><div><span style=3D"font-siz=
e:12.8px">This machine did fall into disk grinding paralysis during initial=
 sync / catchup with the v0.10 and v0.11 builds of bitcoin-qt, when the Bit=
coin data was on a spinning disk. Moving the Bitcoin data to an SSD drive h=
ad the greatest impact on breaking the disk-bound whole-system paralysis. I=
ncreasing the system RAM, upgrading to v0.12, and upgrading the OS to Win 1=
0 all contributed smaller improvements.</span></div><div><span style=3D"fon=
t-size:12.8px"><br></span></div><div><span style=3D"font-size:12.8px">It is=
 possible to run a full node on a small desktop machine concurrent with use=
r apps. Just get the Bitcoin data off of spinning media and onto SSD, make =
sure you have plenty of RAM, and leave bitcoin-qt running all the time.</sp=
an></div><div><span style=3D"font-size:12.8px"><br></span></div><div><span =
style=3D"font-size:12.8px">-Danny</span></div><div><span style=3D"font-size=
:12.8px"><br></span></div><div><br></div></div><div class=3D"gmail_extra"><=
br><div class=3D"gmail_quote">On Wed, Feb 10, 2016 at 11:03 PM, Patrick Shi=
rkey via bitcoin-dev <span dir=3D"ltr">&lt;<a href=3D"mailto:bitcoin-dev@li=
sts.linuxfoundation.org" target=3D"_blank">bitcoin-dev@lists.linuxfoundatio=
n.org</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"m=
argin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class=3D=
"HOEnZb"><div class=3D"h5"><br>
On Thu, February 11, 2016 8:15 am, Chris Belcher via bitcoin-dev wrote:<br>
&gt; I&#39;ve been asked to post this to this mailing list too. It&#39;s ti=
me to<br>
&gt; clear up some misconceptions floating around about full nodes.<br>
&gt;<br>
&gt; =3D=3D=3D Myth: There are only about 5500 full nodes worldwide =3D=3D=
=3D<br>
&gt;<br>
&gt; This number comes from this and similar sites: <a href=3D"https://bitn=
odes.21.co/" rel=3D"noreferrer" target=3D"_blank">https://bitnodes.21.co/</=
a><br>
&gt; and it measured by trying to probe every nodes on their open ports.<br=
>
&gt;<br>
&gt; Problem is, not all nodes actually have open ports that can be probed.=
<br>
&gt; Either because they are behind firewalls or because their users have<b=
r>
&gt; configured them to not listen for connections.<br>
&gt;<br>
&gt; Nobody knows how many full nodes there are, since many people don&#39;=
t know<br>
&gt; how to forward ports behind a firewall, and bandwidth can be costly, i=
ts<br>
&gt; quite likely that the number of nodes with closed ports is at least<br=
>
&gt; another several thousand.<br>
&gt;<br>
&gt; Nodes with open ports are able to upload blocks to new full nodes. In<=
br>
&gt; all other ways they are the same as nodes with closed ports. But becau=
se<br>
&gt; open-port-nodes can be measured and closed-port-nodes cannot, some<br>
&gt; members of the bitcoin community have been mistaken into believing tha=
t<br>
&gt; open-port-nodes are that matters.<br>
&gt;<br>
&gt; =3D=3D=3D Myth: This number of nodes matters and/or is too low. =3D=3D=
=3D<br>
&gt;<br>
&gt; Nodes with open ports are useful to the bitcoin network because they<b=
r>
&gt; help bootstrap new nodes by uploading historical blocks, they are a<br=
>
&gt; measure of bandwidth capacity. Right now there is no shortage of<br>
&gt; bandwidth capacity, and if there was it could be easily added by renti=
ng<br>
&gt; cloud servers.<br>
&gt;<br>
&gt; The problem is not bandwidth or connections, but trust, security and<b=
r>
&gt; privacy. Let me explain.<br>
&gt;<br>
&gt; Full nodes are able to check that all of bitcoin&#39;s rules are being=
<br>
&gt; followed. Rules like following the inflation schedule, no double<br>
&gt; spending, no spending of coins that don&#39;t belong to the holder of =
the<br>
&gt; private key and all the other rules required to make bitcoin work (e.g=
.<br>
&gt; difficulty)<br>
&gt;<br>
&gt; Full nodes are what make bitcoin trustless. No longer do you have to<b=
r>
&gt; trust a financial institution like a bank or paypal, you can simply ru=
n<br>
&gt; software on your own computer. To put simply, the only node that matte=
rs<br>
&gt; is the one you use.<br>
&gt;<br>
&gt; =3D=3D=3D Myth: There is no incentive to run nodes, the network relies=
 on<br>
&gt; altruism =3D=3D=3D<br>
&gt;<br>
&gt; It is very much in the individual bitcoin&#39;s users rational self in=
terest<br>
&gt; to run a full node and use it as their wallet.<br>
&gt;<br>
&gt; Using a full node as your wallet is the only way to know for sure that=
<br>
&gt; none of bitcoin&#39;s rules have been broken. Rules like no coins were=
 spent<br>
&gt; not belonging to the owner, that no coins were spent twice, that no<br=
>
&gt; inflation happens outside of the schedule and that all the rules neede=
d<br>
&gt; to make the system work are followed=C2=A0 (e.g. difficulty.) All othe=
r kinds<br>
&gt; of wallet involve trusting a third party server.<br>
&gt;<br>
&gt; All these checks done by full nodes also increase the security. There<=
br>
&gt; are many attacks possible against lightweight wallets that do not affe=
ct<br>
&gt; full node wallets.<br>
&gt;<br>
&gt; This is not just mindless paranoia, there have been real world example=
s<br>
&gt; where full node users were unaffected by turmoil in the rest of the<br=
>
&gt; bitcoin ecosystem. The 4th July 2015 accidental chain fork effected ma=
ny<br>
&gt; kinds of wallets. Here is the wiki page on this event<br>
&gt; <a href=3D"https://en.bitcoin.it/wiki/July_2015_chain_forks#Wallet_Adv=
ice" rel=3D"noreferrer" target=3D"_blank">https://en.bitcoin.it/wiki/July_2=
015_chain_forks#Wallet_Advice</a><br>
&gt;<br>
&gt; Notice how updated node software was completely unaffected by the fork=
.<br>
&gt; All other wallets required either extra confirmations or checking that=
<br>
&gt; the third-party institution was running the correct version.<br>
&gt;<br>
&gt; Full nodes wallets are also currently the most private way to use<br>
&gt; Bitcoin, with nobody else learning which bitcoin addresses belong to<b=
r>
&gt; you. All other lightweight wallets leak information about which<br>
&gt; addresses are yours because they must query third-party servers. The<b=
r>
&gt; Electrum servers will know which addresses belong to you and can link<=
br>
&gt; them together. Despite bloom filtering, lightweight wallets based on<b=
r>
&gt; BitcoinJ do not provide much privacy against nodes who connected<br>
&gt; directly to the wallet or wiretappers.<br>
&gt;<br>
&gt; For many use cases, such privacy may not be required. But an important=
<br>
&gt; reason to run a full node and use it as a wallet is to get the full<br=
>
&gt; privacy benefits.<br>
&gt;<br>
&gt; =3D=3D=3D Myth: I can just set up a node on a cloud server instance an=
d leave<br>
&gt; it =3D=3D=3D<br>
&gt;<br>
&gt; To get the benefits of running a full node, you must use it as your<br=
>
&gt; wallet, preferably on hardware you control.<br>
&gt;<br>
&gt; Most people who do this do not use a full node as their wallet.<br>
&gt; Unfortunately because Bitcoin has a similar name to Bittorrent, some<b=
r>
&gt; people believe that upload capacity is the most important thing for a<=
br>
&gt; healthy network. As I&#39;ve explained above: bandwidth and connection=
s are<br>
&gt; not a problem today, trust, security and privacy are.<br>
&gt;<br>
&gt; =3D=3D=3D Myth: Running a full node is not recommended, most people sh=
ould use<br>
&gt; a lightweight client =3D=3D=3D<br>
&gt;<br>
&gt; This was common advice in 2012, but since then the full node software<=
br>
&gt; has vastly improved in terms of user experience.<br>
&gt;<br>
&gt; If you cannot spare the disk space to store the blockchain, you can<br=
>
&gt; enable pruning as in:<br>
&gt; <a href=3D"https://bitcoin.org/en/release/v0.11.0#block-file-pruning" =
rel=3D"noreferrer" target=3D"_blank">https://bitcoin.org/en/release/v0.11.0=
#block-file-pruning</a>. In Bitcoin<br>
&gt; Core 0.12, pruning being enabled will leave the wallet enabled.<br>
&gt; Altogether this should require less than 1.5GB of hard disk space.<br>
&gt;<br>
&gt; If you cannot spare the bandwidth to upload blocks to other nodes, the=
re<br>
&gt; are number of options to reduce or eliminate the bandwidth requirement=
<br>
&gt; found in <a href=3D"https://bitcoin.org/en/full-node#reduce-traffic" r=
el=3D"noreferrer" target=3D"_blank">https://bitcoin.org/en/full-node#reduce=
-traffic</a> . These include<br>
&gt; limiting connections, bandwidth targetting and disabling listening.<br=
>
&gt; Bitcoin Core 0.12 has the new option -blocksonly, where the node will<=
br>
&gt; not download unconfirmed transaction and only download new blocks. Thi=
s<br>
&gt; more than halves the bandwidth usage at the expense of not seeing<br>
&gt; unconfirmed transactions.<br>
&gt;<br>
&gt; Synchronizing the blockchain for a new node has improved since 2012 to=
o.<br>
&gt; Features like headers-first<br>
&gt; (<a href=3D"https://bitcoin.org/en/release/v0.10.0#faster-synchronizat=
ion" rel=3D"noreferrer" target=3D"_blank">https://bitcoin.org/en/release/v0=
.10.0#faster-synchronization</a>) and<br>
&gt; libsecp256k1 have greatly improved the initial synchronization time.<b=
r>
&gt;<br>
&gt; It can be further improved by setting -dbcache=3D6000 which keeps more=
 of<br>
&gt; the UTXO set in memory. It reduces the amount of time reading from dis=
k<br>
&gt; and therefore speeds up synchronization. Tests showed that the entire<=
br>
&gt; blockchain can now be synchronized in less than _3 and a half hours_<b=
r>
&gt; (See<br>
&gt; <a href=3D"https://github.com/bitcoin/bitcoin/pull/6954#issuecomment-1=
54993958" rel=3D"noreferrer" target=3D"_blank">https://github.com/bitcoin/b=
itcoin/pull/6954#issuecomment-154993958</a>)<br>
&gt; Note that you&#39;ll need Bitcoin Core 0.12 or later to get all these<=
br>
&gt; efficiency improvements.<br>
&gt;<br>
&gt; =3D=3D=3D How to run a full node as your wallet =3D=3D=3D<br>
&gt;<br>
&gt; I think every moderate user of bitcoin would benefit by running a full=
<br>
&gt; node and using it as their wallet. There are several ways to do this.<=
br>
&gt;<br>
&gt; * Run a bitcoin-qt full node (<a href=3D"https://bitcoin.org/en/downlo=
ad" rel=3D"noreferrer" target=3D"_blank">https://bitcoin.org/en/download</a=
>).<br>
&gt;<br>
&gt; * Use wallet software that is backed by a full node e.g. Armory<br>
&gt; (<a href=3D"https://bitcoinarmory.com/" rel=3D"noreferrer" target=3D"_=
blank">https://bitcoinarmory.com/</a>) or JoinMarket<br>
&gt; (<a href=3D"https://github.com/AdamISZ/JMBinary/#jmbinary" rel=3D"nore=
ferrer" target=3D"_blank">https://github.com/AdamISZ/JMBinary/#jmbinary</a>=
)<br>
&gt;<br>
&gt; * Use a lightweight wallet that connects only to your full node (e.g.<=
br>
&gt; Multibit connecting only to your node running at home, Electrum<br>
&gt; connecting only to your own Electrum server)<br>
&gt;<br>
&gt; So what are you waiting for? The benefits are many, the downsides are<=
br>
&gt; not that bad. The more people do this, the more robust and healthy the=
<br>
&gt; bitcoin ecosystem is.<br>
&gt;<br>
&gt;<br>
<br>
</div></div>This is very useful information but from my experience it is no=
t viable to<br>
have a full node running full time on a desktop system i.e sharing the<br>
system with a normal desktop workload.<br>
<br>
With a very powerful &quot;Desktop&quot; machine bitcoin-qt dominates CPU/G=
PU<br>
resources. Surely the majority of nodes NOT running open ports are being<br=
>
run on desktop systems.=C2=A0 It&#39;s likely that the vast majority of the=
<br>
&quot;normal/desktop&quot; user base are not going to setup dedicated machi=
nes to<br>
run a full node full time.<br>
<br>
It&#39;s likely that the vast majority of full nodes that are not running o=
pen<br>
ports are used occasionally when the user wants to make a transaction or<br=
>
&quot;catch up&quot; with the blockchain.<br>
<br>
That creates a divide between those who do have the resources to<br>
contribute to the system on a full time basis (minority) and those who do<b=
r>
not (majority).<br>
<br>
Does the power of p2p decentralization lie with the vast majority or the<br=
>
&quot;wealthy&quot; resource rich minority?<br>
<br>
How will the move to 2MB hard fork affect the vast majority of nodes?<br>
<br>
For example Debian unstable currently provides the following:<br>
<br>
apt-cache=C2=A0 madison bitcoin-qt<br>
bitcoin-qt |=C2=A0 =C2=A00.11.2-1 | <a href=3D"http://ftp.lug.ro/debian/" r=
el=3D"noreferrer" target=3D"_blank">http://ftp.lug.ro/debian/</a> unstable/=
main amd64<br>
Packages<br>
=C2=A0 =C2=A0bitcoin |=C2=A0 =C2=A00.11.2-1 | <a href=3D"http://ftp.lug.ro/=
debian/" rel=3D"noreferrer" target=3D"_blank">http://ftp.lug.ro/debian/</a>=
 unstable/main Sources<br>
<br>
<br>
The rollout affect of the hard fork on the entire bitcoin ecosystem is a<br=
>
difficult process to plan in advance. It&#39;s not viable to simply rely on=
<br>
press releases to encourage users to upgrade their nodes. The debacle with<=
br>
Pulse Audio during the mid 2000&#39;s should be a lesson for those who seek=
<br>
that route.<br>
<br>
Compare that to the requirements for spinning up &quot;bitcoin-2.0&quot; an=
d<br>
enabling users to move their wallets to the new blockchain at their<br>
leisure.<br>
<br>
The ecosystem doesn&#39;t suffer from instant degradation. Bitcoin &quot;br=
and&quot;<br>
loyalty will ensure that users who want to move forward with the economic<b=
r>
potential of the 2MB blocksize will be able to keep their existing funds<br=
>
safe while testing the waters with the new blocksize.<br>
<br>
After all Bitcoin is still the only game in town when it comes to scale<br>
and proven history of financial return.<br>
<br>
As the new blockchain builds momentum the old one will eventually become<br=
>
obsolete. However it may also become the digital equivalency of Silver and<=
br>
that is also a useful, profitable and viable alternative with a proven<br>
history of success.<br>
<br>
<br>
<br>
<br>
--<br>
Patrick Shirkey<br>
Boost Hardware Ltd<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>

--001a11c15a8e179526052b95b8d5--