이더리움 지갑 서비스(거래소 등)에서 입금 사실 푸시하기
조회수 930회
안녕하세요. 블록체인 개발 공부 중에 질문이 있어서 글 남깁니다.
- 환경 ubuntu, mac web3 (javascript)
저희 플랫폼 사용자들을 위한 이더리움 지갑 서비스를 개발해 보려고 하는데요.
지갑에 입금이 되었을 때, 이 사실을 사용자에게 알리기 위한 방법에 대해 도움을 구하고자 합니다.
제가 알고 있는 방법은 2가지가 있습니다.
- web3.eth.subscribe 메서드 사용 (websocket)
- cron 을 사용하여 주기적으로 블록을 스캔(web3.eth.getBlockNumber())하고, 블록 내에 있는 트랜잭션을 모두 검사하여, 플랫폼에서 관리하는 지갑 주소가 트랜잭션에 포함되어 있는지 확인하고, 있으면 해당 사용자에게 푸시
1번은 예제가 너무 부족하여 포기했고, 2번을 진행 중입니다.
우선 간단히 제가 구현한 로직은 다음과 같습니다.
- DB 에서 마지막으로 조회한 블록 번호 가져오기
- 현재 블록 번호 가져오기
- (현재 블록 - 마지막 블록) 의 블록들 트랜잭션에 있는 주소를 모두 검사한다
- 존재하면 해당 사용자에게 알린다
- 위 과정을 cron 으로 1분, 5분 등 정하여 스케줄링 하는 것입니다.
그러나, 위와 같은 로직은 플랫폼 사용자들이 지갑을 생성할수록 루프가 기하급수적으로 증가하며, 의미 없는 루프가 실행된다는 매우 비효율적인 단점이 있었습니다.
제가 하고자 하는 목적을 위해 도움 부탁드립니다.
읽어주셔서 고맙습니다.
댓글 입력