Кто разрешает машине переписать себя
Спецификация описывает, как агент сочиняет себе новый код и как этот код попадает в работу. Мы смотрим с одного угла: какие именно опасности при этом возникают и какая часть конструкции отвечает за каждую.
Зачем вообще разрешать такое
Обычная программа не меняет себя: её поведение задано теми, кто её написал, и меняется только с новой версией. Это надёжно и в большинстве случаев правильно.
Аргумент в пользу самомодификации простой: агент, работающий годами, сталкивается с задачами, которых не было в момент написания. Обновлять его руками — значит держать человека в цикле навсегда, а это ровно то, от чего уходили.
Дальше начинается интересное. Как только машине разрешено переписывать себя, появляется вопрос, у которого нет очевидного ответа: кто и на каком основании решает, что новая версия лучше прежней.
Три угрозы, и они разного свойства
Спецификация перечисляет их прямо, и это её сильная часть. Первая — внедрение скрытых дефектов: код, который выглядит рабочим и содержит закладку.
Вторая — вычислительная. Синтезированный код может содержать неэффективную рекурсию или утечку памяти, способную подвесить узел, который его проверяет. Атака здесь не на данные, а на само проверяющее звено.
Третья названа дрейфом выравнивания, и она заметно неприятнее первых двух. Каждая отдельная мутация кода выглядит безобидной и проходит проверку. Но шаг за шагом они уводят поведение всё дальше от исходных этических ограничителей. Ни один шаг не является нарушением; нарушением оказывается их сумма.
Это тот же по устройству риск, что и эпистемический дрейф в памяти: поломки нет, есть медленное смещение, которое нечем заметить, если смотреть на каждый шаг по отдельности.
Песочница: почему именно WebAssembly
Первая линия защиты — исполнять новый код в изоляции. Выбран WebAssembly, и выбор объяснён двумя свойствами: жёсткой изолированностью и детерминированностью.
Второе свойство здесь важнее первого, хотя обычно говорят об обратном. Детерминированность означает, что один и тот же код на одних и тех же данных даёт один и тот же результат у всех, кто его запустит. Без этого голосование узлов было бы невозможно: каждый получал бы свой ответ и спорить было бы не о чем.
Отдельно решается задача зависания: защита от бесконечных циклов и перерасхода вычислений. Без неё достаточно было бы одной дурной рекурсии, чтобы остановить проверяющий узел.
Как измеряют, что новая версия лучше
Здесь спецификация делает то, что мне кажется самым честным ходом: вводит явную функцию приспособленности и записывает её формулой — `F(C) = w₁ · P(C) + w₂ · E(C) − w₃ · G(C)`.
Смысл в том, что «лучше» перестаёт быть словом и становится числом с названными слагаемыми: производительность, эффективность и штраф. Спорить теперь можно о весах, и это правильный спор — он предметный.
Слабое место видно там же. Любая целевая функция поощряет ровно то, что в неё вписано, и агент, оптимизирующий её, найдёт способ набрать очки неожиданным путём. Формула не отменяет этой проблемы, она делает её обсуждаемой.
Доказательство вместо доверия
Готовая мутация не принимается на слово. Агент прилагает доказательство с нулевым разглашением: подтверждение, что код удовлетворяет заданным ограничениям, без раскрытия его самого. Дальше — голосование узлов роя, а принятая версия регистрируется в реестре генетического кода на Solana.
Ценность реестра не в модном слове, а в свойстве, которого нет у обычного обновления: история изменений неизменяема. Если через год выяснится, что дрейф всё-таки произошёл, можно посмотреть, какая именно мутация и когда его начала, — и это не зависит от доброй воли того, кто вёл журнал.
Что остаётся нерешённым
Первое: голосование защищает от подделки меньшинством, но не от общего заблуждения. Если все узлы одинаково не увидят проблему в мутации, большинство её и утвердит.
Второе, и это моё главное впечатление от текста: три угрозы закрыты очень неравномерно. Закладка и зависание — задачи технические, и решения для них внятные: изоляция, лимиты, доказательство. Дрейф выравнивания — задача другого рода, и её нельзя закрыть проверкой отдельного шага, потому что каждый отдельный шаг честен.
Спецификация это признаёт, называя исходные этические инварианты заданными Архитектором. То есть точка отсчёта вынесена за пределы самой эволюции и остаётся человеческой. Пока так — дрейф хотя бы есть от чего измерять.
Первоисточник
В полной статье — моделирование угроз целиком, математика целевой функции и ZK-ограничений, спецификация программ на Solana, устройство голосования роя и примеры кода.
Читайте также
- Двадцать долларов за бесконечность: на чём держится арифметика вечного храненияПротоколы и техника
- Proof-of-Memory: что тестнет доказал за две недели, а что осталось планомПротоколы и техника
- Что именно исчезает между сессиями: техническая правда под большой историейНаследство и память