MMS

Спойлер — предупреждение о массовой версии!

TL;DR

  • StarkNet Alpha 0.7.0 выпущен для Goerli; упакован с улучшениями
  • Контракты теперь можно улучшать с помощью шаблона прокси-апгрейда.
  • Контракты теперь могут создавать события
  • Поддержка долгожданных системных вызовов Block Number и Block Timestamp

Вступление

Мы рады выпустить Alpha 0.7.0, версию с новыми функциями и улучшениями. Одним из лучших стимулов для StarkNet за последние несколько месяцев стало возросшее участие сообщества в формировании будущего StarkNet. Эта версия отвечает некоторым насущным потребностям сообщества.

Изменения в соглашении об именах

Внимательный читатель мог заметить, что предыдущая версия StarkNet Alpha называлась Alpha 4, тогда как сейчас мы выпускаем Alpha 0.7.0. Мы решили не указывать специальный номер альфа-версии и вместо этого полагаться только на соответствующую версию cairo-lang.

Новые особенности

Возможность обновления контракта

Шаблон обновления прокси -сервера OpenZeppelin теперь полностью поддерживается для обновлений контрактов в StarkNet. Шаблон прокси — это распространенный метод, позволяющий обновлять контракты через Ethereum. Alpha 0.7.0 позволяет использовать этот шаблон в StarkNet.

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

Номер блока и временная метка блока

Alpha 0.7.0 добавляет два новых системных вызова, о которых просили многие разработчики. Эти вызовы позволяют контракту получить доступ к номеру блока и метке времени блока. Номер блока возвращает номер текущего выполняемого блока. Временная метка блока возвращает временную метку, заданную Sequencer при создании блока.

Вы можете увидеть пример того, как использовать эти функции в учебнике .

События

Сюрприз! Функция, которая была запланирована для будущей версии, пробралась в эту более раннюю.

Контракты StarkNet теперь поддерживают определение и отправку событий, что позволяет им предоставлять информацию о выполнении для использования приложениями вне сети. Разработчики Ethereum найдут семантику и синтаксис очень похожими на Solidity. Вы можете прочитать документацию или пройти обучение , объясняющее эту функцию.

Удалена директива %builtins.

Директива %builtin больше не нужна в контрактах StarkNet. Это изменение последовало за обсуждением в сообществе шаблона расширяемости контрактов в StarkNet Shamans . Это значительно упрощает использование этого шаблона расширяемости.

Например, следующий контракт будет изменен с:

%lang starknet
# This is the "%builtins" directive.# It is not needed anymore.%builtins range_check
@viewfunc add(x : felt, y : felt) -> (res : felt):return (res=x + y)end

К этому:
%lang starknet@viewfunc add(x : felt, y : felt) -> (res : felt):return (res=x + y)end

Вы можете ознакомиться со стандартными контрактами ERC-20 , в которых используется новый шаблон.

Внешние функции поддерживают массивы структур

Alpha 0.7.0 поддерживает передачу и возврат массивов структур во внешние функции. Эта дополнительная функциональность позволяет контрактам с учетными записями лучше поддерживать многократные вызовы .

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

Мы с нетерпением ждем, что сообщество сделает с этим.

Улучшения интерфейса командной строки StarkNet

Поддержка ожидающих блоков

Блоки в ожидании были представлены в последней минорной версии (v0.6.2) и предлагали более быстрые подтверждения транзакций. Эта версия включает поддержку запроса этих блоков через интерфейс командной строки StarkNet.

Чтобы использовать его, в каждой команде CLI, которая принимает block_number в качестве аргумента (contract_call/get_block/get_code/get_storage_at), мы можем запросить StarkNet относительно ожидающего блока, указав block_number=pending.

Поддержка контрактов счетов

StarkNet использует абстракцию учетных записей, т. е. все учетные записи реализованы в виде смарт-контрактов. Первые реализации контрактов учетных записей были сделаны Argent и OZ , но мы ожидаем, что их будет еще больше.

В StarkNet все транзакции должны проходить через контракт учетной записи, а интерфейс командной строки теперь позволяет взаимодействовать со StarkNet Alpha напрямую через контракты учетной записи. Посмотрите мастер- класс по его настройке.

Аналогичная функциональность была также добавлена ​​в StarkNet.py и Nile в прошлом месяце.

Обмен сообщениями L1<>L2 в среде тестирования

Альфа 0.7.0 представляет Почтальона. Postman позволяет разработчикам использовать среду тестирования для тестирования более сложных потоков.

На высоком уровне — это высмеивает ответственность StarkNet Sequencer за передачу сообщений от L1 к L2 и от L2 к L1. Это гарантирует, что сообщения, отправленные через контракт обмена сообщениями Solidity, появятся в целевом контракте StarkNet, а сообщения, отправленные из контракта StarkNet, появятся в контракте обмена сообщениями Solidity.

И другие функции

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

Следующий?

Первоначальная поддержка механизма оплаты будет выпущена в течение нескольких недель в качестве подверсии StarkNet.

Дополнительная информация?

starknet.io : для всей информации, руководств и обновлений StarkNet.

StarkNet Discord : присоединяйтесь, чтобы получить ответы на свои вопросы, получить поддержку разработчиков и стать частью сообщества.

Шаманы StarkNet : присоединяйтесь, чтобы следить (и участвовать!) в обсуждениях исследований StarkNet.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *