Andy Parkins [ARCHIVE] on Nostr: ð
Original date posted:2011-08-10 ðïž Summary of this message: A developer ...
ð
Original date posted:2011-08-10
ðïž Summary of this message: A developer suggests improvements to the Bitcoin protocol, but they are met with resistance due to concerns about backward compatibility and disrupting monetary access.
ð Original message:On Wednesday 10 August 2011 22:35:01 Jeff Garzik wrote:
> On Wed, Aug 10, 2011 at 5:13 PM, Andy Parkins <andyparkins at gmail.com>
wrote:
> > Don't believe me? Here's a list of ideas I've had "no, no, no"d so
> > far; not one of which would have any financial implication at all.
> > Only some of which would break backward compatibility.
>
> Breaking backwards compatibility means breaking people's access to
> their own money.
I wasn't actually giving a full explanation of how these things could be
done, I was providing a list of "negatively received ideas"; imagine my
surprise that they have been negatively received by you.
However... The version number field combined with the massive complexity of:
if( blockNumber > 500000 )
new_process();
else
old_process();
Would sort all of your "compatibility" objections out, and would give nodes
time to upgrade.
> If you remove an "unnecessary" step that existing nodes expect, then
> the cost of disrupting monetary access seems higher than the value of
> that breaking change.
If only there were some way of sending different things to different nodes,
based on some sort of version number field.
> > - Remove verack, as it's completely unnecessary.
>
> Compatibility issues?
if( Version < VERSION_INTRODUCED )
sendVerack();
My point is that you are a clever guy; you are perfectly capable of coming
up with these answers, but you don't want to. Nor does any other bitcoin
developer. The protocol is perfect and there is no way of changing it.
> > - Query miners for pending transactions
>
> I could see value in querying a bitcoind node over JSON-RPC for
> pending transactions... and by extension, supporting that as an RPC on
> various miners' pool servers. Having a local dump of pending TX's
> would be useful.
>
> As an optional bitcoin P2P protocol command, available to anyone,
> seems to negatively impact privacy.
Eh? The transaction list is available on bitcoincharts. If my node had
been connected it would have received that list anyway when each one was
broadcast. What possible privacy loss could there be by making it possible
to request it be repeated?
Again though: the detail isn't the point. It's another half-hearted
objection.
> > - A way of requesting block bodies without headers (saving a lot of
> > traffic for a thin client upgrading)
>
> Do you mean headers without bodies? Gavin wants to work on
> headers-only, from what I've read, but others are welcome to
> contribute patches.
No; I mean being able to ask for just the block without the header. The
reason being that a thin client might request blocks on demand... it's
already got the header and doesn't need it again.
The response: "it's only 80 bytes, blah, blah". 80*150000*N is a non-
trivial amount of traffic.
> > - Double SHA-256 for a packet checksum? Seriously?
>
> Compatibility issues?
Only for the version message. But it would be trivial to do both types of
checksum on the version message, and if either is true to accept the version
message. After which the version is known and a much simpler checksum could
be used for subsequent messages. Eventually the network would be upgraded
enough that the old way can be dropped.
Besides... hasn't TCP already got checksumming? Let's just stop checking
the checksum. Or better still, stop calculating it and sending it. Double
SHA-256 on every single message on every single node to create four checksum
bytes is an enormous waste of CPU.
> > - Sequence number as part of TxIn instead of part of the whole
> > transaction
>
> Compatibility issues?
If only there were a version field in the transaction and block structures.
Again; casual rejection.
> > - Script parameters should be stored outside the script, and reference
> > by the script. All that ridiculous filtering of the scripts in
> > OP_CHECKSIG would then go away.
>
> Compatibility issues?
See above.
> > - MSG_DOUBLESPEND... nope
>
> Does consensus want this?
No, "consensus" doesn't. I was simply listing all the ideas that got
rejected out of hand. The reason "consensus" doesn't think this one is
necessary is because "we can already detect double spends by being widely
connected"; ignoring the fact that a light or intermittently connected
client would not be widely connected. But that's okay because "eventually
payment processors will appear". Yep, my idea for fixing bitcoin is stupid
because eventually someone else will mitigate it.
> > - getblocks to accept MSG_TX and do something sensible
>
> Link to elaboration of use case and need?
It was a few weeks ago; and it was an email from me about getblocks
enhancements. It was patronisingly laughed off as being something that all
you newbie "alternative client" writers go through.
The use case is an on-demand thin client that wants to find the block that
contains a particular transaction ID without downloading and indexing every
single block in the chain. Additionally, _I_ plan to separate the block
chain and wallet executables, so much so that the wallet executable doesn't
necessarily need a local blockchain node and relies on a partially trusted
remote -- it still wants to be able to do spot checks on that remote, and
confirm whatever it's told. I would like to be able to do that using only
commands that are in the official protocol; but I'm rapidly coming to accept
that nothing I ask for will ever go in because there is no "use case".
> Well, one unfortunate current aspect of bitcoin is... there seem to
> be problems aplenty right now :)
As with every project.
However, the protocol is being treated as if it is some kind of holy scroll,
and must not be touched. Bitcoin's ideas are revolutionary, its
implementation is not. If we started again today, it would be done
differently. Shouldn't we be trying to move the current protocol toward
_that_ "done differently" as much as possible while bitcoin is still
relatively small? Rhetorical again... I know the answer, it's "no".
What exactly do the developers mean when they keep talking about bitcoin as
"experimental"? It seems to me they mean "incredibly conservative, with no
changes for the rest of time".
> However demotivating it may be, keeping the current system running
> must take priority over new features.
Nothing I've suggested was to "stop the current system". I'm not even
asking for developers to prioritise my ideas. I would just like mine, or
anyone's ideas to not be instantly rejected out of hand. I mean for
goodness sake, even "splitting into multiple executables" has been stomped
on in this very thread. If something as trivial as that is "impossible"
what chance is there that I would ever get "Change the 64-bit timestamp
field to be microseconds since the epoch instead of seconds" in?
> I also heartily encourage others to do something I always want to do,
> but for lack of time: work on the design for bitcoin v2 ("theme: any
> breaking change is acceptable, it is a new block chain") There you
> may improve the protocol, get rid of the patent-cloudy ECDSA, use
> google's protocol buffers for encoding, make the proof-of-work
> algorithm memory-intensive, and other excellent, thoughtful
> breaking-change suggestions that have been made.
There is a popular idea that some other cryptocurrency will come along and
displace bitcoin. It's not going to happen. Networking effects mean that
there is no reason for people to change. I can just see the queue around
the block now for bitcoin.2; identical in function to bitcoin except it
"doesn't use ECDSA and the it uses protocol buffers on the wire, and uses
more memory". Wow; there's a set of unique selling points. I'll get signs
made.
Let's be practical: technical-only improvements _have_ to be to bitcoin.1.
Bitcoin's financial features are already complete or in progress; and it is
financial features that would make people migrate to a competitor. Nobody
is going to move to bitcoin.v2 because the source code has better comments.
> Securing the integrity of money means that a lot of implementation
> decisions have been cemented into stone, however much we may
> personally dislike them. Backwards compatibility is paramount.
I disagree about how set in stone these things are; but yeah; I've accepted
that I'm on a loser. My list was to demonstrate how negative the community
is; and you have confirmed that for me admirably. Bear that in mind the
next time you're discussing the lack of manpower for bug fixes.
Andy
--
Dr Andy Parkins
andyparkins at gmail.com
Published at
2023-06-07 02:14:19Event JSON
{
"id": "a8a1070dd37ffd56290372487eee575ff9b3507b200477f118751202c23e52ec",
"pubkey": "99bec497728c848e65549d1a5257d08de97621edcb4b77073269a45dac708d59",
"created_at": 1686104059,
"kind": 1,
"tags": [
[
"e",
"fe8ae56772ad6135ef8f3cc5e223de1011f21616a51d5302085d2b9ebf339345",
"",
"root"
],
[
"e",
"19d9c8cbb3ccb891dbd077634a619234715fc3b578e5878af87c3d936ef7fab9",
"",
"reply"
],
[
"p",
"b25e10e25d470d9b215521b50da0dfe7a209bec7fedeb53860c3e180ffdc8c11"
]
],
"content": "ð
Original date posted:2011-08-10\nðïž Summary of this message: A developer suggests improvements to the Bitcoin protocol, but they are met with resistance due to concerns about backward compatibility and disrupting monetary access.\nð Original message:On Wednesday 10 August 2011 22:35:01 Jeff Garzik wrote:\n\n\u003e On Wed, Aug 10, 2011 at 5:13 PM, Andy Parkins \u003candyparkins at gmail.com\u003e \nwrote:\n\u003e \u003e Don't believe me? Here's a list of ideas I've had \"no, no, no\"d so\n\u003e \u003e far; not one of which would have any financial implication at all.\n\u003e \u003e Only some of which would break backward compatibility.\n\u003e \n\u003e Breaking backwards compatibility means breaking people's access to\n\u003e their own money.\n\nI wasn't actually giving a full explanation of how these things could be \ndone, I was providing a list of \"negatively received ideas\"; imagine my \nsurprise that they have been negatively received by you.\n\nHowever... The version number field combined with the massive complexity of:\n\n if( blockNumber \u003e 500000 )\n new_process();\n else\n old_process();\n\nWould sort all of your \"compatibility\" objections out, and would give nodes \ntime to upgrade.\n\n\u003e If you remove an \"unnecessary\" step that existing nodes expect, then\n\u003e the cost of disrupting monetary access seems higher than the value of\n\u003e that breaking change.\n\nIf only there were some way of sending different things to different nodes, \nbased on some sort of version number field.\n\n\u003e \u003e - Remove verack, as it's completely unnecessary.\n\u003e \n\u003e Compatibility issues?\n\n if( Version \u003c VERSION_INTRODUCED )\n sendVerack();\n\nMy point is that you are a clever guy; you are perfectly capable of coming \nup with these answers, but you don't want to. Nor does any other bitcoin \ndeveloper. The protocol is perfect and there is no way of changing it.\n\n\u003e \u003e - Query miners for pending transactions\n\u003e \n\u003e I could see value in querying a bitcoind node over JSON-RPC for\n\u003e pending transactions... and by extension, supporting that as an RPC on\n\u003e various miners' pool servers. Having a local dump of pending TX's\n\u003e would be useful.\n\u003e \n\u003e As an optional bitcoin P2P protocol command, available to anyone,\n\u003e seems to negatively impact privacy.\n\nEh? The transaction list is available on bitcoincharts. If my node had \nbeen connected it would have received that list anyway when each one was \nbroadcast. What possible privacy loss could there be by making it possible \nto request it be repeated?\n\nAgain though: the detail isn't the point. It's another half-hearted \nobjection.\n\n\u003e \u003e - A way of requesting block bodies without headers (saving a lot of\n\u003e \u003e traffic for a thin client upgrading)\n\u003e \n\u003e Do you mean headers without bodies? Gavin wants to work on\n\u003e headers-only, from what I've read, but others are welcome to\n\u003e contribute patches.\n\nNo; I mean being able to ask for just the block without the header. The \nreason being that a thin client might request blocks on demand... it's \nalready got the header and doesn't need it again.\n\nThe response: \"it's only 80 bytes, blah, blah\". 80*150000*N is a non-\ntrivial amount of traffic.\n\n\u003e \u003e - Double SHA-256 for a packet checksum? Seriously?\n\u003e \n\u003e Compatibility issues?\n\nOnly for the version message. But it would be trivial to do both types of \nchecksum on the version message, and if either is true to accept the version \nmessage. After which the version is known and a much simpler checksum could \nbe used for subsequent messages. Eventually the network would be upgraded \nenough that the old way can be dropped.\n\nBesides... hasn't TCP already got checksumming? Let's just stop checking \nthe checksum. Or better still, stop calculating it and sending it. Double \nSHA-256 on every single message on every single node to create four checksum \nbytes is an enormous waste of CPU.\n\n\u003e \u003e - Sequence number as part of TxIn instead of part of the whole\n\u003e \u003e transaction\n\u003e \n\u003e Compatibility issues?\n\nIf only there were a version field in the transaction and block structures.\n\nAgain; casual rejection.\n\n\u003e \u003e - Script parameters should be stored outside the script, and reference\n\u003e \u003e by the script. All that ridiculous filtering of the scripts in\n\u003e \u003e OP_CHECKSIG would then go away.\n\u003e \n\u003e Compatibility issues?\n\nSee above.\n\n\u003e \u003e - MSG_DOUBLESPEND... nope\n\u003e \n\u003e Does consensus want this?\n\nNo, \"consensus\" doesn't. I was simply listing all the ideas that got \nrejected out of hand. The reason \"consensus\" doesn't think this one is \nnecessary is because \"we can already detect double spends by being widely \nconnected\"; ignoring the fact that a light or intermittently connected \nclient would not be widely connected. But that's okay because \"eventually \npayment processors will appear\". Yep, my idea for fixing bitcoin is stupid \nbecause eventually someone else will mitigate it.\n\n\u003e \u003e - getblocks to accept MSG_TX and do something sensible\n\u003e \n\u003e Link to elaboration of use case and need?\n\nIt was a few weeks ago; and it was an email from me about getblocks \nenhancements. It was patronisingly laughed off as being something that all \nyou newbie \"alternative client\" writers go through.\n\nThe use case is an on-demand thin client that wants to find the block that \ncontains a particular transaction ID without downloading and indexing every \nsingle block in the chain. Additionally, _I_ plan to separate the block \nchain and wallet executables, so much so that the wallet executable doesn't \nnecessarily need a local blockchain node and relies on a partially trusted \nremote -- it still wants to be able to do spot checks on that remote, and \nconfirm whatever it's told. I would like to be able to do that using only \ncommands that are in the official protocol; but I'm rapidly coming to accept \nthat nothing I ask for will ever go in because there is no \"use case\".\n\n\u003e Well, one unfortunate current aspect of bitcoin is... there seem to\n\u003e be problems aplenty right now :)\n\nAs with every project.\n\nHowever, the protocol is being treated as if it is some kind of holy scroll, \nand must not be touched. Bitcoin's ideas are revolutionary, its \nimplementation is not. If we started again today, it would be done \ndifferently. Shouldn't we be trying to move the current protocol toward \n_that_ \"done differently\" as much as possible while bitcoin is still \nrelatively small? Rhetorical again... I know the answer, it's \"no\".\n\nWhat exactly do the developers mean when they keep talking about bitcoin as \n\"experimental\"? It seems to me they mean \"incredibly conservative, with no \nchanges for the rest of time\".\n\n\u003e However demotivating it may be, keeping the current system running\n\u003e must take priority over new features.\n\nNothing I've suggested was to \"stop the current system\". I'm not even \nasking for developers to prioritise my ideas. I would just like mine, or \nanyone's ideas to not be instantly rejected out of hand. I mean for \ngoodness sake, even \"splitting into multiple executables\" has been stomped \non in this very thread. If something as trivial as that is \"impossible\" \nwhat chance is there that I would ever get \"Change the 64-bit timestamp \nfield to be microseconds since the epoch instead of seconds\" in?\n\n\u003e I also heartily encourage others to do something I always want to do,\n\u003e but for lack of time: work on the design for bitcoin v2 (\"theme: any\n\u003e breaking change is acceptable, it is a new block chain\") There you\n\u003e may improve the protocol, get rid of the patent-cloudy ECDSA, use\n\u003e google's protocol buffers for encoding, make the proof-of-work\n\u003e algorithm memory-intensive, and other excellent, thoughtful\n\u003e breaking-change suggestions that have been made.\n\nThere is a popular idea that some other cryptocurrency will come along and \ndisplace bitcoin. It's not going to happen. Networking effects mean that \nthere is no reason for people to change. I can just see the queue around \nthe block now for bitcoin.2; identical in function to bitcoin except it \n\"doesn't use ECDSA and the it uses protocol buffers on the wire, and uses \nmore memory\". Wow; there's a set of unique selling points. I'll get signs \nmade.\n\nLet's be practical: technical-only improvements _have_ to be to bitcoin.1. \nBitcoin's financial features are already complete or in progress; and it is \nfinancial features that would make people migrate to a competitor. Nobody \nis going to move to bitcoin.v2 because the source code has better comments.\n\n\u003e Securing the integrity of money means that a lot of implementation\n\u003e decisions have been cemented into stone, however much we may\n\u003e personally dislike them. Backwards compatibility is paramount.\n\nI disagree about how set in stone these things are; but yeah; I've accepted \nthat I'm on a loser. My list was to demonstrate how negative the community \nis; and you have confirmed that for me admirably. Bear that in mind the \nnext time you're discussing the lack of manpower for bug fixes.\n\n\n\nAndy\n\n-- \nDr Andy Parkins\nandyparkins at gmail.com",
"sig": "70143693f3d41c885d4b3b81f0af3d2aafb9e84150a6d2984c7c00731b696ad20b7b8c7737fd1484bff659c831c36451f860e07410edd4537671698325cdbec0"
}