[NeoX 튜토리얼] Python으로 NeoX EVM 체인과 상호작용하기

네오 블록체인·2025년 4월 3일

NeoX

목록 보기
2/12

Python으로 NeoX 체인과 상호작용하기: 스마트 컨트랙트 입문자 가이드

블록체인의 꽃이라고 불리는 스마트 컨트랙트, 하지만 이를 직접 사용하고 연결하는 방법은 낯설게 느껴질 수 있습니다. 이 글은 Neo 블록체인의 EVM 사이드체인인 NeoX에서 Python을 활용해 스마트 컨트랙트와 상호작용하는 가장 기초적인 방법을 소개합니다. 🧪

1. NeoX란?

NeoX는 Neo 생태계에서 Solidity 기반 스마트 컨트랙트를 실행할 수 있게 해주는 EVM 호환 사이드체인입니다. 덕분에 기존 이더리움 기반의 프로젝트들도 NeoX로 쉽게 확장할 수 있고, 저렴한 가스비와 빠른 속도를 누릴 수 있습니다.

NeoX의 핵심 특징:

  • EVM 호환: Solidity 스마트 컨트랙트 그대로 배포 가능
  • 빠르고 저렴한 수수료
  • Neo 메인넷과 완벽한 브리지 연결

2. 왜 Python으로 상호작용하나요?

Python은 배우기 쉽고 간결한 문법 덕분에, 블록체인 입문자들이 빠르게 개발 환경을 익히기에 매우 적합한 언어입니다. 따라서 NeoX 체인을 처음 다루는 개발자에게는 Python + web3.py 조합이 좋은 출발점이 될 수 있습니다.

NeoX는 이더리움과 동일한 Web3 RPC 인터페이스를 제공하기 때문에, Python의 web3.py 라이브러리를 이용해 스마트 컨트랙트와 직접 통신할 수 있습니다. web3.py는 이더리움 계열 블록체인과 상호작용하기 위한 Python용 라이브러리로, 트랜잭션 생성, 컨트랙트 함수 호출, 블록 및 이벤트 조회 등 다양한 기능을 제공합니다.


3. 실습 목표: 유동성 풀 리저브 조회

이번 실습에서는 NeoX의 DEX(탈중앙 거래소)인 ForTheWinSwap에서 NDMEME-WGAS 페어의 유동성 리저브 정보를 Python을 통해 조회합니다.

4. 준비하기

필수 요소

  • NeoX의 메인넷 RPC 주소: https://mainnet-1.rpc.banelabs.org/
  • FTW Swap 컨트랙트 주소: 0xE1e1cC68841D1fF13bdd8C8fB36E6f91995788f4
  • 조회 대상 토큰:
    • NDMEME: 0xE816deE05cf6D0F2a57EB4C489241D8326B5d106
    • WGAS: 0xdE41591ED1f8ED1484aC2CD8ca0876428de60EfF
  • FTW Swap 컨트랙트의 ABI (JSON 파일)

5. Python 코드 구성

패키지 설치

pip install web3 requests

기본 코드 구조

먼저 Python에서 NeoX 체인에 연결하고, 컨트랙트를 불러오기 위한 코드를 작성합니다. 이 과정에서는 필요한 라이브러리를 불러오고, 컨트랙트 주소와 ABI 파일을 지정한 뒤, Web3 객체를 생성해 체인과 연결합니다.

from web3 import Web3

FTW_SWAP_HASH = "0xE1e1cC68841D1fF13bdd8C8fB36E6f91995788f4"
FTW_SWAP_ABI = open("ftw_abi.json").read() #The ABI file
NDMEME_HASH = "0xE816deE05cf6D0F2a57EB4C489241D8326B5d106"
WGAS_HASH = "0xdE41591ED1f8ED1484aC2CD8ca0876428de60EfF"

w3 = Web3(Web3.HTTPProvider(RPC_ENDPOINT))

contract = w3.eth.contract(FTW_SWAP_HASH, abi=FTW_SWAP_ABI)
reserves = contract.functions.getReserves(NDMEME_HASH, WGAS_HASH).call()

6. 가격 계산 예시: Flamingo API 활용

이번에는 외부 가격 API를 통해 GAS의 USD 기준 시세를 받아온 후, 이를 기반으로 NDMEME의 상대 가격을 계산해 보겠습니다. 이 계산은 유동성 풀에 쌓인 리저브 값을 활용하여 NDMEME의 가치를 추정하는 방식입니다.

import requests

from web3 import Web3

FTW_SWAP_HASH = "0xE1e1cC68841D1fF13bdd8C8fB36E6f91995788f4"
FTW_SWAP_ABI = open("ftw_abi.json").read()
NDMEME_HASH = "0xE816deE05cf6D0F2a57EB4C489241D8326B5d106"
WGAS_HASH = "0xdE41591ED1f8ED1484aC2CD8ca0876428de60EfF"
FLAMINGO_PRICE_API = "https://neo-api.b-cdn.net/flamingo/live-data/prices/latest"

w3 = Web3(Web3.HTTPProvider('https://mainnet-1.rpc.banelabs.org/'))

contract = w3.eth.contract(FTW_SWAP_HASH, abi=FTW_SWAP_ABI)
reserves = contract.functions.getReserves(NDMEME_HASH, WGAS_HASH).call()
ndmeme_reserve = reserves[2] / 10 ** 18
wgas_reserve = reserves[4] / 10 ** 18

res = requests.get(FLAMINGO_PRICE_API)
gas_price = [x['usd_price'] for x in res.json() if x['symbol'] == 'GAS'][0]

ndmeme_price = gas_price * wgas_reserve / ndmeme_reserve

7. 어떻게 활용할 수 있을까요?

이처럼 NeoX 체인과 통신하면서 아래와 같이 다양한 서비스를 개발해 볼 수 있습니다. 한번 시도해보는건 어떨까요?

  • 온체인 데이터 대시보드 만들기: 다양한 토큰 페어의 리저브 정보를 주기적으로 조회하여 실시간 가격 모니터링 페이지를 만들 수 있습니다.
  • 자동화된 가격 알림 봇: 특정 가격 이상 또는 이하로 움직일 때 알림을 주는 Telegram/Discord 봇을 만들 수 있습니다.
  • 트레이딩 전략에 활용: 유동성 풀 데이터를 기반으로 가격 차익을 분석하고, 향후 트레이딩 전략의 기준으로 삼을 수 있습니다.
  • DeFi 데이터 분석 리서치: NeoX에서 어떤 페어가 많이 사용되고 있는지, 어떤 자산에 유동성이 몰리는지 데이터 분석에 활용할 수 있습니다.

8. 마무리하며

이 튜토리얼에서는 NeoX에서 Python으로 스마트 컨트랙트를 호출하고 데이터를 읽는 기초를 다루었습니다. 다음 글에서는 트랜잭션을 생성하고 서명하여 블록체인에 전송하는 방법도 다룰 예정이니 기대해주세요!

도움이 필요하거나 질문이 있다면 언제든지 Neo Discord에서 문의해보세요 🙌

profile
스마트 이코노미를 위한 퍼블릭 블록체인, 네오에 대한 모든것

0개의 댓글