Спойлер — предупреждение о массовой версии!
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.