아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

귀여운코뿔소250
귀여운코뿔소250

Dapp을 구현할때 히스토리 검색은 어떤 방식으로 진행되나요?

서비스를 이용하려면 대게 지난 내역을 보기 마련이라고 생각됩니다.


하지만 지금 이더리움 스마트컨트랙트에서는 어떻게 구현하는지 궁금합니다.


    55글자 더 채워주세요.
    1개의 답변이 있어요!
    • 최선의최선을1
      최선의최선을1

      어떤 사항을 기록하시려는지 모르지만, 컨트랙트상에 히스토리를 저장하려면 구조체나 배열을 이용해서 원하시는 정보를 저장하실 수 있습니다. 그러나 이런 방식으로 하시게 되면 트랜젝션 실행할 때 가스가 많이 들게 되겠죠. 좋은 방법은 컨트랙트 이벤트를 사용하는 것입니다.


      예를 들어 ERC20 같은 경우에 transfer를 하게 되면,

      event Transfer(address indexed from, address indexed to, uint256 value); 


      와 같은 이벤트가 발생합니다. 이벤트 로그를 통해서 이벤트 히스토리를 조회해보실 수 있습니다.

      var contractFilter = eth.Transfer({}, {fromBlock: 0, toBlock: "latest", address:"contract address"}) contractFilter.get(function (err, res) { console.log(err); console.log(res); })


      이런식으로 하시면 contract address에서 발생한 모든 Transfer event 조회가 가능합니다. 만드시는 Dapp의 컨트랙트 메쏘드에서 이벤트를 emit하는 방식으로 구현하시면 프론트에서 트랜젝션 히스토리가 조회되실 겁니다.