Futures
Accédez à des centaines de contrats perpétuels
CFD
Or
Une plateforme pour les actifs mondiaux
Options
Hot
Tradez des options classiques de style européen
Compte unifié
Maximiser l'efficacité de votre capital
Trading démo
Introduction au trading futures
Préparez-vous à trader des contrats futurs
Événements futures
Participez aux événements et gagnez
Demo Trading
Utiliser des fonds virtuels pour faire l'expérience du trading sans risque
CFD
Produits dérivés CFD sur actions américaines
US Stocks
Accédez à de véritables actions et ETF américains
HK Stocks
Tradez des actions des actions de qualité cotées à Hong Kong
Futures sur actions
Effet de levier élevé, trading 24h/24 et 7j/7
Actions tokenisées
Adossé à de véritables actions
IPO Access
Accédez à l'intégralité des introductions en bourse mondiales
GUSD
Mint GUSD pour des rendements de Treasury RWA
Activités boursières
Tradez des actions populaires et débloquez des airdrops généreux
Lancer
CandyDrop
Collecte des candies pour obtenir des airdrops
Launchpool
Staking rapide, Gagnez de potentiels nouveaux jetons
HODLer Airdrop
Conservez des GT et recevez d'énormes airdrops gratuitement
IPO Access
Accédez à l'intégralité des introductions en bourse mondiales
Points Alpha
Tradez on-chain et gagnez des airdrops
Points Futures
Gagnez des points Futures et réclamez vos récompenses d’airdrop.
Investissement
Simple Earn
Gagner des intérêts avec des jetons inutilisés
Investissement automatique
Auto-invest régulier
Double investissement
Profitez de la volatilité du marché
Staking souple
Gagnez des récompenses grâce au staking flexible
Prêt Crypto
0 Fees
Mettre en gage un crypto pour en emprunter une autre
Centre de prêts
Centre de prêts intégré
Promotions
Centre d'activités
Participez et gagnez des récompenses
Parrainage
20 USDT
Invitez des amis et gagnez des récompenses
Programme d'affiliation
Obtenez des commissions exclusives
Gate Booster
Développez votre influence et gagnez des airdrops
Annoncement
Mises à jour en temps réel
Blog Gate
Articles sur le secteur de la crypto
AI
Gate AI
Votre assistant IA polyvalent pour toutes vos conversations
Gate AI Bot
Utilisez Gate AI directement dans votre application sociale
GateClaw
Gate Blue Lobster, prêt à l’emploi
Gate for AI Agent
Infrastructure IA, Gate MCP, Skills et CLI
Gate Skills Hub
+10K compétences
De la bureautique au trading, une bibliothèque de compétences tout-en-un pour exploiter pleinement l’IA
Kakarot : Explorer la route compatible EVM de Starknet
Auteur : Cynique
TL; DR
Qu'est-ce qu'une machine virtuelle ?
Pour clarifier ce qu'est une machine virtuelle, nous devons d'abord parler du processus d'exécution informatique sous l'architecture actuelle de von Neumann. Divers programmes exécutés sur un ordinateur sont généralement transformés par des couches de langages de haut niveau et génèrent finalement des codes machine compréhensibles par la machine pour l'exécution. Selon le mode de conversion en code machine, les langages de haut niveau peuvent être grossièrement divisés en langages compilés et en langages interprétés.
Un langage compilé signifie qu'une fois le code écrit, il doit être traité par un compilateur pour convertir le code de langage de haut niveau en code machine et générer un fichier exécutable. Une fois compilé, il peut être exécuté plusieurs fois avec une plus grande efficacité. L'avantage d'un langage compilé est que le code a été converti en code machine lors de la compilation, de sorte que la vitesse d'exécution est rapide et que le programme peut être exécuté dans un environnement sans compilateur, ce qui est pratique pour les utilisateurs et n'a pas besoin pour installer un logiciel supplémentaire. Les langages compilés courants incluent C, C++, Go, etc.
Le pendant des langages compilés est les langages interprétés. Un langage interprété signifie que le code est interprété et exécuté ligne par ligne via un interpréteur, et qu'il s'exécute directement sur l'ordinateur, et que le processus de traduction doit être retraduit à chaque fois qu'il est exécuté. Les avantages des langages interprétés sont une efficacité de développement élevée et un débogage de code facile, mais la vitesse d'exécution est relativement lente. Les langages interprétés courants incluent Python, Java, Ruby, etc.
Connaissant le processus d'exécution de la machine physique, parlons maintenant de la machine virtuelle.
Les machines virtuelles fournissent généralement un environnement informatique virtuel en simulant différents périphériques matériels. Les périphériques matériels pouvant être simulés par différentes machines virtuelles sont différents, mais incluent généralement le processeur, la mémoire, le disque dur, l'interface réseau, etc.
Prenons l'exemple de la machine virtuelle Ethereum (EVM).EVM est une machine virtuelle basée sur une pile qui est utilisée pour exécuter des contrats intelligents Ethereum. EVM fournit un environnement informatique virtuel en simulant des périphériques matériels tels que le processeur, la mémoire, le stockage et la pile.
Plus précisément, l'EVM est une machine virtuelle basée sur une pile qui utilise une pile pour stocker des données et exécuter des instructions. Le jeu d'instructions de l'EVM comprend divers opcodes, tels que des opérations arithmétiques, des opérations logiques, des opérations de stockage, des opérations de saut, etc. Ces instructions peuvent être exécutées sur la pile de l'EVM pour terminer l'exécution de contrats intelligents.
La mémoire et le stockage émulés par l'EVM sont des dispositifs utilisés pour stocker l'état et les données des contrats intelligents. L'EVM traite la mémoire et le stockage comme deux zones distinctes et peut accéder à l'état et aux données des contrats intelligents en lisant et en écrivant dans la mémoire et le stockage.
La pile émulée par l'EVM est utilisée pour stocker les opérandes et les résultats des instructions. La plupart des instructions du jeu d'instructions de l'EVM sont basées sur la pile, lisant les opérandes de la pile et repoussant les résultats sur la pile.
En bref, EVM fournit un environnement informatique virtuel en simulant des périphériques matériels tels que le processeur, la mémoire, le stockage et la pile, qui peuvent exécuter les instructions des contrats intelligents et stocker l'état et les données des contrats intelligents. En fonctionnement réel, l'EVM chargera le bytecode du contrat intelligent en mémoire et exécutera la logique du contrat intelligent en exécutant le jeu d'instructions. Ce qu'EVM remplace en fait, c'est la partie système d'exploitation + matériel dans la figure ci-dessus.
Le processus de conception d'EVM est évidemment bottom-up.D'abord, l'environnement matériel simulé (pile, mémoire) est finalisé, puis un ensemble d'instructions d'assemblage (Opcode) et de bytecode (Bytecode) sont conçus en fonction de l'environnement correspondant. . Bien que le jeu d'instructions d'assemblage soit destiné à être lu par les gens, il implique beaucoup de connaissances de bas niveau, a des exigences élevées pour les développeurs et est lourd à développer. Par conséquent, un langage de haut niveau est nécessaire pour protéger les langages de bas niveau obscurs et encombrants. appels et offrent aux développeurs une meilleure expérience. En raison de la conception personnalisée du jeu d'instructions d'assemblage d'EVM, il est difficile d'utiliser directement les langages de haut niveau traditionnels et de simplement recréer un nouveau langage de haut niveau à adapter à la machine virtuelle. La communauté Ethereum a conçu deux langages compilés de haut niveau - Solidity et Vyper - pour l'efficacité de l'exécution EVM. La solidité n'a pas besoin d'être soulignée, Vyper est un langage EVM de haut niveau conçu par Vitalik après avoir amélioré certains des défauts de Solidity, mais il n'a pas été largement adopté dans la communauté, il disparaît donc progressivement de la scène de l'histoire.
Qu'est-ce que zkEVM
Pour le dire simplement, zkEVM est un EVM qui utilise la technologie de preuve à connaissance zéro/preuve de validité, de sorte que le processus d'exécution de l'EVM peut être vérifié plus efficacement et à moindre coût grâce à une preuve à connaissance zéro/preuve de validité sans exiger que tous les vérificateurs portent le processus d'exécution de l'EVM.
Il existe de nombreux produits zkEVM sur le marché, et la piste est chaude. Les principaux acteurs sont Starknet, zkSync, Scroll, Taiko, Linea, Polygon zkEVM (anciennement Polygon Hermez), etc., qui sont divisés en 5 catégories (1, 2 , 2.5, 3, 4) par vitalik . Le contenu spécifique peut être consulté sur le blog de Vitalik.
Pourquoi zkEVM est nécessaire
Cette question doit être examinée sous deux angles.
Les tentatives initiales de zk Rollup ne peuvent réaliser que des fonctions de transfert et de transaction relativement simples, telles que zkSync Lite, Loopring, etc. Mais une fois que la mer était devenue trop difficile, les gens utilisaient l'EVM complet de Turing sur Ethereum.Lorsqu'il était impossible de créer diverses applications par programmation, les gens ont commencé à faire appel à des machines virtuelles sur L2. La nécessité de rédiger des contrats intelligents en est une.
Étant donné que certaines conceptions de l'EVM ne permettent pas de générer une preuve de connaissance/validité sans connaissance, certains joueurs choisissent d'utiliser un jeu d'instructions compatible avec la preuve de connaissance/validité sans connaissance au niveau inférieur, comme l'assemblage du Caire de Starknet et celui de zkSync. Instruction de zinc. Mais en même temps, tout le monde ne veut pas abandonner l'énorme écologie des utilisateurs d'EVM, ils choisissent donc d'être compatibles avec EVM sur la couche supérieure, qui est de type 3 et 4 zkEVM. Certains joueurs insistent toujours sur le jeu d'instructions EVM traditionnel Opcode et se concentrent sur la génération de preuves plus efficaces pour Opcode, qui sont de type 1 et de type 2 zkEVM. L'énorme écologie de l'EVM est divisée en deux.
Kakarot : Une machine virtuelle sur une machine virtuelle ?
Pourquoi une autre machine virtuelle peut-elle être créée sur la machine virtuelle ? Cette chose est courante pour les praticiens de l'informatique, mais elle n'est peut-être pas si évidente pour les utilisateurs qui ne comprennent pas les ordinateurs. En fait, c'est facile à comprendre. C'est comme des blocs de construction. Tant que la couche inférieure est suffisamment solide (avec un environnement d'exécution Turing-complet), les blocs de construction peuvent être empilés sur la couche supérieure sans limite. Mais quel que soit le nombre de couches construites, l'exécution finale doit toujours être gérée par le matériel physique de niveau le plus bas, donc l'augmentation du nombre de couches entraînera une diminution de l'efficacité. Dans le même temps, en raison des différentes conceptions des différents blocs de construction (différentes conceptions de machines virtuelles), à mesure que les blocs de construction sont construits de plus en plus haut, la possibilité que les blocs de construction s'effondrent (erreurs d'exécution) est plus grande, ce qui nécessite un niveau plus élevé d'assistance technique.
Kakarot est un EVM implémenté en langage Cairo sur Starknet. Il utilise des contrats intelligents Cairo pour simuler la pile, la mémoire, l'exécution, etc. dans l'EVM. Relativement parlant, il n'est pas difficile d'implémenter EVM.En plus de l'EVM écrit en Golang dans Go-Ethereum, qui a le taux d'utilisation le plus élevé, il existe également des EVM écrits en Python, Java, Java et Rust.
La difficulté technique de Kakarot zkEVM est que le protocole existe sous forme de contrat sur la chaîne Starknet, ce qui entraîne deux problèmes clés.
Le protocole kakarot se compose de cinq composants principaux (quatre sont écrits dans le document GitHub, EOA n'est pas inclus, cet article a été ajusté pour la commodité des lecteurs) :
Selon les commentaires du PDG de kakarot, Elias Tazartes, dans la dernière version de l'équipe, la conception de Account Resister a été abandonnée et, à la place, un mappage d'une adresse Starknet de 31 octets à une adresse EVM de 20 bits a été utilisé directement pour enregistrer la relation correspondante. . À l'avenir, pour améliorer l'interopérabilité et permettre aux contrats Starknet d'enregistrer leurs propres adresses EVM, la conception du registre des comptes pourra être réutilisée.
Compatible avec EVM sur Starknet : Quelle est la différence entre Warp et kakarot
Selon le type zkEVM défini par Vitalik, Warp appartient au Type-4, tandis que kakarot appartient actuellement au Type-2.5.
Warp est un traducteur qui convertit le code Solidity en code Cairo. La raison pour laquelle on ne l'appelle pas un compilateur est probablement que la sortie Cairo est toujours un langage de haut niveau. Grâce à Warp, les développeurs de Solidity peuvent conserver le statut de développement d'origine sans avoir à apprendre le nouveau langage Cairo. Pour de nombreuses parties du projet, Warp abaisse le seuil d'entrée dans l'écosystème Starknet et n'a pas besoin d'utiliser Cairo pour réécrire une grande quantité de code d'ingénierie.
Bien que l'idée de traduction soit simple, la compatibilité est également la pire. Certains codes Solidity ne peuvent pas être bien traduits au Caire. La logique de code impliquant le système de compte, l'algorithme cryptographique, etc. doit modifier le code source pour terminer la migration. Les fonctionnalités spécifiques non prises en charge peuvent être consultées dans la documentation Warp. Par exemple, de nombreux projets distingueront la logique d'exécution des comptes EOA et des comptes contractuels, mais tous les comptes dans Starknet sont des comptes contractuels, et cette partie du code doit être modifiée avant la traduction.
Warp est compatible au niveau du langage de haut niveau et kakarot est compatible au niveau EVM.
La réécriture complète d'EVM et l'implémentation un par un d'Opcode et de la pré-compilation permettent à kakarot d'avoir une compatibilité native plus élevée. Après tout, l'exécution dans la même machine virtuelle (EVM) est toujours plus compatible que l'exécution dans une autre machine virtuelle (Cairo VM). Le registre des comptes et le registre Blockhash protègent intelligemment les différences entre les différents systèmes et minimisent les frictions liées à la migration des utilisateurs.
Équipe Kakarot
Merci à l'équipe de kakarot pour leurs précieux commentaires sur cet article, en particulier à Elias Tazartes. Merci Monsieur!