ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM Xây dựng ứng dụng mạng blockchain dựa trên Ethereum Virtual Machine và Solidity Môn học: Đồ án 1 Giảng viên hướng dẫn: ThS. Nguyễn Thị Thanh Trúc Sinh viên thực hiện: 19522183 – Trương Gia Thạch 19522339 – Nguyễn Tấn Tiến Thành phố Hồ Chí Minh, tháng 03 năm 2022 ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM Xây dựng ứng dụng mạng blockchain dựa trên Ethereum Virtual Machine và Solidity Môn học: Đồ án 1 Giảng viên hướng dẫn: ThS. Nguyễn Thị Thanh Trúc Sinh viên thực hiện: 19522183 – Trương Gia Thạch 19522339 – Nguyễn Tấn Tiến Thành phố Hồ Chí Minh, tháng 03 năm 2022 1 NHẬN XÉT CỦA GIÁO VIÊN …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………… 2 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn chân thành đến cô Nguyễn Thị Thanh Trúc, giảng viên hướng dẫn môn đồ án 1, đã trang bị giúp em những kỹ năng cơ bản và kiến thức cần thiết để hoàn thành được đồ án này. Tuy nhiên, dù đã cố gắng rất nhiều để hoàn thành đồ án được kết quả tốt nhất thì trong quá trình làm đồ án do kiến thức chuyên ngành của em còn hạn chế, cũng như sự thiếu sót về kinh nghiệm, nên không thể tránh khỏi một vài thiếu sót khi trình bày và đánh giá vấn đề.
Rất mong nhận được sự góp ý, đánh giá của cô để đề tài của chúng em thêm hoàn thiện hơn. Chúng em xin chân thành cảm ơn! 3 DANH MỤC HÌNH ẢNH Hình 1 Blockchain. 13 Hình 2 Trong "Khối Nguyên Thủy", Satoshi Nakamoto để lại một thông điệp: "Tờ Times, ngày 03/01/2009, Thủ tướng đứng bên bờ vực phải viện trợ ngân hàng lần thứ hai"[21]. 16 Hình 3 Nội dung trong mỗi khối.
20 Hình 6 Digital Signature transaction encryption simplified [22]. 22 Hình 7 Merkle Tree ví dụ. 23 Hình 8 Xác minh giao dịch với Merkle Tree. 25 Hình 9 Phân loại blockchain.
29 Hình 10 Ứng dụng blockchain trong công nghiệp dịch vụ. 32 Hình 11 Transforming Food Supply chain with Blockchain and IoT - DreamzIoT. 36 Hình 13 Ethereum chain. 41 Hình 14 Tài khoản trên Ethereum.
48 Hình 15 Transaction trên Ethereum. 49 Hình 16 Node Ethereum. 52 Hình 17 Phí gas. 54 Hình 18 Ethereum virtual machine.
56 Hình 19 Geth (Go ethereum ) & Mist. 57 4 Hình 20 Smart contract. 59 Hình 21 Phân loại kiến trúc. 65 Hình 23 Kiểu dữ liệu trong solidity.
67 Hình 24 Kiến trúc hệ thống demo. 75 5 DANH MỤC BẢNG BIỂU Bảng 1 Ethereum và Bitcoin. 43 Bảng 2 Web2 và Web3. 45 6 MỤC LỤC Mục lục.
7 GIỚI THIỆU CHUNG. Tổng quan tình hình nghiên cứu. Lý do lựa chọn đề tài. Mục tiêu nghiên cứu.
Tại sao cần blockchain. Dữ liệu động, cần cập nhật liên tục, cần lưu trữ tất cả lịch sử trước đây. Thông tin, dữ liệu cần bảo mật cực cao và bạn lo sợ mô hình mạng có trung gian thứ ba không thể đảm bảo an toàn. Lịch sử Blockchain.
Kiến trúc blockchain. Nguyên lý hoạt động của Blockchain. Quy tắc của sổ cái. Nguyên lý tạo khối.
Thuật toán bảo mật Blockchain. Nhược điểm. Cơ chế đồng thuận. Hệ sinh thái.
Ứng dụng Blockchain trong đời sống. Ứng dụng trong ngành công nghiệp và dịch vụ. Ứng dụng trong ngành nông nghiệp, thủy hải sản. Ứng dụng Blockchain trong xây dựng.
Ứng dụng blockchain trong vận tải kho bãi. Ứng dụng trong hoạt động tài chính, ngân hàng và bảo hiểm. Ứng dụng blockchain trong khai khoáng. Giới thiệu chung.
Ethereum và Bitcoin. Các khái niỆm trong Ethereum. Hợp đồng thông minh (Smart Contract). Smart contract là gì?.
Smart contract hoạt động như thế nào?. Lợi ích của smart contract. Ưu nhược điểm. Ứng dụng phi tập trung (Dapps).
Phân loại Dapps. Dapps hoạt động như thế nào?. 64 LẬP TRÌNH SOLIDITY. Kiểu dữ liệu.
Phương thức. Các công cụ mà Solidity cung cấp. Các trường hợp sử dụng Solidity. Ưu điểm và nhược điểm của Solidity.
Ưu điểm của Solidity. Nhược điểm của Solidity. 72 ỨNG DỤNG MINH HOẠ. Giới thiệu bài toán.
Kiến trúc hệ thống. Công nghệ sử dụng. 75 KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN. Kết quả đạt được.
Hướng phát triển. 76 TÀI LIỆU THAM KHẢO. 77 9 10 GIỚI THIỆU CHUNG 1. TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU Sự xuất hiện của hệ thống web dùng trên Internet đã hiện thực hóa việc trao đổi thông tin trên toàn thế giới.
Trong khi đó, hệ thống blockchain lại giúp thực hiện các giao dịch trao đổi giá trị toàn cầu trên Internet. Bởi vậy, hai hệ thống này tuy song song tồn tại nhưng lại khác nhau về bản chất. Sau khi Satoshi Nakamoto công bố luận văn về đồng tiền ảo bitcoin vào năm 2009, nền tảng công nghệ của bitcoin – blockchain – đã trở thành tâm điểm chú ý. Với khởi đầu như vậy nên hiển nhiên giá trị tiền tệ của blockchain, tức là chức năng trao đổi và tích lũy giá trị, sẽ được chú ý nhiều nhất.
Nhưng từ khoảng năm 2012-2013, không chỉ tiền kỹ thuật số, công nghệ blockchain bắt đầu được kỳ vọng có thể mạng lại thay đổi lớn trong cách vận hành kinh doanh (không chỉ trong ngành tài chính) cũng như ứng dụng trong lĩnh vực hành chính công. Trong xu thế đó, các ứng dụng sử dụng công nghệ blockchain được phát triển ngày càng nhiều. Các ứng dụng này không được sử dụng trên hệ thống blockchain mà còn có khả năng tích hợp vào các ứng dụng hiện có trên web. Điều này có nghĩa là blockchain không chỉ đơn thuần là một công nghệ mới mà nó còn có thể bổ trợ hoặc thay thế các công nghệ hiện hữu.
Vì khả năng cho phép hoàn thành thanh toán mà không cần bất kỳ ngân hàng hay trung gian nào, Blockchain được dùng trong các dịch vụ tài chính khác nhau như tài sản kỹ thuật số, chuyển tiền hay thanh toán. Thêm vào đó, nó còn có thể áp dụng cho các lĩnh vực khác như hợp đồng thông minh, dịch vụ công cộng, Internet vạn vật, hệ thống danh tiếng và dịch vụ bảo mật [8]. Sự phát triển của Internet cũng đồng hành với những tổn thất sau các cuộc tấn công mạng, gây ảnh hưởng lớn đến nền kinh tế cũng như xã hội. Theo cuộc khảo sát của hãng phân tích Grant Thornton, khoản tiền mà doanh nghiệp mất vào tay tin tặc ở Châu Á-Thái Bình Dương lên tới 81,3 tỉ đô la trong vòng 12 tháng (tính đến cuối tháng 9/2015).
Mức tổn thất từ các đợt tấn công mạng ở châu Á nhiều hơn Bắc Mỹ tới 20 tỉ USD và EU với con số tương tự, và chiếm đến hơn 25% tổng mức tổn thất của thế giới (315 tỉ USD). Tại Việt Nam cũng xảy ra tình trạng mất an toàn với các tài khoản gửi ngân hàng, điển hình như vụ tấn 11 công vào Vietcombank. Tháng 2/2016, thông tin về việc Ngân hàng Trung ương Bangladesh bị tin tặc đánh cắp 101 triệu USD gây chấn động thế giới là một bài học cho bất cứ tổ chức nào. Sự cố xảy ra được cho là do Ngân hàng nước này sử dụng bộ định tuyến cũ giá 10 USD mà không có bất cứ một hệ thống tường lửa nào.
Số tiền tổn thất trong vụ này có thể lên đến hơn 1 tỷ USD nếu như tin tặc không viết sai lỗi chính tả. Từ những rủi ro từ an ninh mạng nên các tổ chức tài chính cần những công nghệ mới, ví dụ như nền tảng của đồng tiền số Bitcoin, chính là Blockchain, được kì vọng không chỉ nhằm cắt giảm chi phí ngân hàng mà còn đảm bảo tính an toàn và xa hơn nữa là cách mạng hóa các giải pháp bảo mật. LÝ DO LỰA CHỌN ĐỀ TÀI Khách quan: Trong những năm gần đây, công nghệ chuỗi khối (Blockchain) đang trở thành xu hướng “hot” trên toàn cầu và tại Việt Nam. Công nghệ này có tiềm năng ứng dụng to lớn trong các ngành từ dịch vụ tài chính, sản xuất và khu vực công cho đến chuỗi cung ứng, giáo dục và năng lượng[9].
Trong đó, Ethereum là nền tảng điện toán phân tán, mã nguồn mở dựa trên công nghệ chuỗi khối (Blockchain) là chuỗi khối có thể lập trình hàng đầu thế giới. Các nhà phát triển có thể sử dụng nó để xây dựng các loại ứng dụng mới. Chủ quan: Trong suốt quá trình học tập, nhóm chúng em muốn được trải nghiệm các đề tài khác nhau và hoạt động trên nhiều nền tảng. Cảm thấy hứng thú và muốn tìm hiểu công nghệ Blockchain nên nhóm em đã lựa chọn tìm hiểu về blockchain và cụ thể là Ethereum và Solidity, nghiên cứu, ứng dụng công nghệ Blockchain trong việc thực hiện các giao dịch.
MỤC TIÊU NGHIÊN CỨU Mục tiêu của đồ án này là có một cái nhìn tổng quan về công nghệ BlockChain, biết được các nền tảng lý thuyết và các kỹ thuật chính sử dụng trong BlockChain, đặc biệt là ứng dụng của hợp đồng thông minh trong công nghệ này. Bên cạnh đó hiểu được Ethereum là nền tảng BlockChain đã và đang rất phổ biến và có được ứng dụng minh họa. GIỚI THIỆU Theo ấn bản “Mastering Bitcoin” của tác giả Antonopoulos, Blockchain được định nghĩa là công nghệ lưu trữ và truyền tải thông tin bằng các khối (block) được liên kết với nhau và mở rộng theo thời gian, do đó được gọi là chuỗi khối (blockchain). Mỗi block chứa đựng các thông tin về thời gian khởi tạo, các thông tin giao dịch và được liên kết với các khối trước đó thông qua thông tin hàm băm (hash) [19].
Block cũng được định nghĩa như một cấu trúc dữ liệu, là một danh sách liên kết sử dụng hàm băm con trỏ thay vì các con trỏ thông thường. Hàm băm con trỏ này được sử dụng để trỏ tới khối trước đó. Hình 1 Blockchain Cụ thể hơn, một blockchain là một chuỗi tuyến tính gồm nhiều khối được kết nối và được bảo đảm bằng các bằng chứng mật mã. 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 sổ cái phi tập trung.
Đ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 khi đã được mạng lưới chấp nhận thì sẽ không có cách nào thay đổi được. 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.