Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
351,69 KB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ THÔNG TIN a - & -b BÁO CÁO BÀI TẬP LỚN MÔN: Mật mã học nâng cao Giảng viên: TS Đỗ Xuân Chợ Nhóm thực hiện: Nhóm 10 Họ tên MSV Vũ Lê Long B17DCAT120 Đỗ Mạnh Hùng B17DCAT087 Trần Việt Trinh B17DCAT191 Hà Nội, 12/2020 Cách xây dựng ứng dụng Blockchain Giới thiệu Blockchain Blockchain mạng ngang hàng máy tính, nút, nói chuyện với nhau. Đó mạng phân tán, nơi tất người tham gia chia sẻ trách nhiệm điều hành mạng. Mỗi người tham gia mạng trì mã liệu blockchain. Tất liệu chứa gói ghi gọi "khối" "xâu chuỗi với nhau" để tạo nên chuỗi khối Các bước thực 2.1 Thiết lập project Bây tạo project Trước tiên tạo thư mục project nhập vào sau : Sau đó, khởi tạo project truffle để phát triển project sau: Và sau terminal output bạn cho thấy project tạo thành cơng Chúng ta mở trình soạn thảo văn thấy số tệp thư mục tạo bạn chạy lệnh Sau tạo package.json, tệp để cài đặt số phụ thuộc phát triển cần cho project Ta làm điều từ dịng lệnh sau: Bây khởi động project cách cần chép dán đoạn mã vào tệp package.json mình: Bây ta cài đặt phụ thuộc từ dịng lệnh sau: Bây phần phụ thuộc cài đặt, sau kiểm tra cấu trúc thư mục dự án mà vừa tạo: Contracts directory: nơi chứa tất smart contacts Chúng ta có migrations contracts để xử lý migrations sang blockchain Migrations directory: nơi chứa tất tệp migrations Những migrations tương tự khuôn khổ phát triển web khác yêu cầu migrations để thay đổi trang thái sở liệu Bất ta cần triển khai smart contacts vào blockchain , cần cập nhật trạng thái blockchain ta cần migration Node_modules directory : nơi chứa tất node dependencies vừa cài đặt Test directory: nơi viết thử nghiệm cho smart contract Truffle-config.js file: tệp cấu hình cho project Trufle chúng ta, nơi mà xử lý thứ cấu cấu hình mạng Và bắt đầu phát triển smart contracts quản lý danh sách việc cần làm Chúng ta thực việc cách tạo tệp contracts directory sau: Bên đây, phát triển danh sách smart contract cần làm Đầu tiên, bắt đầu cách định phiên sau: Và ta khai báo smart contract sau: Chúng ta tạo smart contract được TodoList theo sau dấu ngoặc nhọn Chúng ta thêm tất mã cho smart contract bên chúng Việc làm theo dõi số lượng nhiệm vụ bên danh sách việc cần làm. Điều cho phép viết số mã đơn giản giúp đảm bảo dự án thiết lập cách mã hoạt động blockchain. Chúng cần tạo biến trạng thái gọi taskCount để theo dõi số lượng nhiệm vụ sau: Đây taskCount loại biến đặc biệt gọi "biến trạng thái". Bất kỳ liệu mà lưu trữ bên biến trạng thái ghi vào nhớ blockchain. Nó thay đổi trạng thái hợp đồng thơng minh có phạm vi tồn hợp đồng thơng minh, trái ngược với biến cục có phạm vi bên chức năng. Chúng ta đặt giá trị mặc định cho biến trạng thái sau: Bây giờ, tạo cách để truy cập giá trị biến trạng thái bên hợp đồng. Chúng ta làm điều với từ khóa bổ trợ đặc biệt có tên là public Solidity. Khi làm điều này, Solidity tạo một taskCount() hàm một cách kỳ diệu để chúng tơi truy cập giá trị biến bên ngồi hợp đồng thơng minh. Điều hữu ích chúng tơi tương tác với hợp đồng thông minh bảng điều khiển, từ ứng dụng phía máy khách bên tệp thử nghiệm Bây giờ, biên dịch smart contract đảm bảo khơng có lỗi: Ta nên ý tập tin tạo bạn biên soạn hợp đồng thông minh đường dẫn sau: /build/contracts/TodoList.json Tệp tệp ABI hợp đồng thông minh, viết tắt "Giao diện nhị phân trừu tượng". Tệp có nhiều trách nhiệm, nhấn mạnh hai điều đây: Nó chứa phiên bytecode biên dịch mã hợp smart contract Solidity chạy Máy ảo Nó chứa trình bày JSON chức hợp đồng thơng minh hiển thị cho máy khách bên ngoài, ứng dụng JavaScript phía máy khách Mục tiêu truy cập hợp đồng thông minh bên bảng điều khiển Truffle. Tuy nhiên, chạy bảng điều khiển Truffle ứng dụng chúng tơi chưa kết nối với mạng blockchain cá nhân Ganache mà chúng tơi thiết lập phần dependencies . Để nói chuyện với hợp đồng thông minh mạng blockchain cá nhân bên bảng điều khiển Truffle, phải thực số điều sau: Cập nhật tệp cấu hình project để định mạng blockchain cá nhân muốn kết nối Tạo tập lệnh di chuyển cho Truffle biết cách triển khai hợp đồng thông minh vào mạng blockchain cá nhân Chạy tập lệnh di chuyển tạo, triển khai hợp đồng thông minh vào mạng blockchain cá nhân Tiếp theo, tạo tập lệnh di chuyển bên directory để triển khai hợp đồng thông minh cho mạng blockchain cá nhân. Từ gốc project tạo tệp từ dòng lệnh sau: Bên tệp tạo này, bạn sử dụng mã để triển khai smart contract: Đầu tiên, yêu cầu contract mà ta tạo gán cho biến có tên "TodoList". Tiếp theo, ta thêm vào tệp kê khai contracts triển khai để đảm bảo triển khai chúng tơi chạy q trình di chuyển Bây chạy tập lệnh migrations từ dòng lệnh sau: Bây di chuyển thành công hợp smart contract sang mạng blockchain cá nhân, mở bảng điều khiển để tương tác với smart contract. Ta mở bảng điều khiển truffle từ dòng lệnh sau: Bây bên bảng điều khiển, lấy ví dụ smart contract triển khai xem liệu đọc taskCount từ hợp đồng hay khơng. Từ bảng điều khiển, chạy mã này: lấy địa smart contract triển khai vào blockchain sau: 2.2 List task Để liệt kê task bên smart contract, cần cách để lập mơ hình nhiệm vụ cách vững chắc. Solidity cho phép bạn xác định kiểu liệu riêng với các structs . Chúng tơi mơ hình hóa liệu tùy ý với tính mạnh mẽ này. Chúng ta sử dụng cấu trúc để lập mơ sau: Đầu tiên, chúng tơi lập mơ hình nhiệm vụ với struct từ khóa theo sau tên cấu trúc mới Task. Lưu ý điều không đại diện cho trường hợp a Task mà đơn giản định nghĩa một Task cấu trúc. Các dòng chứa dấu ngoặc nhọn xác định thuộc tính của Taskcấu trúc: uint id- mã định danh cho cấu trúc. Nó có một id, giống ghi sở liệu truyền thống. Lưu ý, khai báo kiểu liệu cho số nhận dạng a uint, viết tắt "số ngun khơng dấu". Điều đơn giản có nghĩa số ngun khơng âm. Nó khơng có "dấu hiệu", tức một -hoặc một +dấu hiệu, phía trước nó, ngụ ý ln ln tích cực string content - văn nhiệm vụ danh sách việc cần làm chứa chuỗi bool completed- trạng thái hộp kiểm danh sách việc cần làm true/false. Nếu vậy true, nhiệm vụ "hoàn thành" bị đánh dấu khỏi danh sách việc cần làm Bây lập mơ hình nhiệm vụ, cần nơi để đặt tất nhiệm vụ vào danh sách việc cần làm! Chúng muốn đưa chúng vào lưu trữ blockchain để trạng thái hợp đồng thông minh tồn lâu dài. Chúng ta truy cập kho lưu trữ blockchain với biến trạng thái, giống làm với taskCount. Chúng tạo một tasksbiến trạng thái. Nó sử dụng loại cấu trúc liệu Solidity đặc biệt gọi ánh xạ này: Bây tạo hàm để tạo tác vụ. Điều cho phép thêm nhiệm vụ vào danh sách việc cần làm theo mặc định để liệt kê chúng bảng điều khiển Bây muốn thêm task vào todolist làm hợp smart contract triển khai vào blockchain để có task mặc định mà kiểm tra bảng điều khiển. Chúng ta làm điều cách gọi createTask()hàm bên hàm khởi tạo hợp đồng thông minh sau: Bây triển khai smart contract vào blockchain. Để làm điều này, phải triển khai một mã mình. Mã smart contract bất biến! Nó khơng thể thay đổi. Do đó, chúng tơi phải tạo smart contract 10 lúc thực thay đổi mã. Truffle cung cấp phím tắt để hỗ trợ việc này. Chúng tơi chạy lại q trình di chuyển sau: Bây nhận nhiệm vụ từ danh sách việc cần làm cách gọi tasks()hàm. Điều cho phép truy cập giá trị từ tasks ánh xạ bằng id. Chúng ta cần chuyển id task danh sách gọi hàm này: Bây chuyển smart contract sang blockchain, tạo mã phía máy khách để tương tác với hợp đồng thông minh danh sách việc cần làm. Bạn cần tạo tệp sau cho project: Bây điền mã HTML cho todolist chúng ta. Hướng dẫn tập trung chủ yếu vào công nghệ blockchain.Ta cần dán mã HTML vào đây: 11 Tệp hỗ trợ tất HTML mà cần cho project. Tôi nhận xét mã biểu mẫu mà bật phần sau. Tệp kéo tất phụ thuộc cho project khuôn khổ tạo khuôn mẫu bootstrap cho phép tạo phần tử giao diện người dùng đẹp mắt mà không cần phải viết nhiều CSS. Nó sử dụng thư viện Truffle Conract cho phép tương tác với JavaScript todo list smart contract Bây điền mã JavaScript cho phần này. Chúng thêm mã vào app.jstệp mới tạo như sau: 12 Bây khởi động máy chủ web đảm bảo project tải trình duyệt 2.3 Create task Chúng ta tạo hàm để tạo task, chưa hồn thành Đó ta muốn kích hoạt kiện lúc tác vụ tạo. Sự vững cho phép kích hoạt kiện tùy ý mà người tiêu dùng bên đăng ký. Nó cho phép lắng nghe kiện bên 13 ứng dụng phía máy khách, v.v Hãy tạo một TaskCreated() kiện kích hoạt lúc tác vụ tạo trong createTask() hàm sau: Bây giờ, tạo kiểm tra để đảm bảo kiện kích hoạt tác vụ tạo. Chúng kiểm tra biên lai giao dịch nhiệm vụ tạo. Điều chứa tất thông tin nhật ký chứa liệu kiện. Chúng tơi kiểm tra liệu bên thử nghiệm để đảm bảo kiện kích hoạt cách: Bây chạy thử nghiệm: 14 Bây triển khai hợp smart contract vào blockchain mã thay đổi Bây cập nhật mã phía máy khách Trước tiên, bỏ nhận xét mã biểu mẫu trong index.htmltệp: Bây thêm một createTask()hàm trong app.jstệp sau: Bây bạn thêm tác vụ từ ứng dụng phía máy khách! Lưu ý, khơng có nút "gửi" biểu mẫu. Ta bỏ để đơn giản hóa giao diện người dùng. Bạn phải nhấn phím "enter" bàn phím để gửi tác vụ. Sau thực hiện, bạn thấy thông báo xác nhận Metamask bật lên. Bạn phải ký giao dịch để tạo task 2.4 Complete task Bây giờ, điều cuối làm hướng dẫn "đánh dấu" nhiệm vụ danh sách việc cần làm. Sau thực hiện, chúng xuất danh sách "đã hoàn thành", vậy. Đầu tiên, cập nhật hợp đồng thông minh. Chúng tơi thêm một TaskComplted()sự kiện kích hoạt bên một toggleCompleted()chức năng mới như sau: 15 Bây viết kiểm tra này: 16 Bây chạy thử nghiệm: Yay, trơi qua! 🎉 Bây triển khai hợp đồng thơng minh vào blockchain mã thay đổi: Bây cập nhật mã phía máy khách. Đầu tiên, chúng tơi bỏ nhận xét trình nghe kiện bên trong renderTasks()hàm: Bây thêm một toggleCompleted()hàm trong app.jstệp sau: 17 .. .Cách xây dựng ứng dụng Blockchain Giới thiệu Blockchain Blockchain mạng ngang hàng máy tính, nút, nói chuyện với nhau. Đó mạng... thêm tất mã cho smart contract bên chúng Việc làm theo dõi số lượng nhiệm vụ bên danh sách việc cần làm. Điều cho phép viết số mã đơn giản giúp đảm bảo dự án thiết lập cách mã hoạt động blockchain. Chúng... hình project để định mạng blockchain cá nhân muốn kết nối Tạo tập lệnh di chuyển cho Truffle biết cách triển khai hợp đồng thông minh vào mạng blockchain cá nhân Chạy tập lệnh di chuyển tạo, triển