멤풀: 트랜잭션이 확정되기 전에 기다리는 곳

·5분 읽기·작성자: SSP Editorial Team
SSP Academy 표지: 멤풀 설명

멤풀: 트랜잭션이 확정되기 전에 기다리는 곳

전송 버튼을 누르면 지갑은 트랜잭션이 브로드캐스트되었다고 알려줍니다. 익스플로러에도 표시되지만, 상태는 확인됨이 아니라 "대기 중"입니다. 몇 초, 몇 분, 때로는 몇 시간 동안 여러분의 트랜잭션은 존재하는 동시에 존재하지 않습니다.

그 사이 트랜잭션이 머무는 곳을 멤풀(mempool)이라고 합니다. 멤풀을 이해하면 수수료가 분 단위로 바뀌는 이유, 일부 트랜잭션이 멈춰 버리는 이유, 그리고 대기 중인 트랜잭션이 결제가 아니라 약속에 불과한 이유를 알 수 있습니다.

멤풀이란 실제로 무엇인가

"Mempool"은 memory pool(메모리 풀)의 줄임말입니다. 노드가 메모리에 보관하고 있는, 유효하지만 아직 확인되지 않은 트랜잭션들의 모음으로, 블록 생산자가 가져가기를 기다리고 있습니다.

첫 번째 놀라운 점은 멤풀이 하나가 아니라는 것입니다. 모든 노드가 각자 자신의 멤풀을 유지합니다. 트랜잭션을 브로드캐스트하면 지갑이 이를 한 노드에 전달하고, 그 노드는 검사한 뒤 피어들에게 넘기며, 피어들은 다시 다른 노드로 전달합니다. 몇 초 안에 네트워크 대부분이 사본을 갖게 되지만, 각 노드의 풀은 어떤 트랜잭션이 도달했는지, 용량 한도, 자체 규칙에 따라 조금씩 다를 수 있습니다.

멤풀에 있는 트랜잭션은 기본 검사를 통과한 상태입니다. 서명이 유효하고, 사용하려는 코인이 실제로 존재합니다. 하지만 아직 블록에 포함되지 않았고, 포함되기 전까지는 여전히 실행되지 않을 수 있습니다.

트랜잭션은 어떻게 선택되는가

블록 공간은 한정되어 있고, 블록 생산자(작업 증명 체인에서는 채굴자, 지분 증명 체인에서는 검증자)는 수익의 일부를 수수료로 얻습니다. 그래서 대체로 차지하는 공간 대비 가장 많이 지불하는 트랜잭션으로 블록을 채웁니다.

Bitcoin 및 유사한 체인에서는 이것이 총수수료가 아닌 수수료율, 즉 가상 바이트당 사토시를 뜻합니다. 적당한 수수료를 내는 작은 트랜잭션이 총액으로는 더 많이 내는 큰 트랜잭션을 앞지를 수 있습니다. Ethereum 및 다른 EVM 체인에서는 네트워크가 블록마다 스스로 조정하는 기본 수수료에 더해 붙는 우선순위 팁을 뜻합니다.

수수료가 수요에 따라 오르내리는 이유가 바로 이것입니다. 멤풀이 한산할 때는 거의 모든 합리적인 수수료가 다음 블록에 들어갑니다. 붐빌 때는(인기 프로젝트 출시, 시장 패닉, 활동 급증 등) 트랜잭션끼리 입찰 경쟁을 벌이고, 수수료가 낮은 트랜잭션은 그대로 남아 기다립니다.

트랜잭션이 멈추는 이유

현재 상황에 비해 수수료를 너무 적게 낸 트랜잭션은 실패하지 않고 기다립니다. 수요가 계속 높으면 멤풀에 오랫동안 머물 수 있습니다. 다만 노드는 트랜잭션을 영원히 보관하지 않습니다. 풀이 가득 차면 가장 적게 지불한 트랜잭션부터 버리고, 많은 노드는 2주 정도 지난 트랜잭션을 모두 삭제합니다.

버려진 트랜잭션은 한 번도 확인된 적이 없으므로 자금은 전혀 이동하지 않았습니다. 하지만 모든 곳에서 사라지기 전까지는 나중에라도 확인될 수 있습니다. 이것이 불편한 중간 상태입니다. 결제가 완료된 것도, 취소된 것도 아닙니다.

해결책은 대개 더 많이 지불하는 것입니다. Replace-by-fee(RBF) 및 유사한 기법을 사용하면 같은 트랜잭션의 새 버전을 더 높은 수수료로 브로드캐스트해 멤풀에 있는 이전 버전을 대체할 수 있습니다.

대기 중인 것은 공개되어 있다

멤풀에 있는 모든 것은 공개되어 있습니다. 노드를 운영하는 누구나, 그리고 어떤 익스플로러든 확정되기 전에 여러분이 무엇을 하려는지 볼 수 있습니다. 금액, 주소, 그리고 스마트 컨트랙트 체인에서는 호출하는 정확한 함수까지 말입니다.

대부분의 송금에서는 이것이 크게 중요하지 않습니다. 하지만 거래에서는 중요할 수 있습니다. 봇은 대규모 스왑을 찾아 멤풀을 감시하고, 가격 변동으로 이익을 얻기 위해 그 앞뒤에 자신의 트랜잭션을 배치합니다. 프런트러닝과 샌드위치 공격은 모두 대기 중인 여러분의 트랜잭션을 볼 수 있다는 점에 의존합니다.

자금을 받는 사람에게도 중요합니다. 대기 중인 입금 트랜잭션은 여전히 대체되거나 버려질 수 있습니다. 아직 여러분이 가진 돈이 아닙니다.

대기에서 최종 확정으로

블록에 포함되는 것이 첫 번째 확인입니다. 트랜잭션이 멤풀을 떠나 체인에 합류한 것입니다. 그 위에 블록이 하나씩 쌓일 때마다 되돌리기가 더 어려워집니다. 몇 번의 확인이면 충분한지는 체인과 금액에 따라 다르지만, 규칙은 어디서나 같습니다. 대기 중은 가능성, 확인됨은 높은 가능성, 깊이 확인됨은 최종을 의미합니다.

SSP에서는 어떻게 보이는가

SSP에서 전송할 때는 어느 정도의 우선순위에 비용을 지불할지 선택합니다. 전송 화면에서는 현재 네트워크 상황을 바탕으로 느림, 보통, 빠름 프리셋을 제공하며 각각 소요될 것으로 예상되는 시간도 함께 보여 줍니다. EVM 체인에서는 수수료를 직접 설정하고 싶을 때 사용할 수 있는 사용자 지정 옵션도 있습니다.

무엇이든 브로드캐스트되기 전에 SSP Wallet과 SSP Key가 모두 승인해야 합니다. 트랜잭션이 네트워크에 도달하고 나면 멤풀은 SSP에게도 다른 누구에게나와 똑같이 작동합니다. 선택한 수수료가 얼마나 빨리 처리될지를 결정하고, 확인되기 전까지는 대기 중 상태입니다.

솔직한 요약

멤풀은 "보냄"과 "완료" 사이의 대기실입니다. 하나가 아니라 여러 개의 방이고, 공개되어 있으며, 블록 공간에 가장 많이 지불하는 사람을 우선합니다.

확인이 얼마나 빨리 필요한지에 맞는 수수료를 선택하고, 대기 중인 트랜잭션을 (내 것이든 남의 것이든) 확정된 것으로 취급하지 말며, 브로드캐스트한 모든 것은 정산되기 전에 네트워크 전체에 보인다는 점을 기억하세요.

이 글 공유하기

관련 글