btc1 / bitcoin

btc1 project bitcoin implementation
MIT License
329 stars 55 forks source link

Conflict of interest setting discount for SegWit #92

Closed btcdiscounted closed 7 years ago

btcdiscounted commented 7 years ago

Given that SegWit seems to be going into Bitcoin, I would like to know how the conflict of interest in setting the discount for witness data is going to be handled. It seems that the only real way to solve it would be to have government regulators decide the discount, which would be against Bitcoin's ethos.

The discount alters the type of transactions miners are economically incentivized to include in the next block. By changing the discount one can effectively exercise economic policy over the Bitcoin network. If that is not enough, it seems the developers are the ones in charge at the moment of deciding the amount of the discount, but these same developers work for companies that benefit from having a certain discount. For example, @jgarzik , leader of the implementation most miners run, has a side chain company that benefits if witness heavy transactions are cheaper. This is not a personal attack on @jgarzik , but even if one believes he is perfectly honest in his intentions, the problem remains that the conflict of interests should not exist. The same applies to other developers, for example from Blockstream, which also benefit if witness heavy transactions are cheaper.

And even if someone believes that Bitcoin can get away with having such conflict of interest, apart from having dubious morals, there is the problem that having the discount opens a door for regulators to start gaining power in Bitcoin. It's very hard to justify to the population (mainly because they have a point) that some individuals working for some private companies are going to decide parameters that have a strong influence on transactions prices, specially when those private companies have an interest in a certain direction. It's very easy to make the case then that Bitcoin needs regulatory oversight. Once regulators are making economic policy by forcing miners to run a tweaked parameter, it's very easy to sell the need to increase the control.

It would also be hard to sell to new users why they should change from a currency where economic policy is made by policy makers, to another currency where economic policy is made by private companies.

The origin of the problem is the discount is a point of centralization and goes against Bitcoin's ethos. The discount is an economic parameter, as it affects prices. It is not purely an engineering parameter, like network latencies for example, but is mainly an economic parameter. By allowing developers to centrally set economic parameters you are creating a conflict of interest and opening the door for regulatory intervention in Bitcoin.

I understand some people will say "just run another client with a different discount", but that is a very weak excuse, as not accepting blocks with the consensus discount would mean forking away. Even if the answer is to say tthe majority has decided the to run with the discount, that answer is equivalent to saying: "vote a different president to get a different Federal Reserve chairman". This situation is something Bitcoin wanted to avoid, not recreate.

The obvious solution would be to make the weight neutral again, and work to remove other centralized economic parameters in bitcoin and replace them with an algorithm that does not require developers or regulators intervention.

betawaffle commented 7 years ago

The irony of this is that using the same logic, segwit would never activate. Segwit never had consensus, and was not going to get consensus without compromising with the people that they shoved out of the way when they declared they had consensus.

If segwit is so disliked, why compromise with s2x?

JaredR26 commented 7 years ago

If segwit is so disliked, why compromise with s2x?

Because I don't want two Bitcoins with 42 million coins between them and two communities that hate eachother even more than they already do today.

Many people on the big block community do not want a compromise, and are very angry over it.

The hardfork in November has enough community support to be viable (~40% of miners at least initially, ~25% of the community at least, and as much as 50% of companies [weighted]). Does it have enough to be a majority in one or more of those ways? I can't say, not enough data. Will the legacy chain be viable? If the signatories stick together, probably not without a hardfork, but if some miners defect, it probably will be viable.

And there's the problem. Two viable chains competing. Both with legitimate claims to being Bitcoin. That's what I'm trying to avoid, and supposedly that's been what everyone has been trying to avoid for 2 years. Unfortunately many of the people who were trying to avoid "forks without consensus" (i.e. core in December 2015, and /r/bitcoin moderation) are now adamantly opposed to the fork that has consensus. They're now going to split Bitcoin just like they said they were trying to stop. It hasn't been about preventing a split this whole time after all.

betawaffle commented 7 years ago

... are now adamantly opposed to the fork that has consensus.

Consensus among miners is no more consensus than the "lack of consensus" you claim segwit had.

JaredR26 commented 7 years ago

@Pheromon

fee discount for witness is not a consensus rule

FYI, this is not true. I'm late to this thread so I don't know what has been covered and not. The fee discount is a consensus rule because it is used(and essential) for the calculation of the blocksize/blockweight within the maximum. A miner ignoring it would be at risk of producing invalid blocks if their calculation could produce a larger blockweight, and would be leaving fees on the table if they only produced lower weight blocks.

@mjamin

In other words you want to block SegWit deployment in order to use it as a bargaining tool to get what you want,

Segwit was used originally to block and derail all blocksize increase proposals. It has been very effective at that. It has been effective at achieving consensus in forums that ban people for not agreeing. Less effective at achieving consensus in a true consensus system like Bitcoin.

@btcdiscounted

The reality is the discount is supposed to translate to the transaction price the cost of the utxo vs the cost of the witness data. That is its economic role in the model.

There's more to it than that. As I stated in my email linked early on here, the segwit discount actually targets the wrong thing - Some simple math in the example cited on the witness discount FAQ here will show that: https://segwit.org/what-is-behind-the-segwit-discount-8515a8d3bca9

