이더리움 트랜잭션 Receipt란 무엇인가요?
프로그래밍을 하는중에
eth.getTransaction(txhash) 로 모든 정보가 나오는게 아니라,
eth.getTransactionReceipt(txhash) 를 해줘야하는데 왜 이런 방식을 써야하는지 모르겠습니다...
추측으로는
생성당시 (전송당시) 트랜잭션의 순수 정보와
마이너가 블록에 실을때 EVM이 처리한? 정보(사용한 가스..등)가 따로 관리되는것 같은데
왜 구분해서 정보를 조회 해야하는거죠? ... 같이 조회가 되면 안되는 문제가 있나요?
어떠한 장점이 있는것인가요? 설계상 불가능한 부분이 있는건가요?
제 생각이 틀렸다면 알려주십시요!
언급해주신 두 함수의 도큐먼트를 확인해보니,
https://web3js.readthedocs.io/en/v1.2.1/web3-eth.html?highlight=getTransaction#gettransaction
https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#gettransactionreceipt
차이점으로 보이는 것을 확인해보니,펜딩상태의 대처 여부가 달라질 수도 있기 때문에 2개의 함수를 만든 것이 아닌가 추측해 봅니다.
eth.getTransaction 은 펜딩상태일 경우 일부 값들만 null 처리를 합니다.
eth.getTransactionReceipt 은 펜딩상태일 경우, 아예 null 처리를 합니다.
펜딩상태 조회가 필요하다면 getTransaction을, 블록에 반영된 이후로는 getTransactionReceipt를 사용하게 하여 편의성을 조금 더 배려해준게 아닌가 싶습니다.