Как построить журнал отката и применения между двумя 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, затем применяйте новые записи. Сохраняйте контрольную точку вместе с последним подтверждённым изменением. Сортировка по высоте нарушит необходимый порядок отката.