ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
KHOA CƠNG NGHỆ PHẦN MỀM
BÙI TRUNG TÍN
TRẦN THỊ CẨM TÚ
KHÓA LUẬN TỐT NGHIỆP
HỆ THỐNG E-VOUCHER SỬ DỤNG BLOCKCHAIN
Blockchain E-Voucher System
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
TP. HỒ CHÍ MINH, 2021
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
KHOA CƠNG NGHỆ PHẦN MỀM
BÙI TRUNG TÍN – 16521239
TRẦN THỊ CẨM TÚ – 16521351
KHÓA LUẬN TỐT NGHIỆP
HỆ THỐNG E-VOUCHER SỬ DỤNG BLOCKCHAIN
Blockchain E-Voucher System
KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN
Th.S HOÀNG VĂN HÀ
TP. HỒ CHÍ MINH, 2021
THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ........................
ngày ............................ của Hiệu trường Trường Đại học Công nghệ Thông tin.
1. ………………………………………………... – Chủ tịch.
2. ………………………………………………... – Thư ký.
3. ………………………………………………... – Ủy viên.
4. ………………………………………………... – Ủy viên.
LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thông tin – ĐHQG TP.HCM chúng em đã được trang bị các kiến thức cơ
bản, các kỹ năng thực tế để có thể hồn thành Khóa luận tốt nghiệp của mình.
Chúng em xin gửi lời cám ơn sâu sắc đến thầy Hoàng Văn Hà là người đã trực tiếp
hướng dẫn chúng em, tạo nhiều điều kiện thuận lợi, góp ý kiến về mặt chun mơn
trong q trình thực hiện khóa luận và nhờ đó mà chúng em mới có thể hoàn thành
được đề tài trong thời gian cho phép.
Chúng con cũng xin gửi lời cám ơn đến cha mẹ và gia đình là những người thân nhất
đã ni dưỡng, động viên, tạo điều kiện thuận lợi cho chúng con.
Đồng thời, chúng em cũng xin cám ơn chân thành đến quý thầy cô trong Khoa và các
bạn bè gần xa đã luôn quan tâm và theo sát chúng em tạo cho chúng em nguồn động
lực để hồn khóa luận.
Trong q trình thực hiện nếu có gì sai sót, kính mong nhận được chỉ bảo của quý
thầy cô.
Thành phố Hồ Chí Minh, ngày 14 tháng 01 năm 2021
Sinh viên
BÙI TRUNG TÍN
TRẦN THỊ CẨM TÚ
MỤC LỤC
Chương 1.
TỔNG QUAN .................................................................................. 2
1.1. Bối cảnh và nhu cầu thực tế ........................................................................ 2
1.2. Mục tiêu ..................................................................................................... 3
1.3. Nội dung đề tài ........................................................................................... 3
Chương 2.
LARAVEL VOYAGER ................................................................... 5
2.1. Laravel Framework .................................................................................... 5
2.2. Laravel Voyager là gì? ............................................................................... 6
2.3. Các khái niệm chính trong Laravel Voyager ............................................... 6
2.3.1.
Trình quản lý cơ sở dữ liệu – Database Manager .............................. 6
2.3.2.
Xây dựng menu cho ứng dụng web................................................... 7
2.3.3.
Compass ........................................................................................... 8
Chương 3.
LARAVEL ORCHID ..................................................................... 10
3.1. Tổng quan ................................................................................................ 10
3.2. Lợi ích ...................................................................................................... 10
Chương 4.
CƠNG NGHỆ BLOCKCHAIN ...................................................... 13
4.1. Blockchain là gì? ...................................................................................... 13
4.2. Cấu tạo của Blockchain ............................................................................ 13
4.3. Tính bảo mật của Blockchain ................................................................... 14
4.3.1.
Kiến trúc hệ thống truyền thống...................................................... 15
4.3.2.
Kiến trúc hệ thống của Blockchain ................................................. 15
4.3.3.
Các thành phần cấu tạo nên một hệ thống Blockchain .................... 16
4.4. Các hack một hệ thống Blockchain........................................................... 20
Chương 5.
ETHEREUM VÀ SMART CONTRACT ....................................... 22
5.1. Ethereum – Blockchain 2.0....................................................................... 22
5.1.1.
Tổng quan về Ethereum .................................................................. 22
5.1.2.
Kiến trúc của hệ thống Ethereum .................................................... 22
5.2. Hợp đồng thông minh (Smart Contract).................................................... 24
5.2.1.
Smart Contract là gì? ...................................................................... 24
5.2.2.
Cách thức hoạt động của Smart Contract ........................................ 24
5.2.3.
Ưu điểm và nhược điểm của Smart Contract................................... 25
Chương 6.
KĨ THUẬT LẬP TRÌNH SMART CONTRACT ............................ 26
6.1. Ngôn ngữ Solidity .................................................................................... 26
6.2. Mã nguồn mở ethereum-php..................................................................... 27
6.3. Ganache và Ropsten Testnet ..................................................................... 28
6.3.1.
Ganache.......................................................................................... 28
6.3.2.
Ropsten Testnet và MetaMask ........................................................ 29
6.4. Truffle Framework ................................................................................... 30
Chương 7.
ỨNG DỤNG BLOCKCHAIN VÀO BÀI TỐN THỰC TIỄN ...... 32
7.1. Bài tốn thực tiễn ..................................................................................... 32
7.2. Giải pháp .................................................................................................. 34
7.3. Thiết kế tổng quan hệ thống ..................................................................... 34
7.4. Thiết kế cơ sở dữ liệu ............................................................................... 36
7.5. Lượt đồ Use – Case .................................................................................. 37
7.5.1.
Quản lý tài khoản ........................................................................... 38
7.5.2.
Quản lý đối tác ............................................................................... 43
7.5.3.
Quản lý đăng ký dịch vụ của đối tác ............................................... 48
7.5.4.
Quản lý voucher ............................................................................. 52
7.5.5.
Tra cứu thông tin voucher ............................................................... 56
7.5.6.
Phát hành voucher .......................................................................... 57
7.5.7.
Thu hồi voucher ............................................................................. 58
Chương 8.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ....................................... 59
8.1. Kết luận .................................................................................................... 59
8.1.1.
Về thành viên nhóm........................................................................ 59
8.1.2.
Về sản phẩm ................................................................................... 59
8.2. Hướng phát triển ...................................................................................... 60
TÀI LIỆU THAM KHẢO ..................................................................................... 61
DANH MỤC HÌNH
Hình 2.1: Cách làm việc với BREAD ...................................................................... 7
Hình 2.2: Cách Voyager quản lý menu .................................................................... 8
Hình 2.3: Tính năng Compass của Voyager ............................................................. 9
Hình 3.1: Kiến trúc 3 tầng trong Orchid................................................................. 11
Hình 3.2: Mơ hình MVC trong Orchid................................................................... 12
Hình 4.1: Cấu trúc cơ bản của một khối ................................................................. 14
Hình 4.2: Cơ chế liên kết theo mã băm của các khối trong Blockchain .................. 14
Hình 4.3: Kiến trúc Client – Server ....................................................................... 15
Hình 4.4: Kiến trúc Sổ cái phân tán ....................................................................... 16
Hình 4.5: Mơ hình đồng thuận phi tập trung – 1 .................................................... 17
Hình 4.6: Mơ hình đồng thuận phi tập trung – 2 .................................................... 18
Hình 4.7: Minh họa hoạt động Mining (đào block) - 1 ........................................... 19
Hình 4.8: Minh họa hoạt động Mining (đào block) – 2 .......................................... 20
Hình 6.1: Ví dụ Smart Contract đơn giản............................................................... 26
Hình 6.2: Triển khai một Smart Contract lên Ethereum ......................................... 27
Hình 6.3: Mơ hình tương tác với Ethereum với ethereum-php ............................... 28
Hình 6.4: Ứng dụng Ganache trên máy cá nhân ..................................................... 28
Hình 6.5: Ứng dụng Etherscan............................................................................... 29
Hình 6.6: Ứng dụng MetaMask ............................................................................. 30
Hình 7.1: Voucher giảm giá dạng giấy được phát hành bởi Highlands Coffee ....... 32
Hình 7.2: Voucher điện tử được phát hành qua email ............................................ 33
Hình 7.3: Sơ đồ tổng quan hệ thống....................................................................... 34
Hình 7.4: Thiết kế cơ sở dữ liệu............................................................................. 36
Ảnh 7.5. Mơ hình Use – Case tồn hệ thống .......................................................... 37
Ảnh 7.6. Lượt đồ Use – Case: Quản lý tài khoản ................................................... 38
Ảnh 7.7. Lượt đồ Use – Case: Đăng ký tài khoản .................................................. 38
Ảnh 7.8. Lượt đồ Use – Case: Kích hoạt tài khoản ................................................ 40
Ảnh 7.9. Lượt đồ Use – Case: Đăng nhập .............................................................. 41
Ảnh 7.10. Lượt đồ Use – Case: Đăng xuất ............................................................. 42
Ảnh 7.11. Lượt đồ Use – Case: Quản lý đối tác ..................................................... 43
Ảnh 7.12. Lượt đồ Use – Case: Quản lý danh sách đối tác ..................................... 44
Ảnh 7.13. Lượt đồ Use – Case: Thêm đối tác ........................................................ 45
Ảnh 7.14. Lượt đồ Use – Case: Sửa đối tác ........................................................... 46
Ảnh 7.15. Lượt đồ Use – Case: Xóa đối tác ........................................................... 47
Ảnh 7.16. Lượt đồ Use – Case: Quản lý đăng ký dịch vụ....................................... 48
Ảnh 7.17. Lượt đồ Use – Case: Xem danh sách Đăng ký dịch vụ .......................... 49
Ảnh 7.18. Lượt đồ Use – Case: Khởi tạo Đăng ký dịch vụ..................................... 50
Ảnh 7.19. Lượt đồ Use – Case: Cập nhật dữ liệu Đăng ký dịch vụ......................... 51
Ảnh 7.20. Lượt đồ Use – Case: Quản lý voucher ................................................... 52
Ảnh 7.21. Lượt đồ Use – Case: Xem danh sách voucher đã tạo ............................. 53
Ảnh 7.22. Lượt đồ Use – Case: Thêm mới voucher ............................................... 54
Ảnh 7.23. Lượt đồ Use – Case: Cập nhật dữ liệu voucher ...................................... 55
Ảnh 7.24. Lượt đồ Use – Case: Tra cứu thông tin voucher .................................... 56
Ảnh 7.25. Lượt đồ Use – Case: Phát hành voucher ................................................ 57
Ảnh 7.26. Lượt đồ Use – Case: Thu hồi voucher ................................................... 58
DANH MỤC BẢNG
Bảng 7.1. Use – Case đăng ký tài khoản ................................................................ 39
Bảng 7.2. Use – Case Kích hoạt tài khoản ............................................................. 40
Bảng 7.3. Use – Case Đăng nhập ........................................................................... 41
Bảng 7.4. Use – Case Đăng xuất............................................................................ 42
Bảng 7.5. Use – Case: Quản lý danh sách đối tác................................................... 44
Bảng 7.6. Use – Case: Thêm đối tác ...................................................................... 45
Bảng 7.7. Use – Case: Thêm đối tác ...................................................................... 46
Bảng 7.8. Use – Case: Xóa đối tác ......................................................................... 47
Bảng 7.9. Use – Case: Xem danh sách Đăng ký dịch vụ ........................................ 49
Bảng 7.10. Use – Case: Khởi tạo Đăng ký dịch vụ ................................................ 50
Bảng 7.11. Use – Case: Cập nhật dữ liệu Đăng ký dịch vụ .................................... 51
Bảng 7.12. Use – Case: Xem danh sách voucher đã tạo ......................................... 53
Bảng 7.13. Use – Case: Thêm mới voucher ........................................................... 54
Bảng 7.14. Use – Case: Cập nhật dữ liệu voucher.................................................. 55
Bảng 7.15. Use – Case: Tra cứu thông tin voucher ................................................ 56
Bảng 7.16. Use – Case: Phát hành voucher ............................................................ 57
Bảng 7.17. Use – Case: Thu hồi voucher ............................................................... 58
DANH MỤC TỪ VIẾT TẮT
TÓM TẮT KHÓA LUẬN
Hệ thống tạo mã giảm giá E-Voucher cho phép người dùng tạo mã giảm giá theo đặt
hàng từ khách hàng của họ. Khách hàng có thể truy cập vào tài khoản được cấp riêng
để xem thông tin các mã giảm giá đã đăng ký, xuất thông tin và phát hành các mã này
đến cho người dùng cuối.
Đề tài được phát triển trên nền tảng Laravel, cơ sở dữ liệu MySQL, tránh việc phân
mảng bộ nhớ cũng như giảm thiểu tình trạng q tải server. Áp dụng cơng nghệ
Blockchain trong hệ thống tạo, lưu trữ và quản lý thông tin mã giảm giá.
1
Chương 1. TỔNG QUAN
1.1. Bối cảnh và nhu cầu thực tế
Trong những năm gần đây, trên đà phát triển thần tốc của cơng nghệ thơng tin,
ngày càng có nhiều sản phẩm được ra đời nhằm tin học hóa các quy trình, nghiệp
vụ của các doanh nghiệp như Hệ thống quản lý ERP (Enterprise Resource
Planning), Hệ thống quản lý CRM (Customer Relationship Management),… Các
hệ thống này đã giúp cải thiện chất lượng, tăng độ chính xác, hiệu quả, giảm thiểu
thời gian làm việc từ đó giúp cho các doanh nghiệp có các bước phát triển vượt
bậc.
Trong quy trình kinh doanh của một doanh nghiệp, giai đoạn sau bán hàng lúc nào
cũng là vô cùng quan trọng và đáng được ưu tiên cao. Nếu thực hiện tốt sẽ mang
lại lợi ích vơ cùng to lớn cho doanh nghiệp, không những giúp khách hàng tin
tưởng khi đưa ra quyết định mua sản phẩm, mà cịn giúp giảm chi phí chuyển đổi
khách hàng mới khi khách hàng tiếp tục quay lại mua sản phẩm hay sử dụng dịch
vụ khác, từ đó thúc đẩy tăng trưởng doanh thu.
Thực tế hiện tại quy trình sau bán hàng đã được triển khai bằng rất nhiều phương
thức hiệu quả và mang lại thành cơng. Có thể kể đến các phương thức nổi bật
nhưng phát hành thẻ thành viên nằm mục đích quản lý quá trình sử dụng sản phẩm,
dịch vụ của khách hàng, từ đó có thể triển khai hiệu quả các quy trình bảo hành,
khuyến mãi, tri ân khách hàng. Cho nên nhu cầu triển khai cho mình một hệ thống
giúp doanh nghiệp có thể quản lý hiệu quả quy trình sau bán hàng là tất yếu và
thông thường đây sẽ là một phần của hệ thống CRM.
Thế nhưng, thực tế đã có rất nhiều sự cố an tồn thơng tin đã xảy ra vì một số
khuyết điểm của hệ thống lưu trữ thông tin tập trong theo mơ hình Client – Server
mà hầu hết các hệ thống hiện tại đang triển khai. Ngoài ra chi phí để triển khai các
hệ thống kể trên vẫn cịn khó tiếp cận cho các doanh nghiệp có quy mơ vừa và
nhỏ. Nắm bắt được điểm mạnh lưu trữ dữ liệu minh bạch, bất biến của công nghệ
Blockchain, nhóm đã nảy sinh ý tưởng triển khai công nghệ Blockchain như một
2
nơi lưu trữ dữ liệu cho các hệ thống trên với mong muốn có thể tìm ra được một
giải pháp cải thiện độ tin cậy, an toàn cũng như dễ tiếp cận cho các doanh nghiệp
vừa và nhỏ, đặc biệc là các doanh nghiệp hoạt động trong nhóm ngành dịch vụ,
bán lẻ, thức ăn nhanh,…
1.2. Mục tiêu
Mục tiêu của đề tài mà nhóm mong muốn hướng đến là xây dựng một hệ thống
hỗ trợ các doanh nghiệp với quy mô có thể phát hành E-Voucher của riêng mình
một cách nhanh chóng, tiết kiệm và hiệu quả. Hệ thống được thiết kế với 3 tính
năng cốt lõi:
• Tạo và lưu trữ dữ liệu E-Voucher lên Blockchain.
• Phát hành E-Voucher thơng qua các kênh email, mạng xã hội.
• Xác thực quyền sở hữu E-Voucher của khách hàng.
Để có thể xây dựng được hệ thống mong muốn như đã trình bày ở trên, luận văn
sẽ tập trung giải quyết những vấn đề sau đây:
• Tìm hiểu các mã nguồn mở của Framework Laravel giúp xây dựng các hệ
thống quản lý nhanh chóng, hiệu quả.
• Tìm hiểu cơng nghệ Blockchain và cách thức để một hệ thống theo mơ hình
Client – Server có thể giao tiếp với Blockchain.
• Phân tích, thiết kế hệ thống có thể đáp ứng được các tính năng cốt lõi đã
được trình bày ở trên.
1.3. Nội dung đề tài
Chương 1. Tổng quan
Chương 2. Laravel Voyager
Chương 3. Laravel Orchid
Chương 4. Công nghệ Blockchain
3
Chương 5. Ethereum và Smart Contract
Chương 6. Lập trình, triển khai và tương tác với Smart Contract
Chương 7. Ứng dụng cơng nghệ Blockchain vào bài tốn thực tiễn
Chương 8. Kết luận và hướng phát triển
Chương 9. Tài liệu tham khảo
4
Chương 2. LARAVEL VOYAGER
2.1. Laravel Framework
Laravel là một framework mã nguồn mở nổi tiếng trong cộng đồng lập trình ứng
dụng web nói chung, và đối với các lập trình viên u thích ngơn ngữ PHP nói
riêng.
Với 3 đặc tính nổi trội:
-
Đơn giản: các chức năng của Laravel rất dễ hiểu và thực hiện.
-
Ngắn gọn: hầu hết các chức năng của Laravel hoạt động liên tục với cấu
hình rất nhỏ, dựa vào các quy tắc chuẩn để giảm bớt code-bloat.
-
Trình bày hợp lý: hướng dẫn sử dụng Laravel rất đầy đủ và luôn cập nhật.
Người tạo ra framework luôn cập nhật tài liệu trước khi cho ra một phiên
bản mới, đảm bảo những người học lập trình ln có những tài liệu mới
nhất.
Đặc điểm khác biệt so với các framework khác:
-
Bundles: Laravel đi kèm với công cụ command-line (gọi là Artisan) giúp
việc cài đặt các gói dễ dàng.
-
Eloquent ORM: là file thực thi PHP Active Record tiên tiến nhất hiện có.
-
Migrations: trong Laravel, migrations được xây dựng trong framework và
có thể thực hiện thơng qua Artisan command-line.
-
Unit-testing: hỗ trợ tích hợp PHP Unit.
-
Redit: hỗ trợ Redis rất ngắn gọn.
Với cú pháp đơn giản, hỗ trợ xây dựng ứng dụng web theo mơ hình chuẩn MVC,
hỗ trợ thao tác với cơ sở dữ liệu dễ dàng hơn, Laravel ngày càng phát triển với
cộng đồng hỗ trợ và trao đổi đông đảo. Điều này dẫn đến ngày càng có nhiều
5
framework, library hay packages được sinh ra và phát triển nhằm hỗ trợ cho các
lập trình viên web phát triển ứng dụng một cách dễ dàng hơn.
2.2. Laravel Voyager là gì?
Voyager là một Laravel package hỗ trợ xây dựng trang quản trị cho trang web một
cách nhanh chóng, dễ dàng với giao diện đẹp, thân thiện, dễ sử dụng. Package này
hỗ trợ:
-
Giao diện trang quản trị cho Laravel web app.
-
Các phương thức thực hiện thêm mới, sửa, xóa dữ liệu dễ dàng.
-
Xây dựng menu cho trang web.
-
Trình quản lý các tập tin.
-
Làm việc với CRUD/BREAD.
Điểm mạnh của Laravel Voyager chính là phần quản lý Cơ sở dữ liệu, làm việc
với Controller và thực hiện các thao tác quản trị trang web một cách trực quan.
Từ đó có thể giảm thiểu thời gian phát triển cho dự án. Hiện nay, phiên bản mới
nhất của Voyager là 1.4.
2.3. Các khái niệm chính trong Laravel Voyager
2.3.1. Trình quản lý cơ sở dữ liệu – Database Manager
Một trong những đặc điểm khiến cho Voyager trở nên phổ biến trong cộng
đồng lập trình viên sử dụng Laravel đó chính là package này hỗ trợ một một
cách tối ưu khi làm việc với cơ sở dữ liệu của ứng dụng. Trong Voyager, khi
tạo mới một bảng trong cơ sở dữ liệu, lập trình viên có thể đồng thời tạo các
Model, Controller, Migration thậm chí là các quy tắc dữ liệu cho bảng đó.
Đồng thời việc tạo bảng mới cũng dễ dàng hơn nhờ giao diện trực quan, rõ
ràng. Và công cụ thực hiện các thao tác đó được nhà phát triển gọi là BREAD.
BREAD, viết tắt của Browse, Read, Edit, Add, Delete, đúng như tên gọi, công
cụ này hỗ trợ rất hiệu quả các thao tác duyệt, đọc, thêm mới, chỉnh sửa và xóa
6
dữ liệu trong ứng dụng web mà Voyager đang quản trị. Mỗi một bảng trong
cơ sở dữ liệu có thể có một BREAD tương ứng . Sau khi BREAD cho bảng
được tạo, trang quản trị tương ứng cũng sẽ được tạo. Tại đây, lập trình viên có
thể dễ dàng quyết định xem người dùng có thể thao tác với cột nào trong bảng
và thao tác ở mức độ nào bằng cách chọn các lựa chọn tương ứng (BREAD
cho từng cột), thậm chí có thể đặt ra các quy tắc về dữ liệu của cột đó, thay vì
phải viết SQL trigger hoặc viết code xử lý rắc rối. Ngoài việc thao tác trên một
bảng, BREAD cũng hỗ trợ để quản lý mối quan hệ giữa các bảng. Các quan
hệ 1 – 1, 1 – n hay n – n đều có thể dễ dàng cài đặt khi chỉ cần kéo thả và lựa
chọn từ các giá trị có sẵn.
Hình 2.1: Cách làm việc với BREAD
2.3.2. Xây dựng menu cho ứng dụng web
Một tính năng khác mà Voyager hỗ trợ là tính năng xây dựng menu điều hướng
cho trang web. Lập trình viên có thể dễ dàng thêm mới, chỉnh sửa hoặc xóa
menu hiện có, bất kể đó là menu ở tiêu đề, ở chân trang hay ở thanh bên.
7
Ngồi các menu được hỗ trợ sẵn, lập trình viên cũng có thể điều chỉnh lại menu
cho trang web của mình bằng cách sử dụng Bootstrap, hoặc tự mình xây dựng
một menu riêng để phù hợp với mục đích sử dụng của mình.
Hình 2.2: Cách Voyager quản lý menu
2.3.3. Compass
Đối với các lập trình viên thì việc sử dụng các câu lệnh command hay xem
logs của ứng dụng đã không còn quá xa lạ. Tuy nhiên, việc chuyển đổi liên tục
giữa ứng dụng và cửa sổ terminal cũng khá bất tiện. Tính năng Compass của
Voyager ra đời và đã hỗ trợ rất tốt cho điểm bất tiện này, khi giờ đây lập trình
viên đã có thể vừa chạy thử ứng dụng của mình, vừa chạy các câu lệnh
command cũng như xem logs ngay trên ứng dụng.
8
Hình 2.3: Tính năng Compass của Voyager
9
Chương 3. LARAVEL ORCHID
3.1. Tổng quan
Như đã đề cập ở chương trước, Laravel hiện đang là một framework đầy triển
vọng cho nhánh lập trình ứng dụng web, do đó ngày càng có nhiều sản phẩm ra
đời để hỗ trợ và bổ sung cho những khiếm khuyết mà Laravel chưa giải quyết
được. Và Orchid là một trong số đó.
Nếu như Voyager là package mạnh mẽ hỗ trợ việc xây dựng trang quản lý cho các
quản trị viên, thì Orchid, ở phía còn lại, là một package mã nguồn mở (giấy phép
của MIT) đầy tiềm năng hỗ trợ xây dựng ứng dụng một cách nhanh chóng.
Package này cung cấp các mẫu giao diện của các ứng dụng web văn phòng, trang
quản trị hoặc trang quản lý thông tin thông dụng, giúp cho lập trình viên có thể dễ
dàng phát triển một trang web mới với ít cơng sức bỏ ra nhất có thể.
Một số tính năng mà Orchid cung cấp:
-
Form builder: hỗ trợ xây dựng các biểu mẫu mà không cần phải code lại
HTML.
-
Screen: sự cân bằng giữa việc thao tác CRUD và code xử lý.
-
Fields: hệ thống phong phú với hơn 40 loại dữ liệu.
-
Permissions: dễ dàng quản lý trong quá trình phát triển và hỗ trợ cho ứng
dụng.
-
Hệ thống menu, biểu đồ, thông báo,... phong phú.
Hiện tại, phiên bản mới nhất của Orchid trên Github là 9.16.
3.2. Lợi ích
Một ứng dụng web cơ bản là một hệ thống con với kiến trúc 3 tầng:
-
Tầng hiển thị: Giao diện đồ họa hiển thị cho người dùng (browser), bao
gồm các đoạn mã, các thiết kế và các tài nguyên khác.
10
-
Tầng xử lý logic: nơi hầu hết các logic nghiệp vụ được tập trung thao tác
với cơ sở dữ liệu (Eloquent), gửi đi các tài nguyên và các xử lý khác.
-
Tầng quản lý tài nguyên: quản lý dữ liệu với các hệ quản trị cơ sở dữ liệu
thông dụng (MySQL, PostgreSQL, SQLite, Microsoft SQL Server).
Hình 3.1: Kiến trúc 3 tầng trong Orchid
Việc giảm thiểu thời gian phát triển ứng dụng liên quan trực tiếp đến việc phân
phối trách nhiệm giữa các tầng xử lý. Orchid đã tùy chỉnh mơ hình MVC truyền
11
thống bằng cách hạn chế xử dụng Controller và View, thay vào đó khái niệm
Screen ra đời thay thế cho hai thành phần trên. Từ đây, việc xử lý các yêu cầu, dữ
liệu và thể hiện các dữ liệu đó lên ứng dụng chỉ cần phải xử lý ở một nơi duy nhất.
Hình 3.2: Mơ hình MVC trong Orchid
12
Chương 4. CƠNG NGHỆ BLOCKCHAIN
4.1. Blockchain là gì?
Blockchain (chuỗi khối) là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các
khối được liên kết với nhau bằng mã hóa. Các khối thơng tin này hoạt động độc
lập và mở rộng theo thời gian. Mỗi khối đều chứa thông tin về thời gian khởi tạo
và được liên kết tới khối trước đó, kèm một mã thời gian và dữ liệu giao dịch.
Chúng được quản lý bởi tất cả mọi người tham gia vào hệ thống chứ không thông
qua bất kì đơn vị trung gian nào. Do đó có thể nói Blockchain làm một giải pháp
giúp chống lại việc thay đổi của dữ liệu: Một khi dữ liệu đã được mạng lưới chấp
nhận thì sẽ khơng có cách nào thay đổi được nó.
4.2. Cấu tạo của Blockchain
Như đã giới thiệu ở trên, Blockchain được tạo thành từ các khối lưu trữ thông tin
liên kết với nhau thành chuỗi thông qua các liên kết mã hóa.
Cấu trúc của một khối thơng tin bao gồm các thành phần sau:
• Dữ liệu (data): là dữ liệu được lưu trữ trong quá trình hoạt động của
Blockchain. Tùy thuộc vào loại Blockchain mà dữ liệu này sẽ khác nhau,
ví dụ Blockchain của Bitcoin sẽ chứa các thông tin cần thiết của một lượt
giao dịch tiền ảo như địa chỉ ví người nhận, người gửi, số lượng Bitcoin
được lưu trữ; Blockchain về bảo hiểm sẽ lưu giữ thông tin về đối tượng sở
hữu bảo hiểm, lượt sử thanh toán mà bảo hiểm đã chi trả cho đối tượng
này,…
• Mã băm (hash): mã băm của một khối được tạo thành từ dữ liệu của khối
đó. Mã này được thiết kế là duy nhất, dùng để định danh một khối trong
Blockchain. Bất kì sự thay đổi nào xảy ra trong khối cũng sẽ làm thay đổi
mã băm của khối đó.
• Mã băm của khối phía trước: thiết kế này sẽ liên kết các khối với nhau,
tương tự với thiết kế của cấu trúc dữ liệu danh sách liên kết. Bất kì sự thay
13