Приветствую всех, читающих данный топик. Заинтересовался темой блокчейн и прочитал вот эту статью
https://habrahabr.ru/post/114642/. Я не понимаю, зачем нужен хэш заголовка блока, ведь каждый следующий блок ссылается на хэш транзакций предыдущего блока. Еще я был бы благодарен за какие-либо статьи или русскоязычную литературу по блокчейну,где бы подробно и доступно описывались принципы его работы.
1. Есть транзакции, которые имеют входы и выходы. Входы это кол-во транзакций которые вы получили, сумма входов это ваш баланс. Входы могут быть израсходованы, если вы отправите биткойн кому-то другому. Таким образом рассчитывается баланс каждого участника сети. Точнее каждый участник сети, проверяет актуальность своей локальной базы транзакций для определения своего баланса и баланса участников сети.
2. Есть блоки, они состоят из транзакций. Когда вы отправляете транзакцию, эта транзакция падает в список не распределенных транзакций и в момент формирования блока добавляется в этот блок (определенным алгоритмом который учитывает время создания транзакции, стоимость комисси и тд., детали в данном контексте не важны).
3. Есть майнинг, суть майнинга найти значение неизвестной переменной функции методом перебора таким образом чтобы это значение было меньше определенной переменной - nonce. Как это происходит - берется хеш от блока (текстовая информация со списком транзакций и прочей тех. информацией) добавляется в блок какое-то значение, сравнивается это значение с nonce, если результат < nonce, профит, если больше то считаем дальше и так до посинения. После того как решение найдено, тот кто нашел это решение сообщает об этом в сеть и все желающие могут проверить подставив ту же самую случайную переменную, что и тот кто отгадал блок. Nonce все время усложняется, таким образом, чтобы в среднем блок отгадывался за 10 минут.
Зачем нужен майнинг, он нужен для решения [url=https://ru.wikipedia.org/wiki/Задача_византийских_генералов]задачи византийских генералов[/url]. Если говорить простым языком, то два участника сети могут отгадать одновременно один и тот же блок. Когда это происходит, то они посылают в p2p сеть информацию о том, что блок разгадан и сеть которая получила эту информацию начинает разгадывать новый блок. Но если блок отгадывается одновременно в разных концах света и сеть не успевает синхронизироваться, то получается что разные участники сети имеют разную последовательность блоков и это продолжается до тех пор пока не будет отгадать следующий блок и тогда принимается более длинная цепочка блоков, а транзакции из отвергнутой цепочки возвращаются в список нераспределенных и добавляются в последующие блоки п2. Такое редко случается, но максимальная длина параллельных цепочек составляла 5 блоков, поэтому считается надежным дождаться 6 подтверждений блоков в случае биткойна.
Что касается криптографии, используется ECDSA для подписи транзакций. Владелец подписывает своим приватным ключом транзакцию и все желающие могут проверить подлинность транзакции используя публичный ключ подписанта.
-- 05.05.2018, 22:32 --Приветствую всех, читающих данный топик. Заинтересовался темой блокчейн и прочитал вот эту статью
https://habrahabr.ru/post/114642/. Я не понимаю, зачем нужен хэш заголовка блока, ведь каждый следующий блок ссылается на хэш транзакций предыдущего блока. Еще я был бы благодарен за какие-либо статьи или русскоязычную литературу по блокчейну,где бы подробно и доступно описывались принципы его работы.
Отвечая на ваш вопрос явным образом - хеш в блоке нужен для формирования цепочки блоков, чтобы исключить возможность двойной траты, потому что один и тот же пользователь в разные части сети может послать одну и ту же транзакцию, но как ни крути транзакция примется сетью 1 раз ввиду описанной выше механики.