Вы правы, я должен прочитать код действительно. Протокол определен в коде, а не в спецификации - плюсы: нет затрат на техническое обслуживание, без двусмысленности (в теории); минусы: трудно читать и понимать, трудно сделать другие реализации (в том числе новых версий одной и той же программы). Blockchain вилка произошло потому, что разработчики забыли, что Berkeley DB была частью протокола. Без чтения кода я нахожу это немного неаккуратно.
"нет никакой двусмысленности" <- это именно то, что не удалось. В v0.7, db.h, есть следующая строка:
Класс CTxDB: общественный CDB
Это означает, что создать класс CTxDB, который расширяет класс CDB. Этот класс из внешней библиотеки. Что ЦКБ? Какая версия? Что оно делает? Все эти вещи неоднозначно. Еще раз "включают каждый внешний" библиотека не работает либо; как далеко вы идете? Хотя не как вопрос сейчас, с очень большими блоками, даже тонкие вещи, как разницы в производительности между различными аппаратными реализациями являются может привести к вилы даже с одинаковым программным обеспечением.
Поверьте, разработчики понимают важность этой проблемы очень хорошо. В качестве примера Питер Wuille и другие работают, чтобы предотвратить различия OpenSSL от причинения вилки с IsCanonicalSignature () и подобными. Я случайно не согласен с Гэвином на все, может быть, даже не на большинстве вещей, но я могу согласиться, что он принимает его бросок в подталкивании тестирование и стабильность очень серьезно, так как он был нанят Bitcoin Foundation, и по этому вопросу , даже дальше, чем это.
Там нет простых решений проблемы спецификации, и я действительно думаю, что писать еще одну спецификации в дополнении к несовершенной, которую мы уже имеем в настоящее время отходы ограниченной рабочей силы. Он всегда может быть пустой тратой рабочей силы - Bitcoin в неизведанных территориях информатики с чрезвычайно строгим требованием для достижения консенсуса.