1. Trang chủ
  2. » Cao đẳng - Đại học

Xây dựng ứng dụng mạng blockchain dựa trên ethereum virtual machine và solidity (báo cáo cuối kì đồ án 1)

60 5 0

Đ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

Định dạng
Số trang 60
Dung lượng 1,77 MB

Nội dung

ĐẠ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 Ethereum Virtual Machine Solidity Môn học: Đồ án 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 Danh mục hình ảnh Danh mục bảng biểu Mục lục GIỚI THIỆU CHUNG A Tổng quan tình hình nghiên cứu Lý lựa chọn đề tài Mục tiêu nghiên cứu B BLOCKCHAIN Giới thiệu Tại cần blockchain 2.1 Dữ liệu động, cần cập nhật liên tục, cần lưu trữ tất lịch sử trước 2.2 Thông tin, liệu cần bảo mật cực cao 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 10 Nguyên lý hoạt động Blockchain 11 5.1 Nguyên lý mã hoá 11 5.2 Quy tắc sổ 18 5.3 Nguyên lý tạo khối 18 5.4 Thuật toán bảo mật Blockchain 19 Đặc điểm 19 6.1 Ưu điểm 19 6.2 Nhược điểm 20 Phân loại 20 Các phiên 21 Cơ chế đồng thuận 22 10 Ứng dụng Blockchain đời sống 23 10.1 Ứng dụng ngành công nghiệp dịch vụ 23 10.2 Ứng dụng ngành nông nghiệp, thủy hải sản 24 10.3 Ứng dụng Blockchain xây dựng 24 10.4 Ứng dụng blockchain vận tải kho bãi 25 10.5 Ứng dụng hoạt động tài chính, ngân hàng bảo hiểm 25 10.6 Ứng dụng blockchain khai khoáng 26 C ETHEREUM 28 1.1 Giới thiệu chung 28 Ethereum ? 28 1.2 Lịch sử 28 1.3 Ethereum Blockchain 29 1.4 Ethereum Bitcoin 30 Các khái niệm Ethereum 30 2.1 Ether (ETH) 30 2.2 Web3 31 2.3 Ether.js 32 2.4 Accounts 33 2.5 Transactions 35 2.6 Nodes 36 2.7 GAS 38 2.8 Máy ảo Ethereum (EVM) 39 2.9 Geth (Go ethereum ) & Mist 41 2.10 Hợp đồng thông minh (Smart Contract) 42 3.1 Smart contract gì? 42 3.2 Smart contract hoạt động nào? 43 3.3 Lợi ích smart contract 44 3.4 Ưu nhược điểm 44 Ứng dụng phi tập trung (Dapps) 45 4.1 Dapps gì? 45 4.2 Phân loại Dapps 47 4.3 Dapps hoạt động nào? 47 LẬP TRÌNH SOLIDITY 48 D E Parity 42 Solidity gì? 48 Kiểu liệu 48 Contract 50 Phương thức 50 Thuộc tính 52 Các công cụ mà Solidity cung cấp 52 Các trường hợp sử dụng Solidity 53 Ưu điểm nhược điểm Solidity 53 8.1 Ưu điểm Solidity 53 8.2 Nhược điểm Solidity 54 ỨNG DỤNG MINH HOẠ 55 Giới thiệu toán 55 Kiến trúc hệ thống 55 Công nghệ sử dụng 56 KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN 57 F G Kết đạt 57 Hướng phát triển 57 TÀI LIỆU THAM KHẢO 58 A GIỚI THIỆU CHUNG Tổng quan tình hình nghiên cứu Sự xuất hệ thống web dùng Internet thực hóa việc trao đổi thơng tin tồn giới Trong đó, hệ thống blockchain lại giúp thực giao dịch trao đổi giá trị toàn cầu Internet Bởi vậy, hai hệ thống song song tồn lại khác chất Sau Satoshi Nakamoto công bố luận văn đồng tiền ảo bitcoin vào năm 2009, tảng công nghệ bitcoin – blockchain – trở thành tâm điểm ý Với khởi đầu nên hiển nhiên giá trị tiền tệ blockchain, tức chức trao đổi tích lũy giá trị, ý nhiều Nhưng từ khoảng năm 2012-2013, không tiền kỹ thuật số, công nghệ blockchain bắt đầu kỳ vọng mạng lại thay đổi lớn cách vận hành kinh doanh (khơng ngành tài chính) ứng dụng lĩnh vực hành cơng Trong xu đó, ứng dụng sử dụng công nghệ blockchain phát triển ngày nhiều Các ứng dụng không sử dụng hệ thống blockchain mà cịn có khả tích hợp vào ứng dụng có web Điều có nghĩa blockchain khơng đơn cơng nghệ mà cịn bổ trợ thay công nghệ hữu Vì khả cho phép hồn thành tốn mà không cần ngân hàng hay trung gian nào, Blockchain dùng dịch vụ tài khác tài sản kỹ thuật số, chuyển tiền hay tốn Thêm vào đó, cịn áp dụng cho lĩnh vực khác hợp đồng thông minh, dịch vụ công cộng, Internet vạn vật, hệ thống danh tiếng dịch vụ bảo mật [8] Sự phát triển Internet đồng hành với tổn thất sau công mạng, gây ảnh hưởng lớn đến kinh tế xã hội Theo khảo sát hãng phân tích Grant Thornton, khoản tiền mà doanh nghiệp vào tay tin tặc Châu Á-Thái Bình Dương lên tới 81,3 tỉ la vịng 12 tháng (tính đến cuối tháng 9/2015) Mức tổn thất từ đợt công mạng châu Á nhiều Bắc Mỹ tới 20 tỉ USD EU với số tương tự, chiếm đến 25% tổng mức tổn thất giới (315 tỉ USD) Tại Việt Nam xảy tình trạng an toàn với tài khoản gửi ngân hàng, điển vụ cơng vào Vietcombank Tháng 2/2016, thơng tin 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 giới học cho tổ chức Sự cố xảy cho Ngân hàng nước sử dụng định tuyến cũ giá 10 USD mà khơng có hệ thống tường lửa Số tiền tổn thất vụ lên đến tỷ USD tin tặc khơng viết sai lỗi tả Từ rủi ro từ an ninh mạng nên tổ chức tài cần cơng nghệ mới, ví dụ tảng đồng tiền số Bitcoin, Blockchain, kì vọng khơng nhằm cắt giảm chi phí ngân hàng mà cịn đảm bảo tính an tồn xa cách mạng hóa giải pháp bảo mật Lý lựa chọn đề tài Khách quan: Trong năm gần đây, công nghệ chuỗi khối (Blockchain) trở thành xu hướng “hot” toàn cầu Việt Nam Cơng nghệ có tiềm ứng dụng to lớn ngành từ dịch vụ tài chính, sản xuất khu vực cơng chuỗi cung ứng, giáo dục lượng[9] Trong đó, Ethereum tảng điện tốn phân tán, mã nguồn mở dựa công nghệ chuỗi khối (Blockchain) chuỗi khối lập trình hàng đầu giới Các nhà phát triển sử dụng để xây dựng loại ứng dụng Chủ quan: Trong suốt q trình học tập, nhóm chúng em muốn trải nghiệm đề tài khác hoạt động nhiều tảng Cảm thấy hứng thú muốn tìm hiểu cơng nghệ Blockchain nên nhóm em lựa chọn tìm hiểu blockchain cụ thể Ethereum Solidity, nghiên cứu, ứng dụng công nghệ Blockchain việc thực giao dịch Mục tiêu nghiên cứu Mục tiêu đồ án có nhìn tổng quan cơng nghệ BlockChain, biết tảng lý thuyết kỹ thuật sử dụng BlockChain, đặc biệt ứng dụng hợp đồng thông minh công nghệ Bên cạnh hiểu Ethereum tảng BlockChain phổ biến có ứng dụng minh họa B BLOCKCHAIN Giới thiệu Theo ấn “Mastering Bitcoin” tác giả Antonopoulos, Blockchain định nghĩa công nghệ lưu trữ truyền tải thông tin khối (block) liên kết với mở rộng theo thời gian, gọi chuỗi khối (blockchain) Mỗi block chứa đựng thông tin thời gian khởi tạo, thông tin giao dịch liên kết với khối trước thơng qua thông tin hàm băm (hash) [19] Block định nghĩa cấu trúc liệu, danh sách liên kết sử dụng hàm băm trỏ thay trỏ thơng thường Hàm băm trỏ sử dụng để trỏ tới khối trước Hình Blockchain Cụ thể hơn, blockchain chuỗi tuyến tính gồm nhiều khối kết nối bảo đảm chứng mật mã Một blockchain thường xây dựng hệ thống phân tán có chức sổ phi tập trung Điều có nghĩa có nhiều sổ (phân tán) khơng có tổ chức nắm quyền kiểm sốt (phi tập trung) Nói cách đơn giản, người dùng tham gia vào mạng blockchain giữ điện tử liệu blockchain Dữ liệu mạng lưới chấp nhận khơng có cách thay đổi Dữ liệu blockchain cập nhật thường xuyên tất giao dịch đồng với người dùng Nói cách khác, hệ thống phân tán trì cơng việc tập thể nhiều người dùng khắp giới Những người dùng gọi node mạng, tất node tham gia vào trình xác minh xác thực giao dịch theo quy tắc hệ thống Do đó, quyền lực phi tập trung Cơng nghệ Blockchain áp dụng lĩnh vực khác không thiết phải có hoạt động tài Trong bối cảnh tiền điện tử, blockchain có vai trị lưu giữ hồ sơ vĩnh viễn tất giao dịch xác nhận Tại cần blockchain 2.1 Dữ liệu động, cần cập nhật liên tục, cần lưu trữ tất lịch sử trước Tài liệu giấy khó bị giả mạo tính phức tạp dấu dấu ấn xuất nhầm lẫn Như khắc thứ lên đá, tài liệu giấy có thời gian tồn định Nhưng liệu phải lưu thông liên tục, giao dịch xảy thường xuyên liên tục, việc dùng tài liệu giấy khó giúp hệ thống lưu trữ liệu dễ dàng Vì cơng việc nhập liệu thủ cơng bị hạn chế nguồn nhân lực Do đó, liệu thơng tin lưu trữ trước cần thiết mối quan hệ số mà liệu tạo nên, blockchain giúp lưu trữ linh hoạt nhiều cách cho phép nhiều bên khác nhập liệu vào hệ thống lưu trữ hệ thống nhiều phía bảo quản 2.2 Thơng tin, liệu cần bảo mật cực cao bạn lo sợ mơ hình mạng có trung gian thứ ba khơng thể đảm bảo an tồn Chúng ta cần bên thứ ba chịu trách nhiệm cho việc xác thực ủy quyền giao dịch theo nhiều lý Trong nhiều hoàn cảnh, việc bên thứ ba kiểm sốt định đắn hồn toàn phù hợp Nếu liệu phải bảo mật cao, có cách khơng cần kết nối vào mạng lưới Nhưng sở hạ tầng IT có nhiều tài khoản đăng nhập không đủ để đảm bảo cho việc nhận dạng số, cơng nghệ blockchain giải vấn đền Khi Satoshi Nakamoto viết white paper thần thánh “Bitcoin: Một hệ thống tiền điện tử Peer – to – Peer”[16], có nói rằng: “Doanh nghiệp phải lưu ý khách hàng cần cẩn thận, họ gửi nhiều thông tin cần thiết Chúng ta phải chấp nhận tỷ lệ phần trăm gian lận.” Private key mã hóa giúp giao dịch chuyển không cần đến hệ thống tập trung tài khoản phức tạp để tạo mối quan hệ số Nếu sở liệu yêu cầu hàng triệu đô la để bảo mật giao dịch tài chính, hội cho blockchain Lịch sử Blockchain Ý tưởng đằng sau công nghệ blockchain mô tả từ năm 1991 nhà nghiên cứu Stuart Haber W Scott Stornetta giới thiệu giải pháp thực tế mặt tính tốn để đánh dấu thời gian văn số để chúng không bị đề lùi ngày trước can thiệp vào[20] Hệ thống sử dụng chuỗi gồm khối bảo mật mật mã để lưu trữ văn đánh dấu thời gian, năm 1992, Merkle tích hợp vào thiết kế, khiến trở nên hiệu cách cho phép khối tập hợp vài văn Tuy nhiên, công nghệ không sử dụng sáng chế hết hạn vào năm 2004, bốn năm trước Bitcoin đời Năm 2004, nhà khoa học máy tính người theo chủ nghĩa mật mã Hal Finney (Harold Thomas Finney II) đưa hệ thống gọi RPoW, Proof Of Work Tái sử dụng Hệ thống hoạt động cách nhận Hashcash thay đổi thay dựa token proof of work, đổi lại tạo token ký RSA mà sau trao đổi trực tiếp từ người sang người khác RPoW giải vấn đề tiêu dùng hai lần cách lưu giữ quyền sở hữu token đăng ký máy chủ đáng tin cậy; o Rủi ro từ internet: Bản chất Smart Contract an toàn, bạn để lộ số thông tin nhạy cảm bị hacker khai thác thông tin chắn gặp trường hợp rắc rối Ứng dụng phi tập trung (Dapps) 4.1 Dapps gì? • Khái niệm phi tập trung Đầu tiên, phi tập trung gì? Phi tập trung hiểu đơn giản khơng có máy chủ trung tâm để xử lí Việc xử lí thực thi máy tham gia vào mạng lưới Để hiểu rõ phi tập trung, ta phân dạng mạng lưới bản: Tâp trung, phân tán phi tập trung • Tập trung (Centralize) Ở mạng lưới tập trung, có máy chủ đóng vai trị xử lí tập trung cho tồn giao dịch Một ví dụ mạng lưới tập trung hệ thống ebanking ngân hàng Trong hệ thống này, giao dịch chuyển tiền xử lí tập trung hệ thống máy chủ để đảm bảo đồng liệu Ưu điểm hệ thống tập trung việc dễ dàng cập nhật có điểm xử lí lưu trữ Tuy nhiên việc lại làm hệ thống dễ dàng bị sụp đỗ điểm trung tâm bị chết • Phân tán (Distributed) Trong mạng lưới phân tán, ngồi điểm xử lí trung tâm, ta có thêm điểm xử lí nhỏ để hỗ trợ xử lí Ngồi ra, sở liệu phân tán Ví dụ: Hệ thống mạng xã hội Facebook Ngồi điểm xử lí trung tâm, Facebook cịn đặt điểm xử lí khác khác châu lục khác để xử lí cho người dùng châu lục Hệ thống phân tán làm tăng khả chịu lỗi hệ thống so với hệ thống tập trung Tuy nhiên, cần phải xây dựng thêm chế đồng liệu máy chủ • Phi tập trung (Decentralize) 45 Quay trở lại với nhân vật Ứng dụng phi tập trung mà Ethereum mang lại Trong mạng lưới phi tập trung, khơng có điểm xử lí lưu trữ tập trung Các máy mạng lưới tham gia vào xử lí giao dịch Ngồi ra, máy tham gia q trình xử lí, kèm theo việc lưu trữ liệu đồng toàn mạng lưới Đối với mạng lưới phi tập trung, việc cập nhật phiên phầm mềm vơ khó khăn phải đạt đồng thuận toàn mạng lưới Ngồi ra, việc xử lí giao dịch chậm hệ thống tập trung Tuy nhiên, máy mạng lưới giao tiếp ngang hàng, có quyền xử lí nhau, lưu trữ liệu nên hệ thống phi tập trung khơng bị hủy diệt cịn người chấp nhập sử dụng hệ thống • Khái niệm ứng dụng phi tập trung Cho đến tại, chưa có khái niệm cụ thể, rõ ràng ứng dụng phi tập trung Có thể hiểu ứng dụng phi tập trung (decentralized application - Dapp) ứng dụng xây dựng mạng ngang hàng phi tập trung, phân quyền kết hợp hợp đồng thông minh giao diện người dùng Một ứng dụng cần có đặc tính cụ thể sau để trở thành Dapp: • Open Source: source code ứng dụng xem tất người • Decentralized: sử dụng cơng nghệ mã hố giống blockchain • Incentive: ứng dụng có token mã hố/ tài sản ảo để cung cấp cho • Algorithm/Protocal: tạo token có chế đồng thuận có sẵn Một số ví dụ ứng dụng phi tập trung bản: • Augur: ứng dụng thị trường dự đoán kết kiện thực tế, xếp vào loại thứ ứng dụng Dapp Thơng qua trình duyệt Ethereum đặc biệt đưa ra, Dapp phân quyền giao tiếp trực tiếp tới mạng lưới Ethereum mà không cần qua máy chủ trung gian • Ví Mist MetaMask: Dapp ứng dụng lâu đời mạng lưới Ethereum Thông qua ứng dụng phi tập trung, phân quyền, cho phép người dùng tương tác ví họ với mạng lưới, mà không cần “hỏi ý kiến” • SAFE Network: sử dụng ứng dụng phân cấp để bảo vệ liệu cá nhân giao tiếp riêng tư người dùng hệ thống Ứng dụng cịn sử dụng cơng nghệ mạng hàng ngang peer-to-peer để kết nối với người dùng, tạo mạng lưới ngang hàng, riêng tư, không cần tập trung vào máy chủ 46 • Golem: xem “thị trường toàn cầu đầu tiên”, giúp thúc đẩy sức mạnh tính tốn tạo điều kiện thuận lợi giao dịch Tự thân tảng phi tập trung này, giúp trở thành siêu máy tính tồn cầu, có mở nguồn mở • Aragon: xây dựng blcokchain Ethereum, Aragon tảng quản lí phi tập trung đầy tham vọng Với mạng Aagon Token, cá nhân hệ thống tham gia vào trình vận chuyển đưa định cho hệ thống 4.2 Phân loại Dapps Người ta chia Dapps thành nhóm: sàn giao dịch, ví, ứng dụng cá cược, game, tài chính, mạng xã hội số lĩnh vực khác Tuy nhiên, dựa vào đặc tính sở hữu blockchain riêng hay xây dựng blockchain khác, người ta lại chia thành loại: • Loại 1: Loại DApps có blockchain riêng nó, chẳng hạng Bitcoin hay Ethereum • Loại 2: Đây ứng dụng phân quyền sử dụng blockchain ứng dụng phân quyền loại Dapp loại thực giao thức phát hành mã token để thực chức cho ứng dụng Ví dụ DApp loại Omni Protocol • Loại 3: Cũng Dapp loại 2, ứng dụng phân quyền loại sử dụng giao thức blockchain loại Ứng dụng thực chức cần thiết dựa vào giao thức mã token Ví dụ, SAFE network sử dụng Omni Protocal để phát hành SafeCoin sử dụng để tạo file storage phân phối 4.3 Dapps hoạt động nào? DApps hoạt cách thực tất bốn tiêu chí: Open Source, Decentralized, Incentive, Algorithm/Protocal Do đó, ứng dụng phải ứng dụng mã nguồn mở, thực phi tập trung nhìn thấy đóng góp cho source code Nó đẩy nhanh trình cho khả mở rộng phát triển sản phẩm chất lượng số lượng Tiếp theo phi tập trung hóa ứng dụng cách sử dụng blockchain Blockchain phục vụ sổ vĩnh viễn hồ sơ / giao dịch mà tham khảo lúc Và cuối cùng, để thêm records / giao dịch vào sổ vậy, token sử dụng khai thác tiền khai thác cách sử dụng thuật toán / giao thức khác Hiện nay, giao thức phổ biến sử dụng Proof-of-work (POW) Proof-of-stake (POS) 47 D LẬP TRÌNH SOLIDITY Solidity gì? Solidity ngơn ngữ high-level lập trình hướng contract, có cấu trúc tập lệnh gần giống với Javascript C, sử dụng để xây dựng contract - thành phần hệ sinh thái Ethereum, thiết kế dành riêng cho Ethereum Virtual Machine (EVM) ) Solidity ngơn ngữ kịch nhập tĩnh Nó thực trình xác minh thực thi ràng buộc thời điểm biên dịch (compile-time) thay runtime Một tập tin mã nguồn Solidity lưu tên có kết thúc với “.sol” nên bắt đầu với “version pragma” để định nghĩa phiên trình biên dịch Solidity sử dụng Solidity bao gồm chức năng: • Hỗ trợ nhiều kế thừa với tuyến tính hóa C3 • Hỗ trợ đối tượng biến trạng thái, kiểu liệu nhiều hàm lập trình khác • Các biến thành viên phức tạp cho contract chứa cấu trúc ánh xạ phân cấp tùy ý • Giao diện nhị phân ứng dụng tạo điều kiện cho số chức an toàn kiểu contract Nhiều tảng blockchain bao gồm Ethereum, Tendermint, Ethereum Classic, Counterparty ErisDB hỗ trợ Solidity Kiểu liệu Trong Solidity có kiểu chỗ lưu variale: storage memory Một variable lưu memory tạm thời, variable lưu storage vĩnh viễn 48 Ví dụ như, state variable (maxAge, minAge, Developer), khai báo function lưu storage Các variables randId, id, rand store memory Kiểu liệu boolean int/uint address struct Mô tả Trả “0” false “1” true Kiểu số nguyên có dấu (int) kiểu số nguyên không dấu (uint) Loại liệu đặc biệt ngơn ngữ lập trình Solidity Kích thước chứa 20 byte địa Ethereum Address địa tham chiếu để truy xuất Smart Contract Cấu trúc liệu address chứa số dư tài khoản wei, hỗ trợ hàm chuyển đổi giá trị sang address cụ thể Cấu trúc Struct cho phép bạn tạo kiểu liệu phức tạp có nhiều thuộc tính Nó tập hợp biến nhóm với lưu trữ tham chiếu, thành phần cấu trúc định nghĩa tương tự cấu trúc ngơn ngữ lập trình C/C++ Định nghĩa cấu trúc: struct [tên cấu trúc] { // Định nghĩa thành phần cấu trúc } Ví dụ: struct Customer { string customerName; uint customerId; uint discount; } mapping Mappings cách khác để lưu trữ liệu có tổ chức Solidity Ví dụ: // For a financial app, storing a uint that holds the user’s account balance: mapping (address => uint) public accountBalance; // Or could be used to store / lookup usernames based on userId mapping (uint => string) userIdToName; Mappings kho lưu trữ giá trị để lưu trữ tìm kiếm liệu Trong ví dụ đầu tiên, khóa address giá trị uint, ví dụ thứ hai, khoá uint giá trị string array Khi muốn lưu trữ tập giá trị có kiểu liệu giống nhau, bạn sử dụng mảng - array Solidity có kiểu liệu mảng mảng với kích thước cố định mảng động Mảng tĩnh A với kích thước cố định k viết sau: A[k] Mảng kích thước khơng cố định A viết là: A[] bytes string mảng đặc biệt bytes tương tự byte[] 49 struct packing to save gas truy cập phần tử thơng qua giá trị index cịn string không cho phép thực điều Muốn truy xuất giá trị dạng mảng bytes string có tên S, ta chuyển đổi sang bytes sau: bytes bytePresentation = bytes (S) Lưu ý: giá trị sau chuyển đổi mảng byte mảng ký tự string Kiểu liệu có tác dụng bạn muốn chứa nhiều đơn vị cấu trúc - struct, tạo sử dụng đơn vị nhỏ Solidity cho phép điều Nó giúp nhà phát triển chia nhỏ đóng gói biến giúp tối ưu hóa nhớ Ngồi solidity giảm không gian nhớ cho liệu giống vào nhóm Contract Solidity xây dựng xoay quanh thành phần contract Về bản, contract tương tự class OOP với thuộc tính (state variables) phương thức (functions) Các khái niệm abstract contract (contract với phương thức chưa thực thi), interface (chỉ gồm chữ ký thao tác) tương tự OOP Contract solidity cho phép đa kế thừa Việc dễ đến nhiều vấn đề, số có Diamond Problem Solidity sử dụng thuật tốn C3 Linearzation tương tự python để xử lí đa kế thừa Do thứ tự khai báo kế thừa sau từ khóa is quan trọng Ví dụ: Xét đoạn code contract X {} contract A is X {} contract C is A, X {} Contract C kế thừa theo thứ tự X, A tức X override A Tuy nhiên theo khai báo contract A A lại override X Điều sinh lỗi biên dịch Phương thức function () {internal|external|public|private} [pure|constant|view|payable] [returns ()] Có cách gọi phương thức: • • internal calling: trỏ instruction nhảy đến vị trí function nhớ để thực thi external calling: EVM thực lệnh call 50 Ứng với cách gọi có mức visibility với phương thức: internal, external, public private Mặc định, phương thức có mức visibility public Mơ tả khái quát mức sau: • • • • internal: truy cập từ phương thức bên contract từ contract (kế thừa) (internal calling) external: phần giao diện contract, truy cập từ contract khác Bản thân contract chứa phương thức gọi cách sử dụng từ khóa this Ví dụ ta gọi phương thức khai báo function extFunc() external cách this.extFunc() (external calling) public: phần giao diện contract, gọi từ contract (mà khơng cần từ khóa this) từ contract khác (internal calling/external calling) private: truy cập từ phương thức bên contract (internal calling) Note • • • public vs external: phương thức public cần chép tham số vào memory trước thực thi (để gọi từ ngồi contract), phương thức external đọc trực tiếp từ vùng liệu calldata Đối với kiểu liệu phức tạp (array/struct), việc chép cấp pháp nhớ tốn so với đọc trực tiếp từ calldata(tốn gas hơn) private vs internal: phương thức private truy cập từ contract nó, phương thức internal gọi từ contract call vs delegatecall: call sử dụng context (storage) contract gọi đó, delegatecall sử dụng context contract gọi lệnh delegatecall Function modifier Modifier sử dụng để kiểm soát ngữ cảnh phương thức Một số modifier mặc định kể đến là: • • • • pure: không truy cập/thay đổi thuộc tính contract view: khơng thay đổi thuộc tính contract constant: constant at runtime payable: phải có với phương thức sử dụng msg.value/ muốn nhận Ether Fallback function Mỗi contract có phương thức khơng có tên (gọi fallback-function) Phương thức khơng có tham số (tuy nhiên sử dụng msg.data để lấy liệu truyền theo lời gọi), giá trị trả Phương thức gọi khơng có phương thức contract khớp với lời gọi 51 contract Sink { // fallback function function() public payable { // executable code here } } Thuộc tính Khác với phương thức, thuộc tính contract có mức visibility (mặc định internal): public: contract khác truy cập thuộc tính public thơng qua getter function Ex: Đối với mapping: • contract Complex { mapping (uint => address) public data; } getter function tương ứng: function data(uint key) public returns (address) • private, internal: tương tự visibility phương thức Data location: memory/storage/calldata Trong EVM, có dạng lưu trữ: memory (lưu trữ không bền lâu), storage (lưu trữ bền vững), calldata (lưu trữ không bên vững, áp dụng để lưu trữ tham số phương thức external) • Forced data location: Tham số phương thức external: calldata Thuộc tính: storage • Default data location: o Thuộc tính giá trị trả phương thức: memory o Biến cục bộ: storage Đối với kiểu liệu phức tạp (struct, array), phép gán vùng lưu trữ memory storage (giữa tham số thuộc tính) ln tạo chép độc lập Phép gán vào biến cục phép gán trỏ, trỏ vào thuộc tính contract Hiểu chế để kiểm soát việc gán chép liệu phức tạp (do chi phí cấp phát chép liệu cao) để kiểm soát gas cần cho transaction o o Các công cụ mà Solidity cung cấp 52 Các công cụ mà nhà lập trình viên Solidity sử dụng để xây dựng contract thông minh dựa Solidity là: • • • • Solgraph: Nó sử dụng để tạo đồ thị DOT hiển thị luồng điều khiển chức contracts Solidity nêu lỗ hổng bảo mật Solidity REPL: Solidity REPL sử dụng để viết mã dòng lệnh Solidity Console EVM Lab: Đây gói cơng cụ phong phú kèm với khả tương tác với Máy ảo Ethereum (EVM) Nó bao gồm API Etherchain, trình xem theo dõi máy ảo Evmdis: Evmdis viết tắt EVM Disassembler thực phân tích tĩnh bytecode để cung cấp mức độ trừu tượng cao so với hoạt động EVM thô Các trường hợp sử dụng Solidity Solidity sử dụng phổ biến trường hợp cụ thể sau đây: • Voting - Biểu Hiện tại, bỏ phiếu giải nhiều vấn đề bao gồm thao túng liệu, cử tri giả mạo, thay đổi máy bỏ phiếu chụp gian hàng Liên hệ thơng minh Solidity tạo triển khai để làm cho trình bỏ phiếu trở nên minh bạch hợp lý • Blind Auctions - Đấu giá mù Trong đấu giá mở, cá nhân xem giá thầu nhau, dẫn đến tranh chấp gian lận Bằng cách sử dụng contracts thông minh Solidity, phiên đấu giá mù thiết kế người dùng khơng thể thấy đặt giá thầu kết thúc • Crowdfunding - Huy động vốn từ cộng đồng Huy động vốn cộng đồng thực thơng qua smart contracts giải vấn đề hoa hồng bên thứ ba quản lý liệu Contracts thông minh vững để huy động vốn từ cộng đồng không yêu cầu hệ thống tập trung để xây dựng lòng tin, giảm chi phí bổ sung Ưu điểm nhược điểm Solidity 8.1 Ưu điểm Solidity • Solidity cung cấp thuộc tính kế thừa hợp đồng bao gồm thuộc tính kế thừa nhiều cấp • Hợp đồng thơng minh cung cấp phương tiện an toàn, dễ dàng đáng tin cậy cho nguồn khác có tham gia hai bên để thực thỏa thuận điều • Nhiều chức an tồn kiểu hỗ trợ Solidity thông qua hỗ trợ ABI 53 (Giao diện nhị phân ứng dụng) 8.2 Nhược điểm Solidity • Sau hợp đồng thực hiện, khơng thể nâng cấp Lập trình viên khơng thể thêm tính bổ sung vào • Vì solidity ngôn ngữ thị trường nên có nhiều nhược điểm ngơn ngữ khác Python, C ++ Javascript Các ngôn ngữ khác có lợi định điều ngơn ngữ khác có số lượng lớn nhà phát triển để giải chúng • Dữ liệu có sẵn từ giao dịch Khơng có nguồn khác cho thông tin mặt tạo vấn đề cho máy hoạt động hiệu 54 E ỨNG DỤNG MINH HOẠ Giới thiệu toán Hệ thống giao dịch sản phẩm blockchain Hỗ trợ giao dịch P2P, người dùng địa ví điện tử để thực giao dịch Kiến trúc hệ thống 55 Trong hệ thống này, liệu hoá đơn lưu trữ mạng blockchain ethereum thay lưu database server Mạng Ethereum sử dụng mạng testnet Rosten – mạng blockchain ethereum dùng để deloy smart contract nhằm thực việc test trước đưa smart contract lên mạng ethereum thức – mainnet Cơng nghệ sử dụng • • Backend: ExpressJs, MongoDb Fontend: Html, Js, Web3Js • Compile Deploy Smart Contract: Truffe Framework • Tool khác: o Ganache – Phần mềm giả lập mạng blockchain local (1 node), Ví điện tử MetaMask o IPFS - hệ thống tập tin phân tán ngang hàng 56 F KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN Kết đạt Qua trình tìm hiểu nghiên cứu blockchain nói chung mạng ethereum nói riêng, nhóm chúng em tích luỹ thêm hiểu biết Blockchain như: Hiểu blockchain • Cách vận hành node mạng blockchain • Tại mạng blockchain lại có tính bảo mật cao minh bạch • Ứng dụng blockchain vào việc lưu trữ hoá đơn mang đến độ tin cậy • Hướng phát triển Bên cạnh kết đạt được, nhóm cịn vấn đề cần phải làm rõ tương lai: Các thuật toán mã hoá sử dụng việc tạo private key, public key, address hay tạo chữ ký cho giao dịch • Cách thức hoạt động mạng P2P phương thức truyền thơng node mạng Blockchain • Làm rõ chế đồng thuận sử dụng Blockchain • 57 G TÀI LIỆU THAM KHẢO [1] https://ethereum.org/en/developers/docs/ [2] https://docs.soliditylang.org/en/v0.8.2/# [3] https://viblo.asia/p/ethereum-hoat-dong-nhu-the-nao-6J3ZgwoEZmB [4] https://inseclab.uit.edu.vn/hop-dong-thong-minh-smart-contract-trong-lap-trinh-dappvoi-ethereum [5] https://coin98.net/web3 [6] https://www.oreilly.com/library/view/mastering-bitcoin/9781491902639/ [7] https://www.geeksforgeeks.org/blockchain-technology-introduction/?ref=rp [8] Z Zheng, S Xie, H Dai, X Chen and H Wang, "An Overview of Blockchain Technology: Architecture, Consensus, and Future Trends," in IEEE 6th International Congress on Big Data, 2017 [9] Cơng nghệ Blockchain gì? Ứng dụng thực tế Blockchain sống – UEH ALumni [10] Available: Lịch sử Blockchain (Chuỗi khối) | Binance Academy [11] Available: https://101blockchains.com/how-does-blockchainwork/?fbclid=IwAR1uW3gqS1aPqMQWfB1Aye6PGT7h5rcoZf5B7NiNobBxA5Yqlq83tF JzrQc [12] Available: Những ứng dụng Blockchain bật triển khai thực tế (onetech.vn) [13]Available: https://searchcio.techtarget.com/feature/What-are-the-4-different-types-ofblockchaintechnology?fbclid=IwAR3gwK9J20SVSeGlIWmfyXO39kujrKiOEFXN1qEOHhBKGX1T xWfar9fOYjA [14] Công nghệ blockchain – lập trình solidity | Đồ án mơn học UIT [15]Tại phải sử dụng Blockchain? Hãy trả lời câu hỏi sau (coinvietnam.com) [16] S Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,” 2008 [Online] Available: https://bitcoin.org/bitcoin.pdf [17] How does a blockchain work - Simply Explained - YouTube [18] Công nghệ Blockchain gì? Tại lại sử dụng cơng nghệ Blockchain? (tapchibitcoin.io) [19] Mastering Bitcoin by Andreas M Antonopoulos Available: Mastering Bitcoin (unglueit-files.s3.amazonaws.com) [20]Foundations of Blockchain : the Pathway to Cryptocurrencies and Decentralized Blockchain Applications [21] Lịch sử đời Blockchain Bitcoin (otis.report) [22] How Does the Blockchain Work? A Guide to Everything You Need to Know | OneZero (medium.com) [26] Blockchain Advantages and Disadvantages | Binance Academy [27] Tìm hiểu Cơng nghệ Blockchain Các ứng dụng công nghệ chuỗi khối 58 Blockchain (viblo.asia) [28] Blockchain 1.0, 2.0, 3.0 tương lai - VietNamCrypto [29] Paul Kohlhaas - uPort: Self Sovereign Identity in Zug - YouTube [30] https://medium.com/@ahjuice/cryptography-what-is-it-and-how-does-it-work2a21a730d694 59 ... tham gia xây dựng ứng dụng tảng này, đem ứng dụng Blockchain thoát khỏi đánh đồng với tiền ảo mắt nhiều người 1.1 Ethereum ? Ethereum tảng điện toán phân tán, mã nguồn mở dựa cơng nghệ Blockchain. .. dụng Blockchain xây dựng 24 10.4 Ứng dụng blockchain vận tải kho bãi 25 10.5 Ứng dụng hoạt động tài chính, ngân hàng bảo hiểm 25 10.6 Ứng dụng blockchain khai khoáng... cứu Mục tiêu đồ án có nhìn tổng quan cơng nghệ BlockChain, biết tảng lý thuyết kỹ thuật sử dụng BlockChain, đặc biệt ứng dụng hợp đồng thơng minh cơng nghệ Bên cạnh hiểu Ethereum tảng BlockChain

Ngày đăng: 16/06/2022, 20:34

TỪ KHÓA LIÊN QUAN

w