Как сопоставить подписи X-Chain Avalanche с индексами владельцев
В мультиподписном расходовании может хватать подписей, но проверка завершится ошибкой, если их порядок расходится с выбранными индексами исходного выхода.
Возьмите массив владельцев конкретного UTXO
Декодируйте исходный secp256k1-выход, включая порог и locktime. Используйте отсортированный массив владельцев из сериализованных данных. В примере подписывают A и C с индексами 0 и 2. Локальный список контактов C, A, B не должен менять нумерацию.
owners = [A, B, C] // already sorted by address bytes
threshold = 2
ownerIndices = [0, 2]
credential = [signatureFromA, signatureFromC]
Соберите credential для соответствующего входа
Упорядочьте подписи по возрастающим индексам адресов входа. При нескольких входах сопоставьте каждый credential с его входом в итоговой сериализации. Сортировка входов после подписания меняет подписываемые данные и может привязать подпись к неверному входу. Условие locktime проверяйте отдельно от достаточности подписей.