계약 상호 작용
브라우니에는 프로젝트를 개발하는 동안 사용할 수 있는 세 가지 주요 구성 요소가 있습니다:
- 콘솔은 빠른 테스트 및 디버깅에 유용합니다.
- 스크립트를 사용하면 일반 작업을 자동화하고 배포를 처리할 수 있습니다.
- 테스트는 계약이 의도한대로 실행되는지 확인하는 데 도움이됩니다.
콘솔 사용
콘솔은 비 로컬 체인에 배포 된 계약과 직접 상호 작용하거나 개발하는 동안 빠른 테스트를 수행 할 때 유용합니다. 브라우니의 기능에 익숙해지는 좋은 시작점입니다.
콘솔은 일반 Python 인터프리터와 매우 유사합니다. 프로젝트 디렉토리 내에서 다음을 입력하여 로드하세요:
$ brownie console
브라우니는 컨트랙트를 컴파일하고 로컬 테스트 환경에 연결하거나 연결하여 명령 프롬프트를 제공합니다. 이제 여기서 브라우니 API가 제공하는 모든 기능을 활용하여 네트워크와 상호작용할 수 있습니다.
스크립트 작성
콘솔 외에도 빠른 테스트 또는 일반적인 프로세스 자동화를 위해 스크립트를 작성할 수 있습니다. 스크립팅은 비 로컬 네트워크로 계약을 배포할 때도 유용합니다.
스크립트는 프로젝트 내의 scripts/
디렉토리에 저장됩니다.
스크립트 레이아웃
Brownie 스크립트는 표준 Python 구문을 사용하지만 실행하려면 몇 가지 사항을 염두에 두어야 합니다.
Import 문
Brownie의 모든 객체가 이미 사용 가능한 콘솔과 달리 스크립트에서는 먼저 객체를 가져와야 합니다. 이를 위한 가장 간단한 방법은 와일드카드 import를 사용하는 것입니다.
from brownie import *
이는 인스턴스화된 프로젝트 클래스를 로컬 네임스페이스로 가져와 콘솔을 사용하는 것과 똑같은 방식으로 Brownie API에 액세스할 수 있게 합니다.
대신 스크립트에서 정확히 필요한 클래스와 메서드만 가져올 수도 있습니다. 예를 들어:
from brownie import Token, accounts
이렇게 하면 accounts
및 Token
컨테이너를 사용하여 계약을 배포할 수 있습니다.
함수
각 스크립트에는 원하는 만큼 많은 함수를 포함할 수 있습니다. 스크립트를 실행할 때 함수 이름이 지정되지 않으면 brownie는 main
함수를 실행하려고 시도합니다.
스크립트 실행
명령줄에서 스크립트를 실행하려면:
$ brownie run <script> [function]
콘솔에서는 run
메서드를 사용할 수 있습니다.
>>> run('token') # scripts/token.py의 main() 함수를 실행합니다.
스크립트를 직접 가져와 호출할 수도 있습니다.
>>> from scripts.token import main
>>> main()
예제
다음은 contracts/Token.sol
에서 Token
계약을 web3.eth.accounts[0]
을 사용하여 배포하는 데 사용되는 token
프로젝트의 간단한 예제 스크립트입니다.
from brownie import Token, accounts
def main():
Token.deploy("Test Token", "TST", 18, 1e23, {'from': accounts[0]})
다음은 동일한 스크립트를 확장한 것으로, 토큰 배포를 위한 간단한 메서드를 포함합니다.
from brownie import Token, accounts
def main():
token = Token.deploy("Test Token", "TST", 18, 1e23, {'from': accounts[0]})
return token
def distribute_tokens(sender=accounts[0], receiver_list=accounts[1:]):
token = main()
for receiver in receiver_list:
token.transfer(receiver, 1e18, {'from': sender})
테스트 작성
Brownie는 pytest
및 hypothesis
를 활용하여 계약을 테스트하기 위한 견고한 프레임워크를 제공합니다.
테스트 스크립트는 프로젝트의 tests/
디렉터리에 저장됩니다. 전체 테스트 스위트를 실행하려면:
$ brownie test
Brownie에서 테스트 작성에 대해 자세히 알아보려면 Brownie Pytest 문서를 참조하십시오.
'블록체인 (Block Chain) > 이더리움' 카테고리의 다른 글
[브라우니 (Brownie)] 8. 브라우니 GUI (0) | 2023.06.16 |
---|---|
[브라우니 (Brownie)] 7. 브라우니 패키지 관리자 (0) | 2023.06.16 |
[브라우니 (Brownie)] 5. 컨트랙트 컴파일하기 (0) | 2023.06.16 |
[브라우니 (Brownie)] 4. 프로젝트 구조 (0) | 2023.06.16 |
[브라우니 (Brownie)] 3. 새 프로젝트 만들기 (0) | 2023.06.16 |