IRC meeting summary for 2015-11-12

Overview

Logs

Main topics

  • transaction priority for 0.12
  • Opt-in replace-by-fee
  • Versionbits
  • Chain limits

transaction priority for 0.12

background

Each transaction is assigned a priority, determined by the age, size, and number of inputs. Which currently makes some transactions free.
This currently has a large amount of code, which makes it harder to maintain, and is not that optimal since you can’t expect miners to include 0-fee transactions.

meeting comments

Most people seem fine with removing priority in the mempool, but people should be notified ahead of time this is coming.
sdaftuar proposed a staggered approach, setting the default value for priority to 0, and remove it entirely in the next release.
petertodd notes there will be a natural staggered process since not everyone will upgrade to 0.12 instantly and some implementations might not remove priority at all.
Most wallet-software outside of bitcoin-core don’t implement priority calculations.
As fee estimation becomes more important and many wallet providers use the bitcoin-core fee estimation, improvements on that are welcome.
Luke-Jr doesn’t agree with removing priority, particularly with changing the mining code to use the priority a transaction has when it enters the mempool.
Sipa has the idea to add a small fraction of bitcoin days destroyed divided by the average UTXO age to the fee, so that non-spam-attack transactions are viewed as if they have a larger fee.

While most agree with the proposal to remove the current priority, there’s still much debate on whether it needs to be replaced for 0.13, and if so, how.

meeting conclusion

Review “Improve usage of fee estimation code” BlueMatt will mail the developer mailinglist announcing the changes. ( https://www.mail-archive.com/bitcoin-dev@lists.linuxfoundation.org/msg02790.html )

Opt-in replace-by-fee

background

Currently when a node sees a transaction that spends the same output it ignores it. With replace-by-fee it replaces the current transaction in the mempool if it has a higher fee.
This allows for things like spending “stuck” transactions, adding more recipients to a transaction in order to prevent chaining, etc.

Since there are people that accept 0-confirmation transactions and this would make it extremely easy to double spend them, this is made opt-in.
The sender can choose to opt-in to replace-by-fee by changing an input in the nSequence field.

meeting comments

Peter Todd wrote some tools to use replace-by-fee. link
It would be nice to have opt-in per output instead of the whole transaction, however that would be very hard to implement and would have some privacy concerns.
Luke-Jr would like to see an option to toggle between first-seen-safe/full RBF and never/opt-in/always. Since there are possibly some objections with the “always” toggle it should be a separate pull-request.

meeting conclusion

review and merge nSequence-based Full-RBF opt-in
Peter Todd will write a mail to the list to explain how it works and how people can not accept opt-in transactions.

Versionbits

jonasschnelli> background

BIP 9
Currently softforks have been done by the isSuperMajority mechanism, meaning when 95% of the last X blocks has a version number higher than Y the fork is deployed.
A new way of doing this is currently being worked on and that uses all bits of the version number, appropriately being called versionbits. So instead of a fork happening when the version is larger than (for example) 00000000011 (3), a fork happens when (for example) the 3rd bit is up (so 00100000011).
This way softforks can be deployed simultaneous and independent of each other.

meeting comments

There are 2 different implementations. One from Codeshark and one from Rusty
jtimon thinks both implementations are more complicated than they need to be.
There needs to be a minor revision namely a starting time for proposals.
In general we’d like to get this in soon, but existing softforks need to complete first.

meeting conclusion

CodeShark adds a starting time to versionbits.

Chain limits

background

Chain in this context means connected transactions. When you send a transaction that depends on another transaction that has yet to be confirmed we talk about a chain of transactions. Miners ideally take the whole chain into account instead of just every single transaction (although that’s not widely implemented afaik). So while a single transaction might not have a sufficient fee, a depending transaction could have a high enough fee to make it worthwhile to mine both. This is commonly known as child-pays-for-parent.
Since you can make these chains very big it’s possible to clog up the mempool this way.
With the recent malleability attacks, anyone who made transactions going multiple layers deep would’ve already encountered huge problems doing this (beautifully explained in let’s talk bitcoin #258 from 13:50 onwards)
Proposal and github link.

meeting comments

Wumpus doesn’t feel comfortable with merging it because there’s some controversy from companies who exceed the limits (or could be/want to).
jgarzik does feel comfortable with it, and many think it should be merged as it’s easy to revert if needed.
There’s little choice as it’s not safe from attacks without limits.
We should communicate the replace-by-fee sendmany alternative to long chains (adding new recipients on existing non-confirmed transactions), although it won’t show up in users wallet yet and block-explorers probably aren’t ready to display it correctly.
Emphasis on the fact it’s a change in default values, not a consensus change, however default values have a lot of power.
The final limits are 25 transactions and 101kb total size for both ancestor and descendant packages.

meeting conclusion

jgarzik will merge the pull-request.
Morcos will mail the list once it’s merged.

Participants

BlueMatt        Matt Corallo  
petertodd       Peter Todd  
morcos          Alex Morcos  
jgarzik         Jeff Garzik  
gmaxwell        Gregory Maxwell  
wumpus          Wladimir J. van der Laan  
Luke-Jr         Luke Dashjr  
jtimon          Jorge Timón  
btcdrak         btcdrak  
phantomcircuit  Patrick Strateman  
sipa            Pieter Wuille  
CodeShark       Eric Lombrozo  
sdaftuar        Suhas Daftuar  
jg_taxi         jg_taxi  
gavinandresen   Gavin Andresen  
cfields         Cory Fields  
bsm1175321      Bob McElrath   

Comic relief

19:53	sipa	new topic?  
19:53	wumpus	any other topics?  
19:53	petertodd	<crickets>  
19:53	jgarzik	did we cover jonas while I was in the taxi?  
19:54	sdaftuar	?  
19:54	jtimon	?  
19:54	CodeShark	not sure I want to know  
19:54	jgarzik  	proposal for new GUI maintainer  
19:54	CodeShark	sounds kinky, though  
19:54	petertodd	CodeShark: GUI's are pretty kinky  

19:56	BlueMatt	ok, end meeting?  
19:56	btcdrak	if we can remember the command this week :-)  
19:56	wumpus	#meetingend  
19:56	gmaxwell	#destroymeeting  
19:56	wumpus	#endmeeting  
19:56	Luke-Jr	#endmeeting  
19:56	lightningbot	Meeting ended Thu Nov 12 19:56:42 2015 UTC. Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)    
19:56	BlueMatt	#magicmeetbotincantation  
19:57	petertodd	#DoWhatIMean  

Credits

This summary was originally compiled by Stefan Gilis aka “G1lius” and posted to the bitcoin-discuss mailing list with the disclaimer, “Please bear in mind I’m not a developer so some things might be incorrect or plain wrong.” and placed copyright in the Public Domain.