Bitcoin Forum
May 03, 2024, 08:30:12 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: are full nodes without port forwarding useful?  (Read 1236 times)
maqifrnswa (OP)
Sr. Member
****
Offline Offline

Activity: 454
Merit: 250


View Profile
November 15, 2012, 03:48:30 AM
 #1

If a full node is behind a firewall (that you have no control over) and thus cannot accept incoming connections, is it still useful to the network? Or is it just taking up incoming ports on other nodes that would be better if left available for other clients?
1714768212
Hero Member
*
Offline Offline

Posts: 1714768212

View Profile Personal Message (Offline)

Ignore
1714768212
Reply with quote  #2

1714768212
Report to moderator
1714768212
Hero Member
*
Offline Offline

Posts: 1714768212

View Profile Personal Message (Offline)

Ignore
1714768212
Reply with quote  #2

1714768212
Report to moderator
Each block is stacked on top of the previous one. Adding another block to the top makes all lower blocks more difficult to remove: there is more "weight" above each block. A transaction in a block 6 blocks deep (6 confirmations) will be very difficult to remove.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714768212
Hero Member
*
Offline Offline

Posts: 1714768212

View Profile Personal Message (Offline)

Ignore
1714768212
Reply with quote  #2

1714768212
Report to moderator
finway
Hero Member
*****
Offline Offline

Activity: 714
Merit: 500


View Profile
November 15, 2012, 04:39:35 AM
 #2

it helps spreading txes,yes.

jgarzik
Legendary
*
qt
Offline Offline

Activity: 1596
Merit: 1091


View Profile
November 15, 2012, 05:33:59 AM
 #3

If a full node is behind a firewall (that you have no control over) and thus cannot accept incoming connections, is it still useful to the network? Or is it just taking up incoming ports on other nodes that would be better if left available for other clients?

Yes, it is useful.

Every full node, even behind a firewall, is a node that helps ensure the block chain and transactions are valid.

Each full node is a "vote" for the proper block chain.


Jeff Garzik, Bloq CEO, former bitcoin core dev team; opinions are my own.
Visit bloq.com / metronome.io
Donations / tip jar: 1BrufViLKnSWtuWGkryPsKsxonV2NQ7Tcj
Mike Hearn
Legendary
*
expert
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 15, 2012, 10:37:23 AM
 #4

I disagree, it's not particularly useful.

Nodes don't vote just by running. They vote either by relaying a transaction, or by mining. Relaying a transaction is only useful as a "vote" for SPV clients that can't verify transactions themselves. It has no impact on other full nodes. And even counting relays is somewhat controversial as a technique for measuring confidence (there  are cases where it can fail).

However, if you're making outbound connections only, then you're not helping SPV clients. So the only voting you can do is mining.

If you mine, then sure, it's helpful. If you don't, it just takes up ports that other clients could use more.

gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
November 15, 2012, 03:13:09 PM
Last edit: November 15, 2012, 03:28:45 PM by gmaxwell
 #5

I disagree, it's not particularly useful.

Nodes don't vote just by running. They vote either by relaying a transaction, or by mining.

I don't agree with Mike. Bitcoin is not a democracy— at least not a majority voting one. It's not a system that is predicated on a "vote", it's a system predicated on autonomous validation and it would not be trustworthy if it were predicated on relaying based voting as sibyl attacks would undermine it. The only "voting" in bitcoin is the computational vote on the ordering of transactions, which we don't know how to resolve absent a vote, and a non-mining node doesn't actively participate in that (though they do passively participate in that by forwarding only valid blocks— which is essential but rather indirect).

A non-listening node contributes through the basic services of honestly relaying transactions and blocks, but it also contributes to the security of the system by making sure that any violations of the system rules are ignored as effectively as possible.  They do this even when they are not providing listening services so that Mike's SPV clients can externalize their cost of running their own validation... though it is obviously much more valuable when a node provides this service to nodes which lack the validation.  The existence of many relaying full nodes, regardless of if they listen, is one of the reasons that the "red balloons" attack (where miners selfishly fail to relay txn with good fees) is not a practical issue and also doesn't depend on the relaying nodes listening. Another way they help is by improving privacy for other nodes by relaying transactions and thus further obscuring their origins.

An extra point to add is that a node especially contributes when it is better maintained than the average node— because it can increase the speed and reliability of transaction and block relaying network wide. E.g. because the average node is on some slow spinning disk, a fast node which stays up with current software, and runs on a SSD or ramdisk can contribute quite a bit. Faster relaying makes forks less likely which makes zero and one confirmation transactions more safe for those foolish enough to use them. A node can also contribute better when it's crossing transports— e.g. talking to nodes on IPv6, and talking on Tor (and maybe listening, as it's possible to listen on tor even for some nodes that don't listen generally) as there are far fewer nodes on the other transports.
niko
Hero Member
*****
Offline Offline

Activity: 756
Merit: 501


There is more to Bitcoin than bitcoins.


View Profile
November 15, 2012, 03:28:48 PM
 #6

A node can also contribute better when it's crossing transports— e.g. talking to nodes on IPv6, and talking on Tor (and maybe listening, as it's possible to listen on tor even for some nodes that don't listen generally) as there are far fewer nodes on the other transports.


How to setup the client on IPv4 and Tor simultaneously?

They're there, in their room.
Your mining rig is on fire, yet you're very calm.
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
November 15, 2012, 04:31:18 PM
 #7

How to setup the client on IPv4 and Tor simultaneously?

Use the argument -tor=ip:port  to set the tor proxy and you'll only use tor to connect to hidden service nodes. See doc/Tor.txt included with the software for more information.
Mike Hearn
Legendary
*
expert
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 15, 2012, 06:47:24 PM
 #8

Alright. I agree that if a node is faster than normal, or doing some kind of cross-transport relaying, that is definitely a useful service even if it isn't accepting connections.

For the case where it's merely relaying at an average speed, it's adding latency and using sockets, which of course is unavoidable in a P2P network but it's also not adding any new sockets back to balance its cost. I'm not sure it makes any difference to effectively ignoring rule violations - as pointed out, nodes check everything themselves anyway. If you're just connecting to a node then it'll still hear bogus transactions from other nodes it did connect to.

If nodes decide to stop relaying transactions for selfish reasons, non-listening nodes don't really help as you have no way to reach them. The service they provide by bouncing transactions for free between listening nodes can be gained just by having the initial broadcaster make more outbound connections.
jgarzik
Legendary
*
qt
Offline Offline

Activity: 1596
Merit: 1091


View Profile
November 16, 2012, 02:01:43 AM
 #9

The service they provide by bouncing transactions for free between listening nodes can be gained just by having the initial broadcaster make more outbound connections.

...then logically, with most users running with standard defaults, there is benefit.  As stated.  Smiley


Jeff Garzik, Bloq CEO, former bitcoin core dev team; opinions are my own.
Visit bloq.com / metronome.io
Donations / tip jar: 1BrufViLKnSWtuWGkryPsKsxonV2NQ7Tcj
Mike Hearn
Legendary
*
expert
Offline Offline

Activity: 1526
Merit: 1129


View Profile
November 16, 2012, 05:30:14 PM
 #10

No, that wasn't my point.

If you have a path A -> B  -> C and B doesn't listen, then A could just connect directly to C (one socket used) and get the same results as if B connected to A and C (two sockets used).
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!