Вводное без воды
Лучшие из современных часов отстают лишь на одну секунду за 300 миллионов лет, и от их точности в наши дни зависит очень многое
Итак, сколько-то лет назад моя тяга к временным аномалиям привела к постепенному формированию гипотезы, а потом и теории темпографии. Если коротко, то: вот ссылка для ознакомления, вот — предыдущая статья и вот ещё немного материала в канале и даже на YouTube (презентация к видео). Если ещё короче, то у нас была для защиты стеганография (когда вы не знаете, где расположен секрет), криптография (когда знаете, где он, но не можете без расшифровки достать) и вот теперь, благодаря бурному развитию нового поколения ДРС появилась защита через временные метки — темпография. Простейший её пример — таймстепы Bitcoin или Proof-of-History в Solana, более сложный — поиск внутри Web 3.0 пространств посредством реализации “пчелы поиска”, работающей на основе принципов теоремы Пуанкаре-Перельмана. И да: в этот раз цитат будет больше, чем просто ссылок, потому как важно показать, что всё сказанное — не просто синтезировано мной из голой фантазии, но из достижений последних лет (а где-то и столетий). Теперь вы достаточно знаете, а значит — в путь!
Путь времени
Для начала — несколько важных примеров. Ещё несколько, ибо, если вы прошли хотя бы по одной из ссылок вводной части, то уже видели некоторые. Итак:
Пример №01: “Время — деньги. Особенно наглядно это было продемонстрировано в 09:59:59.985 по восточному стандартному времени 3 июня 2013 года. Из-за ошибки в настройке часов новостное агентство Рейтер выдало биржевую информацию всего-то на 15 миллисекунд раньше положенного. Но результатом стали сделки на сумму 28 млн долларов — их автоматически совершили роботы-трейдеры, начавшие торговать раньше других”. Да, снова про трейдинг, про большие потери и про… время, конечно же.
Но это всё же о том, что касается повседневности лишь отчасти, а как насчёт вот такого аспекта: “… британская Национальная физическая лаборатория создала подземную сеть, посредством которой разные учреждения подключаются к атомным часам лаборатории, что позволяет им всем работать по одинаковому времени. Данные доставляются по закрытым линиям, по которым не передаются никакие другие сигналы. Таким образом, точное время стало своего рода коммунальной услугой, наподобие электричества или интернета, к которой можно подключиться при надобности”.
Именно эти два аспекта — важность времени на современных рынках и одновременно — зависимость самых тривиальных деяний (полётов на самолёте, запросов GPS и т.д.) от времени заставили задуматься меня о темпографии.
Судите сами: “спутниковые навигационные системы GPS (США) и ГЛОНАСС (Россия) функционируют в собственном системном времени. Все процессы измерений фиксируются в этой шкале времени. Необходимо, чтобы шкалы времени используемых спутников были согласованы между собой. Это достигается независимой привязкой каждой из шкал спутников к системному времени. Системная шкала времени есть шкала атомного времени. Она задаётся сектором управления и контроля, где поддерживается с точностью более высокой, чем бортовые шкалы спутников”. А часто ли люди пользуются этими системами? Безусловно: это и навигаторы, рассказывающие о пробках; и разные карты, по которым можно осваивать новые страны; и брелоки, цепляющиеся к разным важным вещам — и многое прочее.
“Время есть расстояние, делённое на скорость”, — наверняка в школе слышали и не раз. Но это когда речь идёт о плоском времени, а, как знаем из ОТО, пространство-время может искривляться и, как намекают нам разные интерпретации М-теории, теории суперструн, временных координат может куда быть больше, чем 1, 2 или даже 3. То есть прошлое — настоящее — будущее — одномерное распределение самой загадочной “субстанции” текущей Вселенной. И только: помните “Интерстеллар”? Возьмите его аналогии и экстраполируйте на время: выйдет ещё интересней и красивей.
“Стоп! Стоп! Стоп!” — крикнет въедливый читатель: “при чём тут Web 3.0 и вся эта затея со временем?”. Вот как раз причём и сильно: ведь Космос покорить нам пока толком не удалось, зато Виртуальное пространство — ещё как.
Начнём вот с чего — с общего количества блоков, добытых, но не привязанных к основному блокчейну Биткойн (orphaned-blocks): до 7 их было за историю! То есть до 70 примерно минут (1 блок, напомню — около 10 минут) в данном блокчейне существовало две условно равные системы параллельного времени. Целый час! Представляете?
Почему это важно? Мы живём в эпоху постоянного свопирования: токены с токенами (Bancor), блокчейны с блокчейнами (особенно сие важно в эпоху кросс-плаформенных заимствований EVM) и т.д. — вплоть до DAODEX эпохи.
Но почему важно?
Представьте тривиальный пример: есть платёжный канал (Эфира или Биткоина — не важно: может, вообще третьего решения) и вы хотите его закрыть и закрываете его в момент спора “о самой заполненной работой цепочке” (самая длинная — не совсем верно: важно, чтобы в цепочки было именно больше всего работы: это ведь PoW, а не Proof-of-Length). При одной цепочке и одном закрытом канале всё кажется простым, а как насчёт того, когда каналов множество и речь идёт не про простой, а мультиблокчейн? Да ещё из шардами разного уровня?
Мне возразят, что для этого и существуют разного рода “валидаторы”, “рыбаки”, IBC и прочие протоколы синхронизации (точнее — надстройки над) и иже с ними, чтобы аномальные события отлавливать. Но теперь представьте, что имеем “чистый” Tendermint, где могут быть зависания при не наборе ⅔ и нет разрешающего “оракула” по типу IBC от Cosmos и при этом нужно синхронизировать два PoW-блокчейна, где при этом есть борьба за цепочку и вывод одновременно с нескольких каналов в основную цепь. И это не просто вопрос манипуляций или возможной, очень не простой, атаки формата Сивиллы, но это именно про то, что такое событие будет сверх-уникальным: даже генезис-блок не даёт такой уверенности в том, что это “именно тот блокчейн”. Да, об этом уже об этом рассказывал (впрочем, не все читаю по ссылкам): но в эпоху тотального свопирования ракурс вопроса меняется.
Поясню.
Знаете магическое число 0xd9b4bef9? Многие пытались его дешифровать и выходило, например, так: “0xd9b4bef9 — 0x-d9-b4-be-f9 — 09-d-bx-fe — 09-d-12-m-fe-d — 09.12.2024”. Дата интересная (а соотношение её со $100 000 в текущих реалиях — ещё более, но не для меня, а того самого большинства, для которого подобные трюки производятся), но на самом деле всё может быть сильно проще.
“Магический номер — этот номер является идентификатором сети блокчейн [Биткоина]. Его значение всегда постоянно и равно 0xD9B4BEF9 . Он подтверждает начало блока и проверяет, что данные поступают из производственной сети”. Подробней ответ был получен несколько лет назад, процитирую и его: “магическое число не является чем-то специфическим для bitcoin. Магические числа используются в информатике как для файлов, так и для протоколов. Они определяют тип структуры файла/данных. Программа, получающая такую структуру файла/данных, может проверить магическое число и сразу же узнать предполагаемый тип этой структуры файла/данных. Именно это используется командным файлом Unix/Linux для быстрого определения типа файла. Для определения его (предполагаемого) типа требуется проверить только первые байты файла… Такие протоколы, как bitcoin, используют структуры данных для общения друг с другом (например, распространение блоков по сети). Узлы проверяют первые байты, чтобы определить тип структуры данных… Так вот для чего он используется. Насколько я могу судить, 0xD9B4BEF9 довольно произвольно… но, может быть, для его создателя есть какой-то смысл”.
Кому интересно — вот ещё несколько “магических чисел Биткоина”: 0xD9B4BEF9, 0xDAB5BFFA, 0x0709110B, 0xFEB4BEF9”. Но нас сейчас интересует нечто другое: время. Точнее — тот факт, что можем взять создание блока Биткоина (или любой другой ДРС) как единицу измерения. И тогда нам точно будут известны такие аномалии, как блок 597,273, где соотношение со стандартным временем было не 1 к 10, а 1 к 119. О подобных отклонениях уже писал — см. материалы выше (вот ещё пример и немного иного порядка — блок 599 587: его нашли два пула одновременно). И даже рассказывал — зачем это делать: чтобы можно было создать хронокапсулу для любого события… в будущем.
Но вот что ещё интересно: система у нас имеет несколько слоёв самоочищения от аномалий:
- Есть тот самый магический номер — для быстрой идентификации;
- Есть “вшитые” адреса рабочих нод — для сверки нод архивных после долго отключения;
- Есть механизм проверки nonce — для поддержания общей работоспособности;
- Есть сложность — как механизм саморегуляции Сети;
- Есть допустимые погрешности синхронизации нод — как возможность манёвра для стайметов.
- И так далее.
Но при всём при этом мы используем данные механизмы лишь для того, чтобы защитить будущее от неверного прошлого, а ещё — в настоящем предоставить инструмент фиксации.
Не мало ли?
Давайте ещё раз: “в блоки включается время в формате UNIX, то есть количество секунд, прошедших с полуночи первого января 1970 года (так называемая эра UNIX). Время берется из часов системы, на которой был найден блок. Этот параметр напрямую влияет на сложность майнинга: ее периодически пересчитываются так, чтобы среднее время между блоками оставалось равным десяти минутам… Возникает вопрос: может ли майнер мухлевать со сложностью, специально подсовывая неправильное время? Нет, поскольку майнер, который найдет следующий блок цепочки, будет случайным. Небольшие отклонения в системном времени, конечно же, не критичны, но если отклонение сильное, то награда за нахождение блока с неправильным временем получена не будет, так как такой блок станет орфаном … Допустим, два независимых друг от друга майнера одновременно нашли два блока с требуемыми хешами и о блоке-конкуренте узнали только после нахождения своего. У таких блоков будут одни и те же порядковые номера, но сами блоки вряд ли будут идентичными, поскольку адреса для зачисления награды в них будут разными. Но в блокчейне недопустимы блоки с одинаковыми порядковыми номерами. Какой же из них туда войдёт? Дело в том, что, скорее всего, разные майнеры будут искать nonce для нового блока, включая в него разные хеши. В цепочку войдет тот блок, хеш которого раньше войдет в следующий… Согласно протоколу биткоина и программному коду Bitcoin-клиентов, награда за включенный в цепочку блок будет считаться полученной только после включения в цепочку 120 последующих блоков. То есть максимально допустимая длина временно раздвоенной цепочки — 120 блоков”. Если хочется ещё больше подробностей — то они разбросаны в ряде статей по Сети, скажем — здесь.
Но зачем всё это делать в итоге? Потому что всегда можно найти необычные применения для обычных, то есть УЖЕ УСТОЯВШИХСЯ вещей, явлений и взаимосвязей между ними.
Причины и по-следствия
Во-первых, аномалии как таковые выявляются для само-защиты системы. Смотрите: “проблема обнаружения аномалии уже давно стоит на повестке дня. Короче говоря, аномалии — маловероятные вещи. В финансовых сетях воры и нелегальная деятельность часто носят аномальный характер. Члены сети хотят как можно скорее обнаружить аномалии, чтобы предотвратить нанесение ими вреда сообществу сети. Для решения этой проблемы были предложены многие методы машинного обучения; некоторые результаты кажутся довольно многообещающими, но нет очевидного превосходящего метода”. И это — вполне себе научная работа, авторы которой пришли к следующим выводам:
- Пользовательский график поможет обнаружить подозрительных пользователей, в то время как график транзакций поможет обнаружить подозрительные транзакции. Используя эти два типа графиков, можем не только обнаружить как аномальных пользователей, так и аномальную деятельность, и проверить, насколько методы последовательны в том смысле, что подозрительные транзакции должны принадлежать подозрительным пользователям. Очевидно, что эти методики сегодня используют все компании, которые рыщут по блокчейнам Биткоина, Эфира и других и продают сырые и обработанные данные биржам, обменным пунктам и другим участникам рынка.
- В итоге учёные выявили “… одну известную кражу, которая произошла в июне 2011 года. В результате аномальной транзакции было получено в общей сложности более 4000 BTC с 620 различных адресов и они были направлены по одному адресу”.
- Также они “… обнаружили одну известную потерю, которая произошла в октябре 2011 года. Аномальная транзакция была одной из 23 транзакций, в результате которой пользователь потерял более 2 600 BTC из-за повреждения функции хеширования”.
При этом данный труд основан как на общих научных разработках (см. пример), так и на исследования по заданной тематике, как, например, “Обнаружение аномалий в системе Bitcoin”. Пожалуй, главный вывод из подобных наработок следующий: на сегодня аномалии в основном касаются поведения пользователей, транзакций как таковых и затрагивают больше экономическую, чем технологическую составляющую, тогда как темпография решает вопрос именно на низком уровне — уровне проколов.
То есть проблема всё равно остаётся и вот в чём она заключается: блокчейн — первый инструмент автоматизации передачи ценность сквозь НЕдоверенную среду (точнее даже — среды, если брать не только технический, но и экономический и прочие аспекты): как только что-то окончательно передаём через сеть Биткоин — сама сеть становится доверенной, замкнутой сферой, которая расположена в той самой НЕдоверенной среде. И поэтому, если разворачиваем что-то в будущем, надо убедиться, что делаем это посредством именно этой, уже доверенной среды, а не в её форке или прочих структурах, в том числе — специально созданных для взлома. Как правильный полиморфный червь изучает, находится ли он в Virtual Box или же на “настоящей” машине, так и наш код должен это понять. И вот здесь аномалии становятся важными реперными точками.
Отсюда и возник этот подход.
Давайте ещё пример: “клиенты Bitcoin используют несколько методов для поиска других клиентов. Основным методом является список узлов из предыдущего подключения к сети. Он работает очень хорошо для всего, кроме вашего первого соединения или соединения после очень долгого периода отключения. Для случая, когда у вас нет известных ранее IP-адресов или они не могут быть использованы, первичным методом отката является DNS-загрузка. Поддерживается несколько имён хостов (например, dnsseed.bluematt.me), которые помещаются в список IP-адресов, известных как работающие узлы. В случае неудачи клиент имеет список IP-адресов, которые, как полагают, указывают на стабильные узлы, жёстко закодированные (“зашитые”) в него. Один из методов, который раньше использовался, но который с тех пор был заброшен, состоял в том, чтобы клиенты определяли местонахождение друг друга с помощью IRC-сервера. Это работало как BitTorrent-трекер: как только подключитесь к сети — начинаете получать списки IP-адресов и портов известных клиентов”.
Почему бы эту методику не применять к сверке “зашитых объективными факторами” аномалий внутри РАЗНЫХ ДРС? Именно: это есть и это нужно использовать!
В этом смысле хорошим примером временных аномалий являются мгновенные кредиты (flash-loans), действующие в рамках одной транзакции: это открывает множество еще неизвестных эффектов, как с точки зрения возможностей, так и рисков. Или вот ещё пример: об аватарах. Колонизация цифрового пространства только зарождается, но в ближайшее время этот ресурс станет источником конфликтов для очередной мировой «войны» и прочих завоеваний и поэтому цифровые аватары неизбежно начнут функционировать полу- и полностью автономно, а значит — внутри виртуального времени. А значит? А значит, они должны научиться: а) защищать среду обитания; б) искать критерии “объективного времени заданной среды”; в) передавать подобные сведения в защищённом виде. Недаром перетекание формата “онлайн-оффлайн-онлайн” в период Neuralink уже не кажется чем-то не реалистичным.
Ведь помним результат одной единственной ошибки в “Особом мнении”?
Да и сами аномалии — тоже ошибки. Смотрите: “в сентябре 2013, некто перепутал поля ввода суммы и поощрения за перевод и в результате отправил 0.01 BTC, заплатив при этом 80.99 BTC за транзакцию (около $50 тыс.)”. И подобных историй достаточно: даже было целое расследование на эту тему в сети Эфира. Но главное, что подобные инверсии существуют. А значит? А значит с каждой секундой, минутой, часом, днём, годом — у нас всё больше и больше данных для развёртывания тех самых темпоральных капсул и “пчёл”.
Попробуем кратко собрать сей материал воедино.
Краткий подбор для дальнейшей классификации
Пока жёсткой классификации не будет, но зато будет возможность в следующий раз посмотреть на её эволюции. Итак:
- Возможные зависания в системах (D/L)PoS-семейства при недостижении ⅔ голосов (застывшее время): пример Tendermint без IBC-надстройки;
- Одновременное нахождение блока пулами (параллельное время):
- Uncle-блоки (при том для разных VR/MR/AR-реальностей они могут быть одновременно и блоками основной цепи);
- Цепочка с самой большой работой (и время существования двух параллельных временных шкал: скажем, для создания пространственно-временного континуума рандомной атаки);
- Отложенные платежи (ещё не созданное время — будущее):
- Возможность в архитектуре Биткоин;
- В Ethereum;
- В других ДРС.
- Модели не одномерного времени возможны в:
- Внутри платёжных каналов (до закрытия);
- Внутри замкнутой Локальной Глобальной Сети;
- Через добавление размерности внутрь мульти-блокчейна;
- Разнообразные метки внутри единицы времени — блока и т.п.:
- Пример отметки бычьего рынка;
- Блокчейн и Библия;
- Генезис блок и новости;
- Иные (о них — в следующий раз).
Помните: “если вы знаете, что ваши наручные часы отстают на 10 секунд в день, то вы можете воспользоваться этим знанием, чтобы регулярно подводить им стрелки”. В том смысле, что если вам известен набор выбранных аномалий в разных ДРС — они могут защитить ваши активы не меньше, чем seed-фраза из 24 слов или сохранение таковой в 3-х разных местах на 6 разных носителях.
То есть раньше мы говорили о том, что “[некая] работа направлена на улучшение работы системы блокчейна за счет автоматического распознавания и фильтрации аномальных действий… [потому что] инструменты обнаружения аномалий могут быть эффективно использованы для того, чтобы сделать ДРС ещё сильнее и безопаснее, автоматически распознавая и отфильтровывания аномальную активность”, то сейчас нацелены на то, чтобы с помощью этой, довольно выверенной системы, защищать данные, внутри неё помещаемые. По времени. По шифрованию. По сокрытию.
Ссылки и дополнительные исследования
Чтобы всё стало чуть яснее, рекомендую изучить следующие общие категории:
- https://ru.wikipedia.org/wiki/NTP
- http://gavinandresen.ninja/utxo-uhoh
- https://www.blockchain.com/ru/charts/utxo-count
- https://ru.wikipedia.org/wiki/Content_Delivery_Network
- Hash Time Locked Contracts — см. здесь
- https://ru.wikipedia.org/wiki/Шейпинг_(информатика)
- https://ru.wikipedia.org/wiki/Микроточка
- https://ru.wikipedia.org/wiki/Темпоральность
- https://ru.wikipedia.org/wiki/Закон_больших_чисел
А также феномены куда более общих порядков:
- https://habr.com/ru/post/518206/ — о патернах в любой Вселенной (часть I)
- https://habr.com/ru/post/517888/ — — о патернах в любой Вселенной (часть II)
- https://t.me/web3news/277 — поставновка вопроса
- https://t.me/synergis/60169 — история сети Биткоин
- https://ru.wikipedia.org/wiki/Время_спутниковых_навигационных_систем
- Как будущее влияет на… всё: https://cryptonews.net/ru/news/bitcoin/388796/
И, собственно, материалы исследователей разного формата аномалий (кроме временных):
- https://arxiv.org/pdf/1807.03833.pdf
- https://hal.archives-ouvertes.fr/hal-02386966/document
- https://www.kaggle.com/saketc/blockchain-system-anomaly-detection
- https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6983113/
- https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8967098 — материал про КК и блокчейн, но уместен здесь в силу описательной части предлагаемых методов “защиты-нападения”.
- diglib.eg.org/bitstream/handle/10.2312/pgv.20141079.009-016/009-016.pdf — здесь же важен аспект устранения условных аномалий при совместной работе p2p-сетей (ДРС — в частности).
- https://bytecoin.org/old/whitepaper.pdf — важен аспект именно в разрезе времени и оценки.
- https://arxiv.org/pdf/1611.03941.pdf
Впрочем, материал за №03 будет ещё и на Форклоге и там будет ещё больше интересного, а пока — до!