Спасибо за это, что было полезным резюме. Глядя на структуру дерева сделок, размещенных на blockchain.info, многие из них разветвляются на две, а иногда и более ветвей от исходного значения (то, что называется значение ввода транзакции я полагаю), и часто в два ветке дерева одна ветка будет провел и другое неизрасходованные. Я подозреваю, что неизрасходованный новый дочерний узел часто "изменение" значение, которое возвращается к плательщику / отправителю средств в соответствии с вновь генерируемым идентификатором / адресом, если я понимаю, этот процесс правильно. Я не уверен, при каких обстоятельствах родительский узел можно разделить на более чем трех дочерних узлов, однако.
Транзакция поступает значение из одного или нескольких "входные", Которые просто список ранее неизрасходованные "выходы", Транзакция присваивает это значение на один или несколько выходов. Каждый выход представляет собой адрес и значение, присвоенное этот адрес. Правила протокола (которые проводятся в жизни каждого однорангового узлом, который ретранслирует транзакцию, а также каждый шахтер, который пытается добавить транзакцию к блоку) требуют, чтобы общая стоимость всех входов в транзакции должна быть больше или равна общая стоимость всех выходов в транзакции.
Это вид дерева вы смотрите на это абстракция, которая пытается помочь вам визуализировать движение стоимости, как происходят сделки. Он не покажет вам именно то, что происходит в каждой сделке. Если транзакция принимает значение из множества входов, которые были все связанные с тем же адресом, то "в виде дерева" составляет их и показывает их как единый "узел" даже если они на самом деле разделены на blockchain. Если транзакция принимает значение из множества входов, которые связаны с
разные адреса, то "в виде дерева" отображает только значение, даваемую сделку с адреса, который Вы рассматриваете и игнорирует значение от других адресов.
Таким образом, в то время как он является полезным инструментом для отслеживания движения стоимости, не полагайтесь на этой точке зрения дерева, чтобы понять, что на самом деле происходит в сделках или в blockchain.
Обратите внимание, что я уже говорил ранее, что сделка присваивает значение один руды более выходов. В Bitcoin-Qt вы увидите, в "Отправить монеты" окно, "Добавить получателя" кнопка. Эта кнопка позволяет добавить дополнительные выходы для вашей сделки. Это приведет к тому, древовидному разделить на несколько узлов, поскольку сделка будет присвоить значение каждый из получателей, а также изменений обратно в кошелек на новый адрес.
Даже то, что я говорю, до сих пор является абстракцией. В то время как полезно для понимания того, как работает blockchain, мое описание операций выходов, "значение, присвоенное по адресу" является упрощением. В действительности, выход транзакции является значением, и набор инструкций (известный как сценарий), описывающий, какие критерии должны быть выполнены, чтобы включить вывод в качестве входа в другой транзакции. В типичном случае эти инструкции устанавливают требования, которые должны быть предоставлены подписи с помощью закрытого ключа, связанного с конкретным адресом, чтобы включить вывод в качестве вклада в другую транзакцию. В качестве абстракции, мы говорим, что выход присваивается значение по этому адресу.
Сегодня я завела Bitcoin-QT клиента вручную, и потребовалось около хороших 3 или 4 минуты для клиента (по всей видимости) поиск через весь загруж блок цепи (что составляет около 10,5 ГБ в настоящее время). Я был удивлен, что это нужно сделать, это есть у меня в настоящее время есть пустой бумажник, который должен означать минимальное количество используемых ключей в счете keypool по умолчанию клиента 100 ключей.
Есть множество вещей Bitcoin-Qt приложение делает, как он запускается для проверки целостности blockchain, и файл wallet.dat. Bitcoin-Qt гарантирует, что данные не были повреждены или манипулируют, пока он не был запущен. Большая часть запуска времени было потрачено на эту проверку.
Затем он продолжил обновлять менее чем один день blockchain клиента был позади на. Из-за этого долго ждать, казалось бы, что клиент QT не совсем быстрый запуск приложений с точкой зрения удобства для пользователя (я знаю других новых тонких клиентов, которые не забирают всю базу данных blockchain)
Очевидно, что приоритет для разработчиков Bitcoin-Qt в качестве справочного клиента является поддержание безопасности и надежности протокола, а не удобство. Там, кажется, ожидание того, что другие бумажники заполнит брешь удобство в использовании.
На основании вашего описания структуры бумажника BTC и формат сделки БТД, казалось бы, что файл WALLET.DAT будет также увеличиваться в sizet постепенно, как происходит больше транзакций пользователей, а число идентификаторов увеличивается в бумажнике. Я понимаю ли это правильно, что wallet.dat файл будет в конечном счете аккумулировать все используемые ключи с начала транзакции с этим конкретным файлом wallet.dat?
Я не уверен, что я правильно понимаю ваш вопрос, но если вы не управлять содержимым файла wallet.dat, он будет аккумулировать все ключи, которые создаются программой бумажника при подключении к этому wallet.dat файл, независимо от того, будете ли вы использовать эти ключи или нет. Если нажать "Новый адрес" Кнопка в "Прием монет" окно 30 раз, то файл wallet.dat накопится еще 30 адресов. Если вы посылаете еще 10 операций, каждая из которых изменение, то wallet.dat накопится еще 10 адресов.
Я немного запутался на новой генерации ключей для keypool после новых пар ключей текущего keypool в израсходованы. Когда это происходит, делает клиент QT генерирует один новый ключ в то время, по мере необходимости, когда новые ключи требуется / по запросу пользователя, или клиент сразу же создать новый пакет новых ключей для того, чтобы сохранить имеющийся номер нового ключа пар в ключевой пул в размере, установленном -keypool параметром?
Bitcoin-Qt не заполняет ключевой пул в пакетном режиме. Она делает это сразу же, как ключи удаляются из пула. Так что если вы нажмете "Новый адрес" кнопка, программа бумажника тянет следующий ключ из очереди пула, и в то же время он генерирует новый случайный ключ и добавляет его к ключу очереди пула, так что количество ключей в бассейне остается неизменным. Изменение адреса обрабатываются таким же образом (вытащить ключ изменения от передней части очереди, и одновременно генерировать новый случайный ключ, чтобы добавить в конец очереди).
Я понимаю, что в зависимости от размера keypool, вхождение ключевой частоты использования, а также частота WALLET.DAT обратно вверх пользователем, степень риски потенциальных новых ключей потеряло при восстановлении из недавно резервного копирования будет затронуто. Я думаю, что будет зависеть от того, как последние обратно вверх было сделано и сколько новые ключи были получены после того, как последний WALLET.DAT обратно состоялся. Исходя из этого, казалось бы, что новые основные риски потери от восстановления WALLET.DAT от недавно обратно может быть уменьшена за счет увеличения размера ключа бассейна. Будет ли это правильно?
Верный. Это может быть уменьшено путем либо резервное копирование более часто, или за счет увеличения размера keypool. Я стараюсь держать общее представление о том, сколько адресов используются (сумма, сколько раз "Новый адрес" кнопка нажата и количество исходящих транзакций) с момента моего последнего резервного копирования, а затем создать новую резервную копию, когда количество используемых адресов составляет около одной четверти от размера keypool. Тогда я держу 3 последних резервные копии. Это позволяет мне восстановить все мои используемые в настоящее время ключи от любого из моих трех резервных копий, если один из них поврежден или иным образом непригодным для использования.