Discussion:
[Bitcoin-development] Concerns Regarding Threats by a Developer to Remove Commit Access from Other Developers
odinn
2015-06-18 08:54:15 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Recently I saw the following video:



Hadn't seen it until just today, although it was done on June 8, 2015.
So this is a bit dated, but to me it was a bit of a stunner to see the
extreme nature of (some) of the views presented in this video.

Let me be blunt, I have serious concerns regarding threats issued by a
developer in this video, and I think that it is entirely possible that
those of you who are core developers have already seen this and have
been discussing it. But I am interested in seeing this resolved here
on this list openly and having it resolved. It's sad and unfortunate
to me, but I feel that it's necessary to do this. Identify what's
happening, address it squarely, have the person who is threatening
others explain his/her behavior, deal with the problem and move on.
This seems to be very important. Please tell me if I am wrong about
this or totally flawed in my perspective here. Go right ahead.

In this video, a particular developer makes the following statement,
stating in part:

"My preferred solution is that Gavin revokes commit access from
everyone else in the project, and then... makes the change himself"

Regardless of how you look at this, and even if we believe that Gavin
will not respond to that developer's request for a so-called
"solution," such a statement (by any developer) is indeed both a
threat and an act of sabotage against the larger bitcoin community.
We should certainly be thankful therefore, for the recent policy
change at bitcoin.org which can be seen here:
https://cloud.githubusercontent.com/assets/61096/8173297/578483f8-1399-1
1e5-8f48-96f33d12b996.png

I firmly believe that any developer who made a statement suggesting
that commit access of others in the project be revoked so that they
can proceed with their personal plan, needs to answer for having made
such a suggestion with a formal apology to this list, followed by an
explanation for why they themselves should not have their commit
access removed.

Overall, however, this sort of bombastic, nuclear suggestion makes me
seriously concerned for the future of bitcoin (as well as any
cryptocurrency which has repositories on Github).

