Я работаю над своей библиотекой SPV, и мне все еще трудно понять, как подойти к комбинации фильтров BIP32 + Bloom. Вот как я сейчас синхронизирую существующий HD-кошелек (после быстрого наверстывания):
getdata
.Теперь это звучит причудливо и слишком сложно для меня. В нескольких дискуссиях в Интернете говорится о «сканировании ключей» при синхронизации кошелька, и я действительно не понимаю, предполагают ли они полный узел или облегченный узел SPV, потому что я понятия не имею, как «сканировать ключи» без глобального База данных UTXO. Кроме того, ограничение зазора имеет смысл только для полного узла.
Я застрял, спасибо.
Причина, по которой вы предварительно генерируете некоторые прямые ключи, заключается в том, чтобы избежать ситуации, которую вы описываете, если вы смотрели только вперед, вы рискуете пропустить транзакцию в текущем блоке (порядок транзакций в блоке не связан с порядком ваших ключей) .
Термин «лимит пробела» относится к параметру клиентов SPV без фильтра цветения, которые выполняют поиск, запрашивая адресный индекс на удаленном узле. Ограничение промежутка — это конечная остановка текущего состояния кошелька, когда сканирующий кошелек видит 10 пустых адресов подряд, он решает, что это, вероятно, последний использованный адрес в кошельке, и прекращает дальнейшую генерацию. Если бы не было ограничения на промежутки, они бы искали неиспользуемые адреса до скончания времени (или 2 ** 128, что наступит раньше).