paint-brush
Phân tích gần 1 tỷ giao dịch Bitcoin trong vòng chưa đầy 1 phút bằng công cụ nàytừ tác giả@krieker
1,050 lượt đọc
1,050 lượt đọc

Phân tích gần 1 tỷ giao dịch Bitcoin trong vòng chưa đầy 1 phút bằng công cụ này

từ tác giả Alina Arsamakova5m2023/05/26
Read on Terminal Reader

dài quá đọc không nổi

Trong bài viết này, chúng ta sẽ nói về công cụ phân tích blockchain bí mật mà không ai biết về công cụ này cho phép truy vấn dữ liệu hữu ích từ các chuỗi khối với tốc độ ánh sáng. Chúng tôi sẽ đưa ra các truy vấn mẫu mà một người có thể thực hiện để lấy dữ liệu hữu ích ra khỏi chuỗi khối và chúng tôi sẽ nói về kiến trúc của công cụ cho phép thực hiện phân tích ở tốc độ cao như vậy.
featured image - Phân tích gần 1 tỷ giao dịch Bitcoin trong vòng chưa đầy 1 phút bằng công cụ này
Alina Arsamakova HackerNoon profile picture
0-item
1-item
2-item

Hình ảnh chính cho bài viết này được tạo bởiTrình tạo hình ảnh AI của HackerNoon thông qua lời nhắc "băm giao dịch chuỗi khối trên bảng trắng"



Trong bài viết này, chúng ta sẽ nói về công cụ mã nguồn mở bí mật mà không ai biết cho phép truy vấn dữ liệu hữu ích từ các chuỗi khối với tốc độ ánh sáng.


Chúng tôi sẽ đưa ra các truy vấn mẫu mà một người có thể thực hiện để lấy dữ liệu hữu ích ra khỏi chuỗi khối và chúng tôi sẽ nói về kiến trúc của công cụ cho phép thực hiện phân tích ở tốc độ cao như vậy.


Tuy nhiên, trước đó, hãy nói về lý do tại sao bạn cần phân tích các giao dịch từ chuỗi khối ngay từ đầu.


Mỗi giao dịch Bitcoin chứa

  1. Địa chỉ người gởi
  2. địa chỉ người nhận
  3. số tiền đã gửi


nhưng cũng


  1. số dư của người gửi
  2. bao lâu tiền không hoạt động trong ví của người gửi
  3. số dư của người nhận


Và từ những điều trên, bạn có thể ngoại suy và lấy thông tin về


  • Người gửi thường giữ Bitcoin của họ trong bao lâu trước khi gửi đi
  • Số dư trung bình của tất cả các ví trên blockchain là bao nhiêu
  • Quy mô giao dịch trung bình


và hơn 100 phân tích khác nhau.


Như bạn có thể thấy, dữ liệu mà chúng tôi có thể nhận được về thị trường Bitcoin toàn diện hơn nhiều so với các thị trường cũ. Và quan trọng nhất là người bình thường có thể truy cập vào nó. Ngược lại, chỉ các quỹ phòng hộ và ngân hàng mới có quyền truy cập vào dữ liệu như thế này trong các thị trường truyền thống.


Do đó, bằng cách phân tích các giao dịch trên chuỗi khối Bitcoin, người ta có thể hiểu rõ hơn về thị trường Bitcoin và đưa ra quyết định đầu tư tốt hơn dựa trên dữ liệu này.


Ngoài các ứng dụng phân tích chuỗi khối để giao dịch và đầu tư, còn có nhiều cách khác để sử dụng phân tích chuỗi khối:


  • Từ chối địa chỉ ví
  • Xác định hoạt động bất hợp pháp
  • Sự tuân thủ


Vậy công cụ này hoạt động như thế nào?


Kiến trúc của BlockSci

BlockSci nhằm mục đích giải quyết ba điểm khó khăn của các công cụ phân tích chuỗi khối hiện có:


  1. hiệu suất kém,
  2. khả năng hạn chế
  3. và một giao diện lập trình cồng kềnh.


Hiệu suất kém là vấn đề nhức nhối mà BlockSci giải quyết tốt nhất. Ví dụ: cách tiếp cận mạnh mẽ để phân tích các giao dịch Bitcoin cũng sẽ hiệu quả. Bạn có thể chạy một nút Bitcoin trên máy tính/máy chủ của mình và truy vấn trực tiếp nút của chính bạn. Nhưng cách tiếp cận này chậm đến mức có thể mất nhiều năm để xử lý tất cả 1 tỷ giao dịch Bitcoin.


Các công cụ hiện có khác cũng có hiệu suất kém, đặc biệt là khi sử dụng cơ sở dữ liệu đồ thị cho mục đích chung, khiến chúng chậm hơn hàng trăm lần đối với các truy vấn tuần tự và chậm hơn đáng kể đối với tất cả các truy vấn, bao gồm cả các truy vấn duyệt đồ thị.


Nguồn: https://www.usenix.org/system/files/sec20-kalodner.pdf


Thiết kế của BlockSci chủ yếu dựa trên thực tế là trong các chuỗi khối, các khối trong quá khứ không thể thay đổi được và tất cả dữ liệu mới xuất hiện trên chuỗi khối chỉ ở dạng bổ sung.


Điều này có nghĩa là các thuộc tính ACID của cơ sở dữ liệu giao dịch là không cần thiết, làm cho cơ sở dữ liệu phân tích trong bộ nhớ trở thành lựa chọn tự nhiên. Sử dụng bộ nhớ thay vì lưu trữ đĩa giúp tăng tốc đáng kể quá trình xử lý dữ liệu, đây chính xác là những gì chúng ta cần.


Trên thực tế, BlockSci tải toàn bộ chuỗi khối vào bộ nhớ để thực hiện các phép tính và tránh phương pháp xử lý phân tán. Điều này được thúc đẩy bởi thực tế là dữ liệu chuỗi khối có cấu trúc biểu đồ và do đó khó phân vùng hiệu quả.


Phỏng đoán của nhà thiết kế là việc sử dụng cơ sở dữ liệu giao dịch phân tán, truyền thống để phân tích chuỗi khối có CHI PHÍ vô hạn (Cấu hình vượt trội hơn một luồng đơn), theo nghĩa là không có cấp độ song song nào có thể vượt trội so với việc triển khai một luồng được tối ưu hóa.


Nó cũng áp dụng một số kỹ thuật như chuyển đổi con trỏ băm thành con trỏ thực tế và sao chép dữ liệu địa chỉ, để tăng tốc độ hơn nữa và giảm kích thước của dữ liệu.


Để nhập dữ liệu từ Nút, BlockSci sử dụng trình nhập hiệu suất cao của riêng mình để đọc trực tiếp dữ liệu thô trên đĩa chứ KHÔNG phải từ giao diện JSON-RPC tích hợp. Ngay cả khi đó, thường mất 24 giờ để nhập và lập chỉ mục tất cả dữ liệu từ nút. Tuy nhiên, sau khi dữ liệu được phân tích cú pháp, các phân tích thực tế sẽ diễn ra nhanh chóng.


Cách các chuỗi khối được lưu trữ trên đĩa không dễ phân tích. Chúng được tạo ra để làm những việc khác như kiểm tra giao dịch và tìm dữ liệu trong một mạng lớn. Chúng cũng được tạo ra để tiết kiệm dung lượng trong bộ nhớ bằng cách giữ các khối ở định dạng cơ bản trên đĩa. Nhưng chúng ta cần thay đổi dữ liệu để phù hợp với bộ nhớ, vì vậy BlockSci có một trình phân tích cú pháp có thể xử lý bước này. Nó đã được đảm bảo rằng trình phân tích cú pháp này được tối ưu hóa tốt.


Một cách khác để công cụ đạt được tốc độ cao như vậy là “tối ưu hóa bộ lọc nở hoa”. Bộ lọc nở là một cấu trúc dữ liệu xác suất cho phép kiểm tra tư cách thành viên trong một tập hợp. Trong ngữ cảnh của chuỗi khối , nó lưu trữ tất cả các địa chỉ đã thấy và đảm bảo tính chính xác của việc tra cứu các địa chỉ hiện có đồng thời giảm thiểu số lượng truy vấn cơ sở dữ liệu cho các địa chỉ không tồn tại. Điều này đạt được dựa trên thực tế là khoảng 88% đầu vào sử dụng đầu ra được tạo trong 4000 khối cuối cùng và chỉ 8,6% địa chỉ Bitcoin được sử dụng nhiều lần.


Tối ưu hóa quan trọng nhất cuối cùng cho phép BlockSci đạt được tốc độ phân tích cao là cấu trúc bố cục dữ liệu vừa mang lại tốc độ phân tích cao vừa không tốn quá nhiều bộ nhớ.


Bố cục dữ liệu của BlockSci chia dữ liệu có sẵn thành ba loại và kết hợp nó trong một sơ đồ kết hợp. Biểu đồ giao dịch cốt lõi là bắt buộc đối với hầu hết các phân tích và luôn được tải trong bộ nhớ, được lưu trữ ở định dạng dựa trên hàng. Các tập lệnh và dữ liệu bổ sung chỉ cần cho một tập hợp con các phân tích được lưu trữ ở định dạng kết hợp (một phần dựa trên cột, một phần dựa trên hàng) và được tải theo yêu cầu. Các chỉ mục để tra cứu các giao dịch hoặc địa chỉ riêng lẻ bằng hàm băm được lưu trữ trong một cơ sở dữ liệu riêng trên đĩa.


Ngoài ra, nó sử dụng mã hóa có kích thước cố định cho các trường dữ liệu nếu có thể, tối ưu hóa bố cục bộ nhớ cho vị trí tham chiếu, liên kết đầu ra với đầu vào để truyền tải hiệu quả, đồng thời chia sẻ ánh xạ bộ nhớ và tính song song.



Cuối cùng, đây là truy vấn tìm tất cả các giao dịch có phí> 0,1 Bitcoin trong vòng chưa đầy một phút.


 chain.blocks.txes.where(lambda tx: tx.fee > 10**7).to_list()


Bản tóm tắt

BlockSci là một công cụ phân tích chuỗi khối cho phép truy vấn dữ liệu hữu ích nhanh như chớp từ các chuỗi khối. Bằng cách phân tích các giao dịch Bitcoin, người ta có thể hiểu thị trường tốt hơn và đưa ra quyết định đầu tư tốt hơn.


Kiến trúc của BlockSci dựa trên thực tế là dữ liệu chuỗi khối có cấu trúc biểu đồ và khó phân vùng hiệu quả, do đó, nó tải toàn bộ chuỗi khối vào bộ nhớ để thực hiện các phép tính. Nó áp dụng một số kỹ thuật để tăng tốc độ, bao gồm chuyển đổi con trỏ băm thành con trỏ thực tế, sao chép dữ liệu địa chỉ và sử dụng tối ưu hóa bộ lọc nở. Cấu trúc bố cục dữ liệu vừa mang lại tốc độ phân tích cao vừa không làm tốn quá nhiều bộ nhớ.