Как сохранить индекс предложения в ID действия управления Cardano
В одной транзакции Cardano может быть несколько действий управления. При ключе базы только по ID транзакции вторая запись затрёт первую или получит чужие голоса.
Декодируйте идентификатор действия целиком
Используйте декодер формата gov_action Bech32 по CIP-129. Извлеките идентификатор транзакции и индекс действия и храните их парой. Для сервиса нескольких сетей отдельно сохраняйте сеть.
transaction T, proposal index 0 → action T#0
transaction T, proposal index 1 → action T#1
В примере одна транзакция T создаёт два разных действия. Получите данные каждого предложения по соответствующей позиции. Голос за T#1 относится ко второму действию, даже если интерфейс показывает одну страницу транзакции.
Различайте индекс действия и индекс выхода
Номер действия и номер выхода UTxO иногда пишутся после ID транзакции похожим образом. Они относятся к разным наборам данных. Передавайте тип идентификатора через API вместо принятия любой строки с парой транзакция и число. cips.cardano.org Cardano CIP-129