btcd является альтернативной реализацией полного узла протокола Bitcoin написанного в Go и в настоящее время в стадии активного развития. btcd был в стадии разработки в течение 10 недель, а исходный код почти готов для публичного релиза. Мы считаем, что, предоставляя альтернативу bitcoind мы можем существенно улучшить разнообразие и упругость Bitcoin экосистемы и инфраструктуры.
Ряд из нас конформных систем держало глаз на Bitcoin в качестве пассивных наблюдателей в течение последних нескольких лет, так как Bitcoin сочетает в себе технологии, которые уже представляют интерес для нас: практическое применение криптографии, распределенных систем и электронных платежей. В январе 2013 года у меня был один из наших разработчиков, Дэвид Хилл, попытку порта bitcoind и его GUI для Bitrig, ОС, что некоторые из наших разработчиков раздвоенный из OpenBSD. Дэвид столкнулся с рядом проблем с портированием на Bitrig и в процессе обнаружили проблемы с юнит-тестов, непереносимых функций и посевом в ПСЧ. Прижмите, чтобы получить порт полным, это было ясно, что потребуется гораздо больше усилий, чем обычно, чтобы завершить этот порт. После просмотра этих проблем с портированием, я чувствовал, что Bitcoin экосистема может использовать альтернативу bitcoind.
До запуска на btcd, большинство наших разработчиков не было написано почти исключительно в C. Наш технический директор Марко Peereboom, и разработчики были толкая на новый проект полностью написана на Go. Дать bitcoind замену казалось интересным проектом, который займет менее 6 месяцев. После обсуждения на btcd началось всерьез, стало ясно, что с помощью Go предложил ряд преимуществ по сравнению с C или C ++, особенно для финансового обеспечения:
- комплексное испытание инфраструктуры
- нет активного управления памятью
- стандартное форматирование
- независимый от платформы код
- проще параллелизм
- практически ударостойкий
- встроенный в профилирующих и документации объектов
Наиболее важная особенность Go в контексте btcd является тестовой инфраструктурой: при наличии надежной инфраструктуры тестовой с самого начала, весь код может и должен иметь тестовое покрытие. Имея полный охват теста будет гарантировать, что большинство ошибок пойманы в начале цикла разработки, прежде чем они вызывают широко распространенные проблемы. Поскольку btcd является финансовое обеспечение и ошибки могут привести к потере кого-то деньги, мы принимаем тестовое покрытие особенно серьезно.
btcd является работа в прогресс, и мы будем делать первый выпуск исходного кода в ближайшие пару недель. На данный момент мы имеем тестовое покрытие около 40% на нашем коде, но мы будем расширять наше тестовое покрытие еще раз функциональность ядра завершено. У нас есть установки btcd на нашем колокейшн объекте и использовать его для создания вывода, аналогичного blockexplorer.com, посмотри на blocksafari.com чтобы увидеть btcd-генерируемый выход.
В настоящее время следующие компоненты btcd испытываются в качестве работы:
- открытие
- протокол
- Crypto, хеширования, base58 и т.д.
- Наполнение базы данных блока
- Подавать блоки из базы данных
- Равный-равному менеджер
- IPv6 и IPv4 подключения
- Выполнить все транзакционные сценарии используются в настоящее время
- JSON RPC, который имеет дело с блоками и сделок
- Проверка подписей транзакций
Большая часть кода находится в довольно хорошей форме, однако некоторые части являются неполными. В течение 2-х недель мы должны иметь достаточно базовой функциональности написана и в этот момент мы собираемся выпустить части коды для общего сообщества. После этого первого выпуска, мы планируем добавить новые функциональные возможности для обработки бумажники, подключения Tor и т.д.
Если вы заинтересованы в общении с нашими разработчиками о btcd, приходят прямо на нашем общедоступном сервере IRC в канале #btcd.