Хэш-функция блокчейна, операции с блоками. Что представляет 1 блок сети

Хэш-функция блокчейна, операции с блоками. Что представляет 1 блок сети

Блокчейн — это децентрализованная, распределенная и неподкупная цифровая бухгалтерская ctnm, которая используется для записи транзакций на многих компьютерах.

[lwptoc]

Такая сеть или цепочка состоит из блоков, хранящих в себе адреса транзакций, которые происходят с этой сетью. Она включает в себя информацию, которая объединена единой системой, связанной, например, с определенной криптовалютой.

Немного сложно? Хорошо, Blockchain в простых терминах является:
Распределенная сеть компьютеров (узлов),…

  • где каждый узел содержит цепочку блоков
  • где каждый блок содержит книгу со списком проводок
  • где каждая транзакция является неподкупной (т.е. криптографически безопасной)
  • адрес блока связан с предыдущими транзакциями для ресурса, который он представляет.

А что такое криптовалюта? Тоже самое, что и blockchain?

Blockchain и Криптовалюта не одинаковы, но используются взаимозаменяемо из-за изобретения, которое их связывает, т.е. Bitcoin.

Блокчейн — это концепция, а криптовалюты — это приложения, использующие эту концепцию для решения реальных проблем.

Типичная хэш-функция

Хэш-функция должна иметь свойства:

  • Это должно быть односторонним, т.е. если задано H (x), вы не сможете понять x.
  • Столкновения, т.е. для двух разных x и y, H(x) должно быть равно H(y).

Ну, глядя на изображение выше, нет никакого способа, что хэш-функция может быть без коллизий, не так ли? Да, это действительно так. Но единственным мотивом является то, что для доступных машин практически невозможно найти столкновение.

Это свойство используется в blockchain на уровне ядра, то есть основное свойство.

Цифровые подписи

Цифровые подписи похожи на наши обычные цифровые подписи. Они должны иметь это свойство. Только вы можете подписать блок, но любой может проверить.

Итак, учитывая сообщение, зашифрованное вашим секретным ключом (aka password или private key, технически), есть общедоступный ключ (т.е. открытый ключ), который любой может использовать и подтвердить, что вы написали это сообщение. Ни один злоумышленник не сможет подделать вашу подпись, если ваш пароль не будет взломан.

Это свойство используется в блокчейне, чтобы гарантировать, что только законный владелец может передавать активы со своего счета, и любой человек в сети может подтвердить транзакцию. Биткойн использует ECDSA для цифровых подписей.

Хэш-Указатели

Хеш-указатель — еще одна хорошая структура данных, которая используется в технологиях blockchain.

Стандартный указатель-это адрес для хранимых данных, в то время как хэш-указатель также проверяет, были ли данные повреждены, сохраняя криптографический хэш (хэш-функцию, о которой мы говорили ранее) самих данных.

Если кто-то изменяет данные в блоке, хэш этого блока не будет совпадать с тем, что у нас есть в указателе хэша, и мы можем легко подтвердить повреждение данных.

Таким образом, это то, как он используется в blockchain вместе с хэш-функцией, чтобы избежать коррупции.

Блок 1 (слева) содержит данные и хэш-указатель на предыдущий блок. Блок 2 содержит указатель и хэш первого блока, а также его данные.

Ключевой момент заключается в том, что хэш-это хэш данных и хэш предыдущего блока вместе взятых.Ч(блок) = ч(Ч(предыдущий блок) + данные-в-этом-блок)
Что будет, если кто-то сыграет с первым блоком?

Подделка результатов после первого блока.
Если хакер изменяет содержимое первого блока, хэш хранится в блоке 2 не совпадает и мы можем легко проверить, что что-то изменилось.

Таким образом, злоумышленник также должен изменить хэш, хранящийся в блоке 2. Но в этом случае хэш, хранящийся в третьем блоке, не работает и продолжает работать до тех пор, пока хакер не изменит все блоки в цепочке до последнего указателя.

Фактически, изменение любой единицы информации на блокчейне будет означать использование огромного количества вычислительной мощности для переопределения всей сети. И любой блок может проверить, является ли эта транзакция действительной или нет, следуя всем предыдущим блокам в цепочке.

Децентрализованная & Распределенная

Существует сеть, образованная случайным набором людей, которые могут добровольно присоединиться, поставив свои машины, чтобы помочь другим — для стимулов. Таким образом, каждый несет ответственность за сохранение всего набора данных и проверку друг друга. Это базовая одноранговая технология.

Таким образом, если криптовалюта децентрализована и распределена, вы можете задать эти очевидные вопросы:

  • Кто главный в этом?
  • А что, если владельцы меня обманывают?
  • Как создаются валюты?

Это правильный набор вопросов, но давайте сосредоточимся на распределенной части системы.

Учитывая, что у всех есть полный набор записей, у вас, как у хакера, нет централизованного места, где вы можете пойти и изменить данные, как вы можете сделать с банком. Эти записи также находятся в открытом доступе.

Итак, у вас есть представление о том, сколько у меня денег — вроде того, как я буду идентифицирован как 64-символьное случайное имя. Вы можете это изменить? Все, что вы можете сделать, это попытаться потерпеть неудачу и понять, что это практически невозможно.

Ну, с этими преимуществами распределенной бухгалтерской книги возникает главная проблема консенсуса между этими узлами.

Консенсус — это очень сложный вопрос в информатике, потому что в случаи неудачи (сбои сети/задержки, сбои системы и т.д.) и есть несколько исследований, которые помогли решить что-то простое, как “достичь согласованной стоимости”, но blockchain решает эту проблему очень инновационным способом, т.е. стимулами.

Стимулы и доказательство работы

Итак, в этой распределенной системе, как мы решаем, кто будет решать следующую транзакцию, и почему кто-то это сделает? И как мы гарантируем, что это не плохой (или вредоносный) узел, который выбирает плохие транзакции?

В блокчейне добавление нового блока (или, скажем, транзакции) и создание новой монеты управляются компьютерами, выполняющими вычислительную деятельность, называемую доказательством работы.

Как мы обсуждали ранее, каждый блок содержит несколько транзакций, и первая транзакция в каждом блоке — это специальная транзакция, которая запускает новую монету, принадлежащую создателю блока — всякий раз, когда новый блок добавляется честным компьютером, сам компьютер получает вознаграждение.

Это добавляет стимул для узлов поддерживать сеть, и обеспечивает способ первоначально распределить монеты в обращении, так как нет центрального органа для их выпуска. Постоянное добавление постоянного количества новых монет аналогично золотодобытчикам, расходующим ресурсы на добавление золота в оборот. В этом случае затрачивается процессорное время и электроэнергия.

  • “Мы все можем добавить блоки и заработать кучу денег?»

Не совсем.

Система (предположим, программное обеспечение, которое любой может установить) предоставляет математическую задачу, и машина, чтобы ее решить, первая добавляет следующую транзакцию в цепочку и получает денежные выгоды (т.е. с точки зрения биткойнов для биткойн-сети) для добавления этого блока в цепочку. Остальные машины просто реплицируют книгу и проверяют подлинность.

“Какого рода проблемы?” — вы можете спросить.

Это своего рода хит-и-пробная проблема, где вы должны угадать ключ хэш-функции, которая производит определенный результат. В очень упрощенных терминах, вы должны угадать слово, которое производит хэш (SHA-256) значение, начинающееся с определенного выхода.

Компьютер получает деньги только в том случае, если блок попадает в самую длинную цепочку (мы увидим это в следующем разделе), чтобы управлять честностью между узлами.

Как мы видели, каждый раз, когда компьютер решает математическую задачу, генерируются новые токены и присваиваются блокчейн-адресу этого компьютера. Для биткойна эта награда уменьшается вдвое каждые четыре года, и поэтому она имеет ограниченную емкость. Это то, что делает биткойн дефицитным ресурсом.

x / 2 + x / 4 + x / 8 + x / 16….. => икс.
Это число ‘ x’ для биткоина составляет ~21 миллион. Различные приложения blockchain имеют разные реализации по этому аспекту, и в качестве примера, на момент написания этой статьи, Ethereum не ограничен фиксированным числом, а разные другие валюты используют другой алгоритм, называемый доказательством ставки.

Есть дополнительная транзакция-комиссия (или чаевые, как некоторые ее называют). Тот, кто создает блок, который помещает транзакцию в блокчейн, получает эту плату. В конце концов, когда биткойн закончится, и не будет создано новых монет (основной мотив для майнеров), это будет мотивом для майнеров продолжать работать и размещать свои компьютеры в сети.

Сделки

В блокчейне каждая монета (или сущность) определяется как цепочка цифровых подписей. Каждый собственник передает объект следующему, подписывая хэш предыдущей транзакции и публичный ключ следующего владельца и добавляя их в конец монеты.

Очевидно, что есть куча других вещей, включая стоимость, связанную с транзакцией, но они не важны для обсуждения.

Простая сделка, можно предположить, выглядит так:

https://hackernoon.com/blockchain-101-only-if-you-know-nothing-b883902c59f7
Упрощенная сделка

В приведенной выше транзакции любой пользователь может проверить, является ли это допустимой транзакцией, используя хэш-указатель предыдущей транзакции. Мы также можем проверить, является ли плательщик действительным, проверив подпись, указанную в транзакции.

Этот процесс продолжается на протяжении всего процесса, и может быть выполнена сквозная проверка для проверки цепочки владения.

Операции в цепочке

Как вы можете видеть на изображении выше, каждый получатель может видеть, является ли монета, которую она получает, действительной или нет.

Проблема — получатель может убедиться в том, что один из владельцев не дважды потратил монеты, т.е. владелец не тратил той же монетой на двух разных лиц — как я могу платить той же монетой, чтобы купить товары и услуги из Amazon и bestbuy.

Чтобы выполнить это без доверенного (или недоверенного) участника, сделки должны быть публично объявлены, и нам нужна система, чтобы участники согласовали единую историю того, в каком порядке они были получены. Получателю нужны доказательства того, что на момент каждой транзакции большинство узлов согласились, что она была получена первой.

Вывод

Таким образом, все это выглядит так в сети из миллионов узлов:

  • Новые транзакции транслируются на все узлы или блоки цепи;
  • Каждый узел собирает новые транзакции в блок.
  • Каждый узел работает над поиском «трудного» доказательства работы для своего блока.
  • Когда узел находит доказательство работы, он передает блок на все узлы (и получает оплату в денежном выражении).
  • Узлы принимают блок только в том случае, если все транзакции в нем действительны и еще не израсходованы.
  • Узлы выражают свое согласие с блоком, работая над созданием следующего блока в цепочке, используя хэш принятого блока в качестве предыдущего хэша.

Чтобы отслеживать создание новых блоков в какой-либо сети, вы можете смотреть на сайте Обозреватель блоков или explorer blockchain.

Понравилась статья? Поделиться с друзьями:
ProEconomica.RU
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: