Bitcoin Core Development Update #5 brings better transaction fees and embedded data
Forthcoming updates to bitcoin software will make for less confusion over transaction fees, and the ability to trade property.
![bitcoin-core-development-transaction](https://www.coindesk.com/resizer/TPg-oLwVIkPY7Na4a_W-1k79o2k=/567x424/filters:quality(80):format(jpg)/cloudfront-us-east-1.images.arcpublishing.com/coindesk/FQZDA6CSQND6NOVM66NGQDFUP4.jpg)
Bitcoin is about to get two significant updates: a way to embed information about ‘smart property’ into transactions, and a better way to calculate transaction fees. Bitcoin’s lead developer Gavin Andresen made the announcement yesterday in his fifth Core Development Update.
The latest update uses a new type of transaction to give people the chance to associate their own data with their bitcoin transactions, which is something that wasn’t explicitly allowed before. The team is doing this by enabling OP_RETURN, a transaction parameter that will let people embed a tiny 80 bytes of data into a blockchain transaction record directly.
80 bytes may be tiny, but it is enough to create a hash. Hashing is a way of producing a unique output that can be proven to represent a much larger piece of data, and it is one of the basic techniques in the bitcoin protocol’s toolbox.
Core developer Jeff Garzik says that this could be a good way to enable smart property in the bitcoin network. “The hash is a hash of an ownership token representing a car, or a house, or a stock or bond,” he says. “Using the blockchain, you may securely exchange these tokens for payment (bitcoins), or exchange them with another user, without involving a third party.” This sounds a lot like colored coins, doesn’t it?
There is clearly a demand for embedding data in transactions, because as Gavin Andresen says in the Core Update document, people already use all kinds of bizarre hacks to tie data to their bitcoin transactions.
For example, some may send money to a bitcoin address that isn’t complete or accurate, and which doesn’t actually exist, explains Mike Hearn, another of the core developers. By sending money to a malformed address, they force clients to register it in a part of a transaction known as an unspent output set (UTXO). The bitcoin network has to keep UTXO data immediately available to everyone, because it is an important item when checking that transactions are valid. It has no way of knowing when UTXO data is a malformed address, so it keeps it in fast, quickly-accessible storage.
Hearn said:
That’s a good thing, because the UTXO data set currently constitutes about 250MB, compared to the blockchain’s entire 10GB now, according to core developer Pieter Wuille. The UTXO set may only be a 40th of the blockchain’s size, but that’s still significant.
“Access to the blockchain doesn't need to be particularly fast or indexed – it just needs to be available,” he says. “The challenge is the database of unspent transaction outputs. It must be accessible in a fast way for any fully validating node, forever. So the more data that can be offloaded from the unspent transaction records to the rest of the blockchain, the better.”
Some (including Wuille) worry that people will use this new transaction type for storing messages or memos. This isn’t what it should be used for, but we have already seen people using bitcoin transactions where possible to send messages to others. Blockchain.info’s wallet has a special feature (non-standard to the bitcoin network) that allows people to attach messages to transactions being sent to blockchain.info bitcoin addresses. When the FBI nailed Silk Road founder Ross Ulbricht, it was used to taunt the FBI by sending tiny transactions with abusive messages.
![bitcoin](https://www.coindesk.com/resizer/ugIitCKCqQs21U985tZnJ0zboew=/560x420/filters:quality(80):format(jpg)/cloudfront-us-east-1.images.arcpublishing.com/coindesk/7HM6EFSXJNCAVN6JKO42Z5XH7U.jpg)
There’s a chance that users could start trying to use OP_RETURN type to send messages and other data that it wasn’t intended to be used for. But given that people are doing it anyway, it’s best to try and limit the effect of it, Garzik says, calling it a ‘lesser of two evils’ approach.
The other big announcement was around smarter transaction fees. The network uses a set of heuristics that have evolved over the last four years to determine how much is charged (if the user opts to pay a transaction fee at all).
This means that the network can start doing strange things. “The current fees are hard coded,” said Hearn. “When the value of BTC/USD went up by 20x, so did the transaction fee, for no real good reason.”
Andresen calls it a ‘complicated mess’ and he has vowed to replace it with a better system. He is teaching the bitcoin wallet software how to estimate how low a fee a transaction needs, so that it can be accepted by miners when a transaction is sent. This will make it far more dynamic than the current method for charging fees.
Brian Armstrong, the co-founder and CEO of web-based wallet and bitcoin payment system Coinbase, liked the idea. Transactions between Coinbase users are all conducted off-chain, and fees are only applicable when payment is made from a Coinbase wallet to an external wallet. Coinbase pays those fees, which costs it 50 BTC each month, he said, adding:
Stephen Pair, co-founder and CTO of payment processor BitPay, said that the current design of the bitcoin network hasn’t allowed for efficient fee discovery. “An efficient market for the work of transaction processing and security will eliminate the guesswork in applying a transaction fee. It will allow the parties of a transaction to determine fees that are appropriate for the nature of the transaction,” he said.
There were several other announcements in the Core Update, including a faster way to get the important information from a blockchain node when downloading the blockchain for the first time, and a way for bitcoin clients to function in no-wallet mode, making startup faster.
When will it be released? “When it’s ready,” said Andresen. It’s the testing which takes a long time, and they don’t want to cripple the network with a critical bug. If you can code well in C++, and you’re good at testing, they want you as a volunteer.