H Математические основы биткойн-блокчейна. Математика блокчейн


Математические основы биткойн-блокчейна

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

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

Поэтому в сегодняшней статье мы бы хотели поговорить о математических основах биткойн-блокчейна — эллиптических кривых, ECDSA и ключах.

Математические основы биткойн-блокчейна - 1/ Изображение Hernán Piñera CC BY

Фундаментальной частью биткойна являются криптографические алгоритмы. В частности, алгоритм ECDSA — Elliptic Curve Digital Signature Algorithm, который использует эллиптические кривые (elliptic curve) и конечные поля (finite field) для подписи данных, чтобы третья сторона могла подтвердить аутентичность подписи, исключив возможность её подделки. В ECDSA для подписи и верификации используются разные процедуры, состоящие из нескольких арифметических операций.

Эллиптические кривые

Эллиптическая кривая над полем K — это кубическая кривая над алгебраическим замыканием поля K, задаваемая уравнением третьей степени с коэффициентами из поля K и «точкой на бесконечности». Одной из форм эллиптических кривых являются кривые Вейерштрасса.

y² = x³ + ax + b

Для коэффициентов a = 0 и b = 7 (используемых в биткойне), график функции принимает следующий вид:

Математические основы биткойн-блокчейна - 2 Эллиптическая кривая

Эллиптические кривые имеют несколько интересных свойств, например, невертикальная линия, пересекающая две некасательные точки на кривой, пересечет третью точку на кривой. Суммой двух точек на кривой P + Q называется точка R, которая является отражением точки -R (построенной путем продолжения прямой (P; Q) до пересечения с кривой) относительно оси X.

Математические основы биткойн-блокчейна - 3Сумма двух точек на кривой (источник)

Если же провести прямую через две точки, имеющие координаты вида P (a, b) и Q (a, -b), то она будет параллельна оси ординат. В этом случае не будет третьей точки пересечения. Чтобы решить эту проблему, вводится так называемая точка на бесконечности (point of infinity), обозначаемая как O. Поэтому, если пересечение отсутствует, уравнение принимает следующий вид P + Q = O.

Если мы хотим сложить точку саму с собой (удвоить её), то в этом случае просто проводится касательная к точке Q. Полученная точка пересечения отражается симметрично относительно оси X.

Математические основы биткойн-блокчейна - 4Удвоение точки (источник)

Эти операции позволяют провести скалярное умножение точки R = k*P, складывая точку P саму с собой k раз. Однако отметим, что для работы с большими числами используются более быстрые методы.

Эллиптическая кривая над конечным полем

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

y² = x³ + ax + b (mod p)

Например, 9 mod 7 = 2. Здесь мы имеем конечное поле от 0 до 6, и все операции по модулю 7, над каким бы числом они ни осуществлялись, дадут результат, попадающий в этот диапазон.

Все названные выше свойства (сложение, умножение, точка в бесконечности) для такой функции остаются в силе, хотя график этой кривой не будет походить на эллиптическую кривую. Эллиптическая кривая биткойна, y² = x³ + 7, определенная на конечном поле по модулю 67, выглядит следующим образом:

Математические основы биткойн-блокчейна - 5Эллиптическая кривая биткойна, определенная на конечном поле по модулю 67 (источник)

Это множество точек, в которых все значения х и у представляют собой целые числа между 0 и 66. Прямые линии, нарисованные на этом графике, теперь будут как бы «оборачиваться» вокруг поля, как только достигнут барьера 67, и продолжатся с другого его конца, сохраняя прежний наклон, но со сдвигом. Например, сложение точек (2, 22) и (6, 25) в этом конкретном случае выглядит так:

Математические основы биткойн-блокчейна - 6Сложение точек (2, 22) и (6, 25) (источник)

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

ECDSA в биткойне

В протоколе биткойна зафиксирован набор параметров для эллиптической кривой и её конечного поля, чтобы каждый пользователь использовал строго определенный набор уравнений. Среди зафиксированных параметров выделяют уравнение кривой (equation), значение модуля поля (prime modulo), базовую точку на кривой (base point) и порядок базовой точки (order). О вычислении порядка базовой точки вы можете почитать здесь. Этот параметр подбирается специально и является очень большим простым числом.

В случае биткойна используются следующие значения:

Уравнение эллиптической кривой: y² = x³ + 7

Простой модуль: 2256 — 232 — 29 — 28 — 27 — 26 — 24 — 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Базовая точка:

04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Жирным шрифтом выделена координата X в шестнадцатеричной записи. За ней сразу следует координата Y.

Порядок: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

Этот набор параметров для эллиптической кривой известен как secp256k1 и является частью семейства стандартов SEC (Standards for Efficient Cryptography), предлагаемых для использования в криптографии. В биткойне кривая secp256k1 используется совместно с алгоритмом цифровой подписи ECDSA (elliptic curve digital signature algorithm). В ECDSA секретный ключ — это случайное число между единицей и значением порядка. Открытый ключ формируется на основании секретного: последний умножается на значение базовой точки. Уравнение имеет следующий вид:

Открытый ключ = секретный ключ * G

Это показывает, что максимальное количество секретных ключей (следовательно, биткойн-адресов) — конечно, и равняется порядку. Однако порядок является невероятно большим числом, так что случайно или намеренно подобрать секретный ключ другого пользователя нереально.

Вычисление открытого ключа выполняется с помощью тех же операций удвоения и сложения точек. Это тривиальная задача, которую обычный персональный компьютер или смартфон решает за миллисекунды. А вот обратная задача (получение секретного ключа по публичному) — является проблемой дискретного логарифмирования, которая считается вычислительно сложной (хотя строгого доказательства этому факту нет). Лучшие известные алгоритмы ее решения, вроде ро Полларда, имеют экспоненциальную сложность. Для secp256k1, чтобы решить задачу, нужно порядка 2128 операций, что потребует времени вычисления на обычном компьютере, сопоставимого со временем существования Вселенной.

Когда пара секретный/публичный ключ получена, её можно использовать для подписи данных. Эти данные могут быть любой длины. Обычно первым шагом выполняется хеширование данных с целью получения уникального значения с числом битов, равным битности порядка кривой (256). После хеширования, алгоритм подписи данных z выглядит следующим образом. Здесь, G — базовая точка, n — порядок, а d — секретный ключ.

  • Выбирается некоторое целое k в пределах от 1 до n-1
  • Рассчитывается точка (х, у) = k * G с использованием скалярного умножения
  • Находится r = х mod n. Если r = 0, то возврат к шагу 1
  • Находится s = (z + r * d) / k mod n. Если s = 0, то возврат к шагу 1
  • Полученная пара (r, s) является нашей подписью

После получения данных и подписи к ним, третья сторона, зная публичный ключ, может их верифицировать. Шаги для проверки подписи такие (Q — открытый ключ):

  • Проверка, что и r, и s находятся в диапазоне от 1 до n-1
  • Рассчитывается w = s-1 mod n
  • Рассчитывается u = z * w mod n
  • Рассчитывается v = r * w mod n
  • Рассчитывается точка (x, y) = uG + vQ
  • Если r = x mod n, то подпись верна, иначе — недействительна

В самом деле,

uG + vQ = u + vdG = (u + vd)G = (zs-1 + rds-1)G = (z + rd) s-1G = kG

Последнее равенство использует определение s на этапе создания подписи.

Безопасность ECDSA связана со сложностью задачи поиска секретного ключа, описанной выше. Помимо этого, безопасность исходной схемы зависит от «случайности» выбора k при создании подписи. Если одно и то же значение k использовать более одного раза, то из подписей можно извлечь секретный ключ, что и произошло с PlayStation 3. Поэтому современные реализации ECDSA, в том числе используемые в большинстве биткойн-кошельков, генерируют k детерминировано на основе секретного ключа и подписываемого сообщения.

Автор: alinatestova

Источник

www.pvsm.ru

Математические основы биткойн-блокчейна

( / ) ( / ) ( / ) ( / ) ( / ) ( / ) ( / ) ( / ) ( / ) ( / )

icopost.ru

что лежит в основе блокчейна Bitcoin

Содержание

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

Кстати, а какие деньги более реальны? Те, что основаны на математике, или те, что основаны… а на чем сейчас основаны фиатные деньги?

Криптовалюта имеет значение хотя бы потому, что люди ее ценят.

Определения

Раз уж заговорили о математике, то определим использующиеся понятия. Возьмем информацию из Википедии.

Криптовалюта — вид цифровых денег, основанный на использовании крипторафии.

Криптография — наука о способах защиты информации в плане:

  • недоступности для прочтения третьими лицами;
  • невозможности для скрытого изменения;
  • проверки истинности свойств.

Теория игр — математический метод исследования принятия решений.

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

Стратегии теории игр и их связь с криптовалютами

Теория игр была разработана в 1944 году Дж. Ван Нейманом и О. Моргенштерном. Она состоит из как минимум трех компонентов:

  • игроков — тех, кто принимает решения;
  • стратегий — решения, которые принимают игроки для достижения целей;
  • выплат — как итога выполнения стратегий.

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

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

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

Представим, что есть сценарий, когда оптимальная стратегия для игроков имеет негативные последствия для общества. Вопрос “законопослушности” решается с помощью введения “наказания”. Шахтеры имеют большую власть в сети блокчейн. Если они захотят обмануть  других участников для получения собственной выгоды, в системе начнется хаос.

Равновесие Нэша и концепция “наказания” используются в блокчейне для блокировки нечестных действий майнеров. В теории игр есть защита Grim Trigger или, по-другому — “не убивайте короля”. Если король убит, второму и всем последующим угрожает та же участь, а значит — хаос. Если король жив, то жив и порядок.

Grim Trigger описывает что происходит, когда имеются два равновесия Нэша и как побудить игроков перейти от одного равновесия к другому. С небольшой группой все просто — есть возможность скоординироваться и договориться. Как это работает с огромным количеством игроков? Мотивом для изменения стратегии в этом случае служит не мораль или ожидание выигрыша, а стимул для перехода. Здесь успех наступает тогда, когда большинство меняет свое состояние. Неудача — когда меньшинство изменило свое состояние, а большинство — нет.

Стратегия Grim Trigger терпит неудачу, если майнеры не привязаны к криптовалюте, и могут легко сменить одну на другую. Они не заинтересованы в стабильности сети, им все равно.

Все в порядке, если майнеры связаны с конкретным блокчейном. Это делается с помощью значительных вложений в оборудование (ASIC-процессоры в Proof-of-Work) или программное обеспечение, PoW отражает реальные, поддающиеся количественной оценке ресурсы, необходимые для его получения. Именно поэтому оно служит основой достижения консенсуса.

Этот вариант не работает в случае майнинга на процессорах. Оборудование слишком дешево и для шахтеров нет никакого резона защищать сеть, если что-то случится. Они легко ее покинут и будут майнить другую криптовалюту. Для завоевания лояльности необходимо другое доказательство работы, основанное на владении криптовалютой. И это — Proff-of-State.

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

Каждый блок в цепи содержит отдельные транзакции и хэш предыдущего блока. Предыдущий блок является родительским для последующего. Блок под номером 50 будет родительским для блока № 51. Каждый блок в блокчейне имеет функцию подсчета очков: Score = Score (родительского блока) + доказательство выполненной работы. (Это формула для сети биткоина). Если образовалось разветвление блоков в силу того, что разные майнеры одновременно добавили по блоку в цепь, то истинным будет признана ветвь с блоком, имеющим большее число очков. Блоки, не входящие в эту ветвь признаются недействительными.

Текущее состояние сети — это блок с наибольшим Score.

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

Им не хочется:

  1. Тратить вычислительные ресурсы впустую.
  2. В соответствии со стратегией Grim Trigger они понимают, что поддержав недействительную ветвь, они провоцируют хаос. И их ветка может быть точно также атакована другими, раз уж порядка и правил не стало.

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

Заключение

Блокчейн спроектирован так, что он является самограничивающимся равновесием Нэша. Чтобы люди со всего мира вели себя в сети по правилам протокола, в алгоритм работы вводятся поощрения и наказания, автоматически регулирующие действия участников. Можно назвать это неявным смарт-контрактом.

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

ecrypto.ru

Математические основы биткойн-блокчейна / СоХабр

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

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

Поэтому в сегодняшней статье мы бы хотели поговорить о математических основах биткойн-блокчейна — эллиптических кривых, ECDSA и ключах.

/ Изображение Hernán Piñera CC BY

Фундаментальной частью биткойна являются криптографические алгоритмы. В частности, алгоритм ECDSA — Elliptic Curve Digital Signature Algorithm, который использует эллиптические кривые (elliptic curve) и конечные поля (finite field) для подписи данных, чтобы третья сторона могла подтвердить аутентичность подписи, исключив возможность её подделки. В ECDSA для подписи и верификации используются разные процедуры, состоящие из нескольких арифметических операций.

Эллиптические кривые

Эллиптическая кривая над полем K — это кубическая кривая над алгебраическим замыканием поля K, задаваемая уравнением третьей степени с коэффициентами из поля K и «точкой на бесконечности». Одной из форм эллиптических кривых являются кривые Вейерштрасса.

y⊃2; = x⊃3; + ax + b

Для коэффициентов a = 0 и b = 7 (используемых в биткойне), график функции принимает следующий вид:

Эллиптическая кривая

Эллиптические кривые имеют несколько интересных свойств, например, невертикальная линия, пересекающая две некасательные точки на кривой, пересечет третью точку на кривой. Суммой двух точек на кривой P + Q называется точка R, которая является отражением точки -R (построенной путем продолжения прямой (P; Q) до пересечения с кривой) относительно оси X.

Сумма двух точек на кривой (источник)

Если же провести прямую через две точки, имеющие координаты вида P (a, b) и Q (a, -b), то она будет параллельна оси ординат. В этом случае не будет третьей точки пересечения. Чтобы решить эту проблему, вводится так называемая точка на бесконечности (point of infinity), обозначаемая как O. Поэтому, если пересечение отсутствует, уравнение принимает следующий вид P + Q = O.

Если мы хотим сложить точку саму с собой (удвоить её), то в этом случае просто проводится касательная к точке Q. Полученная точка пересечения отражается симметрично относительно оси X.

Удвоение точки (источник)

Эти операции позволяют провести скалярное умножение точки R = k*P, складывая точку P саму с собой k раз. Однако отметим, что для работы с большими числами используются более быстрые методы.

Эллиптическая кривая над конечным полем

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

y⊃2; = x⊃3; + ax + b (mod p)

Например, 9 mod 7 = 2. Здесь мы имеем конечное поле от 0 до 6, и все операции по модулю 7, над каким бы числом они ни осуществлялись, дадут результат, попадающий в этот диапазон.

Все названные выше свойства (сложение, умножение, точка в бесконечности) для такой функции остаются в силе, хотя график этой кривой не будет походить на эллиптическую кривую. Эллиптическая кривая биткойна, y⊃2; = x⊃3; + 7, определенная на конечном поле по модулю 67, выглядит следующим образом:

Эллиптическая кривая биткойна, определенная на конечном поле по модулю 67 (источник)

Это множество точек, в которых все значения х и у представляют собой целые числа между 0 и 66. Прямые линии, нарисованные на этом графике, теперь будут как бы «оборачиваться» вокруг поля, как только достигнут барьера 67, и продолжатся с другого его конца, сохраняя прежний наклон, но со сдвигом. Например, сложение точек (2, 22) и (6, 25) в этом конкретном случае выглядит так:

Сложение точек (2, 22) и (6, 25) (источник)

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

ECDSA в биткойне

В протоколе биткойна зафиксирован набор параметров для эллиптической кривой и её конечного поля, чтобы каждый пользователь использовал строго определенный набор уравнений. Среди зафиксированных параметров выделяют уравнение кривой (equation), значение модуля поля (prime modulo), базовую точку на кривой (base point) и порядок базовой точки (order). О вычислении порядка базовой точки вы можете почитать здесь. Этот параметр подбирается специально и является очень большим простым числом.

В случае биткойна используются следующие значения:

Уравнение эллиптической кривой: y⊃2; = x⊃3; + 7

Простой модуль: 2256— 232 — 29 — 28 — 27 — 26 — 24 — 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Базовая точка:

04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Жирным шрифтом выделена координата X в шестнадцатеричной записи. За ней сразу следует координата Y.

Порядок: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

Этот набор параметров для эллиптической кривой известен как secp256k1 и является частью семейства стандартов SEC (Standards for Efficient Cryptography), предлагаемых для использования в криптографии. В биткойне кривая secp256k1 используется совместно с алгоритмом цифровой подписи ECDSA (elliptic curve digital signature algorithm). В ECDSA секретный ключ — это случайное число между единицей и значением порядка. Открытый ключ формируется на основании секретного: последний умножается на значение базовой точки. Уравнение имеет следующий вид:

Открытый ключ = секретный ключ * G

Это показывает, что максимальное количество секретных ключей (следовательно, биткойн-адресов) — конечно, и равняется порядку. Однако порядок является невероятно большим числом, так что случайно или намеренно подобрать секретный ключ другого пользователя нереально.

Вычисление открытого ключа выполняется с помощью тех же операций удвоения и сложения точек. Это тривиальная задача, которую обычный персональный компьютер или смартфон решает за миллисекунды. А вот обратная задача (получение секретного ключа по публичному) — является проблемой дискретного логарифмирования, которая считается вычислительно сложной (хотя строгого доказательства этому факту нет). Лучшие известные алгоритмы ее решения, вроде ро Полларда, имеют экспоненциальную сложность. Для secp256k1, чтобы решить задачу, нужно порядка 2128 операций, что потребует времени вычисления на обычном компьютере, сопоставимого со временем существования Вселенной.

Когда пара секретный/публичный ключ получена, её можно использовать для подписи данных. Эти данные могут быть любой длины. Обычно первым шагом выполняется хеширование данных с целью получения уникального значения с числом битов, равным битности порядка кривой (256). После хеширования, алгоритм подписи данных z выглядит следующим образом. Здесь, G — базовая точка, n — порядок, а d — секретный ключ.

  • Выбирается некоторое целое k в пределах от 1 до n-1
  • Рассчитывается точка (х, у) = k * G с использованием скалярного умножения
  • Находится r = х mod n. Если r = 0, то возврат к шагу 1
  • Находится s = (z + r * d) / k mod n. Если s = 0, то возврат к шагу 1
  • Полученная пара (r, s) является нашей подписью
