О проекте
Превращаем чёрный ящик в белый.
Исполнительный слой Ethereum — один из самых значимых программных
продуктов в мире, и почти никто за пределами нескольких команд
клиентов не может сказать, что по-настоящему его понимает. Не потому
что инженеры не способны — а потому что материал ставит перед плохим
выбором. С одной стороны: Yellow Paper и сырой исходный код клиентов,
точно, но беспощадно. С другой: курсы прикладного уровня, которые
останавливаются на solidity и не доходят до протокола.
Мост между интуицией и спецификацией попросту… отсутствует.
Whitebox — это и есть тот мост. Единица здесь — не вики-страница, а разбор: один механизм в паре с живым виджетом, который можно разобрать на части, со слоями, чтобы вы сами выбирали глубину. Интуиция, когда нужна форма явления. Механизм, когда хочется увидеть, как оно движется. Настоящая спецификация и код клиента, когда нужна основа. И указатели дальше, когда вы готовы идти глубже, чем я могу провести на одной странице.
Я пишу от первого лица намеренно. Именно так я, как инженер исполнительного слоя, на самом деле держу эти системы в голове — аналогии, к которым тянусь, детали, которые оказались важны, места, где спецификация меня удивила. Это точка зрения, а не безличный справочник.
Как это сделано
Виджеты — не иллюстрации, прикрученные к тексту: они запускают
настоящее. Trie в главном разборе — это
настоящее Merkle-Patricia дерево: настоящий RLP, настоящее hex-prefix
кодирование, настоящий keccak256, дающий тот же stateRoot,
что и живой клиент, проверенный байт в байт против эталонной
реализации. Если виджет показывает вам хеш — этому хешу можно
доверять.
Два слоя
Есть вечнозелёная основа — Исполнительный слой: объяснение — написанная один раз и надолго. И тонкий, редкий слой заметок: короткие тексты простым языком о том, что изменилось в протоколе, когда выходит хардфорк. Если хотите узнавать, когда что-то из этого пополняется, оставьте почту ниже. Только для этого я её и использую.