Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 38 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
38
Dung lượng
2,25 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG BLOKCHAIN BẰNG NODEJS Công ty thực tập: Công ty TNHH Codelight Người phụ trách: Nguyễn Mạnh Đạt Thực tập sinh: Ngô Dương Kha Mã số sinh viên: 19520117 TP Hồ Chí Minh, tháng 12 năm 2022 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG BLOKCHAIN BẰNG NODEJS Cơng ty thực tập: Công ty TNHH Codelight Người phụ trách: Nguyễn Mạnh Đạt Thực tập sinh: Ngô Dương Kha Mã số sinh viên: 19520117 TP Hồ Chí Minh, tháng 12 năm 2022 LỜI CẢM ƠN Em xin chân thành cảm ơn nhà trường quý thầy cô trường Đại học Công Nghệ Thông Tin tận tâm hướng dẫn, giảng dạy cho em kiến thức chuyên môn kỹ mềm năm ngồi giảng đường đại học, từ xây dựng cho em tảng vững tạo giúp em thực hóa ước mơ Trân trọng gửi lời cảm ơn Công ty TNHH Codelight tạo điều kiện cho em có hội thực tập công ty, cho em trải nghiệm môi trường làm việc chuyên nghiệp hiệu Cùng với người đồng đội tập, em mong chúng em để lại dấu ấn, kỷ niệm đẹp tập vừa qua Chỉ thời gian ngắn, nhờ dẫn nhiệt tình anh chị hướng dẫn, em tiếp thu kiến thức quan trọng để làm sản phẩm phần mềm hoàn chỉnh Chân thành cảm ơn anh chị nhóm hướng dẫn bỏ nhiều thời gian, cơng sức để hướng dẫn em hồn thành đợt thực tập Bên cạnh kinh nghiệm quý báu kỹ chun mơn lập trình backend, cịn có kỹ làm việc nhóm, quy trình làm việc chuyên nghiệp Các anh chị hướng dẫn dạy em kỹ thuật cần thiết giao tiếp truyền đạt cho em kinh nghiệm anh chị trình làm việc, trao đổi với khách hàng tinh thần trách nhiệm với công việc với đồng đội Các anh chị tạo cho em nhiều hội để ứng dụng kiến thức vào thực tế để xây dựng dự án thực tiễn từ lúc ban đầu, nâng cao trình độ, tốc độ lập trình trí thức thêm bậc Em xin chân thành cảm ơn! Ngô Dương Kha TP.Hồ Chí Minh, tháng 12 năm 2022 1|Page LỜI MỞ ĐẦU Vào kỷ 21, cách mạng Công nghiệp 4.0 Internet bùng nổ kéo theo nhiều đổi với công nghệ kỹ thuật số tới, giúp việc trở nên dễ dàng, thuận tiện hết Tuy nhiên, phát triển kèm với tổn thất gây ảnh hưởng lớn đến kinh tế - xã hội Những vụ trộm tiền điện tử, công an ninh mạng ngày trở nên tinh vi phức tạp hơn, không giới nói chung mà cịn Việt Nam nói riêng Từ rủi ro đó, tổ chức 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 chí cách mạng hóa giải pháp bảo mật Với xuất phát điểm công nghệ đằng sau loại tiền điện tử phổ biến Bitcoin, Blockchain ngày cơng nhận cách mạng hóa giới, mang lại thay đổi đáng kể nhiều lĩnh vực công nghệ, kinh tế, xã hội, y tế Nó nhằm mục đích mang lại tính minh bạch, bảo mật tính tồn vẹn liệu Đó loạt phát triển hy vọng cho hội to lớn thay đổi Cơng nghiệp 4.0 Sau q trình học tập rèn luyện khoa Công nghệ phần mềm trường Đại học Công nghệ Thông tin chúng em trang bị kiến thức chuyên môn kỹ mềm Với mong muốn bổ sung thêm kinh nghiệm kỹ làm việc môi trường chuyên nghiệp, em lên kế hoạch cho khóa thực tập học kỳ Sau tìm hiểu lịch sử phát triển văn hóa em định chọn Công Ty TNHH Codelight - môi trường lý tưởng, đại, chuyên nghiệp - nơi giúp em thực hóa dự định 2|Page NHẬN XÉT CỦA KHOA ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… 3|Page MỤC LỤC LỜI CẢM ƠN LỜI MỞ ĐẦU NHẬN XÉT CỦA KHOA MỤC LỤC DANH MỤC HÌNH ẢNH CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 1.1 Giới thiệu công ty Codelight 1.2 Sản phẩm công ty 1.2.1 Warena – Cross-chain DeFi game 1.2.2 Massbit – Innovative infrastructure for DeFi and Web3 apps 10 1.2.3 Pikasso – No code NFT platform for Digital Creators 11 CHƯƠNG 2: NỘI DUNG THỰC TẬP 12 2.1 Tìm hiểu công ty kỹ công ty 12 2.2 Nghiên cứu kỹ thuật 12 2.2.1 Mơ hình Agile 12 2.2.2 Tìm hiểu blockchain, smart contract mạng Ethereum 15 2.2.3 Tìm hiểu sử dụng framwork NestJS xây dựng hệ thống Backend 21 CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN BLOX3 26 3.1 Giới thiệu 26 3.2 Vì cần có Blox3 26 3.3 Kiến trúc hệ thống 27 3.4 Giao diện sản phẩm 28 3.4.1 Giao diện mobile 28 4|Page 3.4.2 Giao diện website 31 CHƯƠNG 4: TỔNG KẾT 35 4.1 Thành 35 4.2 Rút kinh nghiệm 35 4.3 Cảm nhận thân công ty 35 DANH MỤC TÀI LIỆU THAM KHẢO 36 5|Page DANH MỤC HÌNH ẢNH Hình 1-1 Logo cơng ty Codelight Hình 1-2 Banner game Warena Hình 1-3 Logo Massbit 10 Hình 1-4 Landing Page Pikasso 11 Hình 2-1 Smart contract Inbox 18 Hình 2-2 Smart contract Lottery 18 Hình 2-3 Smart contract Campaign 19 Hình 2-4 Kết kiểm thử smart contract 20 Hình 2-5 Mơ hình Controller NestJS 21 Hình 2-6 Mơ hình Provider NestJS 22 Hình 2-7 Mơ hình Module NestJS 22 Hình 2-8 Vòng đời request ứng dụng NestJS 24 Hình 2-9 Kết kiểm thử NestJS 25 Hình 3-1 Logo Blox3 26 Hình 3-2 Sơ đồ kiến trúc hệ thống backend Blox3 27 Hình 3-3 Màn hình OnBoarding (mobile) 28 Hình 3-4 Màn hình SignIn (mobile) 29 Hình 3-5 Màn hình Home (mobile) 29 Hình 3-6 Màn hình Deals (mobile) 30 Hình 3-7 Màn hình Earnings (mobile) 30 Hình 3-8 Màn hình Account (mobile) 31 Hình 3-9 Màn hình Authentication (website) 31 Hình 3-10 Màn hình Dashboard (website) 32 6|Page Hình 3-11 Màn hình Transactions (website) 32 Hình 3-12 Màn hình Deals (website) 33 Hình 3-13 Màn hình Earnings (website) 33 Hình 3-14 Màn hình Account (website) 34 7|Page CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP Hình 1-1 Logo cơng ty Codelight 1.1 Giới thiệu công ty Codelight - Tên đơn vị: Công ty trách nhiệm hữu hạn Codelight - Lĩnh vực hoạt động: Phát triển sản phẩm blockchain - Địa chỉ: Vinhomes Central Park, quận Bình Thạnh, thành phố Hồ Chí Minh - Trang web: https://codelight.co/ - Email: info@codelight.co - Thời gian làm việc: Thứ đến thứ 6: 09h00 - 18h00 - Slogan: “The Internet evolution through Web3 Infrastructure” - Sứ mệnh: Xây dựng sản phẩm phần mềm mang lại nhiều giá trị cho người dùng - Giá trị cốt lõi: • Someone of honest integrity: Codelight employees should be honest about their strengths and weaknesses • Unafraid to show weakness: At Codelight we not punish weakness Rather we treat it as an opportunity to learn and grow • Politically neutral: At Codelight we respect every person, regardless of their ideological beliefs • Equal opportunity: Everyone at Codelight is encouraged to more and will be properly rewarded when they prove themselves 8|Page Hình 2-6 Mơ hình Provider NestJS - Provider thành phần Nest, provider đưa vào làm dependency để tạo mối liên hệ nhiều đối tượng khác Các lớp services, repositories hay helpers xem provider Hình 2-7 Mơ hình Module NestJS - Một module thiết kế để đóng gói logic liên quan chức cần triển khai đến client cách độc lập Mỗi ứng dụng Nest phải có module gốc Module gốc điểm khởi đầu sử dụng để xây dựng biểu đồ ứng dụng để giải mối quan hệ phụ thuộc Module Providers Các thành phần khác NestJS: 22 | P a g e - Middleware hàm gọi trước đến route handler Các hàm có quyền truy cập vào request response, hàm next() chu kỳ requestresponse ứng dụng - Exception filter chịu trách nhiệm xử lý tất exception chưa xử lý ứng dụng Khi exception không xử lý code, lớp bắt, sau tự động gửi phản hồi thân thiện đến người dùng - Pipe có hai trường hợp sử dụng: • Transformation: Chuyển đổi liệu đầu vào sang dạng mong muốn • Validation: Kiểm tra hợp lệ liệu đầu vào Sẽ ném exception liệu khơng xác - Interceptor có khả năng: • Ràng buộc logic bổ sung trước/sau thực thi phương thức • Biến đổi kết trả từ hàm • Biến đổi exception ném từ hàm • Mở rộng hành vi hàm • Ghi đè hồn tồn function tùy thuộc vào điều kiện cụ thể - Guard xác định xem request định xử lý route handler hay không, tùy thuộc vào điều kiện định (như permissons, roles) có thời điểm chạy Điều thường gọi ủy quyền (xác thực) Ủy quyền thường xử lý middleware ứng dụng Express Nhưng middleware handler thực thi sau gọi hàm next() Mặt khác, Guard có quyền truy cập vào instance ExecutionContext biết xác thực thi 23 | P a g e Hình 2-8 Vịng đời request ứng dụng NestJS Đây sơ đồ mô tả trực quan request lifecycle thành phần bên ứng dụng Nest Triển khai dự án Dự án sử dụng Prisma (một ORM dành cho NodeJs) để dịch chuyển kết nối với liệu Gồm có ba module chính: - Auth (authentication): quản lý controller, provider đảm nhận việc xác thực người dùng gồm đăng nhập đăng ký tài khoản - User: quản lý controller, provider tương tác thông tin người dùng gồm chức lấy chỉnh sửa thông tin người dùng - Note: quản lý controller, provider tương tác với liệu ghi gồm chức lấy, thêm, xóa, sửa ghi 24 | P a g e Kiểm thử dự án Hình 2-9 Kết kiểm thử NestJS Github repository: https://github.com/ngoduongkha/authentication-api 25 | P a g e CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN BLOX3 3.1 Giới thiệu Blox3 ứng dụng fintech thay đổi cách giới đầu tư việc tạo lợi nhuận bền vững cho người tiêu dùng Với Blox3, người dùng tận dụng thị trường blockchain để đầu tư trực tiếp vào doanh nghiệp giới thực, mà không cần thông qua ngân hàng Hình 3-1 Logo Blox3 Địa website: https://www.blox3.com/index.html 3.2 Vì cần có Blox3 Thế giới tài thay đổi, khơng cịn ngân hàng độc quyền thị trường Với phương thức tiết kiệm truyền thống, tiền bạn gửi sử dụng người khác để đầu tư, mang lại cho bạn lãi suất hàng tháng thấp Blox3 loại bỏ người trung gian, trao quyền cho nhà đầu tư đầu tư trực tiếp vào cơng ty có uy tín mà họ chọn, tạo đường dây trực tiếp từ người tiêu dùng đến kinh doanh cung cấp lợi nhuận tăng lên cho nhà đầu tư Blox3 tận dụng công nghệ để tạo giao dịch toàn cầu không biên giới lập tức, cởi mở truy cập cho người Thay đổi cách nhà đầu tư thuộc quy mô nắm quyền khoản đầu tư họ Mục tiêu cung cấp khoản đầu tư dài hạn bảo thủ bền vững mang lại lợi nhuận thị trường mức trung bình Blox3 kết nối óc tồn cầu, sử dụng cơng nghệ để tạo khoản tiết kiệm đột phá cho tất người Nhiệm vụ Blox3 trao quyền cho nhà đầu tư đầu tư an toàn kiếm tiền theo cách truyền thống dành riêng cho người chơi lớn thị trường 26 | P a g e Tầm nhìn khơng dừng lại việc thay đổi cách người đầu tư mà thách thức tảng hệ thống tài tồn cầu Blox3 tin nhà đầu tư nên có hội bình đẳng để lựa chọn địa điểm cách thức đầu tư tiền họ Rằng hệ thống cải thiện, để người hưởng lợi từ chiến lược đầu tư hợp lý, dựa nguyên tắc vững doanh nghiệp giới thực tích cực thay đổi định hình tương lai thương mại 3.3 Kiến trúc hệ thống Hình 3-2 Sơ đồ kiến trúc hệ thống backend Blox3 Phía backend sử dụng kiến trúc microservice với thành phần: User Service, Admin Service, Notification Service, Price Service Core Service - User Service: có chức xử lý tác vụ user xác thực, get liệu liên quan deal, transaction, vault… Các thao tác thay đổi liệu phải gọi thơng qua Core Service 27 | P a g e - Admin Service: có chức xử lý tác vụ admin owner xác thực, quản lý user, deal, trigger event… Các thao tác có thay đổi liệu balance phải gọi thông qua Core Service - Notification Service: nơi service khác gọi qua để gửi mail cloud messaging đến người dùng Mail Service tích hợp từ tảng SendGrid cloud messaging tích hợp từ tảng Firebase - Price Service: tương tác với redis để ghi liệu biểu đồ giá token, sử dụng API từ trang exchange lớn - Core Service: thành phần quan trọng ứng dụng Tiếp nhận yêu cầu thay đổi sở liệu từ service khác; kiểm tra ràng buộc, thực logic trả phản hồi cho service khác Core Service thành phần hệ thống tương tác trực tiếp với Fireblocks để tạo giao dịch blockchain, xử lý webhook event trả để cập nhật vào sở liệu 3.4 Giao diện sản phẩm 3.4.1 Giao diện mobile Hình 3-3 Màn hình OnBoarding (mobile) 28 | P a g e Hình 3-4 Màn hình SignIn (mobile) Hình 3-5 Màn hình Home (mobile) 29 | P a g e Hình 3-6 Màn hình Deals (mobile) Hình 3-7 Màn hình Earnings (mobile) 30 | P a g e Hình 3-8 Màn hình Account (mobile) 3.4.2 Giao diện website Hình 3-9 Màn hình Authentication (website) 31 | P a g e Hình 3-10 Màn hình Dashboard (website) Hình 3-11 Màn hình Transactions (website) 32 | P a g e Hình 3-12 Màn hình Deals (website) Hình 3-13 Màn hình Earnings (website) 33 | P a g e Hình 3-14 Màn hình Account (website) 34 | P a g e CHƯƠNG 4: TỔNG KẾT 4.1 Thành Hoàn thành sản phẩm với team gồm 10 thành viên, trải nghiệm thực tế trình phát triển ứng dụng Áp dụng tốt quy trình Agile, làm việc nhóm hiệu Nâng cao kỹ giao tiếp Học hỏi phát triển nhiều kiến thức lẫn kỹ lập trình backend Hiểu áp dụng tốt SOLID Principles, Event Driven Architecture, Git, CI/CD pipeline Đó kiến thức chủ chốt cơng việc lập trình viên backend Hơn hết, phát triển khả làm việc nhóm, tư lập trình, kỹ xử lý tình dần hồn thiện Cảm nhận tâm huyết người trình xây dựng sản phẩm, tinh thần trách nhiệm cá nhân làm nên tập thể lớn Được trải nghiệm tất công việc phát triển sản phẩm từ việc lên ý tưởng, xây dựng concept, lên kế hoạch công việc ngày, trao đổi thành viên, rút kinh nghiệm sau giai đoạn ngắn Từ bước nhỏ khơng thể thiếu đó, thành viên tạo nên sản phẩm hoàn chỉnh 4.2 Rút kinh nghiệm Sau hoàn thành tập, tự thân em anh chị công ty đánh giá có kiến thức tốt lập trình backend cần phải rèn luyện thêm, học thêm nhiều kiến trúc hệ thống, thiết kế hạ tầng để xây dựng tảng vững tạo bàn đạp để phát triển cho tương lai 4.3 Cảm nhận thân công ty Em cảm thấy thật may mắn có hội thực tập cơng ty Em hướng dẫn hỗ trợ tận tình anh chị, có hội làm việc với dự án thực tế học nhiều kiến thức, nâng cao kinh nghiệm chuyên môn Công ty cung cấp hội học hỏi phát triển kỹ qua chương trình huấn luyện kiện công ty Em xin chân thành cảm ơn công ty cho em hội thực tập, làm việc công ty 35 | P a g e DANH MỤC TÀI LIỆU THAM KHẢO [1] Agile gì? Scrum gì? Các cơng cụ quản lý dự án theo Agile mà bạn nên biết [2] NestJS - A progressive Node.js framework [3] Documentation | NestJS - A progressive Node.js framework [4] Documentation | Solidity 0.8.17 [5] The "Yellow Paper": Ethereum's formal specification [6] Course | NestJs for Beginners - Create a REST API 36 | P a g e ... TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP LẬP TRÌNH ỨNG DỤNG BLOKCHAIN BẰNG NODEJS Công ty thực tập: Công ty TNHH Codelight Người phụ trách: Nguyễn Mạnh Đạt Thực tập sinh: Ngô Dương Kha Mã... gian: ngày song song với thực hành suốt trình thực tập Nội dung: Được training kiến thức chung tìm hiểu việc áp dụng mơ hình vào quy trình làm việc nhóm q trình thực tập Đây mơ hình làm việc... trải nghiệm thực tế trình phát triển ứng dụng Áp dụng tốt quy trình Agile, làm việc nhóm hiệu Nâng cao kỹ giao tiếp Học hỏi phát triển nhiều kiến thức lẫn kỹ lập trình backend Hiểu áp dụng tốt SOLID