So, you know who you are: Apologize for your statement ("preferred
solution") and explain to the community why you should still have
commit access in light of the threat you have made to all the other
developers (and indeed to all participants of the bitcoin community).
These "nuclear options" are unacceptable to us all.

Respectfully,

- -O


- --
http://abis.io ~
"a protocol concept to enable decentralization
and expansion of a giving economy, and a new social good"
https://keybase.io/odinn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVgoc3AAoJEGxwq/inSG8C6QYH/1Ag+4ESTSUPkP8PCTj1AJds
J4MmBz4cX7IYsSttTAjyiwd6oTHCU+wAcXtgZYpzr8rWF62bG5/+kAFUfjKwNsGM
WqcdNOR6h8fQulx8niuro8kZF/xOsG5eHtRK2FMCorxj0t6qn4pH5WAQL73J3hXQ
xI831Nt/L7VTa0jlKbr2/VGlqh6CtGrZ9mXp6aV1MBNwHbFryNBJW9ubvUv/IRxZ
GyJ+c3+Br2KKAQTMsyNn3VXMlXJL6kt0pwwk2od3j/+dKE4pAetHvZ5OgIO+qUWd
6R0/AaoW5jk343TaQ5BHaSpNW+OM9Yc1ycZyqE/YV8JwWeA6G/QdmRVYeoLMCZQ=
=zJeO
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Mike Hearn
2015-06-18 10:00:17 UTC
Permalink
Dude, calm down. I don't have commit access to Bitcoin Core and Gavin
already said long ago he wouldn't just commit something, even though he has
the ability to do so.

So why did I say it? Because it's consistent with what I've always said:
you cannot run a codebase like Wikipedia. Maintainers have to take part in
debates, and then make a decision, and anyone else who was delegated commit
access for robustness or convenience must then respect that decision. It's
the only way to keep a project making progress at a reasonable pace.

This is not a radical position. That's how nearly all coding projects work.
I have been involved with open source for 15 years and the 'single
maintainer who makes decisions' model is normal, even if in some large
codebases subsystems have delegated submaintainers.

This is also how all my own projects are run. Bitcoinj has multiple people
with commit access. Regardless, if there were to be some design dispute or
whatever, I wouldn't tolerate the others with commit access starting some
kind of Wiki-style edit war in the code if they disagreed. Nor would I ever
expect to get my own way in other people's projects by threatening to
revert the maintainers changes.

Core is in the weird position where there's no decision making ability at
all, because anyone who shows up and shouts enough can generate
'controversy', then Wladimir sees there is disagreement and won't touch the
issue in question. So it just runs and runs and *anyone* with commit access
can then block any change.

I realise some people think this anti-process leads to better decision
making. I disagree. It leads to no decision making, which is not the same
thing at all.
Wladimir J. van der Laan
2015-06-18 11:14:09 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Mike Hearn
Core is in the weird position where there's no decision making ability at
all, because anyone who shows up and shouts enough can generate
'controversy', then Wladimir sees there is disagreement and won't touch the
issue in question. So it just runs and runs and *anyone* with commit access
can then block any change.
Bitcoin Core is completely different from your average open source project in one aspect: where it concerns consensus.

Like in any open source project there is lots of decision making ability for code changes. I'd say look at the changelog for e.g. 0.11 https://github.com/bitcoin/bitcoin/blob/0.11/doc/release-notes.md#0110-change-log, or follow pull requests for a while, to see how many decisions about changes are made from day to day. No, I'm not sitting on my hands, and so is none of the other contributors that you'd like to get rid of.

Consensus changes are *much* more difficult, on the other hand. Even relatively straightforward softforks come with a long discussion process (see BIP62, BIP66). A hardfork is hard to do at the best of times (everyone needs to upgrade their software!), and simply not possible if almost the entire technical community disagrees with you.

Bitcoin is supposed to be a robust, global, decentralized network beyond anyone's control. It makes *no sense* to try to run it as a dictatorship. This would create a handy central position where power can be applied, pushing through changes to the behavior of the system, either by force or other ways of motivation. I refuse to take part in that.

Hence, anything that is controversial needs to be considered really carefully. If I suddenly start making changes to the consensus code without full agreement, by all means take away my commit privileges.

(a major reason for the ongoing libconsensus work is to separate "Bitcoin Core, the node software" and "The Bitcoin Consensus" along clear lines, to avoid this kind of nasty confusion)

Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCgAGBQJVgqfOAAoJEHSBCwEjRsmmFT8H/Rkm29AhLhT8R1Vx8oKUIzID
+NB7tOps3lIilkDQIC5zHSknx5iugrrAdRf1w7qPj/o8+xhCZw9ruu8eIq+djkRQ
tvzbHil2pqgT3VHriRlY4lvlmu2NmBcYrAuX9sDhUHBo6cwGajfKMJPfE0haK3K4
7EmfdGXJYJmiBnhE6ikOiU687M2WgsmIGrBDIxeA5wYwVK9Ph8hfcbuj7AHvIMI9
ZNU/V6uhcTjn5wT+6DHGIOxHipYHyAwKb7jKho0XkM6Yi4ORe1mxF5HDtqA0ztta
mZPNjNrt/ngK20xRbqkb0GtxoyZq38ZF3Bq1gaWl2v9MBBMD5ZxQAvgCNUQFEo0=
=W26K
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Wladimir J. van der Laan
2015-06-18 11:47:59 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Mike Hearn
Core is in the weird position where there's no decision making ability at
all, because anyone who shows up and shouts enough can generate
'controversy', then Wladimir sees there is disagreement and won't touch the
issue in question. So it just runs and runs and *anyone* with commit access
can then block any change.
And allegations that the project is "run like wikipedia" or "an edit war" are verifyably untrue.
Check the commit history.
How many reverts do you see? How many of those do you see that are not simply to get rid of unexpected bugs, to be re-merged later?

Not much more than two, in ~5500 commit over six years. I feel sorry for you that `getutxos` was rejected in a messy way, still you are so held up about it and keep repeating it as if it is a daily occurence. Disingenuous, at the least.

Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCgAGBQJVgq/WAAoJEHSBCwEjRsmm8NUIAI/csucOmfF9e+BtSH+uruhl
ox32stQfD3hwcKropLEPFfKvmOcRU1nXBy6lcvhG+axw+WqpC48EvpD73P/BuSv7
RvlLayqP+D6oiNsH+7S7C0/ndy+Pne04D+srSSBhXKfZMqruBqmUSontziJZTeLR
C6CCFwFSAvSXGV873I3i4M4U5QqIrE5PyuK75wjl2SFisd2LjBgfzZh4HDbz85Qr
gApLpdTxu4gDkGx4B9txCkfyb5W2z8nawWYb7+O7y/NbFL1Qlb36MzGuVKL6Zj1z
B8kJrOLVW9ItduVRY/03wLsqBuGC9fjuhWexjKenvMpxfO//VvOxIBA7sCDrxjU=
=lisE
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Mike Hearn
2015-06-18 13:36:53 UTC
Permalink
Post by Wladimir J. van der Laan
And allegations that the project is "run like wikipedia" or "an edit war"
are verifyably untrue.
Check the commit history.
This was a reference to a post by Gregory on Reddit where he said if Gavin
were to do a pull request for the block size change and then merge it, he
would revert it. And I fully believe he would do so!
Gregory Maxwell
2015-06-18 15:58:31 UTC
Permalink
Post by Mike Hearn
Post by Wladimir J. van der Laan
And allegations that the project is "run like wikipedia" or "an edit war"
are verifyably untrue.
Check the commit history.
This was a reference to a post by Gregory on Reddit where he said if Gavin
were to do a pull request for the block size change and then merge it, he
would revert it. And I fully believe he would do so!
http://www.reddit.com/r/Bitcoin/comments/37pv74/gavin_andresen_moves_ahead_with_push_for_bigger/croxw9o?context=1

This is the only reddit comment I've made using the word revert in
recent memory, so I know you couldn't be referring to another.
Post by Mike Hearn
Post by Wladimir J. van der Laan
I was recently in a situation similar to what Gavin is in insofar as a design dispute that could improperly solved by a git push. I'm pretty impressed he hasn't given in and done a midnight push. It's cool to see him back channeling support.
Such a change would be immediately reverted.
And, I probably should have continued "and resulted with an immediate
revocation of commit rights on the assumption that his account had
been compromised."

There is nothing controversial about that.

------------------------------------------------------------------------------
Pieter Wuille
2015-06-18 12:29:42 UTC
Permalink
Post by Wladimir J. van der Laan
Like in any open source project there is lots of decision making ability
for code changes. I'd say look at the changelog for e.g. 0.11
https://github.com/bitcoin/bitcoin/blob/0.11/doc/release-notes.md#0110-change-log,
or follow pull requests for a while, to see how many decisions about
changes are made from day to day. No, I'm not sitting on my hands, and so
is none of the other contributors that you'd like to get rid of.
The analogy goes further even. Even though I disagree with some of the
changes you're making, I respect Mike's (and anyone's) right to make a fork
of Bitcoin Core. That's how open source works: if people disagree with
Post by Wladimir J. van der Laan
Consensus changes are *much* more difficult, on the other hand. Even
relatively straightforward softforks come with a long discussion process
(see BIP62, BIP66). A hardfork is hard to do at the best of times (everyone
needs to upgrade their software!), and simply not possible if almost the
entire technical community disagrees with you.
Consensus changes - in particular hardforks - are not about making a change
to the software. You are effectively asking users of the system to migrate
to a new system. Perhaps one which is a philosophical successor to the old
one, but a different system, with new rules that are incompatible with the
old one.

I believe this is something that can only be done if there is no
controversy about the change, for different reasons:

* Risk: no matter how you determine the switchover date, there is no way of
knowing when (and whether at all) everyone changes their full nodes (and
perhaps other software), and even very high hash power votes cannot prevent
an actual fork from appearing afterwards. At best, people lose the
guarantee that their confirmations are meaningful (because at some point it
becomes clear that the other side will get adopted, and they need to
switch). At worst, a fork persists, and two partitions appear, in each of
which you can spend every pre-existing coin. This defeats the primary
purpose Bitcoin was designed for: double spend protection.

* Philosophy: Bitcoin is not a democracy. The full node security model is
designed to minimize trust in other parties in the system. This works by
validating as much as possible according to the consensus rules. In
particular, there is no "majority vote" that can override things (contrary
to what some people think, it is not "longest chain wins, and a majority of
miners decide"; even a majority of miners cannot steal your coins or
produce more than the allowed subsidy, unless they convince others to
change their software). Changing the rules should be possible if there is
wide consensus, but nobody should feel forced to change their code against
their will.

* Governance: being able to push for a controversial change to the system
sets an incredibly dangerous precedent about who is in charge of the
system's rules. What if next time it is a change demanded by parties with
less good intentions (and yes, I believe people in this discussions all
have good intentions to improve the system in a way they think is most
useful)? I can promise you that I will say anything in mail to this list if
someone points a gun at me, and I think you should make the same assumption
about other people here. By avoiding controversial changes, you avoid
external and potentially invisible manipulation.

Of course, sometimes changes to the consensus rules may be wanted. The
presence of a bug is a good reason, and widespread agreement about one of
the system's limitation is too. As I said before, I think technological
growth in network bandwidth, processing power, and storage, are a good
reason why the system should be able to scale proportionally. I think there
are good technical and economic reasons why we should be cautious about
this, but the primary requirement is consensus, and aligning people's
expectation about what they can expect from network's evolution.
--
Pieter
Wladimir J. van der Laan
2015-06-18 12:50:17 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Pieter Wuille
Post by Wladimir J. van der Laan
Like in any open source project there is lots of decision making ability
for code changes. I'd say look at the changelog for e.g. 0.11
https://github.com/bitcoin/bitcoin/blob/0.11/doc/release-notes.md#0110-change-log,
or follow pull requests for a while, to see how many decisions about
changes are made from day to day. No, I'm not sitting on my hands, and so
is none of the other contributors that you'd like to get rid of.
The analogy goes further even. Even though I disagree with some of the
changes you're making, I respect Mike's (and anyone's) right to make a fork
of Bitcoin Core. That's how open source works: if people disagree with
Sure. According to github, there exist 4890 forks of the bitcoin/bitcoin repository.

Forking the code is perfectly fine in itself, that doesn't even need to be said, it's how open source works. Make your changes, run your own version, contribute back the changes (or not).

And I never had a problem with Bitcoin-XT while it was just a patch-set with no consensus changes. But a controversial hard fork of the chain is something else completely.

Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCgAGBQJVgr5LAAoJEHSBCwEjRsmm5mMH/0yLGGQQefRVdmM/nJZ60b/z
iTCUUzY4eLL67FRC6pqGA18RdUt4Etl4wEqvgXH/B9mWIAM2yQD/jnxutYrEIoBT
8Jyd1OhmmKF8MN5/uE7JNPivIuHs0ioF+qTxlbdElpVZ2NodVotznbTvuqJgXUFb
c9Et5L5n7g55uPzDt+MSV5iBDJaMiBAnZA00aTLGmYmNXxcy7xBwCFX3dDij8krv
0+zdpNNAKm85k1rG2jHCM+0onu+TOIur03pPd5OZktgr18P6UvAQ6A59yAkGgFai
4l6VVNJ40g3PzItGQ7wsKZ8s/qG5LlcEppxMlG6CX1dIDpxbrwx2aJmeNjwSLKQ=
=LbA3
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Benjamin
2015-06-18 12:56:32 UTC
Permalink
"And I never had a problem with Bitcoin-XT while it was just a
patch-set with no consensus changes. But a controversial hard fork of
the chain is something else completely."

How is that different? The only difference is in who makes the fork
and if that group has a chance of actually splitting/overriding the
network. So Mike and Gavin are using the trust and relationship they
have garnered through Bitcoin for their purposes (malicious or not).
There are only 20-30 people with the same kind of recognition who
would be able to do that. M&G already wanted to make a fork in 2014
for entirely different reasons (http://pastebin.com/3kt5Reeh).

On Thu, Jun 18, 2015 at 2:50 PM, Wladimir J. van der Laan
Post by odinn
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Pieter Wuille
Post by Wladimir J. van der Laan
Like in any open source project there is lots of decision making ability
for code changes. I'd say look at the changelog for e.g. 0.11
https://github.com/bitcoin/bitcoin/blob/0.11/doc/release-notes.md#0110-change-log,
or follow pull requests for a while, to see how many decisions about
changes are made from day to day. No, I'm not sitting on my hands, and so
is none of the other contributors that you'd like to get rid of.
The analogy goes further even. Even though I disagree with some of the
changes you're making, I respect Mike's (and anyone's) right to make a fork
of Bitcoin Core. That's how open source works: if people disagree with
Sure. According to github, there exist 4890 forks of the bitcoin/bitcoin repository.
Forking the code is perfectly fine in itself, that doesn't even need to be said, it's how open source works. Make your changes, run your own version, contribute back the changes (or not).
And I never had a problem with Bitcoin-XT while it was just a patch-set with no consensus changes. But a controversial hard fork of the chain is something else completely.
Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBCgAGBQJVgr5LAAoJEHSBCwEjRsmm5mMH/0yLGGQQefRVdmM/nJZ60b/z
iTCUUzY4eLL67FRC6pqGA18RdUt4Etl4wEqvgXH/B9mWIAM2yQD/jnxutYrEIoBT
8Jyd1OhmmKF8MN5/uE7JNPivIuHs0ioF+qTxlbdElpVZ2NodVotznbTvuqJgXUFb
c9Et5L5n7g55uPzDt+MSV5iBDJaMiBAnZA00aTLGmYmNXxcy7xBwCFX3dDij8krv
0+zdpNNAKm85k1rG2jHCM+0onu+TOIur03pPd5OZktgr18P6UvAQ6A59yAkGgFai
4l6VVNJ40g3PzItGQ7wsKZ8s/qG5LlcEppxMlG6CX1dIDpxbrwx2aJmeNjwSLKQ=
=LbA3
-----END PGP SIGNATURE-----
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
------------------------------------------------------------------------------
Mike Hearn
2015-06-18 13:49:06 UTC
Permalink
Hi Pieter,

I believe Gavin plans to write a blog post about the hard fork process, but
I'd like to debate this with you now, if only to give him material to work
with :)

Your points look to me like the hard/soft fork debate in different clothes.

For example, we all agree that the rules of Bitcoin *can* be changed, and
have been before (e.g. P2SH), with software upgrades.

When such a fork happens, any user who does not upgrade their node isn't
fully verifying the block chain anymore. Their software might *think* it
is, but it's running NOPs that don't mean NOP to other nodes. So there is a
divergence in the consensus, it's merely been done in such a way that the
node won't stop and print "hard fork detected" to the logs. It'll happily
accept a block that violates the new rules, then wait to be corrected by
miners.

So with any fork, hard or soft, there is risk to those who don't upgrade.
They may accept a block, or even two blocks, that they believe are valid
according to their old rule set, but which other miners would reject. The
effect on double spending is much the same.

Now let's talk philosophy.

* Philosophy: Bitcoin is not a democracy.
This appears to be a key point of dispute. Bitcoin is a democracy, though
the analogy is not perfect. You can certainly believe whatever you like
about the true state of the ledger, but rubber hits the road the moment you
go and trade with other people.

If 90% of the people you trade with believe a coin exists, and you don't,
you're gonna discover you keep getting paid with that coin and its
descendents. You may hate it, you may feel your rights are being violated,
you may refuse to trade with those people but it will keep happening.

Money is about trade, and trade inherently involves the decisions of other
people. No man is an island.

With Bitcoin we have a great way to quickly find out what other people
believe about the ledger. If the vast majority of people are on ledger A
and you're on ledger B, then you've got a strong incentive to come into
line with the majority in order to keep trading.
Changing the rules should be possible if there is wide consensus, but
nobody should feel forced to change their code against their will.
Nobody, not even after a hard fork, is *forced* to change their code
against their will. It may be something that *other people require* as part
of trading with them though. Whether one considers this "forced" or not I
guess can be argued either way. Are you "forced" to buy oranges from the
single orange seller in town if the other goes bankrupt, or could you just
avoid oranges? Where does economic freedom begin and end?
* Governance: being able to push for a controversial change to the system
sets an incredibly dangerous precedent about who is in charge of the
system's rules.
I think it's surely the opposite - *not* being able to push for
controversial changes sets an incredibly dangerous precedent. Namely,
whoever gets to decide that a change is controversial gets to veto anything
they like!
I can promise you that I will say anything in mail to this list if someone
points a gun at me
Indeed, me too! But it's worse than that: what if someone sockpuppets a
discussion to make it look like a change does or does not have consensus?

One reason I keep banging on about *process* and how Wladimir needs to be
The Decider is that the current attempt at "process" is so vague, not only
is it unexplainable, but it's wide open to manipulation.

Good thing we have a way to resolve this problem: the block chain. Now it
doesn't matter if someone points a gun at you or me. We can object to
whatever we like and that wouldn't bring Bitcoin to a halt, thus removing
the incentive to try and pressure individuals.

But if we don't have that ability to vote through choice of software and
rulesets, then us poor developers really are in charge and that's not a
place any of us should want to go. There must be a mechanism for people to
disagree with the consensus, even in major, controversial ways, and that
mechanism must have real force to it.
Wladimir J. van der Laan
2015-06-18 14:05:45 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Mike Hearn
One reason I keep banging on about *process* and how Wladimir needs to be
The Decider is that the current attempt at "process" is so vague, not only
is it unexplainable, but it's wide open to manipulation.
It looks as if you entirely missed my point. I'm The Decider for *code issues* regarding Bitcoin Core. Consensus issues should not be considered part of that, they span multiple implementations.

So I'm *not* the decider for anything that concerns the behavior of the global consensus, and I cannot be, as I have explained in the previous post, and as Sipa explained in his.

Speaking of process, let me remind you that there is a BIP processs: https://github.com/bitcoin/bips/blob/master/bip-0001.mediawiki

If you think it's not clear enough, which may explain why you did not even attempt to follow it for your block size increase, feel free to make improvements.

Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCgAGBQJVgtAOAAoJEHSBCwEjRsmmLPUH/1ug5pvLz6ptIhvuROclV7Jh
z0Szk5FOqfg4ejT3nYV5LRV5WNHUGDdFnHZJRFsKYH9B0LFgOlnkc488Qg6hBb+1
rf5zEF/D2X4MhPIx6GqI++gvhDzdBH2t9yxbU7LVZALo7+wtW+ms5eHHFs8WrU0z
m7NgiZRen4cpQUiBWHlt0PojmXBVZQNU0CD6ErcOpQXhN8J0sb0l0DuFswQgUqxk
rrNe3LvKp89xT0kDxyzQts/CeIG/8kQYLwIJ1QQDXvYayj2aHHYMkSEWfDlew3IC
zQkFgHCTGihGHPFeow+dnuW1DI1l92yPYNDLbxivSam3X+qCAGzUTOWTFE+iprk=
=tE4K
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Mike Hearn
2015-06-18 14:16:51 UTC
Permalink
Post by Wladimir J. van der Laan
If you think it's not clear enough, which may explain why you did not even
attempt to follow it for your block size increase, feel free to make
improvements.
As the outcome of a block size BIP would be a code change to Bitcoin Core,
I cannot make improvements, only ask for them. Which is what I'm doing.

I agree that BIP 1 is not clear enough. Gavin is writing a BIP to accompany
his patch, because BIPs are best when they describe working code, and BIP 1
*is* at least clear about that. Otherwise it can turn out during
implementation that something was different to what was anticipated. I'm
sure you agree with this.

So a BIP is coming. However, BIP 1 also says this:

Vetting an idea publicly before going as far as writing a BIP is meant to
Post by Wladimir J. van der Laan
save the potential author time
and

BIP authors are responsible for collecting community feedback on a BIP
Post by Wladimir J. van der Laan
before submitting it for review
OK. Gavin has been vetting the idea publicly and collecting community
feedback. Note that the entire Bitcoin community is not on this list, so he
published a series of blog posts to get wider feedback, and then was
criticised for not doing it all here instead.

But anyway - so far, so good. The procedure is being followed.

What happens once a BIP is written? The process says:

For a BIP to be accepted it must meet certain minimum criteria. It must be
Post by Wladimir J. van der Laan
a clear and complete description of the proposed enhancement. The
enhancement must represent a net improvement. The proposed implementation,
if applicable, must be solid and must not complicate the protocol unduly.
Once a BIP has been accepted, the reference implementation must be
completed.
This is where the problem starts.

The BIP process you refer to *does not state how acceptance will happen*.
It merely sets out a few minimum requirements like making some sort of
sense, having code. It's also full of extremely vague descriptions like
"must represent a net improvement". Improvement according to who? That's
left unexplained.

And then it says what happens once a BIP is accepted.

The middle bit is missing. When there is disagreement over a consensus BIP,
how are decisions made?
Milly Bitcoin
2015-06-18 14:53:22 UTC
Permalink
Post by Wladimir J. van der Laan
So I'm *not* the decider for anything that concerns the behavior of
the global consensus, and I cannot be, as I have explained in the
previous post.

The person who decides if a pull request is accepted is a decider and
significantly affects the behavior of the global consensus. The only
option for someone who doesn't agree is to hard fork. There is no way
around that and you should just accept that fact and move on.

Russ


------------------------------------------------------------------------------
Jeff Garzik
2015-06-18 14:56:33 UTC
Permalink
Post by Wladimir J. van der Laan
Post by Wladimir J. van der Laan
So I'm *not* the decider for anything that concerns the behavior of
the global consensus, and I cannot be, as I have explained in the
previous post.
The person who decides if a pull request is accepted is a decider and
significantly affects the behavior of the global consensus. The only
option for someone who doesn't agree is to hard fork. There is no way
around that and you should just accept that fact and move on.
Impacts, yes, decider, no. Multiple ACKs are required from developers who
will not act if the community will disagree with the change.

The users ultimately choose by deciding which software to download, and
that dictates the range of choices available.
--
Jeff Garzik
Bitcoin core developer and open source evangelist
BitPay, Inc. https://bitpay.com/
Milly Bitcoin
2015-06-18 15:13:41 UTC
Permalink
Post by Jeff Garzik
Impacts, yes, decider, no. Multiple ACKs are required from developers
who will not act if the community will disagree with the change.
Post by Jeff Garzik
The users ultimately choose by deciding which software to download,
and that dictates the range of choices available.

That is what I mean by a cultish reply. Just saying the users
ultimately decide is not an adequate explanation of the situation. You
are talking hard fork if someone doesn't like it. If 10% of the users
don't like there is nothing they can do unless they want to operate an
altcoin. You are not going to resolve anything by repeating these types
of replies that really have no applicability in the real world. The
person who approves the pull request (no matter what the process is
beforehand) is effectively the decider.

Also, as pointed out, there is no real process in place. Making
offhand statements that "multiple ACKs are required" without describing
a real process just sends people down a rat hole like this block size
debate. Providing these (non) answers instead of developing a real
process is why there is so much contention now.

Russ


------------------------------------------------------------------------------
Jeff Garzik
2015-06-18 14:53:24 UTC
Permalink
On Thu, Jun 18, 2015 at 1:14 PM, Wladimir J. van der Laan <
Post by Wladimir J. van der Laan
Like in any open source project there is lots of decision making ability
for code changes. I'd say look at the changelog for e.g. 0.11
https://github.com/bitcoin/bitcoin/blob/0.11/doc/release-notes.md#0110-change-log,
or follow pull requests for a while, to see how many decisions about
changes are made from day to day. No, I'm not sitting on my hands, and so
is none of the other contributors that you'd like to get rid of.
The analogy goes further even. Even though I disagree with some of the
changes you're making, I respect Mike's (and anyone's) right to make a fork
of Bitcoin Core. That's how open source works: if people disagree with
Post by Wladimir J. van der Laan
Consensus changes are *much* more difficult, on the other hand. Even
relatively straightforward softforks come with a long discussion process
(see BIP62, BIP66). A hardfork is hard to do at the best of times (everyone
needs to upgrade their software!), and simply not possible if almost the
entire technical community disagrees with you.
Consensus changes - in particular hardforks - are not about making a
change to the software. You are effectively asking users of the system to
migrate to a new system. Perhaps one which is a philosophical successor to
the old one, but a different system, with new rules that are incompatible
with the old one.
Indeed. I think Mike is glossing over this major facet.

Consensus changes - worded another way - change Bitcoin's Constitution -
The Rules that everyone in the system is -forced- to follow, or be ignored
by the system.

Changing bitcoin's rules IS IN NO WAY like Wikipedia or other open source
software.
--
Jeff Garzik
Bitcoin core developer and open source evangelist
BitPay, Inc. https://bitpay.com/
j***@riseup.net
2015-06-18 16:07:44 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Jeff Garzik
Consensus changes - worded another way - change Bitcoin's Constitution -
The Rules that everyone in the system is -forced- to follow, or be ignored
by the system.
Force is not a helpful or accurate way to describe the situation.

The purpose of Bitcoin to let people trade with each other, and trade
requires mutual agreement.

If some people choose not to trade under certain terms, they aren't
"forcing" anybody to do anything. They are simply refraining from
proposed interactions. Not granting them the right to do this would
actually be forcing them to engage in interactions against their will.

It's an unavoidable reality that Bitcoin's usefulness is related to the
size (really: economic output) of the group of people who can be
convinced that it's in their best interest to agree on a common trade
protocol.

Conversations that feature untrue claims about someone forcing someone
else to do something is the opposite of a viable strategy for growing
the size of that group.

Arguments about who violated what Bitcoin Core internal governance
procedures are not interesting to most Bitcoin users, who generally
don't know or care who has commit access to the repository.

Getting angry at Gavin and Mike for providing Bitcoin users with an
alternative which they can freely choose or reject is not helpful in
persuading users to stay with Bitcoin Core. Making the case why the
changes in Bitcoin XT are not beneficial to Bitcoin users could be.

For better or for worse, Bitcoin coin users are going to run the
software they perceive to be in their best interests. Nobody can stop
them from making that choice and any effort directed at that end is
wasted.

It's more productive to expend effort making sure the current and future
Bitcoin users are as informed as possible about the long term and short
term consequences of their choices.
Post by Jeff Garzik
Consensus changes - worded another way - change Bitcoin's Constitution -
The Rules that everyone in the system is -forced- to follow, or be ignored
by the system.
Bitcoin does not and can not function as a set of rules imposed by some
people onto other people. Bitcoin is a negotiation about the best way
for money to function in the future. The only way we get people to use
Bitcoin is to convince them that the benefits they gain from agreeing to
its protocol outweigh the downsides they encounter.

I'm confident that this case can be made successfully but a prerequisite
to a successful negotiation is recognizing that it is, in fact, a
negotiation, and that the other parties have full agency and the right
to walk away if mutual agreement is not reached.

My suggestion is to spend less time talking about procedural violations
and more time convincing Bitcoin users that Bitcoin Core is the best
client for them to use, especially if the process of convincing them
involves making improvements which the users are asking for (or making a
very compelling case about why the users should reconsider).

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCgAGBQJVguyLAAoJECpf2nDq2eYjTPgP/A16QGWSWkh50OhSjHx7hdY5
v0ZqNvfKSm6a94o22yTQF8VZm7NEJJcNY0Vvu1ro95v27Bm37VodGGOXh4ao9gYQ
ETdzX35OLWUua1e9kfEwgo2Uu2l9AdALOLK5IHyLZdtxJQwUhcdeIhaSMzlZqgEk
n+gbAZXV7JdnK+oejh5s8zgfOY3MqhZC3TQBVWHWx0K0CE75rm0j4ZShYL2eKOua
CmWkcEkfeugrnQQv/BB+oe1TAJoHY4bZAr+amYLZMiC8wRcGGeVBOOFykLNd4rSV
DE+iiGHmgi/wrZjy/xT5kflX55GE8NNVjM2MMNOyD+gWbBn5INahya+DkDWupeQB
iy71NQQVnB/5U5Yhm/oVUax+Cjj/7001cf1q2rXPcjE+4ntw5ad9oCuRW3kSUpzq
C0LqEN2lbagrmk/xHSv/GQl+iWulD1mXJl63y3LdXYWno67eVYqzvRK0UB7ZSVww
3P7p8h2yuvtPtAUDyoOPn7Ghyd1U1lJWGsyffRzd2hWhEYs44cfAv6S2QWIBWbm5
j8C2ao7m6j2mirRZem+bGrN8idR/fOUIjnwqQmNIObsviMrvgXlHvORjsBcdHoKO
9Ir8CvqGWftIG5lLCJvjsnP8E3MRToo6pOsD/Ii9223Pn6DxsMvXF+IkZzUJfWDR
W+t/BYV6XtsAUKI+dAly
=3KeB
-----END PGP SIGNATURE-----


------------------------------------------------------------------------------
Jeff Garzik
2015-06-18 16:28:43 UTC
Permalink
Post by j***@riseup.net
Post by Jeff Garzik
Consensus changes - worded another way - change Bitcoin's Constitution -
The Rules that everyone in the system is -forced- to follow, or be ignored
by the system.
Bitcoin does not and can not function as a set of rules imposed by some
people onto other people.
This is an engineering list. The quote precisely describes how the bitcoin
consensus system functions.

Users' choice is largely binary: Follow the rules, or bitcoin software
ignores you.
--
Jeff Garzik
Bitcoin core developer and open source evangelist
BitPay, Inc. https://bitpay.com/
j***@riseup.net
2015-06-18 17:04:54 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Jeff Garzik
This is an engineering list. The quote precisely describes how the bitcoin
consensus system functions.
Users' choice is largely binary: Follow the rules, or bitcoin software
ignores you.
Software engineers should understand that they have a binary choice:
produce the software that your customers want, or the world will ignore
your software.

There is *no inherent value* to Bitcoin's software rules. The only value
that is exists is that produced by the individuals who voluntarily
choose to run the software.

Failing to account for all design requirements is bad engineering.
Nobody cares about the design features of a bridge to nowhere.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQIcBAEBCgAGBQJVgvoDAAoJECpf2nDq2eYj0h4P/0YaTsS963qpb63zvB6WlIPS
2lhCJ9FtAd3II5Et+5c/cisfJ9YI2OnM0y8nQpyB9NEOeueN1L1sLFcayE5aHASd
EgF7F81AhQD2iSIVwQNs2qAzrZNC2/Nx+nBzBDcrgZ6gRiPpQdsNLy2p0OuZdOgX
yG4xl6tKADB2kNi6tVPtZqUC300uQHvggtm+pexYilT0ojEbeVHCoDV40MNDZC2h
1kcdTnGU2SHJJqeZN2vChJCOMfhmK4JwKgoz7JRXe/GHkUUJKriE6Kb7SVczii9e
9qfcosbnR3gjATMoHFYuJX/nsUx52Q1LM9eQgvE8Ml+6Mim5bj2KCJFh7YISxSq9
FhDujfZFCRRQLPJCSkEUePxU/LS7lmoTZXYl3Zz1j9zbq4ncpRHpIFy9QX6iIqK6
Dursnge9ELQwB+H6HoosWRzxOZyo+oiGj17OngJvZYcvzrc2wjHbpZfVqSkmZepU
SfJZ64O7yjjXjITwhOc4XF2drzvhsjTsHH5BIwdbCn82SoCkJIwXraj7sxIundli
LUJBPiAE0csdmsvW/2kkxLsd9JwTw9lJ9Pf8fiqH3itgrkPkO5mf10DPPnay1SNk
Wnm1bAJ05WnKXSo0m0SzaFgZkdfFuhWR4fieSzhLpa+s/HHj18NZvJCmCBR6ic9G
0A+51wwSZnAdMIw7lwIb
=r4Co
-----END PGP SIGNATURE-----


------------------------------------------------------------------------------
Alex Morcos
2015-06-18 17:42:10 UTC
Permalink
Let me take a pass at explaining how I see this.

1) Code changes to Bitcoin Core that don't change consensus: Wladimir is
the decider but he works under a process that is well understood by
developers on the project in which he takes under reasonable consideration
other technical opinions and prefers to have clear agreement among them.

2) Changes to the consensus rules: As others have said, this isn't anyone's
decision for anyone else. It's up to each individual user as to what code
they run and what rules they enforce. So then why is everyone so up in
arms about what Mike and Gavin are proposing if everyone is free to decide
for themselves? I believe that each individual user should adhere to the
principle that there should be no changes to the consensus rules unless
there is near complete agreement among the entire community, users,
developers, businesses miners etc. It is not necessary to define complete
agreement exactly because every individual person decides for themselves.
I believe that this is what gives Bitcoin, or really any money, its value
and what makes it work, that we all agree on exactly what it is. So I
believe that it is misleading and bad for Bitcoin to tell users and
business that you can just choose without concern for everyone else which
code you'll run and we'll see which one wins out. No. You should run the
old consensus rules (on any codebase you want) until you believe that
pretty much everyone has consented to a change in the rules. It is your
choice, but I think a lot of people that have spent time thinking about the
philosophy of consensus systems believe that when the users of the system
have this principle in mind, it's what will make the system work best.

3) Code changes to Core that do change consensus: I think that Wladimir,
all the other committers besides Gavin, and almost all of the other
developers on Core would defer to #2 above and wait for its outcome to be
clear before considering such a code change.

I'm sure my description of point 2 is not the most eloquent or clear, but
maybe someone else can try to elucidate this principle if they've grasped
what I'm trying to say.
Post by odinn
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Jeff Garzik
This is an engineering list. The quote precisely describes how the bitcoin
consensus system functions.
Users' choice is largely binary: Follow the rules, or bitcoin software
ignores you.
produce the software that your customers want, or the world will ignore
your software.
There is *no inherent value* to Bitcoin's software rules. The only value
that is exists is that produced by the individuals who voluntarily
choose to run the software.
Failing to account for all design requirements is bad engineering.
Nobody cares about the design features of a bridge to nowhere.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAEBCgAGBQJVgvoDAAoJECpf2nDq2eYj0h4P/0YaTsS963qpb63zvB6WlIPS
2lhCJ9FtAd3II5Et+5c/cisfJ9YI2OnM0y8nQpyB9NEOeueN1L1sLFcayE5aHASd
EgF7F81AhQD2iSIVwQNs2qAzrZNC2/Nx+nBzBDcrgZ6gRiPpQdsNLy2p0OuZdOgX
yG4xl6tKADB2kNi6tVPtZqUC300uQHvggtm+pexYilT0ojEbeVHCoDV40MNDZC2h
1kcdTnGU2SHJJqeZN2vChJCOMfhmK4JwKgoz7JRXe/GHkUUJKriE6Kb7SVczii9e
9qfcosbnR3gjATMoHFYuJX/nsUx52Q1LM9eQgvE8Ml+6Mim5bj2KCJFh7YISxSq9
FhDujfZFCRRQLPJCSkEUePxU/LS7lmoTZXYl3Zz1j9zbq4ncpRHpIFy9QX6iIqK6
Dursnge9ELQwB+H6HoosWRzxOZyo+oiGj17OngJvZYcvzrc2wjHbpZfVqSkmZepU
SfJZ64O7yjjXjITwhOc4XF2drzvhsjTsHH5BIwdbCn82SoCkJIwXraj7sxIundli
LUJBPiAE0csdmsvW/2kkxLsd9JwTw9lJ9Pf8fiqH3itgrkPkO5mf10DPPnay1SNk
Wnm1bAJ05WnKXSo0m0SzaFgZkdfFuhWR4fieSzhLpa+s/HHj18NZvJCmCBR6ic9G
0A+51wwSZnAdMIw7lwIb
=r4Co
-----END PGP SIGNATURE-----
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
Milly Bitcoin
2015-06-18 18:01:01 UTC
Permalink
Post by Alex Morcos
2) Changes to the consensus rules: As others have said, this isn't
anyone's decision for anyone else. It's up to each individual user as
to what code they run and what rules they enforce. So then why is
everyone so up in arms about what Mike and Gavin are proposing if
everyone is free to decide for themselves?

Because the notion that people are free to decide for themselves is just
a rough approximation of the real world situation. If your software
does not agree with merchants and exchanges you can't pay your bills and
if Bitcoin splits the exchange rate could plummet and damage the
ecosystem. People are free to decide within the constraints of the
Bitcoin system.

Russ


------------------------------------------------------------------------------
Gavin Andresen
2015-06-18 18:23:33 UTC
Permalink
Post by Alex Morcos
Let me take a pass at explaining how I see this.
1) Code changes to Bitcoin Core that don't change consensus: Wladimir is
the decider but he works under a process that is well understood by
developers on the project in which he takes under reasonable consideration
other technical opinions and prefers to have clear agreement among them.
Yes.

