Bối cảnh và vấn đề nghiên cứu

Khai thác Bitcoin (Bitcoin Mining) là quy trình cốt lõi trong hệ thống mạng ngang hàng (P2P) do Satoshi Nakamoto giới thiệu năm 2009. Đây là cơ chế duy nhất để phát hành Bitcoin mới vào lưu thông và xác thực các giao dịch thông qua thuật toán đồng thuận Bằng chứng công việc (Proof of Work - PoW). Tính đến tháng 3 năm 2022, đã có hơn 19 triệu Bitcoin được khai thác trên tổng số giới hạn 21 triệu. Cứ sau mỗi 210.000 khối (khoảng bốn năm), phần thưởng khối giảm 50%, kéo theo độ khó khai thác ngày càng tăng và tính cạnh tranh giữa các thợ đào (Miners) trở nên gay gắt. Để tìm kiếm giá trị Nonce thỏa mãn hàm băm mục tiêu (Target Hash), hệ thống đòi hỏi năng lực tính toán cực lớn, thúc đẩy sự chuyển dịch từ xử lý bằng phần mềm sang các thiết bị phần cứng chuyên dụng như FPGA (Field-Programmable Gate Array) và ASIC (Application-Specific Integrated Circuit).

Bài toán khai thác Bitcoin sử dụng thuật toán băm kép SHA-256 (Double SHA-256) trên tiêu đề khối (Block Header) dài 80 byte. Việc liên tục thử và sai với không gian Nonce $2^{32}$ đòi hỏi phần cứng phải tối ưu hóa chu kỳ xung nhịp và diện tích vi mạch. Các nghiên cứu trước đây như công trình của Lê Vũ Trùng Dương và Nguyễn Thị Thanh Thủy (2021) áp dụng pipeline 2 mức đạt tần số 454 MHz nhưng chỉ dừng lại ở kiểm tra tập dữ liệu tĩnh; nghiên cứu của Shamsiah Suhaili và Norhuzaimin Julai (2019) về chuyển đổi mở rộng hệ số 2 cho SHA-256 đạt 251.07 MHz hoặc nghiên cứu trên tiến trình ASIC Intel 14nm đạt 1,531.39 MHz đều chưa xây dựng thành một hệ thống máy đào hoàn chỉnh kết nối trực tiếp với mạng lưới thực tế.

Nhóm tác giả đặt ra các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Tìm hiểu, nghiên cứu và triển khai hệ thống đào Bitcoin theo hướng kiến trúc đa nhân (Multicore).
  2. Xây dựng thuật toán hàm băm SHA-256 theo hướng chuyển đổi mở rộng hệ số 2 (Unfolding factor 2) nhằm tối ưu tần số hoạt động, thông lượng (throughput) và tài nguyên phần cứng cho từng lõi đơn.
  3. Hiện thực máy đào đa lõi (32 lõi Miner Core) trên phần cứng FPGA Xilinx Virtex-7 VC707, hướng tới tỷ lệ băm (Hash rate) cao và xử lý đồng thời nhiều khoảng Nonce.
  4. Đóng gói hoàn chỉnh hệ thống SoC (System on Chip) trên FPGA và xây dựng phần mềm kết nối máy tính với Mining Pool để khai thác Bitcoin theo thời gian thực (Real-time).

Đối tượng nghiên cứu là kiến trúc phần cứng vi mạch xử lý thuật toán Double SHA-256, kỹ thuật chuyển đổi mở rộng đồ thị dòng dữ liệu (DFG), kiến trúc máy đào đa lõi và giao tiếp SoC/UART. Phạm vi nghiên cứu tập trung vào việc thiết kế RTL, mô phỏng trên phần mềm Vivado, nạp thực thi trên kit FPGA Xilinx Virtex-7 VC707 và kiểm thử với 32 khối dữ liệu thực tế cùng việc kết nối Mining Pool trực tuyến.

Cơ sở lý thuyết và phương pháp

Khóa luận dựa trên các nền tảng lý thuyết và mô hình kỹ thuật sau:

  • Công nghệ Blockchain và cơ chế Proof of Work: Cấu trúc Block Header kích thước 80 byte gồm 6 trường dữ liệu: Version (4 byte), Previous Block Header Hash (32 byte), Merkle Root Hash (32 byte), Time (4 byte), nBits (4 byte) và Nonce (4 byte). Giá trị băm mục tiêu ($T$) được giải nén từ trường nBits theo công thức: $$T = \text{nBitsMantissa} \times 256^{(\text{exponent} - 3)}$$ trong đó $\text{nBitsMantissa}$ là 24 bit thấp và $\text{exponent}$ là 8 bit cao của trường nBits.
  • Chuẩn thuật toán băm an toàn SHA-256 (NIST FIPS 180-4): Thuật toán xử lý các khối thông điệp kích thước 512 bit, độ dài từ dữ liệu 32 bit, tạo chuỗi băm đầu ra 256 bit. Quá trình tính toán sử dụng 8 biến làm việc ($a, b, c, d, e, f, g, h$), 64 hằng số $K_t$, 8 giá trị băm khởi tạo mặc định $H^{(0)}$ (gồm các từ 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19), cùng các hàm logic $Ch, Maj, \Sigma_0, \Sigma_1, \sigma_0, \sigma_1$ và các phép toán xoay phải (ROTR), dịch phải (SHR).
  • Kỹ thuật chuyển đổi mở rộng (Unfolding Transformation): Dựa trên lý thuyết thiết kế hệ thống xử lý tín hiệu số VLSI của Keshab K. Parhi. Kỹ thuật áp dụng hệ số mở rộng $J = 2$ (Unfolding factor 2) lên đồ thị dòng dữ liệu (DFG), chuyển đổi chỉ số lặp $n$ thành cặp $(2k, 2k+1)$, cho phép phần cứng thực thi 2 chu kỳ lặp liên tiếp của thuật toán SHA-256 trong cùng một chu kỳ xung nhịp.
  • Kiến trúc AsicBoost / Duo-core: Mô hình phân chia không gian tìm kiếm và tái sử dụng kết quả xử lý thông điệp để tối ưu hóa hiệu năng tính toán đa lõi.

Phương pháp nghiên cứu thực tế bao gồm:

  • Thiết kế phần cứng số (RTL Design): Hiện thực hóa cấu trúc tính toán phần cứng bằng ngôn ngữ mô tả phần cứng, xây dựng các khối chức năng Message Expander, Message Compressor, Miner Core và bộ điều khiển Multicore Miner.
  • Đồng thiết kế phần cứng - phần mềm (Hardware/Software Co-design): Phân tầng xử lý tối ưu, trong đó phần mềm trên PC thực hiện băm trước 512 bit đầu của Block Header và giao tiếp mạng với Mining Pool; phần cứng FPGA tập trung tính toán băm kép trên 96 bit còn lại kết hợp với các bộ đếm Nonce.
  • Thực nghiệm và kiểm chứng: Mô phỏng chức năng và dạng sóng bằng Vivado; tổng hợp và nạp lên kit phần cứng FPGA Xilinx Virtex-7 VC707; đo đạc tài nguyên vi mạch (LUT, FF, MMCM, BUFG); kiểm tra độ chính xác bằng tập dữ liệu 32 khối mẫu và kiểm thử thời gian thực qua giao thức UART.

Nguồn dữ liệu thực nghiệm gồm 32 Block Header lịch sử từ mạng lưới Bitcoin (điển hình như Block 32144) và luồng dữ liệu thời gian thực được trích xuất từ Mining Pool qua tập lệnh Python.

Thiết kế và triển khai hệ thống

Hệ thống máy đào Bitcoin đa lõi được thiết kế theo cấu trúc phân tầng hoàn chỉnh từ mức vi mạch phần cứng đến phần mềm điều khiển:

1. Kiến trúc khối Multicore Miner (32 Lõi)

Khối Multicore Miner tích hợp 32 lõi Miner Core độc lập hoạt động song song. Mỗi lõi nhận dữ liệu đầu vào chung từ Block Header nhưng được cấu hình quét trên các dải giá trị Nonce riêng biệt thông qua bộ đếm Nonce Counter nội bộ. Đầu vào phần cứng gồm 352 bit dữ liệu (trong đó 256 bit là giá trị băm khởi tạo $H_{init}$ của 512 bit đầu Block Header được tính trước từ phần mềm, 96 bit là phần còn lại của Block Header). Khối Convert nBits2Target thực hiện giải mã trường nBits (32 bit) thành ngưỡng Target (256 bit), đồng thời cho phép đưa vào giá trị nBits tùy biến để điều chỉnh độ khó khi thử nghiệm. Dữ liệu đầu ra của 32 lõi được thu gom qua khối so sánh (Comparator) để tìm giá trị băm nhỏ nhất (Digest_min), sau đó so sánh với Target. Khi phát hiện giá trị thỏa mãn, tín hiệu valid_nonce kích hoạt và xuất giá trị Nonce_gold.

2. Kiến trúc khối Miner Core (Double SHA-256)

Mỗi lõi Miner Core thực hiện thuật toán băm kép liên tiếp thông qua 2 khối SHA-256 Unfolding factor 2 (inst0 và inst1):

  • Lần băm 1 (inst0): Nhận 256 bit $H_{init}$ nạp vào thanh ghi khởi tạo và 96 bit Block Header ghép với 32 bit từ Nonce Counter cùng chuỗi đệm Padding_1 (384 bit) để tạo thành khối 512 bit hoàn chỉnh.
  • Lần băm 2 (inst1): Nhận kết quả 256 bit từ inst0, ghép với chuỗi đệm Padding_2 thành khối 512 bit và nạp các hằng số khởi tạo tiêu chuẩn $H^{(0)}$ để tính toán giá trị băm cuối cùng.
  • Khối Line Buffer: Lưu trữ và trễ giá trị Nonce tương ứng, đảm bảo giá trị Nonce đầu ra đồng bộ chính xác với kết quả băm kép tương ứng.

3. Thiết kế khối SHA-256 Unfolding Factor 2

Bằng cách nhân đôi các khối chức năng xử lý, thuật toán SHA-256 rút ngắn số chu kỳ nén từ 64 chu kỳ xuống còn 32 chu kỳ:

  • Khối mở rộng lịch trình tin nhắn (Message Expander): Tạo đồng thời 2 từ dữ liệu ${W_{2t}, W_{2t+1}}$ trong mỗi chu kỳ cho các bước lặp $t = 8 \dots 31$ bằng 2 khối ME song song với các đầu vào trích xuất từ các từ $W$ trước đó.
  • Khối nén thông điệp (Message Compressor): Tính toán đồng thời 2 bước nén trong một chu kỳ clock. Các biến tạm $T_1, T_2$ và $T_{1_next}, T_{2_next}$ cùng các giá trị chuyển tiếp $next_e, next_a, next_e1, next_a1$ được tính toán liên tiếp để cập nhật trực tiếp vào 8 biến làm việc ${a, b, c, d, e, f, g, h}$. Kết quả băm 256 bit hoàn tất và xuất ra khi bộ đếm đạt chu kỳ $Cnt = 33$.

4. Tích hợp SoC và giao tiếp thời gian thực

Thiết kế Multicore Miner được đóng gói thành IP chuẩn AXI4-Lite (TOP IP), kết nối với khối quản lý xung nhịp MMCM và bộ đệm BUFG trên FPGA Xilinx Virtex-7 VC707. Phần mềm viết bằng ngôn ngữ Python trên môi trường Ubuntu LTS chịu trách nhiệm kết nối Mining Pool, trích xuất dữ liệu công việc, tính toán trước giá trị băm của 512 bit đầu Block Header, truyền dữ liệu qua cổng UART xuống FPGA và nhận kết quả tính toán Nonce hợp lệ trả về từ phần cứng sau mỗi chu kỳ 30 giây.

Nội dung chính theo từng chương

Chương 1: Tổng quan đề tài

Chương này giới thiệu lịch sử phát triển của đồng tiền mã hóa Bitcoin và nền tảng công nghệ Blockchain; phân tích cơ chế tạo khối, độ khó mạng lưới và sự cần thiết của việc phát triển phần cứng khai thác hiệu năng cao. Tác giả tiến hành tổng thuật các công trình nghiên cứu liên quan về tối ưu hóa thuật toán SHA-256 (kiến trúc pipeline, tính toán song song trên ASIC, kỹ thuật unfolding) và chỉ ra khoảng trống nghiên cứu khi các đề tài trước thiếu tính ứng dụng thực tế. Từ đó, chương xác định mục tiêu xây dựng máy đào đa lõi SHA-256 Unfolding factor 2 trên FPGA có khả năng kết nối Mining Pool thời gian thực.

Chương 2: Cơ sở lý thuyết

Chương 2 trình bày có hệ thống các khái niệm cốt lõi:

  • Cấu trúc mạng Blockchain, các mô hình chuỗi khối (Public, Consortium, Private), cơ chế đồng thuận Proof of Work, quy trình xử lý giao dịch qua Mempool và cấu trúc 6 trường của Block Header.
  • Quy tắc chuyển đổi trường nBits sang giá trị ngưỡng Target dưới định dạng nén Compact.
  • Đặc tả chi tiết thuật toán mã hóa SHA-256 theo chuẩn NIST FIPS 180-4 bao gồm các hằng số khởi tạo, quy tắc đệm tin nhắn (Padding), thuật toán tạo lịch trình thông điệp (Message Schedule) và 64 vòng lặp nén dữ liệu.
  • Nguyên lý kỹ thuật chuyển đổi mở rộng (Unfolding Transformation) trên đồ thị dòng dữ liệu DFG với hệ số mở rộng $J = 2$.

Chương 3: Thiết kế đề xuất

Chương này mô tả chi tiết kiến trúc phần cứng được đề xuất:

  • Thiết kế hệ thống Multicore Miner 32 lõi dựa trên việc mở rộng kiến trúc Duo-core, cơ chế chia sẻ và quét phân đoạn Nonce.
  • Cấu trúc lõi Miner Core thực hiện Double SHA-256 với sự phối hợp của khối đệm Line Buffer và các bộ đệm hằng số.
  • Chi tiết mạch vi mạch SHA-256 Unfolding factor 2 với giải thuật và sơ đồ khối của Message Expander và Message Compressor, phân tích cấu tạo các khối logic $Ch, Maj, \Sigma_0, \Sigma_1, \sigma_0, \sigma_1$ khi tiếp nhận các đầu vào mở rộng mới.

Chương 4: Kiểm tra kết quả thiết kế

Chương 4 tập trung vào công tác mô phỏng và kiểm tra tính đúng đắn của thiết kế trên phần mềm Vivado:

  • Đánh giá dạng sóng và tài nguyên phần cứng của khối lõi đơn SHA-256 Unfolding factor 2.
  • Kiểm thử chức năng khối Multicore Miner 32 lõi bằng mô hình testbench với tập dữ liệu 32 Block Header lịch sử từ mạng Bitcoin, đối chiếu giá trị Nonce tìm được trên console với kết quả thực tế.
  • Đánh giá các thông số tài nguyên vi mạch trước khi nạp phần cứng.

Chương 5: Hiện thực thiết kế trên FPGA

Chương này trình bày quá trình triển khai thực tế trên phần cứng:

  • Đóng gói thiết kế TOP IP tương thích chuẩn giao tiếp bus AXI4-Lite, tích hợp bộ quản trị xung nhịp MMCM và bộ đệm BUFG trên kit FPGA Xilinx Virtex-7 VC707.
  • Xây dựng bản đồ địa chỉ thanh ghi lưu trữ và viết chương trình Python trên nền tảng Ubuntu LTS để giao tiếp truyền nhận dữ liệu qua UART.
  • Kết quả kiểm chứng độ chính xác khi chạy thực tế trên 32 block mẫu (điển hình là Block 32144) và kết quả thử nghiệm kết nối trực tiếp đến Mining Pool lấy dữ liệu khai thác thời gian thực.

Chương 6: Kết luận và hướng phát triển

Chương cuối tổng kết toàn bộ các kết quả đạt được của đề tài về thông số phần cứng, tốc độ băm và tính năng hệ thống; phân tích các khó khăn gặp phải trong quá trình tối ưu hóa đường trễ lan truyền của khối nén mở rộng trên phần cứng; đồng thời đề xuất các giải pháp nâng cấp kiến trúc cho các giai đoạn nghiên cứu tiếp theo.

Kết quả và đóng góp

Khóa luận đã hoàn thành việc thiết kế, chế tạo và thử nghiệm thành công hệ thống máy đào Bitcoin đa lõi hoàn chỉnh với các số liệu thực nghiệm cụ thể:

Thông số / Hạng mục Giá trị thực nghiệm trên FPGA
Nền tảng phần cứng Kit phát triển Xilinx Virtex-7 VC707
Kiến trúc tính toán 32 lõi Miner Core (Double SHA-256 Unfolding factor 2)
Tần số hoạt động của hệ thống ($F_{max}$) 104.167 MHz
Tỷ lệ băm thực tế (Hash rate) 101.01 MHash/s
Chu kỳ tính toán một khối 512 bit 32 chu kỳ xung nhịp (xuất kết quả tại chu kỳ 33)
Chuẩn giao tiếp hệ thống AXI4-Lite, UART kết nối PC
Kết quả kiểm thử độ chính xác Khớp chính xác 100% Nonce trên 32 block mẫu thực tế
Khả năng vận hành Hoạt động thời gian thực (Real-time), kết nối trực tiếp Mining Pool

Các giải pháp kỹ thuật do nhóm tác giả đề xuất:

  • Ứng dụng thành công kỹ thuật chuyển đổi mở rộng hệ số 2 vào thuật toán SHA-256 trên phần cứng, giúp giảm 50% số chu kỳ tính toán (từ 64 chu kỳ xuống 32 chu kỳ) trên mỗi khối thông điệp.
  • Đề xuất mô hình phân chia tính toán tối ưu: băm trước 512 bit đầu của Block Header bằng phần mềm trên máy tính để tạo giá trị băm khởi tạo trung gian ($H_{init}$), giúp phần cứng FPGA chỉ cần tính toán trên 96 bit còn lại kết hợp với bộ đếm Nonce, loại bỏ việc tính toán lặp lại toàn bộ Block Header 80 byte.
  • Thiết kế cổng nạp nBits linh hoạt cho phép tùy biến giá trị Target nhằm chủ động điều chỉnh độ khó khi thử nghiệm thực tế.

Đóng góp khoa học và thực tiễn: Công trình đã giải quyết được hạn chế lớn của các nghiên cứu trước đây (vốn chỉ dừng lại ở mô phỏng thuật toán hoặc kiểm thử trên tập dữ liệu tĩnh) bằng việc hiện thực hóa một hệ thống khai thác Bitcoin hoàn chỉnh, kết hợp chặt chẽ giữa phần cứng SoC đa lõi trên FPGA và phần mềm điều khiển trên PC, có khả năng kết nối mạng và đào Bitcoin thời gian thực từ Mining Pool.

Hạn chế và hướng nghiên cứu tiếp

Khóa luận ghi nhận các hạn chế kỹ thuật trong quá trình thực hiện:

  • Tần số hoạt động thực tế (104.167 MHz) và tỷ lệ băm (101.01 MHash/s) chưa đạt được mức kỳ vọng thiết kế ban đầu (250 – 500 MHash/s). Nguyên nhân do các phép toán phụ thuộc dữ liệu trong giải thuật Message Compressor mở rộng khi tổng hợp xuống phần cứng chưa thể thực thi song song hoàn toàn triệt để, tạo ra đường trễ logic lớn (critical path) làm giảm tần số cực đại của mạch.
  • Tốc độ truyền nhận dữ liệu giữa máy tính và kit FPGA thông qua giao thức UART còn hạn chế, ảnh hưởng đến độ trễ đồng bộ khi nhận công việc mới từ Mining Pool.

Hướng nghiên cứu và phát triển tiếp theo được tác giả đề xuất:

  • Tối ưu hóa cấu trúc đường truyền và cân bằng trễ trong khối Message Compressor để nâng cao tần số hoạt động của lõi băm.
  • Nâng cấp giao tiếp truyền thông tốc độ cao giữa PC và FPGA (chuyển sang chuẩn PCIe hoặc Ethernet thay vì UART).
  • Mở rộng số lượng lõi Miner Core trên các nền tảng FPGA có dung lượng logic lớn hơn hoặc chuyển đổi thiết kế sang quy trình chế tạo vi mạch tích hợp chuyên dụng ASIC.

Giá trị tham khảo

Khóa luận là tài liệu tham khảo hữu ích cho sinh viên, học viên cao học và kỹ sư thuộc các chuyên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Công nghệ Vi mạch và Hệ thống Nhúng:

  • Cung cấp phương pháp luận chi tiết và mã nguồn thiết kế vi mạch ứng dụng kỹ thuật Unfolding Transformation trong tối ưu hóa các hàm băm mật mã học.
  • Đưa ra mô hình tham chiếu hoàn chỉnh về kiến trúc xử lý tính toán song song đa lõi (Multicore SoC) và kỹ thuật đóng gói IP giao tiếp AXI4-Lite trên FPGA.
  • Minh họa giải pháp đồng thiết kế phần cứng - phần mềm (Hardware/Software Co-design) kết nối ứng dụng mạng thời gian thực phục vụ các bài toán ứng dụng công nghệ chuỗi khối.

Câu hỏi thường gặp

1. Kỹ thuật chuyển đổi mở rộng hệ số 2 (Unfolding factor 2) mang lại ưu điểm gì cho thuật toán SHA-256 trong khóa luận?
Kỹ thuật Unfolding factor 2 nhân đôi các khối chức năng xử lý trong Message Expander và Message Compressor, cho phép thực thi 2 bước lặp liên tiếp của thuật toán SHA-256 trong cùng một chu kỳ xung nhịp. Nhờ đó, số chu kỳ cần thiết để băm một khối thông điệp 512 bit giảm từ 64 chu kỳ xuống còn 32 chu kỳ (kết quả digest sẵn sàng ở chu kỳ thứ 33), giúp tăng gấp đôi thông lượng tính toán trên lý thuyết ở cùng mức tần số.

2. Tại sao hệ thống lại thực hiện băm trước 512 bit đầu của Block Header trên phần mềm PC?
Trong tiêu đề khối Bitcoin (80 byte / 640 bit), dữ liệu 512 bit đầu tiên là cố định trong suốt quá trình tìm kiếm một khối. Việc tính toán băm trước 512 bit này bằng phần mềm trên PC tạo ra giá trị băm khởi tạo trung gian ($H_{init}$ 256 bit) nạp xuống FPGA. Giải pháp này giúp phần cứng FPGA chỉ cần tính toán băm trên 96 bit còn lại ghép với giá trị Nonce thay đổi, loại bỏ khối lượng tính toán dư thừa và rút ngắn thời gian xử lý cho mỗi lần thử Nonce.

3. Cơ chế tìm kiếm giá trị Nonce hợp lệ của hệ thống Multicore Miner 32 lõi hoạt động như thế nào?
Hệ thống gồm 32 lõi Miner Core hoạt động hoàn toàn song song, mỗi lõi sở hữu một bộ đếm Nonce Counter độc lập quét trên các dải giá trị Nonce phân biệt. Kết quả băm kép của 32 lõi được khối Comparator so sánh để chọn ra giá trị nhỏ nhất (Digest_min) rồi đối chiếu với ngưỡng Target. Khi tìm thấy giá trị băm nhỏ hơn Target, tín hiệu valid_nonce kích hoạt và giá trị Nonce_gold tương ứng được ghi vào thanh ghi để phần mềm đọc về và gửi lên Mining Pool.

4. Hiệu năng thực tế của hệ thống khi triển khai trên kit FPGA Xilinx Virtex-7 VC707 đạt mức nào?
Khi triển khai trên FPGA Xilinx Virtex-7 VC707, hệ thống máy đào 32 lõi đạt tần số hoạt động 104.167 MHz và tỷ lệ băm thực tế là 101.01 MHash/s. Hệ thống đã vượt qua các bài kiểm tra chức năng khi tìm chính xác 100% giá trị Nonce trên 32 khối dữ liệu mẫu lịch sử (như Block 32144) và thực hiện kết nối trao đổi dữ liệu ổn định với Mining Pool theo thời gian thực.

5. Mục đích của việc thiết kế cổng nạp nBits tùy biến trong khối Multicore Miner là gì?
Đầu vào nBits bổ sung cho phép thay đổi 8 bit cao để tạo ra ngưỡng Target mới có độ khó thấp hơn so với độ khó thực tế của mạng Bitcoin mà không làm thay đổi cấu trúc 96 bit dữ liệu Block Header đầu vào. Cơ chế này giúp nhóm nghiên cứu dễ dàng kiểm chứng chức năng tìm Nonce vàng trong điều kiện thử nghiệm thực tế trên FPGA và rút ngắn thời gian truyền dữ liệu so với việc nạp trực tiếp toàn bộ 256 bit của Target.

Kết luận

Khóa luận tốt nghiệp của sinh viên Dương Quang Thắng và Nguyễn Ngọc Thái đã nghiên cứu, thiết kế và hiện thực thành công hệ thống đào Bitcoin đa lõi 32 nhân hoàn chỉnh trên kit FPGA Xilinx Virtex-7 VC707. Bằng việc ứng dụng kỹ thuật chuyển đổi mở rộng hệ số 2 (Unfolding factor 2) cho thuật toán Double SHA-256 kết hợp giải pháp đồng thiết kế phần cứng - phần mềm, hệ thống đạt tần số hoạt động 104.167 MHz, tốc độ băm 101.01 MHash/s và kết nối trực tiếp với Mining Pool theo thời gian thực. Công trình là tài liệu tham khảo có giá trị cao trong lĩnh vực thiết kế hệ thống vi mạch số, tối ưu hóa phần cứng mật mã và ứng dụng công nghệ chuỗi khối.