Учиться, Учиться и еще раз Учиться!
Так как говорят в жизни нужно сделать 3 вещи - родить сына, посадить дерево и разобраться в принципе работы блокчейна, я решил создать специальный курс. Он будет сопровождать мои статьи связанные с сетевым программированием.
Начнем с наиболее простого. Не все будет абсолютно точно. Но те кто будут следить, обязательно научатся. Просто я стараюсь не писать слишком заумно с самого начала. Хотя блокчейн достаточно сложный и не так просто все передать словами ))
Начнем с того что блокчейн - это переводится как цепочка блоков.
Как это работает.
Представьте себе таблицу Excel в которую каждые, допустим 10 минут добавляется 250 записей. Они абсолютно одинаковой длины, но каждая из них имеет фиксированное количество столбцов. Первый столбец называется номером кошелька. Второй входом, а последней - выходом. Между ними может быть любая другая информация.
Каждый вход это специальная подпись предыдущего владельца записи которую невозможно подделать.
Каждый компьютер, где есть такая таблица, может переслать ее на другие компьютеры, зная их адреса, чтобы они ее там сохранили. Так в своем большинстве они и делают. Каждые несколько циклов система группирует (по факту сортирует) записи таблицы по их адресам. Получая тем самым кошельки, то есть аккаунты. Если клиент знает специальную последовательность байт, то он через стандартный алгоритм асинхронного шифрования может получить доступ к такой группе, программа клиент с помощью функции типо SUM подсчитает баланс входов и выходов и выведет доступное количество токенов.
На самом Деле Накамото Сатоси изобретая Биткоин решал очень непростую дилемму, как бы так сделать, чтобы каждая транзакция была связана только с одним аккаунтом несмотря на то, что любой хакер может тупо скопировать протокол и данные для доступа к средствам. И вот тогда он придумал то что называется блокчейн.
Сейчас я постараюсь рассказать это наиболее просто в следующем посте расскажу подробнее.
Допустим есть таблица с записями от 1230 до 2117, она выглядит как один сегмент, для простоты допустим что каждый пользователь может взять и подписать этот блок. То есть его заверить. У него есть приватный (секретный ключ) и публичный, его адрес кошелька. Он берет этот блок и шифрует его своим приватным ключем. При этом рассылает всем кто рядом свой публичный ключ. Если те кто рядом смогли этим публичным расшифровать блок - значит он настоящий.
На самом деле никаких публичных ключей не рассылается. Майнеры их сами угадывают. Это позволяет удостовериться что блок настоящий, когда пришло не одно, а несколько решений. И если придут другие, то им можно будет опровергнуть.
Пока главное понимать, что суть в том, что данные внесенные в блок ни коем образом не должны измениться. Иначе подпись окажется не верной.
Это конечно очень простой вариант. Но с более сложными подробностями будем знакомиться постепенно. Надо переварить хотя бы одно =)
Я в своем блоге начал рассказ о транспортном уровне. Как раз в этом месте мы будем разбираться с протоколами, а => сможем понять принципы работы блокчейна, и напишем сначала простой клиент-сервер, а затем и Hello, Blockchain! :)
Начинание хорошее, я бы с удовольствием просветился на счет блокчейна.
Однако, после прочтения Вашей статьи больше вопросов, чем ответов...в голове хаос. (
Отличное начало! Но всё равно не могу понять сути блокчейн!
В связи с этим у меня вопросы:
Кто подписывает блок?
То есть по сути, чтобы блок "закрылся" нужно расшифровать по публичному ключу приватный? Для чего это нужно?
antino, 1 это примерное число. Например в биткойне блоки формируются каждые 10 минут. И там это число гораздо больше.
Чтобы блок "закрылся" нужно угадать число, меньше того, которое зашифровано в хеше блока. А приватные ключи нужны для подтверждения транзакций.
Я просто хотел разделить на две статьи про транзакции и блоки, но торопился, поэтому не очень складно написал)) Попробую внести ясность в следующих постах.
Спасибо за хорошее начало !
Простым языком, и по полочкам.
@rusldv - подписываюсь, и с нетерпением жду следующую статью.
Очень хорошее начало ) Думаю многим будет интересно!