После получения данных и подписи к ним, третья сторона, зная публичный ключ, может их верифицировать. Шаги для проверки подписи такие (Q — открытый ключ):
  • Проверка, что и r, и s находятся в диапазоне от 1 до n-1
  • Рассчитывается w = s-1 mod n
  • Рассчитывается u = z * w mod n
  • Рассчитывается v = r * w mod n
  • Рассчитывается точка (x, y) = uG + vQ
  • Если r = x mod n, то подпись верна, иначе — недействительна
В самом деле,

uG + vQ = u + vdG = (u + vd)G = (zs-1 + rds-1)G = (z + rd) s-1G = kG

Последнее равенство использует определение s на этапе создания подписи.

Безопасность ECDSA связана со сложностью задачи поиска секретного ключа, описанной выше. Помимо этого, безопасность исходной схемы зависит от «случайности» выбора k при создании подписи. Если одно и то же значение k использовать более одного раза, то из подписей можно извлечь секретный ключ, что и произошло с PlayStation 3. Поэтому современные реализации ECDSA, в том числе используемые в большинстве биткойн-кошельков, генерируют k детерминировано на основе секретного ключа и подписываемого сообщения.

P.S. Bitfury Group Russia в Vk и Fb.

sohabr.net

Какие задачи может решить технология блокчейн?

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

 

Девин Милсом, горячий поклонник технологии блокчейн, инвестор и блогер

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

С блокчейном та же ситуация: ему сначала необходимо заработать доверие, а после он окажет на финансовую систему столь же значительное влияние, какое в свое время оказал интернет на процесс общения между людьми.

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

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

Я живу в Великобритании, но не так давно заказал товар в США. Этот товар должен был обойтись мне в 700 английских фунтов стерлингов, однако благодаря «помощи» банков мне придется заплатить чуть более 900 фунтов.

Я был несколько озадачен тем, как получилось так, что за товар, который по факту стоит 1 000 долларов, мне придется заплатить больше 1 200 долларов. Совершив несколько гневных звонков и потратив некоторое время на поиск в интернете, я выяснил следующее:

1. Банки выбирают удобные им курсы обмена валют:

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

В итоге только за это мне пришлось доплатить где-то 150 фунтов.  

2. Банковские сборы

Однако банки не только используют удобный им коэффициент пересчета, но и начисляют достаточно высокую комиссию. Пересылка моих денег на «заграничный банковский счет» обошлась мне в 9,50 фунтов.

Также следует учитывать, что транзакция денег занимает несколько дней, а иногда и недель. Кроме того, сама передача производится только в рабочие дни – и это в мире, где торговля ведется 24 часа 7 дней в неделю! По сути, 15% времени банки банально бесполезны.

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

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

 

 

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

1. Отсутствие необходимости в посредниках.

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

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

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

Однако в этом случае следует четко учитывать и понимать разницу между публичными и приватными ключами.

2. Комиссионный сбор.

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

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

Давайте сравним комиссионный сбор, взимаемый банками, с комиссией системы биткоин.

В среднем, система биткоин берет от 0,0001 до 0,0003 BTC за транзакцию. Возвращаясь к моему предыдущему примеру, можем легко посчитать, что если бы я решил совершить пересылку денег в США при помощи данной системы, то это обошлось бы мне где-то в 0,18 BTC (в соответствии с нынешней рыночной ставкой). В таком случае комиссионный сбор составил бы 0,0003 BTC – это где-то 1,7 доллара или 1,28 фунта. По факту комиссия за такую пересылку вышла бы в 7,5 раз дешевле той, которую выставил мне банк.

3. Вопрос доверия

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

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

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

 

 

Сара Кайо, изучает компьютерные науки в Стэнфорде

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

Компания Chronicled – это одна из фирм, которая осуществляет управление цепочками в системах блокчейн и «интернет вещей». Будучи основанной на базе Центра инноваций в Сан-Франциско, данная компания использует блокчейн и технологии «интернета вещей» для создания безопасных смарт-систем, которые будут контролировать цепи поставок. Данная фирма защищает журналы системных событий, общую информацию и идентификационные данные устройств в системе «интернета вещей». Кроме того, компания является также одним из членов-основателей «Союза интернета вещей» («Trusted IoT Alliance»), главной целью которого является дальнейшая разработка стандарта для системы блокчейн с открытым исходным кодом, а также поддержание и внедрение технологии IoT в разных отраслях по всему миру.

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

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

 

Дэвид Кайо, специалист по ПО

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

