이더리움 지갑 서비스(거래소 등)에서 입금 사실 푸시하기

조회수 930회

안녕하세요. 블록체인 개발 공부 중에 질문이 있어서 글 남깁니다.

  • 환경 ubuntu, mac web3 (javascript)

저희 플랫폼 사용자들을 위한 이더리움 지갑 서비스를 개발해 보려고 하는데요.

지갑에 입금이 되었을 때, 이 사실을 사용자에게 알리기 위한 방법에 대해 도움을 구하고자 합니다.

제가 알고 있는 방법은 2가지가 있습니다.

  1. web3.eth.subscribe 메서드 사용 (websocket)
  2. cron 을 사용하여 주기적으로 블록을 스캔(web3.eth.getBlockNumber())하고, 블록 내에 있는 트랜잭션을 모두 검사하여, 플랫폼에서 관리하는 지갑 주소가 트랜잭션에 포함되어 있는지 확인하고, 있으면 해당 사용자에게 푸시

1번은 예제가 너무 부족하여 포기했고, 2번을 진행 중입니다.

우선 간단히 제가 구현한 로직은 다음과 같습니다.

  1. DB 에서 마지막으로 조회한 블록 번호 가져오기
  2. 현재 블록 번호 가져오기
  3. (현재 블록 - 마지막 블록) 의 블록들 트랜잭션에 있는 주소를 모두 검사한다
  4. 존재하면 해당 사용자에게 알린다
  5. 위 과정을 cron 으로 1분, 5분 등 정하여 스케줄링 하는 것입니다.

그러나, 위와 같은 로직은 플랫폼 사용자들이 지갑을 생성할수록 루프가 기하급수적으로 증가하며, 의미 없는 루프가 실행된다는 매우 비효율적인 단점이 있었습니다.

제가 하고자 하는 목적을 위해 도움 부탁드립니다.

읽어주셔서 고맙습니다.

  • 클라이언트에서 주기적으로 반복 폴링하는건 좋은 방법이 아닙니다.서버에서 이벤트시(입급시)에 클라이언트들에 데이터를 푸쉬 해야죠. websocket 를 고려해보세요. 정영훈 2018.6.19 18:30

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)