#dusk $DUSK @Dusk
Раньше я думал, что раз код блокчейна открыт, то не так уж важно, сколько команд его реализуют. Протокол — это протокол. Если правила публичны, любой может написать вторую версию, и тот факт, что пока никто не захотел копаться в деталях.
Затем я занялся тем, как устроено node-программное обеспечение Dusk, и нашёл кое-что, что изменило то, как я читаю весь проект.
Есть один клиент. Rusk, написанный на Rust. Ранее реализация на Go всё ещё есть на GitHub, публично помечена как deprecated и больше не поддерживается — с заметкой, которая направляет всех к Rusk.
Так что каждый узел в сети запускает один и тот же код.
Стоит задержаться на этом, потому что альтернативный подход существует по определённой причине. Ethereum поощряет множество независимых клиентов, чтобы баг в одном не останавливали цепочку — остальные продолжают выпускать блоки, пока его исправляют. Это дорого, медленно и намеренно дублирует работу. Дублирование — это функция безопасности.
С одним клиентом консенсусный баг не бывает частичным. Он становится проблемой всей сети.
Я не думаю, что это ошибка. Для небольшой команды один отличный клиент — гораздо более разумное использование ресурсов, чем два посредственных, и Rusk аудитили многократно — библиотека узла, консенсусный слой, сетевой протокол, всё это проверяли внешние фирмы. Сфокусировать усилия — это оправданное инженерное решение.
Но это означает, что цепочка, предназначенная для регулируемого расчёта, сейчас не имеет разнообразия клиентов. Та самая вещь, которой традиционная рыночная инфраструктура уделяет первостепенное внимание — избыточность, независимые пути отказа, отсутствие единой точки отказа — пока там просто отсутствует.
Что я не могу определить извне — запланирована ли вообще вторая реализация, или же на данном этапе жизни сети её считают излишней. Оба ответа были бы логичными. Мне просто хотелось бы понять, какой из них верен.
С этого момента я перестал воспринимать фразу «open source» так, будто она автоматически означает устойчивость. Открытый код — это приглашение. Разнообразие клиентов возникает тогда, когда кто-то решает его принять.