Разбор

Кто разрешает машине переписать себя

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

Зачем вообще разрешать такое

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

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

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

Три угрозы, и они разного свойства

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

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

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

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

Песочница: почему именно WebAssembly

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

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

Отдельно решается задача зависания: защита от бесконечных циклов и перерасхода вычислений. Без неё достаточно было бы одной дурной рекурсии, чтобы остановить проверяющий узел.

Как измеряют, что новая версия лучше

Здесь спецификация делает то, что мне кажется самым честным ходом: вводит явную функцию приспособленности и записывает её формулой — `F(C) = w₁ · P(C) + w₂ · E(C) − w₃ · G(C)`.

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

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

Доказательство вместо доверия

Готовая мутация не принимается на слово. Агент прилагает доказательство с нулевым разглашением: подтверждение, что код удовлетворяет заданным ограничениям, без раскрытия его самого. Дальше — голосование узлов роя, а принятая версия регистрируется в реестре генетического кода на Solana.

Ценность реестра не в модном слове, а в свойстве, которого нет у обычного обновления: история изменений неизменяема. Если через год выяснится, что дрейф всё-таки произошёл, можно посмотреть, какая именно мутация и когда его начала, — и это не зависит от доброй воли того, кто вёл журнал.

Что остаётся нерешённым

Первое: голосование защищает от подделки меньшинством, но не от общего заблуждения. Если все узлы одинаково не увидят проблему в мутации, большинство её и утвердит.

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

Спецификация это признаёт, называя исходные этические инварианты заданными Архитектором. То есть точка отсчёта вынесена за пределы самой эволюции и остаётся человеческой. Пока так — дрейф хотя бы есть от чего измерять.

Первоисточник

В полной статье — моделирование угроз целиком, математика целевой функции и ZK-ограничений, спецификация программ на Solana, устройство голосования роя и примеры кода.