XRP Ledger DEX 샘플 프로젝트
1. 라이브러리 및 모듈 임포트
XRP Ledger를 사용하기 위해 필요한 라이브러리와 모듈을 불러옵니다.
import os
from decimal import Decimal
from xrpl.models.currencies import (
IssuedCurrency,
XRP,
)
from xrpl.utils import (
drops_to_xrp,
get_balance_changes,
xrp_to_drops,
)
from account import XrplAccount
from transaction import XrplTransaction
from request import XrplRequest
from utils import Logger2. 스크립트 실행 디렉토리 설정
스크립트의 현재 위치를 기반으로 로그 파일과 지갑 정보와 같은 다른 리소스의 경로를 찾기 위해 사용됩니다.
로그 파일의 위치를 위해서 현재 스크립트의 디렉토리를 설정합니다.
3. 메인 함수 정의 및 초기화
메인 함수를 시작하면서 필요한 XRP Ledger 계정과 로그 기록 도구를 준비합니다.
4. 원하는 거래 조건 설정
거래하려는 화폐와 그에 대한 가격, 그리고 지불할 화폐와 그 가격을 설정합니다.
5. XRP Ledger 오더북 조회
특정 화폐 쌍에 대한 offer을 XRP Ledger의 오더북에서 검색합니다.
이 코드는 XRP Ledger의 오더북에서 특정 화폐 쌍에 대한 정보를 가져옵니다. 여기서
we_want["currency"]는 원하는 화폐,we_spend["currency"]는 지불할 화폐를 나타냅니다.
6. 오더북 offer 분석
offer 분석오더북에서 받아온 offer을 분석하여 원하는 조건에 부합하는 offer이 있는지 확인합니다.
오더북에서 가져온 offer을 분석합니다.
offers에는 오더북의 offer 목록이 들어 있습니다.want_amt는 원하는 화폐의 금액을 나타냅니다.
7. offer 목록 순회하며 조건 확인하기
offer 목록 순회하며 조건 확인하기offer 목록을 순회하며 각 offer의
quality가 원하는quality보다 낮은지 확인합니다.만약 offer의 품질이 원하는 품질보다 낮다면, 그 offer의 자금을
running_total에 더합니다.
8. offer 총 합계 로깅
조건에 부합하는 offer의 총합을 로그에 기록합니다.
오더북의 offer 중 일부 또는 전체가 원하는 금액에 도달하는지 확인하고, 이에 따라 로그를 출력합니다.
9. 두 번째 오더북 정보 조회
첫 번째 오더북에서 원하는 offer을 찾지 못한 경우, 두 번째 오더북에서 정보를 가져옵니다.
10. 두 번째 오더북의 offer 정보 처리
두 번째 오더북에서 가져온 offer을 처리합니다. 첫 번째 오더북에서의 처리와 유사한 로직을 사용하되, 품질 계산이 조금 다릅니다.
요약하면, 이 코드는 XRP Ledger의 오더북에서 특정 화폐 쌍에 대한 offer 정보를 가져와 원하는 금액에 도달할 수 있는지, 그리고 어떤 offer이 원하는 품질 조건에 부합하는지를 분석합니다.
11. OfferCreate 트랜잭션 전송
XRP Ledger에서
OfferCreate트랜잭션을 전송하여 offer을 생성합니다. 이제 판매자는we_spend["value"]만큼의 자금을 지불하고we_want["currency"]화폐를 얻기를 원합니다.
12. 잔액 변동 확인
트랜잭션 결과에서 잔액의 변동 사항을 확인하고 로그에 출력합니다.
13. XRP Ledger 금액을 문자열 변환
XRP Ledger에서의 금액(혹은 drop)을 보기 좋게 문자열로 변환하는 함수입니다.
14. OfferCreate 트랜잭션 결과 분석
트랜잭션 결과에서 "AffectedNodes" 항목을 순회하여 결과를 분석합니다.
15. 거래 결과 분석
트랜잭션 결과의 메타 데이터를 분석하여 영향을 받은 노드와 offer의 상태를 확인하고 로깅합니다.
16. 잔액 확인
검증된 원장에서 주소의 잔액을 확인합니다.
17. 실행
스크립트가 실행되면 main 함수를 호출하여 앞서 정의한 모든 작업을 수행합니다.
Last updated