> I'm just afraid that the currently simple P2P protocol will turn into a 
zoo of complicated (and potentially buggy/insecure) interactions. 


This is my biggest fear too. I would rather be extremely conservative in making 
any changes to the protocol unless absolutely needed. That includes the bloom 
filters which take away the fact that Bitcoin is stateless.

I was discussing this with another developer who mentioned something 
interesting: that always in the lifecycle of system's development, you see 
increasing complexity during its initial lifecycle as the field is being 
explored. At some later point, the technology matures and becomes standardised. 
At that point enough is known that the system snaps together and the cruft can 
be cut away to reduce the system down to core principles.

It's an interesting viewpoint to consider. I do however advise erring on the 
side of caution. Maybe there needs to a minimum schedule time before a new 
extension can be added to the protocol (except security fixes). If we're not 
careful, the protocol will become enormously huge and kludgy. However maybe as 
that developer pointed out, trying to stall the inevitable is slowing the 
long-term evolution of Bitcoin down.


________________________________
From: Wladimir <laa...@gmail.com>
To: Andy Parkins <andypark...@gmail.com> 
Cc: bitcoin-development@lists.sourceforge.net 
Sent: Saturday, June 16, 2012 10:42 AM
Subject: Re: [Bitcoin-development] Proposed new P2P command and response: 
getcmds, cmdlist


On Sat, Jun 16, 2012 at 10:16 AM, Andy Parkins <andypark...@gmail.com> wrote:


>It's less of a problem in a (nearly) stateless protocol like Bitcoin.
>

It's currently (nearly) stateless, however it would be short-sighted to think 
it will stay that way. State is being introduced as we speak; for example, 
connection-specific filters.

I like the idea of a capabilities command; as time goes on and the ecosystem
>of thin/spv/semi-thin/headers-only/blocks-on-demand/reverse-search-
>blockchain/memory-pool-query clients becomes more varied, it's going to be
>more an more important.  The particular example that occurs is thin clients
>connecting to the network are going to want to ensure they are connected to
>at least one non-thin client.
>

Which is a perfectly reasonable requirement. However, one could simply 
standardize what a 'thin client' and what a 'thick client' does and offers (at 
a certain version level), without having to explicitly enumerate everything 
over the protocol. 

This also makes it easier to deprecate (lack of) certain features later on. You 
can simply drop support for protocol versions before a certain number (which 
has happened before). With the extension system this is much harder, which 
likely means you keep certain workarounds forever. 

Letting the node know of each others capabilities at connection time helps 
somewhat. It'd allow refusing clients that do not implement a certain feature. 
Then again, to me it's unclear what this wins compared to incremental protocol 
versions with clear requirements. 

I'm just afraid that the currently simple P2P protocol will turn into a zoo of 
complicated (and potentially buggy/insecure) interactions. 

So maybe a capability system is a good idea but then the granularity should be 
large, not command-level. The interaction between protocol versions and 
capabilities needs to be defined as well. Does offering "getdata" at protocol 
version 10 mean the same as offering it at protocol version 11"? Probably not 
guaranteed. The arguments might have changed. So it's not entirely 
self-documenting either.

Wladimir

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Bitcoin-development mailing list
Bitcoin-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bitcoin-development

Reply via email to