이 기사의 리드 이미지는 "화이트보드의 블록체인 거래 해시" 프롬프트를 통해 HackerNoon의AI 이미지 생성기 에 의해 생성되었습니다.
이 기사에서는 빛의 속도로 블록체인에서 유용한 데이터를 쿼리할 수 있게 해주는, 아무도 모르는 비밀 오픈 소스 도구에 대해 이야기하겠습니다.
우리는 블록체인에서 유용한 데이터를 얻기 위해 만들 수 있는 샘플 쿼리를 제공하고 빠른 속도로 분석을 수행할 수 있는 도구의 아키텍처에 대해 이야기할 것입니다.
하지만 그 전에 먼저 블록체인 의 거래를 분석해야 하는 이유에 대해 이야기해 보겠습니다.
뿐만 아니라
그리고 위에서부터 다음과 같은 정보를 추론하고 얻을 수 있습니다.
그리고 100개 이상의 다른 분석.
보시다시피, 비트코인 시장에 대해 얻을 수 있는 데이터는 기존 시장에 비해 훨씬 더 포괄적입니다. 그리고 가장 중요한 것은 일반인이 접근할 수 있다는 것입니다. 반면, 기존 시장에서는 헤지펀드와 은행만이 이와 같은 데이터에 접근할 수 있습니다.
따라서 비트코인 블록체인의 거래를 분석함으로써 비트코인 시장을 더 잘 이해하고 이 데이터를 기반으로 더 나은 투자 결정을 내릴 수 있습니다.
그렇다면 이 도구는 어떻게 작동하나요?
BlockSci는 기존 블록체인 분석 도구의 세 가지 문제점을 해결하는 것을 목표로 합니다.
열악한 성능은 BlockSci가 가장 잘 해결하는 문제점입니다. 예를 들어, 비트코인 거래 분석에 대한 무차별 대입 접근 방식도 작동할 수 있습니다. 컴퓨터/서버에서 비트코인 노드를 실행하고 자신의 노드에 직접 쿼리할 수 있습니다. 그러나 이 접근 방식은 너무 느려서 10억 개의 비트코인 거래를 모두 처리하는 데 수년이 걸릴 수 있습니다.
다른 기존 도구도 특히 범용 그래프 데이터베이스를 사용할 때 성능이 저하되어 순차 쿼리의 경우 수백 배 느려지고 그래프 순회 쿼리를 포함한 모든 쿼리의 경우 상당히 느려집니다.
BlockSci의 디자인은 주로 블록체인에서 과거의 블록을 변경할 수 없으며 블록체인에 나타나는 모든 새로운 데이터는 추가 전용이라는 사실을 기반으로 합니다.
즉, 트랜잭션 데이터베이스의 ACID 속성이 불필요하므로 인메모리 분석 데이터베이스가 자연스러운 선택이 됩니다. 디스크 저장소 대신 메모리를 사용하면 우리에게 꼭 필요한 데이터 처리 속도가 크게 향상됩니다.
실제로 BlockSci는 전체 블록체인을 메모리에 로드하여 계산을 수행하고 분산 처리 접근 방식을 피합니다. 이는 블록체인 데이터가 그래프 구조로 되어 있어 효과적으로 분할하기 어렵다는 사실에 기인합니다.
설계자의 추측은 블록체인 분석을 위해 전통적인 분산 트랜잭션 데이터베이스를 사용하면 어떤 수준의 병렬 처리도 최적화된 단일 스레드 구현을 능가할 수 없다는 점에서 무한한 비용(단일 스레드를 능가하는 구성)을 갖는다는 것이었습니다.
또한 해시 포인터를 실제 포인터로 변환하고 주소 데이터를 중복 제거하는 등 여러 기술을 적용하여 속도를 더욱 높이고 데이터 크기를 줄입니다.
Node에서 데이터를 가져오기 위해 BlockSci는 내장된 JSON-RPC 인터페이스가 아닌 디스크의 원시 데이터를 직접 읽는 자체 고성능 가져오기 도구를 사용합니다. 그럼에도 불구하고 노드에서 모든 데이터를 가져오고 색인화하는 데 일반적으로 24시간이 걸립니다. 일단 데이터가 구문 분석되면 실제 분석은 빠릅니다.
블록체인이 디스크에 저장되는 방식은 분석하기 쉽지 않습니다. 그들은 거래를 확인하고 대규모 네트워크에서 데이터를 찾는 것과 같은 다른 작업을 수행하도록 만들어졌습니다. 또한 블록을 디스크에 기본 형식으로 유지하여 메모리 공간을 절약하기 위해 만들어졌습니다. 하지만 메모리에 맞도록 데이터를 변경해야 하므로 BlockSci에는 이 단계를 처리할 수 있는 파서가 있습니다. 이 파서가 잘 최적화되었는지 확인했습니다.
도구가 이러한 높은 속도를 달성하는 또 다른 방법은 "블룸 필터 최적화"입니다. 블룸 필터는 세트의 멤버십을 테스트할 수 있는 확률적 데이터 구조입니다. 블록 체인의 맥락에서는 존재하지 않는 주소에 대한 데이터베이스 쿼리 수를 최소화하면서 표시된 모든 주소를 저장하고 기존 주소에 대한 조회의 정확성을 보장합니다. 이는 입력의 약 88%가 마지막 4000개 블록에서 생성된 출력을 소비하고 비트코인 주소의 8.6%만이 두 번 이상 사용된다는 사실을 기반으로 달성됩니다.
BlockSci가 높은 분석 속도를 달성할 수 있게 해주는 마지막 가장 중요한 최적화는 높은 분석 속도를 제공하면서도 메모리에 큰 부담을 주지 않는 데이터 레이아웃 구조입니다.
BlockSci의 데이터 레이아웃은 사용 가능한 데이터를 세 가지 범주로 나누고 이를 하이브리드 방식으로 결합합니다. 핵심 트랜잭션 그래프는 대부분의 분석에 필요하며 항상 메모리에 로드되고 행 기반 형식으로 저장됩니다. 분석의 하위 집합에만 필요한 스크립트 및 추가 데이터는 하이브리드(부분적으로 열 기반, 부분적으로 행 기반) 형식으로 저장되고 요청 시 로드됩니다. 개별 거래나 주소를 해시별로 조회하기 위한 인덱스는 디스크에 별도의 데이터베이스에 저장됩니다.
또한 가능한 경우 데이터 필드에 고정 크기 인코딩을 사용하고, 참조 위치에 맞게 메모리 레이아웃을 최적화하고, 효율적인 순회를 위해 출력을 입력에 연결하고, 메모리 매핑 및 병렬성을 공유합니다.
마지막으로 수수료가 0.1비트코인을 초과하는 모든 거래를 1분 이내에 찾는 쿼리는 다음과 같습니다.
chain.blocks.txes.where(lambda tx: tx.fee > 10**7).to_list()
BlockSci는 블록체인에서 유용한 데이터를 매우 빠르게 쿼리할 수 있는 블록체인 분석 도구입니다. 비트코인 거래를 분석함으로써 시장을 더 잘 이해하고 더 나은 투자 결정을 내릴 수 있습니다.
BlockSci의 아키텍처는 블록체인 데이터가 그래프 구조로 되어 있고 효율적으로 분할하기 어렵다는 사실을 기반으로 합니다. 따라서 전체 블록체인을 메모리에 로드하여 계산을 수행합니다. 속도를 높이기 위해 해시 포인터를 실제 포인터로 변환, 주소 데이터 중복 제거, 블룸 필터 최적화 사용 등 여러 기술을 적용합니다. 데이터 레이아웃 구조는 높은 분석 속도를 제공하고 메모리에 큰 부담을 주지 않습니다.