Đăng ký Đăng nhập

Tài liệu Tìm hiểu công nghệ blockchain và schat

.PDF
71
1
72

Mô tả:

ĐẠ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 ĐỒ ÁN 1 TÌM HIỂU CÔNG NGHỆ BLOCKCHAIN VÀ SCHAT Giảng viên hướng dẫn: Thầy Phan Trung Hiếu Sinh viên thực hiện 19520976 – Đặng Hải Thịnh 19521399 – Nguyễn Văn Dũng Thành phố Hồ Chí Minh, tháng 6 năm 2022 1 Mục Lục I. II. BÁO CÁO ĐỒ ÁN 1 1 Tổng quan về đề tài 5 1. Khảo sát hiện trạng 5 1.1. Định hướng phần mềm 5 1.2. Nhu cầu thực tế đề tài 5 1.3. Hiện trạng đơn vị cần xây dựng 5 1.4. Nền tảng 5 1.5. Hiện trạng đề tài 5 1.6. Phạm vi sử dụng 5 1.7. Đối tượng sử dụng 5 2. Blockchain là gì 5 2.1. Nguồn gốc: 5 2.2. Khái niệm: 6 2.3. Đặc điểm của công nghệ Blockchain 10 2.4. Ứng dụng của Blockchain trong thực tế 12 Cơ sở lý thuyết 14 1. React Native 14 1.1. Nguồn gốc 14 1.2. Khái niệm 14 1.3. Một số khái niệm cơ bản 14 1.4. Ưu nhược điểm 19 1.5. So sánh Native với Web và Hybrid 20 2. Nest Js 21 2 III. 2.1. Khái niệm 21 2.2. Tại sao lại dùng Nest: 21 2.3. Một số khái niệm cơ bản 21 2.4. Uư nhược điểm 24 2.5. Next vs Nuxt vs Nest 24 Phân tích yêu cầu 30 1. Sơ đồ Usecase 30 2. Đặc tả usecase 30 2.1. Thành phần xác thực 30 2.2. Hệ thống chat 35 IV. Thiết kế hệ thống 38 1. Thiết kế kiến trúc hệ thống: 38 2. Thiết kế mô hình dữ liệu: 39 2.1. Sơ đồ lớp 39 2.2. Đặc tả lớp dữ liệu 40 2.3. Thiết kế luồng sử lí: 42 3. Thiết kế giao diện: 48 3.1. Màn hình chào mừng: 48 3.2. Màn hình đăng nhập 49 3.3. Trang đăng kí 50 3.4. Trang xác nhận OTP 51 3.5. Màn hình chính 53 3.6. Màn hình gọi điện thoại 54 3.7. Màn hình gọi điện thoại với video 56 3 3.8. Màn hình chat 57 3.9. Màn hình thông tin nhóm chat 59 3.10. Màn hình phân công công tác 61 3.11. Màn hình chi tiết công việc 63 3.12. Màn hình cài đặt 65 Kết quả dự án V. 67 1. Giới thiệu về sản phẩm 67 2. Môi trường triển khai 68 2.1. Backends 68 2.2. Frontends 68 3. Chức năng sản phẩm đã phát triển IV. Kết luận 68 68 1.1. Thuận lợi 69 1.2. Khó khăn 69 2. Ưu nhược điểm 69 3. Hướng phát triển 69 VI. Phụ lục 70 1. Tài liệu tham khảo 70 2. Bảng phân công công việc 70 4 I. Tổng quan về đề tài 1. Khảo sát hiện trạng 1.1. Định hướng phần mềm • • Hỗ trợ các chat giữa hai hay nhiều người, hỗ trợ các nhóm quản lí các dự án, phân công công việc, giao tiếp giữa các thành viên. Cung cấp các chức năng quản lí cơ bản, không tập trung quá vào một lĩnh vực cụ thể. 1.2. Nhu cầu thực tế đề tài • Hiện nay, với sự phát triển vượt bật của công nghệ thông tin, sự bảo mật ngày càng được chú trọng. Tiếp theo đó ngày càng có nhiều các project được triển khai trên toàn cầu, quy mô và độ phức tạp của các project ngày càng lớn, việc quản lí cũng trở nên ngày càng khó khăn. 1.3. Hiện trạng đơn vị cần xây dựng • • Thành viên nhóm biết cách sử dụng điện thoại thông minh. Điện thoại phải có kết nối internet. 1.4. Nền tảng • • Nền tảng phát triển: React Native, NestJS Nền tảng triển khai: Mobile app 1.5. Hiện trạng đề tài • • Có khá nhiều ứng dụng tương tự Hạn chế, vấn đề còn tồn tại: o Ứng dụng tồn tại nhiều quảng cáo o Phần quản lí, chưa có giao diện hợp lí o Vẫn còn nhiều vụ đánh cắp thông tin. 1.6. Phạm vi sử dụng • Sử dụng tất cả mọi người, phù hợp các nhóm phát triển dự án 1.7. Đối tượng sử dụng • Bất kỳ ai. 2. Blockchain là gì 2.1. Nguồn gốc: 5 Khái niệm Blockchain được bắt đầu từ hai người đàn ông tên là Stuart Haber và W. Scott Stornetta. Họ đã xuất bản một bài báo có tên là “How to timestamp a digital document” vào năm 1991. Và trong bài báo này, các khái niệm về thứ mà ngày nay chúng ta gọi là Blockchain và hoặc hầu hết các đặc điểm và ý tưởng đằng sau đều được triển khai trong bài báo. Tuy nhiên, họ không phải là người đã đưa ra khái niệm cụ thể về Blockchain, mà thực chất khái niệm này được đưa ra trong bài báo của Satoshi Nakamoto. Một khối, vì nó là một bản ghi, do đó, bên trong nó sẽ chứa dữ liệu. Ví dụ, nó có thể chỉ chứa một chuỗi ký tự hoặc một giá trị số nguyên nào đó. Tiếp theo, một trường dữ liệu khác được chứa bên trong khối là Previous Hash, giá trị băm của một khối trước đó, giá trị này đóng vai trò cực kỳ quan trọng trong chuỗi khối, bởi nó giúp liên kết các khối lại với nhau. Đồng thời, khối này cũng sẽ có một giá trị băm của chính nó được lưu trong trường tên là Hash. Và các bạn có thể coi giá trị băm giống như một dấu vân tay của khối. Nó thực hiện lấy hai phần tử đầu tiên, dữ liệu và giá trị băm của khối trước đó và tìm ra một giá trị số tương tự đại diện cho dữ liệu được lưu trong khối. 2.2. Khái niệm: 2.2.1. Thuật toán SHA-256: Mỗi người trong số chúng ta đều có một dấu vân tay, sẽ có khả năng có một số người có cùng dấu vân tay, nhưng điều này là rất khó xảy ra. Theo một cách nào đó, chúng ta có thể nói rằng dấu vân tay là dấu hiệu nhận dạng của một người. Và đây là một khái niệm được ứng dụng mạnh mẽ bởi các bộ phận pháp y, trong đó, họ có thể xác định tội phạm chỉ bằng dấu vân tay và lấy đó làm bằng chứng trước tòa. Vậy điều gì sẽ xảy ra nếu chúng ta có thể áp dụng nguyên tắc tương tự vào các tài liệu kỹ thuật số? trong kỹ thuật số, chúng ta sử dụng "dấu vân tay" dưới dạng mật mã băm, cụ thể là thuật toán SHA-256 có dạng như sau: Thuật toán SHA-256 được phát triển bởi NSA (Cơ quan An ninh quốc gia Mỹ). Thuật toán này rất an toàn và được nhiều nơi trên thế giới sử dụng nó để lưu trữ mật khẩu, kiểm tra các tài liệu kỹ thuật số và trên thực tế, trong Blockchain, nó cũng đã được áp dụng. Đây là một trong những điều cốt lõi của chuỗi khối. 2.2.2. Sổ cái bất biến 6 Làm thế nào để bạn có thể chứng minh với người khác rằng đó là nhà của bạn? Tại sao bạn không thể đi đến bất kỳ ngôi nhà nào trên phố và nói rằng đó là nhà của bạn? Thứ bạn nhận được sau khi trả một khoản tiền khổng lồ cho ngôi nhà đó là một tờ giấy chứng từ, đảm bảo đó là ngôi nhà của bạn. Và ai có chứng từ đó sẽ là chủ sở hữu của ngôi nhà. Tuy nhiên, điều gì sẽ xảy ra nếu ngôi nhà của bạn bỗng dưng bị sập do nhà bên cạnh đang sửa nhà hoặc điều gì sẽ xảy ra nếu ai đó lấy trộm cuốn sổ của bạn? Đột nhiên bạn không còn ngôi nhà nữa. Bạn có thể vẫn đang sống trong ngôi nhà và có thể nghĩ đó là của mình. Nhưng trong thực tế, cuốn sổ đã mất và không có chứng từ nào để chứng minh rằng bạn sở hữu ngôi nhà đó. Vậy làm thế nào chúng ta có thể khắc phục tình trạng này? Giả sử chúng ta có tất cả các dữ liệu được lưu trữ trong một chuỗi khối thay vì trên giấy tờ thông thường. Mỗi khi ai đó mua bán một ngôi nhà, một khối mới sẽ được thêm vào chuỗi. Chúng ta sẽ không thể bị mất chúng. Nếu kẻ hacker cố gắng giả mạo dữ liệu trong khối, điều sẽ xảy ra là nó sẽ làm thay đổi giá trị băm của khối. Và liên kết mật mã trong chuỗi khối sẽ không bị phá vỡ vì giá trị băm ở khối bị thay đổi, khác với giá trị băm được ghi lại trong khối trước đó. Và nếu hắn muốn khắc phục điều này, hắn sẽ phải thay đổi toàn bộ tất cả các khối sao cho liên kết mật mã được khôi phục và kết nối chặt chẽ với nhau. Tuy nhiên, điều này là rất khó để xảy ra bởi có rất nhiều khối và việc tìm ra giá trị phù hợp cho mỗi khối là điều rất khó (không phải là không làm được). Và đó là lý do tại sao chúng ta nói rằng chuỗi khối là một sổ cái bất biến vì bạn sẽ không thể thay đổi dữ liệu ngay khi dữ liệu giả mạo được lưu trong khối. 2.2.3. Mạng ngang hàng P2P Như vừa rồi chúng ta vừa nói việc thay đổi dữ liệu là rất khó, Tuy nhiên, câu hỏi ở đây là nếu hacker cố gắng tấn công sổ cái hoặc thực hiện một số thay đổi dữ liệu, điều gì sẽ ngăn cản kẻ xâm nhập? Nếu hắn có đủ thời gian, hắn vẫn có thể thay đổi toàn bộ các khối trong chuỗi thì kết quả sẽ ra sao? Giả sử tài sản có thể có trị giá vài trăm nghìn đô la, điều này thực sự khiến cho những hacker sẵn sàng đánh đổi để thay đổi dữ liệu trong khối, thay thế tên của bạn bằng tên của hắn, và sau đó giá 7 trị băm sẽ được cập nhật và kẻ hacker thực hiện thay đổi giá trị băm của các khối và cứ tiếp tục như vậy cho các khối khác. Vậy điều gì ngăn cản hắn làm điều đó? Trong một hệ thống phân tán, chúng ta có rất nhiều máy tính và tất cả chúng đều được kết nối với nhau. Chuỗi khối được sao chép trên tất cả các máy tính có trong mạng. Giả sử chúng ta có 6 máy tính trong mạng, trên thực tế con số này có thể là hàng nghìn hoặc thậm chí hàng triệu máy tính. Sổ cái lưu trữ tất cả các giao dịch có thể nằm trên máy tính của bạn, nằm trên máy tính của tôi và trên máy tính của người khác và cứ như vậy. Mọi thứ sẽ được kết nối thông qua các khóa mật mã. Và như chúng ta đã thảo luận, kẻ hacker sẽ cần phải xem qua tất cả các khối trong chuỗi và thực hiện thay đổi các giá trị băm của chúng, tính toán lại giá trị băm cho mỗi khối màu đen. Tuy nhiên, trong các mạng ngang hàng phân tán, có một điều đặc biệt là tất cả chuỗi trên mỗi máy đều được đồng bộ hóa một cách liên tục. Đó là cách mà các hệ thống được thiết kế, nó sẽ kiểm tra để xem liệu các khối trên các chuỗi của các máy có khớp với nhau hay không. Nếu có bất kỳ sự thay đổi nào trong khối của một chuỗi, những máy tính ngang hàng sẽ phát hiện ra có một vấn đề, đó là chuỗi khối của chúng đã bị thay đổi dữ liệu. Và chúng sẽ ra hiệu cho chuỗi khối trên máy tính đó rằng chuỗi khối đó có vẻ đã bị tấn công bởi nó không khớp với các chuỗi khối khác. Những giá trị bị thay đổi sẽ được sửa chữa và đồng bộ hóa lại với giá trị của những chuỗi còn lại. Như vậy, tất cả các giá trị trên các chuỗi khác được sao chép qua và chuỗi khối sẽ được khôi phục trở về các giá trị ban đầu của nó. Do vậy, những gì xảy ra trong trường hợp này là như bạn có thể thấy, hacker không thể chỉ tấn công một máy tính, không thể chỉ tấn công một chuỗi khối và thay đổi các giá trị ở đó, mà hắn sẽ phải tấn công tất cả các chuỗi khối trên các máy tính cùng một lúc. Bằng cách tấn công này, những kẻ hacker sẽ phải thực hiện thao tác đó rất nhanh trong vài giây, tối đa là vài phút, tùy thuộc vào cấu trúc của nền tảng Blockchain. 2.2.4. Giá trị Nonce Nếu nó đơn giản đến mức chỉ cần lấy số khối, dữ liệu và giá trị băm trước đó đưa vào thuật toán băm nhằm tạo ra một giá trị băm cho khối và khoảng thời gian tính toán chỉ mất nửa giây, vậy toàn bộ cách thức hoạt động của Mining là gì? Tại sao lại có rất nhiều, hàng trăm nghìn dàn máy đào 8 trên khắp thế giới được sử dụng để tính toán các giá trị băm này? Trong trường hợp này, trường Nonce sẽ giúp chúng ta kiểm soát giá trị băm của khối hiện tại. Chúng ta có thể tự do thay đổi giá trị của Nonce và Nonce về cơ bản chỉ là một giá trị số, điều này sẽ cho phép chúng ta thay đổi một cách ngẫu nhiên giá trị băm. Chúng ta sử dụng từ "ngẫu nhiên" ở đây bởi trong thuật toán băm, chúng ta không thể dự đoán trước nó sẽ đưa ra giá trị gì. Chúng ta thay đổi Nonce và thuật toán sẽ trả về một số ngẫu nhiên. Cách hoạt động của Mining Như vậy, mấu chốt là tất cả những điều mà những máy đào này đang làm là chỉ thực hiện lặp lại các thao tác tính toán, thay đổi, thay đổi và thay đổi Nonce để hy vọng có được giá trị băm phù hợp. Và bất kỳ ai đoán được nó trước tiên sẽ được phép thêm một khối và quá trình lặp lại cho khối tiếp theo. Điều quan trọng về giá trị băm là hiệu ứng tuyết lở. Các bạn hãy nhớ rằng trong hiệu ứng tuyết lở, khi thay đổi Nonce, giá trị băm sẽ thay đổi hoàn toàn. Trong ví dụ bên trên, bạn có thể thấy rằng với giá trị Nonce 23, giá trị băm sẽ nằm ở trên, sau đó giá trị băm ứng với Nonce 21 nằm ở dưới, điều này sẽ cho phép các máy đào dự đoán rằng có vẻ như bằng cách giảm giá trị Nonce, giá trị băm sẽ giảm xuống. Trên thực tế, mọi thứ hoàn toàn không phải vậy. Giá trị băm là hoàn toàn ngẫu nhiên. 2.2.5. Khả năng kháng lỗi Byzantine Hệ thống kháng lỗi Byzantine (BFT) là hệ thống có thể giải quyết được vấn đề của bài toán các vị tướng quân Byzantine. Điều này có nghĩa là hệ thống BFT có thể tiếp tục hoạt động ngay cả khi một số nút bị lỗi hoặc thực hiện hành động gây hại. Bây giờ, làm thế nào để điều này được áp dụng vào chuỗi khối hoặc giống như các hệ thống phân tán khác? Chúng ta có thể có ai đó đang cố gắng tấn công hệ thống và chúng ta cần đưa ra một giao thức đồng thuận, giống như chiến thuật mà những vị tướng Byzantine đã nghĩ ra. 2.2.6. Giao thức đồng thuận Có nhiều loại giao thức đồng thuận ở đây có thể nêu tới 2 loại phổ biến là Proof of work, proof of stake. 9 Vấn đề cần nói ở đây là điều gì sẽ xảy ra nếu kẻ tấn công cố gắng đặt một khối vào cuối chuỗi, cố gắng thêm một khối mới độc hại hoặc có dữ liệu trái phép? Giả sử một khối A được khai thác bởi một máy tính A1 và trước khi thông tin này đến được với máy tính B1, thì máy tính B1 đã khai thác xong khối A. Đối với chuỗi khối, đây là một vấn đề cần giải quyết vì nó cần có sự đồng thuận về cách tiếp tục phát triển lớn dần của chuỗi, nếu không, sẽ có hiện tượng xảy ra trùng lặp khi các khối được đưa vào. • Giải quyết vấn đề 1 Mỗi nút nằm trước khối đó được thêm vào, trước khi khối đó được truyền vào mạng, mỗi nút đơn lẻ sẽ tiến hành một loạt kiểm tra rất nghiêm ngặt, chúng kiểm tra các giá trị băm, kiểm tra khối trước đó trùng khớp với giá trị băm trước đó trong trường giá trị băm, kiểm tra timestamp để kiểm tra giao dịch và rất nhiều thứ khác. Và nếu kết quả kiểm tra không được chấp nhận, các khối sẽ không được chấp nhận. Về cơ bản, mạng sẽ không cho phép các khối độc hại được thêm vào chuỗi. Và đó là lý do tại sao có một khoản thưởng tài chính để mọi người cùng chơi theo cùng các quy tắc. Đó là cách chúng ta giải quyết bài toán số một. • Vấn đề 2 Những gì các nút làm là các nút màu tím sẽ có một khối màu tím. Các nút màu cam sẽ có một khối màu cam, và chuỗi khối sẽ có hai dạng khác nhau tại thời điểm này. Vì vậy, chúng ta có 2 chuỗi cạnh tranh nhau. Những gì chúng ta sẽ làm là chờ đợi cho đến khi một khối khác được thêm vào. Và khi khối đó được thêm vào, sẽ có một chuỗi dài hơn. Về cơ bản, chuỗi nào thêm một khối trước đầu tiên thì chuỗi đó sẽ thắng, tức là chuỗi nào dài hơn chuỗi đó sẽ thắng. Trong Blockchain, chuỗi dài nhất là thắng. Chuỗi nào có nhiều khối cuối cùng sẽ giành chiến thắng và thay thế chuỗi còn lại. Và điểm chính ở đây là vùng mạng có sức mạnh băm cao nhất cuối cùng sẽ tạo ra chuỗi dài nhất. 2.3. Đặc điểm của công nghệ Blockchain Công nghệ Blockchain đóng vai trò giống như một cuốn sổ cái ghi lại tất cả các giao dịch xảy ra trong hệ thống nên các đặc điểm chính của blockchain bao gồm: 2.3.1. Phân loại: 10 Blockchain được chia làm 3 loại chính :Publish, Private và Permissoined. • Public blockchain Đây là hệ thống Blockchain mà bất kỳ ai cũng có quyền ghi và đọc dữ liệu trên các chuỗi của nó. Quá trình xác thực trên loại blockchain này đỏi hỏi phải có hàng nghìn thậm chí tới hàng vạn nút tham gia. Do đó việc tấn công hệ thống này gần hư là bất khả thi. • Private blockchain Đây là hệ thống mà chỉ có người dùng quyền đọc dữ liệu mà không có quyền ghi chép vì điều này thuộc về một bên thứ ba tuyệt đối tin cậy. Bên thứ ba này có quyền quyết định mọi thay đổi trong chuỗi. Thời gian xác nhận giao dịch tương đối ngắn vì chỉ cần một vài thiết bị tham gia vào quá trình xác thực. • Permissoined blockchain Còn được biết đến với cái tên Consortium. Đây là một dạng của private bockchain nhưng bổ sung thêm một số tính năng nhất định. Nó chứa đựng sự kết hợp của “niềm tin” khi tham gia vào Publish và “niềm tin tuyệt đối” khi tham gia vào Private. 2.3.2. • Ưu điểm: Không thể làm giả, không thể phá huỷ các chuỗi blockchain Các chuỗi của blockchain gần như không thể phá huỷ được và theo lý thuyết thì chỉ có máy lượng tử mới có thể can thiệp và giải mã chuỗi blockchain. Nó chỉ có thể bị phá huỷ hoàn toàn khi không có internet trên toàn cầu. • Bất biến Dữ liệu trong blockchain gần như không thể sửa đổi. Để thay đổi được dứ liệu cần phải có sự đồng thuận giữa các nút mạng và dữ liệu đó sẽ được lưu trữ vĩnh viễn. • Bảo mật dữ liệu 11 Các thông tin, dữ liệu trong các chuỗi được phân tán và an toàn tuyệt đối. Chỉ có người nắm giữ private key mới có quyền truy xuất dữ liệu đó. • Minh bạch Ai cũng có thể theo dõi đường đi của các dữ liệu trong blockchain từ địa chỉ này tới địa chỉ khác và có thể thống kê toàn bộ lịch sử dữ liệu trên địa chỉ đó. • Ẩn danh: người dùng có thể giao dịch một cách an toàn, bảo mật mà không cần phải lo ngại về người khác biết được danh tính của mình. 2.3.3. • Nhược điểm: Tiêu tốn nhiều năng lượng Mỗi blockchain đã sao chép chính nó đến mọi nút giao dịch trên Blockchain nên đã tạo ra một lượng dư thừa khá lớn. Mỗi lần giao dịch có rất nhiều nút trên mạng đòi hổi cần tiêu thụ một lượng điện năng khá lớn. • Tốn không gian lưu trữ Để vận hành một nút ( Node) trên blockchain bitcoin bạn cần tait xuống 60 GB dữ liệu. Nếu thị trường phát triển càng mạnh thì sẽ có nhiều blockchain với dung lượng lớn hơn rất nhiều. • Tính không thể phá vỡ cũng là nhược điểm của nó. Nếu bạn đặt một thứ gí đó lên Blockchain bạn cần chắc chắn là sẽ khoong hối hận vì giao dịch một khi được thực hiện sẽ không thể đảo ngược hoặc làm lại. Nó sẽ ở trên blockchain vĩnh viễn theo đúng nghĩa đen. 2.4. Ứng dụng của Blockchain trong thực tế Tính bảo mật và phi tập trung đã khiến blockchain phù hợp để thực hiện các bản ghi dữ liệu sự kiện, hồ sơ y tế, quản lý hộ tịch, quản lý giao dịch, truy xuất nguồn gốc thực phẩm, hay trong các cuộc bầu cử bỏ phiếu. 12 2.4.1. • Đối với sản xuất: Nếu doanh nghiệp sản xuất sữa ứng dụng Blockchain vào quản lý chất lượng sản phẩm thì nhà quản lý & người tiêu dùng có thể truy xuất được các thông tin. • Nhà sản xuất có thể thống kê và lưu trữ toàn bộ sữa đó trên thị trường, biết được số lượng sữa được tiêu thụ, số lượng sữa còn hạn & đã hết hạn. • Đối với người tiêu dùng: • Người tiêu dùng có thể ứng dụng Blockchain để kiểm tra thông tin hộp sữa có phải hàng chính hãng hay không nhằm ngăn chặn sản phẩm nhái trên thị trường. • Walmart – nhà bán lẻ tại Mỹ là một trong những doanh nghiệp tiên phong sử dụng Blockchain. Hiện tại, thương hiệu đã sử dụng Blockchain để theo dõi nguồn thịt lợn nhập từ Trung Quốc. 2.4.2. Đối với lĩnh vực y tế: • quản lý hồ sơ bệnh án bệnh nhân • quản lý chuỗi cung ứng thuốc, thiết bị y tế • tăng cường tính minh bạch và tự động hóa trong các giao dịch khám chữa bệnh. • Đối với ngành tài chính: • Quản lý và giảm thiểu rủi ro trong thanh toán do các vấn đề về trục trặc kỹ thuật, vỡ nợ trước khi thanh toán giao dịch • Sổ cái kỹ thuật số luôn xác minh, thanh toán và cập nhật những giao dịch ngang hàng một cách liên tục • Xác thực thông tin khách hàng, khả năng tín dụng không cần thông qua trung gian • Hệ thống quản lý thông minh cho phép liên tục đổi mới, lặp lại và cải tiến, dựa trên sự đồng thuận của tất cả người dùng trong mạng lưới. Công nghệ Blockchain được xem là phương pháp cắt giảm chi phí và thời gian thanh toán bù trừ giao dịch liên ngân hàng cũng như tạo ra hệ thống an toàn hơn. Điều đặc biệt là nhiều tổ chức tài chính đã hình thành các liên minh để thương mại hóa công nghệ Blockchain: Ví như liên minh R3 của 3 ngân hàng lớn nhất của nước Úc bao gồm Westpac, Commonwealth, NAB cùng với 40 ngân hàng và nhiều tổ chức tài chính khác trên toàn thế giới. 13 Tại Việt Nam, công nghệ Blockchain được ứng dụng chủ yếu trong các lĩnh vực: dịch vụ tài chính (hơn 83%), chuỗi cung ứng (40%), dịch vụ công cộng (30%), năng lượng (30%), giáo dục (30%),... Cho đến hiện tại, phần lớn startup sử dụng Blockchain trong lĩnh vực tài chính như VBTC. Blockchain là kho tàng quý giá hay chỉ là phế phẩm tùy thuộc vào cách sử dụng của mỗi doanh nghiệp. Tận dụng tốt, doanh nghiệp sẽ nhanh chóng vươn lên dẫn đầu trong cuộc cạnh tranh khốc liệt trên thi trường. II. Cơ sở lý thuyết 1. React Native 1.1. Nguồn gốc React Native được phát triển bởi Facebook với mục đính ban đầu là áp dụng vào mạng xã hội lớn nhất hành tinh: Facebook. Do đặc tính công nghệ của mạng xã hội, Facebook cần phải tạo ra nền tảng phát triển ứng dụng di động đa nền tảng có hiệu năng không thua kém so với ứng dụng được phát triển độc lập cho từng nền tảng. React Native hiện tại chỉ hỗ trợ phát triển ứng dụng di động hệ điều hành Android và iOS, ít hơn so với Ionic (Android, iOS, Windows Phone). React Native chính thức trở thành mã nguồn mở vào tháng 3 năm 2015. Cho đến nay, React Native được áp dụng trong nhiều ứng dụng của ta và cả nước ngoài. 1.2. Khái niệm React Native là một framework cho phép các lập trình viên sử dụng JavaScript để làm mobile apps trên cả Android và iOS với có trải nghiệm và hiệu năng như native. React Native vượt trội ở chỗ chỉ cần viết một lần là có thể build ứng dụng cho cả iOS lẫn Android. React native cho phép xây dựng các ứng dụng trên android vs ios chỉ với một ngôn ngữ thống nhất là javascript nhưng mang lại trải nghiệm native app thực sự. Không như các framework hybrid khác(viết một lần triển khai nhiều nơi), React native tập trung vào việc một lập trình viên làm việc hiệu quả trên môi trường đa nền tảng như thế nào? 1.3. Một số khái niệm cơ bản 14 1.3.1. Component: Components là một khái niệm cơ bản của cả React và React native. Chính việc chia nhỏ ứng dụng thành các components nhỏ tạo nên tính tái sử dụng cao và khả năng mở rộng của chúng. Hãy thử phân tích một ví dụ đơn giản trước. Đây là một list cơ bản về thông tin của album có tên albumn, tên ca sĩ thể hiện, ảnh thumbnail của ca sĩ và ảnh bìa của album cùng một nút bấm mua. Chúng ta có thể hình dung ra rằng List đó sẽ là một Scroll view và các item trong đó là biểu thị cho một album. Đây có thể là một cách chia các component cho ví dụ này. 15 Ngoài những component chúng ta xây dựng và sử dụng lại đó, thì Reat native sẵn có đó là một tá các component mặc định rồi. 1.3.2. Prop: 16 Props là viết tắt của Properties. Một điều mà cần phải nhớ khi sử dụng props đó là không bao giờ nên thay đổi giá trị của nó, hay nói cách khác, đây là một dữ liệu immutable. Các component nhận props từ component cha. Giá trị của props trong các component này chỉ được phép đọc giá trị chứ không được thay đổi (Read Only). Trong React thì dữ liệu sẽ đi theo một chiều, có nghĩa là từ component cha => các component con. Đây là một ví dụ sử dụng props, cung cấp cho một component tên là Header. Props title được sử dụng trong component Header để render ra tiêu đề của nó. 1.3.3. State: State thì hoạt động khác với Props. State là dữ liệu nội bộ của một Component, trong khi props là dữ liệu được truyền cho Component. Chính vì vậy chúng ta hoàn toàn có thể thay đổi state, và coi nó là một kiểu dữ liệu mutable. Vì đặc điểm này nên chúng ta hay sử dụng State để thay đổi dữ liệu của view, binding data lại view khi có thay đổi. Nhưng chúng ta không dùng this.state để gán lại giá trị thay đổi cho nó, mà chúng ta sẽ dùng this.setState. Function này sẽ trigger cho class rằng hãy render lại component và các component con của nó, còn this.state thì không. 17 Đây là một ví dụ về sự dụng state để thay đổi giá trị. Giống như việc truyền datasource cho tableview vậy, ban đầu datasource chính là state này rỗng và sau đó được trả về dự liệu sau khi call api. Và từ đó thay đổi state sẽ làm cho component render lại dữ liệu. Còn đây là hình ảnh consoleLog ở trên debuger, chúng ta có thể thấy rõ ràng lúc đầu state.albums vẫn còn rỗng và sau đó khi call api, và có data trả về, nhờ vào việc setState lại view có thể render và hiển thị ra ngoài. 18 1.4. Ưu nhược điểm Ưu điểm: • Có thể tái sử dụng code React Native cho phép các developer có thể tái sử dụng code trong khi phát triển các ứng dụng đa nền tảng. Đặc biệt, developer có thể tái sử dụng hầu như 80-90% các đoạn code thay vì phải viết và tạo các ứng dụng riêng biệt cho các nền tảng khác nhau. Ưu điểm này giúp người dùng: • - Tiết kiệm thời gian và giảm chi phí phát triển của một ứng dụng. - Tận dụng nguồn nhân lực tốt hơn - Duy trì ít code hơn, ít bugs hơn - Các tính năng trong cả 2 platforms cũng tương tự nhau. Cộng đồng người dùng lớn React Native được đánh giá là một trong những Framework được yêu thích nhất (khảo sát của stack overflow vào năm 2019). Nhờ cộng đồng người dùng rất lớn trên toàn thế giới, việc tìm sự hỗ trợ nếu gặp phải bugs sẽ dễ dàng hơn. • Tính ổn định và tối ưu Được phát triển bởi Facebook, React Native có hiệu năng ổn định khá cao. Mã React Native giúp đơn giản hóa quá trình xử lý dữ liệu. Đội ngũ phát triển ứng dụng không quá lớn. Xây dựng ứng dụng ít native code nhất cho nhiều hệ điều hành khác nhau. Trải nghiệm người dùng tốt hơn khi so sánh với ứng dụng Hybrids Nhược điểm: • • Yêu cầu Native code. Hiệu năng kém hơn so với Native App. 19 • • • • Bảo mật chưa thật sự tốt do dùng JavaScript. Do sử dụng JavaScript, người dùng cũng sẽ bị ảnh hưởng bởi những đặc điểm của JavaScript: dễ làm dễ sai, dẫn đến khó duy trì về sau. Quản lý bộ nhớ. Tùy biến chưa thật sự tốt ở một số module. Không thích hợp cho các app cần năng lực tính toán cao (hash, crypto, etc). 1.5. So sánh Native với Web và Hybrid 1.5.1. Native vs Web: Ứng dụng web là một ứng dụng mà người dùng không cần tải xuống và thay vào đó truy cập thông qua trình duyệt web qua mạng. Các trình duyệt web mẫu bao gồm Google Chrome, Safari và Mozilla Firefox. Các web app cung cấp chức năng từ quyền truy cập tài khoản ngân hàng để xem video trên YouTube, ví dụ như Safari trên iPhone. Mặc dù các ứng dụng gốc phụ thuộc vào một thiết bị cụ thể, phần lớn các ứng dụng web có thể được viết bằng JavaScript, CSS và phiên bản HTML tiêu chuẩn để sử dụng phổ biến trên nhiều trình duyệt khác nhau. Các ứng dụng web có thể sử dụng một cơ sở mã duy nhất vì chúng không được thiết kế dành riêng cho một thiết bị cụ thể nào. Các ứng dụng web rất nhanh và đơn giản để xây dựng, nhưng không linh hoạt và nhanh chóng như các ứng dụng native. 1.5.2. Native vs Hybrid: Ứng dụng lai (Hybrid App) là sự kết hợp giữa ứng dụng native và ứng dụng web. Hoạt động bên trong của một ứng dụng lai tương tự như một ứng dụng web, nhưng nó được cài đặt như một ứng dụng gốc. Các ứng dụng lai có quyền truy cập vào API thiết bị nội bộ, có nghĩa là chúng có thể sử dụng các tài nguyên như máy ảnh, lưu trữ và GPS. Instagram là một ví dụ điển hình của ứng dụng lai. Các ứng dụng lai được xây dựng với HTML và CSS. Các lập trình viên tạo một cơ sở mã, sau đó thực hiện các thay đổi nhỏ để điều chỉnh ứng dụng theo từng nền tảng. Các hybrid app thường chạy một ứng dụng web thông qua một container hoặc WebView, một trình duyệt có thể được chứa bên trong một ứng dụng di động. 20
- Xem thêm -

Tài liệu liên quan