Pages:
Author

Topic: Does a Request for Comments (RFC) for the Bitcoin protocol exist? - page 3. (Read 4563 times)

legendary
Activity: 2856
Merit: 1520
Bitcoin Legal Tender Countries: 2 of 206
the source code of the reference client is open source. it does not prevent to have fork implemetations in the future which will dominate in the wild.
And a written standard that is not the reference client also does not prevent fork implementations in the future that will dominate in the wild. So what do you gain from having a written standard that is not the reference client?

there should be common accepted standard by several group of interests which are operate with the Internet.

EDIT: please understand that this is a base of wide adoption of a certain subject. Wink
hero member
Activity: 836
Merit: 1030
bits of proof
. . . What I claim is that the standard can not be simple the Satoshi client, since that is not a constant either.
Standards get updated.  The reference client gets updated. What's the difference?
The difference is that network nodes are not upgrading atomically to 100%. Therefore even the Satoshi client can cause a fork if changing behavior.

The method we avoid this is testing. The tests actually capture the behavior of old versions and therefore converge to a standard.
hero member
Activity: 675
Merit: 514
Some people think that if it can't be standardized then the whole thing is a bad hack and has no future.
legendary
Activity: 3472
Merit: 4794
. . . What I claim is that the standard can not be simple the Satoshi client, since that is not a constant either.
Standards get updated.  The reference client gets updated. What's the difference?

If we print out the source code for the reference client and put a "Bitcoin Standard Number #####" on top of the print out, isn't that a "written" definition of the current standard?
legendary
Activity: 3472
Merit: 4794
the source code of the reference client is open source. it does not prevent to have fork implemetations in the future which will dominate in the wild.
And a written standard that is not the reference client also does not prevent fork implementations in the future that will dominate in the wild. So what do you gain from having a written standard that is not the reference client?
legendary
Activity: 2856
Merit: 1520
Bitcoin Legal Tender Countries: 2 of 206
the question is not about habits of developers and their implementations of the protocol it is about standardization of the Bitcoin protocol

The Bitcoin wire protocol is a cake that can be defined in plain text like RFCs, but the requirement however that it has to converge to the same internal state at every node (that is ultimately the UTXO set) is a non-trivial algorithm that likely needs creative ways of standardizing including using programs to define.

What I claim is that the standard can not be simple the Satoshi client, since that is not a constant either.

agree completely.
hero member
Activity: 836
Merit: 1030
bits of proof
the question is not about habits of developers and their implementations of the protocol it is about standardization of the Bitcoin protocol

The Bitcoin wire protocol is a cake that can be defined in plain text like RFCs, but the requirement that it has to converge to the same internal state at every node (that is ultimately the UTXO set) is a non-trivial algorithm that likely needs creative ways of standardizing including using programs to define.

