Hacker News new | past | comments | ask | show | jobs | submit login
Bitcoin Core switching from hard-coded to flexible fees in next major release (bitcoinfoundation.org)
176 points by FatalLogic on July 7, 2014 | hide | past | favorite | 55 comments



One of two major problems solved. Now they need to fix block sizes before miners are organized enough and tx fees are high enough to incentivize small block sizes.


Smaller block sizes are already advantageous because they propagate faster, so they have a lower risk of being orphaned. A purely rational miner should only add a transaction if its transaction fee outweighs the increased orphan risk.


That is an artifact of the current system, which as Gavin mentions, can probably be fixed.


This sounds like a good idea, but won't really change anything since everyone will have to pay the new fees, and it's just an arms race.

It does not fix this problem:

"and if there are more transactions than will fit they take the highest-fee transactions first."

So what he's saying is that the bitcoin network can not handle the typical volume of transactions? So you have to prioritize things?

If it can't do it now, today, when it's small, there is simply no way bitcoin is going to grow, which is troubling for the future of bitcoin.

The requirement that every transaction is recorded forever is already causing problem (the block chain is HUGE). And the fees are just a method to try to reduce the side of the data.

Instead a completely different method should be used: A cleanup cycle where old blocks are consolidated and discarded. (The miners agree that the new block is valid, then the old block is no longer needed.)

(Also as a side note bitcoin will never survive past the last mined block. Miners will not continue to mine just for fees, but the amount of entrenched hashing power in place by then means that destroying the network will be trivial for people.)


Have you actually looked at these issues in any detail because I'm fairly certain there are solutions to most of the objections you are raising.

You don't need to store the whole block chain there are methods to prune it so to speak so that it takes up significantly less space. The Bitcoin client Multibit already does this.

As the transaction volume of the Bitcoin network picks up they can increase the block size so more transactions can be included per block. More transactions means more fees per block.

The right combination of transaction volume, block size, and Bitcoin value could certainly make mining for only transaction fees profitable.


Increasing the maximum block size would cause a hard blockchain fork. That sort of thing has been done before on a couple of occasions but it's by no means a small deal.


Actually, if I recall correctly the only hardfork so far was accidental. It's far from clear that a deliberate hardfork would ever get community support, particularly given that some of the core developers are strongly opposed to increasing the block size and think that everyone should move to online wallet services and off-chain transactions for small payments instead.


There have been two. The incident you're thinking of was accidental at first, then done deliberately with notice two months later: http://siliconangle.com/blog/2013/05/13/bitcoin-blockchain-h...

When I wrote my comment I was also thinking of https://bitcointalk.org/index.php?topic=827.0 from 2010, but on a cursory glance it looks like that was resolved with a soft fork, which is possible because the rules were made more restrictive rather than more permissive.


You make them sound casual, bitcoin has has really only had one hard forking change to enable pay-to-script transactions.


> bitcoin has has really only had one hard forking change to enable pay-to-script transactions.

... which wasn't a hard fork. The only hard fork so far was the move from BDB to LevelDB for chain state data.


> So what he's saying is that the bitcoin network can not handle the typical volume of transactions? So you have to prioritize things?

No, it has to do with fighting spam and DoS attacks.

If there's no lower bound for the fee, and there's no prioritization, there's nothing stopping anybody from sending trillions of transactions to trillions of addresses non-stop.

> the block chain is HUGE

No, it's not. It's 20GB. Many modern games are larger than that.

A 4TB hard drive can be bought for $120. 20GB of that represents the total cost of $0.60. Oh noes!


