Bitcoin Forum
April 18, 2024, 11:32:39 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: End the Confusion - Organizing the Protocol development effort  (Read 2061 times)
RHorning (OP)
Full Member
***
Offline Offline

Activity: 224
Merit: 141


View Profile
January 07, 2011, 12:03:49 PM
 #1

For many of those who are forum regulars, you should know that I started a documentation effort with the old doku wiki here:
http://www.bitcoin.org/wiki/doku.php?id=bitcoins_draft_spec_0_0_1

In addition, with the move of the "documentation" to bitcoin.it, there is now a new effort here:
https://en.bitcoin.it/wiki/Protocol_specification

Furthermore, there are additional efforts to formally document the protocol at the following locations:


In addition, there is always the C++ code of the reference implementation of the Bitcoin client itself that "documents" the protocol by way of the source code itself.

Mind you, I'm not here telling anybody that they shouldn't try to start their own documentation effort for the protocol, but I think it would be to a great advantage to everybody involved if we all worked together rather than having this accomplished as a bunch of different and separate efforts.  More significantly, I would like to get a forum or some place where we as a community can intelligently debate and discuss the internal workings of the software and specifically do either a "cleanup" of the protocol or to rationally make changes to the overall protocol that can be beneficial.

Some of this is planning ahead and trying to anticipate the needs of the community, but I would like to point out that this network protocol really is bitcoin in its most raw and base level.  From long experience I've seen how coding first and documenting later can be a bad thing once you are trying to put some stability to some software.

Yes, there is a need to do rapid prototyping when you aren't sure about how to proceed with a software development project, and sometimes you can get ahead of yourself where you keep coding, but with the thousands of dollars (and other kinds of currencies) now invested into Bitcoins and (we all hope) soon to be millions involved, it is about time we also discuss just how the "protocol development" ought to proceed.  Some new structures were introduced into the Bitcoin software v 0.3.17 and while there has been some introduction to those structures, I think it would be wise to debate those structures in a public forum before they get implemented in software more completely.  There are also other ideas which have been discussed elsewhere, including perhaps things related to the "Bitcoin-DNS" projects and other "extensions" to Bitcoin that may prove to be useful.

In other words, I am also calling for a more formal approach to the protocol development.  This is not really a technical issue so much as a political issue.  Enough of the protocol has now been documented that alternate implementations of the protocol are now possible based strictly off of this documentation, and Bitcoin is about to hit a new level of organization where people using this documentation will take the concept of cryptocurrency to many new directions.  With web protocols, we have the "world wide web consortium", and of course with more general network protocols we have the IETF.  How can or should the "governance" of the bitcoin protocol happen, and in what ways can changes to bitcoin help benefit the community?

More specifically, I'd like to end the confusion and make at least one documentation effort more or less "semi-official" at the moment by general community consensus, but at the same time we ought to be discussing where we can or should go from here with this documentation effort too.  To me it seems to be the wrong way to get things accomplished by publishing code and expecting the documentation to catch up... at least if the goal is to stabilize the network.  There are also some "flaws" in Bitcoin which also need to be intelligently discussed, including known weaknesses with the current specification.
1713439959
Hero Member
*
Offline Offline

Posts: 1713439959

View Profile Personal Message (Offline)

Ignore
1713439959
Reply with quote  #2

1713439959
Report to moderator
1713439959
Hero Member
*
Offline Offline

Posts: 1713439959

View Profile Personal Message (Offline)

Ignore
1713439959
Reply with quote  #2

1713439959
Report to moderator
The network tries to produce one block per 10 minutes. It does this by automatically adjusting how difficult it is to produce blocks.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713439959
Hero Member
*
Offline Offline

Posts: 1713439959

View Profile Personal Message (Offline)

Ignore
1713439959
Reply with quote  #2

1713439959
Report to moderator
Gavin Andresen
Legendary
*
Offline Offline

Activity: 1652
Merit: 2216


Chief Scientist


View Profile WWW
January 07, 2011, 03:01:44 PM
 #2

I think it would be to a great advantage to everybody involved if we all worked together rather than having this accomplished as a bunch of different and separate efforts.

Good idea.  I vote for the new wiki as the right spot, with the Discussion pages there as the place to bring up issues with the documentation/etc.

I'll put a pointer to the new wiki at the beginning of my bitcointools NOTES.txt.

Quote
  More significantly, I would like to get a forum or some place where we as a community can intelligently debate and discuss the internal workings of the software and specifically do either a "cleanup" of the protocol or to rationally make changes to the overall protocol that can be beneficial.

Do we need a separate forum specifically for network-related stuff?  Seems to me the Development forum here is the right place for those kinds of discussions.

How often do you get the chance to work on a potentially world-changing project?
RHorning (OP)
Full Member
***
Offline Offline

Activity: 224
Merit: 141


View Profile
January 07, 2011, 03:44:34 PM
 #3

Do we need a separate forum specifically for network-related stuff?  Seems to me the Development forum here is the right place for those kinds of discussions.

I'm referring to the definition of "forum" meaning "a place to get together and discuss things of a common interest", not something mechanical or specific to any given piece of software or any configurations like setting up another section in the current forums.  We just need a common place to communicate about the networking protocols, and yes the technical forum is fine.

There is the mega-thread about the protocol development that is here which serves the purpose of the technical side of things:

http://bitcointalk.org/index.php?topic=1860.0

Until that thread starts to become fractured in the discussions and needs multiple threads to keep up, that should serve our purposes for now.  I am open, however, to discuss any other venues or places to communicate.  As I said, this is a political and not a technical issue, as it is about how the future of Bitcoin ought to be developed.  I'm referring to the meta discussion about how we should proceed and where discussion ought to happen.
Hal
VIP
Sr. Member
*
Offline Offline

