Maison > Article > développement back-end > Introduction à l'implémentation de Py-EVM par Python Ethereum Virtual Machine
Cet article vous présente une introduction à l'implémentation de Py-EVM sur la machine virtuelle Python Ethereum. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Py-EVM est une nouvelle implémentation de la machine virtuelle Ethereum écrite en Python. Actuellement 695 étoiles sur github, il est en cours de développement actif, mais progresse rapidement grâce à la suite de tests fournie par Ethereum/test. Nous sommes reconnaissants que Vitalik et le code PyEthereum existant aient progressé rapidement, car de nombreuses décisions de conception ont été inspirées et même portées directement à partir de la base de code PyEthereum.
Py-EVM vise à devenir à terme l'implémentation Python de facto d'EVM, offrant un large éventail de cas d'utilisation pour les chaînes publiques et privées. Le développement se concentrera sur la création d'un EVM avec une API bien définie, une documentation conviviale et facile à comprendre, qui peut fonctionner comme un nœud de réseau principal entièrement fonctionnel.
En particulier, Py-EVM vise à :
Fournir un exemple d'implémentation de l'EVM en Python, l'un des langages les plus utilisés et les plus compris.
Fournit aux clients une API de bas niveau pour créer des nœuds complets ou légers.
Facile à comprendre et à modifier.
Très flexible pour prendre en charge la recherche ainsi que des cas d'utilisation alternatifs tels que les blockchains privées.
Bien que Py-EVM fournisse l'API de bas niveau d'EVM, il n'est pas conçu pour implémenter directement des nœuds complets ou des nœuds légers.
Nous fournissons une implémentation de base d'un nœud complet appelé Trinity basé sur Py-EVM.
Il pourrait y avoir des clients alternatifs basés sur Py-EVM à l'avenir.
Étape 1 : version alpha
Le plan commence par une version MVP de niveau alpha adaptée aux tests. Nous rechercherons des utilisateurs précoces pour nous faire part de leurs commentaires sur notre architecture et nos choix d'API, ainsi que de leurs commentaires généraux et de la découverte de bugs.
Py-EVM s'appuie sur un sous-module de test commun pour tous les clients, vous devez donc cloner le dépôt avec l'indicateur --recursive. Par exemple :
git clone --recursive git@github.com:ethereum/py-evm.git
Py-EVM nécessite Python 3. Généralement, la meilleure façon de garantir un environnement Python 3 propre est d'utiliser un virtualenv, par exemple :
# once: $ virtualenv -p python3 venv # each session: $ . venv/bin/activate
puis d'installer les packages python requis via :
pip install -e .[dev]
Les tests peuvent être exécutés en utilisant :
pytest
Ou vous pouvez installer tox
pour exécuter la suite de tests complète.
Pandoc est nécessaire pour convertir le README markdown dans le format correct pour un rendu correct sur pypi.
Pour les systèmes de type Debian :
apt install pandoc
Sous OSX :
brew install pandoc
Pour publier une nouvelle version :
bumpversion $$VERSION_PART_TO_BUMP$$ git push && git push --tags make release
Allez sur Nouvelle image Docker :
make create-docker-image version=<version>
Par défaut, cela créera une nouvelle image avec deux balises pointant vers elle :
ethereum/trinity:
ethereum/trinity:latest : (latest jusqu'à ce qu'il soit remplacé par le futur "latest")
Ensuite, appuyez sur Docker Hub.
docker push ethereum/trinity:<version> # the following may be left out if we were pushing a patch for an older version docker push ethereum/trinity:latest
Comment utiliser bumpversion
Le format de version de ce dépôt est {major}. {minor}. {patch} signifie stable, {patch}. {minor }.{patch}-{stage}.{devnum} signifie instable (l'étape peut être alpha ou bêta)).
Pour publier la version suivante, utilisez bumpversion et spécifiez la partie à ajuster, comme bumpversion mineur ou bumpversion devnum.
Si vous êtes en version bêta, l'étape bumpversion passera à la version stable.
Pour émettre une version instable lorsque la version actuelle est stable, spécifiez explicitement la nouvelle version, par exemple bumpversion --new-version 4.0.0-alpha.1 devnum
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!