Maison > développement back-end > Tutoriel Python > Introduction à l'implémentation de Py-EVM par Python Ethereum Virtual Machine

Introduction à l'implémentation de Py-EVM par Python Ethereum Virtual Machine

不言
Libérer: 2018-10-18 17:22:39
avant
2674 Les gens l'ont consulté

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.

Trinity

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.

Développement

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
Copier après la connexion

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
Copier après la connexion

puis d'installer les packages python requis via :

pip install -e .[dev]
Copier après la connexion

Exécutez le tests

Les tests peuvent être exécutés en utilisant :

pytest
Copier après la connexion

Ou vous pouvez installer tox pour exécuter la suite de tests complète.

Publication

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
Copier après la connexion

Sous OSX :

brew install pandoc
Copier après la connexion

Pour publier une nouvelle version :

bumpversion $$VERSION_PART_TO_BUMP$$
git push && git push --tags
make release
Copier après la connexion

Allez sur Nouvelle image Docker :

make create-docker-image version=<version>
Copier après la connexion

Par défaut, cela créera une nouvelle image avec deux balises pointant vers elle :

ethereum/trinity:: (afficher la version)

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
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal