Как построить журнал отката и применения между двумя tipset Filecoin

Tipset на близких высотах могут находиться на разных ветвях. Для перехода между контрольными точками индексатор может запросить у Lotus упорядоченные изменения.

Передайте полные ключи начала и конца

Для краткости пример использует одноблочные tipset. Подставьте реальные CID; для многоблочного tipset включите все CID в порядке представления Lotus.

{"jsonrpc":"2.0","id":1,"method":"Filecoin.ChainGetPath","params":[[{"/":"<block CID from old single-block tipset>"}],[{"/":"<block CID from new single-block tipset>"}]]}

Выполняйте изменения в порядке ответа

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

docs.filecoin.io ChainGetPath