А теперь давайте рассмотрим более подробно, чем же хороша данная технология и в каких сферах она может быть использована.

  • Международные расчеты: при помощи технологии блокчейн криптовалюту Эфир (Ethereum) можно переслать человеку или компании, находящейся на другом конце света. Кроме того, в отличие от банков, у которых есть выходные и перерывы, цифровой реестр учета не нуждается в отдыхе или сне.
  • Использование технологии для защиты нашей собственности: благодаря технологии блокчейн электронные ключи доступа станут использоваться повсеместно. По сути, мы уже сейчас пользуемся ими – например, при блокировке наших девайсов. Таким образом, вы имеете дело с криптографией каждый раз, когда вводите пароль на своем телефоне. Это и есть то, что предлагает нам технология блокчейн – использование шифрования для защиты того, что принадлежит нам.
  • Более высокий уровень безопасности: технология обеспечивает максимальный уровень безопасности для девайсов в системе «интернет вещей» (IoT). Специалистам по безопасности приходится непрерывно заботиться о защите информации и сохранении ее неприкосновенности.

 

Майк Лин, изучает блокчейн в университете

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

  1. Если вы все делаете в соответствии с регламентом системы и следуете всем ее правилам, то ваши данные обязательно будут обработаны.
  2. Все, что вам нужно, это создать ключи шифрования, действующие в системе блокчейн. При этом нет никакой необходимости в участии каких-либо банков.
  3. Если вам известны правила действия системы, то вы заметите, что блокчейн всегда действует в соответствии с этими правилами. Благодаря тому, что в процессе не задействованы люди, отсутствует всякая предубежденность и двоякость, нет злоупотребления положением и лоббирования личных интересов. Вы каждый раз имеете дело с огромным количеством компьютеров, которые организованы в одну сеть, обрабатывают те же самые точные числа и выводят тот же самый результат.
  4. Данная технология достойна максимального доверия, потому что выглядит чуть ли не бесконечной, ведь блокчейн – это вычислительное устройство, которое будет продолжать работать, пока хотя бы на одном девайсе есть интернет.

Биткоин стал первой широко используемой криптовалютой в системе блокчейн. В качестве концепта он был впервые представлен Сатоши Накамото.

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

Блокчейн – это полностью прозрачная система. Даже совершая операции с криптовалютами, которые используют доказательство с нулевым разглашением для защиты информации (например, Monero, ZCash или Эфир), вы можете быть уверены в безопасности проводимого платежа. По факту блокчейн – это «книга» записей в цифровом реестре учета, и количество этих записей неуклонно растет. Будучи пользователем, вы подписываете транзакцию приватным ключом, тем самым создавая сообщение и добавляя свою подпись. Ваша транзакция будет действительна только в том случае, если у вас будет достаточно средств на счете, чтобы совершить пересылку, и если вы укажете правильный публичный ключ и подпись. Весь описанный процесс – чистая математика.

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

Используя блокчейн в качестве базы для «идеальных» вычислительных операций, мы сможем на его основе создавать приложения, которые поддаются честному, основанному на чистой математике контролю – приложения, которые никогда не «падают», пока где-то работает хоть один компьютер, зарегистрированный в системе.

www.kv.by

Математические основы биткойн-блокчейна | crypto.by

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

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

Поэтому в сегодняшней статье мы бы хотели поговорить о математических основах биткойн-блокчейна — эллиптических кривых, ECDSA и ключах.

Фундаментальной частью биткойна являются криптографические алгоритмы. В частности, алгоритм ECDSA — Elliptic Curve Digital Signature Algorithm, который использует эллиптические кривые (elliptic curve) и конечные поля (finite field) для подписи данных, чтобы третья сторона могла подтвердить аутентичность подписи, исключив возможность её подделки. В ECDSA для подписи и верификации используются разные процедуры, состоящие из нескольких арифметических операций.

Эллиптические кривые

Эллиптическая кривая над полем K — это кубическая кривая над алгебраическим замыканием поля K, задаваемая уравнением третьей степени с коэффициентами из поля K и «точкой на бесконечности». Одной из форм эллиптических кривых являются кривые Вейерштрасса.

y² = x³ + ax + b

Для коэффициентов a = 0 и b = 7 (используемых в биткойне), график функции принимает следующий вид:

Эллиптическая кривая

Эллиптические кривые имеют несколько интересных свойств, например, невертикальная линия, пересекающая две некасательные точки на кривой, пересечет третью точку на кривой. Суммой двух точек на кривой P + Q называется точка R, которая является отражением точки -R (построенной путем продолжения прямой (P; Q) до пересечения с кривой) относительно оси X.

Сумма двух точек на кривой 

Если же провести прямую через две точки, имеющие координаты вида P (a, b) и Q (a, -b), то она будет параллельна оси ординат. В этом случае не будет третьей точки пересечения. Чтобы решить эту проблему, вводится так называемая точка на бесконечности (point of infinity), обозначаемая как O. Поэтому, если пересечение отсутствует, уравнение принимает следующий вид P + Q = O.

Если мы хотим сложить точку саму с собой (удвоить её), то в этом случае просто проводится касательная к точке Q. Полученная точка пересечения отражается симметрично относительно оси X.

