i HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TOÀN THÔNG TIN BÁO CÁO MÔN HỌC CÔNG NGHỆ BLOCKCHAIN Đề tài TÌM HIỂU VỀ ETHEREUM DAPP Sinh viên thực hiện Bùi Thị Phương Duyên AT160410 Nguyễn Thị Thảo Hiền AT160418[.]
HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TỒN THƠNG TIN BÁO CÁO MÔN HỌC CÔNG NGHỆ BLOCKCHAIN Đề tài: TÌM HIỂU VỀ ETHEREUM DAPP Sinh viên thực : Bùi Thị Phương Duyên - AT160410 Nguyễn Thị Thảo Hiền - AT160418 Phạm Tiến Dũng - AT160409 Nguyễn Văn Trường - AT160451 Đỗ Duy Tùng - AT160455 Trần Văn Nam - AT160632 Trình Thị Xuân - AT160460 Nguyễn Văn Đức - AT160315 Giảng viên hướng dẫn : Th.S Trương Phi Hồ Hà Nội - 2023 i LỜI MỞ ĐẦU Trong thời đại công nghệ kỹ thuật phát triển nay, công nghệ Blockchain phát minh kỹ thuật đáng ý vào kỷ 21 Ban đầu, blockchain sử dụng để tạo tiền điện tử, với Bitcoin ví dụ điển hình Tuy nhiên, công nghệ phát triển nhanh chóng năm gần đây, với nhiều ứng dụng tạo Ethereum, Ripple, Litecoin nhiều loại tiền điện tử khác Blockchain sử dụng ứng dụng phi tập trung (decentralized applications - DApps), cung cấp tảng cho ứng dụng có tính bảo mật cao độ tin cậy cao Điều mở giới cho ứng dụng giải vấn đề phức tạp cách đáng tin cậy minh bạch Chính lẽ đó, báo cáo sau nhằm mục đích cung cấp cho nhìn thổng quan công nghệ Blockchain, Ethereum DApps Cùng với hướng dẫn giảng viên thầy Trương Phi Hồ, nhóm em thực báo cáo với nội dung ba chương sau: Chương 1: Tổng quan hệ sinh thái Ethereum Chương 2: Tổng quan Smart Contract Solidity Chương 3: Các chuẩn Token Ethereum Chương 4: Giới thiệu DApps ii DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Tiếng Anh Tiếng Việt EVM Ethereum Virtual Machine Máy ảo Ethereum EOA Externally Owned Account Tài khoản thuộc sở hữu bên PC Program Counter Bộ đếm chương trình PoW Proof-of-Work Thuật tốn đồng hóa mạng lưới blockchain ASIC HTTP Application-Specific Mạch tích hợp đặc thù cho ứng Integrated Circuit dụng Hyper Text Transfer Giao thức truyền tải siêu văn Protocol NFT Non-Fungible Token Token phi tương đồng DAO Decentralized Autonomous Mô hình kinh doanh khơng phân Organization cấp Distributed Ledger Cơng nghệ sổ phân tán DLT Technology ERC IDE Ethereum Request for Chuẩn giao thức tảng Comments Ethereum Integrated Development Mơi trường phát triển tích hợp Environment ABI Chuẩn giao tiếp ứng dụng Application Binary Interface DEX Decentralized Exchanges Nền tảng giao dịch phi tập trung DeFi Decentralized Finance Tài phi tập trung ICO Initial Coin Offering Một hình thức huy động vốn PoS Proof-of-Stake Cơ chế đồng thuận Blockchain NFT Non-fungible token Token thay iii IEO Initial Exchange Offering Được xem hình thức ICO cải tiến STO Hình thức gọi vốn tương tự Security Token Offering ICO DAPP Decentralized Application Một dạng ứng dụng phi tập trung P2P peer-to-peer Mạng ngang hàng IPFS InterPlanetary File System Giao thức mạng phân tán giúp lưu trữ tài nguyên, hệ thống tệp liên hành tinh iv DANH MỤC HÌNH ẢNH Hình 1.1 State Machine Hình 1.2 Mơ hình lựa chọn sử dụng máy tính giới Hình 1.3 Blockchain State Machine Hình 1.4 Mơ hình EVM Hình 1.5 Quy trình Block State Hình 1.6 Các loại giao dịch Smart Contract Hình 1.7 Giao dịch Smart Contract Hình 1.8 Ví dụ thực thi mã lệnh 10 Hình 1.9 Ví dụ mơ hình GAS 11 Hình 1.10 Oracle Contract 13 Hình 1.11 Mơ hình DAO 15 Hình 1.12 Mơ hình kiến trúc mạng Ethereum 15 Hình 1.13 Geth client kèm ngang hàng mã hóa cứng 17 Hình 3.1 Quy tắc bắt buộc chuẩn ERC-20 29 Hình 3.2 Quy trình phê duyệt chuyển từ hai bước mã thơng báo ERC20.30 Hình 3.3 So sánh hai chuẩn ERC-20 ERC-223 33 Hình 3.4 Đặc tả giao diện hợp đồng ERC-223 33 v MỤC LỤC LỜI MỞ ĐẦU ii DANH MỤC CÁC TỪ VIẾT TẮT iii DANH MỤC HÌNH ẢNH v MỤC LỤC vi CHƯƠNG 1: TỔNG QUAN VỀ HỆ SINH THÁI ETHEREUM 1.1 Giới thiệu Ethereum 1.2 Kiến trúc hệ thống Ethereum 1.2.1 Khái niệm máy tính giới 1.2.2 EVM 1.2.3 Accounts 1.2.4 Blockchain Properties 11 1.2.5 Smart Contracts 12 1.3 Kiến trúc mạng Ethereum vai trò node 15 1.3.1 Các loại nút 16 1.3.2 Các triển khai Ethereum phổ biến 16 CHƯƠNG 2: TỔNG QUAN VỀ SMART CONTRACT VÀ SOLIDITY 18 2.1 Smart contract 18 2.1.1 Khái niệm 18 2.1.2 Mục đích smart contracts Blockchain gì? 18 2.1.3 Smart contract hoạt động Blockchain? 18 2.1.4 Các đặc điểm smart contract 19 2.1.5 Ưu nhược điểm smart contract 20 2.2 Solidity 21 2.2.1 Khái niệm 21 2.2.2 Hoạt động Solidity 22 2.2.3 Kiểu liệu công cụ hỗ trợ 22 2.2.4 Công cụ hỗ trợ 22 2.2.5 Các tiêu chuẩn code logic Solidity 23 2.2.6 Cấu trúc Solidity 23 2.2.7 Tính bật Solidity 23 2.2.8 Thực thi code Solidity 24 vi 2.2.9 Ưu nhược điểm ngơn ngữ lập trình Solidity 24 2.2.10 Ứng dụng Solidity thực tế 25 CHƯƠNG 3: CÁC CHUẨN TOKEN ETHEREUM 26 3.1 Token 26 3.1.1 Khái niệm Token 26 3.1.2 Các ứng dụng Token 26 3.1.3 Một số đặc điểm Token 27 3.1.4 Phân loại Token 27 3.2 Các chuẩn Token Ethereum 28 3.2.1 ERC-20 28 3.2.2 ERC-223 32 3.2.3 ERC-721 34 3.2.4 ERC-777 36 3.3 Một số vấn đề sử dụng Token 39 3.4 Token ICO 40 CHƯƠNG 4: GIỚI THIỆU VỀ DAPP 41 4.1 Khái niệm Dapp 41 4.2 Backend 42 4.3 Frontend 43 4.4 Data Storge 43 4.4.1 IPFS 44 4.4.2 SWARM 44 4.5 Decentralized Message Communicatinns Protocol 45 4.6 Ưu điểm 45 4.7 Nhược điểm 46 TÀI LIỆU THAM KHẢO 48 vii CHƯƠNG 1: TỔNG QUAN VỀ HỆ SINH THÁI ETHEREUM 1.1 Giới thiệu Ethereum Khái niệm Từ góc độ khoa học máy tính, Ethereum máy trạng thái (state machine) xác định thực tế không giới hạn, bao gồm trạng thái đơn lẻ truy cập toàn cầu máy ảo áp dụng thay đổi cho trạng thái Từ góc độ thực tế hơn, Ethereum sở hạ tầng điện tốn phi tập trung tồn cầu, mã nguồn mở thực thi chương trình gọi hợp đồng thơng minh Nó sử dụng chuỗi khối để đồng hóa lưu trữ thay đổi trạng thái hệ thống, với loại tiền điện tử có tên ether để đo lường hạn chế chi phí tài nguyên thực thi Nền tảng Ethereum cho phép nhà phát triển xây dựng ứng dụng phi tập trung với chức kinh tế tích hợp Trong cung cấp tính sẵn sàng cao, khả kiểm tra, tính minh bạch tính trung lập, làm giảm loại bỏ kiểm duyệt giảm rủi ro đối tác định Sự đời Ethereum Ethereum hình thành vào thời điểm người nhận sức mạnh mơ hình Bitcoin cố gắng vượt ứng dụng tiền điện tử Nhưng nhà phát triển phải đối mặt với câu hỏi hóc búa: họ cần xây dựng dựa Bitcoin bắt đầu chuỗi khối Xây dựng dựa Bitcoin có nghĩa sống hạn chế có chủ ý mạng cố gắng tìm giải pháp thay Vào tháng 12 năm 2013, Vitalik Buterin bắt đầu chia sẻ phác thảo ý tưởng đằng sau Ethereum: chuỗi khối có mục đích chung, hồn chỉnh Turing Tiến sĩ Gavin Wood người liên hệ với Vitalik đề nghị giúp đỡ kỹ lập trình C++ anh Gavin Wood trở thành người đồng sáng lập, nhà viết mã CTO Ethereum Gavin ghi nhận phần lớn thay đổi tinh tế tầm nhìn từ việc xem Ethereum tảng để xây dựng tiền lập trình, với hợp đồng dựa chuỗi khối chứa chuyển giao tài sản kỹ thuật số chúng theo quy tắc thiết lập trước, theo cách chung - tảng tính tốn mục đích Điều bắt đầu với thay đổi tinh tế nhấn mạnh thuật ngữ, sau ảnh hưởng trở thành mạnh mẽ với nhấn mạnh ngày tăng vào nhóm “Web 3”, coi Ethereum phần cơng nghệ phi tập trung, hai phần cịn lại Whisper Swarm Bắt đầu từ tháng 12 năm 2013, Vitalik Gavin tinh chỉnh phát triển ý tưởng, xây dựng lớp giao thức trở thành Ethereum Những người sáng lập Ethereum nghĩ chuỗi khối khơng có mục đích cụ thể, hỗ trợ nhiều loại ứng dụng cách lập trình Ý tưởng cách sử dụng chuỗi khối có mục đích chung Ethereum, nhà phát triển lập trình ứng dụng cụ thể họ mà không cần phải triển khai chế mạng ngang hàng, chuỗi khối, thuật toán đồng thuận, v.v Nền tảng Ethereum thiết kế để trừu tượng hóa chi tiết cung cấp mơi trường lập trình xác định an toàn cho ứng dụng chuỗi khối phi tập trung Giống Satoshi, Vitalik Gavin không phát minh công nghệ, họ kết hợp phát minh với cơng nghệ có theo cách lạ cung cấp mã nguyên mẫu để chứng minh ý tưởng họ với giới Những người sáng lập làm việc nhiều năm, xây dựng hồn thiện tầm nhìn Và vào ngày 30 tháng năm 2015, khối Ethereum khai thác Máy tính giới bắt đầu phục vụ giới Giai đoạn phát triển Ethereum + Khối #0 Frontier: Giai đoạn ban đầu Ethereum, kéo dài từ 30/7/2015 đến T3/2016 + Khối #200.000 Ice Age: Một hard fork để giới thiệu độ khó theo cấp số nhân tăng, thúc đẩy trình chuyển đổi sang PoS sẵn sàng + Khối #1.150.000 Homestead: Giai đoạn thứ hai Ethereum, mắt vào tháng năm 2016 + Khối #1.192.000 DAO: Một hard fork hoàn trả cho nạn nhân DAO bị công hợp đồng khiến Ethereum Ethereum Classic chia thành hai hệ thống cạnh tranh + Khối #2.463.000 Tangerine Whistle: Một hard fork để thay đổi cách tính gas cho số hoạt động I/O nặng để xóa trạng thái tích lũy khỏi cơng từ chối dịch vụ (DoS) khai thác chi phí gas thấp hoạt động + Khối #2.675.000 Spurious Dragon: Một hard fork để giải nhiều công DoS vectơ trạng thái xóa khác Ngồi ra, công phát lại chế bảo vệ + Khối #4.370.000 Metropolis Byzantium: Metropolis giai đoạn thứ ba Ethereum, tại thời điểm viết sách này, mắt vào tháng 10 năm 2017 Byzantium giai đoạn số hai nhánh cứng lên kế hoạch cho Metropolis Sau Byzantium, có thêm hard fork lên kế hoạch cho Metropolis: Constantinople Metropolis theo sau giai đoạn cuối q trình triển khai Ethereum, có tên mã Serenity Serenity giai đoạn cuối Ethereum (2020 đến nay), cịn gọi Ethereum 2.0 Nó đưa Ethereum từ Proof-of-Work sang Proof-of-Stake cải thiện tính mở rộng, tốc độ xử lý tính bảo mật Ethereum 2.0 giúp giảm tải chi phí giao dịch mạng Ethereum 1.2 Kiến trúc hệ thống Ethereum 1.2.1 Khái niệm máy tính giới State Machine 3.2.3 ERC-721 Hầu hết token thay được, nghĩa token giống với token khác Khả thay nguyên tắc quan trọng việc cung cấp tiền tệ Ví dụ, tờ $10 cần phải xử lý coi giá trị ERC-721 đề xuất tiêu chuẩn Token thay thế: token Ví dụ Token đại diện cho tài sản kỹ thuật số tranh nghệ thuật siêu xe Một triển khai tiếng chuẩn trò CryptoKitties, tạo mèo đặc trưng, thu thập Trò chơi Cryptocup World Cup dùng tính Tiêu chuẩn ERC721 chuẩn token không đặt giới hạn yêu cầu loại tài sản mà đại diện cho Thay vào đó, yêu cầu tài sản xác định mã định danh 256 bit Nói cách khác, chuẩn cho phép nhà phát triển tạo token đại diện cho tài sản mà họ muốn, miễn token có mã định danh riêng biệt không trùng lặp Để nắm khác biệt ERC-20 ERC-721, cần xem xét cấu trúc liệu nội sử dụng ERC-721 đủ: // Mapping from deed ID to owner mapping (uint256 => address) private deedOwner; Trong ERC20 theo dõi số dư thuộc chủ sở hữu, với chủ sở hữu khóa ánh xạ, ERC721 theo dõi ID chứng thư người sở hữu nó, với ID chứng thư khóa ánh xạ Đặc tả giao diện hợp đồng ERC-721 interface ERC721 /* is ERC165 */ { 34 event Transfer(address indexed _from, address indexed _to, uint256 _deedId); event Approval(address indexed _owner, address indexed _approved, uint256 _deedId); event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); function balanceOf(address _owner) external view returns (uint256 _balance); function ownerOf(uint256 _deedId) external view returns (address _owner); function transfer(address _to, uint256 _deedId) external payable; function transferFrom(address _from, address _to, uint256 _deedId) external payable; function approve(address _approved, uint256 _deedId) external payable; function setApprovalForAll(address _operateor, boolean _approved) payable; function supportsInterface(bytes4 interfaceID) external view returns (bool); } ERC721 hỗ trợ hai giao diện tùy chọn, dành cho siêu liệu để liệt kê hành động chủ sở hữu − Giao diện tùy chọn ERC721 cho siêu liệu interface ERC721Metadata /* is ERC721 */ { function name() external pure returns (string _name); function symbol() external pure returns (string _symbol); function deedUri(uint256 _deedId) external view returns 35 (string _deedUri); } − Giao diện tùy chọn ERC721 để liệt kê interface ERC721Enumerable /* is ERC721 */ { function totalSupply() external view returns (uint256 _count); function deedByIndex(uint256 _index) external view returns (uint256 _deedId); function countOfOwners() external view returns (uint256 _count); function ownerByIndex(uint256 _index) external view returns (address _owner); function deedOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256 _deedId); } Trong năm 2021, Token ERC-721 xây dựng nên công nghiệp đặc biệt với NFT Blockchain Gaming Có thể nói ngồi ERC-20 ERC-721 trở thành token sử dụng đại chúng 3.2.4 ERC-777 Một đề xuất khác cho tiêu chuẩn hợp đồng mã thông báo (hay Token) cải thiện ERC-777 Đề xuất có số mục tiêu, bao gồm: − Cung cấp giao diện tương thích với ERC-20 − Chuyển mã thơng báo chức gửi, tương tự chuyển ether − Tương thích với ERC-820 để đăng ký hợp đồng mã thơng báo − Cho phép hợp đồng địa kiểm sốt mã thơng báo họ gửi thơng qua chức tokensToSend gọi trước gửi − Cho phép hợp đồng địa thông báo mã thông báo’ nhận cách gọi hàm tokensReceived người nhận, để giảm khả 36 mã thơng báo bị khóa hợp đồng cách u cầu hợp đồng cung cấp chức tokensReceived − Cho phép hợp đồng sử dụng hợp đồng ủy quyền cho chức tokensToSend tokensReceived − Để hoạt động theo cách cho dù gửi đến hợp đồng hay EOA − Cung cấp kiện cụ thể cho việc đúc đốt mã thông báo − Cho phép nhà khai thác (bên thứ ba đáng tin cậy, dự định xác minh hợp đồng) để di chuyển mã thông báo thay mặt cho chủ sở hữu mã thông báo − Cung cấp siêu liệu giao dịch chuyển mã thông báo userData trường liệu toán tử Đặc tả giao diện hợp đồng ERC-777 interface ERC777Token { function name() public constant returns (string); function symbol() public constant returns (string); function totalSupply() public constant returns (uint256); function granularity() public constant returns (uint256); function balanceOf(address owner) public constant returns (uint256); function send(address to, uint256 amount, bytes userData) public; function authorizeOperator(address operator) public; function revokeOperator(address operator) public; function isOperatorFor(address operator, address tokenHolder) public constant returns (bool); function operatorSend(address from, address to, uint256 amount, bytes userData,bytes operatorData) 37 public; event Sent(address indexed operator, address indexed from, address indexed to, uint256 amount, bytes userData, bytes operatorData); event Minted(address indexed operator, address indexed to, uint256 amount, bytes operatorData); event Burned(address indexed operator, address indexed from, uint256 amount, bytes userData, bytes operatorData); event AuthorizedOperator(address indexed operator, address indexed tokenHolder); event RevokedOperator(address indexed operator, address indexed tokenHolder); } HOOKs ERC-777 Trong ERC777, hooks (còn gọi giao thức hook) chức đăng ký người sở hữu token người quản lý token để theo dõi kiện liên quan đến token Ví dụ: Hooks sử dụng để theo dõi việc chuyển đổi Token từ địa ví sang địa ví khác, để thực kiểm soát nghiêm ngặt việc chuyển đổi sử dụng token Các hooks ERC777 cho phép người sử dụng token tùy chỉnh chức token để phù hợp với nhu cầu sử dụng họ Điều giúp cải thiện tính linh hoạt khả tương thích chuẩn token ERC777 − Phía người gửi interface ERC777TokensSender { function tokensToSend(address operator, address from, address to, uint value, bytes userData, bytes operatorData) public; } 38 − Phía người nhận interface ERC777TokensRecipient { function tokensReceived(address operator, address from, address to, uint amount, bytes userData, bytes operatorData) public; } Chỉ đăng ký người gửi mã thông báo người nhận mã thông báo địa Do đó, lần chuyển mã thơng báo ERC777, chức Hook giống gọi ghi nợ nhận lần chuyển mã thông báo ERC-777 Mặt khác, Hook người gửi mã thông báo Hook người nhận mã thơng báo đăng ký cho nhiều địa Hook phân biệt người gửi người nhận dự kiến sử dụng tham số from to Việc triển khai tham chiếu ERC-777 liên kết đề xuất ERC777 phụ thuộc vào đề xuất song song cho hợp đồng đăng ký, định ERC-820 Một số tranh luận ERC-777 phức tạp việc áp dụng hai thay đổi lớn lúc: tiêu chuẩn mã thông báo tiêu chuẩn đăng ký Cuộc thảo luận tiếp tục Ngoài nhiều chuẩn token khác ERC-1155, ERC-948, ERC-998 ERC-1400 Mỗi chuẩn token có đặc điểm tính riêng, tùy thuộc vào mục đích sử dụng dự án 3.3 Một số vấn đề sử dụng Token − Độ tin cậy: Trong thị trường token đa dạng phong phú, có nhiều loại token khác với độ tin cậy khác Có thể gặp phải dự án giả mạo lừa đảo, đơi khó để phân biệt chúng với dự án chân thật − Giá trị: Nếu khơng có đủ người sử dụng token nhu cầu sử dụng token thấp, giá trị token giảm khoản bị hạn chế 39 − Sự pháp lý: Phải đối mặt với nhiều vấn đề pháp lý, bao gồm việc tuân thủ quy định thuế, bảo vệ người dùng tuân thủ quy định chứng khốn − Sự an tồn: Đối mặt với vấn đề bảo mật, bao gồm rủi ro bị công, mát tiền điện tử vấn đề an ninh khác − Phong cách quản lý dự án: Có thể có phong cách quản lý khác nhau, với động lực, mục tiêu cách tiếp cận khác Người dùng cần đánh giá kỹ tìm hiểu cẩn thận trước định sử dụng token cụ thể 3.4 Token ICO Token ICO (Initial Coin Offering) liên quan đến việc gọi vốn thị trường tiền điện tử Token phát hành thơng qua quy trình khác nhau, ví dụ ICO, IEO (Initial Exchange Offering), STO (Security Token Offering), Airdrop, trao đổi sàn giao dịch tiền điện tử ICO (Initial Coin Offering) phương thức gọi vốn công ty khởi nghiệp phát hành token để gọi vốn từ người đầu tư Thông thường, token phát hành ICO tạo tảng Ethereum tuân thủ tiêu chuẩn token ERC-20 ERC-721 Người đầu tư mua token tiền mặt loại tiền điện tử khác Sau ICO kết thúc, token phát hành phân phối cho người đầu tư tham gia, công ty khởi nghiệp sử dụng tiền thu để phát triển dự án họ Tuy nhiên, ICO gặp phải nhiều vấn đề, bao gồm hoạt động lừa đảo, việc khơng đảm bảo tính minh bạch pháp lý dự án khởi nghiệp, nguy thất thoát tiền nhà đầu tư Vì vậy, phương thức gọi vốn khác IEO, STO phát triển nhằm giải vấn đề 40 CHƯƠNG 4: GIỚI THIỆU VỀ DAPP 4.1 Khái niệm Dapp Dapp (Decentralized Application) ứng dụng phân quyền hay gọi ứng dụng phi tập trung Dapp xây dựng tảng Ethereum không ngừng lớn mạnh thời điểm Không ứng dụng tập trung thông thường khác, ứng dụng phi tập trung Dapp mở kỷ nguyên cho việc bảo mật, giúp kết nối người dùng nhà cung cấp cách trực tiếp mà khơng cần có mặt trung gian thứ DApps sử dụng để thực nhiều chức khác nhau, bao gồm tài chính, chứng nhận, bầu cử, trị chơi, v.v − Một số thành phần ứng dụng phân quyền: + Backend software (application logic) + Frontend software (phần mềm giao diện người dùng) + Data storage (Lưu trữ liệu) + Message communications (tin nhắn truyền thơng) + Name resolution (Phân giải tên) Ví dụ: giao diện người dùng phát triển dạng ứng dụng web chạy máy chủ tập trung dạng ứng dụng di động chạy thiết bị bạn Phần phụ trợ lưu trữ nằm máy chủ riêng sở liệu độc quyền bạn sử dụng hợp đồng thông minh lưu trữ P2P − Có nhiều lợi tạo DApp mà kiến trúc tập trung điển hình khơng thể cung cấp + Resiliency (Khả phục hồi): Vì logic kinh doanh kiểm sốt hợp đồng thơng minh, nên phần phụ trợ DApp phân phối quản lý hồn tồn tảng chuỗi khối Khơng giống ứng dụng triển khai máy chủ tập trung, DApp khơng có thời gian chết tiếp tục khả dụng miễn tảng hoạt động 41 + Transparency (Tính minh bạch): Bản chất trực tuyến DApp cho phép người kiểm tra mã chắn chức Mọi tương tác với DApp lưu trữ mãi chuỗi khối + Censorship resistance (Kháng kiểm duyệt): Miễn người dùng có quyền truy cập vào nút Ethereum (chạy nút cần), người dùng ln tương tác với DApp mà khơng bị can thiệp từ kiểm soát tập trung Không nhà cung cấp dịch vụ nào, chí chủ sở hữu hợp đồng thơng minh, thay đổi mã sau triển khai mạng Trong hệ sinh thái Ethereum ngày nay, có ứng dụng phi tập trung thực sự—hầu hết dựa vào dịch vụ máy chủ tập trung cho phần hoạt động chúng Trong tương lai, hy vọng phần DApp vận hành theo cách phi tập trung hoàn toàn 4.2 Backend Trong DApp, hợp đồng thông minh sử dụng để lưu trữ logic nghiệp vụ (mã chương trình) trạng thái liên quan ứng dụng bạn Bạn nghĩ hợp đồng thông minh thay thành phần phía máy chủ (hay cịn gọi “phụ trợ”) ứng dụng thông thường Tất nhiên, đơn giản hóa mức Một điểm khác biệt tính tốn thực hợp đồng thông minh tốn nên giữ mức tối thiểu Do đó, điều quan trọng phải xác định khía cạnh ứng dụng cần tảng thực thi phi tập trung đáng tin cậy Hợp đồng thông minh Ethereum cho phép xây dựng kiến trúc mạng lưới hợp đồng thông minh gọi truyền liệu lẫn nhau, đọc ghi biến trạng thái riêng chúng chúng hoạt động, với độ phức tạp chúng bị giới hạn giới hạn khí khối Sau triển khai hợp đồng thơng minh mình, logic kinh doanh bạn nhiều nhà phát triển khác sử dụng tương lai 42 Một cân nhắc thiết kế kiến trúc hợp đồng thơng minh khơng có khả thay đổi mã hợp đồng thơng minh sau triển khai Nó bị xóa lập trình với opcode SELFDESTRUCT truy cập, ngồi việc xóa hồn tồn, mã khơng thể thay đổi theo cách Cân nhắc thứ hai thiết kế kiến trúc hợp đồng thông minh kích thước DApp Một hợp đồng thơng minh ngun khối thực lớn tốn nhiều gas để triển khai sử dụng Do đó, số ứng dụng chọn tính tốn ngồi chuỗi nguồn liệu bên Tuy nhiên, nhớ logic kinh doanh cốt lõi DApp phụ thuộc vào liệu bên ngồi (ví dụ: từ máy chủ tập trung) có nghĩa người dùng bạn phải tin tưởng vào tài nguyên bên 4.3 Frontend Không giống logic nghiệp vụ DApp, yêu cầu nhà phát triển phải hiểu EVM ngôn ngữ Solidity, giao diện phía máy khách DApp sử dụng cơng nghệ web tiêu chuẩn (HTML, CSS, JavaScript, v.v.) Điều cho phép nhà phát triển web truyền thống sử dụng công cụ, thư viện khung quen thuộc Các tương tác với Ethereum, chẳng hạn ký tin nhắn, gửi giao dịch quản lý khóa, thường thực thơng qua trình duyệt web, thơng qua tiện ích mở rộng MetaMask (xem Chương 2) Mặc dù tạo DApp di động, có tài ngun giúp tạo giao diện người dùng DApp di động, chủ yếu thiếu ứng dụng khách di động đóng vai trị ứng dụng khách nhẹ với chức quản lý khóa Giao diện người dùng thường liên kết với Ethereum thông qua thư viện JavaScript web3.js, thư viện đóng gói với tài nguyên giao diện người dùng máy chủ web phục vụ cho trình duyệt 4.4 Data Storge Hầu hết DApp sử dụng dịch vụ lưu trữ liệu chuỗi, nghĩa chúng lưu trữ liệu cồng kềnh chuỗi Ethereum, tảng lưu trữ 43 liệu Nền tảng lưu trữ liệu tập trung (ví dụ: sở liệu đám mây điển hình) liệu phân cấp, lưu trữ tảng P2P IPFS tảng Swarm Ethereum Lưu trữ P2P phi tập trung lý tưởng để lưu trữ phân phối nội dung tĩnh lớn hình ảnh, video tài nguyên giao diện web phía trước ứng dụng (HTML, CSS, JavaScript, v.v.) Chúng ta xem xét số tùy chọn 4.4.1 IPFS Hệ thống tệp liên hành tinh (IPFS) hệ thống lưu trữ định địa nội dung phi tập trung, phân phối đối tượng lưu trữ đồng nghiệp mạng P2P “Địa nội dung” có nghĩa phần nội dung (tệp) băm hàm băm sử dụng để xác định tệp Sau đó, bạn truy xuất tệp từ nút IPFS cách yêu cầu tệp hàm băm IPFS nhằm mục đích thay HTTP làm giao thức lựa chọn để phân phối ứng dụng web Thay lưu trữ ứng dụng web máy chủ, tệp lưu trữ IPFS truy xuất từ nút IPFS Thơng tin thêm IPFS tìm thấy tại: https://ipfs.io 4.4.2 SWARM Swarm hệ thống lưu trữ P2P định địa nội dung khác, tương tự IPFS Swarm tạo Ethereum Foundation, phần công cụ Go-Ethereum Giống IPFS, cho phép bạn lưu trữ tệp phổ biến chép nút Swarm Bạn truy cập tệp Swarm cách tham chiếu tệp hàm băm Swarm cho phép bạn truy cập trang web từ hệ thống P2P phi tập trung, thay máy chủ web trung tâm Trang chủ Swarm lưu trữ Swarm truy cập nút Swarm bạn cổng: https://swarm-gateways.net/bzz:/theswarm.eth/ 44 4.5 Decentralized Message Communicatinns Protocol Một thành phần khác ứng dụng giao tiếp trình Điều có nghĩa trao đổi thơng báo ứng dụng, phiên khác ứng dụng người dùng ứng dụng Theo truyền thống, điều đạt cách dựa vào máy chủ tập trung Tuy nhiên, có nhiều lựa chọn thay phi tập trung cho giao thức dựa máy chủ, cung cấp tính nhắn tin qua mạng P2P Giao thức nhắn tin P2P đáng ý cho DApps Whisper, phần công cụ Go-Ethereum Ethereum Foundation 4.6 Ưu điểm Ý nghĩa việc triển khai ứng dụng phân tán phụ thuộc vào trường hợp sử dụng cụ thể và/hoặc vấn đề giải Một số thuộc tính chung dApps dựa Ethereum: − Trust (Lịng tin): Bất kỳ kiểm tra mã nguồn hợp đồng thông minh xác minh − Payment (Sự chi trả): Thanh toán thực theo mặc định gửi/nhận Ether − Accounts (Tài khoản): dApps xây dựng hệ thống tài khoản Ethereum, khơng cần triển khai hệ thống quản lý tài khoản người dùng bổ sung − Storage (Lưu trữ): dApps tận dụng Blockchain làm kho lưu trữ liệu phổ biến (đắt tiền) Được nhiều người tin tưởng, Ethereum trở thành tảng sử dụng rộng rãi để phát triển dApps (decentralized applications - ứng dụng phi tập trung) Dưới chi tiết ưu điểm dApps dựa Ethereum: − Độ tin cậy cao: Ethereum xây dựng hệ thống chuỗi khối công cộng, điều có nghĩa người truy cập vào thông tin giao dịch Điều giúp dApps Ethereum trở nên đáng tin cậy hơn, thơng tin giao dịch lưu trữ công khai 45 khơng thể bị sửa đổi xóa bỏ Ngồi ra, Ethereum cịn có hệ thống bảo mật mã hóa với tính hợp đồng thơng minh (smart contract) giúp đảm bảo tính tồn vẹn đáng tin cậy cho ứng dụng − Phi tập trung: Ethereum cho phép ứng dụng xây dựng cách phi tập trung Điều có nghĩa ứng dụng không phụ thuộc vào bên trung gian để hoạt động, đảm bảo tính độc lập tồn vẹn ứng dụng Điều giảm thiểu cố gắn kết (single point of failure) tăng tính bảo mật cho ứng dụng − Tiềm tăng trưởng không giới hạn: Ethereum cho phép nhà phát triển tạo ứng dụng mà khơng bị giới hạn hệ thống tài truyền thống quy định pháp lý Điều tạo tiềm tăng trưởng không giới hạn cho dApps tảng Ethereum Các nhà phát triển dễ dàng kết nối ứng dụng với để tạo hệ sinh thái phi tập trung tồn cầu − Tính khả chuyển cao: Ethereum có khả mở rộng cao, cho phép ứng dụng tảng xử lý hàng ngàn giao dịch giây Điều đảm bảo ứng dụng phục vụ 4.7 Nhược điểm Các ứng dụng phân quyền (dApps) dựa Ethereum có số nhược điểm định, bao gồm: − Khả mở rộng hạn chế: Ethereum xử lý khoảng 15 giao dịch giây, điều gây cố khả mở rộng số lượng người dùng số lượng giao dịch tăng lên Vấn đề đặt trước với trò chơi điện tử CryptoKitties - ứng dụng tiếng Ethereum - mà gây cố khả mở rộng lượng giao dịch tăng lên, làm chậm tồn mạng lưới Ethereum − Chi phí giao dịch cao: Như đề cập trên, để thực giao dịch Ethereum, người dùng phải trả phí gas Điều khiến cho giao dịch trở nên đắt đỏ so với ứng dụng truyền thống 46 − Không thể chỉnh sửa: Một giao dịch thực Ethereum, khơng thể bị chỉnh sửa xóa khỏi mạng lưới Điều gây hậu nghiêm trọng giao dịch thực sai bị công − Phụ thuộc vào độ tin cậy hợp đồng thông minh: Các dApps dựa Ethereum phụ thuộc vào độ tin cậy hợp đồng thông minh, tương tự ứng dụng khác Ethereum Nếu hợp đồng thông minh có lỗi khơng viết đúng, gây tác động tiêu cực đến toàn ứng dụng − Khó khăn việc phát triển: Việc phát triển dApps Ethereum trở nên khó khăn ngơn ngữ Solidity mẻ khó hiểu nhiều nhà phát triển Ngoài ra, cộng đồng phát triển Ethereum chưa đủ lớn để hỗ trợ dApps phức tạp phát triển cách nhanh chóng 47 TÀI LIỆU THAM KHẢO [1] Mastering Ethereum 2018: Building Smart Contract and dApp (Andreas M.Atonopoulos, Dr Gavin Wood) (2016) [2] Škvorc, B (n.d.) Build Your First Ethereum DApp Copyright © 2018 SitePoint Pty Ltd Ebook ISBN: 978-1-925836-07-3 [3] Michael (2022, November 22) ERC Tiêu chuẩn token mạng Ethereum - DeFiX DeFiX - Tin Tức Coin/Crypto Nhanh Và Chính Xác https://defix.network/erc-la-gi-tieu-chuan-token-cua-mang-ethereum/#ERC20_la_gi [4] Review A (2021) Token gì? Đặc điểm token cần nắm rõ Tin Tức Bitcoin: Tổng Hợp Các Thông Tin Về Tiền Ảo Giá BTC Mới Nhất 2023 https://icoviet.com/token-la-gi.html#Token_la_gi [5] [Đàm Đ V., & Đàm Đ V (2022, June 6) ERC20 gì? Ưu nhược điểm & loại ví ERC20 Coin568 https://coin568.com/erc20-la-gi/ [6] Slide giảng môn Công nghệ Blockchain [7] Luân, N V (2021, July 26) DApp gì? Cách hoạt động, Ưu nhược điểm dApp - BigTOP BigTOP https://bigtop.vn/blog/14273/dapp-la-gicach-hoat-dong-uu-va-nhuoc-diem-cua-dapp [8] Nhu Q (2022, December 15) DApp Là Gì? Ưu Và Nhược điểm Của DApp - FX Việt FX Việt https://fx.com.vn/dapp-la-gi/#DApp_la_gi 48