2) Changes to the consensus rules: As others have said, this isn't anyone's
Post by Alex Morcos
decision for anyone else.
Yes.
Post by Alex Morcos
It's up to each individual user as to what code they run and what rules
they enforce. So then why is everyone so up in arms about what Mike and
Gavin are proposing if everyone is free to decide for themselves? I
believe that each individual user should adhere to the principle that there
should be no changes to the consensus rules unless there is near complete
agreement among the entire community, users, developers, businesses miners
etc. It is not necessary to define complete agreement exactly because every
individual person decides for themselves. I believe that this is what
gives Bitcoin, or really any money, its value and what makes it work, that
we all agree on exactly what it is. So I believe that it is misleading and
bad for Bitcoin to tell users and business that you can just choose without
concern for everyone else which code you'll run and we'll see which one
wins out. No. You should run the old consensus rules (on any codebase you
want) until you believe that pretty much everyone has consented to a change
in the rules. It is your choice, but I think a lot of people that have
spent time thinking about the philosophy of consensus systems believe that
when the users of the system have this principle in mind, it's what will
make the system work best.
I don't think I agree with "pretty much everybody", because status-quo bias
is a very powerful thing. Any change that disrupts the way they've been
doing things will generate significant resistance -- there will be 10 or
20% of any population that will take a position of "too busy to think about
this, everything seems to be working great, I don't like change, NO to any
change."

For example, I think some of the resistance for bigger blocks is coming
from contributors who are worried they, personally, won't be able to keep
up with a bigger blockchain. They might not be able to run full nodes from
their home network connections (or might not be able to run a full node AND
stream Game of Thrones), on their old raspberry pi machines.

The criteria for me is "clear super-majority of the people and businesses
who are using Bitcoin the most," and I think that criteria is met.
Post by Alex Morcos
3) Code changes to Core that do change consensus: I think that Wladimir,
all the other committers besides Gavin, and almost all of the other
developers on Core would defer to #2 above and wait for its outcome to be
clear before considering such a code change.
Yes, that's the way it has mostly been working. But even before stepping
down as Lead I was starting to wonder if there are ANY successful open
source projects that didn't have either a Benevolent Dictator or some clear
voting process to resolve disputes that cannot be settled with "rough
consensus."
--
--
Gavin Andresen
Alex Morcos
2015-06-18 18:44:14 UTC
Permalink
Not that I know how to do this, but would you be willing to attempt some
other method of measuring just how much of a "super-majority" we have
before deploying code? Maybe that information would be helpful for
everyone. Obviously such a poll couldn't be perfect, but maybe better than
the information we have now.

A) I don't believe we should consider changing the 1 MB limit now
B) I conceptually believe in increasing block size, but would like to
follow a more conservative process and wait to see if a stronger technical
consensus on a plan to do so can develop.
C) I'd like to go along with Gavin and Mike's 8MB proposal (maybe we wait
til this is fully specified, but again not deployed)

Perhaps there can even be 4 polls:
Miners can vote in coinbases
Known corporate entities can announce their vote
Does the Bitcoin Foundation infrastructure still exist to represent some
authenticated (I think) set of individuals
A reddit poll

