Глубокий анализ прошлого и будущего абстрагирования счета Ethereum
Введение
Статья разделена на две основные части:
Первая часть начинается с первого предложения AA в 2015 году, систематически рассматривает основные предложения EIP до настоящего времени, исследует историю развития предложений AA и проводит комплексную оценку различных схем.
Вторая часть сосредоточена на сравнении рыночной реакции на EIP4337 после его внедрения, а также на глубоком анализе EIP7702, который будет включен в следующее обновление Ethereum. Если это предложение будет объединено, оно полностью изменит форму цепочечных приложений.
EIP-7702 имеет эпохальное значение, давайте подробнее разберемся.
1. Фон абстрагирования счета
1.1 Значение абстрагирования счета
Основатель Ethereum Виталик в конце 2023 года снова обновил дорожную карту развития ETH, но позиционирование абстрагирования счета не изменилось. Текущая основная модель переходит от EIP-4337 к следующему этапу "добровольного преобразования EOA-счетов".
1.2 Рыночная ситуация абстрагирования счета
После полутора лет разработки общее количество адресов EIP4337 на основных цепочках составляет всего 12 миллионов, из которых активных адресов в основной сети Ethereum всего 6,764, что значительно меньше по сравнению с количеством адресов EOA и CA. Количество независимых адресов в основной сети Ethereum достигло 270 миллионов, можно сказать, что EIP4337 развивается медленно в основной сети.
Однако это не влияет на основную ценность AA. Дизайн EIP4337 предопределяет его трудности с хорошей обратной совместимостью в основной сети. С распространением различных L2 цепей, которые обычно встроены в нативный AA, количество адресов EIP4337 на L2 резко возросло, так как число активных пользователей в июле на цепях Base и Polygon составило 1 миллион и 3 миллиона соответственно, что является неплохим результатом.
Таким образом, дизайн EIP4337 не является ошибкой, у него есть множество преимуществ. Текущая ситуация обусловлена разницей между основной сетью и L2, им нужны соответствующие решения.
2. Что такое абстрагирование счета?
абстрагирование счета по сути решает проблему разделения прав собственности.
В архитектуре EVM есть два типа счетов: внешний счет ( EOA ) и контрактный счет ( CA ). В внешнем счете право собственности и право подписи принадлежат одному и тому же субъекту. Лицо, обладающее приватным ключом, не только владеет "правом собственности на счет", но и имеет право "подписывать перевод всех активов".
Это определяется структурой транзакции счета Ethereum. Из структуры транзакции видно, что стандартная транзакция на самом деле не имеет поля From. При переводе средств конкретный адрес расхода выводится с помощью параметров VRS (, а именно, пользовательская подпись ) расшифровывается.
Основной эффект EIP4337 заключается в том, что в поле транзакции был добавлен адрес отправителя, что позволяет разделить закрытый ключ и обрабатываемый адрес.
Причина такой важности разделения собственности заключается в том, что проектирование внешних счетов (EOA) приведет к множеству проблем:
Защита приватного ключа сложна: потеря приватного ключа означает потерю всех активов.
Единый алгоритм подписи: верификация транзакций в родном протоколе может использовать только алгоритм ECDSA.
Слишком высокие права подписи: отсутствует нативная функция мультиподписей, одна подпись может выполнять любые операции.
Комиссия за транзакцию может быть оплачена только в Эфире, массовые транзакции не поддерживаются.
Приватность сделок легко подвержена утечке: одноранговые сделки легко анализируют информацию о держателе счета.
Эти ограничения затрудняют обычным пользователям использование Ethereum:
Сначала пользователи должны владеть Эфиром и нести риски ценовых колебаний.
Во-вторых, пользователю необходимо разобраться со сложной логикой оплаты, такой как цена газа, лимит газа, концепции блокировки транзакций и т.д.
В конце концов, блокчейн-кошельки или приложения пытаются улучшить пользовательский опыт за счет оптимизации продукта, но эффект ограничен.
Таким образом, решение заключается в реализации абстрагирования счета, что позволит декомпозировать право собственности (Owner) и право подписи (Signer), тем самым постепенно решая вышеупомянутые проблемы.
В истории было много вариантов, в конечном итоге сводящихся к двум путям.
3. Историческая хронология предложений по абстрагированию счета
Решение проблемы кажется, что существует множество предложений EIP, но в конечном итоге это две основные идеи. Каждая проблема, рассматриваемая в неподтвержденных EIP, сосредоточена на точках прорыва существующих решений.
3.1 Первый маршрут: преобразовать EOA-адрес в CA-адрес
Еще в ноябре 2015 года Виталик предложил новую структуру счета, основанную на контрактах, в EIP-101. Адрес был изменен так, чтобы он содержал только код и пространство для хранения, поддерживающее оплату комиссий ERC20, через предкомпилированные контракты преобразуя родные токены в хранилище баланса, аналогичное ERC20, и упростив поля транзакции до to, startgas, data и code.
Этот план можно назвать революционным, он существенно изменит базовую архитектуру, позволив каждому адресу счета иметь свою "кодовую" логику (, что и является целью EIP-7702 ).
Он также может порождать другие функции, такие как:
Позвольте сделкам использовать больше криптографических алгоритмов, определяемых внутренним кодом каждого адреса для методов проверки и аутентификации.
Обладает характеристиками защиты от квантовых атак, так как код может быть обновлен.
Сделать Эфир совместимым с функциями контракта ERC20, такими как авторизация удержания.
Улучшение кастомизации счета, совместимость с восстановлением через социальные сети, поддержка SBT, восстановление ключей и т.д.
Причиной того, что не было продолжено продвижение, в основном является слишком большой шаг, недостаточное внимание к текущим проблемам конфликтов хэш-операций и угрозам безопасности, но каждая идея с достоинствами стала одной из ключевых функций последующих EIP4337 и EIP7702.
В дальнейшем будет ряд EIP, пытающихся усовершенствовать эту логику:
EIP-859: абстрагирование счета основной цепи (2018-01-30)
Пытается решить проблему развертывания кода. Основная функция заключается в том, что если контракт стороны сделки не развернут, то выполняется развертывание кошелька контракта с использованием параметра code,附带交易. Также предложен новый код операции PAYGAS, который, помимо оплаты газа, также служит разделителем между частью верификации и частью исполнения в параметрах транзакции.
Хотя в то время это не увенчалось успехом, это также стало одной из ключевых логик EIP7702. Каждая транзакция EIP7702 в сочетании со специальной структурой транзакции может сопровождаться определённым кодом, позволяя EOA-адресу обладать контрактной способностью в данной транзакции.
EIP-7702: установка кода EOA счета (2024-05-07)
Это основной EIP, который будет обсуждаться далее в статье, предложенный Виталиком как альтернатива EIP-3074. EIP-3074 был отвергнут, EIP-7702 будет включен в предстоящий хардфорк ETH Prague/Electra(Pectra).
3.2 Второй путь: позволяя адресу EOA управлять адресом CA
EIP-3074: добавление операций AUTH и AUTHCALL (2020-10-15)
В EVM добавлены два новых OpCode: AUTH и AUTHCALL, которые позволяют EOA авторизовать контракты для вызова других контрактов от имени EOA.
В общем, EOA может отправлять подписанные сообщения ( и транзакции ) в доверенный контракт (, называемый Invoker ). Этот контракт Invoker может использовать коды операций AUTH и AUTHCALL для замены EOA при отправке транзакций.
EIP-4337: Реализация абстрагирования счета с помощью пула памяти транзакций(2021-09-29)
Вдохновленный MEV, основная ценность заключается в полной избегании изменений протокола уровня консенсуса.
EIP4337 предлагает новый объект транзакции UserOperation, который пользователи отправляют в пул памяти, откуда бандлеры в масштабе майнеров пакетно упаковывают и передают для выполнения транзакционных операций с контрактами. По сути, это означает, что базовые транзакции и работа с счетом выполняются на уровне контракта.
EIP-5189: абстрагирование счета через действия поручителей (2022-06-29)
Это оптимизация логики EIP4337, направленная на предотвращение атак блокировки DoS со стороны злонамеренных Bundler, путем создания механизма обеспечения штрафов за средства.
3.3 Другие предложения, поддерживающие абстрагирование счета
EIP-2718: упаковка нового типа транзакций (2020-06-13)
Это финальное предложение, определяющее новый тип транзакции в качестве конверта для будущих новых типов транзакций.
Конечный результат заключается в том, что при введении нового типа транзакции с помощью определенного кодирования различаются типы транзакций, необходимо только обеспечить обратную совместимость, без обеспечения совместимости вперед. Наиболее распространенным примером является EIP1559, который различает комиссии за транзакции, используя новое кодирование типа транзакции, но не влияет на первоначальный legacy тип транзакции.
EIP-3607: сделать адреса EOA недоступными для развертывания контрактов (2021-06-10)
Это дополнительное решение на пути AA, предназначенное для предотвращения конфликта между адресом развертывания контракта и адресом EOA. Оно будет контролировать методы генерации контрактов, не позволяя развертывать код по адресам, которые уже являются адресами EOA. Этот риск на самом деле очень мал, адреса Эфира имеют длину 160 бит, хотя существует метод получения приватного ключа для заданного адреса контракта с помощью коллизии приватных ключей, но с учетом всей мощности биткойнов это займет, по оценкам, год.
3.4 Как понять эволюцию абстрагирования счета?
Сначала нужно понять ценность, преобразованную в CA, в основном это реальный эффект EIP-4337:
Поддержка пакетных транзакций
Поддержка социального восстановления
Поддержка пользовательской проверки подписи
Не требуется оплата комиссии в родном токене
Более детализированное управление правами
Масштабируемость
Однако основной недостаток EIP-4337 заключается в том, что он противоречит принципу человеческой мотивации.
Кажется лучше, но попадает в мертвый круг развития рынка: многие Dapp все еще не совместимы, пользователи не хотят использовать адреса CA, а использование CA приводит к более высоким затратам на транзакции ( в обычных сценариях перевода, комиссии за транзакции удваиваются ), чрезмерная зависимость от совместимости самого Dapp.
Поэтому на основной сети Ethereum до сих пор не получил распространения.
Стоимость является самым важным критерием оценки для пользователей, необходимо снизить затраты.
Но для того, чтобы действительно снизить GAS, необходимо, чтобы сам Ethereum провел мягкое форк-обновление, изменив расчеты GAS или модули потребления GAS для операций. Поскольку нужно проводить мягкий форк, имеет смысл напрямую рассмотреть EIP-7702.
4. Полный анализ EIP-7702
4.1 Что такое EIP-7702
Он позволяет EOA временно обладать функциями смарт-контракта в одной транзакции через новый тип транзакции, поддерживает пакетные транзакции, транзакции без Gas и управление пользовательскими правами, при этом не требуется вводить новый EVM opCode(, что не влияет на обратную совместимость).
Пользователи могут получить большинство возможностей абстрагирования счета (AA) без необходимости развертывания смарт-контрактов, даже могут предоставить третьим лицам возможность инициировать транзакции от имени пользователей, и при этом не требуется предоставление приватного ключа, только необходимо подписать информацию о разрешении.
4.2 структура данных
Определение нового типа транзакции 0x04, TransactionPayload является результатом RLP кодирования следующего содержимого:
Важно, что был добавлен объект authorization_list, который хранит код, который подписывающий хочет выполнить в своем EOA. Пользователь подписывает код контракта, который необходимо выполнить, одновременно с транзакцией, который существует в виде двумерного списка, что позволяет хранить несколько операций и выполнять пакетные операции.
Установите код подписчика authority на 0xef0100 || address( для обхода стратегии защиты от коллизий EIP3607 ).
Увеличение nonce ( для авторизованных подписантов предотвращает повторное использование локальных подписей ).
Добавить счет подписчика authority в список посещенных адресов ( для горячего адреса, снизить стоимость хранения газа при запросе ).
4.3.2 Этап выполнения операции
"Новая" версия изменила только поведение развертывания кода.
Больше не устанавливайте account_code как contract_code, а извлекайте код, указанный в address из authorization_list и устанавливайте его как account_code.
При выполнении кода авторизации загружайте код из поля address списка authorization_list, выполняя его в контексте счета подписанта.
Это означает, что код пользовательского контракта фактически хранится по определенному адресу в цепочке, а не содержится непосредственно в транзакции.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
7
Поделиться
комментарий
0/400
LiquidationWizard
· 07-25 01:53
Что за дела с 7702?
Посмотреть ОригиналОтветить0
GasWaster
· 07-24 18:03
О боже, еще один EIP... я потратил 2 ETH на неудачные транзакции в прошлом году, а теперь они говорят мне это?
Посмотреть ОригиналОтветить0
EntryPositionAnalyst
· 07-24 15:19
AA снова стал популярен через несколько дней.
Посмотреть ОригиналОтветить0
MetaMuskRat
· 07-22 06:03
Снова начинают говорить об AA, это старая песня о Блокчейн в новой обертке.
EIP-7702 изменит экосистему Ethereum, абстрагирование счета вступает в новую эру
Глубокий анализ прошлого и будущего абстрагирования счета Ethereum
Введение
Статья разделена на две основные части:
Первая часть начинается с первого предложения AA в 2015 году, систематически рассматривает основные предложения EIP до настоящего времени, исследует историю развития предложений AA и проводит комплексную оценку различных схем.
Вторая часть сосредоточена на сравнении рыночной реакции на EIP4337 после его внедрения, а также на глубоком анализе EIP7702, который будет включен в следующее обновление Ethereum. Если это предложение будет объединено, оно полностью изменит форму цепочечных приложений.
EIP-7702 имеет эпохальное значение, давайте подробнее разберемся.
1. Фон абстрагирования счета
1.1 Значение абстрагирования счета
Основатель Ethereum Виталик в конце 2023 года снова обновил дорожную карту развития ETH, но позиционирование абстрагирования счета не изменилось. Текущая основная модель переходит от EIP-4337 к следующему этапу "добровольного преобразования EOA-счетов".
1.2 Рыночная ситуация абстрагирования счета
После полутора лет разработки общее количество адресов EIP4337 на основных цепочках составляет всего 12 миллионов, из которых активных адресов в основной сети Ethereum всего 6,764, что значительно меньше по сравнению с количеством адресов EOA и CA. Количество независимых адресов в основной сети Ethereum достигло 270 миллионов, можно сказать, что EIP4337 развивается медленно в основной сети.
Однако это не влияет на основную ценность AA. Дизайн EIP4337 предопределяет его трудности с хорошей обратной совместимостью в основной сети. С распространением различных L2 цепей, которые обычно встроены в нативный AA, количество адресов EIP4337 на L2 резко возросло, так как число активных пользователей в июле на цепях Base и Polygon составило 1 миллион и 3 миллиона соответственно, что является неплохим результатом.
Таким образом, дизайн EIP4337 не является ошибкой, у него есть множество преимуществ. Текущая ситуация обусловлена разницей между основной сетью и L2, им нужны соответствующие решения.
2. Что такое абстрагирование счета?
абстрагирование счета по сути решает проблему разделения прав собственности.
В архитектуре EVM есть два типа счетов: внешний счет ( EOA ) и контрактный счет ( CA ). В внешнем счете право собственности и право подписи принадлежат одному и тому же субъекту. Лицо, обладающее приватным ключом, не только владеет "правом собственности на счет", но и имеет право "подписывать перевод всех активов".
Это определяется структурой транзакции счета Ethereum. Из структуры транзакции видно, что стандартная транзакция на самом деле не имеет поля From. При переводе средств конкретный адрес расхода выводится с помощью параметров VRS (, а именно, пользовательская подпись ) расшифровывается.
Основной эффект EIP4337 заключается в том, что в поле транзакции был добавлен адрес отправителя, что позволяет разделить закрытый ключ и обрабатываемый адрес.
Причина такой важности разделения собственности заключается в том, что проектирование внешних счетов (EOA) приведет к множеству проблем:
Защита приватного ключа сложна: потеря приватного ключа означает потерю всех активов.
Единый алгоритм подписи: верификация транзакций в родном протоколе может использовать только алгоритм ECDSA.
Слишком высокие права подписи: отсутствует нативная функция мультиподписей, одна подпись может выполнять любые операции.
Комиссия за транзакцию может быть оплачена только в Эфире, массовые транзакции не поддерживаются.
Приватность сделок легко подвержена утечке: одноранговые сделки легко анализируют информацию о держателе счета.
Эти ограничения затрудняют обычным пользователям использование Ethereum:
Сначала пользователи должны владеть Эфиром и нести риски ценовых колебаний.
Во-вторых, пользователю необходимо разобраться со сложной логикой оплаты, такой как цена газа, лимит газа, концепции блокировки транзакций и т.д.
В конце концов, блокчейн-кошельки или приложения пытаются улучшить пользовательский опыт за счет оптимизации продукта, но эффект ограничен.
Таким образом, решение заключается в реализации абстрагирования счета, что позволит декомпозировать право собственности (Owner) и право подписи (Signer), тем самым постепенно решая вышеупомянутые проблемы.
В истории было много вариантов, в конечном итоге сводящихся к двум путям.
3. Историческая хронология предложений по абстрагированию счета
Решение проблемы кажется, что существует множество предложений EIP, но в конечном итоге это две основные идеи. Каждая проблема, рассматриваемая в неподтвержденных EIP, сосредоточена на точках прорыва существующих решений.
3.1 Первый маршрут: преобразовать EOA-адрес в CA-адрес
Еще в ноябре 2015 года Виталик предложил новую структуру счета, основанную на контрактах, в EIP-101. Адрес был изменен так, чтобы он содержал только код и пространство для хранения, поддерживающее оплату комиссий ERC20, через предкомпилированные контракты преобразуя родные токены в хранилище баланса, аналогичное ERC20, и упростив поля транзакции до to, startgas, data и code.
Этот план можно назвать революционным, он существенно изменит базовую архитектуру, позволив каждому адресу счета иметь свою "кодовую" логику (, что и является целью EIP-7702 ).
Он также может порождать другие функции, такие как:
Позвольте сделкам использовать больше криптографических алгоритмов, определяемых внутренним кодом каждого адреса для методов проверки и аутентификации.
Обладает характеристиками защиты от квантовых атак, так как код может быть обновлен.
Сделать Эфир совместимым с функциями контракта ERC20, такими как авторизация удержания.
Улучшение кастомизации счета, совместимость с восстановлением через социальные сети, поддержка SBT, восстановление ключей и т.д.
Причиной того, что не было продолжено продвижение, в основном является слишком большой шаг, недостаточное внимание к текущим проблемам конфликтов хэш-операций и угрозам безопасности, но каждая идея с достоинствами стала одной из ключевых функций последующих EIP4337 и EIP7702.
В дальнейшем будет ряд EIP, пытающихся усовершенствовать эту логику:
EIP-859: абстрагирование счета основной цепи (2018-01-30)
Пытается решить проблему развертывания кода. Основная функция заключается в том, что если контракт стороны сделки не развернут, то выполняется развертывание кошелька контракта с использованием параметра code,附带交易. Также предложен новый код операции PAYGAS, который, помимо оплаты газа, также служит разделителем между частью верификации и частью исполнения в параметрах транзакции.
Хотя в то время это не увенчалось успехом, это также стало одной из ключевых логик EIP7702. Каждая транзакция EIP7702 в сочетании со специальной структурой транзакции может сопровождаться определённым кодом, позволяя EOA-адресу обладать контрактной способностью в данной транзакции.
EIP-7702: установка кода EOA счета (2024-05-07)
Это основной EIP, который будет обсуждаться далее в статье, предложенный Виталиком как альтернатива EIP-3074. EIP-3074 был отвергнут, EIP-7702 будет включен в предстоящий хардфорк ETH Prague/Electra(Pectra).
3.2 Второй путь: позволяя адресу EOA управлять адресом CA
EIP-3074: добавление операций AUTH и AUTHCALL (2020-10-15)
В EVM добавлены два новых OpCode: AUTH и AUTHCALL, которые позволяют EOA авторизовать контракты для вызова других контрактов от имени EOA.
В общем, EOA может отправлять подписанные сообщения ( и транзакции ) в доверенный контракт (, называемый Invoker ). Этот контракт Invoker может использовать коды операций AUTH и AUTHCALL для замены EOA при отправке транзакций.
EIP-4337: Реализация абстрагирования счета с помощью пула памяти транзакций(2021-09-29)
Вдохновленный MEV, основная ценность заключается в полной избегании изменений протокола уровня консенсуса.
EIP4337 предлагает новый объект транзакции UserOperation, который пользователи отправляют в пул памяти, откуда бандлеры в масштабе майнеров пакетно упаковывают и передают для выполнения транзакционных операций с контрактами. По сути, это означает, что базовые транзакции и работа с счетом выполняются на уровне контракта.
EIP-5189: абстрагирование счета через действия поручителей (2022-06-29)
Это оптимизация логики EIP4337, направленная на предотвращение атак блокировки DoS со стороны злонамеренных Bundler, путем создания механизма обеспечения штрафов за средства.
3.3 Другие предложения, поддерживающие абстрагирование счета
EIP-2718: упаковка нового типа транзакций (2020-06-13)
Это финальное предложение, определяющее новый тип транзакции в качестве конверта для будущих новых типов транзакций.
Конечный результат заключается в том, что при введении нового типа транзакции с помощью определенного кодирования различаются типы транзакций, необходимо только обеспечить обратную совместимость, без обеспечения совместимости вперед. Наиболее распространенным примером является EIP1559, который различает комиссии за транзакции, используя новое кодирование типа транзакции, но не влияет на первоначальный legacy тип транзакции.
EIP-3607: сделать адреса EOA недоступными для развертывания контрактов (2021-06-10)
Это дополнительное решение на пути AA, предназначенное для предотвращения конфликта между адресом развертывания контракта и адресом EOA. Оно будет контролировать методы генерации контрактов, не позволяя развертывать код по адресам, которые уже являются адресами EOA. Этот риск на самом деле очень мал, адреса Эфира имеют длину 160 бит, хотя существует метод получения приватного ключа для заданного адреса контракта с помощью коллизии приватных ключей, но с учетом всей мощности биткойнов это займет, по оценкам, год.
3.4 Как понять эволюцию абстрагирования счета?
Сначала нужно понять ценность, преобразованную в CA, в основном это реальный эффект EIP-4337:
Однако основной недостаток EIP-4337 заключается в том, что он противоречит принципу человеческой мотивации.
Кажется лучше, но попадает в мертвый круг развития рынка: многие Dapp все еще не совместимы, пользователи не хотят использовать адреса CA, а использование CA приводит к более высоким затратам на транзакции ( в обычных сценариях перевода, комиссии за транзакции удваиваются ), чрезмерная зависимость от совместимости самого Dapp.
Поэтому на основной сети Ethereum до сих пор не получил распространения.
Стоимость является самым важным критерием оценки для пользователей, необходимо снизить затраты.
Но для того, чтобы действительно снизить GAS, необходимо, чтобы сам Ethereum провел мягкое форк-обновление, изменив расчеты GAS или модули потребления GAS для операций. Поскольку нужно проводить мягкий форк, имеет смысл напрямую рассмотреть EIP-7702.
4. Полный анализ EIP-7702
4.1 Что такое EIP-7702
Он позволяет EOA временно обладать функциями смарт-контракта в одной транзакции через новый тип транзакции, поддерживает пакетные транзакции, транзакции без Gas и управление пользовательскими правами, при этом не требуется вводить новый EVM opCode(, что не влияет на обратную совместимость).
Пользователи могут получить большинство возможностей абстрагирования счета (AA) без необходимости развертывания смарт-контрактов, даже могут предоставить третьим лицам возможность инициировать транзакции от имени пользователей, и при этом не требуется предоставление приватного ключа, только необходимо подписать информацию о разрешении.
4.2 структура данных
Определение нового типа транзакции 0x04, TransactionPayload является результатом RLP кодирования следующего содержимого:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])
Важно, что был добавлен объект authorization_list, который хранит код, который подписывающий хочет выполнить в своем EOA. Пользователь подписывает код контракта, который необходимо выполнить, одновременно с транзакцией, который существует в виде двумерного списка, что позволяет хранить несколько операций и выполнять пакетные операции.
authorization_list = [[chain_id, адрес, nonce, y_parity, r, s], ...]
4.3 Жизненный цикл сделки
4.3.1 Этап проверки
При начале выполнения транзакции, для каждого кортежа [chain_id, address, nonce, y_parity, r, s] в authorization_list:
4.3.2 Этап выполнения операции
"Новая" версия изменила только поведение развертывания кода.
Больше не устанавливайте account_code как contract_code, а извлекайте код, указанный в address из authorization_list и устанавливайте его как account_code.
При выполнении кода авторизации загружайте код из поля address списка authorization_list, выполняя его в контексте счета подписанта.
Это означает, что код пользовательского контракта фактически хранится по определенному адресу в цепочке, а не содержится непосредственно в транзакции.