Kprawn (OP)
Legendary
Offline
Activity: 1904
Merit: 1074
|
|
August 06, 2014, 11:32:11 AM |
|
Is there any way a reward for people who run a FULL node, could be incorporated into the BTC protocol? Many people do not want to download 25Gb to enable them to run a local FULL node. They could fund this reward, through a fraction of the miners fees, towards people who are running a FULL node. In this way more people would be encouraged to do this, and it would secure the decentralization of the BTC currency. Most people today, run no node and use online wallet services to access the blockchain. {If this trend continue, decentralization would become less} Otherwise, some sort of preference could be given to users running FULL nodes, when it comes to transaction. {But it will become too complex then, to query if someone is running a FULL node, to determine if preference should be granted, and it would put addisional overhead on the protocol, which will decrease overall speed} Is this in any way feesable? or not a threat that needs urgent attention?
|
|
|
|
CIYAM
Legendary
Offline
Activity: 1890
Merit: 1086
Ian Knowles - CIYAM Lead Developer
|
|
August 06, 2014, 11:37:53 AM |
|
I would guess the biggest problem you'd face with such an idea is "just how do you determine that someone has a full node"?
This would not be a trivial thing to do as presumably it would require some sort of separate consensus algorithm (i.e. a "proof of storage" type idea).
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 06, 2014, 10:18:26 PM |
|
At a protocol level, no. Not in bitcoin. Even if you can think of a scheme that would make it possible, putting it in the protocol would completely change bitcoin and will never happen. Maybe someone could make an altcoin that implements it.
What could be possible (I don't know if it is, or how) would be a way to prove an address is associated with a full node. Then people could chose donate to one of those addresses with knowledge that the owner is running a full node.
Believe me, I wish it was possible. I run a full node, and I'd love to be paid for it. But I can't prove that I run a full node of course.
|
|
|
|
ForgottenPassword
|
|
August 06, 2014, 10:23:38 PM |
|
Perhaps nodes could have an optional donation address config option. You could connect to a node and ask for its donation address. People who want to donate to nodes would have a piece of software that monitors a node or number of nodes uptime and if it is satisfactory it will request their donation addresses and send a donation.
Wouldn't be too difficult to implement, though I'm not sure how many people would be willing to donate.
|
|
|
|
saddambitcoin
Legendary
Offline
Activity: 1610
Merit: 1004
|
|
August 06, 2014, 10:26:22 PM |
|
I think the good feeling you get when running a full node is enough. Supporting the network in order to allow bitcoin to happen in the first place!
|
|
|
|
Kprawn (OP)
Legendary
Offline
Activity: 1904
Merit: 1074
|
|
August 07, 2014, 09:43:57 AM |
|
Unfortunately the "good feeling" do not pay the bills. The donation is a great idea, it's just the "proof of storage" part that would get tricky and to get people to appreciate the effort, of other doing it, for them. But you could get a generated list on say "Blockchain" and people could be encouraged to participate, by having a monthly "Lottery" where a portion of the donations, goes towards a single pot, and you get people winning that "pot" each month. Just a thought.
|
|
|
|
amaclin
Legendary
Offline
Activity: 1260
Merit: 1019
|
|
August 07, 2014, 09:58:10 AM |
|
It is possible to slightly change the User-Agent string Right now the string is something like: "/Satoshi:0.9.1/" or "/Satoshi:0.8.5/" List of nodes is here https://getaddr.bitnodes.io/nodes/1407404879/?q=United%20StatesJust change your bitcoind and set this string to "/Satoshi:0.9.1-Donate-1MyBitcoinAddressForDonations/" (this can be even configurable option in .conf file) Everyone will see that the node is really exists and connected In fact, I do not think that fullnode owners should ask donations. The rest of network is obliged nothing to them.
|
|
|
|
abtus
Newbie
Offline
Activity: 5
Merit: 0
|
|
August 07, 2014, 01:34:15 PM |
|
Actually you can receive an indirect income by providing alternate services to Bitcoin network. Check https://bitcointalk.org/index.php?topic=726826.msg8214655#msg8214655. This week will be more information about how the node works and potential additional services. The basic Coinjoin service doesn't require a large bandwidth connection, but if you connect the node to a good internet connection you can provide the blockchain network service and get additional income with a better ROI than a GPU rig miner. You will be able to pay the basic bills (host, internet access, etc) and get extra bitcoins to invest and consolidate the Bitcoin network service.
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 07, 2014, 06:43:01 PM |
|
It is possible to slightly change the User-Agent string Right now the string is something like: "/Satoshi:0.9.1/" or "/Satoshi:0.8.5/" List of nodes is here https://getaddr.bitnodes.io/nodes/1407404879/?q=United%20StatesJust change your bitcoind and set this string to "/Satoshi:0.9.1-Donate-1MyBitcoinAddressForDonations/" (this can be even configurable option in .conf file) Everyone will see that the node is really exists and connected In fact, I do not think that fullnode owners should ask donations. The rest of network is obliged nothing to them. Nope. Anyone can do that, even someone not running a full node. You can't guarantee that they actually have the whole blockchain. Unfortunately the "good feeling" do not pay the bills. The donation is a great idea, it's just the "proof of storage" part that would get tricky and to get people to appreciate the effort, of other doing it, for them. But you could get a generated list on say "Blockchain" and people could be encouraged to participate, by having a monthly "Lottery" where a portion of the donations, goes towards a single pot, and you get people winning that "pot" each month. Just a thought. Still not proof. What the OP seems to want is a way to prove, in a way that doesn't require trusting a third party, that an address is associated with a full node. (Note op never said address explicitly, but I don't know where else you'd even start) Perhaps nodes could have an optional donation address config option. You could connect to a node and ask for its donation address. People who want to donate to nodes would have a piece of software that monitors a node or number of nodes uptime and if it is satisfactory it will request their donation addresses and send a donation.
Wouldn't be too difficult to implement, though I'm not sure how many people would be willing to donate.
Anyone could pretend to be a full node, but actually just be relaying messages from an actual full node, man-in-the-middle style. Actually you can receive an indirect income by providing alternate services to Bitcoin network. Check https://bitcointalk.org/index.php?topic=726826.msg8214655#msg8214655. This week will be more information about how the node works and potential additional services. The basic Coinjoin service doesn't require a large bandwidth connection, but if you connect the node to a good internet connection you can provide the blockchain network service and get additional income with a better ROI than a GPU rig miner. You will be able to pay the basic bills (host, internet access, etc) and get extra bitcoins to invest and consolidate the Bitcoin network service. While I like the idea, this doesn't reward someone just for being a full node. They have to do something additional.
|
|
|
|
amaclin
Legendary
Offline
Activity: 1260
Merit: 1019
|
|
August 07, 2014, 06:59:05 PM |
|
Nope. Anyone can do that, even someone not running a full node. You can't guarantee that they actually have the whole blockchain.
OK, so fullnode == miner node (solo or pool) Miners do have their fees. What else can the rest network do for them? Only increasing fees. Nothing more. this doesn't reward someone just for being a full node. no one will pay another person just for wasting energy
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 07, 2014, 07:14:43 PM |
|
Nope. Anyone can do that, even someone not running a full node. You can't guarantee that they actually have the whole blockchain.
OK, so fullnode == miner node (solo or pool) Miners do have their fees. What else can the rest network do for them? Only increasing fees. Nothing more. You can run a full node without mining. Miners: - Have the whole block chain. (miners in a pool might not, but the operator certainly does) - Act as transaction validating servers (if you read the whitepaper, that's how it's described), thus supporting the network. - The bitcoin protocol is designed to identify and reward them - their address is in the coinbase transaction of each block, therefore - Are paid for contributing their resources (electricity, hardware costs, to a lesser extent hard drive space) to the network. Full nodes: - Have the whole block chain - Act as messengers, thus supporting the network. - The bitcoin protocol was created assuming everybody would be a full node, so it is not possible on a protocol level to identify and reward them, therefore - Are all volunteers, contributing their resources (bandwidth, hard drive space, to a lesser extent electricity) to the network for absolutely nothing. Note that a full node can mine, and a mining pool operator or solo miner can run a full node. But it is definitely possible to be one but not the other.
|
|
|
|
amaclin
Legendary
Offline
Activity: 1260
Merit: 1019
|
|
August 07, 2014, 07:20:23 PM |
|
Lets imagine that I have a profit running full node, OK?
My next thing will be: setup 100 nodes and increase my profits 100 times What next? setup 1000 nodes... Etc... Etc
This is economically impossible
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 07, 2014, 07:27:44 PM |
|
Lets imagine that I have a profit running full node, OK?
My next thing will be: setup 100 nodes and increase my profits 100 times What next? setup 1000 nodes... Etc... Etc
This is economically impossible
Well, if you're setting up 1000 full nodes then you're doing a lot to help the network, so I'd say you'd deserve a good chunk of donations (we're not trying to force anyone to donate, just allow anyone to prove that a full node is associated with a specific address). Remember that 1000 full nodes requires (currently) 20 TB of hard drive space, plus probably several terabit per second of bandwidth, maybe even a petabit, plus 1000 rounds of checking each new block and each transaction. If the system that proves you're running a full node allows you to claim the same node several times, it's not a good proof system. That's exactly what someone trying to make such a system would have to solve (and why such a system hasn't been made yet).
|
|
|
|
amaclin
Legendary
Offline
Activity: 1260
Merit: 1019
|
|
August 07, 2014, 07:30:01 PM |
|
Well, if you're setting up 1000 full nodes... No. I will invent asic for it. But you will see 1000 nodes. There is "proof-of-work" But there is no "proof-of-fullnode" in bitcoin protocol
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 07, 2014, 07:34:52 PM |
|
Well, if you're setting up 1000 full nodes... No. I will invent asic for it. But you will see 1000 nodes ASICs can't be full nodes. ASICs are really good at performing one operation quickly. Put in the need to store data, and ASICs are out of the question. BUT - Go ahead, by all means try to make a full node ASIC. You'll be doing a lot to support the network. And if what you're saying is an ASIC to spoof the proof of full node system -- well if it's spoofable in that way it won't be a good system, and nobody will trust it. EDIT for your edit: There is "proof-of-work" But there is no "proof-of-fullnode" in bitcoin protocol
I am well aware of that. I am not advocating adding proof-of-fullnode to the protocol. I'm advocating creating proof-of-fullnode as a separate thing, so that anyone can validate a one-to-one mapping of address to full node. Then anyone would have the option of donating to support the network. Most people won't, but it will be possible to do so with confidence. No, that's not easy. No, I don't know how to do it. No, I don't know if it's possible. But it would be nice.
|
|
|
|
Weed Stuff
Newbie
Offline
Activity: 12
Merit: 0
|
|
August 07, 2014, 07:36:09 PM |
|
I would guess the biggest problem you'd face with such an idea is "just how do you determine that someone has a full node"?
This would not be a trivial thing to do as presumably it would require some sort of separate consensus algorithm (i.e. a "proof of storage" type idea).
i think... thats not a big problem as we now thats easy to implement on it .
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 07, 2014, 07:43:37 PM |
|
I would guess the biggest problem you'd face with such an idea is "just how do you determine that someone has a full node"?
This would not be a trivial thing to do as presumably it would require some sort of separate consensus algorithm (i.e. a "proof of storage" type idea).
i think... thats not a big problem as we now thats easy to implement on it . How would you implement it?
|
|
|
|
amaclin
Legendary
Offline
Activity: 1260
Merit: 1019
|
|
August 07, 2014, 07:43:47 PM |
|
ASICs can't be full nodes.
http://en.wikipedia.org/wiki/Application-specific_integrated_circuitThis means that this device will be very cheap (to increase my profits) and perform only one simple task - connects to a network and simulates fullnode. NOTHING MORE. BUT - Go ahead, by all means try to make a full node ASIC. You'll be doing a lot to support the network. No. It will be "checking transactions and broadcasting them to another clients" by 1 fullnode (may be). But my earnings will be 1000x And if what you're saying is an ASIC to spoof the proof of full node system -- well if it's spoofable in that way it won't be a good system, and nobody will trust it. How will you check whether I have 1000 fullnodes or one "fake device" which is only able to resend transactions to peers?
|
|
|
|
gmaxwell
Moderator
Legendary
Offline
Activity: 4270
Merit: 8805
|
|
August 07, 2014, 07:53:14 PM |
|
Well, if you're setting up 1000 full nodes then you're doing a lot to help the network, so I'd say you'd deserve a good chunk of donations (we're not trying to force anyone to donate, just allow anyone to prove that a full node is associated with a specific address).
1000 nodes run by one party is very harmful to the network compared to just running one system with more capacity, consolidating node control like that reduces the diversity of voices available to other hosts. Done maliciously it would be called a sybil, done innocently its just a waste.
|
|
|
|
CJYP
Member
Offline
Activity: 112
Merit: 10
|
|
August 07, 2014, 08:01:34 PM |
|
ASICs can't be full nodes.
http://en.wikipedia.org/wiki/Application-specific_integrated_circuitThis means that this device will be very cheap (to increase my profits) and perform only one simple task - connects to a network and simulates fullnode. NOTHING MORE. BUT - Go ahead, by all means try to make a full node ASIC. You'll be doing a lot to support the network. No. It will be "checking transactions and broadcasting them to another clients" by 1 fullnode (may be). But my earnings will be 1000x And if what you're saying is an ASIC to spoof the proof of full node system -- well if it's spoofable in that way it won't be a good system, and nobody will trust it. How will you check whether I have 1000 fullnodes or one "fake device" which is only able to resend transactions to peers? I think we're on the same page. What I've been trying to say is, I do not know how to solve these problems. Neither does anyone else, and they might not even be solvable. This is why no proof-of-fullnode system exists. A good proof of fullnode system would have to allow you to prove the following things: - You have a full copy of the blockchain (if you can't prove this, you can do what you suggested and just relay transactions) - You are accepting incoming bitcoin messages (if you can't prove this, you might be putting a strain on the network because you're draining the resources of full nodes but not providing a service to non-fullnodes) - You are using that copy of the blockchain to validate any transaction and block you receive, and send it on to anyone who asks for it (if you can't prove this, you can have a copy of the blockchain and do nothing with it - not contributing bandwidth) - You can only associate ONE address with each time you satisfy all these conditions (the same way a miner can only associate ONE address with each coinbase transaction) (if you can't do this, you're susceptible to exactly what you described - multiplying your profits arbitrarily by pretending you're running more nodes when you're actually just running one)
|
|
|
|
|