Dec. 25th, 2020
06:05 pm
Есть в биткоине такой адрес 15wJjXvfQzo3SXqoWGbWZmNYND1Si4siqV на котором лежит немножко, по курсу около 155 долларов.
Этот адресок примечателен тем, что он получается из компрессированного публичного ключа "020000000000000000000000000000000000000000000000000000000000000000". Для тех, кто не понял, компрессированный ключ - это когда координата "у" отбрасывается, а остается только координата х. И к ней добавляется либо двойка либо тройка - в зависимости от того, положительным ли был отброшенный игрек.

Если у вас есть компрессированный публичный ключ, то найти "у" в любой момент можно, решив уравнение относительно игрека: y^2 = x^3+7.

В данном случае вместо х подставляем 0, и получается y^2 = 7.

Речь идет о модулярной арифметике, само собой. И в данном случае все считается по модулю числа p=2^256 - 0x1000003d1, которое простое.

На сегодня весь софт колбасит это вычисление пользуясь правилом, что если нам нужен корень по модулю p, и при этом (p mod 4 == 3), то надо просто возвести в степень (p+1)/4 - и получишь результат!

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

Ага, не тут то было. Не работает.

Оказывается, в модулярной арифметике не из всех чисел можно извлечь корень квадратный. Впринципе, сейчас мне это уже очевидно. И 7 - это как раз такое число, из которого корень не извлекается. Когда мы возводим семерку в степень (p+1)/4, то получаетcя какое-то число. Если мы берем квадрат числа - то назад эта же семерка не получается %(, а выходит 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc28. И эта проверка есть в коде bitcoind: https://github.com/bitcoin/bitcoin/blob/master/src/secp256k1/src/field_impl.h#L133-L136

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

По этой причине, не получается сделать такой биткоиновский скрипт, который прошел бы валидность. Да, я нашел публичный ключ, от которого хэш будет такой, как требует выходной скрипт. Но там на этот кошелек тип скрипта P2PKH (такой: https://learnmeabitcoin.com/technical/p2pkh ), для такого скрипта нужна еще и сигнатура, а валидную сигнатуру сделать неполучилось %((( А вот если бы там был тип транзакции P2SH вот такой https://learnmeabitcoin.com/technical/p2sh , то все получилось бы, скорей всего.

Теперь что касается 1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxh на котором 3.7btc (около 80тыс$ на сегодня). Я о нем писал ранее. Этот аддрес получается из массива длиной 1 байт, и этот байт равен нулю. Обычно же, аддреса делаются из массива 65 байт: четверка, символизирующая что указан игрек и по 32 байта на икс и игрек координату. Убедиться можно тут
http://gobittest.appspot.com/Address введя "00" в поле Public ECDSA Key.

Собственно, идея была в том, что нам на самом деле пофиг, есть ли точка в поле, потому что это непроверяемо. Лишь бы она лежала на кривой. Точка, которой нет в поле, но которая на кривой лежит, пройдет все тесты. То есть, получается нам нужно лишь подобрать сигнатуру подписи, которая совпадет по формулам проверки.
Означает ли это, что достать биткоины оттуда не выйдет? Нет, не означает. приватные ключи - 256 битные, а хеши публичных ключей - 160 битные. Это значит, что может быть около 2^96 публичных ключей которые подойдут. Это больше, чем атомов в солнечной системе. Среди них ну практически-наверняка будет такой, который в поле.
Oct. 26th, 2017
09:50 am
Как вас в школе учили обозначать сокращенно килограмм: кг или кГ?

Нас учили обозначать кГ, причина: "так правильно". Сейчас узнал, что это заблуждение, и что не только нас так учили.

На самом деле, кГ - это килограмм-сила, единица измерения _силы_ в системе МКГСС. МКГСС - техническая система единиц, принятая в 1901 году. При совке ее использование допускалось ранне-послевоенными ГОСТ-ами, сейчас не используется.

Вопрос в том, как так вообще могло выйти, что местами детей в школе учили для 1кг _массы_ использовать обозначение кГ.
Oct. 23rd, 2017
01:11 pm
"Олийник - беглый депутат ПР и соратник Януковича сообщил, что профинансировал палаточный городок перед ВР." - написал сегодня в ФБ Аваков. И приложил следующее видео

Jul. 27th, 2017
09:03 pm
Интересно, как теперь Порошенко собирается депортировать Миху? Как это будет выглядеть в глазах наших партнеров из США? Вот Михо покритиковал Порошенко на CNN за коррупцию и за преследование - а вот его уже депортируют? Наши партнеры из США этого не поймут!
Порошенко своими действиями ставит под удар всю страну.



Jun. 16th, 2017
03:18 pm
архитектуру «Эльбрус-2000» сложно описать средствами LLVM оптимальным образом. То есть альтернативный компилятор можно было бы выпустить, но генерируемый им машинный код проигрывал бы LCC по скорости работы. Но направление не считают тупиковым, — возможно, что со временем бэкэнд к LLVM всё же будет реализован.

April 2025

S M T W T F S
  12345
67891011 12
13141516 171819
20212223242526
27282930   

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags