출처 : dapp campus 유튜브 채널 - lottery dapp 만들기.

Read 하는 경우

1. 스마트 컨트랙트를 직접 call (batch read call)

항상 문제는 속도. 스-컨을 직접 콜하는 것은 이벤트 로그를 읽는 것보다는 조금 느리다. 이벤트 로그는 이더리움 status database에서 캐쉬로 저장하고 있는데 스마트컨트랙트 콜은 evm을 거쳐서 왔다 갔다 하기 떄문에 속도가 꽤 느림.

call을 이용하고자 한다면 한번에 인덱스 범위를 크게 주도록 스-컨 코딩을 하고 read를 한번에 많이 하는 방법 고려 가능하다. (batch call. 3번부터 30번까지 라던가)

2. 이벤트 로그 읽어오기

이벤트로그 코딩 시 파라미터를 많이 넣을 수 있고 indexed 키워드 쓰면 ‘특정 주소일 때만 이 이벤트를 검색해줘’ 같은 검색 조건을 달 수도 있다. 로그에 대해서는 조금 더 유연한 편. 그리고 스-컨을 직접 읽는 것보다는 빠르게 데이터를 가져올 수 있다.

만약 웹소켓 사용할 수 없는 환경이라면 long polling(3초마다 한번씩 물어봄) 사용한다.

만약 서버가 있다면 서버에서 처리 다 하고, 웹에서는 보여주기만 하는게 제일 좋은 방법

주의할점(block confirmation 활용)

만약 큰돈이 오고가는 서비스라면 block confirmation 확인해주는 게 좋다. filter의 경우 블록컨펌이 1 이상일 떄부터 이벤트를 전달해주게 되는데 이더리움에서는 최소 20컨펌, 비트코인은 6 컨펌.

0이나 1, 2, 3 컨펌은 불안한 감이 있다(큰 문제는 없지만) 컨펌 횟수가 내가 정한 숫자 미만이라면 보이지 않게 하다가 내가 정한 숫자가 넘어가면 보이게 하는 방법이 있다.