In the example given, segwit does not set things up so that the wallets favor closing UTXO's instead of creating them. All it does is make them less bad. The entire purpose of the segwit discount was to give a blocksize increase via soft fork, and some people may have wanted it to favor signature-heavy transactions.

I don't personally see that as a huge problem or bad thing, it just isn't ideal. Ideal is a witness adjustment that explicitly favors UTXO closing over UTXO opening. That requires a hardfork to fix, and would have required a hardfork to get it right in the first place (Jeff and many others, I believe, were pushing for segwit to be a hardfork around the time "consensus" was reached on the email list)

@betawaffle

Anyone else has had no saying and the only option if they disagreed is to leave Bitcoin. That is the reality, saying anything else is lying.

If you believe that, then Bitcoin has already failed at its goals. I don't, but if it's true, Bitcoin was a failure.

Err, dude, you need to re-read what happened between July 2015 and January 31st, 2016. That is exactly what happened.

A full node is the only way you can guarantee you're actually receiving Bitcoin that conforms to rules you agree with.

Full nodes are a useless misnomer. There's several different ways nodes can be run - wallet nodes for holding balances, sybil nodes for making a political statement, transacting nodes for frequent use of Bitcoin, and mining nodes generating blocks. Of those, sybil nodes serve the least use for the network. Most UASF nodes appear to be sybil and wallet nodes.

If you don't run a full node, you're doing little more than trusting the sender.

This isn't true. SPV wallets provide substantial security and have numerous advantages over nearly all legacy payment systems.

Without a full node, Bitcoin isn't trustless.

Running a full node provides a level of security and trustlessness that 99% of the world's population absolutely does not need. This logic is literally what is preventing Bitcoin from scaling - Using your logic, Bitcoin will never be able to serve even 0.01% of the world's population or worldwide transaction volume. Congrats on making a coin for the wealthiest 0.01% of the world, but at least its trustless enough for you!

What should have happened is that an algorithm based on crypto and economic incentives should have governed the trade off between the utxo cost and the witness cost.

That is exactly what they did. What makes you think otherwise?

As I stated above, both of you are wrong here. The witness discount does not target UTXO's, the witness discount is about scaling without a hardfork. The reason the hardfork was so strongly opposed was about precedent, not because hardforks can't be good.

The point of the change is to correct the incentives to make running nodes less costly.

Segwit literally does not do this. You've been mislead, go do the math if you don't believe me. It makes running nodes more costly by increasing scale, and it increases bandwidth consumption on the whole network(the biggest cost!) by making signature-byte-heavy transactions less expensive than their bytes would indicate.

Bigger blocks force users out of the ability to run full nodes

I have literally never gotten a coherent response to this, so I'll ask it here in the hopes that you can answer this...

Why should running a node cost a cup of coffee when transacting on Bitcoin costs rent money?

Both are necessary costs to use bitcoin, but node costs can be spread out across more people with SPV nodes, providing the right level of trustlessness and security for each person and usecase and allowing more than the richest 0.01% of the world to transact.

run full nodes, which is the only thing protecting them from outside control.

This is not true. There are many many layers of Bitcoin security. Full nodes protect against a very limited set of miner collusion attack vectors, but nearly all of those attack vectors are already mitigated by Bitcoin's design and Bitcoin's ecosystem in other much more important ways.

Running a node that doesn't transact or mine just sybiling. It doesn't increase the security of the network, and it only increases your own security in your head when you don't consider the other layers of protection that Bitcoin has against the things you fear.

JaredR26 commented 7 years ago

It's a sliding scale, the larger the blocks, the more people won't be able to afford running a node.

This is false, studies have shown that as transaction volume increased, the number of nodes increased. Moreover, the number of transacting nodes can only increase with increased transaction volume. Sybil nodes are nearly useless.

Consensus among miners is no more consensus than the "lack of consensus" you claim segwit had.

I provided like 9 different ways where segwit lacked consensus. You responded to one, the most important one, where segwit2x DOES have consensus. Is that the best you can do? Come on, respond to facts with facts. Despite the several things I cited showing that segwit lacked consensus to activate by any metric picked, you haven't provided anything to back your "lack of consensus" claim regarding segwit2x.

Not to mention that my point wasn't even about miners having the final say on consensus. My point was that opposing segwit2x is going to give us two viable competing forks, supporting it is the only way to keep Bitcoin whole.

Moreover, miners have a lot more power than you or most anyone in the /r/bitcoin censored forum are willing to admit. Without sufficient miners, the legacy chain will halt completely. With 8% of the network hashrate, the first difficulty adjustment will be 6 months out if and only if none of that 8% defect for the entire 6 months.

Note, I'm not stating that the reverse isn't true either - Miners do not have absolute power, no matter what /r/btc people say. Miners splitting from the market are punished severely and have to take massive risks to attempt to force behavioral changes without near unanimity. Bitcoin only exists with some nontrivial portion of each group coming together - users, markets/merchants, miners, developers, and even nodes. Of those, miners (by design) have the strongest control when united but are nearly powerless individually. Developers on the other hand have substantial control individually (total number is low and code isn't generally reviewed by a substantial number of people on each side of a disagreement), but don't gain any more control by uniting (more developers can always step in). Nodes play a substantial role in protecting Bitcoin from DDOS attacks and sybil control, and providing a level of routing anonymity, but they have very little say in consensus rules because users, markets/merchants, and miners are all also nodes.

There's a lot of confusion in the community about how the different groups balance eachother and come together. Intentionally, for political reasons, as each group tries to push their agenda. I don't fault them for doing that, it is natural, but people need to be honest about the way the Bitcoin ecosystem comes together.

betawaffle commented 7 years ago

Running a node that doesn't transact or mine.

Who is suggesting that? I transact with my node. A node that isn't doing those isn't useful, and only costs resources.

Why should running a node cost a cup of coffee when transacting on Bitcoin costs rent money?

I don't quite understand this question.

... with SPV nodes, providing the right level of trustlessness and security for each person and usecase ...

The "right level" is subjective and clearly we disagree on where to draw that line. From my perspective, you want me to give up one of the "layers" of protection by making it impractical for me to run a fully validating node. Just because you don't think more than SPV is necessary doesn't mean all of us should be forced to go that route.

betawaffle commented 7 years ago

This is false, studies have shown that as transaction volume increased, the number of nodes increased.

The number of nodes doesn't matter (you even agree about that). But I personally couldn't run a node if it used all my bandwidth or storage space.

betawaffle commented 7 years ago

... supporting it is the only way to keep Bitcoin whole.

I'm fine with a split Bitcoin if the alternative is a Bitcoin without what I value in Bitcoin.

betawaffle commented 7 years ago

The problem is, segwit didn't have "consensus" among miners (obviously, or it would be active), and larger blocks don't have "consensus" among users. You can't disprove that any more than I can prove segwit has user consensus. We are both choosing to interpret either different data, or the same data differently.

None of the three options is going to get all the users.

JaredR26 commented 7 years ago

Who is suggesting that? I transact with my node. A node that isn't doing those isn't useful, and only costs resources.

There's whole threads of people on /r/bitcoin setting up raspberry pi's with no intention of ever transacting with them. rPI bitcoin nodes are literally only usable by the proportion of the population that can use the linux command line, which is a teeny teeny minority of the world. And they aren't the only ones setting up these sybil-only nodes. Since people have been convinced that node version/signaling counts for something, there's a motivation for sybiling for political reasons. BU and classic were guilty of it too (though would have actually needed the DDOS protections that provides if they were to have actually activated any forks).

I don't quite understand this question.

Ok, let me rephrase it (I would really, really like a response to this, seriously... I have yet to get a coherent counter to its logic): Looking at what you said a moment later

But I personally couldn't run a node if it used all my bandwidth or storage space.

Great, and you aren't alone in saying/thinking that. The problem between what you're saying here and what I said about coffee/rent costs is the scale of the problem. The world is huge [citation needed] and has many many people [citation needed]. 426 Billion transactions worldwide in 2015. If you actually want Bitcoin to serve more than a few people, it needs to fit those transactions somewhere. I'll handle lightning in a moment* because I know that's where many people go mentally right now, so bear with me or scroll down. 426 Billion transactions globally, which itself is increasing by 10% per year, cannot be fit anywhere except a datacenter** as it just consumes too much bandwidth. But if you can't fit the transactions, many people and use-cases must be cut off from blockchain space. As I'm sure you know, that cutoff is fees.

So if you keep blocksizes small to have low node operational costs, either fees must rise to cut off use-cases, or Bitcoin simply can't grow. We're tiny right now, 0.02% of the world's transaction volume and probably used by an even lower percentage of the population than that. If it doesn't grow, Bitcoin isn't really providing freedom and trustlessness for people who want it, is it? So it must grow. But if it grows, fees must rise because we've already established blocksizes won't grow.

There's absolutely no limit to how high fees will rise. If you take the biggest 0.02% of the world's transactions, you're looking at multi-million dollar transactions exclusively. $1000 fee for a multi-million dollar transaction? No problemo. Without increasing blocksizes, a lot, fees absolutely can rise to that level and beyond. So now your node costs the equivalent of $5 a month to run, but each transaction costs upwards of $1000? This makes no sense. If you just paid $50 a month to run, transaction fees could be $10 or less instead, and you'd spend less on an entire year of node operation+transactions than a single transaction on the limited blockchain.

* Ok, but lighting solves it, right? Well, Lightning will help, but lightning absolutely does not solve it. Lightning comes with a very different set of risks, requirements and tradeoffs that is absolutely not appropriate for every user or every use-case. Lightning requires senders and receivers to be online at all times. Lightning may have unforseen sybil consequences as it must form chains. Lightning funds require watchers to prevent defections which requires fees. Lightning is vulnerable to default-en-masse attacks where an attacker consumes nearly all available blockchain space and profits when they shouldn't have been able to. Lightning requires that users pre-fill funding for other people in order for those people to be pay-able on lightning. Lightning can't be used for large transactions reliably which breaks payment loops back to consumer's accounts, causing money to flow in one direction and require frequent channel refilling. Lightning will have fees that reflect a certain percentage of Bitcoin tx fees, and predicting lightning's fees in advance is nearly impossible given the complexity of tradeoffs and risks it has. Lowering Bitcoin transaction fees will lower lightning transaction fees.

Despite its flaws, Lightning is a fantastic solution for time-sensitive payments that happen more than a few times, and it is great for high-frequency payment paths. I do believe Lightning may be able to offload as much as 50% of the transaction volume in addition to enabling new use cases. That's great and all, but we don't need 50% to serve the world, we need 5000%.

Lastly, even if I am wrong and lightning offloads much more than that, it still doesn't change my argument. Both bitcoin users and lightning benefit from lower on-chain bitcoin fees and lower blockspace contention. So even in that case, it still doesn't make sense for a node to cost $5 a month when transaction fees approach $1000. I'm sure $1000 seems ridiculous to you for transaction fees, but people laughed when I was saying months ago that transaction fees couldn't stay below $1 per transaction long term (they were $0.20 at that time). Despite them laughing it off, transaction fees went from $0.05 per tx avg to $5 per tx avg within a 12 month period. And that's not "spam" - transactions per second has followed a fairly predictable +65-80% per year growth for nearly 5 years running, March was just when the ceiling really began to hit people. Many businesses have changed their Bitcoin donation buttons to Ethereum donation buttons because of fees, behaviors are already changing as use-cases get pushed out.

But what about datacenter nodes? Datacenters aren't evil. They provide a service, something anyone can pay for. There are hundreds of cloud providers to choose from in hundreds of companies, and thousands upon thousands of datacenters to choose from. They don't care what you do, and that doesn't mean the government controls your node. Just like people don't need to run a full node on their phone to transact with Bitcoin on their phone, people don't need a full node in their house to be running a full node, and most** users don't need the security and trustlessness provided by a full node. They're fine with SPV nodes.

So now that I've written all of that out... Why should running a full node cost a cup of coffee when transacting costs rent money? Both costs are intricately tied to "using" Bitcoin. Both costs can be and must be balanced.

From my perspective, you want me to give up one of the "layers" of protection by making it impractical for me to run a fully validating node.

No, I absolutely do not want that for you. I want other people to be able to come into the network in the future without paying what will be, at that time, exorbitant transaction fees just to get started. How can I say this? I believe node operational costs can be balanced with transaction fees by doing only one thing differently: Calculating node operational costs in BTC, not dollars. Ergo, as Bitcoin prices rise, nodes can scale to handle more volume. As of pre-spike January that was 0.005 BTC per month. You've been in Bitcoin since at least 2015 it seems, so you can probably afford 0.005 BTC per month for the rest of your life. I know I can and would gladly do so to help Bitcoin scale and not lose to a coin that better balances node costs and transaction fees. Will you?

Just because you don't think more than SPV is necessary doesn't mean all of us should be forced to go that route.

The people who don't want to go that route can simply pay more, and it isn't even a lot more they have to pay! A mere $800 a month will let us scale well to VISA levels and reach nearly 6% of the world's population and transaction volume, and let Bitcoin scale to a price of over $100k per coin. Since nearly everyone who cares about this kind of thing are already Bitcoiners that will profit as the price rises, they can easily afford to do this for as long as desired. There's no need for node operational costs to ever rise when priced in BTC per month. In fact, node operational costs can drop in BTC per month while scaling Bitcoin. The alternative that you're proposing, as I covered above, is that literally no one new can or will begin using Bitcoin, and it will either be supplanted by a coin that serves users, or it will wind up only being usable by the wealthiest 0.02% of the world.

Are you saying you wouldn't justify paying $800 a month for a full node if each Bitcoin was worth $100,000 and nearly every person you know could use / was using Bitcoin?

I'm fine with a split Bitcoin if the alternative is a Bitcoin without what I value in Bitcoin.

Many different people value many different things in Bitcoin. Why is what you value in Bitcoin more important than what other people value in it?

Pheromon commented 7 years ago

Thanks @JaredR26 for your posts, really great points, well expressed.

About this:

fee discount for witness is not a consensus rule FYI, this is not true. I'm late to this thread so I don't know what has been covered and not. The fee discount is a consensus rule because it is used(and essential) for the calculation of the blocksize/blockweight within the maximum

It's my understanding (if not please tell me so I stand corrected) that only the aggregate weight of txs is considered, so it's not so important how much I weight the single transactions but the fact that the aggregate size of witness data must be less than 3MB.

This is false, studies have shown that as transaction volume increased, the number of nodes increased

More than that, we have ethereum as an example where the node requires way more resources than bitcoin, yet there are many times the number of eth nodes than bitcoin. See also http://www.cnbc.com/2017/07/19/ethereum-takes-over-digital-currency.html

most users don't need the security and trustlessness provided by a full node. They're fine with SPV nodes

For most users even SPV is more than overkill. They can simply use one of the many wallet providers that offers a service to transact with the blockchain while keeping the keys on the client.

betawaffle commented 7 years ago

There's whole threads of people on /r/bitcoin setting up raspberry pi's with no intention of ever transacting with them.

Well those people are dumbasses ;)

If you actually want Bitcoin to serve more than a few people, it needs to fit those transactions somewhere.

I'm of the impression that cryptography advancements and other things will make Bitcoin more able to handle this in the future, without sacrificing anything. I'm sure you can agree we don't need to handle that much activity yet. It then becomes a line drawing of how much activity do we really need to handle in the short term.

So it must grow.

I agree that it must grow, but maybe not at the rate you are suggesting. I have not yet made up my mind whether it's possible to control the rate of growth or not, though.

There's absolutely no limit to how high fees will rise.

Well, there certainly are limits, but they may be very high. As fees increase, more of the money becomes too costly to move, which could drive up the price of Bitcoin, which could reduce fees. Just a theory, though.

I'm going to reply to the rest in smaller comments, because there's so much.

christophebiocca commented 7 years ago

As fees increase, more of the money becomes too costly to move, which could drive up the price of Bitcoin, which could reduce fees.

I'm assuming you meant drive down the price of Bitcoin? Otherwise that just makes things worse.

JaredR26 commented 7 years ago

and larger blocks don't have "consensus" among users.

Everything I can find outside of /r/bitcoin upvotes indicates that this is false.

You can't disprove that any more than I can prove segwit has user consensus

Prove? No, but I can provide a lot of data that you have to explain somehow.

