Как именно работает -rescan?

-rescan - это аргумент командной строки, который передается клиенту биткойна после восстановления wallet.dat из резервной копии.

  1. Какие файлы пересчитываются?
  2. Какие файлы выполняет команда повторного сканирования?
  3. Почему это хорошая практика, чтобы сначала загрузить все блоки, а затем повторить поиск, а не наоборот? (как комментарий по этому вопросу ответ предлагает )
22 голоса | спросил ripper234 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2011 03:22:02 +0400 2011, 03:22:02

2 ответа


17

Клиент биткойнов хранит в кошельке транзакции, которые влияют на монеты, которыми он управляет. Если он видит новую транзакцию, он проверяет, влияет ли эта транзакция на любые учетные записи, хранящиеся в кошельке. Если это так, кошелек обновляется. Аналогично, если цепочка реорганизована, кошелек обновляется.

Однако клиент не проверяет, чтобы кошелек был синхронизирован с текущей цепочкой блоков. Чтобы исправить это, можно использовать команду rescan. Это заставляет клиента при запуске проходить через каждый загруженный блок, искать транзакции, влияющие на учетные записи в кошельке, и обновлять хранилище транзакций кошелька и балансы, чтобы отразить эту транзакцию.

Есть несколько случаев, когда вам необходимо выполнить повторное сканирование. Например:

Если вы восстановите резервную копию кошелька, у вас не будет никаких транзакций в блоках, которые вы загрузили после того, как вы создали резервную копию кошелька. Поскольку клиент не получит эти блоки (поскольку он уже имеет их), нормальная логика обновления кошелька не будет исправлять это. Вам нужно будет выполнить повторное сканирование.

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

Теоретически, не имеет значения, загружаете ли вы все блоки, а затем повторно сканируете или наоборот. Клиент не будет загружать блоки во время повторного сканирования. А недавно загруженные блоки должны в любом случае обновить кошелек. Логика в основном заключается в том, что это гарантирует, что процесс повторного сканирования видит блоки, содержащие любые отсутствующие транзакции, а не логику регулярного обновления блока. (Они должны работать, но если вам нужно перепроверить, мы все равно знаем, что что-то не так.)

ответил David Schwartz 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2011 04:34:29 +0400 2011, 04:34:29
12

Это также полезно, если вы импортируете более 1 закрытого ключа в свой кошелек:

bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind importprivkey 1zbcvs.... "My Label" false
bitcoind stop

# One of the following
bitcoind -rescan 
bitcoin-qt -rescan
ответил Andrew Burns 10 AMpWed, 10 Apr 2013 04:27:27 +040027Wednesday 2013, 04:27:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132