Heim  >  Artikel  >  Backend-Entwicklung  >  Python Web3-Entwicklung: Bereitstellung intelligenter Verträge mit Brownie

Python Web3-Entwicklung: Bereitstellung intelligenter Verträge mit Brownie

WBOY
WBOYnach vorne
2023-05-19 17:34:061773Durchsuche

Python Web3 开发:用 Brownie 部署智能合约

Python ist eine der vielseitigsten Programmiersprachen: Von Forschern, die ihre Testmodelle ausführen, bis hin zu Entwicklern, die es in anspruchsvollen Produktionsumgebungen verwenden, gibt es Anwendungsfälle in fast allen möglichen Technologiebereichen. Im heutigen Leitfaden werfen wir einen Blick auf Brownie, ein Python-basiertes Tool zum Schreiben und Bereitstellen von Smart Contracts.

Vorbereitung

  • Python3 installieren
  • Ethereum-Knoten
  • Texteditor
  • Terminal

Was ist Brownie?

Die intelligente Vertragsentwicklung wird hauptsächlich von JavaScript-basierten Bibliotheken wie web3.js, ethers.js, Truffle und Hardhat dominiert. Python ist eine universelle, häufig genutzte Sprache, die auch für die Smart Contract-/Web3-Entwicklung verwendet werden kann; web3.py ist eine überzeugende Python-Bibliothek, die den Web3-Anforderungen gerecht wird. Das Brownie-Framework basiert auf web3.py.

Brownie bezieht sich ursprünglich auf ein kleines rechteckiges Bonbon, aber der Brownie, über den wir heute sprechen, ist ein Python-basiertes Framework zum Entwickeln und Testen intelligenter Verträge. Brownie unterstützt sowohl Solidity- als auch Vyper-Verträge und kann sogar Vertragstests über Pytest bereitstellen.

Um den Prozess des Schreibens und Bereitstellens intelligenter Verträge mit Brownie zu demonstrieren, verwenden wir Brownie-Mixes, ein Vorlagenprojekt. Konkret werden wir einen Token-Mix verwenden, der eine Vorlage für die ERC-20-Implementierung darstellt.

Abhängigkeitspakete installieren

Brownie basiert auf Python3, daher müssen wir es installieren, damit es mit Brownie funktioniert. Überprüfen Sie, ob Python3 auf unserem System installiert ist. Geben Sie dazu Folgendes in Ihr Terminal/cmd ein.

python3 -V

Dieser Befehl gibt die installierte Version von Python3 zurück. Wenn es nicht installiert ist, laden Sie es bitte von der offiziellen Python-Website herunter und installieren Sie es.

Lassen Sie uns vor der Installation von Brownie ein Projektverzeichnis erstellen und das Projektverzeichnis zu unserem aktuellen Arbeitsverzeichnis machen.

mkdir brownieDemo
cd brownieDemo

Da Sie nun Python3 auf Ihrem System installiert haben, installieren wir Brownie mit pip – dem Paketmanager von Python. pip ähnelt dem, was npm für JavaScript macht. Geben Sie Folgendes in Ihr Terminal/cmd ein:

pip3 install eth-brownie
## If the install failS, use the following command for better luck.
sudo pip3 install eth-brownie

Um zu überprüfen, ob Brownie korrekt installiert ist, geben Sie brownie in Ihr Terminal/cmd ein und es sollte die folgende Ausgabe ergeben:

Python Web3 开发:用 Brownie 部署智能合约

Um den Token-Mix zu erhalten, können Sie Geben Sie Folgendes in Ihr Terminal/cmd ein:

brownie bake token

Dadurch wird ein neues Verzeichnis token/ in unserem BrownieDemo-Verzeichnis erstellt.

Dateistruktur

Lassen Sie uns zunächst in das Token-Verzeichnis wechseln.

cd token

Öffnen Sie nun das Token-Verzeichnis in Ihrem Texteditor. Im Ordner „Verträge/“ finden Sie Token.sol, unseren Hauptvertrag. Sie können Ihren eigenen Vertrag schreiben oder diesen ändern. Im Ordner „scripts/“ finden Sie das Skript „token.py“. Dieses Skript wird zur Bereitstellung des Vertrags verwendet und muss entsprechend dem Vertrag geändert werden.

Python Web3 开发:用 Brownie 部署智能合约

Bei diesem Vertrag handelt es sich um einen ERC-20-Vertrag.

Starten Sie unseren Ethereum-Knoten

Wir werden unsere Verträge im Ropsten-Testnetz bereitstellen, anstatt unseren eigenen Knoten zu betreiben. Bitte stellen Sie sicher, dass Sie beim Bezahlen Ethereum als Kette und Ropsten als Netzwerk auswählen.

Python Web3 开发:用 Brownie 部署智能合约

HTTP-URL speichern. Wir werden es im nächsten Schritt brauchen.

Netzwerk- und Kontoeinstellungen

Wir müssen einen kostenlosen QuickNode-Knoten in Brownie einrichten. Geben Sie dazu Folgendes in Ihr Terminal/cmd ein.

brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3

Ersetzen Sie YOUR_QUICKNODE_URL durch die RopstenURL, die wir im vorherigen Schritt erhalten haben.

Im obigen Befehl ist Ethereum der Name der Umgebung und ropstenquicknode der benutzerdefinierte Name des Netzwerks. Sie können Ihrem benutzerdefinierten Netzwerk einen beliebigen Namen geben.

Als nächstes müssen wir hier mit Brownie eine neue Wallet erstellen. Geben Sie dazu Folgendes in Ihr Terminal/cmd ein. Sie werden aufgefordert, ein Passwort für Ihr Konto festzulegen.

brownie accounts generate testac

Dadurch werden ein Konto und ein einprägsamer Satz erstellt und offline gespeichert. Der Name testac ist der Name unseres Kontos. Sie können einen beliebigen Namen wählen.

Python Web3 开发:用 Brownie 部署智能合约

Kopieren Sie die Kontoadresse, damit wir etwas ETH zum Testen erhalten können, das für die Bereitstellung unseres Vertrags benötigt wird.

获取ETH测试币

由于我们的合约将被部署在Ropsten测试网,我们需要一些Ropsten测试ETH来支付gas费。前往Ropsten水龙头,将您的地址粘贴在该区域,然后点击 "Send me test Ether"。

Python Web3 开发:用 Brownie 部署智能合约

部署我们的合约

在部署合约之前,我们需要用以下方法编译它。

brownie compile

Python Web3 开发:用 Brownie 部署智能合约

现在在你的文本编辑器中打开scripts/token.py,并做如下修改。

#!/usr/bin/python3
from brownie import Token, accounts
def main():
acct = accounts.load('testac')
return Token.deploy("Test Token", "TST", 18, 1e21, {'from': acct})

第6行。我们添加这一行是为了导入我们先前创建的testac账户,并将其存储在acct变量中。

第7行。在这一行,我们编辑了 'From':部分,以获取我们的acct变量。

最后,我们将使用脚本(这里是 scripts/token.py)部署我们的合约。

brownie run token.py --network ropstenquicknode

在上面的命令中,ropstenquicknode是我们之前创建的自定义网络的名称。提示将要求你提供我们之前在建立账户时设置的密码。运行上述命令后,你必须得到交易哈希值,Brownie将等待交易得到确认。一旦交易被确认,它将返回我们的合约在Ropsten测试网上部署的地址。

Python Web3 开发:用 Brownie 部署智能合约

你可以在Ropsten etherscan复制粘贴合约地址,查看已部署的合约。

总结

我们学会了如何导入一个Brownie-mix,添加一个自定义网络,创建一个账户,以及编译和部署一个合约,整个过程中我们都使用了Brownie框架。

Das obige ist der detaillierte Inhalt vonPython Web3-Entwicklung: Bereitstellung intelligenter Verträge mit Brownie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen