>백엔드 개발 >파이썬 튜토리얼 >Python Web3 개발: Brownie를 사용하여 스마트 계약 배포

Python Web3 개발: Brownie를 사용하여 스마트 계약 배포

WBOY
WBOY앞으로
2023-05-19 17:34:061916검색

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

Python은 가장 다재다능한 프로그래밍 언어 중 하나입니다. 테스트 모델을 실행하는 연구원부터 대량 생산 환경에서 이를 사용하는 개발자에 이르기까지 거의 모든 기술 영역에 사용 사례가 있습니다. 오늘 가이드에서는 스마트 계약을 작성하고 배포하기 위한 Python 기반 도구인 Brownie를 살펴보겠습니다.

준비

  • Python3 설치
  • 이더리움 노드
  • 텍스트 편집기
  • 터미널

브라우니란 무엇인가요?

스마트 계약 개발은 주로 web3.js, ethers.js, Truffle 및 Hardhat과 같은 JavaScript 기반 라이브러리에 의해 지배됩니다. Python은 스마트 계약/web3 개발에도 사용할 수 있는 범용 언어이며 web3.py는 web3 요구 사항을 충족하는 강력한 Python 라이브러리입니다. Brownie 프레임워크는 web3.py 위에 구축되었습니다.

브라우니는 원래 작은 직사각형 사탕을 의미하지만 오늘 우리가 이야기하는 브라우니는 스마트 계약을 개발하고 테스트하기 위한 Python 기반 프레임워크입니다. Brownie는 Solidity와 Vyper 계약을 모두 지원하며 pytest를 통해 계약 테스트도 제공할 수 있습니다.

브라우니로 스마트 계약을 작성하고 배포하는 과정을 보여주기 위해 템플릿 프로젝트인 Brownie-mixes를 사용하겠습니다. 구체적으로 ERC-20 구현을 위한 템플릿인 토큰 믹스를 사용합니다.

종속성 패키지 설치

Brownie는 python3을 기반으로 하므로 브라우니와 함께 작동하려면 python3이 시스템에 설치되어 있는지 확인해야 합니다. 이렇게 하려면 터미널/cmd에 다음을 입력하세요.

python3 -V

이 명령은 설치된 Python3 버전을 반환합니다. 설치되어 있지 않은 경우 Python 공식 홈페이지에서 다운로드하여 설치하시기 바랍니다.

브라우니를 설치하기 전에 프로젝트 디렉터리를 만들고 프로젝트 디렉터리를 현재 작업 디렉터리로 만들어 보겠습니다.

mkdir brownieDemo
cd brownieDemo

이제 시스템에 python3이 설치되었으므로 Python의 패키지 관리자인 pip를 사용하여 브라우니를 설치해 보겠습니다. pip는 npm이 JavaScript에서 수행하는 것과 유사합니다. 터미널/cmd에 다음을 입력하세요.

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

브라우니가 올바르게 설치되었는지 확인하려면 브라우니를 터미널/cmd에 입력하면 다음과 같은 결과가 출력됩니다.

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

토큰 믹스를 얻으려면 다음을 수행하세요. 터미널/cmd에 다음을 입력하세요:

brownie bake token

이렇게 하면 brownieDemo 디렉터리 내에 새 디렉터리 token/이 생성됩니다.

파일 구조

먼저 CD를 토큰 디렉토리에 넣습니다.

cd token

이제 텍스트 편집기에서 토큰 디렉터리를 엽니다. contract/ 폴더 아래에는 당사의 주요 계약인 Token.sol이 있으며, 이를 직접 작성하거나 수정할 수 있습니다. scripts/ 폴더 아래에는 token.py 스크립트가 있습니다. 이 스크립트는 계약을 배포하는 데 사용되며 계약에 따라 수정되어야 합니다.

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

본 계약은 ERC-20 계약입니다.

이더리움 노드를 시작하세요

우리는 자체 노드를 실행하는 대신 Ropsten 테스트넷에 계약을 배포할 것입니다. 결제 시 Ethereum을 체인으로, Ropsten을 네트워크로 선택했는지 확인하세요.

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

HTTP URL을 저장하세요. 다음 단계에서 필요합니다.

네트워크 및 계정 설정

브라우니에서 QuickNode 무료 노드를 설정해야 합니다. 이렇게 하려면 터미널/cmd에 다음을 입력하세요.

brownie networks add Ethereum ropstenquicknode host=YOUR_QUICKNODE_URL chainid=3

YOUR_QUICKNODE_URL을 이전 단계에서 얻은 RopstenURL로 바꾸세요.

위 명령에서 Ethereum은 환경의 이름이고 ropstenquicknode는 네트워크의 사용자 정의 이름입니다. 사용자 정의 네트워크에 임의의 이름을 지정할 수 있습니다.

다음으로 해야 할 일은 브라우니를 사용하여 새 지갑을 만드는 것입니다. 이렇게 하려면 터미널/cmd에 다음을 입력하세요. 귀하의 계정에 대한 비밀번호를 설정하라는 메시지가 표시됩니다.

brownie accounts generate testac

이렇게 하면 계정과 기억에 남는 문구가 생성되어 오프라인에 저장됩니다. testac이라는 이름은 우리 계정의 이름입니다. 원하는 이름을 선택할 수 있습니다.

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

테스트용 ETH를 얻을 수 있도록 계정 주소를 복사하세요. 이는 계약을 배포하는 데 필요합니다.

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

위 내용은 Python Web3 개발: Brownie를 사용하여 스마트 계약 배포의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제