Chương 1: Giới thiệu tổng quan về đề tài của Khóa luận và những nghiên cứu liên quan. 11 Chương 2: Trình bày cơ sở lý thuyết và kiến thức nền tảng liên quan đến đề tài. Chương 3: Trinh bày chi tiết thiết kết mô hình học sâu đa phương thức - VulnSense. Chuong 4: Trinh bay thuc nghiém va danh gia.
Chương 5: Kết luận và hướng phát triển của đề tài. CƠ SỞ LÝ THUYET Trong chương này, chúng tôi trình bày các cơ sở lý thuyết cần thiết cho khoá luận, bao gồm: hợp đồng thông minh, ngôn ngữ Solidity và các loại 16 hong của ngôn ngữ Solidity khi triển khai hợp đồng thông minh, các đặc trưng của hợp đồng thông minh và các mô hình học sâu mà nhóm sử dụng trong khoá luận. Hợp đồng thông minh Hợp đồng thông minh là một khái niệm trong lĩnh vực Blockchain và crypto currency, đặc biệt phổ biến trên nền tảng Ethereum. Nó kết hợp cả lý thuyết và công nghệ để tạo ra các hợp đồng tự động, không cần đến sự can thiệp của bên thứ ba.
Cơ sở lý thuyết của hợp đồng thong minh xuất phát từ ý tưởng về hợp đồng truyền thống trong lĩnh vực pháp lý. Trong thực tế, một hợp đồng là một thỏa thuận giữa hai hoặc nhiều bên, đặt ra các điều kiện và cam kết cụ thể. Tuy nhiên, hợp đồng truyền thống phụ thuộc vào các tổ chức pháp lý và nhà trung gian để giám sát và thực thi (Hình 2. Hợp đồng thông minh áp dụng cơ chế của Blockchain để tạo ra hợp đồng tự động, tự thực thi.
Nó là một chương trình máy tính hoạt động trên nền tang Blockchain, được viết bằng ngôn ngữ lập trình và chứa các điều kiện và hành động cụ thể. Khi một điều kiện trong hợp đồng thông minh được thỏa mãn, các hành động tương ứng sẽ được thực hiện tự động. Một số tính chất của hợp đồng thông minh bao gồm: 1. Tính tự động hóa: Hợp đồng thông minh loại bỏ sự phụ thuộc vào sự can thiệp của bên thứ ba trong việc thực thi hợp đồng.
Các điều khoản và điều 13 Traditional Contracts ILI Smart Contracts kiện được định nghĩa rõ ràng và sẽ tự động thực hiện khi các điều kiện được đáp ứng. Tính phân phối: Hợp đồng thông minh được sao chép và phân phối đến tất cả các nút trong mạng Blockchain. Điều này dam bảo tính toàn ven và bảo mật của hợp đồng, giúp hợp đồng không thể bị thay đổi hay xóa bỏ một cách trái phép. Tính bất biến: Sau khi triển khai, hợp đồng thông minh không thể bị chỉnh sửa.
Tính tin cậy: Hợp đồng thông minh hoạt động theo cách mà nó được lập trình, không có sự can thiệp của con người, không có bên thứ ba. Điều này dam bảo tính tin cậy và tránh những mâu thuẫn hoặc phiên giải sai trong quá trình thực thi hợp đồng. Hơn nữa, hợp đồng thông minh được duy tri và thực thi bởi tất cả các nút trên mạng bằng cơ chế đồng thuận, loại bỏ 14 quyền kiểm soát từ tay bất kỳ một bên nào. Tính minh bạch: Hợp đồng thông minh luôn được lưu trữ trên một sổ cái phân phối công khai gọi là Blockchain, nhờ đó mã nguồn là công khai với mọi người, cho dù họ có tham gia vào hợp đồng thông minh hay không.
Tính tiết kiệm thời gian và chi phí: Hợp đồng thông minh giảm thiểu sự phụ thuộc vào các bên trung gian và giúp tiết kiệm thời gian và chi phí trong việc thực hiện hợp đồng. Không cần phải tìm kiếm và truy cập đến các nguồn thông tin bên ngoài để xác minh và thực thi hợp đồng. Tuy nhiên, hợp đồng thông minh không thể thay thế hoàn toàn hợp đồng truyền thống và không phải tất ca các loại hợp đồng đều phù hợp với hợp đồng thông minh. Điều này phụ thuộc vào tính chất và phạm vi của hợp đồng, cũng như các yếu tố pháp lý và quy định tại quốc gia hoặc khu vực tương ứng.
Ngôn ngữ Solidity Solidity là một ngôn ngữ lập trình chính trong việc phát triển hợp đồng thông minh trên nền tang Ethereum. Được phát triển bởi Gavin Wood vào năm 2014 [27], Solidity giúp xây dựng ứng dung phi tập trung (Decentralized Applications - DApps) và thực hiện các hợp đồng tự động trên blockchain Ethereum. Solidity có cú pháp tương tự như ngôn ngữ lập trình C++, với một số tùy chỉnh và đặc điểm riêng. Sau khi được biên dich, bytecode của hợp đồng thông minh sẽ được tao và thực thi bên trong máy ảo Ethereum (EVM).
Quá trình này được thể hiện tổng quan trong Hình 2. Vì có một ánh xạ một-một giữa hoạt động blockchain và biểu diễn bytecode, nên việc phân tích luồng kiểm soát của hợp đồng thông minh ở bytecode là khả thi hơn. Khi được kích hoạt, việc thực hiện hợp đồng thông minh là tự chủ và có hiệu lực đối với tất cả các bên tham gia. Bản thân EVM là một máy ảo dựa trên ngăn xếp có kích thước từ 256 đến 1024 bits.
Bộ nhớ áp dụng một mô hình địa chỉ từ. Khi một hợp đồng thông 15 9 ~. Smart Contract Compiler (Solc) EVM Hình 2.2: Biên dịch Hợp đồng thông minh 26: ` ( 0154 01: SLOAD uint — = 02: 60 02: PUSH s _—] 03:01 =h 03: 0x01 uint(block.blockhash ` / — 04: 43 ——+⁄“| 04: NUMBER (block. %totalBets + 1:; —t 06: 40 " 6S: SUB ` 06: BLOCKHASH / Hình 2.3: Tương quan giữa source code, bytecode va opcode minh triển khai trên Bloekchain, nó cần gas để hoạt động.
Gas là đơn vị được sử dung để thanh toán chi phí tính toán của những người khai thác chạy hợp đồng thông minh hoặc giao dịch và được thanh toán bằng Ether (ETH).3 thể hiện 3 bước để triển khai hợp đồng thông minh trên EVM. Đầu tiên, mã nguồn sẽ được viết bằng ngôn ngữ bậc cao, ví dụ như Solidity. Thứ 2, mã nguồn này sẽ được trình biên dịch biên dịch thành các bytecodes. Bytecode (hay còn được gọi là EVM code) là một chuỗi thập lục phân.
Cuối cùng, các bytecodes được chuyển thành các operation codes (opcodes). Bytecode Bytecode là một chuỗi các mã lệnh thập lục phân (hexadecimal) được sinh ra từ các ngôn ngữ lập trình bậc cao như C/C++, Python và không ngoại lệ đối với Solidity. Trong ngữ cảnh triển khai hợp đồng thông minh bằng Solidity, bytecode là phiên bản biên dịch của mã nguồn hợp đồng thông minh và được 16 thực thi trên môi trường Blockchain. Bytecode đại diện cho các hành động mà hợp đồng thông minh có thể thực hiện.
Nó chứa các câu lệnh và thông tin cần thiết để thực hiện các chức năng của hợp đồng. Bytecode thường được chuyển đổi từ ngôn ngữ Solidity hoặc các ngôn ngữ khác sử dụng trong việc phát triển hợp đồng thông minh. Bytecode khi được triển khai trên Ethereum được chia thành 2 loại: creation bytecode và runtime bytecode. Creation bytecode chỉ được chạy duy nhất 1 lần khi hợp đồng thong minh được triển khai lên hệ thống.
Creation bytecode có nhiệm vụ thiết lập trạng thái ban đầu của hợp đồng thông minh như các biến khởi tạo, hàm constructor. Creation bytecode sẽ ko nam trong thành phan hợp đồng thông minh được triển khai lên mạng Blockchain. Runtime bytecode chứa các thông tin có thể thực thi của hợp đồng thông minh và được triển khai lên mạng Blockchain. Một khi hợp đồng thông minh đã được biên dịch thành bytecode, nó có thé được triển khai lên Blockchain và được thực thi bởi các nút trong mạng.
Các nút trong mạng sẽ thực hiện các câu lệnh trong bytecode để xác định hành vi và tương tác của hợp đồng thông minh. Bytecode có tính xác định cao và không thể thay đổi sau khi đã được biên dịch. Nó cung cấp cho các bên tham gia trong mạng Blockchain khả năng xem và kiểm tra hợp đồng thông minh trước khi triển khai. Opcode Opcode trong hợp đồng thông minh là các mã lệnh thực thi được sử dụng trong môi trường blockchain để thực hiện các chức năng của hợp đồng thông minh.
Opcode là các lệnh máy cấp thấp được sử dụng để điều khiển quá trình thực thi của hợp đồng trên một máy ảo blockchain như Ethereum Virtual Ma- chine (EVM). 17 Mỗi opcode đại diện cho một tác vụ cu thể trong hợp đồng thông minh, bao gồm các phép toán logic, phép tính số học, quản lý bộ nhớ, truy cập vào dữ liệu, gọi và tương tác với các hợp đồng khác trong mang Blockchain, và nhiều tác vụ khác. Opcode định nghĩa các hành động mà hợp đồng thông minh có thể thực hiện và quy định cách mà các dữ liệu và trạng thái của hợp đồng được xử lý. Các opcode được liệt kê và xác định trong biểu diễn bytecode của hợp đồng thông minh.
Việc sử dung các opcodes cung cấp sự linh hoạt và tiêu chuẩn hóa cho việc thực hiện các chức năng của hợp đồng thông minh. Opcode giúp đảm bảo tính nhất quán và an toàn trong quá trình thực thi của hợp đồng trên mạng blockchain, và đóng vai trò quan trọng trong việc xác định hành vi và logic của hợp đồng thông minh. Theo Ethereum Yellow Paper [28], sẽ có 135 opcodes đại diện cho 10 chức năng bao gồm: namely, stop and arithmetic operations, comparison and bit- wise logic operations, SHA3 operations, environment information operations, block information operations, stack, memory, storage and flow operations, push operations, exchange operations, logging operations and system operations.1: Giới thiệu vé Opcodes trong ngôn ngữ Solidity Loại Opcode Quan ly Stack POP, PUSH, UP, SWAP Arithmetic/ Comparison/ Bitwise ADD, SUB, GT, LT, AND, OR Thong tin môi trường CALLER, CALL VALUE, NUMBER Opcode kiểm soát bộ nhớ LOAD, STORE, MSSTORE 8, MSIZE Quan lý bộ nhớ LOAD, STORE Opcodes liên quan đến bộ đếm chương trình | JUMP, JUMPTO, JUMPIF, JUMPSUB, JUMPSUBV, JUMPDEST STOP Opcodes STOP, RETURN, REVERT, INVALID, SELF, DESTRUCT 2. Control Flow Graph Control Flow Graph (CFG) là một dang dữ liệu mạnh mẽ trong phân tích mã nguồn Solidity để hiểu và tối ưu hóa luồng điều khiển của chương trình được trích xuất từ bytecode của hợp đồng thông minh.
CFG giúp xác định cấu trúc 18 Block 66E - 66E Block 64B - 652 JUMPDEST Block 653 - 660 MOD ADD PUSH1 0x0a DUP2 SWAP1 JUMPDEST SSTORE SWAP1 POP PUSH1 0x00 + PUSH2 0x0954 MSTORE PUSH1 0x0a PUSH1 0x20 SLOAD Block 954- 988 PUSH1 0x00 PUSH2 0x064b SHA3 JUMP JUMPDEST ADD Block 6C3 - 6CF SLOAD DUP4 OR SWAP1 rea GT SSTORE BURT ISZERO QUMPDEST JUMPDEST |~----~~---- — O ISZER Pusi PUSH1 0x01 Pusn By e PUSH2 0x09ba RE * PUSH20x0142 JUMPI PUSH1 0x04 POP DUP1 POP CALLDATASIZE Block 142 - 183 PUSH2 0x0653 SUB JUMP as JUMPDEST PUSH2 0x064b PUSH1 0x40 Block 6D1 - 6D6 juve | |. Block 683 - 68F JUMPDEST SUB SWAP1 T0nP2 DUP2 PUSH1 0x01 Block 690 - 690 RETURN. Sonne ISZERO x -< RMXAM .-- PUSH20x0691 |“ = JUMPI Hình 2.