Итак, когда мы начинаем клиент Bitcoin ядра (полный узел), он пытается загрузить блоки. Я видел в нем упоминается в нескольких местах, что скорость, с которой вы синхронизацией зависит не только от скорости подключения к Интернету, но и от скорости процессора. Я хотел бы понять, какую роль играет здесь скорость процессора?
Процессор должен делать всю работу, чтобы проверить блоки, как они загружены. Он должен хэширование блоков и проверить доказательство работы, хэширование операции в блоке, и сравнить с корнем Merkle, поиск в базе данных, чтобы убедиться, что транзакции не проводить ранее отработанные материалы и т.д. Многое из этого расчета хэши, что, учитывая большое количество хэшей, может быть довольно интенсивными вычислениями.
Помимо загрузки блоков, является полным клиентским узел также выполняет проверку цифровой подписи для каждой транзакции, включенной в этом блоке?
Это зависит от блока. Bitcoin Ядро имеет контрольно-пропускные пункты, которые означают, что блок на определенную высоту, должен иметь определенный хэш. Блоки до этого не будут иметь подписи валидации. Недавний контрольно-пропускной пункт был блоком 250000, что означает, что для старых узлов, они начнут проверять подписи после блока 250000. Однако для новых узлов, мы ввели вещь под названием assumevalid, которая заменяет собой контрольно-пропускные пункты (хотя контрольно-пропускные пункты все еще существуют). Assumevalid имеет блочный хэш указан. Это похоже на контрольно-пропускные пункты; любой блок в цепочке до начала assumevalid блока (у нас есть лучшие заголовки цепь, которая имеет assumevalid блока в нем) будет иметь проверку подписи пропускается. Блоки после assumevalid блока будет иметь все подписи проверены. Assumevalid блок может быть установлен с
-assumevalid =<гашиш> стартап вариант. Блок assumevalid по умолчанию обновляется каждый выпуск.
Кроме того, я заметил, что новые блоки в blockchain занять больше времени для синхронизации, чем старые блоки. Это потому, что новые блоки включают в себя большее количество сделок и таким образом, клиент полного узла должен выполнить большее количество проверки в блок?
Да. Есть больше сделок в новых блоках, которые требуют больше хэширования, и после assumevalid блока, все проверки подписи делаются.
Есть ли способ, чтобы ускорить процесс синхронизации blockchain? Конечно, кроме покупки самый последний и самый быстрый процессор
Одним из узких мест смыва базы данных. Для того, чтобы синхронизировать быстрее, вы можете увеличить
-DbCache =>N> параметр так больше баз данных хранятся в памяти и не должен быть сброшен на диск, как часто. Вы также можете проверить текущий блок хэш, и если вы доверяете блок проводника вы использовали, вы можете установить
-assumevalid =<гашиш> вариант, так что вы будете пропустить все проверки подписи до самого последнего блока.