Математическая формула биткоина: Математические основы биткойн-блокчейна / Блог компании Bitfury Group / Хабр

Содержание

Математические основы биткойн-блокчейна / Блог компании Bitfury Group / Хабр

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

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

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

/ Изображение 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 (используемых в биткойне), график функции принимает следующий вид:


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

Эллиптические кривые имеют несколько интересных свойств, например, невертикальная линия, пересекающая две некасательные точки на кривой, пересечет третью точку на кривой. Суммой двух точек на кривой 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, чтобы решить задачу, нужно порядка 2

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

Когда пара секретный/публичный ключ получена, её можно использовать для подписи данных. Эти данные могут быть любой длины. Обычно первым шагом выполняется хеширование данных с целью получения уникального значения с числом битов, равным битности порядка кривой (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.

Математика против лома, или Биткойн как квантовая канарейка

Мы живём в удивительное время: впервые в истории ценность массово «переезжает» из физических хранилищ в виртуальные — криптовалюту, блокчейн. И это заставляет задуматься, насколько надёжно новое хранилище защищено. Пока речь шла о слитках, монетах, банкнотах, ценных бумагах, сохранность можно было обеспечить чисто физически — возведя стальные стены и поставив возле них вооружённую охрану. Но в криптовалютной реальности всё основано на математике.

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

Прежде всего вспомним, как устроена самая популярная из криптовалют — Bitcoin (а по аналогии с ней и сотни других, отличающихся зачастую лишь значением переменных). Основа основ здесь: число длиной в 256 бит, сгенерировать которое для себя должен каждый пользователь. Это число можно представить как ключ к сейфу, где хранятся личные сбережения: им «подписывают» поручения, заносимые в блокчейн. Вот почему знать его должен только владелец. Его так и называют: приватный ключ.

Чтобы доказать окружающим, что приватный ключ у вас есть, но не раскрывать его, по приватному ключу вычисляют второе число — ключ публичный. Используемая при этом криптографическая функция (ECDSA, «эллиптическое крипто») такова, что «прокрутить» её в обратную сторону, то есть вычислить по публичному ключу приватный, намного труднее.

Наконец, есть ещё и третье число: так называемый «адрес кошелька». Оно нужно, чтобы принимать переводы от других пользователей. В принципе публичный ключ сам может служить адресом и в первые пару лет существования Bitcoin его так и использовали. Но сегодня адрес вычисляют: так удобней (он короче, всего 160 бит) и, как увидите, безопасней. Адрес получают из публичного ключа путём последовательного двукратного вычисления хэша (сперва SHA-256, потом RIPEMD-160).

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

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

В результате примерно каждые два месяца LBC находит очередной приватный ключ. И деньги, если только они в данном кошельке имеются и владелец не затребует их обратно, поступают в распоряжение участников этого «невозможного» проекта. А даже если владелец и затребует их обратно, LBC отстаивает право забрать себе 10% возвращаемой суммы — вроде как в качестве вознаграждения за пойманную чужую корову (скажите спасибо, что мы её привели, другие на шашлык пустили бы!).

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

Но как же так: с одной стороны миллиарды лет, с другой — два месяца?! Тонкость, конечно, в том, что речь идёт не о взломе конкретного кошелька, а о поиске случайных совпадений. Никто в LBC не знает, какой приватный ключ удастся подобрать следующим. Так что за свой персональный биткойн-кошелёк вы можете не переживать, его по-прежнему надёжно охраняет теория вероятностей: если кто-то на него нацелится, на подбор ключа уйдут (вероятно!) миллиарды лет. Однако всё может измениться с появлением квантового компьютера — подбирать с помощью которого приватные ключи станет очень легко, а потому чрезвычайно выгодно.

С квантовыми компьютерами (КК) связана отдельная интересная и свежая история. Дело в том, что официальные успехи строителей КК невелики. Грубо говоря, сегодня построены два типа таких компьютеров. Одни — неполноценные (см. продукцию D-Wave Systems): в них действительно используются некоторые квантовые эффекты, но применять их можно лишь для решения ограниченного круга задач. Для исполнения наиболее полезных квантовых алгоритмов — так называемых алгоритма Шора (разложение на множители) и Гровера (задача перебора) — неполноценные КК не годятся.

А полноценные КК — в которых работают настоящие кубиты и каждый кубит «запутан» со всеми другими — пока не перешагнули 20-кубитового порога. Хуже того, то, например, что удалось построить коммерческий 17-кубитовый квантовый процессор (IBM, 2017) не означает, что с той же технологией удастся построить 18-кубитовый или более. Поэтому настоящие, «классические» квантовые компьютеры пока годны лишь для экспериментов, не имеющих практической ценности — и когда это удастся исправить, никто не знает.

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

Верить ли этому — решайте сами. Конспирологам, как всегда, достаточно веры. Но буквально за эту зиму был сформулирован замечательный контраргумент, получивший название «квантовой канарейки»: если полноценный квантовый компьютер, годный для решения практических задач, удастся построить, Bitcoin — словно канарейка, которую рудокопы исстари брали в шахту — первым сообщит нам об этом своим изменившимся поведением. 128 на квантовом.

Несколько теоретических подходов к этой проблеме, выполненных учёными из разных стран (см., в частности, здесь и здесь), позволяют нарисовать следующий сценарий квантовой атаки. Ломать свежие кошельки (то есть подбирать приватные ключи к ним) обладатели КК не станут. В том числе и потому, что это сравнительно сложно. Сегодня не принято раскрывать публичный ключ (правильные Bitcoin-программы, тратя средства с одного адреса, не переводят сдачу обратно, а отправляют её на новый адрес, публичный ключ к которому не опубликован), но в первые два года существования Bitcoin публичный ключ использовался в качестве адреса. Иначе говоря, для адресов, которые тогда засветились, публичные ключи известны — и это сильно снижает требуемый для взлома объём вычислений (см. предыдущий параграф: нужно лишь обратить ECDSA). А хранящиеся там суммы порой гигантские!

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

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

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

Квантовая канарейка пока жива.

К счастью, есть возможность продлить её жизнь и дальше. Нужно лишь перейти на криптоалгоритмы, устойчивые к квантовым вычислениям. Сильно упрощая, для этого достаточно, например, перевести Bitcoin на использование исключительно хэшей. Так называемая подпись Лэмпорта, которую с недавних пор продвигают в Bitcoin, Ethereum и прочих криптовалютах, как раз основана на такой идее. К сожалению, у подписи Лэмпорта (как и, предположительно, у прочих КК-стойких алгоритмов) есть свой недостаток: она очень длинная (килобайты!), что неизбежно раздует размер блоков в блокчейне. Поэтому когда такой переход случится, Bitcoin имеет больше шансов выжить — благодаря уже реализованным средствам компрессии блокчейна и реализуемому (но фактически стартовавшему, см. Lightning Network) второму уровню сети.

Но есть и более оптимистичный сценарий. Дело в том, что квантовый компьютер даст значительный прирост производительности в майнинге (где всё сводится к SHA). И, опираясь на постулат, что майнинг совокупно всегда выгодней грубого взлома, можно предположить, что владельцы первых же КК займутся не сомнительным с точки зрения закона и нравственности подбором приватных ключей, а майнингом. И это тоже будет легко заметить — по рывку на графиках, иллюстрирующих текущую сложность майнинг-операций. Иначе говоря, они обратят квантовый компьютер на благо обществу.

Что в сухом остатке? Опасностей если и ждать, то с другой стороны. Математика криптовалют по-прежнему надёжней вооружённой охраны и стальных стен.

Математика Биткоина: Почему 21 миллион монет? | altstake — новости криптовалют

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

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

Секретная формула

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

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

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

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

Когда вы разбиваете блоки за четыре года на шесть блоков в час, общее количество блоков в каждом цикле делится примерно на 210’000. При следующем халвинге поставки BTC будут сокращены с 12,5 BTC до 6,25 BTC.

До этого награда за блок составляла 25 BTC, а до этого — 50 BTC. Сумма всех размеров наград блока составляет 100.
Когда вы умножаете 100 на 210’000 блоков за цикл деления наград майнеров пополам, вы получаете 21 миллион BTC. По крайней мере, это согласно теории Флейшман, что логично.

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

Свеча в стакане. Как научиться прогнозировать цену биткоина :: РБК.Крипто

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

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

Анализировать графики

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

Основные показатели — уровни поддержки и сопротивления цены, еще их называют «пол» и «потолок». Это значения, в которые цена упирается и совершает разворот (начинает вновь подниматься или падать).

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

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

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

Сравнивать со стоимостью золота и нефти

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

Использовать бота

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

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

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

Следить за фьючерсными отчетами

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

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

Обратиться к криптоброкеру

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

Использовать метод биржевого стакана

На стоимость криптовалюты влияет спрос. Если он есть, то цена монеты будет расти. Если с рынка уходит крупная сумма, то цена токена, в которой эту сумму вывели, скорее всего, значительно снизится. В какой именно момент появится крупный игрок на рынке, предугадать невозможно. Однако есть таблица, где перечислены все ордера на покупку и продажу — указания брокеру от трейдера на покупку или продажу цифровых денег, когда возникнут благоприятные условия (характер этих условий записывается в ордере). Некоторые самостоятельные трейдеры, видя крупного игрока, заходят на рынок вместе с ним. Анализируя таблицу с ордерами, можно оценить уровень спроса и предложения, а значит, и спрогнозировать краткосрочную цену. Чаще всего этот метод называют «биржевым стаканом» или «стаканом заявок», иногда используют другие обозначения: «книга приказов» или «глубина рынка».

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

Как получить или заработать BTC (биткоины)

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

 

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

 

Чем биткоин (bitcoin) отличается от обычной валюты?

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

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

 

Кто создал биткоин (bitcoin)?

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

 

Кто печатает биткоины (bitcoins)?

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

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

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

 

Получается, произвести неограниченное число биткоинов (bitcoins) нельзя?

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

 

Чем обеспечен биткоин (bitcoin)?

Обычные валюты обеспечены золотом или серебром. Теоретически, если бы вы захотели сдать один доллар в банк, то в замен могли бы получить немного золота (хотя это и не работает на практике). Но биткоины не обеспечены золотом. Их основа — математика.

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

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

 

Каковы особенности биткоина (bitcoin)?

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

Биткоин децентрализован.

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

Это значит, что ни один центральный орган не может спровоцировать крах кредитно-финансовой системы или просто решить забрать у людей их деньги (в нашем случае — биткоины), как это сделал Центральный Европейский Банк на Кипре в 2013 году. И даже если какая-то часть сети по какой-то причине перейдет в оффлайн, деньги продолжать циркулировать по оставшейся.

Открыть биткоин кошелек (получить биткоин адрес) проще простого.

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

 

Биткоин (bitcoin) анонимен.

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

Биткоин (bitcoin) полностью прозрачен.

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

Если у вас есть биткоин кошелек (биткоин адрес), любой видит, сколько биткоинов на вашем счете, но никто не знает, что этот счет — ваш.

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

Минимальная комиссия за перевод.

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

Экономия времени.

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

Математика и биткоин: Как рассчитать справедливую стоимость 1 BTC | Финансы

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

Преамбула

Неделю назад известный криптовалютный аналитик Вилли Ву опубликовал статью, в которой заявил, что биткоин (EXANTE: Bitcoin) может подешеветь с текущих уровней до $5500−5700. Главной причиной падения он назвал слишком высокий уровень коэффициента NVT — отношения стоимости сети (рыночная капитализация) к объему проводимых транзакций. По мнению Ву, чтобы оправдать текущую цену, необходимо значительное увеличение объемов операций. Иначе котировки будут вынуждены снизиться до уровня, соответствующего загруженности сети.

Несколько дней спустя управляющий директор Fundstrat Роберт Слеймер, наоборот, выразил оптимизм в отношении биткоина и заявил о скором возобновлении бычьего тренда. В основе его выводов лежит мощная поддержка в окрестности уровня $7000 и перепроданность индикатора RSI.

Что определяет NVT — оценку или скорость обращения

Некоторые аналитики утверждают, что если для оценки блокчейн-сетей достаточно Количественной теории денег, то коэффициент NVT идентичен скорости обращения токена (средняя частота, с которой денежная единица используется для покупки новых отечественных товаров и услуг за определенный период времени, — прим. ред.). Более того, они пришли к выводу, что всплески скорости обращения (как в 2018 году) обычно предшествуют спадам на рынке. Они позволяют очистить систему от «иррационального изобилия», оставшегося от предыдущего бычьего рынка.

При условии сохранения исторических норм «нормальный» диапазон 30-дневной скользящей средней коэффициента NVT биткоина лежит между 10 и 20. Значения выше 20 указывают на чрезмерный энтузиазм на рынке, тогда как значения ниже 10 говорят о недооцененности криптовалюты (конечно, если они не следуют сразу за стремительным ростом).

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

Анализ уравнения NVT

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

В анализе мы использовали объем операций и рыночную капитализацию по состоянию на 3 июня — 4,4 млрд и 130,3 млрд долларов, соответственно. Применялись следующие уравнения и показатели:

  • NVT = Рыночная капитализация / Объем операций;
  • Объем операций при NVT = Текущая капитализация / NVT сценария;
  • Разница в объемах операций = Текущий объем — Объем, предполагаемый
  • сценарием;
  • Рыночная капитализация при NVT = Текущий объем операций * NVT сценария;
  • Необходимое снижение капитализации = Капитализация по сценарию — Текущая рыночная капитализация;
  • Стоимость одного биткоина = Рыночная капитализация по сценарию / Текущее предложение.

Проведя соответствующие расчеты для NVT, равного 10, 15 и 20, мы установили, что для оправдания текущей рыночной цены биткоина объем операций в сети должен значительно возрасти (на 8,5 млрд, 4,2 млрд и 2 млрд долларов, соответственно).

Или должна существенно снизиться рыночная капитализация (на 85,5 млрд, 63,1 млрд и 40,7 млрд долларов, соответственно), чтобы коэффициент NVT вернулся на «нормальные» уровни в 10, 15 и 20.

  • В самом консервативном и худшем с точки зрения цены сценарии (NVT = 10) справедливая стоимость биткоина составляет $2618.
  • Среднее значение коэффициента NVT (15) дает справедливую цену биткоина, равную $3927.
  • В самом оптимистичном сценарии (при NVT = 20) справедливая рыночная цена биткоина, определенная с помощью Количественной теории денег, составляет $5237.

Заключение

У этого анализа есть два недостатка:

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

Используя доступные инструменты анализа, следует согласиться и с Ву и со Слеймером, учитывая, что оценки одного основаны на особенностях коэффициента NVT, а другого — на динамике цен. Однако в долгосрочной перспективе обычно верх одерживают фундаментальные показатели, поэтому рано или поздно цена должна подскочить на фоне значительного интереса со стороны покупателей. Это позитивно повлияет на объемы блокчейн-транзакций, позволит закрыть разрыв и вернуть коэффициент NVT в нормальный диапазон.

Мнение автора может не совпадать с позицией редакции.

Подготовила Евгения Сидорова

Биткоин — Moneyman

22 декабря 2020

Биткоин (bitcoin, от англ. bit — единица информации «бит» и coin — «монета») — наиболее известный на сегодняшний день вид криптовалюты (электронные денежные средства, для эмиссии которых используются алгоритмы шифрования и криптозащиты).

Биткоин (BTC) появился в 2008 году, его создателем был назван Сатоши Накамото. До сих пор нет точных доказательств того, был ли это один человек или группа лиц.

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

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

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

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

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

BTC зачастую позиционируется как децентрализованный вид валюты, который не подчиняется ни частным лицам или компаниям. С момента своего появления биткоин вырос в цене в несколько тысяч раз. Пиковых значений достигал в конце 2017 года. На значительный рост оказали влияние:

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

Затем стоимость биткоина немного снизилась, но в настоящее время она снова достигла максимальных показателей.

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

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

Какова математика криптографии на основе эллиптических кривых?

Когда кто-то отправляет вам биткойны, они отправляют биткойны на ваш адрес. Если вы хотите потратить любой из отправленных биткойнов, вы создаете транзакцию и указываете, куда должен пойти ваш биткойн. Добавляя цифровую подпись, вы можете доказать, что знаете секретный ключ, соответствующий адресу 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfN. Такая транзакция не входит в цепочку блоков, потому что у нее отсутствует действующая цифровая подпись.Большинство криптовалют используют эллиптические кривые, потому что 256-битный закрытый ключ так же безопасен, как 3072-битный закрытый ключ RSA.

Введение

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

 Переведите 5 биткойнов с 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa (ваш адрес) на 12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX (адрес получателя).

Конечно, любой может создать транзакцию, похожую на ту, что приведена выше, поэтому, если бы она была добавлена ​​в блокчейн как есть и без проблем, вы бы потеряли более 30 000 долларов, нравится вам это или нет. К счастью, такая транзакция не входит в цепочку блоков, потому что у нее отсутствует действующая цифровая подпись. Добавляя цифровую подпись, вы можете доказать, что знаете секретный ключ, соответствующий адресу 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfN. Если вы не знаете соответствующий закрытый ключ, то вам, вероятно, не стоило говорить людям отправлять вам биткойны через этот адрес, поскольку вы не можете потратить ни одного биткойна, отправленного туда!

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

Криптография с открытым ключом

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

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

Одним из способов криптографии с открытым ключом является использование эллиптических кривых. Другой способ — использовать RSA, который вращается вокруг простых чисел. Большинство криптовалют, включая Биткойн и Эфириум, используют эллиптические кривые, потому что 256-битный закрытый ключ с эллиптической кривой так же безопасен, как и 3072-битный закрытый ключ RSA.Клавиши меньшего размера легче управлять и работать с ними.

Криптография с эллиптической кривой

Что такое эллиптическая кривая? Эллиптическая кривая состоит из всех точек, удовлетворяющих уравнению следующего вида:

y² = x³ + ax + b

, где 4a³ + 27b² ≠ 0 (это необходимо для исключения особых точек).

Вот несколько примеров эллиптических кривых:

Обратите внимание, что все эллиптические кривые выше симметричны относительно оси x. Это верно для любой эллиптической кривой, потому что уравнение для эллиптической кривой:

y² = x³ + ax + b

И если вы извлечете квадратный корень из обеих сторон, то получите:

y = ± √x³ + ax + b

Итак, если a = 27 и b = 2 и вы вставите x = 2, вы получите y = ± 8, что приведет к точкам (2, -8) и (2, 8).

Эллиптическая кривая, используемая Биткойном, Эфириумом и многими другими криптовалютами, называется secp256k1. Уравнение для кривой secp256k1: y² = x³ + 7. Эта кривая выглядит так:

Сатоши выбрал secp256k1 без особой причины.

Сложение точек

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

Чтобы сложить две точки на эллиптической кривой вместе, вы сначала находите линию, проходящую через эти две точки.Затем вы определяете, где эта линия пересекает кривую в третьей точке. Затем вы отражаете эту третью точку по оси x (то есть умножаете координату y на -1), и любая точка, полученная из нее, является результатом сложения первых двух точек вместе.

Давайте посмотрим на пример. Допустим, вы хотите сложить следующие две точки вместе:

Сначала вы найдете линию, проходящую через две точки:

Затем вы найдете третью точку на кривой, которую пересекает линия:

Затем вы отразите эту точку по оси x:

Следовательно, P + Q = R.

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

Например, у нас есть следующая кривая с базовой точкой P:

Изначально у нас есть P или 1 • P.

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

Теперь мы находим «третью» точку, которую пересекает эта линия, и отражаем ее поперек оси x.

Таким образом, добавление P к самому себе, или P + P, равно 2 • P.

Если мы снова добавим P к самому себе, мы будем вычислять P, добавленное к самому себе, или P + P + P. Результатом будет 3 • P. Чтобы вычислить 3 • P, мы можем просто сложить P и 2 • P вместе.

Мы можем продолжать добавлять P к самому себе, чтобы вычислить 4 • P и 5 • P и так далее.

Базовая точка используется secp256k1 кривой имеет следующий x- и y- координаты:

х-координат: 55066263022277343669578718895168534326250603453777594175500187360389116729240

у-координату:

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

Ускорение добавления точек

Сколько шагов потребуется для вычисления 10 • P? Казалось бы, потребуется девять шагов, потому что 10 • P равно

P + P + P + P + P + P + P + P + P + P

, что требует операций сложения девяти точек.

Оказывается, вы можете вычислить 10 • P всего за четыре шага. Это связано с тем, что для сложения точек выполняется следующее свойство:

n • P + r • P = (n + r) • P

Например:

4 • P + 6 • P = (4 + 6) • P = 10 • P

Таким образом, быстрый способ вычисления 10 • P выглядит следующим образом:

P + P = 2 • P

2 • P + 2 • P = 4 • P

4 • P + 4 • P = 8 • P

2 • P + 8 • P = 10 • P

, что требует только четырех операций сложения точек.

Сколько шагов потребуется для вычисления x • P, где x — случайное 256-битное целое число? В этом случае x может находиться в диапазоне от 0 до 1,1579209e + 77.

Оказывается, вычисление x • P никогда не потребует более 510 операций сложения точек. Вот почему. Сначала вычислите следующий ряд:

2⁰ • P, 2¹ • P, 2² • P, 2³ • P, 2⁴ • P, 2⁵ • P, 2⁶ • P,…, 2²⁵⁵ • P.

Вы можете рассчитать вышеуказанный ряд с 255 операциями сложения точек, потому что есть 256 точек, и вы можете перейти от одной точки к другой, добавив текущую точку к самой себе.(n + 1) • P. Дается первая точка 2⁰ • P. 2⁰ • P = 1 • P = P.

Следующий шаг — найти двоичное разложение x. Например, если x равно 246, двоичное расширение будет 2⁷ + 2⁶ + 2⁵ + 2⁴ + 2² + 2¹ = 246. Затем мы умножаем двоичное расширение x на P: 2⁷ • P + 2⁶ • P + 2⁵ • P + 2⁴ • P + 2² • P + 2¹ • P. Затем мы просто складываем все эти точки вместе, чтобы получить 246 • P. Нам не нужно вычислять отдельные точки 2¹ • P, 2² • P,…, 2⁷ • P, поскольку мы вычисляли их ранее.

Максимальное двоичное расширение x будет содержать 256 элементов (от 2⁰ до 2²⁵⁵), поэтому нам никогда не придется складывать вместе более 256 точек, и, таким образом, второй шаг потребует не более 255 операций сложения точек.Таким образом, вычисление x • P потребует не более 255 + 255 = 510 операций сложения точек.

Закрытый и открытый ключи в криптографии на основе эллиптических кривых

Допустим, я вычисляю x • P, где x — случайное 256-битное целое число. Результатом будет некоторая точка на кривой. Назовем эту точку X.

Если я дам вам X, вы сможете определить x? Другими словами, не могли бы вы определить, сколько раз я прибавлял P к самому себе, чтобы получить точку X на кривой? Предположим, вы знаете, что такое P, и знаете, какую кривую я использовал.

Оказывается, вычислить x невозможно, даже если у вас был суперкомпьютер. Нет известного алгоритма для определения x, поэтому ваш единственный вариант — продолжать прибавлять P к самому себе, пока вы не получите X, или продолжать вычитать P из X, пока не получите P. В среднем x будет где-то между 0 и 2²⁵⁶-1, примерно 2¹²⁸. Таким образом, независимо от вашего подхода для определения x вам потребуется в среднем 2¹²⁸ операций сложения точек. Даже если бы ваш компьютер мог выполнять один триллион операций сложения точек в секунду, и вы работали бы на нем с самого начала Вселенной, вы бы к настоящему времени выполнили операции сложения только на 2⁹⁸ точки.2⁹⁸ / 2¹²⁸ = 1/1073741824.

Что, если начать с середины? В конце концов, вы можете рассчитать 2¹²⁸ • P за 510 шагов или меньше. Что ж, в среднем x не ближе к 2¹²⁸, чем к 0 или 2²⁵⁶-1, потому что x является случайным, поэтому не имеет значения, с чего вы начнете — вам все равно придется выполнять операции сложения 2¹²⁸ точки в среднем.

Закрытый и открытый ключи

Итак, поскольку кто-то не может вычислить x с учетом X, где X = x • P, может быть удобно сделать x своим частным ключом, а X — открытым ключом.Тогда ваш закрытый ключ будет случайным 256-битным целым числом, а ваш открытый ключ будет координатами x и y точки на эллиптической кривой. Это должно удовлетворять следующему свойству закрытого и открытого ключей:

«Вывести закрытый ключ, соответствующий данному открытому ключу, с вычислительной точки зрения невозможно».

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

Обновление модели эллиптической кривой

Прежде чем мы перейдем к доказательству того, что вы знаете x, мы должны обновить нашу модель эллиптической кривой.

Одна из проблем нашей текущей модели состоит в том, что x • P может привести к точке, координаты x и y которой не могут быть сохранены в стандартном 512-битном открытом ключе. Координата x или y может быть слишком длинной.

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

Для этого преобразуем

y² = x³ + ax + b

в

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

Где p — некоторое простое число (p простое, чтобы всегда можно было отменить операции сложения и умножения).

В secp256k1 p — наибольшее простое число, меньшее 2²⁵⁶.

Наша эллиптическая кривая теперь выглядит примерно так:

Обратите внимание, что все еще существует горизонтальная линия симметрии.

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

На картинке выше вы можете увидеть, как сложение P и Q вместе требует обертывания линии «между» P и Q вокруг границ несколько раз.

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

Как доказать, что вы знаете x

Итак, если вы вычисляете X = x • P, где x — случайное 256-битное целое число, как вы можете доказать кому-то, что вы знаете x, который соответствует X, не раскрывая никакой полезной информации о х?

Вы можете использовать свойство добавления точки из ранее:

n • P + r • P = (n + r) • P

Мы немного изменим его:

hash (m, r • P) • n • P + r • P = (hash (m, r • P) * n + r) • P

Если вы развернете правую часть уравнения выше, вы получите левую часть, поэтому уравнение выше выполняется для любых m, r и n.

Итак, что произойдет, если мы установим n • P = X? У нас будет:

хэш (m, r • P) • X + r • P = (hash (m, r • P) * n + r) • P

Если n • P = X, то n = x, поэтому у нас есть:

hash (m, r • P) • X + r • P = (hash (m, r • P) * x + r) • P

Теперь мы собираемся сделать следующее замены: R = r • P и s = hash (m, R) * x + r.

Итак, теперь у нас есть:

hash (m, R) • X + R = s • P

Хорошо, вот утверждение: если вы можете предоставить m, R и s, которые удовлетворяют приведенному выше уравнению, тогда это доказывает, что вы знаете x, соответствующий X в уравнении, где x • P = X.

Для этого должны быть выполнены следующие два условия:

  1. Если вы знаете x, вы должны иметь возможность предоставить рабочие значения для m, R и s.
  2. Если вы не знаете x, вы не сможете предоставить рабочие значения для m, R и s.

Если вы знаете x, вы можете легко найти рабочие значения для m, R и s. Выберите случайные значения для m и r, затем вычислите R = r • P и s = hash (m) * x + r. Если вы подставите эти значения в hash (m, R) • X + R = s • P, то вы получите:

hash (m, r • P) • x • P + r • P = (hash (m, r • P) * x + r) • P

, которое является уравнением, которое, как мы сказали, будет выполняться для любых m, r и n (в данном случае x равно n).

Что делать, если вы не знаете x? Не могли бы вы придумать рабочие значения для m, R и s? Проблема в том, что вам нужно будет решить hash (m, R) • X + R = s • P. По сути, вам нужно будет найти вход для хэша, который имеет определенное значение хеш-функции, что невозможно или, по крайней мере, невозможно с вычислительной точки зрения из-за свойства устойчивости к прообразу криптографических хеш-функций.

Следовательно, единственный способ предоставить рабочие значения для m, R и s — это вычислить их с помощью x. Таким образом, вы можете доказать, что знаете закрытый ключ x, который идет с открытым ключом X, предоставив значения для m, R и s, которые удовлетворяют hash (m, R) • X + R = s • P.

Сообщаете ли вы какую-либо полезную информацию о x, доказывая, что вы знаете x?

Если вы предоставите рабочие значения для m, R и s, можно ли извлечь из этих значений что-нибудь полезное о x?

m и R не имеют ничего общего с x, поэтому эти значения не могут дать ничего полезного о x.

Мы знаем, что s = hash (m, R) * x + r. Может ли кто-нибудь вычислить x из s?

Для этого им нужно будет решить x = (s-r) / hash (m, R).

Поскольку они не знают r, они не могут вычислить x из s.Они не могут получить r из того факта, что R = r • P (им дано R), потому что это то же самое, что определить, сколько раз P нужно было бы добавить к самому себе, чтобы получить R, что является той же вычислительно невыполнимой задачей. это мешает кому-либо определить x из X.

s также не раскрывает никакой информации о x, например, «x должен быть меньше yadda yadda». Если r генерируется случайным образом и мы допускаем переполнение hash (m, R) * x + r, поэтому r может быть любым 256-битным целым числом, тогда значение s является полностью случайным, то есть s может быть любым 256-битным целым числом.Случайное 256-битное целое число говорит вам примерно столько же, сколько и ВВП Новой Зеландии.

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

m, R и s могут использоваться, чтобы доказать, что кто-то знает x, который соответствует X, где X = x • P. Проверка доказательства требует включения m, R и s в хэш (m, R) • X + R = s • P. Можем ли мы сделать так, чтобы для успешной проверки требовалось конкретное сообщение, чтобы доказательства — m, R и s — формировали цифровую подпись для этого сообщения? Да!

Пусть m — это конкретное сообщение, а R и s — цифровая подпись для этого сообщения.Тогда процесс проверки будет успешным только в том случае, если конкретное сообщение m вставлено в уравнение проверки. Если подставлено другое значение для m, то левая часть хэша (m, R) • X + R = s • P не сможет равняться правой части, потому что s было вычислено с использованием другого сообщения.

Таким образом, можно доказать, что им известен закрытый ключ x, который соответствует открытому ключу X для конкретного сообщения m, предоставив цифровую подпись R и s для m.

Для криптовалют сообщение будет неподписанной частью транзакции.Если вы когда-нибудь посмотрите на цифровую подпись для транзакции, обычно это x-координата R (R — точка на кривой), объединенная с s (s — кажущееся случайным 256-битным целым числом) после того, как она была закодирована. и преобразован в шестнадцатеричный.

Заключение

Если вы хотите получить биткойн-адрес или учетную запись Ethereum, вы генерируете случайное 256-битное целое число x. x тогда ваш закрытый ключ. Затем вы вычисляете X = x • P, используя параметры кривой secp256k1. X будет вашим открытым ключом.Ваш открытый ключ можно безопасно выдать, и его нельзя использовать для определения вашего закрытого ключа. Если вы хешируете свой открытый ключ, вы получите свой адрес.

Если вы хотите отправить биткойн или эфир со своего адреса на другой адрес, вы создаете транзакцию. Вы устанавливаете m в беззнаковую часть этой транзакции и вычисляете R и s из этого m. Затем вы присоединяете к транзакции R и s. После широковещательной рассылки транзакции любой узел сможет проверить, что m (беззнаковая часть транзакции), R и s удовлетворяют hash (m, R) • X + R = s • P.Это, конечно, предполагает, что вы также включаете X в свою транзакцию, поскольку ваш открытый ключ не может быть определен по вашему адресу. Для Ethereum вместо предоставления X вы предоставляете v, что позволяет определить X по R и s.

Конец

Ну вот и все! Если вы зашли так далеко и поняли почти все, то примите наши поздравления! Если вам нужно более подробное объяснение криптографии на основе эллиптических кривых (более математическое), перейдите по этой ссылке. Это моя первая статья, поэтому дайте мне знать, если есть ошибки, и оставьте отзыв.

Спасибо за чтение!

Похожие истории

Теги
Присоединяйтесь к хакеру Полдень