I don't even know if I think this is a good idea, but just trying to find a
way to move forward where more of us are on the same page.
Post by Alex Morcos
Post by Alex Morcos
Let me take a pass at explaining how I see this.
1) Code changes to Bitcoin Core that don't change consensus: Wladimir is
the decider but he works under a process that is well understood by
developers on the project in which he takes under reasonable consideration
other technical opinions and prefers to have clear agreement among them.
Yes.
2) Changes to the consensus rules: As others have said, this isn't
Post by Alex Morcos
anyone's decision for anyone else.
Yes.
Post by Alex Morcos
It's up to each individual user as to what code they run and what rules
they enforce. So then why is everyone so up in arms about what Mike and
Gavin are proposing if everyone is free to decide for themselves? I
believe that each individual user should adhere to the principle that there
should be no changes to the consensus rules unless there is near complete
agreement among the entire community, users, developers, businesses miners
etc. It is not necessary to define complete agreement exactly because every
individual person decides for themselves. I believe that this is what
gives Bitcoin, or really any money, its value and what makes it work, that
we all agree on exactly what it is. So I believe that it is misleading and
bad for Bitcoin to tell users and business that you can just choose without
concern for everyone else which code you'll run and we'll see which one
wins out. No. You should run the old consensus rules (on any codebase you
want) until you believe that pretty much everyone has consented to a change
in the rules. It is your choice, but I think a lot of people that have
spent time thinking about the philosophy of consensus systems believe that
when the users of the system have this principle in mind, it's what will
make the system work best.
I don't think I agree with "pretty much everybody", because status-quo
bias is a very powerful thing. Any change that disrupts the way they've
been doing things will generate significant resistance -- there will be 10
or 20% of any population that will take a position of "too busy to think
about this, everything seems to be working great, I don't like change, NO
to any change."
For example, I think some of the resistance for bigger blocks is coming
from contributors who are worried they, personally, won't be able to keep
up with a bigger blockchain. They might not be able to run full nodes from
their home network connections (or might not be able to run a full node AND
stream Game of Thrones), on their old raspberry pi machines.
The criteria for me is "clear super-majority of the people and businesses
who are using Bitcoin the most," and I think that criteria is met.
Post by Alex Morcos
3) Code changes to Core that do change consensus: I think that Wladimir,
all the other committers besides Gavin, and almost all of the other
developers on Core would defer to #2 above and wait for its outcome to be
clear before considering such a code change.
Yes, that's the way it has mostly been working. But even before stepping
down as Lead I was starting to wonder if there are ANY successful open
source projects that didn't have either a Benevolent Dictator or some clear
voting process to resolve disputes that cannot be settled with "rough
consensus."
--
--
Gavin Andresen
Jorge Timón
2015-06-18 18:49:35 UTC
Permalink
Post by Gavin Andresen
Post by Alex Morcos
Let me take a pass at explaining how I see this.
1) Code changes to Bitcoin Core that don't change consensus: Wladimir is
the decider but he works under a process that is well understood by
developers on the project in which he takes under reasonable consideration
other technical opinions and prefers to have clear agreement among them.
Yes.
Post by Alex Morcos
2) Changes to the consensus rules: As others have said, this isn't
anyone's decision for anyone else.
Yes.
[...]
I don't think I agree with "pretty much everybody", because status-quo bias
is a very powerful thing. Any change that disrupts the way they've been
doing things will generate significant resistance -- there will be 10 or 20%
of any population that will take a position of "too busy to think about
this, everything seems to be working great, I don't like change, NO to any
change."
But according to Alex's explanation (which I think is very good
leaving asides some cases like change of the pow hashing function, for
example) there's no individual that can force or veto a change. It is
the decision of each individual user and their own "pretty much
everybody" may vary. But this "pretty much everybody" is what Mark
referred to with the "I know it when I see it."
Post by Gavin Andresen
The criteria for me is "clear super-majority of the people and businesses
who are using Bitcoin the most," and I think that criteria is met.
If you recommend users to apply changes when this criterion is met but
you know there's still many users who don't agree with the change,
then you're acting irresponsibly by promoting a chaotic consensus fork
where coins can be spent in both chains at once.
Well...unless you're promoting it as an altcoin that simply happens to
distribute part of the initial monetary based to bitcoin holders at
block X and whose genesis block is equal to bitcoin's genesis block at
block X. I guess in that case you wouldn't necessarily be
irresponsible.
"Miner's vote" is irrelevant here since it cannot tell you anything
about users adoption (besides miner's adoption of course).
Post by Gavin Andresen
Post by Alex Morcos
3) Code changes to Core that do change consensus: I think that Wladimir,
all the other committers besides Gavin, and almost all of the other
developers on Core would defer to #2 above and wait for its outcome to be
clear before considering such a code change.
Yes, that's the way it has mostly been working. But even before stepping
down as Lead I was starting to wonder if there are ANY successful open
source projects that didn't have either a Benevolent Dictator or some clear
voting process to resolve disputes that cannot be settled with "rough
consensus."
But this is only relevant for the point 1. Software projects can have
dictators, forks and everything else other free software projects
have. But consensus-based p2p blockchains cannot change their rules in
the same way, otherwise they're centralized.

THERE CANNOT BE A VOTING PROCESS FOR CONSENSUS CHANGES.
If anybody can vote, hod do you prevent the sibyls from outvoting everyone?
If not everybody can vote, how is the voters' list determined without
centralizing the system?
If we had a technical solution to this problem we wouldn't need proof
of work in the first place!!

------------------------------------------------------------------------------
Ross Nicoll
2015-06-18 19:31:55 UTC
Permalink
I've got a few thoughts on this, but they don't really attach well to a
single message, so starting a fresh message in the same thread. I'm
going to try being brief.

There's a lot of talk about not forking. Sorry, but they're going to
happen, planned and unplanned. Even if no intentional forks occur from
here on, I hope it's obvious that there will be further accidental forks
(at least unless and until someone prepares a formal proof of a Bitcoin
wallet). We need to be more comfortable with that, and plan ahead.
Education is key here, a lot of people don't understand what a fork is,
how it will affect them, how to recognise a fork or how to recover. I'll
dig out what materials I've written already and try making them more
widely available, as a start.

On whether code forks are a solution to disagreements - I'm not quite
sure what people expect will happen where a group believes there is an
existential threat to Bitcoin and they cannot get Bitcoin Core updated.
I may disagree with Mike & Gavin on timescale, but I do believe there's
a likelihood inaction will kill Bitcoin, and in that context I see the
rational choice as taking the perceived smaller risk of a fork killing
Bitcoin. BIP100 appears to be making progress, however, right now I
think the best option is pursuing it towards something that can be
agreed on by all. I would also happily go with an 8MB block size even if
just to buy us (IMHO a lot) more time.

Lastly, there seems to be a number of people who believe inaction
through apathy is fine. I respect those who form considered opinions and
tell me why they believe 1MB is fine, but I do ask that people either
put the effort in to help make decisions, or delegate to someone else.
Decentralised does not mean there's no decision making, it means we're
all decision makers, and frankly I think there's effectively negligence
in that capacity right now. I'd also point out this ongoing discussion
is a huge time sink to a number of people who could be making much more
useful contributions, and that again going in circles endlessly
discussing in the name of decentralisation isn't positive.

I have failed at being brief, apologies.

Ross


------------------------------------------------------------------------------
Matt Whitlock
2015-06-18 21:42:51 UTC
Permalink
Post by Ross Nicoll
I may disagree with Mike & Gavin on timescale, but I do believe there's
a likelihood inaction will kill Bitcoin
An honest question: who is proposing inaction? I haven't seen anyone in this whole, agonizing debate arguing that 1MB blocks are adequate. The debate has been about *how* to increase the block-size limit and whether to take action ASAP (at the risk of fracturing Bitcoin) or to delay action for further debate (at the risk of overloading Bitcoin). Even those who are arguing for further debate are not arguing for *inaction*.

------------------------------------------------------------------------------
Mark Friedenbach
2015-06-18 21:49:51 UTC
Permalink
Matt, I for one do not think that the block size limit should be raised at
this time. Matt Corallo also started the public conversation over this
issue on the mailing list by stating that he was not in favor of acting now
to raise the block size limit. I find it a reasonable position to take that
even if you feel the block size limit should be raised at some time in the
future, there are reasons why now is not the best time to do it.
Post by Matt Whitlock
Post by Ross Nicoll
I may disagree with Mike & Gavin on timescale, but I do believe there's
a likelihood inaction will kill Bitcoin
An honest question: who is proposing inaction? I haven't seen anyone in
this whole, agonizing debate arguing that 1MB blocks are adequate. The
debate has been about *how* to increase the block-size limit and whether to
take action ASAP (at the risk of fracturing Bitcoin) or to delay action for
further debate (at the risk of overloading Bitcoin). Even those who are
arguing for further debate are not arguing for *inaction*.
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
Jeff Garzik
2015-06-18 21:58:06 UTC
Permalink
Is that a forward-looking position? It does not seem so.

The whole point is getting out in front of the need, to prevent significant
negative impact to users when blocks are consistently full.

To do that, you need to (a) plan forward, in order to (b) set a hard fork
date in the future.

"We don't see a need today" is therefore useless, because when you do reach
X day when need is apparent, the best solution then becomes an immediate
fork for which the network and markets are not prepared.

Failing to resolve the block size issue soon will simply result in most
businesses assuming relevant Bitcoin Core standards process is failing, and
proceed with the Bitcoin-XT fork.

As I've said on IRC, the "do nothing, for now" position is untenable.
--
Jeff Garzik
Bitcoin core developer and open source evangelist
BitPay, Inc. https://bitpay.com/
Mark Friedenbach
2015-06-18 22:33:00 UTC
Permalink
Post by Jeff Garzik
The whole point is getting out in front of the need, to prevent
significant negative impact to users when blocks are consistently full.
To do that, you need to (a) plan forward, in order to (b) set a hard fork
date in the future.
Or alternatively, fix the reasons why users would have negative experiences
with full blocks, chiefly:

* Get safe forms of replace-by-fee and child-pays-for-parent finished and
in 0.12.
* Develop cross-platform libraries for managing micropayment channels,
and get wallet authors to adopt
* Use fidelity bonds, solvency proofs, and other tricks to minimize the
risk of already deployed off-chain solutions as an interim measure until:
* Deploy soft-fork changes for truly scalable solutions like Lightning
Network.

Not raising the block size limit does not mean doing nothing to solve the
problem.
Jeff Garzik
2015-06-18 22:52:48 UTC
Permalink
Post by Mark Friedenbach
Post by Jeff Garzik
The whole point is getting out in front of the need, to prevent
significant negative impact to users when blocks are consistently full.
To do that, you need to (a) plan forward, in order to (b) set a hard fork
date in the future.
Or alternatively, fix the reasons why users would have negative
* Get safe forms of replace-by-fee and child-pays-for-parent finished
and in 0.12.
* Develop cross-platform libraries for managing micropayment channels,
and get wallet authors to adopt
* Use fidelity bonds, solvency proofs, and other tricks to minimize the
* Deploy soft-fork changes for truly scalable solutions like Lightning
Network.
Not raising the block size limit does not mean doing nothing to solve the
problem.
This is a long, unreasonable list of work. None of this exists and it
equates to "upgrade all wallets and websites everywhere" It requires all
exchanges, payment processors, merchants, etc. to - basically everybody
but miners - to update.

It is a far, far larger amount of work to write, test and deploy than
simply increasing the block size limit.

Think through roll-out of these ambitious suggestions, before suggesting as
an alternative!

Not a realistic alternative except in an alternate universe where (a)
developer work at all companies is cost free, plus (b) we can pause the
business universe while we wait for The Perfect Solution.
--
Jeff Garzik
Bitcoin core developer and open source evangelist
BitPay, Inc. https://bitpay.com/
odinn
2015-06-18 23:25:57 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Regarding the bit on "getting out in front of the need, to prevent
On Thu, Jun 18, 2015 at 3:33 PM, Mark Friedenbach
The whole point is getting out in front of the need, to prevent
significant negative impact to users when blocks are consistently full.
My thoughts on that:

Possible scope narrowing to one of the following concepts (but please,
someone tell me if this "scope narrowing" is unwise, not timely, or if
there is some other factors that would make it just stupid right now
because other things are in the works or whatever:

~ Jeff Garzik, with respect to his BIP 100 (note Evan Mo, CEO of
Huobi's mining project Digcoin, clarified that the big Chinese mining
pools consider further adjustments to the protocol beyond the
suggested 8 MB block size limit adjustment — such as the Bitcoin core
developer Jeff Garzik's BIP-100 draft — to be feasible)
~ Adam Back, with a simplified soft-fork one-way peg
~ Gavin Andresen, developing an 8 MB block size limit adjustment in
the context of Core (as an example) with one or more of the above
authors rather than focusing on XT. (This is a big assumption but,
roll with it)

All of this assumes that developer(s) are willing to abandon
intentionally contentious proposals such as the "hard fork to XT w/ 20
MB," remain within the context of Core and be reasonable.

Here I am being aware of the fact that "Pushing a hard fork in the
face of such controversy is a folly, a danger to the network, and that
deserves to be said." - Wladimir J. van der Laan
https://github.com/bitcoin/bitcoin.org/pull/894#issuecomment-112113917
To do that, you need to (a) plan forward, in order to (b) set a
hard fork date in the future.
Or alternatively, fix the reasons why users would have negative
* Get safe forms of replace-by-fee and child-pays-for-parent
finished and in 0.12. * Develop cross-platform libraries for
managing micropayment channels, and get wallet authors to adopt *
Use fidelity bonds, solvency proofs, and other tricks to minimize
the risk of already deployed off-chain solutions as an interim
measure until: * Deploy soft-fork changes for truly scalable
solutions like Lightning Network.
Not raising the block size limit does not mean doing nothing to
solve the problem.
This is a long, unreasonable list of work. None of this exists and
it equates to "upgrade all wallets and websites everywhere" It
requires all exchanges, payment processors, merchants, etc. to -
basically everybody but miners - to update.
It is a far, far larger amount of work to write, test and deploy
than simply increasing the block size limit.
Think through roll-out of these ambitious suggestions, before
suggesting as an alternative!
Not a realistic alternative except in an alternate universe where
(a) developer work at all companies is cost free, plus (b) we can
pause the business universe while we wait for The Perfect
Solution.
Something else I wanted to point out here in this thread is the
subject of the problem of "developers going off the deep end" which is
what started this thread:

Suppose you have a developer with full commit access who happens to
start threatening to revoking the other developers' commit access on
the repository, or that person doesn't even threaten, one day it just
happens.

What do you have then? Peter Todd has stated that all one "would
achieve by that sabotage is setting a key-value pair in a centralised
registry." But is that what we want?

The answer, obviously, is no.

This leads to other questions. What technical mechanisms exist to keep
developers from (in some dubious emotional or psycho state) to just
going off the deep and doing exactly what has been described above, if
they have full commit access? Is there a process whereby that can't
actually happen unless another developer provides a signature (e.g. a
multisignature type of process)? What keeps bitcoin safe from "The
Hearn Threat?"

If nothing does, then how would you change that?

And go ahead and tell me if these are dumb questions and I should just
be quiet, but if they are, please do explain why they are such dumb
questions.
-- Jeff Garzik Bitcoin core developer and open source evangelist
BitPay, Inc. https://bitpay.com/
----------------------------------------------------------------------
- --------
_______________________________________________ Bitcoin-development
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
- --
http://abis.io ~
"a protocol concept to enable decentralization
and expansion of a giving economy, and a new social good"
https://keybase.io/odinn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVg1OFAAoJEGxwq/inSG8COpAIAJrH9Uj9bcKr+UUR7ePV6/Yj
MmNTY2VKAtiQhwHM+Mqk2VvQANs7/uRBdZjzGnw1NRcca/m8Q0yZUHQiP8avCUOE
3MHqGviYjfeJdu1pcf+PO2pAImM5FCFdrfbbiWUt+ZoOKTxZjsLtF4RE+mc13AXJ
dktvy6SFdvQUgEx8pdXEDpmaUSYUr7syFP4sgHZmyMlhvCsXyE/8dC3sZTzEpVnC
xy1dyBmXHPW3W4FfBSblwwWgJWMcIcGJn8OLQKK5pni/iSVL6IMoRI/MLwOJdRr4
lr83g9FR/qxMqAT9UIZtATnePlkkWPU1szvak/tU/49fGioyYOF4b4KPg/bHYSc=
=hBcE
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Ross Nicoll
2015-06-18 23:16:46 UTC
Permalink
I'm struggling to illustrate how incredibly low 7 transactions per
second is, not just for a payment network, but even just for a clearance
network (i.e. to balance transactions between institutions and/or
chains). As an example, the Clearing House Interbank Payments System
(CHIPS) is a US-only, inter-bank only clearance network, which handled
about 3.5 transactions per second (average) in 2014
(https://www.theclearinghouse.org/~/media/tch/pay%20co/chips/reports%20and%20guides/chips%20volume%20through%20may%202015.pdf?la=en).

While it seems likely the US population of 300 million makes more
transactions individually than many other countries, and therefore we
can't simply multiply that by 20 to estimate what a global clearance
network might require, hopefully it's clear that if Bitcoin is to scale
globally, it needs substantially more transaction throughput even if
main chain transactions become something for banks and the super rich. I
don't know how much more, but I can't look at the 8MB reportedly backed
by a number of mining pools and say it's clearly insufficient, at least.

I should emphasise that I don't think we need to jump straight to 8MB
(or otherwise), if a scaling protocol can be decided upon that would be
ideal, but we should be planning ahead while it's still relatively easy
to make these changes.

Ross
Post by Jeff Garzik
The whole point is getting out in front of the need, to prevent
significant negative impact to users when blocks are consistently full.
To do that, you need to (a) plan forward, in order to (b) set a
hard fork date in the future.
Or alternatively, fix the reasons why users would have negative
* Get safe forms of replace-by-fee and child-pays-for-parent
finished and in 0.12.
* Develop cross-platform libraries for managing micropayment
channels, and get wallet authors to adopt
* Use fidelity bonds, solvency proofs, and other tricks to minimize
the risk of already deployed off-chain solutions as an interim measure
* Deploy soft-fork changes for truly scalable solutions like
Lightning Network.
Not raising the block size limit does not mean doing nothing to solve
the problem.
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
Chris Pacia
2015-06-19 00:57:58 UTC
Permalink
Post by Mark Friedenbach
* Get safe forms of replace-by-fee and child-pays-for-parent
finished and in 0.12.
* Develop cross-platform libraries for managing micropayment
channels, and get wallet authors to adopt
* Use fidelity bonds, solvency proofs, and other tricks to minimize
the risk of already deployed off-chain solutions as an interim measure
* Deploy soft-fork changes for truly scalable solutions like
Lightning Network.
One of my biggest concerns is that these solutions (lightning network in
particular) could end up being worse, in terms of decentralization, than
would be a bitcoin network using larger blocks. We don't exactly know
what the economies of scale are for pay hubs and could very well end up
with far fewer hubs than nodes at any conceivable block size.

Of course, it could also turn out to be fantastic, but it seems like an
enormous gamble to basically force everyone in the ecosystem to
collectively spend millions of dollars upgrading to Lightning /and then/
see whether it's actually an improvement in terms of decentralization.

To me, a much more sane approach would be to allow people to voluntarily
opt in to those other solutions after we've had an opportunity to
experiment with them and see how they actually function in practice, but
that can't happen if the network runs out of capacity first.
Eric Lombrozo
2015-06-19 05:59:38 UTC
Permalink
I don’t think the issue is between larger blocks on the one hand and things like lightning on the other - these two ideas are quite orthogonal.

Larger blocks aren’t really about addressing basic scalability concerns - for that we’ll clearly need architectural and algorithmic improvements…and will likely need to move to a model where it isn’t necessary for everyone to validate everyone else’s latte purchases. Larger blocks might, at best, keep the current system chugging along temporarily - although I’m not sure that’s necessarily such a great thing…we need to create a fee market sooner or later, and until we do this, block size issues will continue to crop up again and again and economic incentives will continue to be misplaced. It would be nice to have more time to really develop a good infrastructure for this…but without real market pressures, I’m not sure it will happen at all. Necessity is the mother of invention, after all. The question is how to introduce a fee market smoothly and with the overwhelming consensus of the community - and that's where it starts to get tricky.

——

On a separate note, as several others have pointed out in this thread (but I wanted to add my voice to this as well), maintenance of source code repositories is NOT the real issue here. The bitcoin/bitcoin project on github is a reference implementation of the Satoshi protocol…but it is NOT the only implementation…and it wasn’t really meant to be. Anyone is free to fork it, extend it, improve upon it, or create an entirely new network with its own genesis block…a separate cryptoledger.

The real issue regarding XT is NOT the forking of source code nor issues surrounding commit access to repositories. The real issue is the *forking of a cryptoledger*.

Open source repositories are meant to be forked - in fact, it is often encouraged. It is also encouraged that improvements be submitted for review and possibly merged back into the parent repository…although this doesn’t always happen.

However, we currently have no mechanisms in place to support merging of forked cryptoledgers. Software, and most other forms of digital content, generally increases in value with more copies made. However, money is scarce…by design. The entire value of the assets of a decentralized cryptoledger rests on the assumption that nobody can just unilaterally fork it and change the rules. Yes, convincing other people to do things a certain way is HARD…yes, it can be frustratingly slow…I’ve tried to push for many changes to the Bitcoin network…and have only succeeded a very small number of times. And yes, it’s often been quite frustrating. But trying to unilaterally impose a change of consensus rules for an existing cryptoledger sets a horrendous precedent…this isn’t just about things like block size limits, which is a relatively petty issue by comparison.

It would be very nice to have a similar workflow with consensus rule evolution as we do with most other open source projects. You create a fork, demonstrate that your ideas are sound by implementing them and giving others something that works so they can review them, and then merge your contributions back in. However, the way Bitcoin is currently designed, this is unfortunately impossible to do this with consensus rules. Once a fork, always a fork - a.k.a. altcoins. Say what you will about how most altcoins are crap - at least most of them have the decency of starting with a clean ledger.


- Eric Lombrozo
* Get safe forms of replace-by-fee and child-pays-for-parent finished and in 0.12.
* Develop cross-platform libraries for managing micropayment channels, and get wallet authors to adopt
* Deploy soft-fork changes for truly scalable solutions like Lightning Network.
One of my biggest concerns is that these solutions (lightning network in particular) could end up being worse, in terms of decentralization, than would be a bitcoin network using larger blocks. We don't exactly know what the economies of scale are for pay hubs and could very well end up with far fewer hubs than nodes at any conceivable block size.
Of course, it could also turn out to be fantastic, but it seems like an enormous gamble to basically force everyone in the ecosystem to collectively spend millions of dollars upgrading to Lightning and then see whether it's actually an improvement in terms of decentralization.
To me, a much more sane approach would be to allow people to voluntarily opt in to those other solutions after we've had an opportunity to experiment with them and see how they actually function in practice, but that can't happen if the network runs out of capacity first.
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
Mike Hearn
2015-06-19 09:37:34 UTC
Permalink
Post by Mark Friedenbach
Or alternatively, fix the reasons why users would have negative
experiences with full blocks
It's impossible, Mark. *By definition* if Bitcoin does not have sufficient
capacity for everyone's transactions, some users who were using it will be
kicked out to make way for the others. Whether that happens in some kind of
stable organised way or (as with the current code) a fairly chaotic way
doesn't change the fundamental truth: *some users will find their bitcoin
savings have become uneconomic to spend*.

Here's a recent user complaint that provides a preview of coming
attractions:

https://www.reddit.com/r/Bitcoin/comments/39r3bi/breadwallet_asking_me_to_pay_over_10_network_fee/

Hello, I'm just trying to send my small Sarutobi-tips stash (12,159 bits)
Post by Mark Friedenbach
onto a paper wallet. When I try to send it, a window pops up stating
"insufficient funds for bitcoin network fee, reduce payment amount by 1,389
bits?" This would be a fee of $0.32 to send my $2.82, leaving me with $2.50.
These sorts of complaints will get more frequent and more extreme in the
coming months. I realise that nobody at Blockstream is in the position of
running an end user facing service, but many of us are .... and we will be
the ones that face the full anger of ordinary users as Bitcoin hits the
wall.
Benjamin
2015-06-19 09:53:01 UTC
Permalink
Yeah, but increasing block-size is not a longterm solution. Necessary
higher fees are a logical consequence of lower subsidies. Bitcoin was
basically free to use at the beginning because miners got paid with
new coins at the expense of those who already hold coins. Eventually
there needs to be a mechanism which matches supply and demand.
Post by Mark Friedenbach
Or alternatively, fix the reasons why users would have negative
experiences with full blocks
It's impossible, Mark. By definition if Bitcoin does not have sufficient
capacity for everyone's transactions, some users who were using it will be
kicked out to make way for the others. Whether that happens in some kind of
stable organised way or (as with the current code) a fairly chaotic way
doesn't change the fundamental truth: some users will find their bitcoin
savings have become uneconomic to spend.
Here's a recent user complaint that provides a preview of coming
https://www.reddit.com/r/Bitcoin/comments/39r3bi/breadwallet_asking_me_to_pay_over_10_network_fee/
Post by Mark Friedenbach
Hello, I'm just trying to send my small Sarutobi-tips stash (12,159 bits)
onto a paper wallet. When I try to send it, a window pops up stating
"insufficient funds for bitcoin network fee, reduce payment amount by 1,389
bits?" This would be a fee of $0.32 to send my $2.82, leaving me with $2.50.
These sorts of complaints will get more frequent and more extreme in the
coming months. I realise that nobody at Blockstream is in the position of
running an end user facing service, but many of us are .... and we will be
the ones that face the full anger of ordinary users as Bitcoin hits the
wall.
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
------------------------------------------------------------------------------
GC
2015-06-19 10:08:19 UTC
Permalink
Benjamin,

Timeframe for network congestion and users experiencing service
degradation => between now and middle of next year.

Timeframe for transaction fees topping block reward fees => many years in
the future, based on current ratio of block reward to fees.

What is the more pressing requirement now? A working ³fee market² or a
reliable, useful payment network that scales without falling over in the
next 2-3 years.
Post by Benjamin
Yeah, but increasing block-size is not a longterm solution. Necessary
higher fees are a logical consequence of lower subsidies. Bitcoin was
basically free to use at the beginning because miners got paid with
new coins at the expense of those who already hold coins. Eventually
there needs to be a mechanism which matches supply and demand.
Post by Mark Friedenbach
Or alternatively, fix the reasons why users would have negative
experiences with full blocks
It's impossible, Mark. By definition if Bitcoin does not have sufficient
capacity for everyone's transactions, some users who were using it will be
kicked out to make way for the others. Whether that happens in some kind of
stable organised way or (as with the current code) a fairly chaotic way
doesn't change the fundamental truth: some users will find their bitcoin
savings have become uneconomic to spend.
Here's a recent user complaint that provides a preview of coming
https://www.reddit.com/r/Bitcoin/comments/39r3bi/breadwallet_asking_me_to
_pay_over_10_network_fee/
Post by Mark Friedenbach
Hello, I'm just trying to send my small Sarutobi-tips stash (12,159 bits)
onto a paper wallet. When I try to send it, a window pops up stating
"insufficient funds for bitcoin network fee, reduce payment amount by 1,389
bits?" This would be a fee of $0.32 to send my $2.82, leaving me with $2.50.
These sorts of complaints will get more frequent and more extreme in the
coming months. I realise that nobody at Blockstream is in the position of
running an end user facing service, but many of us are .... and we will be
the ones that face the full anger of ordinary users as Bitcoin hits the
wall.
-------------------------------------------------------------------------
-----
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
--------------------------------------------------------------------------
----
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
------------------------------------------------------------------------------
Mike Hearn
2015-06-19 10:19:17 UTC
Permalink
Post by Benjamin
Yeah, but increasing block-size is not a longterm solution.
Are you sure? That sort of statement is hard to answer because it doesn't
say what you think long term is, or how much you expect Bitcoin to grow.

Satoshi thought it was a perfectly fine long term solution because he
thought hardware would get cheaper as fast or faster than Bitcoin would
grow. You may disagree with him, but as we're talking about the future are
you 100% certain he was wrong? I did calculations a long time ago that
suggested even with today's hardware (+some software optimisations) it
would be feasible to keep up with Visa.

Hardware improvements can be unintuitive. There's a spreadsheet here that
lets you play with various parameters.

https://docs.google.com/spreadsheets/d/1PJvrAAOVYVszfRRLhKqd1R9lRiOAImzAfdeb6ajATEY/edit#gid=1451669128

(note: the spreadsheet says avg txn size is 250 bytes, but if you check the
formula for the middle column, it does actually use 500 bytes as the
multiplier hard coded).
Post by Benjamin
Necessary higher fees are a logical consequence of lower subsidies.
Bitcoin was basically free to use at the beginning because miners got paid
with new coins at the expense of those who already hold coins.
Eventually there needs to be a mechanism which matches supply and demand.
That's not clear either, I'm afraid.

Remember that there's an upper limit on how high Bitcoin fees can go. When
fees become higher than what the banking system charges, many users won't
use Bitcoin for moving money around anymore. Fees cannot really go much
higher than that even if you assume the currency is still attractive for
other reasons, because people would just sell their coins for fiat, move
the fiat, and buy back the coins the other side.

The way mining will be funded in future is an open question. There are
differing proposals. Still, even with a higher hard block size limit,
miners can always refuse to mine transactions that don't include a
particular fee. So if you're worried about this, miners aren't being forced
into any particular policy.
Eric Lombrozo
2015-06-19 10:52:48 UTC
Permalink
Or alternatively, fix the reasons why users would have negative experiences with full blocks
It's impossible, Mark. By definition if Bitcoin does not have sufficient capacity for everyone's transactions, some users who were using it will be kicked out to make way for the others. Whether that happens in some kind of stable organised way or (as with the current code) a fairly chaotic way doesn't change the fundamental truth: some users will find their bitcoin savings have become uneconomic to spend.
https://www.reddit.com/r/Bitcoin/comments/39r3bi/breadwallet_asking_me_to_pay_over_10_network_fee/ <https://www.reddit.com/r/Bitcoin/comments/39r3bi/breadwallet_asking_me_to_pay_over_10_network_fee/>
Hello, I'm just trying to send my small Sarutobi-tips stash (12,159 bits) onto a paper wallet. When I try to send it, a window pops up stating "insufficient funds for bitcoin network fee, reduce payment amount by 1,389 bits?" This would be a fee of $0.32 to send my $2.82, leaving me with $2.50.
These sorts of complaints will get more frequent and more extreme in the coming months. I realise that nobody at Blockstream is in the position of running an end user facing service, but many of us are .... and we will be the ones that face the full anger of ordinary users as Bitcoin hits the wall.
Mike,

With all due respect, many of us DO run end user facing services
and would rather see a fundamental problem *fixed* rather than merely covered up temporarily
hoping nobody notices.

The user experience of Bitcoin is already horrendous
unless you use a centralized validator web wallet. Even SPV is fundamentally broken (and I would have pegged you for being one of the people most directly aware of this fact). If we’re going for centralized validation, why even use a blockchain in the first place? We already have much faster, more efficient technology that can do that kind of stuff at a fraction of the cost. If you have well-established entities running banking services, we have other mechanisms in place that can help keep them honest
other far more efficient protocols. We’re basically defeating the very purpose of this invention.

Then there are a bunch of other “inconveniences” about the way Bitcoin currently works. For instance, have you ever received a bunch of small payments (i.e. a crowdsale) and then found yourself in the position of having to suddenly move a big chunk of that on the blockchain
only to discover all the txouts you were spending added up to hundreds of kB or more? Or have you ever had to send a small payment but only had one large output in your wallet
which meant that the entirety of those funds were tied up until the first transaction got signed and propagated? Yes, the protocol has MANY serious issues
of which the “send and forget” fee model as opposed to the “send and bid model” is just one.

Bitcoin was designed from the beginning with the idea that sooner or later fees would be a significant component of the network. The problem was never really fully addressed and solved - I’m glad to see that finally some good people in this space are starting to seriously think about solutions.

Mike, are you telling us you’d rather avoid user complaints at all costs even if that means building something shitty for them that doesn’t really serve its stated purpose? If those are your standards then no thanks, I don’t want to be part of your fork. And I don’t think I’m alone in this sentiment.


- Eric Lombrozo
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
Jorge Timón
2015-06-19 11:31:26 UTC
Permalink
Post by Mark Friedenbach
Or alternatively, fix the reasons why users would have negative
experiences with full blocks
It's impossible, Mark. By definition if Bitcoin does not have sufficient
capacity for everyone's transactions, some users who were using it will be
kicked out to make way for the others. Whether that happens in some kind of
stable organised way or (as with the current code) a fairly chaotic way
doesn't change the fundamental truth: some users will find their bitcoin
savings have become uneconomic to spend.
He doesn't mean that: he means solving the mempool and crashes and
hitting the limit would have.
If the chain has limited size it is a scarce resource and people have
to bid for it: nothing unexpected or wrong about that.
Of course, people that believe the limit should be completely removed
eventually because they don't care about mining being decentralized
(or fail to see the relation between the two) may have a very
different view about this.
Timeframe for transaction fees topping block reward fees => many years in
the future, based on current ratio of block reward to fees.
Do you think that this ratio is unrelated to an abundant (non-scarce)
block size?
When is the right time to allow space pressure to rise that ratio?
When the subsidy is at 1.5625, for example, it may be too late to
start a non-catastrophic transition from subsidies to fees.
I don't claim to know that, but it's something that worries me.
No matter how many people say "that's too far away in the future to
worry about it", I still worry about it and I'm sure more people do.
What if "when it's time to care about it" we discover that we should
have started to do things about it long ago to minimize the risks of
this transition?

------------------------------------------------------------------------------
GC
2015-06-19 12:26:45 UTC
Permalink
Post by Jorge Timón
When is the right time to allow space pressure to rise that ratio?
When the subsidy is at 1.5625, for example, it may be too late to
I don¹t believe we have to decide, the miners will do that and are doing
that already.
Post by Jorge Timón
start a non-catastrophic transition from subsidies to fees.
I don't claim to know that, but it's something that worries me.
No matter how many people say "that's too far away in the future to
worry about it", I still worry about it and I'm sure more people do.
What if "when it's time to care about it" we discover that we should
have started to do things about it long ago to minimize the risks of
this transition?
Hmmm. What should be the price of an email? How much should DARPA have
charged for using TCP/IP?

I see a lot of well-paid, first-world technologists arguing for commercial
returns on a nacent protocol which could could offer benefits to the
unbanked.
Is that really the vision: to (re)build a de-centralized Paypal with
slightly cheaper fees and cool hooks into off-chain commercial systems
providing profits for the already rich?
Post by Jorge Timón
--------------------------------------------------------------------------
----
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
------------------------------------------------------------------------------
Brooks Boyd
2015-06-19 11:48:54 UTC
Permalink
Post by Mark Friedenbach
Or alternatively, fix the reasons why users would have negative
Post by Mark Friedenbach
experiences with full blocks
It's impossible, Mark. *By definition* if Bitcoin does not have
sufficient capacity for everyone's transactions, some users who were using
it will be kicked out to make way for the others. Whether that happens in
some kind of stable organised way or (as with the current code) a fairly
chaotic way doesn't change the fundamental truth: *some users will find
their bitcoin savings have become uneconomic to spend*.
Here's a recent user complaint that provides a preview of coming
https://www.reddit.com/r/Bitcoin/comments/39r3bi/breadwallet_asking_me_to_pay_over_10_network_fee/
Hello, I'm just trying to send my small Sarutobi-tips stash (12,159 bits)
Post by Mark Friedenbach
onto a paper wallet. When I try to send it, a window pops up stating
"insufficient funds for bitcoin network fee, reduce payment amount by 1,389
bits?" This would be a fee of $0.32 to send my $2.82, leaving me with $2.50.
Has there been any talk about reducing the time between blocks? If blocks
were allowed to come twice as fast, they would be able to clear pending
transactions in the mempool the same as if the block size doubled, but
would allow mining to stay more decentralized since miners wouldn't be
working on such large-scale blocks? It would still take more storage space
to store the blockchain, though.

Brooks
Owen Gunden
2015-06-21 14:45:30 UTC
Permalink
Post by Brooks Boyd
Has there been any talk about reducing the time between blocks? If
blocks were allowed to come twice as fast, they would be able to clear
pending transactions in the mempool the same as if the block size
doubled, but would allow mining to stay more decentralized since miners
wouldn't be working on such large-scale blocks? It would still take more
storage space to store the blockchain, though.
https://www.mail-archive.com/bitcoin-development%40lists.sourceforge.net/msg07663.html

------------------------------------------------------------------------------
Ross Nicoll
2015-06-18 21:55:36 UTC
Permalink
There's some actually proposing inaction as an outright decision, but I
more meant that at times it has felt like we would end up with inaction
through momentum, combined with adoption rate making any hard fork more
complex if it continues to be delayed.
Post by Matt Whitlock
Post by Ross Nicoll
I may disagree with Mike & Gavin on timescale, but I do believe there's
a likelihood inaction will kill Bitcoin
An honest question: who is proposing inaction? I haven't seen anyone in this whole, agonizing debate arguing that 1MB blocks are adequate. The debate has been about *how* to increase the block-size limit and whether to take action ASAP (at the risk of fracturing Bitcoin) or to delay action for further debate (at the risk of overloading Bitcoin). Even those who are arguing for further debate are not arguing for *inaction*.
------------------------------------------------------------------------------
Matt Corallo
2015-06-18 19:24:14 UTC
Permalink
Post by Gavin Andresen
For example, I think some of the resistance for bigger blocks is coming
from contributors who are worried they, personally, won't be able to keep
up with a bigger blockchain. They might not be able to run full nodes from
their home network connections (or might not be able to run a full node AND
stream Game of Thrones), on their old raspberry pi machines.
Ive been trying to stay out of these increasingly useless shit-throwing contests, but I wanted to take objection to this... I highly, highly doubt any seriously technical person is making any kind of decision on block size issues based on their own personal network. If you're assuming this is a serious motivating factor for anyone, then I'm not sure you've even been reading your email or listening to the conversations you've had with people over the last year or more.
Post by Gavin Andresen
Post by Alex Morcos
Let me take a pass at explaining how I see this.
Wladimir is
Post by Alex Morcos
the decider but he works under a process that is well understood by
developers on the project in which he takes under reasonable
consideration
Post by Alex Morcos
other technical opinions and prefers to have clear agreement among
them.
Yes.
2) Changes to the consensus rules: As others have said, this isn't anyone's
Post by Alex Morcos
decision for anyone else.
Yes.
Post by Alex Morcos
It's up to each individual user as to what code they run and what
rules
Post by Alex Morcos
they enforce. So then why is everyone so up in arms about what Mike
and
Post by Alex Morcos
Gavin are proposing if everyone is free to decide for themselves? I
believe that each individual user should adhere to the principle that
there
Post by Alex Morcos
should be no changes to the consensus rules unless there is near
complete
Post by Alex Morcos
agreement among the entire community, users, developers, businesses
miners
Post by Alex Morcos
etc. It is not necessary to define complete agreement exactly because
every
Post by Alex Morcos
individual person decides for themselves. I believe that this is
what
Post by Alex Morcos
gives Bitcoin, or really any money, its value and what makes it work,
that
Post by Alex Morcos
we all agree on exactly what it is. So I believe that it is
misleading and
Post by Alex Morcos
bad for Bitcoin to tell users and business that you can just choose
without
Post by Alex Morcos
concern for everyone else which code you'll run and we'll see which
one
Post by Alex Morcos
wins out. No. You should run the old consensus rules (on any
codebase you
Post by Alex Morcos
want) until you believe that pretty much everyone has consented to a
change
Post by Alex Morcos
in the rules. It is your choice, but I think a lot of people that
have
Post by Alex Morcos
spent time thinking about the philosophy of consensus systems believe
that
Post by Alex Morcos
when the users of the system have this principle in mind, it's what
will
Post by Alex Morcos
make the system work best.
I don't think I agree with "pretty much everybody", because status-quo bias
is a very powerful thing. Any change that disrupts the way they've been
doing things will generate significant resistance -- there will be 10 or
20% of any population that will take a position of "too busy to think about
this, everything seems to be working great, I don't like change, NO to any
change."
For example, I think some of the resistance for bigger blocks is coming
from contributors who are worried they, personally, won't be able to keep
up with a bigger blockchain. They might not be able to run full nodes from
their home network connections (or might not be able to run a full node AND
stream Game of Thrones), on their old raspberry pi machines.
The criteria for me is "clear super-majority of the people and
businesses
who are using Bitcoin the most," and I think that criteria is met.
Post by Alex Morcos
3) Code changes to Core that do change consensus: I think that
Wladimir,
Post by Alex Morcos
all the other committers besides Gavin, and almost all of the other
developers on Core would defer to #2 above and wait for its outcome
to be
Post by Alex Morcos
clear before considering such a code change.
Yes, that's the way it has mostly been working. But even before
stepping
down as Lead I was starting to wonder if there are ANY successful open
source projects that didn't have either a Benevolent Dictator or some clear
voting process to resolve disputes that cannot be settled with "rough
consensus."
------------------------------------------------------------------------------
Gregory Maxwell
2015-06-18 19:32:43 UTC
Permalink
Post by Matt Corallo
Ive been trying to stay out of these increasingly useless shit-throwing contests, but I wanted to take objection to this... I highly, highly doubt any seriously technical person is making any kind of decision on block size issues based on their own personal network. If you're assuming this is a serious motivating factor for anyone, then I'm not sure you've even been reading your email or listening to the conversations you've had with people over the last year or more.
It's probably due to me: When I point to trends and broadband
_distribution_ in the US (much less the less developed parts of the
world), I'm being "hypothetical", and when I point to my _own_
connectivity as a concrete example it's "personal". It's no joke that
communication is _hard_ but it's a shared responsibility however, and
no need to assume anyone isn't reading.,

------------------------------------------------------------------------------
Mike Hearn
2015-06-18 13:31:54 UTC
Permalink
OK, let's agree to unpack the two things.

The first issue is how are decisions made in Bitcoin Core? I struggle to
explain this to others because I don't understand it myself. Is it a vote
of people with commit access? Is it a 100% agreement of "core developers"
and if so, who are these people? Is it "whoever reverts the change last"?
Could I write down in a document a precise description of how decisions are
made? No, and that's been a fairly frustrating problem for a long time.

But let's leave it to one side for a moment.

Let's focus on the other issue: what happens if the Bitcoin Core decision
making process goes wrong?

For the sake of argument let's pretend we're discussing a different change,
let's imagine there is a proposal to change the block format to include a
Widget, where a Widget is some potentially desirable thing. And this change
means a hard fork. Let's put the block size to one side for a second to
avoid getting distracted.

Imagine that 90% of people in Bitcoin want their Widgets, but one of your
committers refuses to accept it. I am not saying the block size debate has
such proportions but pretend Widgets do.

What is the process for resolving this problem?

Gavin and I say - there is a process, and that process is a hard fork of
the block chain.

What you're saying is - there is no process because a contentious hard fork
must never happen. Such a change is simply impossible.

Now which is a better description of this situation? Is the "it must never
happen end of story" really the cuddly warm democracy that you seem to
suggest? Or is it more like a dictatorship where the opinions of one or two
people can override all the others?

The typical answer I'm seeing to this is that Bitcoin Core's own decision
making process is so fantastic that it never goes wrong, even though
"consensus" is not defined and "technical majority" is not defined and we
have serious long time contributors on this mailing list (such as wallet
developers) disagreeing with this consensus yet our feedback is being
ignored.

You guys *must* accept that your preferred process for resolving disputes
is, itself, in dispute. That leaves the block chain itself as the only
remaining method for bringing this saga to a close.

So this is why we keep disagreeing:

- If Bitcoin Core has reached a formal decision made by the maintainer
via whatever mechanism he likes to not accept the block size increase, then
alright, technical disputes will happen. But ....

- You should agree that the next step is a fork of both the software and
the block chain. And you should welcome such a thing because it is the ONLY
check on your own power. It's the one thing that allows the community to
reject the decision making process you are using in case it goes wrong.

I keep reading that Bitcoin cannot survive a hard fork. Well, we've
survived an accidental fork that happened without anyone being prepared,
and even with a planned soft fork "never upgrade" isn't really an option
for either miners or businesses, so ultimately node operators must know
about upgrades and make them. Both myself and Gavin think this process can
work out OK.

Do you at least understand where we're coming from here, even if you
disagree? And if you disagree, is it because you think a hard fork to
resolve a dispute can't work technically, or is it some other reason?
Pieter Wuille
2015-06-18 13:50:07 UTC
Permalink
Post by Mike Hearn
OK, let's agree to unpack the two things.
The first issue is how are decisions made in Bitcoin Core? I struggle to
explain this to others because I don't understand it myself. Is it a vote
of people with commit access? Is it a 100% agreement of "core developers"
and if so, who are these people? Is it "whoever reverts the change last"?
Could I write down in a document a precise description of how decisions are
made? No, and that's been a fairly frustrating problem for a long time.
But let's leave it to one side for a moment.
Let's focus on the other issue: what happens if the Bitcoin Core
decision making process goes wrong?
Why do you keep talking about Bitcoin Core maintainers? The means for doing
a hard fork is convincing the network to run modified code, whether that is
a new version of Bitcoin Core or a fork of it, or something else entirely.

If I see consensus about a proposed network change, I will be in favor of
implementing it in Bitcoin Core. But we're not at that point. There is no
network change proposed with consensus. There is not even a patch to be
discussed. There are working proposals, and people are talking about them.
This is good.

I think maintainers of particular software should not be, and are not those
who decide the network's rules. People running the code are. Of course
maintainers have a large influence, but so do other people - like you.
Post by Mike Hearn
This was a reference to a post by Gregory on Reddit where he said if
Gavin were to do a pull request for the block size change and then merge
it, he would revert it. And I fully believe he would do so!

I believe so too, and I would do the same. Because I believe implementing a
consensus rule change without having very good expectations that the
network will adopt it, is reckless from the point of view of maintainers,
for all reasons I have mentioned before.
--
Pieter
Mark Friedenbach
2015-06-18 15:03:01 UTC
Permalink
Post by Mike Hearn
The first issue is how are decisions made in Bitcoin Core? I struggle to
explain this to others because I don't understand it myself. Is it a vote
of people with commit access? Is it a 100% agreement of "core developers"
and if so, who are these people? Is it "whoever reverts the change last"?
Could I write down in a document a precise description of how decisions are
made? No, and that's been a fairly frustrating problem for a long time.
There is a quote from United States Supreme Court Justice Potter Stewart to
describe his threshold test for obscenity which is relevant here: "I know
it when I see it."

It is hard certainly, and perhaps even impossible to write down a system of
rules that is used to resolve every dispute among core developers. But that
doesn't mean it isn't obvious to all the participants what is going on. If
a contentious change is proposed, and if after sufficient debate there are
still members of the technical community with reasoned, comprehensible
objections who are not merely being obstinate in the views -- a neutral
observer would agree that their concerns have not been met -- then there is
a lack of consensus.

If there was some sort of formal process however, the system wouldn't work.
Rules can be gamed, and if you add rules to a process then that process can
be gamed. Instead we all have a reasonable understanding of what "technical
consensus" is, and we all know it when we see it. Where we do not see it,
we do not proceed.
Milly Bitcoin
2015-06-18 15:30:06 UTC
Permalink
Post by Mike Hearn
The first issue is how are decisions made in Bitcoin Core? I
struggle to explain this to others because I don't understand it
myself. Is it a vote of people with commit access? Is it a 100%
agreement of "core developers" and if so, who are these people? Is
it "whoever reverts the change last"? Could I write down in a
document a precise description of how decisions are made? No, and
that's been a fairly frustrating problem for a long time.
There is a quote from United States Supreme Court Justice Potter
Stewart to describe his threshold test for obscenity which is relevant
here: "I know it when I see it."
It is hard certainly, and perhaps even impossible to write down a
system of rules that is used to resolve every dispute among core
developers. But that doesn't mean it isn't obvious to all the
participants what is going on. If a contentious change is proposed,
and if after sufficient debate there are still members of the
technical community with reasoned, comprehensible objections who are
not merely being obstinate in the views -- a neutral observer would
agree that their concerns have not been met -- then there is a lack of
consensus.
If there was some sort of formal process however, the system wouldn't
work. Rules can be gamed, and if you add rules to a process then that
process can be gamed. Instead we all have a reasonable understanding
of what "technical consensus" is, and we all know it when we see it.
Where we do not see it, we do not proceed.
There is always a process. Right now the process is haphazard, unclear,
and constantly changing without being written down so people don't
actually know what it is. In fact you do not all have a reasonable
understanding of "technical consensus" because if you did then you could
write it down ... but you can't. The current process is being gamed by
people making tweets, reddit posts, videos, and blog posts. A more
formalized process would channel that activity into a a more usable format.

This kind of thing always happens as projects become larger and more
diverse. Something that was once a small group turns into a big group
of diverse stakeholders. When it gets too big for the informal
processes then some people get upset and defensive. Happens all the time
but it is not really a good excuse to keep doing things in an
inefficient manner. The old ways just don't scale and if you ever
worked on massive projects then you know these formal processes work better.

Russ
Wladimir J. van der Laan
2015-06-18 15:46:42 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Milly Bitcoin
This kind of thing always happens as projects become larger and more
diverse. Something that was once a small group turns into a big
group of diverse stakeholders. When it gets too big for the
informal processes then some people get upset and defensive. Happens
all the time but it is not really a good excuse to keep doing things
in an inefficient manner. The old ways just don't scale and if you
ever worked on massive projects then you know these formal processes
work better.
So then: make a proposal for a better process, post it to this list.

In practice there has been zero interest in improving the BIP process.

E.g. the BIP process was adapted from the Python Enhancement Proposals by Amir Taaki (in 2009 or so?). It hasn't really changed since then, apart from some spelling and grammar corrections. It is not specifically adapted to Bitcoin, and doesn't make a distinction between for example, consensus changes and non-consensus changes.

So that's up to someone to do. You seem to be enthousiastic about it, so go ahead.

Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBCgAGBQJVgufFAAoJEHSBCwEjRsmmAmYIAI9ndrMoqEuoaP5t+7W42UuH
sh5qR7hojCCoZZl1N+rQ63UXcPBO/V4NUkUG97S3qpEFDzuoYSbOX2Eh+TRfK+s+
U+BpLhWteSexJ3N9aiFuR0q5jgesAzLZ9wtq1gCPI/Zu5/fgYBP4AVTiQGdXCZtv
m6ZDKCf+aB/fW/59/AiY44NkMDjVQieEVRiT1IPFJULWesOOdtv7UoqIpz0vDa/5
Jplm41j8IpTPioJKSwUi5qzSDrF7O39PC9LMXNRx/0FIuYfwqJpvF0Frc+vtPpjQ
llKE7945uMXz3FLSV0Orx26XPal/MuF5AYOPNk6pJfwYw7q91AUvQxVFepBa9vw=
=dMO9
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Mike Hearn
2015-06-18 16:05:58 UTC
Permalink
Post by Wladimir J. van der Laan
So then: make a proposal for a better process, post it to this list.
Alright. Here is a first cut of my proposal. It can be inserted into an
amended BIP 1 after "What belongs in a successful BIP?". Let me know what
you think.



The following section applies to BIPs that affect the block chain consensus
rules or the peer to peer protocol and thus require changes to Bitcoin
Core.

Once a draft BIP has been submitted to bitcoin-development for
consideration, the Bitcoin Core maintainer will deliver a preliminary
yes/no verdict within three weeks. This verdict may be informed by the
debate that has taken part in the previous three weeks. If more time is
required, the maintainer is required to request an extension from the BIP
author, who may then elect to force an immediate decision (risking a no),
or choosing to allow more time.

The verdict will meet the following criteria:

- It will address the latest version of the BIP at the time the verdict
is rendered.

- In case of a rejection, it will spell out and describe the technical
rationale for this decision. Opinions held by other people are not
considered technical rationales: if the maintainer agrees with a technical
point made during discussion, he must own that opinion for himself.
Therefore no BIP will be rejected on grounds of controversy, disagreement,
lack of consensus or otherwise.

- In case of rejection, the maintainer will provide a clear, specific
list of actionable steps the BIP author can take next. For example, a list
of what changes would address the technical objections raised. In case the
maintainer believes no change could ever make the BIP acceptable, the list
must consist of instructions for how to create a patch set and, in the case
of changes to the consensus rules, how to initiate a hard fork.

A BIP, even once rejected, may live on in the BIPS repository, though its
entry in the index may be sorted below others. The BIP author may update
the BIP with a summary of any resulting discussion. As such a summary may
be inherently contentious in case of a dispute, the authors wording of that
summary is final and may not be subject to meta-debate.
Wladimir J. van der Laan
2015-06-18 16:20:58 UTC
Permalink
Post by Mike Hearn
Once a draft BIP has been submitted to bitcoin-development for
consideration, the Bitcoin Core maintainer will deliver a preliminary
yes/no verdict within three weeks. This verdict may be informed by the
debate that has taken part in the previous three weeks. If more time is
required, the maintainer is required to request an extension from the BIP
author, who may then elect to force an immediate decision (risking a no),
or choosing to allow more time.
Again, for the last time: Bitcoin Core maintainer does not decide about protocol or consensus level changes.

This is not a role for me. Find someone else, if you think you need an arbiter. There was an idea about a Bitcoin Standards Body once, but as far as I know that's not actively being worked on.

BTW: for more exposure a proposal is better posted as a new thread, not as a deep reply to an existing topic.

Wladimir


------------------------------------------------------------------------------
odinn
2015-06-18 22:49:43 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Regarding this proposal from Mike Hearn to remove consensus process
from the BIP, which I think is unsound philosophy. I will address
this briefly below.
Post by Wladimir J. van der Laan
So then: make a proposal for a better process, post it to this
list.
Alright. Here is a first cut of my proposal. It can be inserted
into an amended BIP 1 after "What belongs in a successful BIP?".
Let me know what you think.
The following section applies to BIPs that affect the block chain
consensus rules or the peer to peer protocol and thus require
changes to Bitcoin Core.
Once a draft BIP has been submitted to bitcoin-development for
consideration, the Bitcoin Core maintainer will deliver a
preliminary yes/no verdict within three weeks.
For many things, that will simply be too fast. It is better to allow
the primary maintainer to collaborate with other people who normally
work on the code and determine what the schedule will be based on
life, volume of work, and so on.
Post by Wladimir J. van der Laan
This verdict may be informed by the debate that has taken part in
the previous three weeks. If more time is required, the maintainer
is required to request an extension from the BIP author, who may
then elect to force an immediate decision (risking a no), or
choosing to allow more time.
Again, this three week thing doesn't work. But assume for a moment
that there is a certain amount of time that is such and so and it is
set by the maintainer. The notion that the maintainer would be
"required" to request an extension from the BIP author is sheer
lunacy. There is no need to codify the actions of the project
maintainer such that he/she would be needing to be subject to the
whims of whatever BIP author. In like manner, a BIP author should not
have to be subject to forever delay of a BIP due to inaction of a
maintainer, but should have an answer regarding whether it can be
assigned a number, published as draft and so forth after a reasonable
time. To me, a "reasonable time" is something that should be
discussed amongst the maintainer, those who work regularly on code,
and the BIP author.
Post by Wladimir J. van der Laan
* It will address the latest version of the BIP at the time the
verdict is rendered.
* In case of a rejection, it will spell out and describe the
technical rationale for this decision. Opinions held by other
people are not considered technical rationales: if the maintainer
agrees with a technical point made during discussion, he must own
that opinion for himself. Therefore no BIP will be rejected on
grounds of controversy, disagreement, lack of consensus or
otherwise.
No, this is ridiculous, because the notion that "no BIP will be
rejected on grounds of controversy, disagreement, lack of consensus,
or otherwise," is clearly an attempt to do away with consensus models
of business, and it is also not a very logical statement because
controversy and disagreement are a natural part of... coming to what
eventually is an agreement.
Post by Wladimir J. van der Laan
* In case of rejection, the maintainer will provide a clear,
specific list of actionable steps the BIP author can take next. For
example, a list of what changes would address the technical
objections raised.
This above section I agree with.


In case the maintainer believes no change could ever make
Post by Wladimir J. van der Laan
the BIP acceptable, the list must consist of instructions for how
to create a patch set and, in the case of changes to the consensus
rules, how to initiate a hard fork.
This above section I do not agree with because of the obvious bias in
favor of the hard fork. Everything here seems to be aligned to push
for hard fork, hard fork, hard fork. It's like the author can't tear
his mind off it.
Post by Wladimir J. van der Laan
A BIP, even once rejected, may live on in the BIPS repository,
though its entry in the index may be sorted below others. The BIP
author may update the BIP with a summary of any resulting
discussion. As such a summary may be inherently contentious in case
of a dispute, the authors wording of that summary is final and may
not be subject to meta-debate.
This doesn't seem right at all.
Post by Wladimir J. van der Laan
----------------------------------------------------------------------
- --------
Post by Wladimir J. van der Laan
_______________________________________________ Bitcoin-development
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
- --
http://abis.io ~
"a protocol concept to enable decentralization
and expansion of a giving economy, and a new social good"
https://keybase.io/odinn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVg0sHAAoJEGxwq/inSG8CuFcH/0tzRWWyy3wmDegNx463xoaq
EhG/dNqoIvavMlyJrKfKWPK6Mndgo9BtxkYbvOlO40Y51SW4SaisWGzHRg4HyIbJ
0Orp+C0jXhvnrJ7hRwKhrdZQUIRAI19NLVthSb9W6mHnXWJC8ilhlK9Ei9ILRjGl
tM5pZ28SkyJ/b+CnltnYW8t6AvE4zlggC4QsCuUwA2cFoFWjQeESpqjy4kJNv464
yKlsrqoIzs2vNnoLIx1B0aLX9mNTQUwB1yMXtu8IVcAQe/G1LEEnNO56LGf8O0yJ
KcBTSpDAtCxvfkwtr3DS6LtCzXcej974NW068n/92zZIKzsdcZk/o3O5ZxEO7Wg=
=YwvU
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Milly Bitcoin
2015-06-18 16:11:24 UTC
Permalink
You misunderstand what I am saying. I am not saying I have a specific
process that should be followed, I am saying that whatever the process
is then it should be formalized or at least written down. That way the
stakeholders have something to work with and keeps people on track.
Since some people are saying they don't really know what the process is
the first step would be to describe the current process. I don't fully
understand the current process but I can see it is not formalized and
nobody can even give me a clear description of what it is. Once you
have it written down then changes/improvements can be proposed.

The first baby step was already done by the Foundation in developing
that risk study. A NIST guide for developing such a document is at
http://csrc.nist.gov/publications/nistpubs/800-30-rev1/sp800_30_r1.pdf.
No one person can come up with this and it would take buy in from
several different people who have expertise in specific technical areas
as well as experts in coming up with test plans. I recently suggested
to the people running the MIT lab that they look into developing a
program along those lines. Gavin also recently suggested that list of
Bitcoin metrics be developed to help resolve the current disputes. I
can help develop this process if there is interest.

Russ
Post by odinn
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Milly Bitcoin
This kind of thing always happens as projects become larger and more
diverse. Something that was once a small group turns into a big
group of diverse stakeholders. When it gets too big for the
informal processes then some people get upset and defensive. Happens
all the time but it is not really a good excuse to keep doing things
in an inefficient manner. The old ways just don't scale and if you
ever worked on massive projects then you know these formal processes
work better.
So then: make a proposal for a better process, post it to this list.
In practice there has been zero interest in improving the BIP process.
E.g. the BIP process was adapted from the Python Enhancement Proposals by Amir Taaki (in 2009 or so?). It hasn't really changed since then, apart from some spelling and grammar corrections. It is not specifically adapted to Bitcoin, and doesn't make a distinction between for example, consensus changes and non-consensus changes.
So that's up to someone to do. You seem to be enthousiastic about it, so go ahead.
Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBCgAGBQJVgufFAAoJEHSBCwEjRsmmAmYIAI9ndrMoqEuoaP5t+7W42UuH
sh5qR7hojCCoZZl1N+rQ63UXcPBO/V4NUkUG97S3qpEFDzuoYSbOX2Eh+TRfK+s+
U+BpLhWteSexJ3N9aiFuR0q5jgesAzLZ9wtq1gCPI/Zu5/fgYBP4AVTiQGdXCZtv
m6ZDKCf+aB/fW/59/AiY44NkMDjVQieEVRiT1IPFJULWesOOdtv7UoqIpz0vDa/5
Jplm41j8IpTPioJKSwUi5qzSDrF7O39PC9LMXNRx/0FIuYfwqJpvF0Frc+vtPpjQ
llKE7945uMXz3FLSV0Orx26XPal/MuF5AYOPNk6pJfwYw7q91AUvQxVFepBa9vw=
=dMO9
-----END PGP SIGNATURE-----
------------------------------------------------------------------------------
Milly Bitcoin
2015-06-18 12:38:30 UTC
Permalink
What is immediately clear to anyone who looks at Bitcoin software
development is that there is no clear process or method to make
changes/updates to the software. When I have questioned this in the
past the response is usually some cultish answer about how some kind of
technical consensus is reached yet nobody can point to an actual
process. If companies are expected to dedicate resources to adopt
Bitcoin there needs to be some type of process spelled out that can give
these entities at least minimal assurance that there is some type of
process in place. I think the whole process is based on how certain
personalities handle issues but as those personalities change the system
changes in unknown ways which equates to risk.

The other thing that is immediately clear is that there is no systems
engineering process in place to make changes. A "risk study" was done
by the Bitcoin Foundation but that is only the first baby step in the
process. It works by defining a set of risks, likelihood, mitigations,
etc. and a risk matrix and maintaining those as living documents.
When changes are proposed alternative scenarios are created and they are
measured against the baseline of what there is now. Standard test plans
are created to measure the changes against defined metrics. It is a lot
of work to define those risks to the level of detail needed for work
like this. However, the amount of time/energy saved in the end is
tremendous. Right now the process is haphazard at best with people
posting random tweets, Reddit posts, blog posts, etc. All this drama
makes Bitcoin look somewhat amateurish and rather risky.

http://www.dtic.mil/ndia/2004cmmi/CMMIT1Mon/Track1IntrotoSystemsEngineering/KISE09RiskManagementv2.pdf

https://bitcoinfoundation.org/wp-content/uploads/2014/04/Bitcoin-Risk-Management-Study-Spring-2014.pdf

Some people also seems to conflates the notion of decentralization of
the state of the ledger by mining/nodes with that of decentralization of
open source software by forking the software. These are very different
problems and I don't think it is possible (or even desirable) to achieve
the same level of decentralization for both things. In any case
"decentralization" for the state of the blockchain is only an
approximation anyway since there are things like 51% attacks and
checkpoints.

Russ
Post by odinn
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Mike Hearn
Core is in the weird position where there's no decision making ability at
all, because anyone who shows up and shouts enough can generate
'controversy', then Wladimir sees there is disagreement and won't touch the
issue in question. So it just runs and runs and *anyone* with commit access
can then block any change.
Bitcoin Core is completely different from your average open source project in one aspect: where it concerns consensus.
Like in any open source project there is lots of decision making ability for code changes. I'd say look at the changelog for e.g. 0.11 https://github.com/bitcoin/bitcoin/blob/0.11/doc/release-notes.md#0110-change-log, or follow pull requests for a while, to see how many decisions about changes are made from day to day. No, I'm not sitting on my hands, and so is none of the other contributors that you'd like to get rid of.
Consensus changes are *much* more difficult, on the other hand. Even relatively straightforward softforks come with a long discussion process (see BIP62, BIP66). A hardfork is hard to do at the best of times (everyone needs to upgrade their software!), and simply not possible if almost the entire technical community disagrees with you.
Bitcoin is supposed to be a robust, global, decentralized network beyond anyone's control. It makes *no sense* to try to run it as a dictatorship. This would create a handy central position where power can be applied, pushing through changes to the behavior of the system, either by force or other ways of motivation. I refuse to take part in that.
Hence, anything that is controversial needs to be considered really carefully. If I suddenly start making changes to the consensus code without full agreement, by all means take away my commit privileges.
(a major reason for the ongoing libconsensus work is to separate "Bitcoin Core, the node software" and "The Bitcoin Consensus" along clear lines, to avoid this kind of nasty confusion)
Wladimir
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBCgAGBQJVgqfOAAoJEHSBCwEjRsmmFT8H/Rkm29AhLhT8R1Vx8oKUIzID
+NB7tOps3lIilkDQIC5zHSknx5iugrrAdRf1w7qPj/o8+xhCZw9ruu8eIq+djkRQ
tvzbHil2pqgT3VHriRlY4lvlmu2NmBcYrAuX9sDhUHBo6cwGajfKMJPfE0haK3K4
7EmfdGXJYJmiBnhE6ikOiU687M2WgsmIGrBDIxeA5wYwVK9Ph8hfcbuj7AHvIMI9
ZNU/V6uhcTjn5wT+6DHGIOxHipYHyAwKb7jKho0XkM6Yi4ORe1mxF5HDtqA0ztta
mZPNjNrt/ngK20xRbqkb0GtxoyZq38ZF3Bq1gaWl2v9MBBMD5ZxQAvgCNUQFEo0=
=W26K
-----END PGP SIGNATURE-----
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
------------------------------------------------------------------------------
Lawrence Nahum
2015-06-18 11:41:01 UTC
Permalink
It's the only way to keep a project making progress at a reasonable pace.
[SNIP]

If Bitcoin is managed with a linux kernel style dictator it would be
centralized (yet unlike linux, where people can fork without impacting others
in Bitcoin a hard fork puts at risks everyone's bitcoins) - I hope we all
agree there is no point in a centralized Bitcoin?

In addition and more importantly, it would put Gavin in tremendous dangers,
both from violent threats/blackmailing prospective as well as regulatory
prospective - how can you not see that?

I hope all this confrontation will be worth something in the end: to show
that Bitcoin can't be changed centrally and that it can't be changed without
consensus


------------------------------------------------------------------------------
Bryan Bishop
2015-06-18 14:33:24 UTC
Permalink
Post by Mike Hearn
Dude, calm down.
Well hold on, his concerns are real and he seems perfectly calm to me and
others apparently.
Post by Mike Hearn
and Gavin already said long ago he wouldn't just commit something, even
though he has the ability to do so.
Nobody is worried about Gavin or anyone else making commits to git
repositories. You'll notice that this wasn't even mentioned in the original
email you were replying to. Instead, the email was talking about commit
access, which is a property of GitHub's repositories.

So why did I say it? Because it's consistent with what I've always said:
(That's not a good reason.)

you cannot run a codebase like Wikipedia
Wikipedia is a top-down centralized authority-based hierarchy. That's
pretty close to what you're proposing. That's what everyone else is
disagreeing with. You seem to have switched your position mid-flight...?

This is not a radical position. That's how nearly all coding projects work.
Post by Mike Hearn
I have been involved with open source for 15 years and the 'single
maintainer who makes decisions' model is normal, even if in some large
codebases subsystems have delegated submaintainers.
There are a number of reasons why that perspective is broken; throughout
our conversations others have repeatedly reminded you (such as in -wizards)
that forking an open-source repository is not at all like a hard-fork of
the blockchain. Anyone can be glorious leader of any repository they want,
that's how open-source works. However, it's critical that bitcoin users are
never convinced to trust BDFLs or anything else that can be compromised.
Should all bitcoin users suddenly start using software with BDFLs, even
multiple implementations with separate BDFLs, then those users can be
trivially compromised through their trust in those individuals and projects.

The alternative is that every developer and every user is personally
responsible for self-validation of the rules, checking for correctness and
validity. Happy coincidence that this seems to match the strategy of
operating the bitcoin network itself, which is to run a node that sees
everything and validates all the transactions. Anyone is able to find an
error in logic or flaw in the system rules, and they should make it known
as widely as possible so that others may evaluate the evidence and consider
which solutions preserve the important properties of the system. This is
not a matter of majorities or minorities; these arguments should be true
for anyone independent of who or what they are, or what level of
unpopularity they may have.

Anything other than this is somewhat radical, and I am confused as to why
others have been talking about "developer consensus". I suspect that the
reason why they have been saying developer consensus is because they are
talking about the Bitcoin Core project on GitHub at the moment. But the
topic switched to contentious hard-forks already, which is not a topic of
repositories but a topic of the blockchain and network; and in the context
of contentious hard-forks it is clear why everyone individually must
evaluate the rules and decide whether they the software is correct, or
whether changes can trivially cause catastrophic broken hard-forks. These
lines of reasoning should be true for everyone, and not merely true for one
person but not another. Users, companies and developers must be aware of
this, even though it's different from their usual expectations of how
systems operate and are maintained. And it is important to be careful to
not misconstrue this to others because it is entirely possible to
unintentionally convince others that traditional and centralized models are
safely applicable here.

I realise some people think this anti-process leads to better decision
Post by Mike Hearn
making. I disagree. It leads to no decision making, which is not the same
thing at all.
Well, if you're talking about the recent disputes regarding a certain patch
to hard-fork the blockchain, a decision to not include such a patch seems
like the very definition of a decision.

Gavin and I say - there is a process, and that process is a hard fork of
Post by Mike Hearn
the block chain.
I doubt that other bitcoin software maintainers would agree with that sort
of toxic reasoning; contentious hard-forks are basically a weapon of war
that you can use against any other collaborator on any bitcoin project. Why
would anyone want to collaborate on such a hostile project? How would they
even trust each other?

- Bryan
http://heybryan.org/
1 512 203 0507
Melvin Carvalho
2015-06-18 18:09:18 UTC
Permalink
Post by Mike Hearn
Dude, calm down. I don't have commit access to Bitcoin Core and Gavin
already said long ago he wouldn't just commit something, even though he has
the ability to do so.
you cannot run a codebase like Wikipedia. Maintainers have to take part in
debates, and then make a decision, and anyone else who was delegated commit
access for robustness or convenience must then respect that decision. It's
the only way to keep a project making progress at a reasonable pace.
This is not a radical position. That's how nearly all coding projects
work. I have been involved with open source for 15 years and the 'single
maintainer who makes decisions' model is normal, even if in some large
codebases subsystems have delegated submaintainers.
This is also how all my own projects are run. Bitcoinj has multiple people
with commit access. Regardless, if there were to be some design dispute or
whatever, I wouldn't tolerate the others with commit access starting some
kind of Wiki-style edit war in the code if they disagreed. Nor would I ever
expect to get my own way in other people's projects by threatening to
revert the maintainers changes.
Core is in the weird position where there's no decision making ability at
all, because anyone who shows up and shouts enough can generate
'controversy', then Wladimir sees there is disagreement and won't touch the
issue in question. So it just runs and runs and *anyone* with commit
access can then block any change.
I realise some people think this anti-process leads to better decision
making. I disagree. It leads to no decision making, which is not the same
thing at all.
Bicoin is not like other projects. There are large financial stakes
involved. I was at a standards convention once and the head of standards
at a large company joked to me:

"We know there are 6 people in the standards world that we can never buy.
So we just buy everyone else".

You have to luck out in a huge way to get a person like that running your
project. Linux has done. Id say bitcoin has been lucky there too. But
have a look at other projects, have a look at the alts, the *last* thing
you want is a dictator in may cases.

Ultimately bitcoin is a ledger based on consensus. There are 3 branches,
the miners, the protocol and the market. They all play a role in
regulating bitcoin and generally on the conservative side (which I think is
a good thing). Whatever your view on the 20MB change, it's not a
*conservative* approach, which is the approach that has served bitcoin very
well so far.

So bitcoin is not like other open source projects, and that's probably
quite a good thing.
Post by Mike Hearn
------------------------------------------------------------------------------
_______________________________________________
Bitcoin-development mailing list
https://lists.sourceforge.net/lists/listinfo/bitcoin-development
odinn
2015-06-18 22:10:42 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I maintain that you should apologize to those who traverse this list.
What you are saying is digging yourself a deeper hole and is not
merely embarrassing but is crossing a threshold in which you have used
words, albeit subtly, to attack a community.

If you refuse to apologize, I get it. You have not apologized thus
far, and pressing for an apology is unlikely to get an (authentic)
one. But then, you should voluntarily step back and let others do the
hard work of coming to the consensus that you seem to think is
impossible to accomplish based on how bitcoin is run.

I believe this matter will be resolved, but not with the "help" of
those who make threatening statements (and who are unable to apologize
for having made them).

- -O
Post by Mike Hearn
Dude, calm down. I don't have commit access to Bitcoin Core and
Gavin already said long ago he wouldn't just commit something, even
though he has the ability to do so.
So why did I say it? Because it's consistent with what I've always
said: you cannot run a codebase like Wikipedia. Maintainers have to
take part in debates, and then make a decision, and anyone else who
was delegated commit access for robustness or convenience must then
respect that decision. It's the only way to keep a project making
progress at a reasonable pace.
This is not a radical position. That's how nearly all coding
projects work. I have been involved with open source for 15 years
and the 'single maintainer who makes decisions' model is normal,
even if in some large codebases subsystems have delegated
submaintainers.
This is also how all my own projects are run. Bitcoinj has
multiple people with commit access. Regardless, if there were to be
some design dispute or whatever, I wouldn't tolerate the others
with commit access starting some kind of Wiki-style edit war in the
code if they disagreed. Nor would I ever expect to get my own way
in other people's projects by threatening to revert the maintainers
changes.
Core is in the weird position where there's no decision making
ability at all, because anyone who shows up and shouts enough can
generate 'controversy', then Wladimir sees there is disagreement
and won't touch the issue in question. So it just runs and runs and
/anyone/ with commit access can then block any change.
I realise some people think this anti-process leads to better
decision making. I disagree. It leads to no decision making, which
is not the same thing at all.
- --
http://abis.io ~
"a protocol concept to enable decentralization
and expansion of a giving economy, and a new social good"
https://keybase.io/odinn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQEcBAEBAgAGBQJVg0HiAAoJEGxwq/inSG8CXOwIAKSGRJPtSx+untgMERwE7lW7
9p0gWz4jvKhyO+RrGPXlofckvp4Fp/7Yxa+TDLcXbzGi6OesX9yIyN7e06LJW4DP
h7V2PwzS49ZyB/krd03HjvWMFnhoGy7zB7M1okq5myIvx+h1htX9TirNbDl7PU9Z
SWyNNw+GXPsIV/xuPu81LP5GrR3gIxwwhhopOq2qcm08AUiuIJ8EA31mT2ZgwMWB
RxrnktFRzMbW2fD7Z7njTz1gjw1duPyGApJ+xpqtcjjS2idPNuw1nESZTCE3+TwG
Dk1AKmYt8TvZzFWyo/0ly7vYFFW27Yh7SC3oeDJBoWkvySuIFrevux7ekfKxPOc=
=wc2m
-----END PGP SIGNATURE-----

------------------------------------------------------------------------------
Continue reading on narkive:
Loading...