Я изучал код Bitcoin в течение последних нескольких дней в надежде, что это будет легко понять и изменить, но для меня это было довольно трудно понять, что именно происходит. Я думаю, нам нужно упростить код и сделать его более модульным.
Имея четкое основание кода, который следует строгим правилам (такие как даваемый Google) Имеет большое значение для улучшения ремонтопригодности коды и привлечения новых разработчиков. Простота также повышает безопасность как будет меньше векторов атаки по сравнению с усложненной коренастым кодом базы.
Есть несколько решений о Bitcoin, что я не понимаю.
Во-первых, что такое обоснование использования эзотерический эллиптических кривых криптографию, а не стандартный открытый / закрытый ключ шифрования, как используется в PGP или SSH? Если мы хотим отойти от эллиптических кривых, как трудно было бы перевести текущий блок-цепь, так что мы можем перейти к альтернативному клиенту при сохранении всех операций и текущее распределения богатства?
Во-вторых, я считаю, это трудно понять концепцию позади "скриптовый" часть клиента Bitcoin. Почему не связь между клиентами осуществляются с помощью удаленных вызовов процедур, повторного использования какой-RPC библиотеки, которая хорошо проверенная и безопасная, а не изобретать собственный протокол, который не был проверен на безопасность? Клиент Bitcoin должен быть основан на технологии, которая протестирована и было показано, чтобы хорошо работать.
Я думаю, Satoshi был гением для придумывают идеи Bitcoin, но код по умолчанию Bitcoin реализации оставляет желать лучшего с точки зрения ясности и простоты. Для того, чтобы принять Bitcoin на следующий уровень, я думаю, что это важно, что мы сосредоточим наше внимание на упрощение кода и повышения его модульность.
Во-первых, мы должны обеспечить четко документированный C ++ API для библиотеки Bitcoin - libbitcoin. Libbitcoin должны касаться только себя с логикой приложения из Bitcoin, и должны иметь открытый API для отправки и получения монет.
Во-вторых, протокол сети связи должны быть полностью отделены от библиотеки libbitcoin. Libbitcoin должен определить интерфейс, который позволит библиотеке транслировать и получать информацию из сети. Может быть, сеть связи может быть установлен в виде плагинов - где можно загружать множество плагинов связи - текущий Bitcoin Protcol бы один из многих плагинов, будет альтернативы, такие как те, основанные на RPC, другие основаны на RESTful HTTP подключения к Bitcoin клиентов, и, возможно, когда безопасность важна Bitcoin клиенты могут соединяться друг с другом с помощью зашифрованного SSH.
Конечно, все это легче сказать, чем сделать, но я думаю, что мы должны быть в состоянии постепенно достичь этих целей.