20GB still isn't something to scoff at if it wants wide-spread adoption. It's huge when you consider that anybody who wants to attempt to run Bitcoin has to download all 20GB just to get things installed. I have approximately a 1.5MB download speed. The space on my HD I can live without, but I gave-up trying to get the bitcoin-qt program to sync after about a week (I ran it mostly non-stop - I obviously wasn't getting anywhere near 1.5MB down, syncing the block-chain is slow) and just bought the little bitcoin I wanted straight into an exchange and then bought the other coins I was planning to buy anyway so I didn't have to mess with bitcoin myself.

The fact is, in it's current state the huge block-chain makes bitcoin anything but user-friendly.


You don't have to download the whole block-chain to use bitcoin.


This.


While true, I don't believe many clients make it easy to do that still.


Nearly every mobile client does not download the blockchain and instead uses SPV (Simple Payment Verification / headers only mode) or relies on a trusted server for block information.


Electrum and MultiBit on the desktop are SPV clients.


Ah I didn't know about them. I'll have to check them out, I've had annoyances in the past because i never leave bitcoin-qt open to keep it in sync.


If you don't want to wait a week or more to download the blockchain within the bitcoin program, there is a torrent to bootstrap the blockchain for new installations, last updated in April:

https://bitcointalk.org/index.php?topic=145386.0

That will get you up to April, then bitcoin the software will sync the remaining blocks up to the latest.


Download a lightweight wallet that support SPV such Multibit. That doesn't download the full block chain.


A) You don't need the whole blockchain on your regular PC.

B) If you're talking about running a node, even my shitty cheap VPN has a gigabit connection. It would take only (20GB/1 Gbit/s) = 2 minutes 20 seconds to download it.


Most modern games are not transferred over networks on a regular basis. The block chain is transferred over the network just about every time someone installs. Even using one of the torrents (which are way faster than syncing via the bitcoin client), this has to be done overnight on my home cable internet. If you're in a third world country, the time involved becomes completely prohibitive.

Bitcoin adoption involves syncing with the block chain, so this prevents adoption. So you absolutely should be concerned about a 20GB block chain.

EDIT: Also, phones. My smart phone doesn't have 20GB if storage, and even if yours does, I doubt you can sync 20GB over 3G/4G. A lot of people are touting Bitcoin as a point of sale payment system, but not being able to run it on your phone hurts that.


> Most modern games are not transferred over networks on a regular basis. The block chain is transferred over the network just about every time someone installs.

Like steam.

> Even using one of the torrents (which are way faster than syncing via the bitcoin client), this has to be done overnight on my home cable internet. If you're in a third world country, the time involved becomes completely prohibitive.

Third-world or not, if you live in a place with unreliable or slow internet, it makes no sense to run a full bitcoin node. Just run an SPV client like electrum - it's what most users should be doing today anyway. That way you do not need to download the blockchain.

Same thing for phones - all the mobile wallets I know of are SPV, and only use a few MB of storage.


Some systems like laptops come with SSD drives only. They're typically around 256gb at the moment. 20gb is a lot of space, unless you're also lugging around an external drive.


Running a full node on your laptop helps no one. They need to be permanently connected. Otherwise you should just run an SPV client.


There's good reason to run a fully validating client. SPV clients have quite a nice usability but really fall down in the security and privacy departments. As it currently stands people using Multibit have next to no privacy for a variety of reasons. Bitcoin Core is the most secure of wallets for a number of reasons, and possibly the most private when used correctly.


What do you mean by next to no privacy? Doesn't Multibit use bloom filters to get the relevant tx data? Is there any SPV client that does not use bloom filters to ask for tx data?

What makes SPV clients have less privacy than full nodes?


SPV clients download less data than full nodes do, by definition, therefore they must always have less privacy from remote peers. Additionally the only widely used SPV clients today (bitcoinj based wallets) set very tight Bloom filters and don't really use them for privacy purposes, for various reasons. Plus they aren't HD so reuse addresses quite often.

In git master bitcoinj is now HD and so SPV HD wallets will start appearing in the near future. Garbling Bloom filters more aggressively is tricky and will take someone doing some serious work and R&D to really nail.


There are SPV clients with HD wallets so that's not a problem inherent to all of them.


Why would you need to have the whole blockchain on your laptop? There are tons of lightweight wallets and online wallets.


> It's 20GB. Many modern games are larger than that.

It's large enough that it can't be stored in a single file on many good filesystems without extra fiddling. While "huge" is obviously a subjective measure, this would certainly seem to apply.

Either way, many modern games come in well under 20GB, so I'm not sure that's the best criterion to use. And storage isn't the problem, as much as the bandwidth requirements to bootstrap a bitcoin client.

And all of these problems will only grow larger over time.


The reference client does not store the blockchain as a giant file and instead splits the data into 128MB chunks on disk.


What good filesystem can't support > 4GB files?


FAT32, the only file system which can be read and written from OS X, Windows and Linux without third party software and warnings you'll lose all your data.


So what he's saying is that the bitcoin network can not handle the typical volume of transactions? So you have to prioritize things? If it can't do it now, today, when it's small, there is simply no way bitcoin is going to grow, which is troubling for the future of bitcoin.

Right now miners aren't creating full 1MB blocks because each transaction has a pretty high orphan cost, but this can be fixed (as mentioned in the post).

The requirement that every transaction is recorded forever is already causing problem ... Instead a completely different method should be used: A cleanup cycle where old blocks are consolidated and discarded.

This is more or less being worked on under the name "ultimate blockchain compression".

Miners will not continue to mine just for fees

It's not obvious that this is the case, but there could be a problem if the 1MB block size limit is still in place at the next reward halving.


So what he's saying is that the bitcoin network can not handle the typical volume of transactions?

The limit is an artificial one, and if the number of transactions starts regularly exceeding the limit, it can be easily raised.

the block chain is HUGE

20GB, which I wouldn't class as particularly large.

Also as a side note bitcoin will never survive past the last mined block.

Given that's around 120 years away, that seems like a pretty long term problem.


"A cleanup cycle where old blocks are consolidated and discarded"

Already implemented by multiple clients, and already envisioned by Satoshi in 2008. See Simplified Payment Verification (SPV): https://en.bitcoin.it/wiki/Thin_Client_Security#Header-Only_... (wiki page out-of-date - this is an incomplete list of clients.) The storage requirements of an SPV client only grow by 4MB/year regardless of how many transactions the global network processes. See section 7 of https://bitcoin.org/bitcoin.pdf

"Miners will not continue to mine just for fees"

Yes they will. Most of the observed mining power continued mining through the first reward halving of Nov 2012. This is because miners have different operating costs. So the few that stopped mining actually caused a small difficulty drop (~10% IIRC), which made it a bit more profitable for those who continued mining, so the network stabilized at a slightly lower hashrate (before it continued increasing again in Jan-Feb 2013.)

This demonstrates that mining is an economically self-adjusting activity that can survive 50% drops in mining income. And the disappearance of the fixed reward in year ~2140 will NOT be an event where more than 50% of your mining income disappear overnight [2] so Bitcoin mining is economically viable forever, theoretically.

[1] https://en.bitcoin.it/wiki/Controlled_supply

[2] Fees currently average ~0.05 BTC/block. The fixed reward is 25 BTC/block today and decreases smoothly by halving every ~4 years, therefore it should reach 0.04882812 BTC by year ~2048 [1]. This means even assuming fees never grow beyond 0.05 BTC/block (eg. Bitcoin's adoption stagnates), fees will already represent most of a miner's income by year 2048. Subsequent reward halvings (0.04882812 BTC to 0.02441406 BTC in year ~2052, etc) will be insignificant compared to the income from fees. And the disappearance of fixed rewards in year 2140 will be an even less significant event. Fees will have already represented the majority of mining income for the previous ~100 years.


"This sounds like a good idea, but won't really change anything since everyone will have to pay the new fees, and it's just an arms race."

I don't think Gavin or anyone else claimed it did. This change is just one of several needed to solve these problems.

"Instead a completely different method should be used: A cleanup cycle where old blocks are consolidated and discarded. (The miners agree that the new block is valid, then the old block is no longer needed.)"

Satoshi described "pruning" in the original whitepaper, and it doesn't require a protocol change.

"Also as a side note bitcoin will never survive past the last mined block."

Fortunately that's at least 100 years away. I think that should be enough time to transition to a different incentive structure.


Bitcoin can currently handle about 7 transactions per second. Currently it averages around 0.8 transactions per second so its a ways to go before it hits that(by comparison Visa does ~2000/per second average).


Interesting - where did these figures come from?


7tps is done by figuring out the max block size divided by the average size of transactions.

For the other numbers:

https://blockchain.info/charts/n-transactions-per-block each block is about 10 minutes so that gives us around 0.7tps

The Visa number from https://en.bitcoin.it/wiki/Scalability though it looks like Visa redid their site since the source was added so you'd have to search to find the actual source though http://usa.visa.com/merchants/industry-solutions/retail-visa... says they can burst to 24K TPS.


"(Also as a side note bitcoin will never survive past the last mined block"

Okay, I'll bite. What will the $USD value be of all aggregate fees be at that point versus the average cost of hashing that block?

If, in fact the cost is greater, then doesn't that suggest fewer people will be interested in mining, which means that the cost will drop?

Seems to me there is a nice feedback loop there.


It is true that if mining revenues fall, less profitable miners will drop off, lowering the difficulty, eventually reaching an equilibrium where some population of miners continue to mine.

The big question is: Will the amount of hashpower willing to mine for only transaction fees be enough to secure the network against 51% attacks?


One target for transactions is about 4,000 transactions/second. If they reduce the confirm time to 60 seconds like DogeCoin, then we are looking at about 240,000 transaction fees per block. Figure $0.10/transaction, that's about $24,000 per block. Right now it's 25 * $600, or $15,000 block - so, I can see there being a future on transaction fees on Bitcoin Alone.

But - there are a lot of other really interesting applications that can be run on the block chain, and I can see people willing to pay much greater transaction fees than $0.10 to get their transaction recorded on the block chain - so plenty of interesting opportunities.


there is no last block...


Last mined block. I assume she (he?) was talking about the last block for which a block discovery fee is paid.


I'm pretty sure you're right about what she was talking about, but to be clear about terminology, all blocks are "mined". To quote the Bitcoin wiki, "Mining is the process of adding transaction records to Bitcoin's public ledger of past transactions."


The transaction fees are part of what you call the block discovery fee.

As long as there is someone left running the software, blocks will be mined.


Will this change let me have my transactions confirmed faster than currently possible if I pay higher Tx fees? Similarly, can I pay next to nothing and have the Tx confirmed eventually?


In principle you can already do this. Whether it works or not depends on the mining pools though, not necessarily this protocol change (although it may influence them). Some pools will prioritize transactions with higher fees, some will prioritize first come first serve after a minimum fee.


> Some pools will prioritize transactions with higher fees, some will prioritize first come first serve after a minimum fee.

Are there really any pools that don't prioritise higher-fee txn?


Yes. Note that the recent FBI Bitcoin sale used no tx fees at all. It's a function of how many inputs the transaction have and how mature they are. Details are at the wiki.


That's how the reference client works. That's not necessarily how miners operate. If they're acting in self-interest, they'd accept fee-per-kb irregardless of priority.


In proof of work cryptocurrencies, transaction fees will become increasing important.

Mines need feedback loops with users to ensure that transaction fees are high enough to avoid congestion in transaction processing.

As the blockreward drops, transaction fees will also need to high enough to sustain enough economic interest in mining to protect against 50.1% attacks on the blockchain.


[deleted]


If they don't, Bitcoin is irrelevant.

If they do, they get the keys of the castle.




Consider applying for YC's W25 batch! Applications are open till Nov 12.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: