Introduction

트랜잭션의 상태 변경을 Henesis를 통해 쉽게 추적할 수 있습니다.

트랜잭션이란?

트랜잭션이란 블록체인에 기록된 상태를 바꾸기 위해 계정(account)이 데이터를 전자 서명한 후 보내는 것입니다.

블록체인에 상태를 변경하기 위해 트랜잭션을 만들어 블록체엔 네트워크에 전파해야 합니다. 하지만 블록체인에서 트랜잭션을 다루기는 어렵습니다. 왜 그럴까요?

  • 트랜잭션은 실시간으로 블록에 담기지 않습니다. 따라서 유저에게 정확한 정보를 주기 위해서는 트랜잭션의 현재 상태를 정확히 파악할 수 있어야 합니다.

  • 상황에 따라서 트랜잭션 채굴이 늦어지거나 이뤄지지 않을 수 있습니다.

즉, 트랜잭션을 제대로 다룬다는 것은 다음을 의미합니다.

  • 트랜잭션이 최종적으로 채굴되었는지 지속적으로 확인하고 그 결과를 유저에게 알려줍니다.

  • 트랜잭션이 채굴되지 않았다면 원인을 파악하고 적절한 조치를 취합니다.

한마디로 트랜잭션의 상태를 실시간으로 모니터링 해서, 해당 상태에 적절한 행동을 취해야 합니다. 그렇다면 트랜잭션은 어떠한 상태가 있을 수 있을까요?

트랜잭션의 상태

Henesis에서는 트랜잭션의 상태를 크게 3가지로 구분합니다.

Status

Description

Pending

트랜잭션을 생성했으나 아직 채굴되지 않은 상황입니다. 이런 경우는 크게 두 가지 상황에 의해 발생할 수 있습니다.

  1. 블록체인 네트워크에 올바르게 트랜잭션이 전파되지 않아서 채굴자 노드의 txpool에 트랜잭션이 담기지 않은 경우

  2. Gas price가 낮아서 채굴자들이 트랜잭션을 블록에 담지 않을 경우

Receipt

트랜잭션이 채굴되서 블록에 담긴 상태입니다.

Confirmation

트랜잭션이 채굴된 후 추가적으로 블록이 더 생겨서 Chain Reorganization이 일어나지 않을 상태입니다.

트랜잭션 상태 추적의 어려움

트랜잭션에는 위와 같은 상태가 있다는 것을 알았습니다. 하지만 서비스에서 발생하는 모든 트랜잭션의 상태를 추적하는 것은 생각보다 어렵습니다.

  • 추적하는 트랜잭션 양이 많아질수록 시스템 리소스를 많이 소비합니다.

  • Pending상태를 제대로 파악하기 위해서는 트랜잭션 풀을 조회해야 합니다. 하지만 대부분의 노드 제공자들은 트랜잭션 풀을 조회하기 위한 RPC 호출을 열어두지 않습니다. 따라서 직접 노드를 운영해야 합니다.

  • 트랜잭션 상태가 갱신될 때 마다 실시간으로 알려주는 인프라 구축이 필요합니다.

Henesis는 위의 어려움을 다음과 같이 해결합니다

  • 트랜잭션 상태 추적 management service를 제공하여 시스템 리소스를 확장하지 않아도 많은 트랜잭션을 다룰 수 있습니다.

  • Henesis의 블록체인 노드를 이용하기에 트랜잭션 풀을 조회할 수 있고, 직접 노드를 운영할 필요가 없습니다.

  • Websocket을 이용해 트랜잭션의 상태를 실시간으로 알려주기 때문에, 메세지 전달을 위한 별도의 인프라 구축이 필요 없습니다.