Как сверить контрольные точки деревьев обязательств Sapling и Orchard

Два сервера лёгких клиентов могут согласиться по высоте блока и вернуть разные сериализованные деревья. Привяжите оба запроса к одному хешу блока Zcash.

Получите корни конкретных пулов

Выберите блок, на котором нужные пулы уже активны. Запросите один хеш у обоих серверов, сохраните возвращённую идентичность блока и сравните корни внутри каждого пула.

zcash-cli z_gettreestate "$BLOCK_HASH" | jq '{height, hash, sapling: .sapling.commitments.finalRoot, orchard: .orchard.commitments.finalRoot}'

Проверьте кодирование до вывода о расхождении

Корень Sapling нельзя сравнивать с корнем Orchard. Перед сравнением проверьте отсутствие данных и возможный skipHash. В версиях zcashd до 5.2.0 включительно документировано отличие порядка байтов корня Sapling от представления в getrawtransaction. При разборе старых выгрузок учитывайте версию источника.

zcash.github.io z_gettreestate