Lottery DApp 개발 Lottery React웹 프론트[3]

web3js - filter

filter : 스마트 컨트랙트의 event들의 log들을 가져오고 사용하는 것. 스마트컨트랙트 밖에서 이벤트 log를 캐치하기 위해 필요하다.

getBetEvents 라는 함수를 작성해보자

getBetEvents = async() =>{
     const records = [];
     let events = await this.loteryContract.getPastEvents('BET', {fromBlock:0, toBlock:'latest'});
     console.log(events);
   }

0번 블록부터 최신 블록까지 빼오는 함수이다. 이 함수를 사용하기 위해 componentDidMount에 추가해준다.

  componentDidMount = async () => {
    await this.initWeb3();
    await this.getBetEvents();
    }   

내가 bet한 만큼 배열이 생긴다.



위 로그들을 살펴보자.

  1. address 는 lotery컨트랙트 주소를 나타낸다
  2. id 는 log의 id인데 다 다르다.
  3. returnValues는 raw를 해석한 것이다.
  4. amount에는 베팅한 금액 0.005eth가 들어있다.
  5. bettor에는 베팅한 주소가 들어있다.
  6. challenges에는 내가 베팅한 해쉬값이 들어가게 된다.

마지막에 추가한 ‘0xcd’를 보면


bettor에 메타마스크 주소가 들어간 것을 확인할 수 있다.

2020

맨 위로 이동 ↑