Initialement publié en anglais par StarkWare le 18 janvier, 2022
Spoiler – alerte version importante !
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.
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.
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.
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é.
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.
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.
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.
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.
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.
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.
Le support initial de Fee Mechanism sera publié dans quelques semaines, sous la forme d’une sous-version de StarkNet.
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