Manually run by humans to prevent sybiling, 64% support: https://cointelegraph.com/news/the-bigger-the-better-64-of-bitcoin-users-vote-for-block-size-increase

Voted by address signatures, not sybilable: https://vote.bitcoin.com/arguments/block-size-limit-should-be-increased-to-8-mb-as-soon-as-possible

and: https://vote.bitcoin.com/arguments/bip101-bip102-and-bip103-increase-scale-without-increasing-scalablity-potentially-a-cost-to-security

Proof-of-twitter poll... Also note how laughably small these result sets are... If nothing else, it should terrify you that Bitcoin is so small that a contentious sybilable poll only gets less than 3000 votes: https://twitter.com/ViaBTC/status/860933065022898176?s=09

Sybilable poll from 2015, which also got a teeny tiny number of votes: http://blog.genesis-mining.com/survey-results-increasing-the-blocksize

Big blocker support nearly 15% higher than small blocker support, not sybilable (known names): https://medium.com/@21/using-21-to-survey-blockchain-personalities-on-the-bitcoin-hard-fork-1953c9bcb8ed

Even Luke-Jr's sybil-resistant poll, heavily slanted by the questions Luke picked to support his case and essentially ignored by people outside /r/bitcoin shows that more people support 4mb blocks by 2019, something segwit cannot give us (theoretical maximums that can't be hit under realistic circumstances aside), but still reflects an increase in node operational costs faster than technological improvements.

I haven't found any polls anywhere, sybilable or not, suggesting that small blocker support is stronger than big blocker support, the closest being Luke's.

We are both choosing to interpret either different data, or the same data differently.

I mean, I provided a bunch of data just now... can you do the same? Otherwise I don't think that's a fair claim to make. I would agree with you that there's a lot of not-very-helpful data out there, at least.

None of the three options is going to get all the users.

This is totally true, I agree with you! Fortunately that's a ridiculous goal, and the only people who are setting that goal (hint on who that is...) have an ulterior motive - their ACTUAL goal is maintaining the existing consensus rules, they could care less what other people want or how many of them there are.

Fortunately for us, Bitcoin has strong forcing functions to keep the extreme minorities in line - Their forks won't be viable and will fail. The real threats worth discussing are viable forks, and, I think, broad support for proposals (in communities where competing viewpoints are allowed or hopefully encouraged, and no I wouldn't consider /r/btc to be a place "encouraging" competing viewpoints).

Pheromon commented 7 years ago

There's absolutely no limit to how high fees will rise.

Not really. Since the fees are high for an artificial limitation and not for a technical one, when fees are too high, what happens is that (new and existing) users and (new and existing) use cases migrate to other coins that has no production quota. This is already happening massively in Bitcoin, and for every user or service that migrate from bitcoin, there is value transfered elsewhere.

betawaffle commented 7 years ago

I can't dispute what you've said about LN so far, so I'll move on.

Many businesses have changed their Bitcoin donation buttons to Ethereum donation buttons because of fees.

They are welcome to do so, I don't see why that's such a big deal. If they only care about fees and users don't care then they don't need Bitcoin.

But what about datacenter nodes?

There is nothing wrong with datacenter nodes.

You've been in Bitcoin since at least 2015 it seems, so you can probably afford 0.005 BTC per month for the rest of your life.

2011, but that is not at all why I'm able to afford running a node.

The people who don't want to go that route can simply pay more, and it isn't even a lot more they have to pay! A mere $800 a month will let us scale well to VISA levels

$800/month is not reasonable for an individual. No bank costs that much, why should I pay so much to get the same protections as anyone else?

... when priced in BTC per month.

I don't earn money in BTC, so how could I afford that?

More to come...

betawaffle commented 7 years ago

Are you saying you wouldn't justify paying $800 a month for a full node if each Bitcoin was worth $100,000 and nearly every person you know could use / was using Bitcoin?

Correct.

betawaffle commented 7 years ago

Many different people value many different things in Bitcoin. Why is what you value in Bitcoin more important than what other people value in it?

It isn't, but I'm still going to fight for it.

JaredR26 commented 7 years ago

It's my understanding (if not please tell me so I stand corrected) that only the aggregate weight of txs is considered, so it's not so important how much I weight the single transactions but the fact that the aggregate size of witness data must be less than 3MB.

No, I had this wrong as well, very publicly at one point (oops!). Your statement implies that there are two limits for segwit, and there are not. There's one line - maxblockweight - and the formula that calculates maxblockweight just happens to be set at the point where the original max base blocksize couldn't be over 1mb.

This, of course, makes calculating how much actual bandwidth Bitcoin consumes much more difficult for humans. Minor downside, but not exactly a desirable trait.

JaredR26 commented 7 years ago

I'm of the impression that cryptography advancements and other things will make Bitcoin more able to handle this in the future, without sacrificing anything

Your impression is wrong. Even if we got Bitcoin transactions down to a ridiculously small(and probably extremely insecure) 50 bytes of data each we could not serve the world's transactions without increasing node operational costs.

I'm not saying we can't do better or that we shouldn't, my point is that that logic simply doesn't work for the scale of the problem.

I'm sure you can agree we don't need to handle that much activity yet.

No, we need to handle +65% - +80% per year. That's what the transaction growth naturally drives towards historically. More accurately, I think we need to increase blocksizes whenever the average fee per transaction rises above $1-2 per tx.

I have not yet made up my mind whether it's possible to control the rate of growth or not, though.

Markets don't like attempts at control. Ethereum would not be at 50% of Bitcoin's market cap if not for the scaling problem. No Bitcoiner can prevent that growth, and many support it as they sell Bitcoins to buy Ether.

As fees increase, more of the money becomes too costly to move, which could drive up the price of Bitcoin, which could reduce fees. Just a theory, though.

Wait, did you just say as fees increase, fees will decrease? :P

Fees drop when either usage drops or when blocksizes are increased. Reducing usage of Bitcoin is going to be punished very harshly by the markets that we cannot hope to control.

Pheromon commented 7 years ago

There's one line - maxblockweight - and the formula that calculates maxblockweight just happens to be set at the point where the original max base blocksize couldn't be over 1mb.

Yes, but my point is that a miner could decide to change the formula for the fees needed to include a segwit transaction in the block, and that would not violate consensus rules.

For example, a miner could decide to accept segwit transactions only if they pay twice the fees than normal transactions: they would lose money (fees), but that would not violate consensus.

As an hyperbole, a miner could decide to include in its blocks only normal (non-segwit) txs by considering the weight "infinite".

betawaffle commented 7 years ago

I mean, I provided a bunch of data just now... can you do the same? Otherwise I don't think that's a fair claim to make. I would agree with you that there's a lot of not-very-helpful data out there, at least.

I might be able to if I cared more, but I think we agree enough for me to let this point go.

Even if we got Bitcoin transactions down to a ridiculously small(and probably extremely insecure) 50 bytes of data each we could not serve the world's transactions without increasing node operational costs.

You're assuming we'll need to store the transactions at all ;)

As fees increase, more of the money becomes too costly to move, which could drive up the price of Bitcoin, which could reduce fees. Just a theory, though.

JaredR26 commented 7 years ago

If they only care about fees and users don't care then they don't need Bitcoin.

This is literally the logic that markets punish severely. Your logic appears to be "it doesn't matter if other people want to use other things more than Bitcoin." But it does, crypto-currencies are networks, and network effects matter a whole hell of a lot. Myspace and friendster used the same logic at one point.

$800/month is not reasonable for an individual.

I never said it was. The vast majority of individuals get all the security they need between SPV clients and light clients like Electrum validating from multiple sources. Fullnode operation can be run as a service and amoritize node costs across thousands of users, just like pool nodes already do today for miners.

No bank costs that much, why should I pay so much to get the same protections as anyone else?

Banks can easily cost that much if you want protections that other people don't get, like financial advisors watching your investments for shifts and trends 24/7.

Not every person needs the same level of security or services. You're imagining that "risk" is an absolute, it is not. Did you review every line of code and recompile your Bitcoin node from that source code base? If not, you have taken what 99.9% of Bitcoiners would call a reasonable risk. The viable attacks against SPV clients are extremely expensive to perform and have an extremely low chance of impacting the average user. Far far less if they also use multiple verification from light client services. These aren't hypothetical, this type of thing could be done TODAY and let Bitcoin scale to reach hundreds of millions of people. Let people choose the risk levels that are appropriate for their usecases without preventing other people from using Bitcoin at all.

I don't earn money in BTC, so how could I afford that?

Assuming you are 15 years old today or older and live to be 90, if you have 4.5 BTC today you could afford to run a full node like this for the rest of your life. I believe you should have the choice not to do that if you do not want to, but your choice should not simultaneously prevent huge numbers of other people from ever using bitcoin.

betawaffle commented 7 years ago

The vast majority of individuals get all the security they need between SPV clients and light clients like Electrum validating from multiple sources. Full node operation can be run as a service and amortize node costs across thousands of users, just like pool nodes already do today for miners.

What about privacy?

Assuming you are 15 years old today ...

When you assume, you make an ass of u and me.

betawaffle commented 7 years ago

Let people choose the risk levels that are appropriate for their use cases without preventing other people from using Bitcoin at all.

Bitcoin can't compete with alternatives that have lesser privacy and trustlessness considerations. To lower the accessibility of those properties just to bring in more users immediately isn't worth it, IMO.

JaredR26 commented 7 years ago

Are you saying you wouldn't justify paying $800 a month for a full node if each Bitcoin was worth $100,000 and nearly every person you know could use / was using Bitcoin?

Correct.

