Starknet Alpha 0.7.0
0x568B
May 25th, 2022

Initialement publié en anglais par StarkWare le 18 janvier, 2022

Spoiler – alerte version importante !

TL;DR

  • StarkNet Alpha 0.7.0 sorti sur Goerli; avec pleins d’améliorations
  • Les contrats peuvent désormais être mis à niveau en utilisant le Proxy Upgrade Pattern
  • Les contrats peuvent désormais émettre des Événements
  • Prise en charge des appels système tant attendus Block Number et Block Timestamp

Introduction

Nous sommes heureux de sortir Alpha 0.7.0, une version pleine de nouvelles fonctionnalités et d’améliorations. L’un des meilleurs stimulants de StarkNet au cours des derniers mois a été la participation accrue de la communauté à façonner l’avenir de StarkNet. Cette version répond à certains des besoins ardant de la communauté.

Modifications apportées à la Convention sur la dénomination

Le lecteur attentif a peut-être remarqué que la version précédente de StarkNet Alpha s’appelait Alpha 4, alors que nous sortons maintenant Alpha 0.7.0. Nous avons décidé d’omettre le numéro de version Alpha dédié et de nous baser uniquement sur la version cairo-lang associée.

Nouvelles Fonctionnalités

Possibilité d’évolutivité du contrat

Le Proxy Upgrade Pattern d’OpenZeppelin est désormais entièrement pris en charge pour les mises à niveau de contrat dans StarkNet. Le modèle Proxy est la méthode commune pour permettre des mises à niveau de contrat sur Ethereum. Alpha 0.7.0 permet ce modèle sur StarkNet.

Nous avons fait un court tutoriel pour montrer une implémentation de base, et OpenZeppelin travaille déjà dur pour implémenter un contrat standard pour le modèle proxy; voir le prototype.

Block Number et Block Timestamp

Alpha 0.7.0 ajoute deux nouveaux appels système que beaucoup de développeurs ont demandé. Ces appels permettent à un contrat d’accéder au numéro de bloc et à l’horodatage du bloc. Le numéro de bloc retourne le numéro du bloc en cours d’exécution. L’horodatage du bloc retourne l’horodatage donné par le séquenceur lors de la création du bloc.

Vous pouvez voir un exemple d’utilisation de ces fonctionnalités dans le tutoriel.

Événements

Surprise ! Une fonctionnalité qui a été prévue pour une future version s’est glissée dans celle-ci.

Les contrats StarkNet prennent désormais en charge la définition et l’émission d’événements, ce qui leur permet d’exposer des informations d’exécution pour les applications off-chain à consommer. Les développeurs Ethereum trouveront la sémantique et la syntaxe très similaire à Solidity. Vous pouvez lire la documentation, ou suivre le tutoriel, qui explique cette fonctionnalité.

Directive %builtins supprimée

La directive %builtin n’est plus nécessaire dans les contrats StarkNet. Ce changement fait suite à une discussion communautaire sur le modèle d’extensibilité des contrats sur StarkNet Shamans. Il simplifie considérablement la facilité d’utilisation de ce modèle d’extensibilité.

Par exemple, le contrat suivant sera modifié :

%lang starknet

# This is the "%builtins" directive.

# It is not needed anymore.

%builtins range_check

@view 

func add(x : felt, y : felt) -> (res : felt):

return (res=x + y)end

En cela :

%lang starknet

@view

func add(x : felt, y : felt) -> (res : felt):

return (res=x + y)

end

Vous pouvez consulter les contrats standard ERC-20, qui utilisent le nouveau modèle.

Fonctions externes Support des tableaux de structures

Alpha 0.7.0 prend en charge la transmission et le retour de tableaux de structs¹ dans les fonctions externes. Cette fonctionnalité supplémentaire permet aux contrats de compte de mieux prendre en charge les appels multiples.

Multicall est une fonctionnalité puissante de Account Abstraction qui permet à un compte d’effectuer plusieurs appels en une seule transaction. Un cas d’utilisation évident est celui de créer une transaction unique qui appelle allocation puis transferFrom.

Nous avons hâte de voir ce que la communauté en fera.

Améliorations apportées à StarkNet CLI

Prise en charge des blocs en attente

Les blocs en attente ont été introduits dans la dernière version mineure (v0.6.2) et offraient des confirmations plus rapides sur les transactions. Cette version inclut le support pour interroger ces blocs via le StarkNet CLI.

Pour l’utiliser, dans chaque commande CLI qui prend block_number comme argument (contract_call/get_block/get_code/get_storage_at), nous pouvons interroger le StarkNet en ce qui concerne le bloc en attente en spécifiant block_number=pending.

Soutien aux contrats de compte

StarkNet utilise l’abstraction de compte, c’est-à-dire que tous les comptes sont implémentés comme des contrats intelligents. Les premières implémentations de contrats de compte ont été faites par Argent et OZ, mais nous nous attendons à bien d’autres.

Dans StarkNet, toutes les transactions doivent passer par un contrat de compte, et le CLI permet désormais d’interagir directement avec StarkNet Alpha par le biais de contrats de compte. Voir le tutoriel pour savoir comment le configurer.

Des fonctionnalités similaires ont également été ajoutées à StarkNet.py et à Nile le mois dernier.

La messagerie L1<>L2 dans le cadre des tests

Alpha 0.7.0 introduit le Postman. Le Postman permet aux développeurs d'utiliser le cadre de test pour tester des flux plus complexes.

À un niveau élevé, il imite la responsabilité du séquenceur StarkNet de transmettre des messages de L1 à L2 et de L2 à L1. Il s’assure que les messages envoyés via le contrat de messagerie Solidity apparaîtront dans le contrat StarkNet de destination et les messages envoyés depuis un contrat StarkNet apparaîtront dans le contrat de messagerie Solidity.

Et plus de fonctionnalités

Alpha 0.7.0 apporte de nombreuses autres fonctionnalités et modifications, comme l'ajout d'une fonction efficace de racine carrée à la bibliothèque commune de mathématiques. Une liste complète figure dans le journal des modifications.

Prochainement ?

Le support initial de Fee Mechanism sera publié dans quelques semaines, sous la forme d’une sous-version de StarkNet.

Plus d’informations?

starknet.io: pour toutes les informations StarkNet, tutoriels et mises à jour.

StarkNet Discord: rejoignez-nous pour obtenir des réponses à vos questions, obtenir le support de développement et faire partie de la communauté.

StarkNet Shamans: rejoignez-vous pour suivre (et participer !) les discussions de recherche StarkNet.

¹struct (C programming language) plus d’informations ici

Traduction faite par @cleminso

Arweave TX
Y2pVbOlU8KRRVOFuaNpdAO2-z1azcWsjgA-0sCNsR2U
Ethereum Address
0x568B12eBBE85521D2cd8a2C9B7a8EF3f48aa2d66
Content Digest
sT1UpR0Q-XP5HbX1NXEJDnUbJNPOaNOPLJJ3PrsdwS0