Удвоение точки 

Эти операции позволяют провести скалярное умножение точки R = k*P, складывая точку P саму с собой k раз. Однако отметим, что для работы с большими числами используются более быстрые методы.

Эллиптическая кривая над конечным полем

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

y² = x³ + ax + b (mod p)

Например, 9 mod 7 = 2. Здесь мы имеем конечное поле от 0 до 6, и все операции по модулю 7, над каким бы числом они ни осуществлялись, дадут результат, попадающий в этот диапазон.

Все названные выше свойства (сложение, умножение, точка в бесконечности) для такой функции остаются в силе, хотя график этой кривой не будет походить на эллиптическую кривую. Эллиптическая кривая биткойна, y² = x³ + 7, определенная на конечном поле по модулю 67, выглядит следующим образом:

Эллиптическая кривая биткойна, определенная на конечном поле по модулю 67 

Это множество точек, в которых все значения х и у представляют собой целые числа между 0 и 66. Прямые линии, нарисованные на этом графике, теперь будут как бы «оборачиваться» вокруг поля, как только достигнут барьера 67, и продолжатся с другого его конца, сохраняя прежний наклон, но со сдвигом. Например, сложение точек (2, 22) и (6, 25) в этом конкретном случае выглядит так:

Сложение точек (2, 22) и (6, 25) 

ECDSA в биткойне

В протоколе биткойна зафиксирован набор параметров для эллиптической кривой и её конечного поля, чтобы каждый пользователь использовал строго определенный набор уравнений. Среди зафиксированных параметров выделяют уравнение кривой (equation), значение модуля поля (prime modulo), базовую точку на кривой (base point) и порядок базовой точки (order).  Этот параметр подбирается специально и является очень большим простым числом.

В случае биткойна используются следующие значения:

Уравнение эллиптической кривой: y² = x³ + 7

Простой модуль: 2256— 232 — 29 — 28 — 27 — 26 — 24 — 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F

Базовая точка:

04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8

Жирным шрифтом выделена координата X в шестнадцатеричной записи. За ней сразу следует координата Y.

Порядок: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141

Этот набор параметров для эллиптической кривой известен как secp256k1 и является частью семейства стандартов SEC (Standards for Efficient Cryptography), предлагаемых для использования в криптографии. В биткойне кривая secp256k1 используется совместно с алгоритмом цифровой подписи ECDSA (elliptic curve digital signature algorithm). В ECDSA секретный ключ — это случайное число между единицей и значением порядка. Открытый ключ формируется на основании секретного: последний умножается на значение базовой точки. Уравнение имеет следующий вид:

Открытый ключ = секретный ключ * G

Это показывает, что максимальное количество секретных ключей (следовательно, биткойн-адресов) — конечно, и равняется порядку. Однако порядок является невероятно большим числом, так что случайно или намеренно подобрать секретный ключ другого пользователя нереально.

Вычисление открытого ключа выполняется с помощью тех же операций удвоения и сложения точек. Это тривиальная задача, которую обычный персональный компьютер или смартфон решает за миллисекунды. А вот обратная задача (получение секретного ключа по публичному) — является проблемой дискретного логарифмирования, которая считается вычислительно сложной (хотя строгого доказательства этому факту нет). Лучшие известные алгоритмы ее решения, вроде ро Полларда, имеют экспоненциальную сложность. Для secp256k1, чтобы решить задачу, нужно порядка 2128операций, что потребует времени вычисления на обычном компьютере, сопоставимого со временем существования Вселенной.

Когда пара секретный/публичный ключ получена, её можно использовать для подписи данных. Эти данные могут быть любой длины. Обычно первым шагом выполняется хеширование данных с целью получения уникального значения с числом битов, равным битности порядка кривой (256). После хеширования, алгоритм подписи данных z выглядит следующим образом. Здесь, G — базовая точка, n — порядок, а d — секретный ключ.

  • Выбирается некоторое целое k в пределах от 1 до n-1
  • Рассчитывается точка (х, у) = k * G с использованием скалярного умножения
  • Находится r = х mod n. Если r = 0, то возврат к шагу 1
  • Находится s = (z + r * d) / k mod n. Если s = 0, то возврат к шагу 1
  • Полученная пара (r, s) является нашей подписью

После получения данных и подписи к ним, третья сторона, зная публичный ключ, может их верифицировать. Шаги для проверки подписи такие (Q — открытый ключ):

  • Проверка, что и r, и s находятся в диапазоне от 1 до n-1
  • Рассчитывается w = s-1 mod n
  • Рассчитывается u = z * w mod n
  • Рассчитывается v = r * w mod n
  • Рассчитывается точка (x, y) = uG + vQ
  • Если r = x mod n, то подпись верна, иначе — недействительна

В самом деле,

uG + vQ = u + vdG = (u + vd)G = (zs-1 + rds-1)G = (z + rd) s-1G = kG

Последнее равенство использует определение s на этапе создания подписи.

Безопасность ECDSA связана со сложностью задачи поиска секретного ключа, описанной выше. Помимо этого, безопасность исходной схемы зависит от «случайности» выбора k при создании подписи. Если одно и то же значение k использовать более одного раза, то из подписей можно извлечь секретный ключ, что и произошло с PlayStation 3. Поэтому современные реализации ECDSA, в том числе используемые в большинстве биткойн-кошельков, генерируют k детерминировано на основе секретного ключа и подписываемого сообщения.

crypto.by

Что такое блокчейн простыми словами

blockchain

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

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

В настоящее время принята централизованная система ведения баз данных, то есть имеется кто то, кто уполномочен вести данную базу данных (реестр), а все остальные обращаются к нему в случае необходимости получить, отредактировать, добавить или удалить данные. Например, Госреестр ведет базу данных прав собственности на недвижимое имущество. ЗАГС ведает записями актов гражданского бракосочетания, а ваш банк ведет ваши счета и учитывает денежные средства на них.

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

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

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

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

Технология блокчейн на простом примере

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

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

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

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

Нужно проверить кому принадлежит подпись, а также придется проследить все входящие и исходящие движения монет на счету Иры. Может у нее есть только 5 монет или она имеет отрицательный баланс, и она не может соответственно потратить 10 монет. А в друг она решила смошенничать и одновременно отправила эти деньги Наде, так называемая проблема двойных трат. Впрочем, мошенником может оказаться кто-то другой, написав записку от имени Иры, что она якобы оплатила ему 30 монет.

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

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

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

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

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

Однако не все так просто. Может получиться так, что сразу двое или больше людей практически одновременно оформят новый блок и начнут его рассылать остальным. В результате в хождении окажется сразу два разных блока с одинаковым номером. На этот случай существует правило, что истинной считается самая длинная цепочка блоков начиная от первого и меньшинство должно примкнуть к большинству. Именно поэтому чтобы транзакция окончательно считалась подтвержденной ей мало оказаться в блоке, требуется еще несколько блоков после этого, чтобы она считалась окончательно истинной. Допустим жители приняли решение, что для этого требуется 3 блока.

Другими словами, однажды вечером Антон и Света одновременно оформили новый блок с номером 24, причем список транзакций в них был не идентичен. Следующим вечером первым решил математическую задачку Игорь и создал новый блок номер 25 на основе блока Светы. Те жители, кто принял накануне версию Антона должны будут, получив блок номер 25 принять его и блок 24 созданный Светой, так как это более длинная цепочка, а блок 24 Антона выбросить. При этом транзакции, которые были в блоке Антона, но отсутствовали в блоке Светы так же исчезают, вернее их как-бы и не было никогда. Только когда появится блок номер 26 основанный на блоке 25 Игоря можно считать, что все транзакции из блока 24 созданного Светой подтверждены.

shema hardfork

Это делается для того, чтобы исключить ситуацию, когда снова одновременно будут созданы два блока с номером 25, но один на основе блока Антона, а другой Светы. В этом случае обе цепочки имеют одинаковую длину и обе получаются верными. Какая цепочка победит будет зависеть от того, в какой из них первым будет найден 26 блок. Она станет длинней и более короткая должна признать свое поражение и примкнуть к длинной. Именно для таких ситуаций и существует количество блоков требуемых для подтверждения транзакции. Количество блоков требуемых для подтверждения выбирается из ходя из вероятности возникновения параллельных цепочек определенной длинны.

Однако, что будет, если по каким-то причинам часть жителей продолжит вести учет на основе блока 24 Антона, а другая блока 24 созданного Светой и будут игнорировать блоки из другой цепочки. В этом случае произойдет раскол блокчейна на две независимые цепочки, не связанные между собой, это явление получило название hardfork. Фактически возникнут две независимые денежные системы.

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

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

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

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

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

Впрочем, у нее есть и недостатки. Фактически каждый участник делает одно и тоже, просто дублируя действия других. Следовательно, в классическом виде система не масштабируема. Необходимость каждому скачать и хранить всю цепочку блоков, что занимает очень много времени и требует много места для хранения. Например, блокчейн биткоина на данный момент занимает примерно 170 ГБ. Необходимость иметь дорогое высокопроизводительное оборудование чтобы иметь возможность создавать новые блоки и много электричества для этого. Относительно не высокая скорость работы сети в базовом варианте, что не позволяет на ее основе построить систему платежей наподобие Visa/Mastercard. Не во всех случаях «прозрачность» блокчейна является благом. Впрочем, некоторые из упомянутых недостатков имеют те или иные варианты решения.

beginpc.ru