Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1QrHmO-0004f0-Dn for bitcoin-development@lists.sourceforge.net; Wed, 10 Aug 2011 23:01:40 +0000 Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.161.47 as permitted sender) client-ip=209.85.161.47; envelope-from=andyparkins@gmail.com; helo=mail-fx0-f47.google.com; Received: from mail-fx0-f47.google.com ([209.85.161.47]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1QrHmN-0000bP-CL for bitcoin-development@lists.sourceforge.net; Wed, 10 Aug 2011 23:01:40 +0000 Received: by fxg11 with SMTP id 11so2191371fxg.34 for ; Wed, 10 Aug 2011 16:01:33 -0700 (PDT) Received: by 10.223.47.9 with SMTP id l9mr11822098faf.55.1313015907879; Wed, 10 Aug 2011 15:38:27 -0700 (PDT) Received: from grissom.localnet ([91.84.15.31]) by mx.google.com with ESMTPS id l22sm1073483fam.13.2011.08.10.15.38.25 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 10 Aug 2011 15:38:26 -0700 (PDT) From: Andy Parkins To: Jeff Garzik Date: Wed, 10 Aug 2011 23:38:21 +0100 User-Agent: KMail/1.13.6 (Linux/2.6.39-2-686-pae; KDE/4.6.4; i686; ; ) References: <201108102213.09632.andyparkins@gmail.com> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201108102338.21680.andyparkins@gmail.com> X-Spam-Score: -1.6 (-) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andyparkins[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.0 AWL AWL: From: address is in the auto white-list X-Headers-End: 1QrHmN-0000bP-CL Cc: bitcoin-development@lists.sourceforge.net Subject: Re: [Bitcoin-development] Change to multiple executables? X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Aug 2011 23:01:40 -0000 On Wednesday 10 August 2011 22:35:01 Jeff Garzik wrote: > On Wed, Aug 10, 2011 at 5:13 PM, Andy Parkins 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@gmail.com