Maison  >  Article  >  développement back-end  >  Développement Python Web3 : déployer des contrats intelligents avec Brownie

Développement Python Web3 : déployer des contrats intelligents avec Brownie

WBOY
WBOYavant
2023-05-19 17:34:061834parcourir

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

Python est l'un des langages de programmation les plus polyvalents : des chercheurs exécutant leurs modèles de test aux développeurs qui l'utilisent dans des environnements de production lourds, il existe des cas d'utilisation dans presque tous les domaines technologiques possibles. Dans le guide d'aujourd'hui, nous examinerons Brownie, un outil basé sur Python pour rédiger et déployer des contrats intelligents.

Préparation

  • Installer Python3
  • Ethereum Node
  • Éditeur de texte
  • Terminal

Qu'est-ce que Brownie ?

Le développement de contrats intelligents est principalement dominé par les bibliothèques basées sur JavaScript telles que web3.js, ethers.js, Truffle et Hardhat. Python est un langage polyvalent et très utilisé qui peut également être utilisé pour le développement de contrats intelligents/web3 ; web3.py est une bibliothèque Python convaincante qui répond aux besoins du web3. Le framework Brownie est construit sur web3.py.

Brownie fait à l'origine référence à un petit bonbon rectangulaire, mais le Brownie dont nous parlons aujourd'hui est un framework basé sur Python pour développer et tester des contrats intelligents. Brownie prend en charge les contrats Solidity et Vyper, et peut même fournir des tests de contrat via pytest.

Pour démontrer le processus d'écriture et de déploiement de contrats intelligents avec Brownie, nous utiliserons Brownie-mixes, qui est un projet modèle. Plus précisément, nous utiliserons un mélange de jetons, qui est un modèle pour la mise en œuvre de l'ERC-20.

Installer les packages de dépendances

Brownie est construit sur python3, nous devons donc l'installer pour fonctionner avec brownie ; vérifions si python3 est installé sur notre système. Pour ce faire, entrez ce qui suit dans votre terminal/cmd.

python3 -V

Cette commande renverra la version installée de python3. S'il n'est pas installé, veuillez le télécharger et l'installer à partir du site Web officiel de Python.

Créons un répertoire de projet avant d'installer brownie et faisons du répertoire de projet notre répertoire de travail actuel.

mkdir brownieDemo
cd brownieDemo

Maintenant que python3 est installé sur votre système, installons brownie à l'aide de pip – le gestionnaire de paquets de Python. pip est similaire à ce que fait npm pour JavaScript. Tapez ce qui suit dans votre terminal/cmd :

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

Pour vérifier si Brownie est correctement installé, tapez brownie dans votre terminal/cmd et il devrait donner le résultat suivant :

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

Pour obtenir le mélange de jetons, vous pouvez entrez ce qui suit dans votre terminal/cmd :

brownie bake token

Cela créera un nouveau jeton de répertoire/ dans notre répertoire brownieDemo.

Structure des fichiers

Tout d'abord, entrons dans le répertoire des jetons.

cd token

Maintenant, ouvrez le répertoire des jetons dans votre éditeur de texte. Sous le dossier contracts/, vous trouverez Token.sol, qui est notre contrat principal, vous pouvez rédiger votre propre contrat ou le modifier. Sous le dossier scripts/, vous trouverez le script token.py ; ce script sera utilisé pour déployer le contrat et doit être modifié en fonction du contrat.

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

Ce contrat est un contrat ERC-20.

Démarrez notre nœud Ethereum

Nous déploierons nos contrats sur le testnet Ropsten plutôt que d'exécuter notre propre nœud. Veuillez vous assurer de sélectionner Ethereum comme chaîne et Ropsten comme réseau lors du paiement.

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

Enregistrez l'URL HTTP. Nous en aurons besoin à l'étape suivante.

Paramètres de réseau et de compte

Nous devons configurer un nœud gratuit QuickNode dans Brownie. Pour ce faire, entrez ce qui suit dans votre terminal/cmd.

brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3

Remplacez YOUR_QUICKNODE_URL par la RopstenURL que nous avons obtenue à l'étape précédente.

Dans la commande ci-dessus, Ethereum est le nom de l'environnement et ropstenquicknode est le nom personnalisé du réseau, vous pouvez donner n'importe quel nom à votre réseau personnalisé ;

La prochaine chose que nous devons faire ici est de créer un nouveau portefeuille en utilisant Brownie. Pour ce faire, entrez ce qui suit dans votre terminal/cmd. Il vous sera demandé de définir un mot de passe pour votre compte.

brownie accounts generate testac

Cela générera un compte et une phrase mémorable et l'enregistrera hors ligne. Le nom testac est le nom de notre compte. Vous pouvez choisir le nom de votre choix.

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

Copiez l'adresse du compte afin que nous puissions obtenir de l'ETH à des fins de test, qui seront nécessaires au déploiement de notre contrat.

获取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框架。

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