Vì ra đời sau Bitcoin nên Ethereum có khá là nhiều ưu điểm so với Bitcoin như phí giao dich thấp, tốc độ tạo ra một block nhanh hơn, có sự kết hợp của hợp đồng thông minh, và được áp dụn
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH
KHOA KỸ THUẬT MÁY TÍNH
PHAN QUOC LINH NGUYEN QUOC TRUONG
KHOA LUAN TOT NGHIEP
NGHIEN CUU VA TOI UU THIET KE PHAN CUNG
TAO BLOCK CHO MANG ETHEREUM BLOCKCHAIN
Research And Optimize The Design of Block Forming Hardware
for Ethereum Blockchain Network
KY SU NGANH KY THUAT MAY TINH
TP HO CHi MINH, 2022
Trang 2ĐẠI HỌC QUÓC GIA TP HO CHÍ MINH
TRUONG ĐẠI HỌC CÔNG NGHỆ THONG TIN
KHOA KỸ THUẬT MÁY TÍNH
PHAN QUOC LINH - 18520993
NGUYEN QUOC TRUONG - 18521568
KHOA LUAN TOT NGHIEP
NGHIEN CUU VA TOI UU THIET KE PHAN CUNG
TAO BLOCK CHO MANG ETHEREUM BLOCKCHAIN
Research And Optimize The Design of Block Forming Hardware
for Ethereum Blockchain Network
KY SU NGANH KY THUAT MAY TINH
GIANG VIEN HUONG DAN
ThS TRAN VAN QUANG
TP HO CHi MINH, 2022
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 526/QD-DHCNTT
ngày 19 tháng 07 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Đầu tiên, chúng em muốn cảm ơn các quý thay, cô và các giảng viên đã va đang giảng day tại trường Dai học Công nghệ Thông tin — Đại học Quốc gia Thanh phố Hồ Chí Minh đã góp công xây dựng trường của chúng ta ngày hôm nay Trong
quá trình học tập và rèn luyện tại trường, chúng em nhận được sự chỉ bảo tận tình,
nhận được những kiến thức, kinh nghiệm quý báu của các thay, cô, từ đó đã giúp
chúng em có được kiến thức chuyên môn, sâu rộng như ngày hôm nay.
Đặc biệt, chúng em xin chân thành cảm ơn thầy TS Lâm Đức Khải và thầy ThS Trần Văn Quang, là những người thầy tâm huyết, đã tận tâm hướng dẫn, giúp
đỡ chúng em trong suốt quá trình nghiên cứu và thực hiện đề tài Các thầy đã hỗ trợ
và cung cấp cho chúng em nhiều kiến thức chuyên môn quý báu để nhóm có thé hoàn thành đề tài Bên cạnh đó, thầy còn luôn ủng hộ, động viên và đưa ra những hướng giải pháp cần thiết mỗi khi chúng em gặp khó khăn.
Sau cùng, em muốn gửi lời cảm ơn đến gia đình và bạn bẻ, anh chị đã luôn bên cạnh, động viên tỉnh thần, là hậu phương vững chắc, là chỗ dựa tinh thần giúp chúng em có thé hoàn thành khoá luận.
Tuy đã có gắng thực hiện đề tài nhưng kiến thức cũng như kinh nghiệm bản
thân vẫn còn hạn chế nên nội dung của bài báo cáo không tránh khỏi những thiếu sót Chúng em rất mong nhận được những góp ý đến từ quý thầy cô đề bài báo cáo
của chúng em được hoàn thiện hơn.
Một lần nữa, chúng em xin chân thành cảm ơn!
TP Hồ Chí Minh, ngày 12 tháng 06 năm 2022
Sinh viên thực hiện
Phan Quốc Linh Nguyễn Quốc Trưởng
Trang 5MỤC LỤC
Chương 1 TỎNG QUAN DE TÀI :22:22222222222122122222222222122 2 ccccce 3 1.1 Giới thiệu để tài -2222222ttttrrnnnnn00111111111111111 crrrrrrrrrrree 3 1.2 Một số nghiên cứu liên quan -2+222222c+++++++tttttttEEEEEEEEvrrrkeecee 3 1.3 Mục tiêu để tài cehHHHHHHgreareeiouÔ
1.3.1 Mục tiêu cho ham Keccak ccceccsesssssssesesessssesesneseseesesesnesesessssesneneseanes 6
1.3.2 Mục tiêu cho hệ thống Ethash.n ccccssssssssssssssssesssssssssseceesssesssssssssssssseee] 1.4 Bố cục luận văn .++c++222211111112212111 1112221011 112011 10 8 Chương2 CƠ SỞ LÝ THUYÉT c2c2cc222vccVcVVcctrttrrtrrrrrrrree 0
2.1 Công nghệ Blockchain 5-22 5++EEEteEkEEkEEEkeEketkkrkrtrkerkkerkrrrie 0
2.1.1 Giới thiệu về Bloekchain -iccccccccccccssessessee c LO 2.1.2 Đặc điểm chính của Bloekchain :-c¿2222222222222cvcrrrrre 0
2.1.3 Các công nghệ hình thành nên Blockchain -. - 1
2.1.4 Các khái niệm cơ bản trong Blockchain - 2-5-5 55<++ee 2
2.2 Ethereum 5 2.2.1 Giới thiệu về Ethereum oc esecsesesseseseeseseseesecesseseseeneseseaeseeseeseeneees 5
2.2.2 Khối block trong Ethereum Bloekchain . -. -cccc2 6
2.2.3 Hợp đồng thông minh -2-2++cccccceerrrrrccceeeerrrrrec 20
2.2.4 Proof-of-Work (PoW) ch HH re 21 2.2.5 _ Target và difficulty cty 21
2.2.6 Quá trình block được thêm vào Ethereum Blockchain 22
2.3 Ethereum mining ¿+ + +t+x+kvEkvEkEEkEEkeEkEkkekkrkrrkrrkrrkerkrrkrrrrresree 22
2.3.1 Tổng quan về Ethereum mining c++2zz£+t22222zcczz 22
Trang 63.2.2 Hiện thực hàm Keccak 5-5 5c5c5scceceseresxesereseeeee-ee 40
3.2.3 Hiện thực Main Loop eceesessececseseesseseeseeeeseenseessessesssssssteaeenseesees OO Chuong 4 KIÊM TRA VA ĐÁNH GIA KET QUA -: 59 r3 ` ÖỪỌDmDDdDAO 59
4.2 Kiểm tra kết quả -csccccceecrrrrrrrrerrrrrrrrrrrrrrrrrrrrrrreoev OL
4.2.1 Kết quả kiểm tra thiết kế trên phần mêềm - 61 4.2.2 Kết quả kiểm tra thiết kế trên phan cứng - -.cc 2 62 4.3 Kết quả tài nguyên phan cứng ::+22¿222222222222222E222vvvvvrerrrrrrrrree 66 4.3.1 Kết quả hiện thực Keceak256 cccccccccccveeeeeccccccceccee 06 4.3.2 Kết quả hiện thực Ethash cccccccccSEEEEEEEEEEEErrrrrreeccee 67 Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIÉN - 69 1ì.) na , 69
Trang 7DANH MỤC HÌNH
Hình 2.1 Mạng lưới các Node trong Blockcha1n ¿55-555 s+s+xs+xexseserseees 12
Hình 2.2 Mô hình chuỗi khối trong Bloekchain 2-©2¿+2z2+22+zz+22+zzz 13
Hình 2.3 Logo Ethereum [ ]| - 5+ + x+tS* E3 SE EEEEEEEEEEEEEEEkErrkrkrrrrke 16 Hình 2.4 Hình ảnh minh họa dữ liệu giao dịch gửi di [10] -5 55-5+>5 19
Hình 2.5 Cau trúc SPONGE -cccccccthrrrrrrrrrrtrrririrrrrrrrrrrrrrrrrririie 26
Hình 2.6 Thanh phan của mang trạng thái tổ chức theo nhiều chiều 29
Hình 3.1 Quy trình cai đặt thiết kế trên phần mềm -2- ¿¿++z222222zz+ 36 Hình 3.2 Kiến trúc tổng quan của hệ thống Ethash 2 2c 2¿222+e222Szzt 39 Hình 3.3 Kiến trúc Keccak256 dựa theo bài báo [4] - ¿5c 4I Hình 3.4 Kiến trúc Keccak256_2stage đề xuất -22++22++2EEEEcrErkerrrrkerrt 42 Hình 3.5 Kiến trúc hàm Theta 22-22 22E+£92EEEEEEEEEEEEEE2221222112221227212 2221 cee 46 Hình 3.6 Mô tả xoay bit của giải thuật RÌO 5c ScSx+e sxeierrsererrerrrrke 47 Hình 3.7 Mô tả cách hoán vỊ bit trong hàm PPI ¿c6 5s ‡v‡eeketersrererrkrvek 48 Hình 3.8 Kiến trúc hàm Chi trong KeeeakRound - 2: s¿+z2+:+e2+sezz 49 Hình 3.9 Kiến trúc Ethash của bài báo [6] -2- s++++tEx++EEEetExxerrkeerrkesrkeee 50 Hình 3.10 Kiến trúc khối Main Loop đề xuất -.- ¿2z++22+sz++czssccee 52 Hình 3.11 Kiến trúc của hàm ENV -:::::c 1111221211 1 1 54
Hình 3.12 Kiến trúc của khối tính Index -::::++++++++++++++ttttttttttrrtrrrrrrrrrrrd 55 Hình 3.13 Kiến trúc mỗi Block trong khối mod _3sfage - 2-52 56 Hình 3.14 Kiến trúc khối Cal CmiX 2 ©2£2E+£+2EE+£+EEEE+SEEEEeEEEerrrrrerrr 57 Hình 3.15 Kiến trúc hàm FNV_128to32 -22¿¿222222+22222122221112222112 221 58 Hình 4.1 Quy trình kiỂm tra cccccccccsssssesssssesssssessssesssssesssseessssesssssessssesssssesesssesssseesssseeee 59 Hình 4.2 Kết quả xuất ra Termial khi chạy phần mềm Ethash - 61
Hình 4.3 Kết quả dang sóng mô phỏng hệ thống Ethash - +: 62
Hình 4.4 Dang sóng cho ra hai giá trị ethash_value đầu tiên - 63
Hình 4.5 Dang sóng cho ra hai giá trị ethash_value tiếp theo - 64
Hình 4.6 Kết quả so sánh trả về Tel Console trên Vivado - ¿+ 65 Hình 4.7 Kết quả lưu vào file hardware_resulfs.txt -522+cc+2ccssccee 66
Trang 8DANH MỤC BẢNG
Bang 1.1 Kết quả hệ thống Ethash trong [6] -2¿©2£22E+++2EE+e+£Ex+esrrxerrrrscee 5
Bảng 1.2 Kết quả trong [7], [8 ]oessssccsssseesssseessssesssssessssessssseessssesssseessssessessessssesessseessssessssecs 5
Bang 1.3 Mục tiêu thiết kế Keccak256 22-222 2EEE2EE1E22211271112271122711e E1 6
Bang 1.4 Mục tiêu thiết kế hệ thống Ethash -2¿22222+++2EEE+tEEEerrrrkerrrrrcee 7 Bảng 1.5 Mục tiêu Efficiency của hệ thống Ethash 2-©2¿222+z2cz+everxzcee 8
Bảng 2.1 Cấu trúc Block Header của Ethereum - 2 z++2E++e+£+ee+rrseerr 17
Bang 2.2 Giải thuật Ethereum mInI1ng - 5: s5+S+*+t+t+t£Eexereeeertrerrrrrrererxee 22 Bang 2.3 Giai 0iiì85i: 3 017 24 Bang 2.4 G0018 (iv.i 0n 27 Bang 2.5 Giai thudt Padding 0n 30 Bang 2.6 Giải thuật Mapping ceesessseessessecseeeeeeseteeesesesesecseneneseneaseeseenenseeeeeeeeaes 30 Bảng 2.7 Giải thuật KeccakRound - - + 523 +22 **E++Ev+eEexexerekerekerrrrrrrrrrke 31 Bang 2.8 Giải thuật Theta (KeccakRounrd) - 5s: se ssxvzsxvestsesererersrerrrrsee 31 Bảng 2.9 Giải thuật Rho (KeccakRountd) - c5 s5ss+++s£*+xexexereeeerereeeereeree 32
Bảng 2.10 Giải thuật Pi (KeccakRound) - - se sx se sxsxereeersrerrrrerreree 32
Bang 2.11 Giải thuật Chi (KeccakRoundÌ) - 5-5 5S: se ‡xvzsxsxetetererersrrrrreee 32
Bảng 2.12 Giải thuật Iota (KeccakRRounidÌ) - 5+ +ss+x+e£s+xexeeereeerereereeree 32
Bảng 2.13 Giá trị các offset của p tương ứng với hăng số R[x, y] - 33
Bảng 2.14 Giá trị hằng số R.C[i] 222 2522222 2EE122111221112211E 2211.211 cree 33
Bảng 2.15 Giá trị hằng số RC[i] đã được rút gọn -2-©2++2+z+vzxersrzsecrr 34
Bảng 2.16 Giải thuật FNV trong Ethash - St St + Eserrrrireg 35 Bảng 3.1 Giá trị A’ tại vị trí (x, y) theo Ane ccecsesceceeeeeeeseseeeeeeeeeseaeaeseeeeeeeeeeeaeees 48
Bảng 4.1 So sánh kết quả hiện thực Keccak256 2stage với các bài báo liên quan 66
Bảng 4.2 Kết quả tài nguyên phan cứng của hệ thống Ethash - 67 Bang 4.3 Kết qua so sánh Efficiency của hệ thống Ethash trên FPGA và GPU 68
Trang 9DANH MỤC TỪ VIET TAT
Trang 10TOM TAT KHÓA LUẬN
Ethereum (ETH) là tiền điện tử phố biến thứ hai sau Bitcoin Được phát minh
bởi Vitalik Buterin và Gavin Wood vào năm 2015, ngày nay vốn hóa thị trường của
Ethereum chiếm hơn 17% trong tổng số 1,2 nghìn tỷ đô la thị trường tiền điện tử
toàn cầu Ethereum là một mạng điện toán phi tập trung được xây dựng trên công nghệ Blockchain Nó được áp dụng vào nhiều lĩnh vực trong xã hội như y tế, giáo
dục và kinh tế Vì ra đời sau Bitcoin nên Ethereum có khá là nhiều ưu điểm so với
Bitcoin như phí giao dich thấp, tốc độ tạo ra một block nhanh hơn, có sự kết hợp
của hợp đồng thông minh, và được áp dụng vào nhiều lĩnh vực trong xã hội khôngchỉ dừng lại ở việc trao đồi tiền tệ
Ethereum mining là quá trình tạo ra một khối giao dịch để thêm vào chuỗi khối Ethereum Kết quả của quá trình này là sinh ra một block mới, nơi mà xử lý,
chứa đựng và bảo mật các thông tin giao dịch được tạo ra bởi các quá trình giao dịch của người dùng Ethash là thuật toán khai thác hiện tại của Ethereum Giải
thuật Ethash bao gồm hàm Keccak512, Keccak256 va Main Loop thực hiện 64vòng lặp dé trích xuất dữ liệu từ tap tin đữ liệu được gọi là DAG
Trong đề tài này nhóm nghiên cứu và tối ưu thiết kế phần cứng các khối trong
thuật toán Ethash, từ đó tăng tốc độ xử lý cho hệ thống Ethash Từ những giải thuật
mã nguồn mở trên các trang web, nhóm đã cài đặt và kiểm chứng các giải thuật đó
bằng ngôn ngữ Python, kết quả của việc kiểm chứng trên sẽ được so sánh với ditliệu gốc được lấy từ hệ thống Ethereum Blockchain Sau đó, nhóm sẽ hiện thực vàtối ưu phần cứng giải thuật sau khi đã kiểm chứng phần mềm, kết quả của phầncứng sẽ được so sánh với kết quả của phần mềm
Hiện tại nhóm đã hoàn thành thiết kế phần cứng của hàm Keccak được pipeline 2 tầng nhăm tăng tốc độ xử lý cho hệ thống Khi được tổng hợp trên FPGA Virtex-7 VC707 khối Keccak256_2stage đạt được tần số là 816.472 MHz Hệ thống
Ethash cũng đã được hoàn thành co Hashrate đạt được là 414.14 KH/s.
Trang 11MỞ ĐẦU
Blockchain (chuỗi khối) là một cơ sở dữ liệu kỹ thuật số phi tập trung lưu trữ
thông tin các giao dich (transaction) trong các khối thông tin (block) được liên kết
với nhau bằng mã hóa và mở rộng theo thời gian Mỗi khối đều chứa thông tin về
thời gian khởi tạo và được liên kết với khối trước đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch Blockchain được thiết kế dé chống lại sự thay đôi của dữ
liệu: một khi dữ liệu đã được mạng lưới chấp nhận thì sẽ không có cách nào dé thay
đôi được nó.
Hiện nay, Ethereum là một trong những tiền điện tử phổ biến được xây dựng
dựa trên nền tảng công nghệ Blockchain, được phát minh vào năm 2015 bởi một lập
trình viên Vitalik Buterin và cũng là người đồng sáng lập Tạp chí Bitcoin.
Ethereum mining là quá trình quan trọng nhằm tạo một block mới cho hệ
thống và đảm bảo sự vận hành của mạng lưới Ethereum Băng việc thêm các block
mới vào Blockchain, quá trình này giúp các giao dịch được thực hiện Bên cạnh đó,
Ethereum mining được vận hành theo cơ chế đồng thuận Proof-of-Work (PoW), cụ
thé sẽ thực hiện thuật toán Ethash dé tìm số nonce thỏa mãn yêu cầu của hệ thống
Ethereum Có rất nhiều miners cùng giải thuật toán Ethash nhưng chỉ có một miner
nhận được tiền thưởng khi tìm thay số nonce thoả mãn đầu tiên Hiện nay việc
mining thực hiện chủ yêu trên GPU và CPU, việc này sẽ tiêu tốn rất nhiều năng
lượng.
Trong đề tài nảy nhóm sẽ hiện thực giải thuật Ethash trên phần cứng sau đó sẽ
tiến hành tối ưu dé cải thiện được tốc độ xử lý và giảm tiêu hao năng lượng Tuy
nhiên giới hạn của đề tài nay là cần phải xử lý, sử dụng một lượng dữ liệu cực lớn
đó chính là tập tin dit liệu DAG có kích thước lớn hơn 4GB tính đến thời điểm hiện
tại, sẽ được cập nhật và tăng dần sau mỗi 30000 block Mà hiện tại các board FPGA
có bộ nhớ rất nhỏ so với kích thước của tập tin DAG Cho nên đề tài này nhóm sẽ
giới hạn tập tin DAG để có thể tổng hợp thiết kế trên phần cứng FPGA và mô
phỏng kiểm tra thiết kế của hệ thông.
Trang 12Chương 1 TONG QUAN ĐÈ TÀI
1.1 Giới thiệu đề tài
Tên đề 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.
Động lực thực hiện đề tài:
Ethereum (ETH) là một nền tảng phi tập trung dựa trên công nghệ Blockchain, được giới thiệu bởi Vitalik Buterin (một lập trình viên đồng sáng lập Tạp chí
Bitcoin) vào năm 2015 [1].
Ethereum là một mục tiêu khó khăn đối với các vụ lừa đảo và kiểm duyệt vìtính phi tập trung của nó Mục tiêu của ETH là cung cấp bảo mật cao hơn với chỉ
phí thấp hơn so với các hợp đồng truyền thống Với những yếu tổ trên, không có gi ngạc nhiên khi Ethereum trở thành đồng tiền điện tử quan trọng thứ hai trên thị
trường.
Đào Ethereum (Ethereum mining) là một quá trình quan trọng trong việc vận
hành mạng lưới Ethereum Kết quả của quá trình này là sinh ra một block mới, nơi
mà chứa đựng và bảo mật các thông tin được tạo ra bởi các quá trình giao dịch của
người dùng Đào Ethereum thực chất là đi giải một bài toán lớn phức tạp có tên là
Ethash nhăm tìm ra một con sô nonce thỏa yêu câu hệ thông.
Do đó, trong đề tài này nhóm sẽ nghiên cứu và hiện thực giải thuật Ethash trên
phần cứng là giải thuật tao block cho mạng Ethereum Blockchain, bằng việc tối ưu
kiến trúc các module thành phần trong hệ thống Ethash lớn sẽ giúp cải thiện tốc độ
tính toán so với các nghiên cứu trước.
1.2 Một số nghiên cứu liên quan
Hiện nay, lĩnh vực tiền điện tử như Bitcoin, Litecoin và Ethereum đang là một
xu hướng được quan tâm và đầu tư phát triển Chính vì vậy việc hiện thực giải thuật Ethash trên phần cứng chuyên biệt nhằm tăng tốc độ đào đang là vấn đề cần được
Trang 13chú tâm nhiều nhất Tuy nhiên giải thuật này có độ tính toán phức tạp cao và tiêu
tốn nhiều tài nguyên phần cứng.
Theo quá trình tìm hiéu, phân tích của nhóm, giải thuật Ethash [1] bao gồm các giải thuật nhỏ hon đó là Keccak (gồm Keccak512 và Keccak256), hàm FNV va phép modulo (mod) Hiện nay, có nhiều nghiên cứu về các giải thuật con này và
được trình bày ở một số bài báo được đăng tải trên tạp chí IEEE Tuy nhiên các
nghiên cứu này được tiến hành nghiên cứu, tối ưu phần cứng không hướng tới việc
đề tối ưu phần cứng cho hệ thống lớn Ethash.
Trong bài báo [2], giải thuật Keccak256 được hiện thực theo kiến tric Iterative
là một kiến trúc truyền thống với tần số đạt được là 301.57 MHz Ở bài báo [3], tác
giả tối ưu kiến trúc Iterative băng cách tối ưu hoá bộ control của hệ thống kết quả
đạt được tốt hơn so với nghiên cứu [2] có tần số đạt được 309,6 MHz, Throughput
và Efficiency lần lượt là 14.04 Gbps và 11.24 Mbps/Slices
Trong bài báo [4], tác giả có đề cập đến kiến trúc pipeline bằng việc đặt các
thanh ghi (register) giữa các khối tính toán giúp rút ngắn critical path điều đó giúp
tăng tốc độ tính toán của hàm băm trên FPGA nhưng vẫn đảm bảo chi phi area ởmức vừa phải Trong đó bài báo số [4] hiện thực thiết kế trên nền tảng Virtex-7 cókết quả là tan số đạt được là 832.848 MHz, Throughput là 36.985 Gbps, do vậyEfficiency của kiến trúc đạt được rất tốt bằng 22.11 Mbps/Slices Bên cạnh đó, bàibáo [5] cũng hiện thực thiết kế theo kiến trúc pipeline 2 tầng nhưng trên nền tảngArria 10 với kết quả tần số khá tốt là 498.62 MHz, Throughput và Efficiency đạt
Trang 14Hiện nay, GPU được sử dung phé bién trong việc dao ETH Vì trên GPU sử
dụng nhiều core dé xử lý nên thông số Hashrate cao, kèm theo năng lượng tiêu tốn
lớn dẫn đến Efficiency nhỏ Bảng 1.2 là kết quả hiện thực Ethash trên GPU trong
[7], [8].
Cuda Core
: : sài, Hashrate | Power | Efficiency
Design Devices Stream
Vi vậy ở dé tài này, nhóm sẽ tối ưu giải thuật mã hoá Keccak trên phan cứng
theo kiến trúc pipeline nhằm đạt tần số cao Bên cạnh đó nhóm sẽ nghiên cứu tối ưu
các module thành phần trong hệ thống Ethash từ đó cải thiện Hashrate và giảm nănglượng tiêu tốn của hệ thống
Trang 151.3 Mục tiêu đề tài
Trong đề tài khóa luận tốt nghiệp nhóm sẽ đặt ra hai mục tiêu chính dưới đây:
1.3.1 Mục tiêu cho hàm Keccak
e r= 1600-— 2*d = 1088, là hăng số (Đối với Keccak256, d = 256).
e Fmax: tần số hoạt động tôi đa của thiết kế.
e Nmsg: số lượng message_in được xử lý đồng thời tại một thời điểm
e Latency: tông số chu kỳ dé cho ra giá trị hash của Msg
e Area: tông sé slice chiếm dụng khi tổng hợp trên phần cứng FPGA
Trang 16Giá trị max va Area thu được sau khi tông hợp thiết kế bằng công cụ ISEDesign Suite Đề thiết kế đạt được Throughput tốt, thì chúng ta cần nâng cao Fmax
và giảm Latency xuông mức tối thiêu Đồng thời Area nhỏ nhất dé có thé đạt đượcEfficiency tét nhất
1.3.2 Mục tiêu cho hệ thống Ethash
Bảng 1.4 Mục tiêu thiết kế hệ thống Ethash
Area Frequency | Throughput | Hashrate
(Slices) (KH/s)
Ethash | vitex-7| §000 16 0.077 150
dé xuat
Muc tiéu nhom dat ra cho hé thống Ethash được trình bày ở Bảng 1.4 Đề đánh
giá hệ thống Ethash, thông số Hashrate được xác định như sau:
Với Power là năng lượng tiêu thụ của hệ thống Ethash tính theo đơn vị Watt
(W) khi hiện thực thiết kế trên FPGA Virtex-7 VC707 bằng công cụ Vivado So
sánh Hashrate của hệ thống Ethash trên nền tảng FPGA với trên GPU thì rất chênhlệch vì GPU sử dụng rất nhiều core để xử lý và tính toán Chính vì vậy nhóm đặt ra
mục tiêu so sánh Efficiency đê xem độ hiệu quả của hai nên tang.
Trang 17Bang 1.5 Mục tiêu Efficiency của hệ thống Ethash
Báo cáo này được chia làm năm chương chính Chương đâu tiên giới thiệu vê
đê tai luận văn, một sô nghiên cứu liên quan và mục tiêu đê tài Các chương tiêp theo được trình bày như sau:
Chương 2: Cơ sở lý thuyết
Chương 2 sẽ trình bay tổng quan những lý thuyết về Blockchain, Ethereum,
Ethereum mining, giải thuật Ethash, giải thuật Keccak, hàm FNV và phép modulo.
Chương 3: Kiến trúc đề xuất
Dựa vào những kiến thức đã tìm hiểu được ở chương 2, chương 3 là phần trình
bày về kiến trúc tổng thể cho hệ thống Ethash Ở chương này, các thành phần của
thiết kế sẽ được trình bay một cach chi tiét nhu hé thống Ethash, kiến trúc hàm
Keccak và các thành phan trong Main_Loop
Trang 18Chương 4: Kiểm tra và đánh giá kết quả
Chương 4 trình bày về phương pháp đánh giá và kiểm tra kết quả thực hiện đềtài Cụ thé, kết quả thực hiện trên phần mềm bằng ngôn ngữ Python sẽ được so sánh
với các khối thông tin đã có sẵn trên Ethereum Blockchain và kết quả hiện thực
phần cứng sẽ được so sánh với kết quả hiện thực phần mềm Đồng thời kết quả hiệnthực phần cứng sẽ được so sánh, đánh giá với các nghiên cứu liên quan
Chương 5: Kết luận và hướng phát triển
Chương 5 trình bày tóm tắt toàn bộ công việc của nhóm và những kết quả đã
đạt được Đồng thời, các hướng nghiên cứu khả thi cho đề tài trong tương lai cũng
được trình bày trong chương này.
Trang 19Chương2 CƠ SỞLÝ THUYET
2.1 Công nghệ Blockchain
2.1.1 Giới thiệu về Blockchain
Blockchain là hệ thống cơ sở đữ liệu dạng khối cho phép người dùng lưu trữ
và truyền tải thông tin một cách an toàn Các khối thông tin này được liên kết với
nhau bởi một hệ thống mã hoá vô cùng phức tạp Chúng hoạt động độc lập, có thê
mở rộng theo thời gian và được quản lý trực tiếp bởi những người tham gia chứ
không thông qua bắt cứ bên trung gian nào.
Một Blockchain thường được xây dựng như một hệ thống phân tán có chức
năng như một quyền số cái phi tập trung Blockchain sở hữu rất nhiều nút độc lập
có khả năng xác thực thông tin trong truyền tải đữ liệu mà không đòi hỏi bên trung
gian để xác nhận thông tin Điều này có nghĩa là có nhiều bản số cái (phân tán) và
không có tổ chức nào nắm quyền kiểm soát duy nhất (phi tập trung) Nói một cách
đơn giản, mỗi người dùng tham gia vào mạng Blockchain sẽ giữ một bản sao điện
tử của dữ liệu Blockchain Dữ liệu Blockchain được cập nhật thường xuyên tất cả
các giao dịch mới nhât và đông bộ với bản sao của người dùng.
Thông tin trong Blockchain không thé bị thay đổi và chỉ được bổ sung thêm
khi có sự đồng thuận của tất cả các nút trong hệ thống VỊ vậy, có thé nói
Blockchain ra đời để chống gian lận và thay đổi các dữ liệu trong các giao dịch.
Ngay cả khi nếu một phần của hệ thống Blockchain sụp đồ, những máy tính và nútkhác sẽ tiếp tục hoạt động để bảo vệ thông tin, giữ cho mạng lưới tiếp tục hoạt
động.
2.1.2 Đặc điểm chính của Blockchain
Không thể làm giả, không thể phá hủy các chuỗi Blockchain: Các chuỗi
Blockchain gần như không thể bị phá hủy được, và theo lý thuyết thì chỉ có máytính lượng tử mới có thé can thiệp vào và giải mã chuỗi Blockchain và nó chỉ bị phá
hủy hoàn toàn khi không còn internet trên toàn cau.
10
Trang 20Bat biến: Dữ liệu trong Blockchain gần như không thé sửa đổi được (chỉ cóthé sửa đổi được bởi chính người đã tạo ra nó, nhưng phải được sự đồng thuận của
các nút trên mạng) và các dữ liệu đó sẽ lưu giữ mãi mãi.
Bảo mật dữ liệu: Các thông tin, dữ liệu trong các chuỗi Blockchain được phân
tan và an toàn tuyệt đối chỉ có người nắm giữ private key mới có quyền truy xuất dit
liệu đó.
Minh bạch: Ai cũng có thé theo dõi được đường di của dữ liệu trong
Blockchain từ dia chỉ này tới dia chỉ khác và có thê thống kê toàn bộ lịch sử trên địa
chỉ đó.
Hợp đồng thông minh: Là các kỹ thuật số được nhúng bởi một đoạn code
if-this-then-that (IFTTT) trong hệ thống, cho phép chúng tự thực thi mà không cần
bên thứ ba Blockchain không cần bên thứ ba tham gia vào hệ thống, và nó bảo đảm
rang tất cả các bên tham gia đều biết được chi tiết hợp đồng và các điều khoản sẽ
được tự động thực hiện một khi các điều kiện được bảo đảm
2.1.3 Cac công nghệ hình thành nên Blockchain
Mật mã học: Blockchain sử dụng các hàm mã hoá đối xứng và bất đối xứng,
hàm băm, chữ ký điện tử dé tao ra một tài liệu số an toàn, minh bach và không thé
xóa sửa Mỗi người dùng tham gia vào mạng đều sở hữu cặp khóa chung (Public
key) và khóa riêng (Private key) của mình, khóa riêng chỉ do chính chủ sở hữu nắmgiữ, điều này không những giúp bảo vệ an toàn cho người tham gia vào mạng mà
còn chứng minh được một giao dịch được tạo ra từ người nào bằng cơ chế tạo chữ
ký số từ cặp khóa này, và chữ ký sẽ là duy nhất Ngoài ra Blockchain còn sử dụng
hàm băm dé đảm bảo tính toàn vẹn của đữ liệu.
Mạng ngang hàng: Tât cả các thành viên tham gia vào mạng đêu đóng vai trò
tương đương với nhau và đêu năm giữ các bản sao giông nhau của trạng thái toàn
mạng Blockchain.
II
Trang 21Cơ chế đồng thuận: Các thành viên tham gia vào mạng xác nhận các giao dịch
(Transactions) theo luật đồng thuận, chỉ Transactions đạt được số lượng đồng thuận
nhất định mới được coi là hợp lệ và lưu vào mang Blockchain Và lúc này, thông tin
được các Transactions đó mang theo mới có giá tri.
2.1.4 Cac khái niệm cơ bản trong Blockchain
1) Node
Trong lĩnh vực tiền điện tử, Node (nút) được hiểu là thiết bị thuộc mảngBlockchain Nó là yếu tố tạo nên nền tang cho phép phan công nghệ Blockchain tồntại, hoạt động được Mạng lưới này chứa những nút phân bổ hợp lý, giúp thực hiệncác nhiệm vụ khác nhau Mỗi nút đều là một thiết bị điện tử nào đó đang hoạt động
xung quanh ta, ví dụ như PC, Laptop hay điện thoại Chỉ cần là nó được kết nối với
mạng Internet và có địa chỉ IP thì sẽ tạo ra một nút.
Vai trò của một Node là hỗ trợ mạng lưới bằng cách duy trì một bản sao của một Blockchain, trong một số trường hợp Node đó dùng dé xử lý các giao dich Các Node thường được bố trí theo cấu trúc dạng cây, được gọi là cây nhị phân Mỗi một
đông tiên điện tử có các Node riêng, duy trì các bản ghi giao dịch của loại tiên đó.
Trang 22Hình 2.1 thể hiện mô hình kết nối của các Node theo cấu trúc mạng ngang
hàng của mạng Blockchain Có thể thấy, các Node là các phần riêng lẻ của một
Blockchain, có cấu trúc đữ liệu lớn hơn, và khi chủ sở hữu của các Node này sẵnsàng đóng góp tài nguyên máy tính của họ để lưu trữ và xác thực các giao dịch, thì
họ có cơ hội thu phí giao dịch và kiếm được phần thưởng bằng tiền điện tử Quy
trình này được gọi là “đào tiền ảo” (mining) Việc xử lý các giao dich này có thé sẽ
yêu cầu công suất tính toán và xử lý dữ liệu lớn, điều này có nghĩa là khả năng đáp
ứng của một máy tính trung bình là không đủ Vì vậy các thợ đào đầu tư vào các
thiết bị máy tính có CPU hoặc GPU cực mạnh dé theo kip yéu cau vé cong suất xử
lý, xác thực các giao dịch trong Blockchain và nhận phần thưởng cho công việc
2) Block
Trong Blockchain đơn vị cơ bản để lưu trữ đữ liệu là các block (khối), các
block được kết nối với nhau thông qua các giá trị định danh (giá trị băm) đặc trưngcho block Đây là đặc điểm lưu trữ đữ liệu riêng biệt trong Blockchain Kiến trúclưu trữ này tạo nên tính toàn vẹn và không thé bị sửa đồi cho Blockchain
Block 1 Block 2 Block 3 Header Header Header
Hash of previous Hash of previous Hash of previous Block Header Block Header Block Header
Merkle root Merkle root Merkle root
Block 1 Block 2 Block 3 Trasactions Trasactions Trasactions
Hình 2.2 Mô hình chuỗi khối trong Blockchain
Hình 2.2 cho ta thấy các block được liên kết với nhau theo dạng khá tương đồng với cấu trúc đữ liệu của danh sách liên kết Trong danh sách liên kết, liên kết
từ Node trước trỏ đến Node sau được gọi là con trỏ (pointer) Con trỏ là các biến
13
Trang 23lưu trữ địa chỉ của Node tiếp theo Nó được sử dung dé chuyên tiếp sang Node tiếp
theo trong danh sách liên kết Node cuối cùng trong danh sách được liên kết có một
con trỏ lưu giá trị là null biéu diễn danh sách đã kết thúc Trong cấu trúc dữ liệu củaBlockchain, liên kết từ block sau trỏ đến block trước được gọi là hash pointer Hashpointer được sử dung dé tra cứu block trước đó của giao dịch và còn được sử dụng
dé xác minh rang các giao dịch được lưu trữ trong block trước đó không bị giả mạo
Hash pointer là giá trị băm header data của block trước đó Mỗi hash sẽ được mã
hóa bởi một giải thuật tùy thuộc vào mỗi công nghệ tiền ảo Ví dụ đối với Ethereum
là Ethash, đối với Bitcoin là double SHA256, đối với Litecoin là Scrypt
Về cơ bản, một block trong Blockchain sẽ có 2 thành phần chính: BlockHeader (phần tiêu đề) và Block Data (phần dữ liệu)
e Block Header: ghi lại các thông tin mã hóa liên kết với block liền kề trước đó
và thông tin về thời gian nhằm đảm bảo tính toàn vẹn cho hệ thống
Blockchain Bên cạnh đó, Block Header còn chứa các trường thôngtin do hệ
thống quy định là các điều kiện mà một block phải thỏa mãn thì mới được
thêm vào Blockchain Quá trình tạo một block mới được gọi là mining và
được thực hiện bởi các miners Tuy nhiên mỗi công nghệ tiền điện tử sẽ có
các trường thông tin khác nhau ở phan tiêu dé.
e Block Data: danh sách các giao dịch hoặc trạng thai dữ liệu được ghi vào số
cái Blockchain trong một khoảng thời gian nhất định Kích thước, thời gian
và sự kiện kích hoạt cho các khối là khác nhau đối với mỗi loại Blockchain.
Blockchain có thê ghi lại các dang dữ liệu khác nhau như: giao dịch tiền điện
tử, thông tin cá nhân, dữ liệu cần bảo vệ hoặc hợp đồng thông minh Nhưng
về cơ bản việc ghi lai thay đổi trên dữ liệu đều có thé được coi là giao dịch
Một số tính chat của block trong mạng Blockchain:
e Cách thức dé xác định một block nằm trong Blockchain là thông qua Block
Header.
14
Trang 24e Giá trị băm của Block Header không được gửi qua mạng mà được tính tai
mỗi Node như một phần của quá trình xác minh mỗi block.
3) Memory pool va Candidate block
Khi một giao dich được thực hiện, nó không được thêm trực tiếp vào
Blockchain mà nó sẽ được lưu trữ vào một bộ nhớ tam thời gọi là Memory pool
(hay transaction pool) Sau đó những giao dich nay sẽ được các miners xác thực va
lựa chọn đưa vào Candidate block (block chưa được chấp nhận) và chỉ được thêm
vào Blockchain khi tìm ra kết quả thỏa mãn yêu cầu của hệ thống.
4) Hàm băm
Hàm băm (hay hàm Hash) là một giải thuật mã hóa dữ liệu đầu vào có dé dài
bất kỳ nhưng kết quả nhận được luôn là dữ liệu có độ dài xác định Output của ham
băm thường được gọi là digest hoặc hash value Đối với mỗi một loại công nghệtiền điện tử khác nhau thì sẽ sử dụng những hàm băm khác nhau Ví dụ như
Ethereum sử dụng hàm Keccak256 và Keccak512, Bitcoin sử dụng hàm SHA256.
Hàm băm có các tính chất sau:
e Consistent: với một input đầu vào chỉ cho ra một output duy nhất
e_ One-way: hash(X)= Y Rất khó dé suy ra input X từ kết quả của output Y
e Collision resistant: không tồn tại X, Z ma hash(X) = hash (Z)
2.2 Ethereum
2.2.1 Giới thiệu về Ethereum
Ethereum được định nghĩa và hiểu theo một cách đơn giản nhất đó chính là
một nền tảng phi tập trung dựa trên công nghệ Blockchain, được biết đến nhiều nhất
với tiền điện tử gốc của nó, được gọi là đồng Ether (ETH) Bản chất phân tán của
công nghệ Blockchain là điều làm cho nền tảng Ethereum an toàn và sự bảo mật đó cho phép ETH tích lũy giá trị Logo của Ethereum được thé hiện ở Hình 2.3.
15
Trang 25Hình 2.3 Logo Ethereum [9]
Đây là một nền tảng cho phép người dùng sử dụng Hợp đồng thông minh(Smart Contract) và Ứng dụng phi tập trung (dApp) để giúp các giao dịch được thực
hiện nhanh chóng hơn, ngăn ngừa những hành vi lừa dao.
Ethereum được cho là nền tảng hữu ích bởi nó không chỉ cho phép chuyên các
loại tiền mã hóa mà còn có khả năng tự tạo ra hệ sinh thái tài chính phân tán của riêng mình Có thé thấy, ý tưởng chính dang sau việc xây dựng Ethereum là mang đến cho các nhà phát triển cơ hội có thé tự tạo và khởi chạy mã riêng trên một mạng phân tán thay vì tồn tại một máy chủ tập trung Nhờ đó mà các ứng dụng được tạo
ra này không thể bị tắt hoặc bị kiểm duyệt.
Ethereum bản thân là giao thức, còn đồng tiền của nó được là Ether (ETH) Ether có thể được dùng để giao dịch qua lại giữa các tài khoản cũng như được sử
dụng làm tiền thưởng cho thợ dao (miner) khi họ đào được một block mới
2.2.2 Khối block trong Ethereum Blockchain
1) Block Header
Trong Ethereum, khối Block Header bao gồm các trường thông tin được trình
bày chỉ tiết trong Bang 2.1 [1] sau:
16
Trang 26Bảng 2.1 Cấu trúc Block Header của Ethereum
Giá trị băm nút gốc của cây trạng thái
gồm tat cả số dư tài khoản, lưu trữ hợpđồng, mã hợp đồng và tài khoản các nút
ở bên trong Mục đích của việc tạo ra
trường này nhằm để nó cho phép một
nút chỉ được cung cấp khối cuối cùng,cùng với một số đảm bảo rằng khốicuối cùng thực sự là khối gần đây nhất,
kỳ nhanh chóng mà không cần xử lý bất
kỳ giao dịch lịch sử nào, chỉ bằng cách
tải xuống phần còn lại của cây từ các
nút trong mạng, xác minh rang cây là chính xác bằng cách kiểm tra xem tất cả
các băm có khớp với nhau không và sau
đó tiếp tục từ đó
transactionsRoot
Giá trị băm nút gốc của cây Merkle tat
cả giao dich có trong block Transaction trie là nơi ghi lại các vector
Trang 27yêu cầu giao dịch.
Giá trị băm nút gốc của cây receipt.
receiptsRoot Receipt tries là nơi ghi lại các kết quả
sau giao dich.
Cấu trúc dữ liệu Bloom Filter Bộ loc
Bloom, phát minh bởi Burton Howard
Bloom năm 1970, là một cấu trúc dữ
logsBloom ag eg \
liệu xác suât đê kiêm tra xem một phân
tử có nằm trong một tập hợp hay
không.
Độ khó của block Đây chính là trường
difficulty quyết định điều kiện cần thỏa mãn của
hệ thống.
Trang 28của mixHash bé hơn một gia tri mục tiêu cho trước.
Block Header là thành phần thiết yếu của block, cũng chính là dữ liệu quan trọng cho hệ thống dao Ether Cấu trúc của Block Header gồm 15 trường được trình
bày ở Bảng 2.1 Mỗi khối đều chứa một giá trị tham chiếu đến khối trước đó
(parentHash) trong Block Header.
2) Thông tin các giao dịch
Giao dịch Ethereum dé cập đến một hành động được thực hiện bởi một tài
khoản thuộc sở hữu bên ngoài, nói cách khác là một tài khoản được quản lý bởi con
người, không phải một hợp đồng Vi dụ: nếu Bob gửi cho Alice 1 ETH, tài khoản của Bob phải được ghi nợ và của Alice phải được ghi có Hành động thay đổi trạng
thái này diễn ra trong một giao dịch.
Bat kỳ Node nào cũng có thé phát yêu cầu thực hiện một giao dich; sau khi
điều này xảy ra, một miner (thợ đào) sẽ thực hiện giao dịch và tuyên truyền sự thay
đôi trạng thái kết quả cho phan còn lại của mạng
from: “”BxEA674†fdDe714†d378de3EdFBF5BAA3716B888ec8”, to: ”8xac83bb73b6a8e188538af††4d†5877c2hb3d481e5a",
gasLimit: "21888", gasPrice: ”288”,
nonce: ”8”, value: ”188888808888”,
Hình 2.4 Hình ảnh minh họa dt liệu giao dịch gửi di [10]
19
Trang 29Một giao dịch được gửi đi sẽ gồm các trường sau (được minh họa ở Hình 2.4):
e© recipient: Địa chỉ người nhận (nếu là tài khoản thường thi giao dich sẽ
chuyển value Nếu là tài khoản hợp đồng thì giao dịch sẽ được thực thi theo
mã hợp đồng).
e signature: Định danh của người gửi Nó được tạo khi khóa riêng tư của
người gửi ký vào giao dich và xác nhận rằng gửi người đã ủy quyên giao
dịch này.
e value: Số lượng ETH mà người gửi muốn chuyền.
e dafa/inpuí: Trường tùy chọn, chứa các dữ liệu tùy ý.
e gasLimit: Số lượng đơn vị gas tối đa có thê được tiêu thụ trong giao dịch
e gasPzice: Phí người gửi trả cho mỗi đơn vị gas.
Gas là một tham chiếu đến tính toán cần thiết dé xử lý giao dịch bởi một
miner Người dùng phải trả một khoản phí cho việc tính toán này gasLimit va
gasPrice quyết định phi giao dịch tối đa cần trả cho miner theo công thức sau:
Transaction fee (gwei) = gasLimit * gasPrice (gwel)
(2.1)
1 ETH = 1.000.000.000 gwei
2.2.3 Hop đồng thông minh
Hop đồng thông minh được Nick Szabo mô ta lần đầu tiên vào những năm
1990 Vào thời điểm đó, ông định nghĩa hợp đồng thông minh là một công cụ dé
chính thức hóa và bảo mật mạng máy tính bằng cách kết hợp các giao thức với giao diện người dùng Trong thế giới của tiền mã hóa, chúng ta có thé định nghĩa hop đồng thông minh là một ứng dụng hoặc chương trình chạy trên Blockchain Hop
đồng thông minh giống như một hợp đồng kỹ thuật số bị bắt buộc thực hiện bởi một
bộ quy tắc cụ thé Các quy tắc này được do bộ mã máy tính xác định trước, và tat cả
các Node trong mạng đều phải sao chép và thực thi các quy tắc đó.
Về bản chất, các hợp đồng thông minh trên Blockchain cho phép tạo ra các
giao thức không cần dựa trên sự tin cậy Tức là hai bên trong hợp đồng có thể đưa
20
Trang 30ra các cam kết thông qua Blockchain mà không cần phải biết hoặc tin tưởng lẫn
nhau Họ có thé đảm bao rằng nếu các điều kiện của hợp đồng không được thỏa
mãn, hợp đồng sẽ không được thực thi
Về cơ bản, hợp đồng thông minh Ethereum bao gồm một mã hợp đồng và hai khóa công khai Khóa công khai thứ nhất là khóa do người tạo hợp đồng cung cấp Khóa còn lại đại điện cho chính hợp đồng, khóa này có vai trò như một mã định
danh kỹ thuật số duy nhất cho mỗi hợp đồng thông minh
Target là số nguyên 256 bit, quy định yêu cầu dé tìm ra lời giải cho bài toán
PoW của Ethereum Theo giao thức Ethereum, một block mới sẽ được tạo ra khi kết
quả bai toán PoW nhỏ hơn hoặc bằng target Do đó, nếu giá trị target càng nhỏ thì
việc giải quyết bài toán sẽ trở nên khó khăn hơn
Gia tri target ở đây sẽ phụ thuộc vào gia tri của trường difficulty trong Block Header và được tính toán theo công thức (2.2) sau:
2256
target = difficulty (2.2)
Thời gian dé tạo một block mới trong Ethereum Blockchain tối đa là 15 giây
Chính vì vậy giá trị difficulty sẽ được cập nhật sao cho thời gian trung bình mỗi
block mới được tạo là tối đa 15 giây
21
Trang 312.2.6 Qua trình block được thêm vào Ethereum Blockchain
Khi một giao dịch mới được tạo ra, nó chưa được đưa vào Blockchain mà chỉ
được lưu trữ tại vùng nhớ tạm của mỗi Node gọi là memory pool Các miners sẽ
chọn lựa các transaction từ các vùng nhớ tạm này và tạo thành Candidate block Công việc của các miners là đưa các Candidate block vào Blockchain, quá trình nay được gọi là mining.
Một Candidate block sẽ trở thành block chính trong Ethereum Blockchain khi
nó được miner tìm ra con số nonce phù hợp nhanh nhất Ngoài block chính thì cũng
sẽ có các ommers Miner tạo block được thêm vào Blockchain sẽ nhận được một
phần thưởng bao gồm phần thưởng cho việc giải quyết bài toán PoW (Ethash) và
toàn bộ phí giao dich có trong block đó, còn các ommers sẽ nhận được phần thưởng
ít hơn.
2.3 Ethereum mining
2.3.1 Tong quan về Ethereum mining
Ethereum mining thực chat là một quá trình mà các miners sẽ giải quyết bài toán PoW có tên là Ethash [6] nhằm tìm ra số nonce sao cho kết quả bài toán nhỏ hơn hoặc bằng target.
Bảng 2.2 Giải thuật Ethereum mining
Giải thuật 1: nonce = EtherMining (full size, DAG, header, difficulty)
1: | nonce = 0
target = 27°°/ difficulty
while nonce < 2 do
ethash_value = Ethash (full_ size, DAG, header, nonce)
if ethash_value <target then
return nonce else
nonce = nonce + 1
end if end while
—
22
Trang 32Giải thuật đào Ether (đơn vị tiền tệ trong Ethereum) được mô tả bằng mã giả(pseudo code) như trong Bảng 2.2 Đầu vào của hệ thống Ethereum mining gồm:
full_size: Kích thước của tập tin DAG tính theo đơn vi bytes và sẽ được cập
nhật theo DAG.
DAG: Là một tập dữ liệu có kích thước ban đầu là 1GB, nó sẽ được cập nhật
và tăng kích thước sau mỗi epoch (30000 block) DAG ban đầu được tạo ra
từ hệ thống được lưu trữ ở dưới dạng file hex, và Little endian mỗi 32 bit Đề
phù hợp với thuật toán Ethash nhóm đã chuyền file hex này thành một file có
số dòng bang full size / 64, mỗi dòng có độ dài 64 bytes tương đương 512
bit.
header: Có độ dai 256 bit và được mã hóa từ tat cả các trường trong Block
Header (ngoại trừ trường nonce và mixHash) thông qua hàm Recursive
Length Prefix (RLP) RLP là một định dạng tuần tự hóa do các nhà phát triển
Ethereum tạo ra cho tất cả các cấu trúc dữ liệu như tài khoản, giao dịch và
khối RLP hoạt động trên chuỗi và danh sách byte Đối với chuỗi byte, các
tiêu đề nhỏ được thêm vào phụ thuộc vào độ dài Đối với danh sách, cácphần tử được mã hóa riêng biệt và nói với nhau
difficulty: Là trường difficulty trong Block Header.
Ethash là khối tính toán chính của hệ thống Ethereum mining Đầu ra của
Ethash là một chuỗi “ethash_ value” có độ dài 256 bit Quá trình này được thực hiện
cho tới khi giá trị “ethash_ value” này nhỏ hơn hoặc băng giá trị mục tiêu (target)
đang được duy trì trong Blockchain Lúc này, giá trị tham số nonce thỏa mãn yêu
cầu được đưa lên Ethereum Blockchain Các giá tri nay sẽ được chấp nhận nếu có
trên 50% tông sô các miner xác thực Cuôi cùng, một lượng Ether mới được sinh ra
cùng với tổng phi giao dịch chứa trong block đó sẽ được trao cho miner tìm ra
“ethash value” hợp lệ Nếu “ethash_value” này lớn hon target, các miner sẽ tăng
tham số nonce lên 1 cho tới khi tìm được “ethash_ value” thỏa mãn tiêu chí hệ thôn g
dat ra.
23
Trang 33Nonce là một tham số 64 bit Sau khi ta đã thực hiện tăng tham số nonce lên
tới 0xFFFFFFFFFFFFFFFF mà “ethash value” vẫn lớn hơn target thì ta thực hiện
việc thay đôi các giao dịch trong Candidate block hoặc trường timestamp nhằm thayđổi Block Header
Trong dé tai này, nhóm sẽ hiện thực thuật toán Ethash dé tìm ra giá trị
“ethash value”, giá trị này vẫn chưa được so sánh với target.
2.3.2 Ethash
Ethash là một thuật toán khai thác băng chứng công việc (PoW) được thực
hiện bởi mạng Ethereum Blockcham và các loại tiền điện tử khác dựa trên
Ethereum.
Khai thác bằng chứng công việc đảm bảo an toàn cho các mạng phân tán và
xử lý các block giao dịch trên Blockchain Nó liên quan đến việc lay dữ liệu từ một
block và sau đó băm nhiều lần dữ liệu đó bằng cách sử dụng thuật toán băm mật
mã Kết quả là đầu ra có độ dài nhất định đại diện cho giá trị băm Cac miners kết
thúc quá trình băm này cho đến khi kết quả nhỏ hơn hoặc bằng target Vì vậy, trong
trường hợp của Ethereum, thuật toán được sử dụng cho quá trình này là Ethash.
Bảng 2.3 trình bày về giải thuật Ethash, điểm đáng quan tâm nhất là trong giải
thuật này còn có sự góp mặt của một sỐ giải thuật nhỏ hơn đó là Keccak512, FNV,
phép modulo (mod) và Keccak256 Các giải thuật sẽ được trình bày cụ thé ở những
Trang 34Index =FNV(i @ Seed[0], Mix[i mod w]) mod (n / mix hashes) * mix hashes
Data= {DAG[Index], DAG[Index + 1]}
Mix = FNV(Mix, Data) end for
Cmix = 6699
h1 = FNV(Mix{i], Mix[i+1]) h2 = FNV(h1, Mix[i+2])
h3 = FNV(h2, Mix[i+3]) Cmix = {Cmix, h3}
end for ethash_value = Keccak256({Seed, Cmix})
return ethash value
Giải thuật Ethash gồm 3 phan chính:
e Keccak512: Đầu vào là header và nonce được nối lại thành chuỗi có độ dài
320 bit Kết quả trả về sẽ là một chuỗi có độ dài 512 bit, và kết quả này sẽ là input cho các phần tiếp theo.
e Main Loop: Gồm có 2 chuỗi vòng lặp Chuỗi 1 gồm 64 vòng lặp, mỗi vòng
lặp gồm truy xuất data từ tập tin DAG và sử dụng hàm FNV để tính toán các
giá trị cần thiết Chuỗi 2 dùng dé thu gon giá trị Mix từ 1024 bit thành giá tri
Cmix có độ dài 256 bịt.
e Keccak256: Đầu vào cho ham này sé là chuỗi ký tự hexa, được ghép nối từ
kết quả của Keccak512 và kết quả Cmix từ Main Loop, có độ dai 768 bit.Đầu ra của Keccak256 là ethash_ value có độ dài 256 bit cũng chính là đầu racủa hệ thống Ethash
2.3.3 Keccak
Keccak là một hàm mật mã đa năng được thiết kế bởi Guido Bertoni, Joan
Daemen, Michaél Peeters va Gilles Van Assche Mặc dù Keccak có thé được sử
dụng cho các mục đích khác, nó được biết đến nhiều nhất như một hàm băm cungcấp mức độ bao mật cao hơn khi so sánh với các thuật toán băm cũ hơn như SHA-1
và SHA-2.
25
Trang 35Keccak là một họ các hàm băm mà cuối cùng đã được chuẩn hóa thành SHA-3
(SHA256 là một phần của họ các hàm băm được gọi là SHA-2) Ethereum gọi nó là
Keccak thay vì SHA-3 vì nó có các thông số hơi khác so với SHA-3 hiện tại
Keccak là một hàm băm mã hóa dữ liệu đầu vào có độ dài bất kỳ và đầu ra là một giá tri hash có chiều dai nhất định, giải thuật này được thiết kế dựa theo cau trúc SPONGE [11] như Hình 2.5 Cau trúc SPONGE có 4 yếu tố chính là r (rate), c
(capacity), hàm xử lý f (chính là KeccakRound trong Keccak) và pad (quy luật
padding) Hàm mã hoá Keccak thực chất là Keccak-p[b, nr] với b =r + e= 1600 là
số bit của mảng trang thái, giá trị c được xác định bằng 2 lần độ dài gia tri dau rahash Z mong muốn va nr = 24 là số vòng lặp cua KeccakRound Ở dé tai này, nhóm
hiện thực Keccak256 có độ dai output là 256 bit sẽ chính là ham Keccak-p[1600, 24] với r = 1088, c = 512 Keccak512 sẽ có độ dai output là 512 bit chính là ham Keccak-p[1600, 24] voir = 576, c = 1024.
Hình 2.5 Cấu trac SPONGE
Bảng 2.4 là giải thuật Keccak, trình bay một cách tổng quan nhất về tất ca các
loại Keccak đều có một giải thuật chung như vậy Tùy vào từng loại ta sẽ có chiều
dai output khác nhau và cách hiện thực phần cứng khác nhau Giải thuật Keccakgồm 4 giai đoạn: Padding, Mapping, KeccakRound và Truncating
26
Trang 36Như đã trình bày, giải thuật Ethash sử dụng đến 2 loại là Keccak512 và
Keccak256, nhưng về giải thuật chúng khá tương tự nhau chỉ khác ở 3 giai đoạn là
Padding, Mapping và Truncating (sẽ được trình bày cụ thể ở những phần sau)
Bảng 2.4 Giải thuật Keccak
Giải thuật Keccak sẽ hoạt động như sau:
e Đầu tiên, giải thuật này sẽ nhận đầu vào là một message_in có chiều đài xác
định và tiến hành thực hiện bước Padding, cho ra một chuỗi 10*1 mà khi
nhận được đảm bảo sẽ bằng bội số của r
e_ Chuỗi thu được sau khi ghép nối sẽ được chia nhỏ ra thành n block sao cho
độ dài mỗi block đúng bằng r bit
e Nếu số lượng block bang 1 (n = 1) thi chúng ta chỉ cần thực hiện bước
Mapping và KeccakRound một lần Ngược lại số lượng block nhiều hơn 1 (n
> 1) thì sau khi có kết quả KeccakRound của block đầu tiên, chúng ta cần Mapping kết quả này với block tiếp theo rồi thực hiện KeccakRound mới, và quy trình này sẽ lặp lại cho đến block cuối cùng.
27
Trang 37e Sau cùng khi đã tính toán xong KeccakRound cho block cuối cùng, ta thực
hiện bước Truncating dé lây ra đúng độ dai dau ra mong muôn.
Mặc dù cả hai hàm Keccak512 và Keccak256 đều có thé xử lý đầu vào lànhững message_¡n có nhiều block Tuy nhiên điểm đặc biệt trong giải thuật Ethash
là đầu vào của Keccak512 là 320 bit, còn Keccak256 là 768 bit, cả hai đầu vào nàyluôn bé hơn z bit tương ứng của từng hàm, cho nên sau khi thực hiện Padding sốlượng block thu được của mỗi hàm bang 1 (n= 1) Vì vậy mà mỗi hàm băm này chi
cần xử ly Mapping, KeccakRound cho duy nhất | block.
1) Quy ước mảng trạng thái
Mang trạng thái trong Keccak là một mảng các bit được liên tục cập nhập
trong quá trình xử lý Có thé biểu diễn trạng thái đầu vào va đầu ra của Keccak là
một chuỗi b bit, còn khi biểu diễn đầu vào và đầu ra của các hàm con trongKeccakRound là một mang bit ba chiều 5x5xw [11]
Nếu A là ký hiệu của một mảng bit 5x5xw biểu diễn trạng thái, thì chỉ số của
nó là bộ ba số nguyên (x, y, z) sao cho 0 <x <4,0 <y <4 và 0<z<(w- 1) Bit tương ứng với (x, y, z) được ký hiệu là A[x, y, z] Mang trạng thái biểu diễn cho
trạng thái bằng một mảng ba chiều với chỉ số được xác định theo cách này
Mang trang thái ba chiều và các mang con ít chiều hon được minh hoa trong Hình 2.6 đối với trường hợp b = 200 bit, do đó w = 8 (Hàm Keccak256 có giá trị b =
1600 và w= 64 quá lớn dé biểu diễn hình minh họa nên nhóm sẽ minh hoa theo giá
trị b = 200 và w = 8).
Dé giải thích cách thức hoán vị và xoay bit mảng trạng thái của các hàm con
trong KeccakRound thì nhóm quyết định sử dụng các mảng con hai chiều và một
chiều dé mô tả cách thức hoạt động của chúng nhằm dé hình dung hơn Các mảng
con hai chiều được goi là các sheet, plane va slice, và các mảng con một chiều được
gọi là column (cột), row (hang) và lane (làn), trong đó:
e_ sheet: là một mang con gồm b/ 5 bit theo trục tọa độ x cố định (không đổi)
28
Trang 38e slice: là một mang con gom 25 bit theo trục tọa độ z có định.
e plane: là một mảng con gồm b/5 bit theo trục tọa độ y có định
e row: là một mảng con gồm 5 bit theo tọa độ y và z có định.
e column: là một mảng con gồm 5 bit với trục tọa độ x và z cố định.
e Jane: là một mảng con gồm b/25 bịt theo các trục tọa độ x và y có định.
Hình 2.6 Thành phan của mang trạng thái tổ chức theo nhiều chiều
2) Giai đoạn Padding
O bước này, giải thuật này sẽ nhận đâu vào là một message_¡n có chiêu dài
xác định và tiên hành thực hiện Padding, cho ra một chuôi 10*1 mà khi ghép nôi message_1n với chuôi nay ta được một chuỗi mới mà độ dài nhận được đảm bảo sẽ
băng bội sô của r.
29
Trang 39e Keccak256: chuỗi thu được sau khi ghép nối sẽ có độ dài là 1088 bit.
e Keccak512: chuỗi thu được sau khi ghép nối sẽ có độ dài là 576 bit
Bang 2.5 trình bày giải thuật Padding Out_pad sẽ được tạo ra theo các bước
sau:
e Trước tiên, ta có một bit 1’bl1.
e Kế tiếp, k bit 0 sẽ được nối theo sau, với k là số nguyên dương được tinh
theo công thức k = (— Length(message_in) — 2) mod 7; với Keccak512 có r=
576, Keccak256 có r = 1088.
e Cuối cùng nối một bit 1’b1 vào cuối chuỗi
Bảng 2.5 Giải thuật Padding
Giải thuật 4: Out_pad = Padding (r, Leng
: | k =(- Length(message_in)- 2) mod r
3) Giai doan Mapping
Bang 2.6 trình bày về giải thuật Mapping với đầu vào la S (là gia trị được khởi
tạo từ trước có giá trị 1600’b0 khi ta thực hiện Mapping cho block đầu tiên hoặc làgiá trị đầu ra của KeccakRound đối với việc Mapping cho block tiếp theo), P (chuỗi
thu được sau khi kết nối giữa message_¡n và đầu ra của Padding), i (là thứ tự của
block trong số n block của chuỗi P) Đầu tiên block P[ï] sẽ ghép nối với c bit 0, sau
đó XOR với đầu vào S cho ra một chuỗi có độ dài cố định 1600 bit Đây chính là mảng trạng thái được truyền vào KeccakRound.
Bảng 2.6 Giải thuật Mapping