Каковы преимущества использования btcd вместо bitcoind?

btcd 1.0 был выпущен 3 октября 2013 года. Зачем использовать его вместо bitcoind?

Ответы (2)

РЕДАКТИРОВАТЬ (2014-09-05): я обновил этот ответ до самой последней информации. Предыдущий ответ устарел в отношении минусов. Это было точно, начиная с версии 0.3.0-альфа, однако btcd сейчас находится в бета-версии, вплоть до версии 0.8.0-бета, и с тех пор почти все предыдущие недостатки были устранены. Кроме того, я обновил все ссылки на bitcoind на Bitcoin Core, чтобы отразить изменение их названия.

Я постараюсь ответить на этот вопрос максимально беспристрастно, но в качестве отказа от ответственности я являюсь ведущим разработчиком btcd.

Сначала небольшая поправка. Первоначальный выпуск — версия 0.3.0-alpha ( https://github.com/conformal/btcd/releases ). Это еще не версия 1.0, так как мы сначала хотим получить тонну публичного тестирования от первых пользователей, прежде чем заявить, что это готово к производству. Мы полностью понимаем важность предотвращения разветвлений цепочки блоков и прилагаем титанические усилия, чтобы сделать все возможное, чтобы этого не произошло.

Ниже я приведу список плюсов и минусов, которые я могу придумать для btcd по сравнению с Bitcoin Core, но я хотел бы отметить одну вещь, которая не связана конкретно с btcd или Bitcoin Core, а скорее с экосистемой Биткойн как с весь.

Разнообразие — это то, в чем остро нуждается экосистема Биткойн. Разнообразные межоперационные реализации делают сеть Биткойн более устойчивой к нескольким вещам, таким как атаки типа «отказ в обслуживании», уязвимости и ошибки отдельных приложений. История показала, что для того, чтобы любой протокол процветал и получил широкое признание, неизбежно требуется несколько реализаций на нескольких устройствах. Одним из ярких примеров является TCP/IP. TCP/IP не был бы там, где он есть сегодня, если бы существовала только одна реализация.

Плюсы

  • btcd предлагает уникальную архитектуру, отделяющую сервисы сети от сервисов кошелька (см. ПРИМЕЧАНИЯ [a]).
  • btcd написан на Go, который имеет несколько преимуществ перед C++ (см. ПРИМЕЧАНИЯ [b]).
  • btcd — это чистый рефакторинг всего протокола Биткойн, а не монолитный.
  • кодовая база btcd стремится предоставить легкий для понимания и хорошо прокомментированный код (Bitcoin Core определенно улучшается в этой области, но все еще остается много недокументированной «магии»)
  • базовые пакеты btcd обеспечивают более обширное покрытие юнит-тестами, помогающее предотвратить регрессию (например, btcwire обеспечивает 100% покрытие тестами)
  • btcd включает в себя пакет, оптимизированный специально для параметров кривой ECDSA, используемых Биткойном (secp256k1), что делает его быстрее, чем OpenSSL.
  • btcd может работать как реальная служба в Windows (см. ПРИМЕЧАНИЯ [c])
  • btcd предоставляет совместимый интерфейс RPC с Bitcoin Core, что делает его относительно простым для использования в существующих инфраструктурах.
  • btcd может синхронизировать всю цепочку блоков с нуля примерно за 5 часов на Intel i7 с SSD.

Минусы

  • btcd не демонизирует себя и вместо этого полагается на внешние инструменты, такие как демонизация и выскочка, для выполнения этой функции.
  • Функциональность uPnP в настоящее время отключена по умолчанию и работает не со всеми устройствами, поэтому может потребоваться вручную открыть порты на маршрутизаторе и использовать флаг --externalip.

Заметки

[a] Полное обсуждение преимуществ разделения сервисов цепочки и кошелька потребовало бы целого поста в блоге, но есть несколько примеров того, что это открывает много возможностей для менее мощного оборудования, предлагает лучшую многопользовательскую поддержку и приводит к меньше отходов в небольших сетях, которые могут совместно использовать сетевые услуги.

[b] Некоторые преимущества, которые, по нашему мнению, есть у Go по сравнению с C++

  • Интегрированная тестовая инфраструктура
  • Независимый от платформы код
  • Более простой параллелизм и отличная поддержка параллелизма
  • Отсутствие активного управления памятью, что приводит к устранению целого класса наиболее распространенных уязвимостей безопасности, таких как переполнение буфера.
  • Встроенные средства профилирования и документирования
  • Значительно более быстрое время компиляции

[c] Установщик Windows не предоставляет возможность установить или запустить его как службу, однако сам btcd имеет для этого параметры командной строки. Чтобы установить его как службу: btcd.exe /s install

В такие времена хочется, чтобы они могли отдать более одного голоса.
у него есть адресный указатель?

как упомянул davec, btcd написан на go и поэтому работает на любой платформе, на которой работает go. хотя официально не поддерживается, go работает на плане 9, поэтому я запускаю btcd на плане 9. доказательство:btcd на плане 9

Это круто.