Страницы

Оставь след в Вечности. Учимся засовывать ерунду в блокчеин


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

Деревья Меркла, блокчейны (blockchain) и распределенные леджеры (distributed ledger) заплели половину силиконовой долины и Эстонии (благодаря упрощённому электронному способу регистрации юрлиц в этой стране).

Блокчеин предлагается сегодня как лекарство от любых болезней, и, кстати, заслуженно, ведь блокчеин обладает рядом уникальных свойств:
1. открыто всё: от транзакций до исходных кодов клиентов и служб
2. децентрализация/распределённость и, как следствие, высочайшая отказоустойчивость и доступность. Только в сети bitcoin сейчас 6000 полноценных нод, размазанных по всей планете
3. невозможность подделки блоков - главная особенность всех криптовалют. Целостность 80 уровня!
4. временные метки идут в комплекте с любой транзакцией
5. дешево! Стоимость добавления информации в блокчеин равна минимальной стоимости транзакции (то есть десятые доли цента)
6. достаточно анонимно. Транзакцию можно запустить в сеть через Tor. Транзакция облетит несколько сотен/тысяч нод прежде чем попасть в блокчеин. Ноды по-умолчанию не хранят IP адреса источников транзакций.

Первое альтернативное применение блокчейна - это УЦ. Далее - DNS, регистрация документов, обмен публичными ключами или крипточат!

Чуть более сложные вещи - это цветные монеты и умные контракты. Оба этих феномена способны со временем совершить революцию в финансовом мире. При благоприятном развитии событий лет эдак через 5 KSI заменит RSA, а Ripple будет соперничать со SWIFT!

Так как же использовать блокчеин в своих целях? Мануальчик под катом.

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

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

Что можно поместить в 80 байт?

1. 256 битный хэш (SHA256) + 8 байтовый произвольный идентификатор
2. 40 символов английского текста (шифровку? сообщение адресату? URL? CTF флаг? Команда ботнету?)

Как поместить данные в биткоин блокчеин?


  1. качаем официальный клиент bitcoin-core
  2. запускаем и оставляем на сутки синхронизировать блокчеин (~40 ГБ)
  3. переводим немного биткоинов на кошелек чтобы было чем платить за транзакции (рекомендуемый размер платы за транзакции сейчас  - 0.0001 BTC)
  4. создаем в папке bitcoin фаил bitcoin.conf  (C:\Users\username\AppData\Roaming\Bitcoin\bitcoin.conf) с содержимым:

  5. server=1
    rpcport=8332
    rpcuser=user
    rpcpassword=some_random_password
  6. качаем cygwin+python (опционально)
  7. качаем библиотеки для питона, правим пути к bitcoin.conf, увеличиваем размер поля OP_RETURN до 80 байт
  8. запускаем
python store-OP_RETURN.py <data>
Копируем поле transaction ID (tx) и смотрим в любом блокчейне. Например тут
Всё! Через 5-10 минут информация будет записана в текущий блок транзакций. Спустя пару часов удалить её оттуда будет невозможно.
К сожалению, удобных поисковиков по блокчейну в данный момент нет, но последние транзакции, имеющие непустое поле OP_RETURN, можно просматривать тут.

Что ещё почитать?



Комментариев нет:

Отправка комментария