ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA NGỒ ĐÌNH DŨNG XÂY DỰNG HỆ THỐNG HỖ TRỢ ĐÁNH GIÁ NHÀ HÀNG DỰA TRÊN BLOCKCHAIN A blockchaỉn-based reputation system for HCMC restaurants with respect to quality of service Ngành: Khoa học Máy tính Mã ngành: 60480101 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng 06 năm 2019 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA -ĐHQG -HCM Cán hướng dẫn khoa học: TS Lê Lam Son TS Nguyễn An Khuông Cán chấm nhận xét 1: PGS.TS Vũ Thanh Nguyên Cán chấm nhận xét 2: TS Trần Minh Quang Luận văn thạc sĩ bảo vệ Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 03 tháng 07 năm 2019 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị Hội đồng chấm bảo vệ luận văn thạc sĩ) PGS.TS Đặng Trần Khánh TS Lê Hồng Trang PGS.TS Vũ Thanh Nguyên TS Trần Minh Quang PGS.TS Nguyễn Thanh Bình Xác nhận Chủ tịch Hội đồng đánh giá LV Trưởng Khoa quản lý chuyên ngành sau luận văn sửa chữa CHỦ TỊCH HỘI ĐÒNG PGS.TS Đặng Trần Khánh TRƯỞNG KHOA KH&KTMT ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ •••• Họ tên học viên: Ngơ Đình Dũng MSHV: 1570203 Ngày, tháng, năm sinh: 10/04/1983 Nơi sinh: Khánh Hòa Chun ngành: Khoa học Máy tính Mã số: 604801 I TÊN ĐỀ TÀI: Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa tảng blockchain II NHIỆM VỤ VÀ NỘI DUNG: Thiết kế triển khai thử nghiệm hệ thống hỗ trợ đánh giá từ người tiêu dùng nhà hàng dựa tảng blockchain III NGÀY GIAO NHIỆM VỤ: 25/03/2019 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/06/2019 V CÁN Bộ HƯỚNG DẪN: TS Lê Lam Sơn TS Nguyễn An Khương Tp HCM, ngày 03 tháng 06 năm 2019 CÁN Bộ HƯỚNG DẪN TS Lê Lam Sơn TS Nguyễn An Khương TRƯỞNG KHOA KH&KTMT Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain LỜI CÁM ƠN Kể từ bắt đầu học chương trình cao học ngành Khoa học Máy tính Trường Đại học Bách Khoa Tp.HCM, thời điểm tại, củng cố nhiều kiến thức bổ ích hỗ trợ cho cơng việc Đặc biệt tiếp cận cập nhật nhiều kiến thức nhiều lĩnh vực ngành học Kết này, nỗ lực thân, nhờ vào hỗ trợ lớn bạn học khóa, đồng hành, ủng hộ, động viên gia đĩnh tận tâm, tận tình q thầy, Đặc biệt, dìu dắt, hướng dẫn thầy TS Lê Lam Sơn TS Nguyễn An Khương, tơi có điều kiện để thực luận văn Nhờ hai thầy, tiếp thu nhiều kiến thức chuyên môn, niềm đam mê với lĩnh vực nghiên cứu blockchain ứng dụng dựa tảng này, phương pháp giải vấn đề lĩnh vực có liên quan Mặc dù vậy, thời gian tiếp cận vấn đề luận văn tương đối ngắn, kiến thức thực nghiệm hạn chế, nên nhiều sai sót báo cáo, mong q thầy đóng góp ý kiến, hướng dẫn để tơi tích lũy thêm nhiều kinh nghiệm kiến thức Một lần nữa, xin chân thành cám ơn quý thầy, cô đặc biệt thầy TS Lê Lam Sơn thầy TS Nguyễn An Khương Tp.HCM, ngày 03 tháng 06 năm 2019 Ngô Đĩnh Dũng Lời cảm ơn Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain TĨM TẮT Các cổng thơng tin trực tuyến ngày xem phần thiếu xã hội đại Sự bùng nổ phổ biến thương mại điện tử kéo theo nhiều hình thức kinh doanh, quảng cáo Mỗi sản phẩm, dịch vụ mơ tả hình ảnh, viết, ngồi sản phẩm thường trích dẫn thêm bình luận chấm điểm người tiêu dùng Đối vói dịch vụ ăn uống nhà hàng khơng nằm ngồi xu đó, đánh giá phản hồi từ cộng đồng ảnh hưởng nhiều đến định lựa chọn người tiêu dùng, nhiên thông tin đánh giá phản hồi cộng đồng có thực đáng tin cậy hay khơng, câu trả lời khơng hồn tồn tin cậy Trong số trường hợp, nhà quản lí sửa đổi xố bỏ bình luận tiêu cực, gây bất lợi cho nhà hàng; hoặc, tự viết đánh giá giả mạo, mang ý nghĩa tích cực nhằm mục đích lấy lòng tin từ khách hàng Đe tài luận văn đề xuất xây dựng mơ hình quản lý thơng tin đánh giá ngưòi tiêu dùng cách tin cậy trung thực, dựa tảng blockchain Với mô hĩnh này, thông tin lưu trữ lưu trữ phi tập trung, thông qua ứng dụng phi tập trung, tảng công nghệ blockchain Việc nhằm loại bỏ phương pháp lưu trữ xác thực thơng tin cách tập trung Tóm tẳt 11 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain ABSTRACT Online portals today are an import part of society The development and strong popularity of e-commerce has entailed many forms of business and advertising In addition to images and articles related to products and services, consumers' reviews and ratings are often included For restaurant catering service is also not out of that trend, feedback assessments from the community have greatly influenced the decision of consumers choice However, is this information reliable? The answer is not completely reliable In the worst-case scenario, managers can remove users’s, modifying existing reviews and arbitrarily add fake reviews of bogus consumers This thesis proposed an approach are completely reliable and trustworthy about consumer information management based on the blockchain platform This approach eliminates storage, authenticates centralized information when using blockchain technology, decentralized application, and distributed storage Tóm tat iii Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain LỜI CAM ĐOAN Tôi xin cam đoan kết báo cáo luận văn chương trình sản phẩm cơng sức lao động tơi thực hiện, khơng có chép từ cơng trình khác, ngoại trừ kết từ cơng trình khác ghi rõ luận văn Tất kiến thức học hỏi từ tài liệu tham khảo trích dẫn nguồn đầy đủ Neu có sai phạm so vói lời cam đoan, tơi xin chịu hình thức xử lý theo quy định Lời cam đoan IV Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain MUC LUC •• Chương 1: GIỚI THIỆU ĐỀ TÀI 1.1 Giới thiệu vấn đề 1.2 Mục đích nghiên cứu 1.3 Nhiệm vụ nghiên cứu 1.4 Phạm vi nghiên cứu 1.5 Tóm lượt kết đạt 1.6 Cấu trúc luận văn Chương 2: SỞ LÝ THUYẾT 2.1 Tổng quan tảng blockchain 2.1.1 Định nghĩa blockchaỉn 2.1.2 Cách thực vận hành tảng blockchaỉn 2.2 Những đặc điểm blockchain 12 2.2.1 Một sở liệu phân tán 12 2.2.2 Tính bền vững tảng blockchaỉn 13 2.2.3 Tính minh bạch khơng bị phávỡ tảng blockchaỉn 13 2.2.4 Tăng cường bảo mật 14 2.2.5 Hợp đồng thông minh 14 2.3 ứng dụng blockchain 14 2.3.1 Lĩnh vực y tế 14 2.3.2 Quản trị 14 2.3.3 Kiểm tra chuỗi cung ủng 15 2.3.4 Tài 15 2.3.5 Đảnh giả sản phấm, dịch vụ 15 Mục lục V Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain 2.4 Những bất lợi sử dụng blockchain 16 2.4.1 Tốn điện 16 2.4.2 Tổn không gian lưu trữ .16 2.4.3 Tính khơng thể bị phá vỡ nhược điểm 16 Chương 3: CÁC HỆ THỐNG LIÊN QUAN 17 3.1 Hệ thống Lina.review 17 3.1.1 Tổng quan hệ thong 17 3.1.2 Giải pháp Lina, review 18 3.1.3 Các thành phần hệ thong 19 3.1.4 Ưu điểm nhược điểm 21 3.2 Hệ thống đánh giá Revain 22 3.2.1 Tong quan hệ thong 22 3.2.2 Giải pháp Revain 23 3.2.3 Ưu điểm nhược điểm 27 3.3 ứng dụng bình chọn s mart B allot 28 3.3.1 Tong quan hệ thong 28 3.3.2 Giải pháp Smart Ballot 28 3.3.3 Ưu điếm nhược điếm 29 Chương 4: PHÁT TRIỂN HỆ THỐNG ĐÁNH GIÁ DựA TRÊN BLOCKCHAIN 30 4.1 Thiết kế tổng thể 30 4.1.1 Kiến trúc hệ thống .31 4.1.2 Sơ đồ Use Case 33 4.1.3 Biếu đổ Activity Diagram 35 4.2 Mục lục Các module chương trình 38 vi Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain 4.2.1 Module quản lý hóa đơn 38 4.2.2 Module quản lý thông tin blockchaỉn 42 4.2.3 Smart contract đánh giá 45 4.2.4 Các API giao tiếp với blockchaỉn 46 4.3 Giao diện tương tác người dùng 50 4.3.1 Dành cho người tiêu dùng 50 4.3.2 Giao diện người dùng hệ thong 55 4.3.3 Giao diện quản trị hệ thong blockchaỉn 61 4.4 Xây dựng hệ thống private blockchain: .62 4.4.1 Yêu cầu phần cứng 62 4.4.2 Tạo node private blockchain: 63 Chương 5: THựC NGHIỆM VÀ ĐÁNH GIÁ 68 5.1 Triểnkhaihệ thống privateblockchain 68 5.1.1 Thành phần phần cứng 68 5.1.2 Công cụ phần mềm 68 5.1.3 Khởi tạo khối cho hệ thong 69 5.1.4 Liên kết node private blockchain với 75 5.2 Thực nghiệm kiểm tra tính dự phòng 79 5.3 Đo thời gian gửi đánh giá dựa vào số lượngthread CPU .80 5.4 Đo thời gian gửi đánh giá dựa vào so node hệ thống 81 5.5 Đo hiệu hệ thống xác nhận nhiều yêucầu đánh giá đồng thời 82 Chương 6: KẾT LUẬN 84 6.1 Tổng kết .84 6.2 Những đóng góp đề tài 84 6.3 Hướng phát triển tương lai 84 Mục lục vii Xây dựng hệ thống h§ trợ đánh giá nhà hàng dựa blockchaỉn Kết trả về: Trường hợp nhập hỏa đơn thành công với mã JWT hợp lệ: mã lỗi status response 200 body response mơ tả hình 4.20 { "message": ""J "Hóa đơn từ chối tồn tại": ",,J "Hóa đơn bị lỗi": """ ’ _’ Hình 4,20: Nội dung http response nhập hóa đơn thành cơng gọi hàm API Ví dụ trường hợp đăng tải tập tin hóa đơn lên chương trình, respone trả giao thức http bao gồm header, mô tả hình 4.21 hình 4.22 T Headers [2) KEY Ị Content-Type I jwt-token Key VALLE applicacior/json eyJOeXAiOiJKVI QiLCJhbGciOiJIUzIl NiJ9.eyJpc3MiO| ij ad H RwOiwvXC9leGFtcGod Lm9yZy I si m FI zaeim I ► Temporary Headers [8] h0dHA6XGcL2V4M1 wbGUuY29tliwia WFOljoxM zU2OTkSNT10LCJ uYmYi OjEzNTcwM DAwMIDAsIm j Body Cookies Headers (11) “est Results RhdGEiOnsiZnVsbG5hbWUiOiJVc2VyiDEiLCJ1c2Vy bm FtZSI6 InVzZXlxl N0X25oYWhhbnid iwicmVzdGFyZWSOSWQiOiJyZX uZ29uX2lhjb5j9fQ.kcKPY4fh4A I NbGfrqCGraQ4yb9B2-VkoffTK01^L[jcYM|| Hình 4,21: Phần header http request nhập hỏa đơn qua gọi hàm API Chương 4: Phát triền hệ thống đanh giá dựa blockchaỉn Trang 57 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain ▼ POST http://local Params Authorization none form-data y, Send ▼ host:8080/AppReview/ a pi/create_reception, php Headers (10) Body# Pre-request Script Tests Save T Cookies Code Comments (0) x^www-form-urlencoded raw binary Text ▼ "numlnvoỉce" :"hd01", "cashier" :"Adinin"j "inTime": "2019-05-18 00:61:00", "outĩiime": "2019-05-18 02:31:00' "totalPrice": 500000 í 11 12 16 17 ]| > "numlnvoỉce" :,'hd02"J "cashier" : "Admin”., "inTime": "2019-05-18 06:61:60", "outTiime": "2019-05-18 62:31:00' "totalPrice": 500000 Status: 200 OK Time: 51 ms Size: 974 B 3ody Cookies Headers (11) Test Results Pretty Raw Preview Save Download ia Q JSON ▼ BT "message": “Nhập thành cơng:2/2", "Hóa đom từ chõi tõn tại”: " "Hóa đom bị lỗi”: "" Hình 4.22: Nội dung body http request nhập hóa đơn qua gọi hàm API Trường hợp nhập hóa đơn thất bị với mã JWT khơng hợp lệ Mã lỗi status response 401 body response, mơ tả hình 4.23 "message": "Mã DWT xác định tài khoản khơng hợp lệ" } Hình 4.23: Http response trả nhập hỏa đơn qua gọi hàm API khơng thành cơng Ví dụ trường hợp header http request chứa mã JWT không hợp lệ, mô tả hình 4.24 body http response trả mơ tả hình 4.25 T Headers [2} KEY VALUE Q Content-type DESCRIPTION application/json J mã JWT thong hop le Bulk Edit Presets T Í Q jwt-token ,,™„« ■ 1J Hình 4.24: Header http request chứa mã JWT không hợp lệ Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 58 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain P05T Send ▼ hĩtp://íocalhost:8080MppReview/api/create_reception.php Params Authorization Headers (10) Body# Pre-request Script Tests 41 none form-data # x^www-form-urlencoded raw # binary Text T Save Cookies Code Comments (0) T 1[ { "numlnvoice" :"hd01"j "cashier" :"Admin"J "inTime": "2019-05-18 00:01:00", "outTime": "2019-05-18 02:31:00", "totalPrice": 500000 }, 10 { 12 "numlnvoice" :"hd02", "cashier" :"Admin", Body Cookies Headers (11) Pretty Raw Preview Test Results Status: 401 Unauthorized Time: 41 ms Size: 598 B Save JSON ▼ ip Download II a Ifi 1H "message": “Mễ JWT xác ốỉnh tài khoản khơng hữp lê" Hình 4.25: Body http response trả nhập hóa đơn qua gọi hàm API không thành công c Lấy mã JWT thông qua API login Đường dẫn gọi hàm API http:///api/validate_token.php Header http request bao gồm content-type application/json body request, mơ tả Hình 4.26 sau: { "jwt" : "cchuỗi :WT>" _ } Hình 4.26: Http request xác thực JWT qua gọi hàm API Ket trả sau: • Trường họp mã JWT họp lệ Ket http response trả thông tin người dùng gồm status response 200 body response, mơ tả hình 4.27 hình 4.28 sau: "message": "Access granted.", "data": { "fullname": "", "username": "" } } Hình 4.27 Ket http response trả thông tin người dùng Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 59 Xây dựng hệ thông hô trợ đánh giá nhà hàng dựa blockchain Send T GET » http://localhost:80S0/AppReviewj'api/validate_token.php Pa rams Authorization Headers (9) Body • • none form-data x-www-form-urlencoded Pre-request Script Tests Cookies Code Comments (0) raw binary Text ^ ■' jwt : ■’ey30 eXAiOi3 KVlQi LC3 hb Body Cookies Headers (11) Pretty Raw Preview Test Results Status: 401 Unauthorized Time: 36 ms size: 566 B Save Download JSON ▼ rp ■Q 1- : "message": "Access denied."j "error": "Malformed UTF-S characters'1 H Hình 4.30: Kết http response trả thông tin từ chối đăng nhập Chương 4: Phát triên hệ thông đánh giá dựa blockchain Trang 60 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain d Giao diện cập nhật thông tin nhà hàng Giao diện cập nhật thông tin nhà hàng có chức cho phép người dùng hệ thống cập nhật thông tin nhà hàng, mô tả hình 4.31 Thơng tin cá nhân Họ tên User Thông tin nhà hàng Nhà Hàng Ngon - Pasteur Tên nhà hàng Địa 160 Pasteur, p Bến Nghé, Quận 1, TP HCM Số điện thoại (08) 38 277 131 Loại nhà hàng Món ăn đa dạng -1 I Cập nhật Hình 4.31: Giao diện cập nhật thơng tin nhà hàng 4.3.3 Giao diện quản trị hệ thống blockchain Cho phép người quản trị hệ thống deploy smart contract lên mạng private blockchain tùy chọn sử dụng private blockchain, hình 4.32 mơ tả giao diện cho phép người quản trị phát triển hợp đồng thông minh lên blockchain Deploy contract vào blockchain —Chọn blockchain— T Chọn blockchain Chọn address Ethereum deploy Gas 1500000 Default gas 300000000 Gas price 300000000 Ghl Ghi Chủ thêm vẻ contract Hình 4.32: Giao diện quản trị hệ thống blockchain Giải thích ý nghĩa tham số giao diện: Chọn blockchain: Người quản trị chọn node kết nối blockchain - Chọn address Ethererum: Chọn address Ethereum kết deploy smart contract - Gas: Nhập thông số gas chi phí thực giao dịch gửi smart contract vào hệ thống - Default gas: Nhập thông số mặc dịnh cho gas Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 61 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain Gas price: Nhập thông số gas price Đây số ETH phải trả cho đon vị gas - Ghi chú: Mô tả thông tin thêm smart contract - 4.4 Xây dựng hệ thống private blockchain: 4.4.1 Yêu cầu phần cứng Yêu cầu phần cứng: - CPU: CPU Dual-core CPU Intel Core 4th Gen Series trở lên tương đương - Bộ nhớ: RAM GB - Lưu trữ: Dung lượng lưu trữ trống 2GB trở lên - Yêu cầu hệ điều hành (HDH): Window, Mac os, Linux - Yêu cầu phần mềm: Phần mềm GETH (hổ trợ HĐH) Cài đặt: - HĐH Window: chạy tập tin geth.exe để cài đặt công cụ GETH - HĐH MacOS: ■ Mở trình terminal đặt gói homebrew trước /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/instal 1)" ■ Cài đặt GETH vào máy: brew tap ethereum/ethereum brew install ethereum HĐH Linux: $ sudo apt-get install software-properties-common $ sudo add-aptrepository -y ppa:ethereum/ethereum $ sudo apt-get update $ sudo apt-get install ethereum Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 62 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain 4.4.2 Tạo node private blockchain: 4.4.2.1 Tạo thư mục gốc cho hệ thống private blockchain Tạo thư mục gốc đặt tên “private blockchain” cho hệ thống, cấu trúc thư mục sau hoàn thành khởi tạo private blockchain: private_blockchain I - geth I I - chaindata I I ethash I I lightchaindata I - nodes keystone 4.4.2.2 Tạo tập tin để khởi tạo khối Ngưòi quản trị hệ thống tạo tập tin đặt tên “genesis j son” để khởi tạo khối cho hệ thống private blockchain, nội dung tập tin mơ tả hình 4.34 Tập tin “genesis.json” có cấu trúc JSON key-value chứa thơng tin cần thiết để khởi tạo khối hệ thống private blockchain, hình 4.33 mơ tả khối node blockchain Genesis block Hình 4.33: Block đẩu tiên node private blockchain { "config": { "chainld": 1234, "homesteadBlock": 0, "eipl55Block": 0, "eipl58Block": }, "alloc": {}, "coinbase": "0X0000000000000000000000000000000000000000", "difficulty": "0x20000", Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 63 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain "extraData": "", "gasLimit": "0x2fefd8", "nonce": "0x1010300100000142", "mixhash":"0X000000000000000000000000000000000000000000000000000000000000 0000", "parentHash":"0X000000000000000000000000000000000000000000000000000000000 0000000", "timestamp": "0X00" } Hình 4.34: Tạo tập tin để khởi tạo khối Giải thích ý nghĩa thành phần file khỏi tạo: - Chainld: Đây mã định danh chuỗi hệ thống đánh giá Các node private blockchain thuộc hệ thống có chainld - HomesteadBlock, eipl55Block, eipl58Block, byzantiumBlock: Thông tin liên quan đến chuỗi forking phiên bản, trường hợp tạo mới, thiết lập cho chúng giá trị - Difficulty: Được hiểu độ khó để xác thực khối vào chuỗi khối Giá trị difficulty nằm khoảng 10-10000 Giá trị hữu ích private blockchain cho phép xác thực giao dịch đánh giá nhanh chóng, tưcmg đưcmg vói giao dịch nhanh - GasLimit: Đây tổng lượng gas sử dụng khối Khi difficulty thấp, khối dễ dàng tạo mới, nhiên nên đặt giá trị cao để tránh bị giói hạn làm chậm mạng xác thực giao dịch - Alloc: Cho phép gán address Ethereum lúc hình thành mạng private blockchain Address tạo trước đó, đảm bảo tài khoản kiểm soát - Nonce: Giá trị 64 bits, giá trị kèm mixhash để dùng cho việc tính tốn giải thuận Proof-of-Work (PoW) [19] - Mixhash: Là chuỗi 256bit, kết hợp với nounce để dùng cho việc tính tốn giải thuận Proof-of-Work (PoW) - Coinbase: Là address Ethereum mà hệ thống trả thưởng số lượng ETH xác thực giao dịch thành công Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 64 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain - Timestamp: Là giá trị đầu hàm Unix time() khối tạo - ParentHash: Chứa chuỗi hash khối liền kề trước Mặc định giá trị “0” cho khối hệ thống 4.4.2.3 Thực khởi tạo hệ thống private blockchain Thực thi lệnh gọi công cụ GETH vài đặt bước 4.4.1 Cú pháp lệnh gọi khỏi tạo mơ tả Hình 4.35 sau: geth datadir networkid - -rpc rpcport mine minerthreads rpcaddr rpccorsdomain rpcapi = "admin., dbj ethj netj web3j personal" Hình 4.35: Cú pháp lệnh gọi khởi tạo node private blockchaỉn Giải thích ý nghĩa tham số: - Datadir: Thư mục gốc chứa hệ thống private blockchain - Networkid: Đặt định danh cho hệ thống private blockchain - Rpc: Kích hoạt cho phép kết nối tới hệ thống qua http-rpc - Rpcport: Thông so port cho phép giao tiếp với hệ thống - Mine: Kích hoạt chế độ xác thực - mining - Minerthreads: số lượng thread CPU tham gia mining (giá tri mặc định 8) - Rpcadd: Đặt tả thông địa IP kết nối, mặc định chọn giá trị “localhost” - Rpccorsdomain: Đặt tả danh sách tên miền gửi yêu cầu “request”, hệ thống chấp nhận tên miền Giá trị tức chấp nhận tên miền - Rpcapi: Cho phép sử dụng thư viện kết nối qua http 4.4.2A Mở rộng hệ thống private blockchain Đe nâng tính san sàng dự phòng kháng lỗi Mạng private blockchain mở rộng node tham gia vào hệ thống Mỗi node private blockchain khởi tạo Chương 4: Phát triển hệ thống đánh giá dựa blockchain Trang 65 Xây dựng hệ thống h§ trợ đánh giá nhà hàng dựa blockchaỉn giống trình bày phần 4.4.2 Đối với node private blockchain hoạt động máy yêu cầu phải lắng nghe port khác a Thực tham gia vào mạng Mỗi node cố định danh nhất, cấu trúc định danh node: enode://@[]: Giải thích ý nghĩa tham số: - Public_key: Key đại diện node tham gia - Ipadress: Địa IP mà node tham gia hoạt động - Portrpc: Port mà node tham gia lắng nghe Cú pháp trích xuất thơng tin tên node: admin.nodeinfo w \ Kêt trả vê thông tin tên node mơ tả hình 4.36 sau: > admin.nadelnf0 t enade: acbld58a5d6fe7e475a8d4adaa22-Fc7fS71ec35def25a43774eed51tJ4-cS15aB|31.27.0.©.l: 310364" , enr: "0x:f89cb84ee 65d0288c5ct:16S21696296aa571e7fô317bS2b57bcb4el70d07459a95ca337cc0c83635176ccc58365 74683ec583657468 3f 269648276 34 826970847f 0-0000189?36563703235366b31al02bdda39c7ĩ f a 6983b52b40eb47bd5480a42d60c-F88525fd314fd90cacf26604b8374637082766'08375S47e827660 ,rJ id: ,r84dc85ac6cl728bcc6ell5ec56055c0143e042dfe6e0d0e922bc2f 238a6c58f c" ip: "127,6.0.1", listenAddr: 36304" J, name : ,r-Geth/vl 8.23-stable-c9427004/iiindũiis- amd64/gol 11.5", ports: { discovery: , listener; }j protocols : -[ eth: f config: { chainld; , eipi50Hash: 0", eipl55Block: , eipl58Block: J, home steadB lock-: difficulty: genesis: "9x,ld6= > } \ J F@b5d44d3d7el3abcbe7c7179a04e43el7446'9e4eda52b9-d4576e-d@a head : "0>cccb4102-Fael2a9b4a7233c6dd2eclb943534d28e9a0e038149a83fc3b07ff cf a"j network: Hình 4.36: Hình chụp thông tin tên node private bỉockchain Chương 4: Phát triền hệ thống đánh giá dựa blockchaỉn Trang 66 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain b Thực lệnh thêm node private blockchain admin.addPeer("”) Giải thích ý nghĩa tham số: - Admin Module api “admin” AddPeer Hàm hỗ trợ cho phép node khác tham gia vào hệ thống Name_enode Tên node cần tham gia Ket thử nghiệm theo hình 4.37 nhu sau: > admin addPeer( "enode : //d5dla-f5í-F09ccbl01e-f5íd4Sc65d92d323b47edS04c302fSlda714-f-Fb 5272c992609S61ceS0b4746819c748f3aS4123a47ebO2a5cf8f78ec55165c747cl6ca52gl27.0.0.1: 30305") true > INFO [06-02110:35:34.942] Block synchronisation started Hình 4.37: Ket thực nghiệm liên kết node Sau đuợc tham gia, node đuợc đồng liệu, đuợc mơ tả Hình 4.38 nhu sau: instance: Geth/vl.E.23-itablc-c9427004/wirvlDW5-Bmd64/gol.11.5 F0 [06-02117:52:41.941] Etherbase automatically configured addre =0xCElE121aSfd5553el7e6Sd5cE0DcFFfl%2AF5F3 coinbase: 0xcelemaBfd5653el7e6Sd5ce0dcfff1962af5f3 at block: 3753 [Sun, 02 Dun 2019 00:19:58 e07) datadir: c: \xanpp\htdocs\AppReview\archive\blockchain\pn\node2 modules: admin:].a debug:].a eth l.0 ethashl.B miner:!.0 net: 1.0 personal: 1.0 rpc:l.a txpoolzl.a web3:1.0 i> INFO [06-02117:53:11,786] Block, synchronisation started F0 [06-02117:53:14.954] Imported new chain segment kB WARN F0 02 F0 02 F0 02 F0 02 F0 02 F0 02 F0 02 F0 02 F0 62 F0 62 F0 62 F0 62 F0 62 F0 62 F0 62 F0 02 F0 02 F0 02 F0 02 _ fill [06-02 17:53:18,759] Chain split detected [06- 17:53:22.468] Imported new chain segment [66- 17:53:36.599] Imported new chain segment [66- 17:53:31.454] Imported new chain segment [66- 17:53:35.619] Imported new chain segment [66- 17:54:06.913] Imported new chain segment [66- 17:54:66.695] Imported new chain segment [66- 17:54:08.039] Imported new chain segment [66- 17:54:09.916] Imported new chain segment [66- 17:54:13.037] Imported new chain segment [66- 17:54:15.144] Imported new chain segment [66- 17:54:25.202] Imported new chain segment [66- 17:54:33.411] Imported new chain segment [66- 17:54:38,573] Imported new chain segment [66- 17:54:43.854] Imported new chain segment [66- 17:54:45.827] Imported new chain segment [66- 17:54:46.091] Imported new chain segment [66- 17:54:51.672] Imported new chain segment [66- 17:54:57.604] Imported new chain segment [66- 17:54:57.746] Imported new chain segment rflg ln.cc.flji cfaal r vrn cl =19 t> =0 Iga:=0.fl00 elapse: =1,749s Tgasps=0.000 nu block;=42 blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l number=3341 hash=ldbc73.,.02bc4d drop=412 txs=43 mgas=8.211 elapsed=5,536s gasps=l,483 m nui dropfrom=9ffedd.,.fae9d txs=l mgas=6.181 elapsed=7.993ms mgasps=22.763 txs=0 mgas=0.066 sed=5.997ms nu mgasps=0.060 m txs=0 mg sed=5.995ms mgasps=0,066 m as=0.066 txs=l mgas=0.181 elapsed=16.994m ngasps=16.566 s mgasps=6.066 txs=0 mgas=0.066 sed=6.997ms txs=0 mg sed=7.994ms ngasps=6.666 as=0.066 txs=0 mgas=0.066 elapsed=8.996ms mgasps=6.066 txs=0 mg sed=12.992ms sps=6.666 as=6.066 txs=0 mgas=0.666 elapsed=6.997ms mgasps=0.666 txs=0 mg elapsed=5.997ms sps=6.666 txs=l as=0.666 mgas=e.l82 sed=16.992ms mgasps=16.514 blocks=l blocks=l blocks=l blocks=l blocks=l blocks=l txs=0 txs=0 txs=0 txs=0 txs=0 txs=l blocks=l txs=0 mgas=0.066 _ mùÙÙÙ hi mgas=0.666 mg as=0.666 mgas=0.006 mgas=0.066 mg as=0.066 mgas=0.182 elapsed=7.997ms sps=6.666 elapsed=5.997ms mgasps=0.666 elapsed=6,996ms sps=6.666 elapsed=7.999ms ngasps=6.666 sed=5.997ms mgasps=6.066 elapsed=7.998ms ngasps=22.697 sed=5.995ms mgasps=6.066 -fl aa _ Awlcr Hình 4.38: Hình chụp thực nghiệm node private blockchain Chuơng 4: Phát triển hệ thống đánh giá dựa blockchain Trang 67 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain CHƯƠNG 5: THƯC NGHIÊM VÀ ĐÁNH GIÁ •• Chương tơi đo thời gian thực giao dịch thành công hệ thống dựa vào tiêu chí số lượng node mạng private blockchain, số lượng threads CPU tham gia vào q trình xác thực Từ kết thu tơi đánh giá cho trường hợp cụ thể 5.1 Triển khai hệ thống private blockchain 5.1.1 Thành phần phần cứng Máy 1: - Hệ điều hành: Window 10 - Vi xử lý: Intel Core Ĩ5-4200U 2.3 GHz - Bộ nhớ: RAM 8GB - Ô lư trữ: Dung lượng 384GB SSD Máy 2: - Hệ điều hành: Mac os - Yosemite - Vi xử lý: Intel Core Ĩ7 core-quare 2.6 GHz - Bộ nhớ: RAM 16GB - Ồ lư trữ: Dung lượng 256GB SSD 5.1.2 Công cụ phần mềm - Tải công cụ GETH phiên 1.8.2 https://geth.ethereum.org/downloads/ - Tạo thư mục gốc chứa node sau mơ tả hình 5.1: • • • (mypath)/blockchain/nodel (mypath)/blockchain/node2 (mypath)/blockchain/node3 Chương 5: Thực nghiệm đánh giá Trang 68 Xây dựng hệ thống h§ trợ đánh giá nhà hàng dựa blockchaỉn □ : \BLOCKCHAIN — nodel qeth T chai ndata - "1 i ghtchai ndata k eystore - node2 qeth - chaindata - "1 i ghtchai ndata keys "to re - nodeB geth - chaindata - ightchaindata keystore Hình 5.1: cấu trúc lưu trữ tập tin node 5.U Khởi tạo khối cho hệ thống a Tạo tài khoản Ethereum phục vụ gửi thơng tin đánh giá • Tạo account Ethereum cho nodel, mơ tả hình 5.2 sau: geth datadỉr (mypath)\blockchaỉn\nodel account new Your new account is locked with a password Please give a password Do not forget this password Passphrase: Repeat passphrase: Address: {8c972dcd38f39c2945759c45d70ee8cl532623b9> Hình 5.2: Lệnh tạo tài khoản thực nghiệm cho node • Tạo account Ethererum cho node2, mơ tả hình 5.3 sau: geth datadỉr (mypath)\blockchaỉn\node2 account new Your new account is locked with a password Please give a password Do not forget this password Passphrase: Repeat passphrase: Address: {9e649604c94d25492f7aldc3a2f2cldca2dff3a4> Hình 5.3: Lệnh tạo tài khoản thực nghiệm cho node • Tạo account Ethererum cho node3, mơ tả hình 5.4 sau: Chương 5: Thực nghiệm đánh giá Trang 69 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain geth datadir (mypath)\blockchain\node3 account new Your new account is locked with a password Please give a password Do not forget this password Passphrase: Repeat passphrase: Address: {Iacalal26e6c750ddf7e9abb518bfad3f624165c} Hình 5.4: Lệnh tạo tài khoản thực nghiệm cho node b Tạo tập tin khởi tạo khối Tập tin dạng JSON “genesis.json” có nội dung hình 5.5: { "config": { "chainld": 1010, "homesteadBlock": 0, "eipl55Block": 0, "eipl58Block": b "alloc": {}, "coinbase": " 0X0000000000000000000000000000000000000000", "difficulty: "0x20000", "extraData": "", "gasLimit": "0x2fefd8", "nonce": "0x1010300100000142", "mixhash": "0X0000000000000000000000000000000000000000000000000000000000000000 " ) "parentHash": "0X0000000000000000000000000000000000000000000000000000000000000000 " , " t i m e s t a m p " : "0X00" } Hình 5.5: Nội dung tập tin khởi tạo cho node thực nghiêm c Khỏi tạo khối Khỏi tạo khối cho nodel, đươc mơ tả hình 5.6 sau: Chương 5: Thực nghiệm đánh giá Trang 70 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain geth init (mypath)\blockchain\genesis.json datadir (mypath)\blockchain\nodel Hình 5.6: Lệnh khởi tạo khối thực nghiệm cho node Kết sau khởi tạo node 1, theo hình 5.7 cho thấy kết sau: S D:\Blockchain> geth init D:\Blackchain\genesis.json datadir D:\Blockchain\nodel [NF0 [00peer count =25 LES=0 total=25 [06-02120:51:46.451] Allocated cache and file handles database=D:\\Blockchain\\nodel\\geth\ \chaindata cache=16 handle: =16 [NFO [06-02120:51:46.477] Writing custom genesis block [06-02120:51:46.480] Persisted trie from memory database nodes=0 size=0.00B time=0s gcnodes=0 02I20:51:46.370] Maximum jcsize=0.00B gctime=0s livenodes=l livesize=0.00B [NFO [06-02120:51:46.487] Successfully wrote genesis state hasl =ld6e88 6efd0a [06-02120:51:46.493] Allocated cache and file handles \lightchaindata =16 =16 [NFO [06-02120:51:46.513] Writing custom genesis block [06-02120:51:46.516] Persisted trie from memory database jcsize=0.00B gctime=0s livenodes=l livesize=0.00B [NFO [06-02120:51:46.527] Successfully wrote genesis state database=chaindata database=D:\\Blockchain\\nodel\\geth\ nodes=0 size=0.00B time=0s gcnodes=0 database=lightchaindata ha: =ld6e88 6efd0a Hình 5.7: Ket lệnh khởi tạo khối thực nhiệm cho node Khởi tạo khối cho node2, đươc mơ tả hình 5.8 sau: geth init (mypath)\blockchain\genesis.json datadir (mypath)\blockchain\node2 Hình 5.8: Lệnh khởi tạo khối thực nghiệm cho node Kết sau khởi tạo node 2, theo hình 5.9 cho thấy kết sau: D:\Blockchain> geth init D:\Blockchain\genesis.json —datadir D:\Blockchain\nodel INFO [0602120:51:46.3/0] Maximum peer count ETH=25 LES=0 tota =25 [06-02120:51:46.451] Allocated cache and file handles database=D:\\Blockchain\\nodel\\geth\ vchaindata cache=16 handles=16 INFO [06-02120:51:46.4//] Writing custom genesis block [06-02120:51:46.480] Persisted trie from memory database nodes=0 size=0.00B time=0s gcnodes=0 ]csize=0.00B gctime=0s livenodei=l JS livesize=0.OŨB INFO [06-02120:51:46.48/] Successfully wrote genesis state databasi =chaindata hash=ld6e88 6efd0a [06-02120:51:46.493] Allocated cache and file handles database=D:\\Blockchain\\nodel\\geth\ =16 lan =16 INFO [06-02120:51:46.513] Writing custom genesis block INFO [06-02120:51:46.516] Persisted trie from memory database nodes=0 size=0.00B time=0s gcnodes=0 ]csize=0.00B gctime=0s livenode: =1 livesize=0.OŨB INFO [06-02120:51:46.52/] Successfully wrote genesis state databasi =lightchaindata Hash=ld6e88 6efd0a \lightchaindata acl Hình 5.9: Ket lệnh khởi tạo khối thực nhiệm cho node Chương 5: Thực nghiệm đánh giá Trang 71 ... ĐỀ TÀI: Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa tảng blockchain II NHIỆM VỤ VÀ NỘI DUNG: Thiết kế triển khai thử nghiệm hệ thống hỗ trợ đánh giá từ người tiêu dùng nhà hàng dựa tảng blockchain... lai 84 Mục lục vii Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain DANH MỤC CÁC TÀI LIỆU THAM KHẢO 85 Xây dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain DANH MUC HÌNH... dựng hệ thống hỗ trợ đánh giá nhà hàng dựa blockchain”, hệ thống cho phép người tiêu dùng đánh giá nhà hàng mà họ sử dụng dịch vụ nhà hàng Hệ thống sử dụng tảng blockchain lưu trữ đánh giá người