kiklo
Legendary
Offline
Activity: 1092
Merit: 1000
|
|
January 11, 2017, 06:55:43 AM |
|
I dont think you understood the basic working principles of the PoA that I proposed. Let me explain again in an oversimplified sentence. PoS is the first stage to shortlist miners, actual mining i.e signing blocks & corresponding coin generation happens in the subsequent PoW step only!
Hmm, OK, So you're wanting to use PoS as nothing more than a way to choose a group, and then let only that group fight it out to submit a PoW Block. That is different than everyone else hybrid coins. Seems to me, it will be easy for a rich guy to buy up enough coins to keep themselves on the shortlist of miners, and from their mine enough with PoW to stay on top. But who knows , reality and predictions don't always match. I will bet your chain difficulty numbers will be very odd. So what is your timetable for release, so we see what this puppy is like in reality.
|
|
|
|
|
dinofelis
|
|
January 11, 2017, 08:30:29 AM |
|
FYI: What I originally said, was the miners (even over 51%) can't submit blocks into the blockchain that breaks the rules set up by the Full Nodes, why you want to argue with that is a mystery. So you mean a 51% Sybil attack of the number of full nodes is enough to succeed, and all that "hash rate security" stuff is just made up ? There are about 6000 full nodes in the bitcoin network. If tomorrow, I install 15000 nodes with my modified rules, I take over the bitcoin network, because I now dictate the consensus, because my new rules are on a large majority of Full Nodes ? On the other hand, you think that if 90% of hash rate switches to a new protocol that is not supported by 5500 of the 6000 nodes, they cannot do a 51% attack ? It seems to me that you've totally misunderstood the importance of the relationship between mining and consensus. It seems that you have a confusion between "owners of ASICS" and "miners". Miners are those who *decide what block chain they accept to add their block to, and what block content, according to what rules, they construct*.Now, in order even to think to do so, they have to set up a full node, that picks of course the block chain to their likings (according to their rules, on which they decide to build), and that will, OF COURSE, accept a block as they make it (they will construct of course a block that is in agreement with their own rules). They also need a full node to maintain a list of waiting transactions they will include into their blocks they are going to build. These transactions have to agree to THEIR RULES. In other words, everything that a miner has to do, corresponds to the function of a full node in which he programmed the rules HE wants concerning the block chain he's accepting, the transactions he's accepting, and the block structure he's accepting. Without such a full node, the miner cannot even decide on what block chain to build, how to make his block and what transactions to put inside. In other words, the full node of the miner is the essence of his mining strategy. The miner (the miner node owner) also needs to perform a lot of hashes to find a block *according to his own rules*. Now, he can possess that hashing hardware himself, or he can BUY HASHING POWER from people owning "Mining rigs" and pay them with coins. These people owning mining rigs can of course refuse to sell him their hashing power, because they will most probably be paid in exactly that coin they're mining (although that is by no means necessary: someone selling hash power for ETH could just as well be paid in bitcoin for his submitted hash power, but that contains a lot of exchange risk). In as much as a miner node buys hashing power from several rig owners, that's called a mining pool. And now the point is: in as much as a large majority of mining pools (miner node owners) have agreed on a certain set of rules, and their miner rig partners agree with that and sell them their hashing power *that's all that is having influence on the consensus*. If these people agree amongst themselves to modify the rules programmed in the full nodes they use as their mining strategy, then, whether 1 million other, non-mining nodes exist and agree or don't agree, doesn't matter. These other, non-mining, full nodes will simply see that the block chain that is being build, isn't valid to their rules, and stop downloading blocks. And that's it. Users that want to see their transactions, should send them directly to the mining nodes, and should find the block chain on that full node, which will run according to the consensus protocol between the miner nodes. The *only* thing that maintains consensus on the rules is the miner strategy (build into the full nodes that determine this mining strategy) that can apply more than 51% of the hash rate. If 51% of the hash rate can be applied to a miner strategy built into a different full node, then that is now the new set of rules ; whether all other nodes agree or not. If they don't, they simply come to a grinding halt.
|
|
|
|
kiklo
Legendary
Offline
Activity: 1092
Merit: 1000
|
|
January 11, 2017, 09:13:15 AM |
|
@dinofelis What I originally said, was the miners (even over 51%) can't submit blocks into the blockchain that breaks the rules set up by the Full Nodes, why you want to argue with that is a mystery. You want to post a novel, feel free, it won't change the facts, like I said if you want me to believe the nonsense you are sprouting. Prove me wrong Generate a Block that has 15.5 BTC as a PoW reward instead of the 12.5 reward and get it accepted in the blockchain. You can't do it because even if the miners agreed, the non mining Full Nodes will Block it because it fails the standard.Until then your arguments on the subject are mute.
|
|
|
|
dinofelis
|
|
January 11, 2017, 09:20:48 AM |
|
@dinofelis What I originally said, was the miners (even over 51%) can't submit blocks into the blockchain that breaks the rules set up by the Full Nodes, why you want to argue with that is a mystery. You want to post a novel, feel free, it won't change the facts, like I said if you want me to believe the nonsense you are sprouting. Prove me wrong Generate a Block that has 15.5 BTC as a PoW reward instead of the 12.5 reward and get it accepted in the blockchain. You can't do it because even if the miners agreed, the non mining Full Nodes will Block it because it fails the standard.Until then your arguments on the subject are mute. I already replied to that. I can't do that because the miners do not agree. They will not build upon my block, and hence it will get orphaned, simply because they don't consider the chain with that block valid. Your "requested proof" is a counter factual straw man. You really are claiming that a 51% attack is not possible even if 80% of all miners and hash rate agree upon the attack. And you are claiming that, on the other hand, a 51% attack is easily done by a sybil attack of non-mining full nodes. It is sufficient to start up a large quantity of non-mining nodes implementing the new rules, and they take over the network. As such, you are essentially denying the whole security of any PoW crypto, including bitcoin. You have in other words, a fundamental misunderstanding of the nature of the consensus mechanism in PoW.
|
|
|
|
kiklo
Legendary
Offline
Activity: 1092
Merit: 1000
|
|
January 11, 2017, 09:51:50 AM |
|
@dinofelis What I originally said, was the miners (even over 51%) can't submit blocks into the blockchain that breaks the rules set up by the Full Nodes, why you want to argue with that is a mystery. You want to post a novel, feel free, it won't change the facts, like I said if you want me to believe the nonsense you are sprouting. Prove me wrong Generate a Block that has 15.5 BTC as a PoW reward instead of the 12.5 reward and get it accepted in the blockchain. You can't do it because even if the miners agreed, the non mining Full Nodes will Block it because it fails the standard.Until then your arguments on the subject are mute. I already replied to that. I can't do that because the miners do not agree. They will not build upon my block, and hence it will get orphaned, simply because they don't consider the chain with that block valid. Your "requested proof" is a counter factual straw man. You really are claiming that a 51% attack is not possible even if 80% of all miners and hash rate agree upon the attack. And you are claiming that, on the other hand, a 51% attack is easily done by a sybil attack of non-mining full nodes. It is sufficient to start up a large quantity of non-mining nodes implementing the new rules, and they take over the network. As such, you are essentially denying the whole security of any PoW crypto, including bitcoin. You have in other words, a fundamental misunderstanding of the nature of the consensus mechanism in PoW. I never claimed miners could not pull off a 51% attack, (That is your confusion, so don't try and tell me what I said, when you are having so much trouble understanding what I am saying to you.)The Chinese Mining pools can pull off a 51% attack as they have 67% of the hash. But they can only 51% attack , if they follow the rules of the Full Nodes software code, as long as they follow those standards they can, if they deviate like trying to mine blocks with a higher reward, all of those non-standard blocks will be denied. Before you write a book with imaginary scenarios, read the above again, What I just said is accurate.
|
|
|
|
dinofelis
|
|
January 11, 2017, 10:48:41 AM |
|
I never claimed miners could not pull off a 51% attack, (That is your confusion, so don't try and tell me what I said, when you are having so much trouble understanding what I am saying to you.) The Chinese Mining pools can pull off a 51% attack as they have 67% of the hash.
But they can only 51% attack , if they follow the rules of the Full Nodes software code, as long as they follow those standards they can, if they deviate like trying to mine blocks with a higher reward, all of those non-standard blocks will be denied.
It is correct that if you have more than 51% of hash power at your disposal, you can, entirely while playing according to the original rules, "rewrite" part of the already included blocks in a chain. So you are right there, that one can do a 51% attack while remaining within the original rules, but just orphaning a series of recent blocks, and do them over with more hashing power, so that this new chain becomes the dominant one, still according to the rules. So my argument wasn't proving the error in your reasoning (which is still there). Sorry about that. My simple argument is that the mining nodes (sooner or later you will have to admit that there are such things, because they are the essence of mining strategy) are the ones that make the rules, and that the non-mining nodes have nothing to say about it. *in practice* it is not a good idea for a mining consortium to go against the rules of the non-mining nodes, but that has nothing to do with their "safeguarding the block chain rules". This is rather because most non-mining nodes are also user nodes. The miners depend on the user's approval in order for them to maintain the market cap. Miners wouldn't like to chase away users, because then the market cap plummets, and hence their source of profit dries up. So miners are not going to change the rules against the wishes of the users, but only for reasons of market cap. However, if the miner nodes decide to change the rules, that is, change the way they are going to build the block chain, then there's nothing that non-mining nodes can do about it, apart from noticing, and not updating. Non-mining nodes are not being the "guards" of what so ever, apart from informing their owner that visibly, the miners decided to change the rules. You should really understand that, before thinking about the dynamics of consensus. Non-mining nodes have strictly no power, apart from the power to inform that its rules are not respected, something nobody cares about.
|
|
|
|
alkan
|
|
January 11, 2017, 07:38:43 PM |
|
Also, if I were a miner/minter, it would in any case be more profitable for me to fill blocks with *my own transactions* than with other people's transactions (because I generate them myself and there's no network delay and so on).
That's not necessarily true. I cannot see any disincentive to discard transactions that you already received before finding/creating the block. If the block size is fixed and place holders are mandatory to use (instead of real transactions), there would be no effect on network delay. Of course this is not a stable Nash equilibrium since you'd have 0 incentive and 0 disincentive. One should always avoid "hard numbers" such as block length, number of transactions, amount of transactions etc... because then your solution cannot scale (unless you fiddle manually with the parameters, which is similar to "manual price setting", instead of a market discovering the price).
Agreed. What about automatically adjusting the parameters by some predefined function similar to hash difficulty in Bitcoin? That would kill the "currency" aspect of the crypto. A currency must be able to be transmitted immediately. You're then turning the crypto into a hoarding stuff.
I don't think so. Transactions in Bitcoin already have a confirmation time of like an hour. So, it's not useful for fast transactions anyway. Adding a small minimum coin age (of some blocks or tens of minutes) to this wouldn't change anything. I'm not arguing that I have proposed a viable alternative for transactions fees. And I share your point that a blockchain must have the right incentives to protect against transaction spamming. However, I'm not convinced that only transactions fees and no other mechanism can achieve that goal. I'm currently working on a blockchain concept that directly addresses the issue of Sybil nodes by limiting the creation of new accounts (which will thus have an economic value). In such a setting, you could have a transaction limit per account instead of transaction fees.
|
|
|
|
freigeist
|
|
January 11, 2017, 11:04:08 PM |
|
I'm currently working on a blockchain concept that directly addresses the issue of Sybil nodes by limiting the creation of new accounts (which will thus have an economic value). In such a setting, you could have a transaction limit per account instead of transaction fees.
Hello. I'm not really into this tech stuff you talk in here but I have noticed that one coin is using this feature of mining limited number of accounts. Don't know if this is what you meant but please check here could be something that could help you https://bitcointalk.org/index.php?topic=1583719.0
|
|
|
|
dinofelis
|
|
January 12, 2017, 06:50:35 AM |
|
Also, if I were a miner/minter, it would in any case be more profitable for me to fill blocks with *my own transactions* than with other people's transactions (because I generate them myself and there's no network delay and so on).
That's not necessarily true. I cannot see any disincentive to discard transactions that you already received before finding/creating the block. If the block size is fixed and place holders are mandatory to use (instead of real transactions), there would be no effect on network delay. Of course this is not a stable Nash equilibrium since you'd have 0 incentive and 0 disincentive.This. You say it better than I do, but it is what I intended to say. The slightest bit of motivation in one way or another can make the outcome flip. For instance, there is not the slightest "punishment" for excluding users you might not like. Now, if miners decide to boycott a user, they pay a price (the fees that user wants to pay). If there's nothing to win, the smallest intend can be applied at no cost. BTW, block size limits are a bad idea in all cases in my opinion. Making big blocks more expensive in one way or another, is a good idea because they use resources, but the market should determine that price, and no "hard limit". Bitcoin is wrong on this one. One should always avoid "hard numbers" such as block length, number of transactions, amount of transactions etc... because then your solution cannot scale (unless you fiddle manually with the parameters, which is similar to "manual price setting", instead of a market discovering the price).
Agreed. What about automatically adjusting the parameters by some predefined function similar to hash difficulty in Bitcoin? Yes. But I think there is a perfect "parameter settter": the market. In fact, mining a bigger block HAS a price, because it takes some extra computing to do so, it takes extra network traffic, and hence, it makes a miner's chances to get a big block through somewhat lower. I think that Monero's fixed block size vs price cost is misguided in this respect. It is better than the stupid hard limit in bitcoin, but it still imposes a fixed price and doesn't let the market decide. That would kill the "currency" aspect of the crypto. A currency must be able to be transmitted immediately. You're then turning the crypto into a hoarding stuff.
I don't think so. Transactions in Bitcoin already have a confirmation time of like an hour. So, it's not useful for fast transactions anyway. Adding a small minimum coin age (of some blocks or tens of minutes) to this wouldn't change anything. Ah, ok. I thought you meant long times, like weeks or months. Agreed. I'm not arguing that I have proposed a viable alternative for transactions fees. And I share your point that a blockchain must have the right incentives to protect against transaction spamming. However, I'm not convinced that only transactions fees and no other mechanism can achieve that goal.
Well, I haven't studied that in detail, but I don't see how it can be anything much different than a fee. You have two aspects: 1) to avoid what we discussed in the beginning of this message, there should be a (small) incentive for the miner to include a transaction, or "boycotting a user" is too easy. 2) to avoid chain spamming, there should be a (small) cost to the person wanting to do a transaction. I find it quite logical that 2) compensates 1). And that's a fee. That fee should be free, in the sense that if there is an intention to boycott a specific user, then that user can "up" his fees to bribe at least one miner to accept his transactions, making the boycotters lose out. Of course, it becomes harder to boycott users if the system is anonymous, so maybe this is not really a concern. I'm currently working on a blockchain concept that directly addresses the issue of Sybil nodes by limiting the creation of new accounts (which will thus have an economic value). In such a setting, you could have a transaction limit per account instead of transaction fees.
I don't see how you can ever do that, without requiring real-world identities. Of course, you could make the creation of an account a PoW thing, so that one is limited by the cost of its creation. But me thinks that it is a bad idea to limit the number of accounts: that will kill all anonymity in the long run.
|
|
|
|
alkan
|
|
January 12, 2017, 05:33:41 PM |
|
BTW, block size limits are a bad idea in all cases in my opinion. Making big blocks more expensive in one way or another, is a good idea because they use resources, but the market should determine that price, and no "hard limit". Bitcoin is wrong on this one.
Is there any coin that already does this? Yes. But I think there is a perfect "parameter settter": the market. In fact, mining a bigger block HAS a price, because it takes some extra computing to do so, it takes extra network traffic, and hence, it makes a miner's chances to get a big block through somewhat lower.
I think that Monero's fixed block size vs price cost is misguided in this respect. It is better than the stupid hard limit in bitcoin, but it still imposes a fixed price and doesn't let the market decide.
I also believe in markets and it's an interesting idea to leverage the market for deciding about system parameters. I don't see how you can ever do that, without requiring real-world identities. Of course, you could make the creation of an account a PoW thing, so that one is limited by the cost of its creation.
Well, using PoW for account creation would be a possibility, though my proposal doesn't rely on PoW at all: https://bitcointalk.org/index.php?topic=1719396.msg17365846#msg17365846 (please disregard my first post in the thread). But me thinks that it is a bad idea to limit the number of accounts: that will kill all anonymity in the long run.
I don't think that using multiple accounts is a sufficient way to have anonymity, and prefer Zero Knowlegde (like in Zcash) over coin mixing/onion routing schemes as used in CoinJoin, Monero and the likes.
|
|
|
|
dinofelis
|
|
January 12, 2017, 08:47:28 PM |
|
BTW, block size limits are a bad idea in all cases in my opinion. Making big blocks more expensive in one way or another, is a good idea because they use resources, but the market should determine that price, and no "hard limit". Bitcoin is wrong on this one.
Is there any coin that already does this? Monero has such a thing, the block size reward penalty. http://monero.stackexchange.com/questions/1067/block-reward-penalties-and-dynamic-block-sizeI find it a bit clumsy, but at least it is there.
|
|
|
|
dinofelis
|
|
January 12, 2017, 08:54:15 PM |
|
I don't see how you can ever do that, without requiring real-world identities. Of course, you could make the creation of an account a PoW thing, so that one is limited by the cost of its creation.
Well, using PoW for account creation would be a possibility, though my proposal doesn't rely on PoW at all: https://bitcointalk.org/index.php?topic=1719396.msg17365846#msg17365846 (please disregard my first post in the thread). That looks funny. Your "child accounts" act in fact like a kind of second token, of which you need PoS to mint the first (base) token of the chain and also to "mint" child accounts (the second token), and there's an opposite PoS relationship in that you need some base tokens to "fill" the child account (second token). Aren't you afraid of a serious divergence of PoS of child accounts in the hands of a few ? I see your system as a kind of "double PoS" with feedback between the two, for two different tokens: base tokens (the "currency") and mint tokens (the "child accounts").
|
|
|
|
alkan
|
|
January 12, 2017, 09:53:34 PM Last edit: January 12, 2017, 10:06:53 PM by alkan |
|
That looks funny. Your "child accounts" act in fact like a kind of second token, of which you need PoS to mint the first (base) token of the chain and also to "mint" child accounts (the second token), and there's an opposite PoS relationship in that you need some base tokens to "fill" the child account (second token). Aren't you afraid of a serious divergence of PoS of child accounts in the hands of a few ? I see your system as a kind of "double PoS" with feedback between the two, for two different tokens: base tokens (the "currency") and mint tokens (the "child accounts").
I think you got the gist of it. As for the concentration of child accounts, I think there is an incentive to sell child accounts since they should have an economic value and your interest/reward does not depend on the number of your accounts you own (but on your total stake). Of course, a stakeholder might decide to keep all the child accounts for himself. However, this would only allow him to retain his relative minting power since the minting power of a single account is reduced as more and more accounts are built (and in use). So, if a stakeholder owns 5% of the minting power at the beginning, all he can do by not selling accounts is keeping his share of 5 %. To increase his power to the point of reaching the majority, he would not only need to buy a lot of new child accounts but it would also take him a long time since only a limited accounts are created. If the coin has been in existence for 5 years, even an attacker who can outbid all other users would need at least another 5 years to take control over the currency (and to achieve this, all stakeholders must be willing to sell their child accounts). The aim is that the coin gets invincible over time.
|
|
|
|
iamnotback
|
|
January 13, 2017, 04:48:55 AM Last edit: January 19, 2017, 09:41:59 PM by iamnotback |
|
Also due to stake grinding attacks, PoS can be PoW in disguise.
There are ways of protecting a PoS coin against stake grinding attacks, as described here: http://www.neucoin.org/en/whitepaper/download (pages 32-36). Do you also refute them as flawed? I am traveling so better replies will follow after the weekend. Quickly note that whitepaper points about that when the Byzantine agreement (1/3) threshold is exceeded, then stake grinding becomes plausible. This is because above the Byzantine threshold, there is nothing sustaining a reference point because Byzantine agreement is self-referential. Will elaborate later and on the other points. Edit: also I need to study that whitepaper more. I think it is referring to success of a 51% attack. But I need to analyze if much less stake could still enable grinding attacks that give a disportionate reward to the attacker. Note I was already aware of that whitepaper, but hadn't studied in depth.
|
|
|
|
David Rabahy
|
|
January 13, 2017, 04:01:40 PM |
|
I'm pretty sure folks are talking past each other. Let me see if I can help.
When a user comes along and connects to an available full node (how did they find it?) in order to transmit a transaction or check on the confirmations of one then it makes all the difference in the world which one they connect to. Connecting to my compliant full node will get them to "the" "right" blockchain. Connecting to a "bad guys" full node will get them a different view. Ah, perhaps this is where the confusion comes in. Users don't connect to mining systems per se. Although a mining system without a full node somewhere in the mix is a pretty weird idea.
It is the mining systems that build on top of previous blocks that determine the forward growth of "the" blockchain. I suppose errant/malicious systems can fork off and build another blockchain but the one with the greatest difficulty wins (given comparable reachability) as far as the users go. Full nodes that don't mine can ignore (let's not call it reject) anything they want but will just end up participating less and less.
I run an unmodified full node; it entertains me to do so. I don't turn on mining due to the noise of the fan mostly and concerns about the cost of electricity and system wear and tear (besides which my dumb CPU ain't likely to win the race to the next block ever against all those darn ASICs). Despite the lack of mining, I feel happy about my contribution to the Bitcoin world -- I configured my full node to allow 60 connections (8 outbound/52 inbound) and upload 100's of GBs every month.
If a block comes along that violates the rules then it will be ignored by my full node. It will also be ignored by all compliant full nodes. Eventually if/when another block comes along that is legit then it will be accepted. But make no mistake, ignoring a block does nothing per se. Yes, it won't be propagated but it doesn't need to be. The "bad guys" can forward it themselves without my help.
If a large enough fraction of the mining systems are configured to break the rules then they will overwhelm the mining systems trying to remain compliant. My full node won't agree with the errant ones and so it will follow along with the compliant ones. But following does nothing as such to help fight back the "bad guys".
Well now from the users' point of view the full nodes do matter. Depending on which one they happen to connect to makes all the difference. If they connect to more than one then they can compare and select from the "stronger" blockchain. I suppose a user could also check themselves if the blocks are compliant to one degree or another (darn good idea). That way (except for propagation) they don't need to trust the full nodes. Well, to the degree that the user doesn't check every last detail they do have to trust the full node(s).
|
|
|
|
dinofelis
|
|
January 13, 2017, 08:48:16 PM |
|
I'm pretty sure folks are talking past each other. Let me see if I can help.
When a user comes along and connects to an available full node (how did they find it?) in order to transmit a transaction or check on the confirmations of one then it makes all the difference in the world which one they connect to. Connecting to my compliant full node will get them to "the" "right" blockchain. Connecting to a "bad guys" full node will get them a different view. Ah, perhaps this is where the confusion comes in. Users don't connect to mining systems per se. Although a mining system without a full node somewhere in the mix is a pretty weird idea.
It is the mining systems that build on top of previous blocks that determine the forward growth of "the" blockchain. I suppose errant/malicious systems can fork off and build another blockchain but the one with the greatest difficulty wins (given comparable reachability) as far as the users go. Full nodes that don't mine can ignore (let's not call it reject) anything they want but will just end up participating less and less.
I run an unmodified full node; it entertains me to do so. I don't turn on mining due to the noise of the fan mostly and concerns about the cost of electricity and system wear and tear (besides which my dumb CPU ain't likely to win the race to the next block ever against all those darn ASICs). Despite the lack of mining, I feel happy about my contribution to the Bitcoin world -- I configured my full node to allow 60 connections (8 outbound/52 inbound) and upload 100's of GBs every month.
If a block comes along that violates the rules then it will be ignored by my full node. It will also be ignored by all compliant full nodes. Eventually if/when another block comes along that is legit then it will be accepted. But make no mistake, ignoring a block does nothing per se. Yes, it won't be propagated but it doesn't need to be. The "bad guys" can forward it themselves without my help.
If a large enough fraction of the mining systems are configured to break the rules then they will overwhelm the mining systems trying to remain compliant. My full node won't agree with the errant ones and so it will follow along with the compliant ones. But following does nothing as such to help fight back the "bad guys".
Well now from the users' point of view the full nodes do matter. Depending on which one they happen to connect to makes all the difference. If they connect to more than one then they can compare and select from the "stronger" blockchain. I suppose a user could also check themselves if the blocks are compliant to one degree or another (darn good idea). That way (except for propagation) they don't need to trust the full nodes. Well, to the degree that the user doesn't check every last detail they do have to trust the full node(s).
Thank you. You explained it extremely well. I put in bold what was the essence of what I was trying to say, but you put it much better in words. I agree that making the point that "non-mining full nodes" don't matter is somewhat abstract, because in most cases, there's a link between those full nodes and the users, as you correctly point out. But the very act of setting up a non-mining full node doesn't PROTECT in any way, and certainly doesn't coerce in any way, the "rules". It only INFORMS all people looking at that full node about the block chain being in agreement with 'the rules' or not, but it can't, as you very well put, do anything about it beyond *informing* people. Non-mining full nodes are important if someone would simply like to "sneak in a bad block" (for instance, one that doesn't even has enough PoW). Full nodes will see it. But I put myself in the somewhat abstract gedanken experiment where users and mining nodes on one hand, agreed upon another set of rules between themselves, and a "huge cloud of non mining nodes" on the other hand, wanting to maintain the "original rules" as "guardians of compliance", to illustrate the futility of the non-mining full nodes by themselves explicitly. If users agree with miners and their (few) full nodes on a new set of rules, then no matter how many non-mining full nodes scream that this is not a correct block chain, this doesn't matter. Users will then connect to the few full nodes that DO have the new rules (the miner nodes), miners will mine according to those rules, and that's it. The big crowd of full nodes that shouts that no such block is valid, simply come to a grinding halt, and never accept a block, and nobody cares. But as you point out, that's a very artificial situation. Most of the time, users set up their full nodes, and they do that to verify the block chain according to the rules that THEY want (the new ones, or the old ones, depending). And indeed, users are important, because they determine, after all, the market value of the coin. Miners will in fact mine according to the most profitable situation, which is strongly influenced by the market value set by the users. The ETH/ETC split was a brilliant example of exactly how that went.
|
|
|
|
kiklo
Legendary
Offline
Activity: 1092
Merit: 1000
|
|
January 14, 2017, 12:43:14 AM Last edit: January 14, 2017, 01:34:54 AM by kiklo |
|
If a block comes along that violates the rules then it will be ignored by my full node. It will also be ignored by all compliant full nodes. Eventually if/when another block comes along that is legit then it will be accepted. But make no mistake, ignoring a block does nothing per se. Yes, it won't be propagated but it doesn't need to be. The "bad guys" can forward it themselves without my help.
If a large enough fraction of the mining systems are configured to break the rules then they will overwhelm the mining systems trying to remain compliant. My full node won't agree with the errant ones and so it will follow along with the compliant ones. But following does nothing as such to help fight back the "bad guys".
Well now from the users' point of view the full nodes do matter. Depending on which one they happen to connect to makes all the difference. If they connect to more than one then they can compare and select from the "stronger" blockchain. I suppose a user could also check themselves if the blocks are compliant to one degree or another (darn good idea). That way (except for propagation) they don't need to trust the full nodes. Well, to the degree that the user doesn't check every last detail they do have to trust the full node(s).
Point of clarifications, The "bad guys" can forward it themselves without my help. Only by running a Full Node Themselves. If a large enough fraction of the mining systems are configured to break the rules then they will overwhelm the mining systems trying to remain compliant. My full node won't agree with the errant ones and so it will follow along with the compliant ones. But following does nothing as such to help fight back the "bad guys". This is where I have to disagree, with an otherwise well written post. Say I am a Business running my own Full Node Regardless of what the rest of the network does. Even if an evil majority overwhelm the majority of Nodes, my Honest Full Node will still refuse/ignore their blocks that don't match the standards on mine. Which means , my system will Refuse/Ignore their DoubleSpend attempts, meaning I will not be shipping product or services to them that they never really paid for. It will keep the bad guys from stealing from me with Fake coins. Now if the evil majority keeps control of BTC, and I can no longer trust the BTC network my choices become clear, immediately discontinue accepting any BTC for payment. Back to Cash & Credit only or find a Crypto that can be trusted. FYI: https://en.bitcoin.it/wiki/Full_nodeSummary Running a full node is the only way you can use Bitcoin in a trustless way. You will know for sure that all the rules of Bitcoin are being followed, for example that no bitcoins are 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 (e.g. difficulty) are followed. Full nodes are currently the most private way to use Bitcoin, with no nobody else learning which bitcoin addresses belong to you. Full nodes are the most secure way to use Bitcoin, they do not suffer from many attacks that affect lightweight wallets.Economic strength This is by far the most important reason for running a full node, though it is a little difficult to understand.
As explained previously, full nodes enforce the consensus rules no matter what. However, lightweight nodes do not do this. Lightweight nodes do whatever the majority of mining power says. Therefore, if most of the miners got together to increase their block reward, for example, lightweight nodes would blindly go along with it. If this ever happened, the network would split such that lightweight nodes and full nodes would end up on separate networks, using separate currencies. People using lightweight nodes would be unable to transact with people using full nodes. If all businesses and many users are using full nodes, then this network split is not a critical problem because users of lightweight clients will quickly notice that they can't send or receive bitcoins to/from most of the people who they usually do business with, and so they'll stop using Bitcoin until the evil miners are overcome, which is the appropriate response. However, if almost everyone on the network is using lightweight nodes in this situation, then everyone would continue being able to transact with each other, and so Bitcoin could very well end up "hijacked" by evil miners.In practice, miners are unlikely to attempt anything like the above scenario as long as full nodes are prevalent because the miners would lose a lot of money. But the incentives completely change if everyone uses lightweight nodes. In that case, miners definitely do have an incentive to change Bitcoin's rules in their favor. It is only reasonably secure to use a lightweight node because most of the Bitcoin economy uses full nodes.Therefore, it is critical for Bitcoin's survival that the great majority of the Bitcoin economy be backed by full nodes, not lightweight nodes. This is especially important for Bitcoin businesses, which have more economic weight. To contribute to Bitcoin's economic strength, you must actually use a full node for your real transactions (or use a lightweight node connected to a full node that you personally control). Just running a full node on a server somewhere does not contribute to Bitcoin's economic strength. More details https://www.reddit.com/r/BitcoinBeginners/comments/3eq3y7/full_node_question/ctk4lndPrivacy Having the blockchain stored on your hard drive is the most private way to have a wallet. All other lightweight solutions 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, SPV nodes based on BitcoinJ do not provide much privacy against nodes who connected directly to the wallet [1]. 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. Security Lightweight nodes are sometimes able to be temporarily tricked into accepting transactions or blocks that are not actually valid. This could cause serious financial damage, especially for websites that automatically process Bitcoin transactions. Full nodes provide the maximum security possible, and so they should be used by all businesses, and also by regular users whenever doing so is convenient.
|
|
|
|
dinofelis
|
|
January 14, 2017, 06:08:03 AM |
|
This is where I have to disagree, with an otherwise well written post. Say I am a Business running my own Full Node Regardless of what the rest of the network does. Even if an evil majority overwhelm the majority of Nodes, my Honest Full Node will still refuse/ignore their blocks that don't match the standards on mine. Which means , my system will Refuse/Ignore their DoubleSpend attempts, meaning I will not be shipping product or services to them that they never really paid for. It will keep the bad guys from stealing from me with Fake coins. Now if the evil majority keeps control of BTC, and I can no longer trust the BTC network my choices become clear, immediately discontinue accepting any BTC for payment. Back to Cash & Credit only or find a Crypto that can be trusted. We are also perfectly in agreement, but you are not just a "full node runner", but a "disgruntled user". And you perfectly illustrate what I wanted to say: you're running of a full node hasn't stopped "the bad guys" (that is to say, the miners who decided upon a change of rule and who have the large majority of mining power attached to THEIR full nodes). It has just INFORMED you that the block chain that is mainly being mined doesn't correspond to the rules you want. As such, you stop USING it, your node comes essentially to a grinding halt, and you not using it any more removes market cap from the coin. But you didn't stop anything. In my case, I'm running a full node at home. But it has an empty wallet. I am a bitcoin user only for buying some bitcoin to spend them on some goods, I don't weight much on the market cap. The day that the large majority consortium of miners decide upon a change of rules (and become "the bad guys") and implement those new rules in THEIR miner pool full nodes (in other words, the day that the "bad guys" decide on a hard fork), and I don't upgrade, because I am a "guardian of the immutability of the rules" with my empty full node, my full node will simply stop accepting blocks, *and that's it*. Even if I had 100 000 such full nodes running, they would also simply stop accepting the forked chain, and come to a halt. All users connected to those nodes would be informed that the blocks don't come any more. In as much as they'd agree with the "bad guys fork", they'd have to connect directly to the few of their mining nodes. And that's it. As explained previously, full nodes enforce the consensus rules no matter what. However, lightweight nodes do not do this. Lightweight nodes do whatever the majority of mining power says. Therefore, if most of the miners got together to increase their block reward, for example, lightweight nodes would blindly go along with it. If this ever happened, the network would split such that lightweight nodes and full nodes would end up on separate networks, using separate currencies. People using lightweight nodes would be unable to transact with people using full nodes. If all businesses and many users are using full nodes, then this network split is not a critical problem because users of lightweight clients will quickly notice that they can't send or receive bitcoins to/from most of the people who they usually do business with, and so they'll stop using Bitcoin until the evil miners are overcome
This is the error in the reasoning here, of course. If essentially all miners are the "evil ones" and they have an agreement with most of the users, then you can wait forever for these "miners to be overcome". In other words, if the miners decide upon a hard fork, and hence become "evil miners" according to the above, no matter how many full nodes are refusing this hard fork, it won't change anything. In practice, miners are unlikely to attempt anything like the above scenario as long as full nodes are prevalent because the miners would lose a lot of money. But the incentives completely change if everyone uses lightweight nodes. In that case, miners definitely do have an incentive to change Bitcoin's rules in their favor. It is only reasonably secure to use a lightweight node because most of the Bitcoin economy uses full nodes.
This is also wrong. It is not because *full nodes* wouldn't be in agreement, but because USERS wouldn't be in agreement. If users are in agreement with the hard fork, then the "disgruntled full nodes" don't matter. That's my point. The users will connect to the few full nodes that implement the hard fork and continue to use the coin ; the miners have agreed upon the hard fork too. And whether there are now 100 000 full nodes that stop accepting that chain, doesn't matter. The block chain is still mined by the miners, the users are still using it and maintaining the market cap, and the disgruntled "guardian nodes" simply stop working as they don't see a block chain that they accept as valid and which isn't produced. But, as I said, this is an artificial situation. In most cases, only users run full nodes. So in as much as users agree with the hard fork, they UPDATE their full nodes. And in as much as users do not agree with the hard fork, miners will not attempt to implement it as it will hurt market cap. So in practice, most full nodes will be in agreement with the rules, even if those rules are forked, or not.
|
|
|
|
hv_
Legendary
Offline
Activity: 2534
Merit: 1055
Clean Code and Scale
|
|
January 14, 2017, 06:48:00 AM |
|
To me it looks that simple:
PoW Most secure way, but expensive ( security = order is expensive, think of entropy ) But does not really scale. Use case is store of value.
PoS Less secure ( a 51% attacker can rewrite the entire blockchain, ...) and less expensive. Better scaling. Use case is transaction.
Best use of both is in combination by side chains (PoS) settle into the PoW chain.
|
Carpe diem - understand the White Paper and mine honest. Fix real world issues: Check out b-vote.com The simple way is the genius way - Satoshi's Rules: humana veris _
|
|
|
|