Activity: 314
Merit: 3853



View Profile
January 07, 2011, 06:50:14 PM
 #4

In addition to documenting the on-the-wire protocol, I think we should document the rules a peer should follow. Some rules are for behaving cooperatively, such as participating in the flood-based broadcasting. Others are for using the network safely, how and when to validate incoming blocks and other data. I think you have some of this in the original wiki page RHorning, but I'm not sure it has all propagated to the new wiki.


Hal Finney
Cdecker
Hero Member
*****
Offline Offline

Activity: 489
Merit: 504



View Profile WWW
January 08, 2011, 03:14:47 AM
 #5

As the original author of the pybitcoin document my vote goes to the Wiki too.  As for the evolution of the protocol it can only improve, little endian, strange design choices like unsigned int 64 length fields and then fixed size fields are a really strange mix.

Also we need to create a minimalistic core protocol with places to extend (see the capabilities discussion on this forum) : make it easy for people to implement the core and make it hard to get it wrong!

I was even starting to think about creating my own protocol with gateways to the existing one just to get it right with a well thought through structure.

Want to see what developers are chatting about? http://bitcoinstats.com/irc/bitcoin-dev/logs/
Bitcoin-OTC Rating
jgarzik
Legendary
*
Offline Offline

Activity: 1596
Merit: 1091


View Profile
January 08, 2011, 03:23:17 AM
 #6

Also we need to create a minimalistic core protocol with places to extend (see the capabilities discussion on this forum) : make it easy for people to implement the core and make it hard to get it wrong!

A brand new protocol is quite the new and separate effort from simply documenting the existing protocol.

Jeff Garzik, Bloq CEO, former bitcoin core dev team; opinions are my own.
Visit bloq.com / metronome.io
Donations / tip jar: 1BrufViLKnSWtuWGkryPsKsxonV2NQ7Tcj
da2ce7
Legendary
*
Offline Offline

Activity: 1222
Merit: 1016


Live and Let Live


View Profile
January 08, 2011, 06:02:23 AM
 #7

Also we need to create a minimalistic core protocol with places to extend (see the capabilities discussion on this forum) : make it easy for people to implement the core and make it hard to get it wrong!

A brand new protocol is quite the new and separate effort from simply documenting the existing protocol.

I have come to the conclusion that the protocol 'as implemented' is pretty much set-in-stone.  While small modifications may be made in the future for security, the block will be the same as now in 50 years time.

The only thing that will change, is how we distribute and share the blocks between clients.

One off NP-Hard.
Mike Hearn
Legendary
*
Offline Offline

Activity: 1526
Merit: 1128


View Profile
January 08, 2011, 11:53:59 AM
 #8

Yeah, I can imagine future new protocol messages being done differently, but the way BitCoin works practically ensures there's no point in trying to change the existing protocol. The hashes are all calculated over raw messages pretty much so it's impossible to (say) make everything big endian, or change the sizes of certain fields, without starting a new block chain.

Fortunately most successful protocols in the world are fairly quirky so I don't think this will stop BitCoin from going places Smiley
Cdecker
Hero Member
*****
Offline Offline

Activity: 489
Merit: 504



View Profile WWW
January 08, 2011, 12:15:02 PM
 #9

Yeah, I guess there's no point in changing the protocol in depth, but we can still add places to create backward compatible changes, make the protocol extensible.

I had some pretty big issues implementing the protocol in Java, due to the endianness, but I worked around it, so that's fine, even if it's a bit of a byte array copy hell Cheesy

What I do hate however is the ever increasing version number. A new version of the main client increases the version and it is impossible to distinguish whether another implementation is still compatible, the version number should be used for the protocol version and not for the client version (there's the version string for that).

Want to see what developers are chatting about? http://bitcoinstats.com/irc/bitcoin-dev/logs/
Bitcoin-OTC Rating
marcusaurelius
Newbie
*
Offline Offline

Activity: 37
Merit: 0



View Profile
January 09, 2011, 06:28:37 PM
 #10

What I do hate however is the ever increasing version number. A new version of the main client increases the version and it is impossible to distinguish whether another implementation is still compatible, the version number should be used for the protocol version and not for the client version (there's the version string for that).

+1

the protocol needs to be independent of the 'official' client. ideally the client is updated frequently for performance and ui improvements, the protocol changes little or not at all.
Cdecker
Hero Member
*****
Offline Offline

Activity: 489
Merit: 504



View Profile WWW
January 09, 2011, 07:09:36 PM
 #11

So far I count 3 votes for the new Wiki, and none for the other options. I'll go ahead and mark the Wiki and the stub on http://code.google.com/p/pybitcoin/wiki/BitcoinProtocol as obsolete, and start referring to bitcoin.it instead.

Want to see what developers are chatting about? http://bitcoinstats.com/irc/bitcoin-dev/logs/
Bitcoin-OTC Rating
RHorning (OP)
Full Member
***
Offline Offline

Activity: 224
Merit: 141


View Profile
January 11, 2011, 11:00:07 PM
 #12

I want to thank everybody for their feedback on this issue.  I've been hesitant to get involved on the bitcoin.it wiki mainly because I don't want to seem like intruding into somebody else's project without at least discussing the issues first and knowing where they were coming from.  If that is going to be at least the new place that can be used to document the protocol, I'm encouraged by the thought and will try to move over the rest of the information on the Doku wiki that is applicable.

I believe that once this protocol is fully documented, it will be a great benefit to the community as a whole in ways that are not seen at the moment.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!