출처: 비트코인 매거진, 파이브바트, 골든 파이낸스 편집
비트코인을 사용해본 사람이라면 누구나 메모리 풀(멤풀)을 사용해본 경험이 있을 것입니다. 그렇다면 메모리 풀이란 무엇일까요?
기술적으로 "고유한" 메모리 풀이란 존재하지 않습니다. 각 비트코인 풀 노드는 자체 메모리 풀을 운영하며, 이는 네트워크에 브로드캐스트되었지만 아직 블록에서 승인되지 않은 유효한 비트코인 트랜잭션의 캐시입니다. 노드는 서로 메시지를 교환하여 어떤 트랜잭션을 소유하고 있는지 확인하고, 소유하지 않은 트랜잭션을 교환합니다.
각 메모리 풀은 본질적으로 자체 미확인 트랜잭션 세트와 때로는 자체 구성 변수 및 설정이 있는 별도의 "섬"입니다. 풀의 크기는 구성할 수 있으며 기본값은 300MB이고, 동적으로 조정되는 최소 속도도 있으며 원하는 값으로 구성할 수 있습니다. 이는 메모리 풀이 가득 차서 더 많은 트랜잭션이 계속 들어올 때 어떤 트랜잭션을 메모리 풀에서 쫓아낼지 결정하는 데 사용됩니다. OP_RETURN 출력을 포함하는 트랜잭션에 영향을 주는 datacarrier 및 datacarriersize 옵션과 같이 구성 가능한 다른 여러 옵션도 있습니다.
노드마다 다른 이유로 메모리 풀을 실행하므로 서로 다른 요구 사항이 있지만 궁극적으로 모든 노드가 각각의 메모리 풀을 동기적으로 실행하고 서로 상호 작용함으로써 이러한 요구 사항이 충족됩니다.
각 메모리 풀은 기본 채널을 통해 서로 연결된 실제 풀로 생각할 수 있습니다. 메모리 풀이 클수록 기본 풀은 더 깊어집니다. 채굴자, 거래소, 블록 브라우저 등이 가장 깊은 풀이 될 것입니다. 이들은 모두 블록으로 패키징되기를 기다리는 모든 미확인 트랜잭션에 대해 알고 싶어하는 저마다의 동기가 있습니다. 채굴자는 다음 블록에서 가장 수익성이 높은 트랜잭션을 확보하기 위해. 거래소는 보류 중인 모든 트랜잭션을 파악하기 위해. 블록 브라우저는 전체 서비스가 블록체인과 메모리 풀에 대한 데이터 세트를 최대한 완벽하게 제공하기 때문입니다. 평균 노드는 "메모리 풀"의 가장 높은 비율의 부분을 포함할 수 있을 정도로만 깊숙이 들어가면 됩니다.
이제 각 트랜잭션을 한 방울의 액체로 상상해보면, 속도가 높을수록 액체의 밀도가 높아집니다. 이 액체는 채굴 풀 사이의 채널을 통해 흐르고, 각 풀에 도달하면 받은 액체 방울이 복사되어 채널을 통해 아직 받지 않은 다른 풀로 전송됩니다. 풀이 가득 차서 액체가 넘치면 밀도가 낮은 액체가 먼저 풀의 가장자리로 흘러내립니다.
이러한 상호 연결된 채굴 풀의 배열은 사용자마다 다른 용도로 사용할 수 있습니다.
트레이더
사용자가 거래할 때 메모리 풀은 두 가지 용도로 사용됩니다. 첫 번째이자 가장 중요한 것은 채굴자에게 거래를 전송하는 것입니다. 트랜잭션이 채굴자의 메모리 풀에 들어가지 않으면 블록으로 패킹될 수 없습니다. 메모리 풀은 트랜잭션을 서로 연결하고 공유하여 트랜잭션이 메모리 풀에 배치되면 모든 마이너의 메모리 풀에 저장되도록 합니다. 네트워크 연결 변경이나 파편화와 무관하게 트랜잭션이 사용자로부터 모든 마이너에게 전송될 수 있도록 하는 강력하고 탈중앙화된 네트워크는 매우 중요합니다.
두 번째 용도는 수수료 추정으로, 유효하지 않은 상태에 대한 응답 트랜잭션이 항상 적시에 확인되어야 하는 레이어 2 사용자들에게 특히 중요합니다. 이러한 블록의 트랜잭션 비율을 살펴보는 것만으로도 수수료를 어느 정도 추정할 수 있지만, 이는 최신 블록 이후의 메모리 풀 상태에 대한 정보를 제공하지 않습니다. 갑작스러운 거래 급증, 메모리 풀을 가득 채우는 투기꾼, 아직 끝나지 않은 다음 트랜잭션의 급증 등을 설명할 수 없습니다. 메모리 풀을 볼 수 있는 기능이 없으면 수수료 추정치가 보류 중인 트랜잭션의 현재 상태를 고려할 수 없습니다.
수취인
비트코인을 받으면 노드는 트랜잭션과 이를 포함하는 전체 블록의 유효성을 검사합니다. 귀하에게 지급된 거래는 채굴자의 메모리 풀에 브로드캐스트되고, 채굴자가 네트워크에 브로드캐스트된 블록을 찾으면 귀하의 노드가 해당 블록을 다운로드하고 검증합니다.
그러나 이는 노드의 메모리 풀을 비활성화하고 블록 전용 모드로 실행하지 않는 한 실제로 작동하는 방식이 아닙니다. 노드는 메모리 풀에서 처음 트랜잭션을 수신할 때 각 트랜잭션의 유효성을 검사하고 이를 유효한 비트코인 트랜잭션으로 캐시합니다. 마이너가 블록을 발견하면 실제로는 블록 헤더와 블록에 어떤 트랜잭션이 포함되어 있는지 확인하는 데 사용할 수 있는 작은 압축 정보(더 간단한 설명이 부족하기 때문에)만 전달합니다. 그런 다음 노드는 사전 검증된 트랜잭션을 가져와 블록 헤더를 검증하고 모두 통과하면 "압축 블록"을 전달합니다.
이러한 최적화 덕분에 채굴자들은 이전에 매트 코랄로가 유지했던 FIBRE와 같은 중앙화된 허가 필요 릴레이 네트워크와 P2P 네트워크의 느린 릴레이로 인해 다른 채굴자들에게 낮은 지연 시간의 블록 릴레이를 보장하기 위해 연결해야 했던 수명이 짧은 팔콘 네트워크에 더 이상 의존하지 않게 되었습니다. P2P 네트워크의 느린 릴레이 속도 때문에 채굴자들은 다른 채굴자들과 낮은 지연 시간의 블록 릴레이를 보장하기 위해 팔콘 네트워크에 연결해야 했습니다.
채굴자
채굴자들은 분명히 모든 것을 보고 싶어 합니다. 채굴자는 보류 중인 트랜잭션을 최대한 많이 선별하여 가장 높은 지불금이 포함된 트랜잭션을 찾고자 하는 수익 중심 단체입니다. 이를 통해 수익을 극대화하고 수익을 창출하여 비즈니스를 지속적으로 확장하고 경쟁력을 유지합니다.
그들은 메모리 풀에서 효과적으로 돈을 가져가고 있습니다. 유효한 유료 거래를 채굴하려는 이들의 인센티브는 매우 강력하기 때문에 과거에도, 현재에도, 그리고 미래에도 사용자가 개방형 P2P 네트워크를 통하지 않고 채굴자에게 직접 거래를 제출할 수 있도록 설계된 수많은 시스템과 사회적으로 이용 가능한 비공식 계약까지 구축해왔습니다.
블록 브라우저, 온체인 분석 도구 등
채굴자들도 채굴자와 마찬가지로 생성되어 전 세계로 전송되는 모든 보류 중인 트랜잭션을 보고 싶어 합니다. 이 둘의 가장 큰 차이점은 채굴자는 이러한 거래에 대해 수수료를 부과하여 직접 수익을 얻는 반면, 블록체인 브라우저와 분석 회사는 이러한 거래를 수익성 있는 제품으로 표시, 분석, 제공함으로써 간접적으로 수익을 얻는다는 점입니다.
캐시된 메모리 풀 데이터와 관련된 구체적인 예를 들 수는 없지만, 온체인 분석 회사가 온체인 거래 활동에 대해 비공개로 수집한 메타데이터를 정기적으로 구매하는 것은 잘 알려진 사실입니다. 또한, 이들은 처음에 거래를 브로드캐스트하는 노드를 좁히기 위해 네트워크 전반의 노드와 최대한 광범위하게 피어링하는 마녀 비트코인 노드를 운영합니다.
블록 브라우저는 블록체인과 메모리 풀 데이터의 시각적 표현을 통해 수익을 창출하며, 전체 비즈니스 모델도 이를 중심으로 운영됩니다. 더 많은 데이터에 접근하고 이를 사용자에게 제시할 수 있다는 것은 실용적이거나 참신한 방식으로 제시하거나 이를 통해 얻은 정보를 통해 더 많은 잠재적 수익을 얻을 수 있다는 것을 의미합니다.
정보는 흐르기를 갈망합니다
이렇게 다양한 유형의 사용자가 '하나의' 공용 메모리 풀로부터 혜택을 받는 이유는 단 한 가지, 바로 정보가 그들 사이에서 자유롭게 흐른다는 점입니다. 가장 낮은 릴레이 필터를 통과할 수 있는 충분한 비용이 있고 합의를 충족하며 개별 노드에 서비스 거부나 리소스 고갈의 합법적인 위험을 초래하지 않는 한, 네트워크의 각 개별 메모리 풀에 정보를 배포하는 것은 모든 유형의 사용자에게 가치를 제공합니다.
완전히 작동하는 공용 메모리 풀이 없다면, 서로 다른 용도를 가진 개별 사용자를 위한 유일한 대안은 중앙 집중식 솔루션이거나 각 사용자가 개별적으로 추적해야 하는 단편화된 공용 메모리 풀을 관리하기 어렵게 엉망으로 구축하는 것입니다.
이러한 방식은 잠재적으로 요금 데이터를 조작하고, 사용자를 속이고, 비공개 릴레이 트랜잭션으로 인해 채굴자가 가치를 추출할 수 있다는 우려를 낳을 뿐만 아니라. 건전하고 개방적인 공개 메모리 풀이 없다면 이러한 문제들은 모두 비트코인이 해결해야 할 문제입니다.
다음 글에서는 이러한 문제와 함께 메모리 풀 필터의 다양한 유형과 그 존재 이유에 대해 살펴보겠습니다.