Bối cảnh và vấn đề nghiên cứu
Khóa luận tốt nghiệp kỹ sư ngành Kỹ thuật Máy tính của sinh viên Phan Quốc Linh và Nguyễn Quốc Trưởng (Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh, thực hiện năm 2022 dưới sự hướng dẫn của ThS. Trần Văn Quang) tập trung vào đề tài: "Nghiên cứu và tối ưu thiết kế phần cứng tạo block cho mạng Ethereum Blockchain".
Mạng Ethereum (ETH), do Vitalik Buterin và Gavin Wood phát minh năm 2015, là nền tảng điện toán phi tập trung lớn thứ hai sau Bitcoin, chiếm hơn 17% tổng quy mô thị trường tiền điện tử toàn cầu (tính trên quy mô 1,2 nghìn tỷ USD tại thời điểm nghiên cứu). Mạng lưới này vận hành dựa trên cơ chế đồng thuận Proof-of-Work (PoW) với thuật toán cốt lõi là Ethash. Hoạt động khai thác (Ethereum mining) đóng vai trò sống còn trong việc khởi tạo khối giao dịch mới, bảo mật hệ thống và xử lý thông tin chuyển giao giá trị. Tuy nhiên, hoạt động khai thác mạng Ethereum vào thời điểm đó chủ yếu dựa vào các bộ xử lý đồ họa (GPU) và bộ xử lý trung tâm (CPU), dẫn đến tình trạng tiêu thụ điện năng lớn và hiệu suất năng lượng (Efficiency, tính bằng tỷ số giữa tốc độ băm Hashrate và công suất Power) chưa tối ưu.
Xuất phát từ thực tiễn trên, nhóm tác giả đặt ra các mục tiêu và nhiệm vụ nghiên cứu cụ thể:
- Nghiên cứu, thiết kế và tối ưu phần cứng cho hàm băm Keccak (Keccak512 và Keccak256) theo kiến trúc đường ống (pipeline) nhằm nâng cao tần số hoạt động cực đại ($F_{max}$) và hiệu suất thông lượng trên đơn vị diện tích (Efficiency = Throughput / Area).
- Nghiên cứu, tối ưu hóa các khối chức năng thành phần trong thuật toán Ethash (bao gồm hàm Fowler-Noll-Vo, phép chia lấy dư Modulo và chu trình Main Loop) trên phần cứng FPGA.
- Hiện thực hóa hệ thống Ethash hoàn chỉnh trên nền tảng phần cứng chuyên biệt, xử lý liên tiếp hai luồng dữ liệu ngõ vào nhằm gia tăng tốc độ băm (Hashrate), đồng thời giảm mức tiêu hao năng lượng so với các giải pháp GPU thương mại.
Đối tượng nghiên cứu của đề tài là thuật toán tạo khối Ethash trong mạng Ethereum, cấu trúc khối tiêu đề (Block Header), các thuật toán băm thành phần (Keccak-p[1600, 24], FNV), phép chia Modulo 32-bit và tệp dữ liệu DAG (Directed Acyclic Graph). Về phạm vi nghiên cứu, thiết kế phần cứng được hiện thực và kiểm chứng trên nền tảng FPGA Xilinx Virtex-7 VC707 thông qua công cụ tổng hợp Xilinx Vivado và ISE Design Suite. Do hạn chế về tài nguyên bộ nhớ BRAM nội trên bo mạch FPGA so với kích thước tệp DAG đầy đủ trong thực tế (vượt quá 4 GB tại thời điểm năm 2022 và tăng lũy tiến sau mỗi 30.000 block/epoch), phạm vi dữ liệu DAG dùng cho mô phỏng và kiểm tra phần cứng được thu gọn thành tập dữ liệu thử nghiệm 64 dòng (DAG_64.txt, tương ứng 64 dòng đầu tiên của tệp DAG thực tế).
Cơ sở lý thuyết và phương pháp
Khung lý thuyết của khóa luận được xây dựng dựa trên các chuẩn mực mật mã học và cấu trúc dữ liệu của mạng Ethereum Blockchain:
- Cấu trúc khối và tiêu đề khối Ethereum: Khối Block Header bao gồm 15 trường thông tin theo quy chuẩn giao thức:
parentHash (256-bit), ommersHash (256-bit), beneficiary (160-bit), stateRoot, transactionsRoot, receiptsRoot, logsBloom, difficulty, number, gasLimit, gasPrice, timestamp, extraData, mixHash và nonce (64-bit).
- Cơ chế đồng thuận Proof-of-Work (PoW): Miner phải tìm kiếm giá trị
nonce thỏa mãn điều kiện $ethash_value \le target$, trong đó mục tiêu $target$ được xác định dựa trên trường độ khó $difficulty$ theo công thức:
$$target = \frac{2^{256}}{difficulty}$$
- Họ hàm băm Keccak và kiến trúc SPONGE: Thuật toán Keccak được thiết kế dựa trên cấu trúc bọt biển (SPONGE Construction) với mảng trạng thái $b = r + c = 1600$ bit (trong đó $r$ là rate, $c$ là capacity). Hàm xử lý KeccakRound gồm 24 vòng lặp tuần tự qua 5 phép biến đổi toán học: Theta ($\theta$), Rho ($\rho$), Pi ($\pi$), Chi ($\chi$) và Iota ($\iota$). Đối với Keccak256, thông số cấu hình là $r = 1088, c = 512, d = 256$; đối với Keccak512, thông số là $r = 576, c = 1024, d = 512$.
- Hàm băm Fowler-Noll-Vo (FNV) và phép Modulo: Thuật toán Ethash sử dụng biến thể hàm FNV 32-bit với hằng số nguyên tố $FNV_prime = \text{0x01000193}$. Phép chia lấy dư Modulo của hai số nguyên không dấu 32-bit được xác định qua công thức toán học $X = Out + Z \times Q$, với $Q$ là thương số nhị phân có tối đa 31-bit ($q_{30} \dots q_0$).
Phương pháp nghiên cứu thực nghiệm được triển khai theo quy trình hai bước:
- Mô hình hóa và kiểm chứng trên phần mềm: Tác giả sử dụng ứng dụng khách Go Ethereum (Geth) lập trình bằng Golang để giao tiếp trực tiếp với mạng Ethereum, trích xuất dữ liệu khối thực tế (
SealHash(), HeaderByNumber(), lệnh makedag). Tiếp đó, giải thuật Ethash được tái hiện hoàn chỉnh bằng ngôn ngữ Python (Ethash.py, hàm hashimoto(), get_full_size(), các mô-đun đảo thứ tự byte Convert_hex.py và Convert_DAG.py) nhằm tạo ra tệp kết quả mẫu (expected_out.txt, Check_software.xlsx) làm chuẩn đối soát.
- Thiết kế, tối ưu và tổng hợp phần cứng: Áp dụng phương pháp mô tả phần cứng mức thanh ghi (RTL), triển khai kỹ thuật đường ống hóa (pipelining) đa tầng, tối ưu đường trễ tới hạn (critical path), rút gọn thanh ghi logic và kiểm tra dạng sóng thời gian thực trên công cụ mô phỏng phần cứng.
Nguồn dữ liệu thực nghiệm bao gồm dữ liệu tiêu đề khối, chuỗi giao dịch và tệp dữ liệu DAG trích xuất trực tiếp từ chuỗi khối Ethereum thông qua giao diện Geth.
Thiết kế và triển khai hệ thống phần cứng
Hệ thống phần cứng Ethash được thiết kế theo kiến trúc tích hợp liên hoàn gồm ba khối xử lý chính: khối Keccak512_2stage, khối Main Loop và khối Keccak256_2stage.
| Phân hệ phần cứng |
Kiến trúc triển khai |
Chức năng và luồng xử lý dữ liệu |
| Keccak512_2stage |
Đường ống 2 tầng (Pipeline 2-stage) |
Nhận ngõ vào 320-bit ghép từ {header (256-bit), nonce (64-bit)}; tạo ngõ ra giá trị Seed 512-bit chuyển tiếp tới khối Main Loop và lưu trữ luân phiên tại hai thanh ghi REG_Seed1, REG_Seed2. |
| Main Loop |
Đường ống 5 tầng (Pipeline 5-stage) |
Tiếp nhận Seed 512-bit và thông số full_size; thực thi 64 vòng lặp truy xuất dữ liệu từ tệp DAG_64.txt; tích hợp khối tính Index (FNV kết hợp bộ mod_3stage), khối Cal_Cmix và mô-đun FNV_128to32 để nén vector dữ liệu Mix từ 1024-bit thành Cmix 256-bit. |
| Keccak256_2stage |
Đường ống 2 tầng (Pipeline 2-stage) |
Tiếp nhận dữ liệu 768-bit ghép từ {Seed (512-bit), Cmix (256-bit)}; tính toán qua 24 vòng lặp băm rút gọn để xuất ra chuỗi ethash_value 256-bit hoàn chỉnh. |
Trong kiến trúc tổng thể, hệ thống đề xuất giải pháp xử lý dòng dữ liệu kép liên tiếp. Bằng việc phối hợp hai thanh ghi trung gian REG_Seed1 và REG_Seed2, hệ thống có khả năng tiếp nhận và xử lý song song hai giá trị ngõ vào kế tiếp nhau, tạo ra hai giá trị ethash_value liên tiếp ở ngõ ra nhằm tối ưu hóa thông lượng và cải thiện chỉ số Hashrate tổng thể.
Đối với khối Keccak256_2stage, nhóm nghiên cứu phân tích kiến trúc đường ống 2 tầng từ bài báo tham chiếu của tác giả liên quan, nơi các thanh ghi cách ly được chèn giữa các hàm con của KeccakRound (đặt sau hàm Theta và trước hàm Rho). Kiến trúc này rút ngắn critical path và cho phép xử lý đồng thời hai khối dữ liệu của hai thông điệp khác nhau (message_in 1 và message_in 2). Tuy nhiên, khi thực hiện bước Mapping cho khối dữ liệu thứ nhất, việc dữ liệu bị XOR với ngõ ra của hàm Iota tạo ra nguy cơ làm biến dạng giá trị đầu vào của vòng lặp. Để giải quyết vấn đề này, bài báo trước đây đề xuất bổ sung các cổng logic điều khiển để biến đổi khối thứ nhất. Nhóm tác giả khóa luận đã đề xuất giải pháp kỹ thuật cải tiến: không cần bổ sung các cổng logic phức tạp, thay vào đó thực hiện thiết lập giá trị reset đặc biệt cho thanh ghi trung gian REG1 (thanh ghi nằm giữa hàm Theta và Rho). Phương pháp này giúp hệ thống hoạt động chính xác theo chuẩn thuật toán mà không làm phát sinh thêm diện tích mạch logic.
Bên cạnh đó, mảng 24 hằng số vòng lặp $RC[i]$ trong hàm Iota (vốn có kích thước chuẩn 64-bit mỗi phần tử) được nhóm tác giả tối ưu hóa bằng cách gom các bit có sự biến đổi tại các chỉ số ${63, 31, 15, 7, [3:0]}$. Kỹ thuật này giúp rút gọn kích thước mảng hằng số xuống chỉ còn 8-bit cho mỗi vòng lặp, tiết kiệm đáng kể tài nguyên bảng tra (LUT) và bộ nhớ trên FPGA.
Quy trình kiểm thử phần cứng được thực hiện khép kín: Dữ liệu mẫu từ phần mềm Geth được nạp vào mô hình RTL; dạng sóng ngõ ra được giám sát qua bộ mô phỏng của Vivado; các giá trị ethash_value tính toán bởi phần cứng được tự động ghi nhận vào tệp hardware_results và so sánh trực tiếp với tệp chuẩn expected_out.txt thông qua giao diện dòng lệnh Tcl Console.
Nội dung chính theo từng chương
Chương 1: Tổng quan đề tài
Chương 1 trình bày tổng quan về sự phát triển của công nghệ Blockchain, tiền điện tử Ethereum và vai trò then chốt của quá trình khai thác khối. Chương này khảo cứu các công trình công bố trên hệ thống IEEE về tối ưu hóa phần cứng cho hàm Keccak và thuật toán Ethash. Tác giả tổng hợp kết quả của các nghiên cứu đi trước: thiết kế Keccak256 kiến trúc lặp (Iterative) đạt tần số 301 MHz đến 309,6 MHz; thiết kế pipeline 2 tầng trên Virtex-7 đạt tần số 832,848 MHz với Throughput 36,985 Gbps và Efficiency 22,1 Mbps/Slice; cùng nghiên cứu hiện thực Ethash trên FPGA Virtex-7 VC707 đạt tần số 80 MHz, Hashrate 153,84 KH/s và diện tích 4945 Slices. Đồng thời, chương 1 khảo sát hiệu năng khai thác Ethash trên các dòng GPU thương mại (NVIDIA P4000, AMD RX 580) với mức Hashrate cao nhưng hiệu suất năng lượng chỉ dao động trong khoảng 0,15 đến 0,54 MH/W. Từ đó, chương 1 xác lập các mục tiêu thiết kế phần cứng:
- Mục tiêu cho Keccak256: Tần số hoạt động $\ge 800\text{ MHz}$, diện tích sử dụng khoảng 1200 Slices, Throughput đạt $36\text{ Gbps}$ và Efficiency đạt $30\text{ Mbps/Slice}$ trên FPGA Virtex-7.
- Mục tiêu cho hệ thống Ethash: Tần số hoạt động khoảng $80\text{ MHz}$, diện tích sử dụng khoảng 5000 Slices, Throughput đạt $0,077\text{ Gbps}$ và Hashrate đạt $150\text{ KH/s}$.
Chương 2: Cơ sở lý thuyết
Chương 2 phân tích chi tiết nền tảng lý thuyết mạng phân tán Blockchain: mô hình liên kết chuỗi khối thông qua giá trị băm con trỏ (hash pointer), không gian lưu trữ giao dịch tạm thời (memory pool), cấu trúc khối ứng viên (Candidate block) và chi tiết 15 trường dữ liệu của Ethereum Block Header. Nội dung chương đi sâu vào định dạng mã hóa RLP (Recursive Length Prefix), cơ chế tính toán phí giao dịch qua gasLimit và gasPrice, cũng như bản chất thuật toán PoW. Chương này mô tả tường minh giải thuật Ethash kết hợp với các thuật toán con: cơ chế hoạt động của hàm băm Keccak cấu trúc SPONGE qua 4 giai đoạn (Padding, Mapping, KeccakRound với 5 hàm con Theta, Rho, Pi, Chi, Iota, và Truncating); bảng giá trị dịch chuyển bit 2 chiều trong hàm Rho ($R[x, y]$); bảng 24 hằng số $RC[i]$ 64-bit và dạng rút gọn 8-bit; giải thuật hàm băm FNV 32-bit với số nguyên tố đặc tả 0x01000193; cùng cơ chế tính toán phần dư của phép chia Modulo nhị phân 32-bit dựa trên khai triển thương số $Q$.
Chương 3: Kiến trúc đề xuất
Chương 3 trình bày toàn diện giải pháp kiến trúc từ mức phần mềm đến phần cứng. Nhóm tác giả thuyết minh quy trình lấy dữ liệu từ mạng chuỗi khối Ethereum thông qua công cụ Go Ethereum (Geth) viết bằng Golang, kết hợp bộ chương trình Python (main.go, Convert_hex.py, Convert_DAG.py, Ethash.py) để chuyển đổi tệp DAG về định dạng chuẩn (mỗi dòng 512-bit, sắp xếp endian 32-bit) và tạo bộ dữ liệu đối chuẩn (Check_software.xlsx, expected_out.txt). Về mặt phần cứng, chương 3 mô tả chi tiết sơ đồ khối tổng thể của hệ thống Ethash; phân tích cấu trúc pipeline 2 tầng của Keccak512 và Keccak256; làm rõ phương pháp đề xuất loại bỏ cổng logic phụ ở bước Mapping bằng giải pháp gán giá trị khởi tạo đặc biệt cho thanh ghi REG1; chi tiết hóa cấu trúc đường ống 5 tầng của khối Main Loop với các khối chức năng con gồm bộ tạo chỉ số Index, khối Modulo 3 tầng (mod_3stage), khối nén Cal_Cmix và hàm nén dữ liệu FNV_128to32.
Chương 4: Kiểm tra và đánh giá kết quả
Chương 4 tập trung vào phương pháp kiểm thử và công bố các kết quả thực nghiệm đạt được trên phần mềm và phần cứng. Kết quả chạy phần mềm Ethash bằng Python khớp hoàn toàn với dữ liệu thực tế trích xuất từ chuỗi khối Ethereum. Trên môi trường phần cứng FPGA Xilinx Virtex-7 VC707, kết quả mô phỏng dạng sóng thời gian thực cho thấy hệ thống xuất ra chính xác chuỗi giá trị ethash_value, khớp hoàn toàn với tệp dữ liệu kiểm chuẩn expected_out.txt được phản hồi trên Vivado Tcl Console và lưu vết tại tệp hardware_results. Về mặt tài nguyên phần cứng, khối Keccak256_2stage đề xuất đạt tần số hoạt động cực đại $F_{max} = 816\text{ MHz}$ (tiệm cận kết quả 832,848 MHz của công trình tham chiếu [4] nhưng tối ưu hơn về mặt logic thiết kế). Toàn bộ hệ thống Ethash hoàn chỉnh sau khi tổng hợp đạt chỉ số tốc độ băm Hashrate là $414\text{ KH/s}$, vượt mức mục tiêu 150 KH/s đặt ra ban đầu và vượt trội so với nghiên cứu tham chiếu [6] trên cùng dòng FPGA.
Chương 5: Kết luận và hướng phát triển
Chương 5 đúc kết các kết quả nghiên cứu: hoàn thiện mô hình kiểm chứng phần mềm Ethash; thiết kế, tối ưu thành công kiến trúc pipeline 2 tầng cho hàm băm Keccak và hệ thống Ethash phần cứng; kiểm chứng tính đúng đắn trên FPGA Virtex-7 VC707. Đồng thời, chương 5 xác định các mặt hạn chế về dung lượng bộ nhớ DAG và định hình các hướng nghiên cứu mở rộng trong tương lai.
Kết quả và đóng góp
Khóa luận đã hiện thực thành công hệ thống tạo khối Ethash trên nền tảng phần cứng FPGA với các thông số kỹ thuật cụ thể được tổng hợp và đối sánh với các công trình liên quan:
| Thiết kế / Nền tảng |
Tần số $F_{max}$ (MHz) |
Tài nguyên (Slices) |
Thông lượng Throughput |
Hashrate |
Efficiency |
| Keccak256 Iterative [2] (FPGA) |
301,000 |
- |
- |
- |
- |
| Keccak256 tối ưu [3] (FPGA) |
309,600 |
- |
14,0 Gbps |
- |
- |
| Keccak256 Pipeline [4] (Virtex-7) |
832,848 |
1673 |
36,89 Gbps |
- |
22,05 Mbps/Slice |
| Keccak256 đề xuất (Virtex-7 VC707) |
816,000 |
Tối ưu logic |
Đạt mục tiêu (~36 Gbps) |
- |
Vượt trội nhờ giảm diện tích |
| Ethash tham chiếu [6] (Virtex-7) |
80,000 |
4945 |
0,078 Gbps |
153,84 KH/s |
- |
| Ethash đề xuất (Virtex-7 VC707) |
~80,000 |
~5000 |
0,077 Gbps |
414,00 KH/s |
Tối ưu hóa Hashrate |
| GPU NVIDIA P4000 [7], [8] |
- |
- |
- |
18,3 MH/s |
0,22 MH/W |
| GPU AMD RX 580 [7], [8] |
- |
- |
- |
24,0 MH/s |
0,15 MH/W |
Các đóng góp khoa học và kỹ thuật do nhóm tác giả tự nêu bao gồm:
- Tối ưu hóa kiến trúc đường ống Keccak: Đề xuất phương pháp gán giá trị khởi tạo/reset đặc biệt cho thanh ghi trung gian
REG1 trong khối Keccak256_2stage, khắc phục triệt để lỗi biến dạng khối băm thứ nhất khi thực hiện Mapping mà không cần bổ sung các cổng logic điều khiển phụ như bài báo [4], qua đó tiết kiệm diện tích phần cứng.
- Tối ưu bảng hằng số RC: Đơn giản hóa mảng 24 hằng số vòng lặp 64-bit trong hàm Iota thành dạng mã hóa rút gọn 8-bit bằng phương pháp trích xuất bit biến đổi, giảm đáng kể tài nguyên phần cứng lưu trữ.
- Hoàn thiện hệ thống Ethash đường ống đa tầng: Hiện thực hóa thành công chuỗi xử lý kết hợp giữa khối Keccak đường ống 2 tầng và khối Main Loop đường ống 5 tầng, hỗ trợ xử lý liên tiếp hai luồng dữ liệu ngõ vào giúp tốc độ băm thực tế đạt $414\text{ KH/s}$, vượt qua kết quả của nghiên cứu tương đồng đi trước ($153,84\text{ KH/s}$ trong [6]).
Hạn chế và hướng nghiên cứu tiếp
Khóa luận chỉ rõ các hạn chế kỹ thuật xuất phát từ phạm vi nghiên cứu và điều kiện phần cứng thực nghiệm:
- Bộ nhớ nội (BRAM) của bo mạch FPGA Xilinx Virtex-7 VC707 có dung lượng giới hạn, không đủ khả năng lưu trữ toàn bộ tệp dữ liệu DAG thực tế (kích thước vượt 4 GB tại thời điểm nghiên cứu và liên tục tăng trưởng theo thời gian). Do đó, nhóm bắt buộc phải thu hẹp quy mô thử nghiệm xuống tệp dữ liệu mẫu 64 dòng (
DAG_64.txt) để phục vụ tổng hợp và mô phỏng chức năng.
- Thiết kế phần cứng chưa tích hợp khối điều khiển giao tiếp với các bộ nhớ ngoài băng thông cao (như DDR3/DDR4 hoặc HBM) để kiểm thử việc nạp và truy xuất tệp DAG có kích thước thực tế ở tốc độ cao.
Từ các hạn chế trên, hướng nghiên cứu tiếp theo được tác giả đề xuất gồm:
- Thiết kế và tích hợp bộ điều khiển bộ nhớ ngoài (External Memory Controller) tốc độ cao nhằm nạp và truy xuất trực tiếp tệp DAG hoàn chỉnh từ bộ nhớ ngoài vào lõi xử lý Ethash trên FPGA.
- Tối ưu hóa và nhân bản kiến trúc xử lý song song đa lõi (multi-core Ethash) trên các dòng chip FPGA có mật độ logic lớn hơn để nâng cao chỉ số Hashrate tổng thể.
- Nghiên cứu chuyển đổi và hiện thực thiết kế phần cứng sang vi mạch chuyên dụng ASIC (Application-Specific Integrated Circuit) nhằm tối đa hóa tần số xung nhịp, thu nhỏ diện tích và đạt hiệu quả năng lượng (MH/W) vượt trội so với các hệ thống máy đào sử dụng GPU.
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, đặc biệt là những người định hướng nghiên cứu về thiết kế vi mạch kỹ thuật số (RTL Design), mật mã phần cứng (Hardware Cryptography) và tăng tốc phần cứng cho các thuật toán Blockchain.
Những nội dung có giá trị tham khảo kỹ thuật cao trong tài liệu bao gồm:
- Phương pháp luận phân chia tầng đường ống (pipelining) và kỹ thuật ngắt đường trễ tới hạn trong các hàm băm thuộc họ Keccak/SHA-3.
- Giải pháp xử lý logic điều khiển và kỹ thuật reset thanh ghi để khắc phục xung đột dữ liệu đầu vào trong cấu trúc bọt biển SPONGE.
- Thiết kế chi tiết các khối tính toán số học phức tạp trên FPGA như bộ chia Modulo 32-bit 3 tầng (
mod_3stage) và thuật toán băm FNV.
- Quy trình tích hợp công cụ kiểm thử liên thông giữa phần mềm mức cao (Golang, Python) và môi trường mô phỏng phần cứng (Xilinx Vivado, Modelsim).
Câu hỏi thường gặp
1. Nhóm tác giả giải quyết xung đột dữ liệu ở khối băm thứ nhất trong hàm Keccak256 bằng kỹ thuật cụ thể nào?
Trong bài báo tham chiếu [4], tác giả phải dùng thêm các cổng logic bổ sung để sửa đổi giá trị khối thứ nhất nhằm tránh sai số khi XOR với ngõ ra của hàm Iota ở bước Mapping. Nhóm tác giả khóa luận đề xuất giải pháp tối ưu hơn: không sử dụng thêm cổng logic phụ mà thiết lập một giá trị reset đặc biệt cho thanh ghi trung gian REG1 (thanh ghi nằm giữa hàm Theta và Rho). Kỹ thuật này giữ nguyên tính toàn vẹn của thuật toán Keccak theo chuẩn SPONGE mà tiết kiệm diện tích logic trên FPGA.
2. Bảng hằng số RC trong hàm con Iota được rút gọn như thế nào để tiết kiệm tài nguyên?
Thay vì lưu trữ đầy đủ 24 giá trị hằng số $RC[i]$ với độ rộng 64-bit theo chuẩn, tác giả nhận thấy các bit thay đổi giữa các vòng lặp chỉ tập trung ở các vị trí xác định. Bằng cách gom các bit tại các vị trí 63, 31, 15, 7 và dải bit $[3:0]$ lại với nhau, bảng hằng số $RC$ được rút gọn xuống chỉ còn 8-bit cho mỗi vòng lặp, giúp giảm thiểu đáng kể số lượng thanh ghi và cổng logic khi tổng hợp mạch.
3. Vì sao thiết kế phần cứng Ethash phải giới hạn tệp dữ liệu DAG ở mức 64 dòng?
Tại thời điểm thực hiện đề tài (năm 2022), tệp dữ liệu DAG của mạng Ethereum có kích thước vượt quá 4 GB và tiếp tục tăng sau mỗi 30.000 block (một epoch). Bộ nhớ nội (Block RAM) của bo mạch FPGA Virtex-7 VC707 rất nhỏ so với dung lượng này. Do đó, để có thể tổng hợp thiết kế và mô phỏng kiểm tra chức năng hệ thống trên FPGA, nhóm tác giả bắt buộc phải giới hạn tập tin DAG xuống 64 dòng đầu tiên (tương ứng tệp DAG_64.txt).
4. Khối Main Loop trong hệ thống Ethash đề xuất được tổ chức với bao nhiêu tầng pipeline và thực hiện nhiệm vụ gì?
Khối Main Loop được thiết kế với kiến trúc đường ống 5 tầng (pipeline 5-stage). Khối này thực hiện 64 vòng lặp tính toán; trong mỗi vòng lặp, hệ thống sử dụng module tính Index (kết hợp hàm FNV và bộ chia mod_3stage) để truy xuất dữ liệu từ tệp DAG, sau đó cập nhật dữ liệu Mix. Cuối cùng, chuỗi các khối Cal_Cmix và hàm FNV_128to32 sẽ thu gọn trạng thái Mix từ kích thước 1024-bit về giá trị Cmix 256-bit làm đầu vào cho khối Keccak256.
5. Kết quả thực nghiệm chính của khóa luận trên FPGA Xilinx Virtex-7 VC707 đạt được những con số cụ thể nào?
Khối Keccak256_2stage đạt tần số hoạt động tối đa $F_{max} = 816\text{ MHz}$. Hệ thống phần cứng Ethash hoàn chỉnh đạt tốc độ băm Hashrate là $414\text{ KH/s}$, vượt mức mục tiêu thiết kế ban đầu ($150\text{ KH/s}$) và vượt trội so với nghiên cứu tham chiếu [6] trên cùng nền tảng phần cứng ($153,84\text{ KH/s}$).
Kết luận
Khóa luận tốt nghiệp của sinh viên Phan Quốc Linh và Nguyễn Quốc Trưởng đã nghiên cứu, hiện thực và tối ưu hóa thành công hệ thống phần cứng tạo khối Ethash cho mạng chuỗi khối Ethereum trên nền tảng FPGA Xilinx Virtex-7 VC707. Bằng việc áp dụng kiến trúc đường ống 2 tầng cải tiến cho hàm băm Keccak với kỹ thuật reset thanh ghi độc lập và đường ống 5 tầng cho chu trình Main Loop, hệ thống đạt tần số $816\text{ MHz}$ cho khối Keccak256 và tốc độ băm $414\text{ KH/s}$ cho toàn hệ thống Ethash. Mặc dù còn hạn chế về dung lượng bộ nhớ DAG nội tại trên FPGA, công trình đã xây dựng được một giải pháp thiết kế vi mạch hoàn chỉnh, chính xác và có giá trị tham khảo học thuật cao trong lĩnh vực tăng tốc phần cứng cho các thuật toán đồng thuận Blockchain.