Then either you don't hold enough Bitcoins for Bitcoin's economic incentives to actually motivate you the way they were designed to (why are you here if this is the case?) or else you're very stingy. I'd donate 100 BTC if it let Bitcoin scale to reach hundreds of millions of people, and I joined around the same time as you.

It isn't, but I'm still going to fight for it.

And to you, that is worth splitting Bitcoin into two pieces and doubling the total number of coins in circulation, and permanently harming Bitcoin's image as a stable, reliable, secure currency? That's a pretty harsh tradeoff if you're successful, not to mention the millions of people you exclude from ever using Bitcoin.

Even if we got Bitcoin transactions down to a ridiculously small(and probably extremely insecure) 50 bytes of data each we could not serve the world's transactions without increasing node operational costs.

You're assuming we'll need to store the transactions at all ;)

No, I'm literally not. 426 billion transactions per year = 35.5 billion transactions a month = 1.775 trillion bytes of data a month if each transaction is received only once and never relayed. That's 1775 GB a month of bandwidth raw. Factor in transaction relay requirements(can't just receive!) and network relaying inefficiencies and its more like ~14 terabytes of bandwidth a month, $250 a month of bandwidth using about a 10th percentile of the best bandwidth prices available today(0.019 per GB). The smallest transaction is a bit over double that.

And if you don't store transactions btw, you aren't contributing to historical network sync, which is needed for absolute trustlessness as you are pushing for here.

As an aside, I agree with that statement in one way. We desperately need a fast hashed-utxo sync or checkpointing system like what has been implemented in nearly every other cryptocurrency of any significant size. That hasn't been prioritized much like compact blocks wasn't prioritized until BU did it. Things that reduce raw bandwidth consumption harm the arguments being put forth by small-block proponents.

When fees increase, transaction outputs which are too low to afford the fee are not worth spending.

So you are saying you support stealing money from poor bitcoiners by making their UTXO's useless?

What?

betawaffle commented 7 years ago

That's 1775 GB a month of bandwidth raw.

You're making my point for me.

For the most part, we are not disagreeing on any facts, just where to draw the lines.

And if you don't store transactions btw, you aren't contributing to historical network sync, which is needed for absolute trustlessness as you are pushing for here.

I can only assume you don't know what direction the research is headed.

We desperately need a fast hashed-utxo sync or checkpointing system.

I agree, but the security implications are still being worked out. You can't just shove things in because it seems like it will work correctly.

So you are saying you support stealing money from poor bitcoiners by making their UTXO's useless?

Of course not. They wouldn't be able to spend them. Fees don't increase forever.

betawaffle commented 7 years ago

I'd donate 100 BTC ...

If I had 100 BTC I'd be a lot more focused on getting the price to rise too.

JaredR26 commented 7 years ago

What about privacy?

Privacy can be achieved by balancing balance requests across multiple full node datasources and adding in spurious balance requests for addresses not yours. Very easy solution that doesn't require hamstringing the entire ecosystem's growth.

People who want even more privacy than that absolutely should be able to do so. I fully support people who want to run their own tor nodes and bitcoin nodes being able to do so, right up until they decide that their tiny need for privacy is more important than other people being able to use the currency in the first place.

When you assume, you make an ass of u and me.

Very funny, so you're saying my assumption of the worst case is actually not the worst case, and you're younger than that? I am using the most extreme-but-still-reasonable examples in your favor with both the bandwidth/transaction calculations and also the costing calculations.

Bitcoin can't compete with alternatives that have lesser privacy and trustlessness considerations.

Neither you nor I get to decide that. The markets decide that. The markets have already spoken that scaling is more important.

To lower the accessibility of those properties just to bring in more users immediately isn't worth it, IMO.

Again, YOUR OPINION. The users that you are refusing to allow to use the coin in the first place would disagree, and they will disagree, and they will drive up the price, value, technology, and security of alternatives to Bitcoin instead if you don't let them in.

I strongly support your right to have and express your opinion and have it considered critically. I also support Bitcoin offering you all of the features, security, and privacy that you want, right up until offering you a little more privacy for less money prevents Bitcoin from offering any features, security, or privacy at all to other people. Sorry, you and I aren't special. The markets will decide, and the markets are absolutely going to punish all of us if Bitcoin splits.

betawaffle commented 7 years ago

... and you're younger than that?

I'm obviously 5 years old.

Sorry, you and I aren't special. The markets will decide, and the markets are absolutely going to punish all of us if Bitcoin splits.

And what if the market decides that the 2x hard fork isn't the way to go? What will you think then?

JaredR26 commented 7 years ago

For the most part, we are not disagreeing on any facts, just where to draw the lines.

Right, and that's great. But ultimately we either have to come to an agreement about where to draw those lines (Compromise, i.e., segwit2x) or we have to split permanently and accept all the bad things that follow from that.

I agree, but the security implications are still being worked out.

Worked out? They've been actively in use in other coins for years. Meanwhile, there's almost no posts about the issue on the core dev email list over the last 2 years. One well-known core dev explicitly stated that it "hasn't been a priority," though I've lost the link. That's all I'm saying - these things we desperately need aren't a priority so long as they don't help the vision that is being pushed politically.

If I had 100 BTC I'd be a lot more focused on getting the price to rise too.

Fair enough, but that seems to imply either that your reasons for your position already are, or would become, motivated for selfish reasons, no?

There's nothing wrong with that, that's how Bitcoin was designed. But we need Bitcoin to scale regardless, otherwise its just you wanting to spend less on privacy at the cost of other people even being able to use Bitcoin at all. We should be allowing different scaling proposals to compete freely instead of being silenced in major forums.

And what if the market decides that the 2x hard fork isn't the way to go? What will you think then?

It won't decide that for many months because of the strength and philosophy of the groups pushing for bigger blocks, but if it did eventually favor smaller blocks? Then I would stick with smaller blocks until the blocksize limit becomes a huge pain again and this time the small blockers wouldn't have an excuse to avoid the increase that they could sell to the moderates, and lightning wouldn't be able to hide its shortcomings behind the lack of segwit's activation.

This issue isn't going to magically go away, it is just going to get worse as other coins without this arbitrary limit gain more and more merchants, exchanges, users, devs, nodes, and miners. Once a use-case switches to using an alt-coin, they generally won't switch back without a powerful motivation. Every single one we lose is a big problem long term. But sure, lets just split Bitcoin into two weaker halves and trash everything so you can pay $5 per month instead of $10 per month in node costs. 👍

betawaffle commented 7 years ago

Fair enough, but that seems to imply either that your reasons for your position already are, or would become, motivated for selfish reasons, no?

My interest in Bitcoin is the technology and future potential, not the price.

We should be allowing different scaling proposals to compete freely instead of being silenced in major forums.

Reddit is not a place for any reasonable discussion on the topic.

But sure, let's just split Bitcoin into two weaker halves and trash everything so you can pay $5 per month instead of $10 per month in node costs.

I honestly don't think that will be the case.

JaredR26 commented 7 years ago

My interest in Bitcoin is the technology and future potential, not the price.

Still the same... You want Bitcoin the technology and future potential to only be that potential for 0.02% of the population?

Reddit is not a place for any reasonable discussion on the topic.

Agreed there. But then again, nowhere seems to be.

I honestly don't think that will be the case.

With what part?

betawaffle commented 7 years ago

With what part?

That miners will split away from all the ~100k core nodes, or that those nodes will "upgrade" to btc1.

JaredR26 commented 7 years ago

That miners will split away from all the ~100k core nodes, or that those nodes will "upgrade" to btc1.

They said they would and signaled it. You're right that some could stop. But the rest have been itching for a split for a long, long time, this is past due for them.

the ~100k core nodes,

Also you seem to believe running a core node is a vote of something. As I covered above, it is not. Donald Trump is president of the United States, ergo Americans agree he was the best pick for president? Critical thinking man.

Even more than that, how do you explain 100,000 "core supporting nodes" who will adamantly cling to an unusable chain over their philosophy when an easily sybilable poll has less than 3000 votes and 56% big blockers? Do you have ANY way there to resolve the obvious discrepancy between what you are claiming and the data available?

There's three different ways this could go. In only one of those cases do we not end up with either 2x or two coins, and maybe not even then.

  1. Miners hold to agreement; Legacy chain is not viable with ~1-10% of hashrate. We either end up with segwit2x or (if core pushes PoW change) with two coins.

  2. Miners defect similar to previous BU/segwit support levels, and the userbase splits. In this situation most likely the segwit2x coin will begin to change quickly since segwit will be much more unpopular among its userbase. Definitely two coins here.

  3. Users refuse to switch because reasons and hold do it for an extended period of time. Under this scenario Bitcoin would have two essentially useless forks for some time, one with companies and miners but no users, and one with users but no blocks. Price on both would tank under $500 easily. Things might reconverge to one coin or we might have two coins.

Or, a wide majority of miners don't follow the hardfork. In that case we would have one Bitcoin but might still have a much smaller ETC like scenario. Two coins still possible.

But sure, I'm sure all of those 100,000 users(* we don't really have 100k nodes btw) are frothing-at-the-mouth core supporters who hate miners so much that they are willing to stick with an unusable chain for months just to teach the miners a lesson. 👍

