Einführung in die Implementierung von Py-EVM durch Python Ethereum Virtual Machine

不言
Freigeben: 2018-10-18 17:22:39
nach vorne
2609 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine Einführung in die Implementierung von Py-EVM auf der Python Ethereum Virtual Machine. Ich hoffe, dass er Ihnen als Referenz dienen wird.

Py-EVM ist eine neue Implementierung der in Python geschriebenen Ethereum Virtual Machine. Derzeit 695 Sterne auf Github, befindet sich in der aktiven Entwicklung, wird aber durch die von Ethereum/test bereitgestellte Testsuite schnell weiterentwickelt. Wir sind dankbar, dass Vitalik und der vorhandene PyEthereum-Code schnelle Fortschritte machen konnten, da viele Designentscheidungen direkt von der PyEthereum-Codebasis inspiriert und sogar portiert wurden.

Py-EVM soll letztendlich die De-facto-Python-Implementierung von EVM sein und eine breite Palette von Anwendungsfällen für öffentliche und private Ketten bieten. Die Entwicklung wird sich auf die Erstellung einer EVM mit einer klar definierten API sowie einer benutzerfreundlichen und leicht verständlichen Dokumentation konzentrieren, die als voll funktionsfähiger Mainnet-Knoten ausgeführt werden kann.

Py-EVM zielt insbesondere darauf ab:

  • Eine Beispielimplementierung des EVM in Python bereitzustellen, einer der am weitesten verbreiteten und verständlichsten Sprachen.

  • Bietet eine Low-Level-API für Kunden zum Erstellen vollständiger oder leichter Knoten.

  • Leicht zu verstehen und zu ändern.

  • Sehr flexibel zur Unterstützung der Forschung sowie alternativer Anwendungsfälle wie private Blockchains.

Trinity

Während Py-EVM die Low-Level-API von EVM bereitstellt, ist es nicht für die direkte Implementierung vollständiger Knoten oder Light-Knoten konzipiert.

Wir bieten eine grundlegende Implementierung eines vollständigen Knotens namens Trinity basierend auf Py-EVM.

Möglicherweise wird es in Zukunft alternative Clients auf Basis von Py-EVM geben.

Schritt 1: Alpha-Release

Der Plan beginnt mit einem MVP-Release auf Alpha-Ebene, das für Testzwecke geeignet ist. Wir sind auf der Suche nach Early Adopters, die Feedback zu unserer Architektur und unseren API-Auswahlen sowie allgemeines Feedback und die Entdeckung von Fehlern geben.

Entwicklung

Py-EVM basiert auf einem gemeinsamen Test-Submodul für alle Clients, daher müssen Sie das Repo mit der Flagge --recursive klonen. Zum Beispiel:

git clone --recursive git@github.com:ethereum/py-evm.git
Nach dem Login kopieren

Py-EVM erfordert Python 3. Im Allgemeinen besteht der beste Weg, um eine saubere Python 3-Umgebung zu gewährleisten, darin, eine virtuelle Umgebung zu verwenden, zum Beispiel:

# once:
$ virtualenv -p python3 venv

# each session:
$ . venv/bin/activate
Nach dem Login kopieren

und dann die erforderlichen Python-Pakete zu installieren über:

pip install -e .[dev]
Nach dem Login kopieren

Tests ausführen

Tests können ausgeführt werden mit:

pytest
Nach dem Login kopieren

oder Sie können tox installieren, um die vollständige Testsuite auszuführen.

Veröffentlichung

Pandoc ist erforderlich, um die Markdown-README-Datei in das richtige Format für die ordnungsgemäße Darstellung auf Pypi zu konvertieren.

Für Debian-ähnliche Systeme:

apt install pandoc
Nach dem Login kopieren

Unter OSX:

brew install pandoc
Nach dem Login kopieren

So veröffentlichen Sie eine neue Version:

bumpversion $$VERSION_PART_TO_BUMP$$
git push && git push --tags
make release
Nach dem Login kopieren

So erstellen Sie ein neues Docker-Image:

make create-docker-image version=<version>
Nach dem Login kopieren

Standardmäßig wird dadurch ein neues Bild mit zwei darauf verweisenden Tags erstellt:

ethereum/trinity:: (Version anzeigen)

ethereum /trinity: spätestens: (neueste, bis mit zukünftigem „neuesten“ überschrieben wird)

Dann an den Docker-Hub übertragen.

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
Nach dem Login kopieren

So verwenden Sie Bumpversion

Das Versionsformat dieses Repos ist {major}.{minor}.{patch} bedeutet stabil, {patch}.{minor }. {patch}-{stage}.{devnum} bedeutet instabil (Stufe kann Alpha oder Beta sein)).

Um die nächste Version zu veröffentlichen, verwenden Sie Bumpversion und geben Sie die anzupassenden Teile an, z. B. Bumpversion Minor oder Bumpversion Devnum.

Wenn Sie sich in der Beta-Version befinden, wird die Bumpversion-Stufe auf die stabile Version umgestellt.

Um eine instabile Version auszugeben, wenn die aktuelle Version stabil ist, geben Sie die neue Version explizit an, z. B. Bumpversion --new-version 4.0.0-alpha.1 devnum

Das obige ist der detaillierte Inhalt vonEinführung in die Implementierung von Py-EVM durch Python Ethereum Virtual Machine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage