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.
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.
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
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
und dann die erforderlichen Python-Pakete zu installieren über:
pip install -e .[dev]
Tests können ausgeführt werden mit:
pytest
oder Sie können tox
installieren, um die vollständige Testsuite auszuführen.
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
Unter OSX:
brew install pandoc
So veröffentlichen Sie eine neue Version:
bumpversion $$VERSION_PART_TO_BUMP$$ git push && git push --tags make release
So erstellen Sie ein neues Docker-Image:
make create-docker-image version=<version>
Standardmäßig wird dadurch ein neues Bild mit zwei darauf verweisenden Tags erstellt:
ethereum/trinity:
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
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!