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

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

不言
不言avant
2018-10-18 17:22:392626parcourir

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

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]

Exécutez le tests

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

pytest

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

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:: (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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer