web3.py로 스마트 계약 상호작용 시작하기
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

스마트 계약과 web3.py로의 첫 번째 상호작용

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

- 초보 블록체인 개발자web3.py 사용자

- Ethereum 기반 dApp 개발을 학습하고자 하는 자

- 로컬 환경에서 스마트 계약 테스트를 수행하는 개발자

- 난이도: 중간 (Python 기초 및 Ethereum 개념 필요)

핵심 요약

  • web3.py를 사용하여 스마트 계약과 상호작용하기 위해 계약 주소ABI(Application Binary Interface)가 필수적이다.
  • Ganache를 통해 로컬 개발 환경을 구축함으로써 테스트 네트워크의 토큰을 사용하지 않고 실시간으로 계약을 테스트할 수 있다.
  • Solidity로 작성된 스마트 계약Remix IDE를 통해 컴파일하고, ABI를 추출하여 Python 스크립트에 적용하는 과정이 핵심이다.

섹션별 세부 요약

1. 스마트 계약 개요 및 web3.py 활용 방법

  • 스마트 계약은 블록체인에 저장된 자동 실행 프로그램으로, public 상태 변수view 함수로 데이터를 제공한다.
  • getCount() 함수는 상태를 읽기만 하며, 가스 비용이 발생하지 않는다.
  • ABI는 스마트 계약의 함수와 이벤트를 설명하는 JSON 형식으로, web3.py가 계약과 상호작용할 수 있도록 한다.

2. 로컬 개발 환경 설정 (Ganache)

  • Ganache Desktop을 실행하여 로컬 테스트 네트워크를 생성하고, 무제한의 테스트 이더를 제공받는다.
  • Remix IDE에 스마트 계약 코드(Counter.sol)를 입력하고, Solidity 컴파일러로 컴파일하여 ABI를 추출한다.
  • EVM 버전을 'Paris'로 설정해야 Ganache와 호환성을 유지한다.

3. 스마트 계약 배포 및 Python 스크립트 작성

  • Remix IDE에서 Ganache RPC URL을 입력하여 환경 설정을 완료한 후, Deploy 버튼을 클릭해 계약을 배포한다.
  • app.py 스크립트에 계약 주소ABI를 입력하고, web3.py를 사용해 getCount() 함수와 공개 변수 count를 통해 데이터를 읽는다.
  • 오류 처리를 위해 try-except 블록을 사용하고, ABI 및 주소의 정확성을 점검해야 한다.

결론

  • Ganache를 사용하여 로컬 테스트를 수행할 때, ABI와 계약 주소의 정확성을 반드시 확인해야 한다.
  • web3.py 스크립트contract.functions.getCount().call()과 같은 명시적인 함수 호출공개 변수 접근을 통해 스마트 계약 데이터를 읽는다.
  • EVM 버전과 Ganache의 Hardfork 설정 일치가 성공적인 배포 및 실행의 핵심이다.