Author

Topic: Compile and run a "rude" full node - tips wanted! (Read 131 times)

full member
Activity: 173
Merit: 120
How long does it take to download all blocks?
I haven't done this myself so but it will greatly depend on your connection speed. I think the entire block chain is approaching 200 GBs according to:
https://bitcoin.org/en/full-node#initial-block-downloadibd

Initial Block Download(IBD)
Initial block download refers to the process where nodes synchronize themselves to the network by downloading blocks that are new to them. This will happen when a node is far behind the tip of the best block chain. In the process of IBD, a node does not accept incoming transactions nor request mempool transactions.

If you are trying to set up a new node following the instructions below, you will go through the IBD process at the first run, and it may take a considerable amount of time since a new node has to download the entire block chain (which is roughly 195 gigabytes now).
copper member
Activity: 16
Merit: 0
How long does it take to download all blocks?
copper member
Activity: 193
Merit: 235
Click "+Merit" top-right corner
Looking at the source code for Bitcoin core, my first changes will be to modify IsStandard() and IsStandardTx() in

https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp

to always return "True", i.e. I want to relay all kinds of ugly transactions to the network, and not have any of them deleted from my mempool.
It's easier to do this by changing fRequireStandard for CMainParams in chainparams.cpp then starting Bitcoin Core with -acceptnonstdtxn.

What else can we think of?

Hm, fees. I don't my node to say no to zero satoshi transaction fees. What do I change here (and/or elsewhere)?
Start Bitcoin Core with -incrementalrelayfee=0 -minrelaytxfee=0 -blockmintxfee=0 -dustrelayfee=0. You'll probably want to also increase -maxmempool, -limitancestorcount, -limitancestorsize, -limitdescendantcount, and -limitdescendantsize

What more... the maximum number of different sorts connections needs to be addressed, here:

https://github.com/bitcoin/bitcoin/blob/master/src/net.h

I'm thinking that several numbers must be changed here, especially the two values that end with "=8" (I can't write the names of the functions out, Cloudflare - interestingly - blocks me when I try to write them) should be changed to "=500" or so.
You might not want to increase the maximum number of connections. You'll probably run out of file descriptors.

Great! Several solid leads.

Just a comment on the "=500" changes. I already tested and ran a compilation with only those two values changed, and it downloaded the blockchain fast as eff Smiley And my node didn't get IP banned or blacklisted, at least not for the 12 hours or so I left it on. That's when "rude" struck me as a good name for the project.

Alright then, what else can we play with; stuff not already mentioned above?
staff
Activity: 3374
Merit: 6530
Just writing some code
Looking at the source code for Bitcoin core, my first changes will be to modify IsStandard() and IsStandardTx() in

https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp

to always return "True", i.e. I want to relay all kinds of ugly transactions to the network, and not have any of them deleted from my mempool.
It's easier to do this by changing fRequireStandard for CMainParams in chainparams.cpp then starting Bitcoin Core with -acceptnonstdtxn.

What else can we think of?

Hm, fees. I don't my node to say no to zero satoshi transaction fees. What do I change here (and/or elsewhere)?
Start Bitcoin Core with -incrementalrelayfee=0 -minrelaytxfee=0 -blockmintxfee=0 -dustrelayfee=0. You'll probably want to also increase -maxmempool, -limitancestorcount, -limitancestorsize, -limitdescendantcount, and -limitdescendantsize

What more... the maximum number of different sorts connections needs to be addressed, here:

https://github.com/bitcoin/bitcoin/blob/master/src/net.h

I'm thinking that several numbers must be changed here, especially the two values that end with "=8" (I can't write the names of the functions out, Cloudflare - interestingly - blocks me when I try to write them) should be changed to "=500" or so.
You might not want to increase the maximum number of connections. You'll probably run out of file descriptors.
copper member
Activity: 193
Merit: 235
Click "+Merit" top-right corner
Addition:

MAX_OUTBOUND_FULL_RELAY_CONNECTIONS and MAX_ADDNODE_CONNECTIONS - found in net.h -

are the two variables I couldn't name in the original post (but seems to be OK as a comment - strange, but let's move on).

Another edit: By "rude" I mean a node with the most relaxed policies you can think of, maybe a bit annoying to other nodes (and probably not cool if everybody does it [but don't see that happening]), but I have no ill intentions - I'm NOT trying to disrupt the P2P network or try and push dodgy transactions on to the blockchain. An experiment, no more, no less.
copper member
Activity: 193
Merit: 235
Click "+Merit" top-right corner
I want to run a "rude" Bitcoin full node. As an experiment. Will build from source and run on a decent machine with a backbone fiber connection.

(For clarity, this has nothing to do with just pimping the config-file.)

Looking at the source code for Bitcoin core, my first changes will be to modify IsStandard() and IsStandardTx() in

https://github.com/bitcoin/bitcoin/blob/master/src/policy/policy.cpp

to always return "True", i.e. I want to relay all kinds of ugly transactions to the network, and not have any of them deleted from my mempool.

What else can we think of?

Hm, fees. I don't my node to say no to zero satoshi transaction fees. What do I change here (and/or elsewhere)?

https://github.com/bitcoin/bitcoin/blob/master/src/policy/fees.cpp

What more... the maximum number of different sorts connections needs to be addressed, here:

https://github.com/bitcoin/bitcoin/blob/master/src/net.h

I'm thinking that several numbers must be changed here, especially the two values that end with "=8" (I can't write the names of the functions out, Cloudflare - interestingly - blocks me when I try to write them) should be changed to "=500" or so.

So far and in conclusion, I have: Whack "IsStandard", allow zero satoshi tx fees, and increase the number of allowed simultaneous connections to big numbers.

Your turn! Hit me with suggestions what a "rude" node should do (and please point me to the right places in the source code).
Jump to: