Python web3으로 Uniswap의 유동성 대조 잔액을 얻는 비망록 (최신 블록만)
배경.
스크립트로 Uniswap의 유동성 쌍을 얻으려고 합니다.
세금의 손익 계산에 필요한 가격의 편차가 결정될 기회가 있는지 등을 점검하고 싶다.
etherscan을 통해 조사할 수 있지만 PRO 버전의 API가 아니면 무리다.
파이썬 웹3으로 확인해 보세요.
블록체인 노드 준비
chainlink에 공공 노드를 만들었습니다.이것도 사용할 수 있어요.
최신 블록만 얻었습니다.
과거 데이터에 접근하려면archive node
geth --syncmode full --gcmode archive
를 구축하거나archive node에 접근하는 서비스를 사용해야 한다(후술)코드
WEETH/USDT의 잔액을 조사합니다.
import json
from web3 import Web3,HTTPProvider
web3 = Web3(HTTPProvider('https://mainnet.infura.io/v3/<project_id>'))
blockNumber=web3.eth.blockNumber
print(blockNumber)
addr_weth_usdt = '0x0d4a11d5EEaaC28EC3F61d100daF4d40471f1852' # Uniswap WETH/USDT pair
abi_weth_usdt = json.loads(open('abi.json').read())
contract = web3.eth.contract(address=addr_weth_usdt, abi=abi_weth_usdt)
print("decimals", contract.functions.decimals().call())
print("totalSupply", contract.functions.totalSupply().call())
print("token0 addr", contract.functions.token0().call())
print("token1 addr", contract.functions.token1().call())
print("reserves(token0, token1, blocktime): ", contract.functions.getReserves().call())
ab JSON 정보는 먼저 etherscan에서 얻었습니다.python 웹3이면 ABI가 정의한 함수를 가져오면
contract.functions.****().call()
에서 호출할 수 있습니다.방법 매개 변수는 etherscan의 설정 소스 코드를 참조하십시오.12068697
decimals 18
totalSupply 2237106473773835710
token0 addr 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
token1 addr 0xdAC17F958D2ee523a2206206994597C13D831ec7
reserves(token0, token1, blocktime): [77593590686712646780933, 139661541958582, 1616150417]
Voila!token0은 WETH이고, token1은 USDT다.
나는 etherscan의 잔액과 비교하면 같다는 것을 확인했다.
찰트가 블록을 정할 때의 잔액
print("reserves(token0, token1, blocktime): ", contract.functions.getReserves().call(block_identifier=12068708))
이렇게 하면 블록 번호나 블록 산열을 지정할 수 있습니다...오래된 블록 번호를 지정하면 오류가 발생합니다.linkpool timeout errorinfra라면 방문 기록은 데이터archive 추가 비용을 내야 합니다.
호출 수가 적으면 quicknode가 좋아요.
TODO
geth면 archive node는 7TB 정도가 필요하기 때문에 1.5TB 정도면 수납이 가능한 터보 게스로 archive node를 만든다.GraphiQL의 취득 여부를 시험하다.bitQuery로 테스트: https://graphql.bitquery.io/ide
Reference
이 문제에 관하여(Python web3으로 Uniswap의 유동성 대조 잔액을 얻는 비망록 (최신 블록만)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/syoyo/items/d4db214903bd0105247c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)