What I claim is that the standard can not be simple the Satoshi client, since that is not a constant either.
legendary
Activity: 2856
Merit: 1520
Bitcoin Legal Tender Countries: 2 of 206
the question is not about habits of developers and their implementations of the protocol it is about standardization of the Bitcoin protocol rules (https://en.bitcoin.it/wiki/Protocol_rules) to get it out from group of interests and make it available as a standard as part of the Internet standards.
And the point being made by the quotes I attached aren't about the habits of developers and their implementations of the protocol. It's pointing out that the source code of the reference client is the standardization of the Bitcoin Protocol rules, and that a really good set of test cases is the best way to ensure that any new code base properly implements that standard.

the source code of the reference client is open source. it does not prevent to have fork implemetations in the future which will dominate in the wild.
legendary
Activity: 3472
Merit: 4794
the question is not about habits of developers and their implementations of the protocol it is about standardization of the Bitcoin protocol rules (https://en.bitcoin.it/wiki/Protocol_rules) to get it out from group of interests and make it available as a standard as part of the Internet standards.
And the point being made by the quotes I attached aren't about the habits of developers and their implementations of the protocol. It's pointing out that the source code of the reference client is the standardization of the Bitcoin Protocol rules, and that a really good set of test cases is the best way to ensure that any new code base properly implements that standard.
legendary
Activity: 2856
Merit: 1520
Bitcoin Legal Tender Countries: 2 of 206
Yes we should start working on a standard, since diversity of node code bases is inevitable.

Adoption of new releases of the standard client will never be 100% and there are use cases
it does not serve well, so people are patching or using alternate implementations.

Creating a precise standard is something the bitcoin foundation should consider sponsoring.

In my experience, developers are really good at either ignoring documentation or interpreting it in a way different than the way the author intended.

And spec authors are really good at getting details wrong, no matter how careful they are. And they're really bad at keeping track of changes.

That's why I spent a lot of time over the past year developing test cases and tools that you can run your code against instead of writing specs.

I may just be cynical because I spent so much time in 1997 working on the ISO/IEC-14772-1 Official, Formal Standard.

It bothers me that this topic keeps coming up. The fact that Bitcoin is different to other technologies isn't intuitive but by the time you're writing an actual implementation, it should be obvious. Maybe it's worth reading the thread with grau about his reimplementation also?

The fact is that re-implementing Bitcoin exposes not only you, but all participants, to a class of "chain splitting" bugs that don't really exist in other network technologies, or at least are nowhere near as severe . . . When you reimplement Bitcoin, it's not enough to build things as you think they should work. You have to implement them exactly as Satoshi did, including all his bugs. And because some parts of the protocol are directly exposed to underlying libraries like OpenSSL, you have to match their behaviour exactly as well, including all their bugs. Failure to do so can lead to people losing money.

At some point, if you realize you have to match the behaviour of another codebase exactly, down to the tiniest detail, you realize that the only precise enough specification for that is the source code . . .

the question is not about habits of developers and their implementations of the protocol it is about standardization of the Bitcoin protocol rules (https://en.bitcoin.it/wiki/Protocol_rules) to take it out from group of interests and make it available as a standard as part of the Internet standards.
hero member
Activity: 836
Merit: 1030
bits of proof
I do see the validity of Gavin's and Mike's arguments as well as think it is not realistic to assume node code base will remain or is homogenous.

The standard we need is likely not (just) plain text like RFCs, but elaborate test cases and test tools that set the standard for all implementations and releases. We are actually moving into that direction. Every test case that is created is a piece of standard.
legendary
Activity: 3472
Merit: 4794
Yes we should start working on a standard, since diversity of node code bases is inevitable.

Adoption of new releases of the standard client will never be 100% and there are use cases
it does not serve well, so people are patching or using alternate implementations.

Creating a precise standard is something the bitcoin foundation should consider sponsoring.

In my experience, developers are really good at either ignoring documentation or interpreting it in a way different than the way the author intended.

And spec authors are really good at getting details wrong, no matter how careful they are. And they're really bad at keeping track of changes.

That's why I spent a lot of time over the past year developing test cases and tools that you can run your code against instead of writing specs.

I may just be cynical because I spent so much time in 1997 working on the ISO/IEC-14772-1 Official, Formal Standard.

It bothers me that this topic keeps coming up. The fact that Bitcoin is different to other technologies isn't intuitive but by the time you're writing an actual implementation, it should be obvious. Maybe it's worth reading the thread with grau about his reimplementation also?

The fact is that re-implementing Bitcoin exposes not only you, but all participants, to a class of "chain splitting" bugs that don't really exist in other network technologies, or at least are nowhere near as severe . . . When you reimplement Bitcoin, it's not enough to build things as you think they should work. You have to implement them exactly as Satoshi did, including all his bugs. And because some parts of the protocol are directly exposed to underlying libraries like OpenSSL, you have to match their behaviour exactly as well, including all their bugs. Failure to do so can lead to people losing money.

At some point, if you realize you have to match the behaviour of another codebase exactly, down to the tiniest detail, you realize that the only precise enough specification for that is the source code . . .
hero member
Activity: 836
Merit: 1030
bits of proof
Yes we should start working on a standard, since diversity of node code bases is inevitable.

Adoption of new releases of the standard client will never be 100% and there are use cases
it does not serve well, so people are patching or using alternate implementations.

Creating a precise standard is something the bitcoin foundation should consider sponsoring.
legendary
Activity: 2856
Merit: 1520
Bitcoin Legal Tender Countries: 2 of 206
There are RFCs for SMTP (RFC 821), E-Mail-Format (RFC 822) and others. Is this also existing for the Bitcoin protocol?
Pages:
Jump to: