1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Nghiên cứu và tối ưu thiết kế phần cứng tạo block cho mạng Ethereum Blockchain

79 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu và tối ưu thiết kế phần cứng tạo block cho mạng Ethereum Blockchain
Tác giả Phan Quoc Linh, Nguyen Quoc Truong
Người hướng dẫn ThS. Tran Van Quang
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 79
Dung lượng 32,53 MB

Nội dung

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 3

THONG 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 4

LỜ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 5

MỤ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 6

3.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 7

DANH 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 8

DANH 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 9

DANH MỤC TỪ VIET TAT

Trang 10

TOM 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 11

MỞ ĐẦ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 12

Chươ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 13

chú 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 14

Hiệ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 15

1.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 16

Giá 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 17

Bang 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 18

Chươ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 19

Chươ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 20

Bat 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 21

Cơ 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 22

Hì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 23

lư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 24

e 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 25

Hì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 26

Bả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 27

yê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 28

củ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 29

Mộ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 30

ra 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 31

2.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 32

Giả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 33

Nonce 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 34

Index =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 35

Keccak 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 36

Như đã 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 37

e 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 38

e 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 39

e 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

Ngày đăng: 03/11/2024, 19:04