CosmicHemorroid commented 7 years ago

@JaredR26 Seriously, enough with your propaganda and turning GitHub into Reddit.

JaredR26 commented 7 years ago

@CosmicHemorroid

Feel free to continue the discussion here - closing the issue as it's not something we will likely address.

From jgarzik. I assumed if other people took it down that path for hours on end, it wasn't a problem for me to respond in kind.

If it was propaganda, you could refute my facts or my logic.

betawaffle commented 7 years ago

If it was propaganda, you could refute my facts or my logic.

@CosmicHemorroid

Don't bother, I tried. 🤕

mpatc commented 7 years ago

@cosmichemorroid

Could you try to keep it professional?

Thanks!

On Jul 20, 2017 5:34 PM, "Andrew Hodges" notifications@github.com wrote:

If it was propaganda, you could refute my facts or my logic.

@CosmicHemorroid https://github.com/cosmichemorroid

Don't bother, I tried. 🤕

— You are receiving this because you commented.

Reply to this email directly, view it on GitHub https://github.com/btc1/bitcoin/issues/92#issuecomment-316836721, or mute the thread https://github.com/notifications/unsubscribe-auth/APNcvu1rsuSdRwfik7XPd6T8gjR-HTSWks5sP8fwgaJpZM4Oc5Fn .