Итак, начнем. Первая тема вводной части: "Технологические основы". И базовое понятие, которое, собственно, служит основой для всего понимания, как функционирует блокчейн как технология, это Транзакция. Транзакция на самом деле — это некоторое сообщение в сеть, сообщение в паблик, сообщение всем о том, что я хочу совершить какое-то действие. Блокчейнов много, много разных блокчейн-платформ, в которых свои особенности в транзакциях, своя информация заносится в транзакциях, но в данном случае мы будем с вами рассматривать пример самой популярной, самой известной блокчейн-платформы под названием Биткойн. Соответственно в данном случае в транзакции сказано, что некий адрес по имени Иван (условное имя) хочет передать три BTC, то есть три биткойна, некоторому адресу по имени Елена. На самом деле вот этот адрес Иван или Елена — это публичный ключ, если переводить в нашу обыкновенную лексику — это логин, то есть своего рода такой логин в системе блокчейна. И вообще фактически такого адреса, конечно, в блокчейне не существует, то есть он может быть, но его нужно очень долго подбирать. И вот как раз здесь начинает появляться следующий термин, применяться, — это Хеширование. Хеширование именно, как вы видите, какой-то набор символов, цифры, буквы, и внутри них как раз есть вот этот Иван, то есть нужно много раз прохешировать, чтоб получить (случайным образом, на самом деле) вот этого Ивана. Я вам очень рекомендую воспользоваться тренажером, который предусмотрен в нашем курсе. В рамках него вы сможете попробовать на практике, как это работает, какая происходит последовательность действий, и там, собственно, как раз мы разбираем хеширование уже вот, непосредственно, методом тыка физического, скажем так. Так в общем — что такое хеширование? Хеширование — это преобразование массивов вводных данных какой-то произвольной длины в выходную битовую строку установленной длины. Фактически это производится, выполняется хеширование некоторым алгоритмом, и функция, которая выполняет преобразование, она называется хеш-функцией, или функция свертки. Показать пример хеширования самый простой — вот, на телефоне, в данном случае вы его видите, некий набор цифр. Для начала мы просто сложим все эти цифры, получим одно значение, опять же из двух цифр, сложим еще раз эти две цифры, получим опять две цифры, сложим их еще раз — пока не придем к единственной цифре, в данном случае два. Так вот, можно однозначно сопоставить любому номеру телефона некоторое число, посредством вот такого сложения, но при этом в обратную сторону сопоставить с этой цифрой какой-то номер телефона практически невозможно. Это есть такое из основных как бы свойств хеширования, которое позволяет дальше применять уже всю систему, и на этом, собственно, она и строится. Значит, сумма (два в данном случае) — это хеш-сумма, ну или просто еще иногда это называется хеш. Зная хеш-сумму, мы с вами можем быть уверены, что в ней зашит вот этот телефон, но сам телефон исходный мы знать не будем. Здесь вы видите лозунг, созданный Маяковским в 30 годах, в 1930, точнее даже, году. И по сути, в данном примере — это и есть наши исходные данные, такой входной массив. Соответственно, дальше будем преобразовывать, и в результате преобразования мы с вами получим хеш-сумму, хеш-код или хеш. Смотрим, как это делается. Достаточно простой алгоритм: для начала убираются все пробелы, и текст объединяется в одну длинную-длинную-длинную строчку, она настолько длинная, что у нас она здесь с вами в две строчки попала. После того как у нас появилась длинная строка без пробелов, мы уже, соответственно, начинаем сжимать, условно говоря, сжимать, кодировать эту строчку, и получаем с вами уже вот это буквенно-цифровое значение. При этом надо понимать, что в шестнадцатеричной системе счисления буквы — это тоже цифры. Такой, конечно, тезис, но в целом. Соответственно, мы понимаем, что весь наш лозунг зашифрован сейчас, в настоящий момент, вот в этом хеше, в этой хеш-сумме. Теперь смотрим следующий пример. У нас есть с вами тот же самый лозунг, но мы уже убрали входящие данные, как-то: что он был лозунг, что это не к плакату, не трудовой фронт, 1930 год, мы это с вами убрали, и в конце у нас с вами стоит восклицательный знак. И вы видите, что здесь уже хеш, или хеш-сумма, она несколько другая, точнее — не несколько, а абсолютно другая. Начинается с 90fdd. Теперь давайте уберем восклицательный знак. Убираем восклицательный знак, убираем лишь один символ, но получаем абсолютно другую хеш-функцию, получаем 3410b и так далее. То есть принципиально хеширование, а в данном случае мы используем хеширование, алгоритм хеширования SHA256, изменение одного символа внутри текста приводит к созданию абсолютно другой хеш-суммы, другого хеша. Это вот то свойство, от которого мы дальше и будем уже отталкиваться. Возвращаемся. Транзакция. Транзакция, как мы помним, это, можно сказать и крик, или сообщение в паблик, что некий адрес хочет передать кому-то какое-то количество каких-то единиц. Соответственно, публичный ключ Иван, публичный ключ Елена; или логины. Существует, так же, как в обыкновенной системе, логин-пароль, в данном случае есть публичный ключ и приватный ключ, который является как раз своего рода паролем. Взаимосвязь приватного ключа и публичного ключа как раз, по сути, формируется вот этот кошелек, и собственно, на этой взаимосвязи, на проверке этой взаимосвязи, они и функционируют. Кошельки бывают разные — легкие, холодные, толстые и так далее. Мы это будем разбирать отдельно с вами. Есть у нас публичный ключ, который хочет запустить какую-то транзакцию, он формирует эту транзакцию, он пишет, кому он перечисляет, он пишет, что он перечисляет, и подписывает это своим приватным ключом. То есть он таким образом подписывается под тем, что он готов совершить эту транзакцию, и он с ней согласен. Для того чтобы не происходило двойных трат, для того чтобы вести какой-то учет — а есть ли вообще у этого Ивана такое количество биткойнов, которое он хочет перевести, в блокчейне Биткойна используются так называемые инпуты-аутпуты, в других блокчейн-системах, блокчейн-платформах, используются несколько другие системы. Но опять же, для общего представления — инпут-аутпут очень простой механизм. У вас количество монет, которые вы отдаете, не должно превышать количество монет, которые к вам приходили. В данном примере 50 биткойнов к вам пришло, соответственно у вас уходит 0.5 биткойна, к примеру, кому-то вы отправляете, тогда оставшиеся 49.5 биткойнов вы должны будете отправить сами себе. И они опять будут для вас приходящими, то есть станут инпутом. Соответственно, если у вас есть три инпута, то ваш аутпут не может быть больше, чем сумма этих трех инпутов. Таким образом, мы с вами разобрали, что такое транзакция и что такое хеширование. Дальше будем разбирать уже, что такое блок, и как они объединяются в сеть.