lOMoARcPSD| 59114765
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
─ ─ ─ ─ ─ ─
ĐỒ ÁN
ĐỀ TÀI : TIỀN GIẢI THUẬT CÔNG NGHỆ
BLOCKCHAIN
GVHD :
TS Huy Lê
Họ và tên :
Trịnh Hải Sơn
Lớp :
TH27.38
Mã sinh viên:
2722226637
Hà Nội, tháng 6 năm 2025
lOMoARcPSD| 59114765
Mục Lục
CHƯƠNG 1 : GIỚI THIỆU...............................................................................................3
1. Đặt vấn đề..................................................................................................................3
2. Giải pháp....................................................................................................................3
3. Mục tiêu đề tài............................................................................................................3
3.1. Lý thuyết.............................................................................................................3
3.2. Mục tiêu..............................................................................................................4
3.3. Phạm vi...............................................................................................................4
3.4. Phương pháp nghiên cứu.....................................................................................4
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT..................................................................................5
1. HTML........................................................................................................................5
2. CSS............................................................................................................................6
3. Tailwind.....................................................................................................................6
4. Bootstrap....................................................................................................................7
5. ReactJS......................................................................................................................9
6. Java............................................................................................................................9
7. Spring boot...............................................................................................................11
8. Blockchain...............................................................................................................13
9. Ethereum..................................................................................................................14
10. Remix.....................................................................................................................14
CHƯƠNG 3: PHÂN TÍCH ĐẶC TẢ U CẦU.............................................................15
1. Danh sách người dùng..............................................................................................15
2. Danh sách Usecase...................................................................................................15
2.1. Người xem phim...............................................................................................15
2.2. Admin................................................................................................................16
3. Đặc tả Usecase.........................................................................................................16
3.1. Đặc tả Usecase của người xem phim.................................................................16
3.2. Đặc tả Usecase của admin.................................................................................21
CHƯƠNG 4: THIẾT KẾ GIAO DIỆN............................................................................29
1. Đăng nhập................................................................................................................29
2. Đăng ký....................................................................................................................30
lOMoARcPSD| 59114765
3. Xác thực OTP...........................................................................................................30
4. Nhận OTP qua mail................................................................................................31
5. Thanh toán VNPay...................................................................................................31
6. Trang chủ.................................................................................................................32
7. Chi tiết phim............................................................................................................33
8. Xem phim................................................................................................................34
9. Thông tin tài khoản..................................................................................................35
10. Đăng ký VIP...........................................................................................................36
11. Quản lý phim..........................................................................................................36
12. Danh sách phim......................................................................................................37
CHƯƠNG 5 : KẾT LUẬN...............................................................................................38
1. Tổng kết...................................................................................................................38
2. Khó khăn..................................................................................................................38
3. Hạn chế....................................................................................................................38
4. Hướng phát triển......................................................................................................38
TÀI LIỆU THAM KHẢO.............................................................................................39
lOMoARcPSD| 59114765
CHƯƠNG 1 : GIỚI THIỆU
1. Đặt vấn đề
Trong thời đại công nghệ số phát triển mạnh mẽ, nhu cầu giải trí trực tuyến của người
dùng ngày càng gia tăng. Xem phim online đã trở thành một xu hướng phổ biến, đáp ứng
nhu cầu tiếp cận nội dung giải trí đa dạng, tiện lợi và linh hoạt về thời gian, địa điểm. Các
nền tảng như Netflix, YouTube, hay các dịch vụ streaming nội địa đã chứng minh tiềm
năng to lớn của thị trường này. Tuy nhiên, việc xây dựng một hệ thống xem phim online
hiệu quả, thân thiện với người dùng và đáp ứng các yêu cầu kỹ thuật như tốc độ tải, chất
lượng video, và khả năng tùy chỉnh trải nghiệm vẫn là một thách thức lớn.
Hiện nay, nhiều hệ thống xem phim trực tuyến tại Việt Nam còn gặp phải các vấn đề như
tốc độ tải chậm, nội dung hạn chế, hoặc giao diện người dùng chưa tối ưu. Bên cạnh đó,
các yêu cầu về tích hợp công nghệ mới như phát video tự động, quản lý dữ liệu lớn,
đảm bảo tính bảo mật cho người dùng cũng đòi hỏi sự đầu tư nghiêm túc về mặt kỹ thuật
và chiến lược phát triển.
Xuất phát từ thực trạng trên, việc xây dựng một hệ thống xem phim online hiện đại, tích
hợp các công nghệ tiên tiến như xử lý video bất đồng bộ, giao diện thân thiện, và khả
năng cá nhân hóa trải nghiệm người dùng là cần thiết. Hệ thống này không chỉ đáp ứng
nhu cầu giải trí mà còn phải đảm bảo hiệu suất cao, khả năng mở rộng, và trải nghiệm
mượt mà trên nhiều nền tảng. Báo cáo này sẽ trình bày quá trình thiết kế, phát triển, và
triển khai hệ thống xem phim online, đồng thời đề xuất các giải pháp để khắc phục các
hạn chế hiện có và nâng cao chất lượng dịch vụ.
2. Giải pháp
Để giải quyết vấn đề trên, em quyết định chọn đề tài - xây dựng ứng dụng Blockchain hỗ
trợ xem phim online để giúp những người yêu thích phim tiếp cận các bộ phim yêu thích
dễ hơn và đồng thời giúp các nhà sản xuất phim tăng doanh thu hơn.
3. Mục tiêu đề tài
3.1. Lý thuyết
Tìm hiểu và nghiên cứu Blockchain, React, Tailwind, Boostrap, Spring boot.
lOMoARcPSD| 59114765
Nắm rõ các thao tác trên Visual studio code, Intellij IDE.
Nghiên cứu các website xem phim online nổi tiếng trên thị trường như VieOn,
Netflix,...
3.2. Mục tiêu
Thiết kế giao diện bắt mắt, dễ sử dụng cho người dùng.
Đảm bảo tính năng an toàn và bảo mật.
Tối ưu hoá các chức năng của ứng dụng.
Người dùng dễ dàng tìm kiếm được bộ phim yêu thích.
3.3. Phạm vi
Phạm vi môi trường: triển khai trên website.
Đối tượng sử dụng: Khán giả có nhu cầu xem phim.
Phạm vi chức năng:
o Khán giả tìm kiếm các được các bộ phim yêu thích.
o Khán giả có thể đánh giá độ hấp dẫn của phim.
o Khán giả có thể tương tác với phim.
3.4. Phương pháp nghiên cứu
Phương pháp làm việc: làm nhóm 2 người thông qua hình thức offline và online
qua google meeting dưới sự hướng dẫn của giảng viên.
Phương pháp nghiên cứu:
o Khảo sát và nghiên cứu nhu cầu xem phim của mọi người o Nghiên cứu
các tài liệu và công nghệ liên quan đến đề tài như: Blockchain, React,....
lOMoARcPSD| 59114765
o Tham khảo các website xem phim hiện có như: netflix, VieOn,... để tối ưu
hoá website.
Phương pháp công nghệ:
o Tìm hiểu các ngôn ngữ và framework liên quan đến đề tài.
o Xây dựng giao diện website để tương tác người dùng và nhận phản hồi, sửa
chữa nếu cần thiết.
o Tìm hiểu các thư viện hỗ trợ cho dự án.
lOMoARcPSD| 59114765
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
1. HTML
HTML là viết tắt của cụm từ Hypertext Markup Language (tạm dịch là Ngôn ngữ
đánh dấu siêu văn bản). HTML được sử dụng để tạo và cấu trúc các thành phần trong
trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles, blockquotes… và
HTML không phải là ngôn ngữ lập trình.
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements) được quy
định bằng các cặp thẻ (tag và attributes). Các cặp thẻ này được bao bọc bởi một dấu
ngoặc ngọn (ví dụ <html>) và thường là sẽ được khai báo thành một cặp, bao gồm thẻ
mở và thẻ đóng. Ví dụ, chúng ta có thể tạo một đoạn văn bằng cách đặt văn bản vào trong
cặp tag mở và đóng văn bản <p></p>
Ưu điểm:
a. Được sử dụng rộng rãi, có rất nhiều nguồn tài nguyên hỗ trợ và cộng đồng
sử dụng lớn.
b. Học đơn giản và dễ hiểu.
c. Mã nguồn mở và hoàn toàn miễn phí.
d. Markup gọn gàng và đồng nhất.
e. Tiêu chuẩn thế giới được vận hành bởi World Wide Web Consortium
(W3C).
lOMoARcPSD| 59114765
f. Dễ dàng tích hợp với các ngôn ngữ backend như PHP, Python… Khuyết
điểm:
g. Được dùng chủ yếu cho web tĩnh. Đối với các tính năng động như update
hay realtime thời gian thực, bạn cần sử dụng JavaScript hoặc ngôn ngữ
backend bên thứ 3 như PHP.
h. Một số trình duyệt chậm hỗ trợ tính năng mới.
2. CSS
CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm
và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML). Nói ngắn
gọn hơn là ngôn ngữ tạo phong cách cho trang web
Mối tương quan giữa HTML và CSS rất mật thiết. HTML là ngôn ngữ markup (nền tảng
của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website), chúng
là không thể tách rời.
3. Tailwind
Tailwind là một utility-first CSS framework giúp cho bạn xây dựng giao diện người dùng
một cách nhanh nhất. Tailwind CSS được phát hành lần đầu tiên vào tháng 10/2019 được
phát triển bởi Adam Wathan. Nếu so sánh với các nền tảng lập trình CSS khác như
lOMoARcPSD| 59114765
Bootstrap, Materialize, Foundation, Material Design… thì giữa chúng có điểm chung với
nhau.
Ưu điểm:
Xây dựng giao diện chỉ cần khai báo class trên file html
Chỉ xuất ra những file css chứa những class đã sử dụng trong giao diện.
Dễ dàng thiết lập Responsive ngay trên file html
Hỗ trợ tương tác hover, focus… ngay trên class html
Tối ưu những cấu trúc html css có tính lặp lại
Định nghĩa thêm class mới được phối hợp bởi các class có sẵn trong tailwind
Hỗ trợ chế độ tối Dark Mode
Dễ dàng mở rộng, chỉnh sửa và biến đổi
Tăng tốc độ code với Extension thông minh trên VS Code.
lOMoARcPSD| 59114765
4. Bootstrap
Bootstrap là gì?
Bootstrap là gì? Hiểu một cách đơn giản, Bootstrap một Framework bao gồm 3 thành
phần cơ bản, đó là: HTML, CSS và JavaScript. Framework này được sử dụng để phát
triển trang web chuẩn theo Responsive. Sử dụng Bootstrap giúp việc thiết kế web tiết
kiệm nhiều thời gian và đơn giản hơn.
Bootstrap là một bộ sưu tập hoàn toàn miễn phí. Bộ sưu tập này bao gồm các mã nguồn
mở và các công cụ giúp bạn có thể tạo thành một website với đầy đủ các thành phần.
Bootstrap sẽ quy định sẵn các thuộc tính về kích thích, màu sắc và các chiều dài, chiều
rộng của các vùng website…. Thông qua đó, designer có thể dễ dàng sáng tạo ra các
website theo mong muốn nhưng vẫn đảm bảo tính thẩm mỹ. Đồng thời, sử dụng
Bootstrap sẽ giúp tiết kiệm rất nhiều thời gian.
Lịch sử hình thành của Bootstrap
Sau khi đã tìm hiểu Bootstrap là gì, chúng ta chắc chắn không thể bỏ qua lịch sử hình
thành của Framework này. Bootstrap là Framework được nghiên cứu và phát triển bởi
Mark Otto và Jacob Thornton. Đây là 2 kỹ sư tại Twitter.
Bootstrap ra mắt lần đầu tiên vào ngày 19/8/2011 trên mạng xã hội GitHub. Ban
đầu, Bootstrap được thiết kế như một mã nguồn mở và có tên gọi là Twitter
Blueprint.
lOMoARcPSD| 59114765
Ngày 31/1/2012, các nhà sáng lập phát hành phiên bản thứ 2 của Bootstrap. So với
phiên bản cũ, phiên bản số 2 được bổ sung thêm 12 cột giúp người dùng có thể dễ
dàng tùy chỉnh và thiết kế với nhiều kích thước màn hình khác nhau.
Đến ngày 19/8/2013, phiên bản thứ 3 của Bootstrap được ra đời. Đây là phiên bản
đầu tiên có giao diện dành cho điện thoại thông minh. Chính nhờ sự thay đổi này
đã giúp Bootstrap tạo nên sự đột phá và đứng thứ 1 trên Bảng xếp hạng các dự án
của GitHub.
Vào tháng 10/2014, các nhà phát triển tiếp tục nâng cấp và công bố phiên bản thứ
4 của Bootstrap.
Tháng 8/2015, Bootstrap 4 giới thiệu phiên bản Alpha đầu tiên.
5. ReactJS
React là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản thân
nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần
trên website. Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu
không chỉ thực hiện được trên tầng Server mà còn ở dưới Client nữa.
ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựng giao diện
người dùng hay UI. Trong lập trình ứng dụng front-end, lập trình viên thường sẽ phải làm
việc chính trên 2 thành phần sau: UI và xử lý tương tác của người dùng. UI là tập hợp
những thành phần mà bạn nhìn thấy được trên bất kỳ một ứng dụng nào, ví dụ có thể kể
đến bao gồm: menu, thanh tìm kiếm, những nút nhấn, card,… Giả sử bạn đang lập trình
một website thương mại điện tử, sau khi người dùng chọn được sản phẩm ưng ý rồi
nhấn vào nút “Thêm vào giỏ hàng”, thì việc tiếp theo mà bạn phải làm đó là thêm sản
phẩm được chọn vào giỏ hàng và hiển thị lại sản phẩm đó khi user vào xem => xử
tương tác.
lOMoARcPSD| 59114765
Tớc khi có ReactJS, lập trình viên thường gặp rất nhiều khó khăn trong việc sử dụng
“vanilla JavaScript”(JavaScript thuần) và JQuery để xây dựng UI. Điều đó đồng nghĩa
với việc quá trình phát triển ứng dụng sẽ lâu hơn và xuất hiện nhiều bug, rủi ro hơn. Vì
vậy vào năm 2011, Jordan Walke – một nhân viên của Facebook đã khởi tạo ReactJS với
mục đích chính là cải thiện quá trình phát triển UI.
6. Java
Java là một trong những ngôn ngữ lập trình hướng đối tượng. Ngôn ngữ Java được sử
dụng phổ biến trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị
di động.
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm
1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia
dụng, và có tên là Oak. Java được chính thức phát hành năm 1994, đến năm 2010 được
Oracle mua lại từ Sun MicroSystem.
Java được thiết kế với tiêu chí “Write Once, Run Anywhere” (viết một lần, chạy mọi
nơi), tức là mã nguồn Java sau khi biên dịch có thể chạy trên bất kỳ nền tảng nào hỗ trợ
Java Virtual Machine (JVM), mà không cần thay đổi lại mã. Điều này giúp Java trở thành
một ngôn ngữ lập trình đa nền tảng và rất phổ biến.
Đặc điểm của ngôn ngữ lập trình Java là gì?
lOMoARcPSD| 59114765
Tương tự C++, hướng đối tượng hoàn toàn
Độc lập phần cứng và hệ điều hành
Ngôn ngữ thông dịch
Ưu điểm : Phương pháp này giúp các đoạn mã viết bằng Java có thể chạy được
trên nhiều nền tảng khác nhau. Với điều kiện là JVM có hỗ trợ chạy trên nền tảng
này.
Nhược điểm : Cũng như các ngôn ngữ thông dịch khác, quá trình chạy các đoạn
mã Java là chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên vẫn ở trong một mức
chấp nhận được).
lOMoARcPSD| 59114765
Cơ chế thu gom rác tự động
Đa luồng
Tính an toàn và bảo mật
7. Spring boot
Spring Boot được xây dựng dựa trên nền của Spring Framework, phát triển bởi ngôn ngữ
Java. Nó là một phiên bản có tính tự động hoá cao hơn và đơn giản hơn của Spring.
Spring Boot khiến cho việc tạo và khởi chạy ứng dụng chỉ diễn ra trong vòng vài phút.
Lịch sử phát triển của Spring Boot
Spring Boot được phát triển bởi Pivotal Software, với phiên bản đầu tiên (Spring Boot
1.0) được phát hành vào tháng 4 năm 2014. Mục tiêu ban đầu của Spring Boot là giải
quyết những hạn chế và phức tạp trong việc cấu hình Spring Framework truyền thống.
Spring Framework, mặc dù rất mạnh mẽ và linh hoạt, nhưng yêu cầu nhiều cấu hình thủ
công và có thể trở nên cồng kềnh khi xây dựng các ứng dụng phức tạp.
Tớc khi Spring Boot ra đời, việc cấu hình một ứng dụng Spring thường đòi hỏi nhiều
file XML hoặc các class Java cấu hình, gây khó khăn cho việc bảo trì và phát triển.
Spring Boot được giới thiệu như một cách tiếp cận đơn giản và hiệu quả hơn, với các cấu
hình tự động và các công cụ hỗ trợ như Spring Initializr, giúp nhà phát triển bắt đầu dự
án mới nhanh chóng chỉ với một vài cú nhấp chuột.
Từ khi ra mắt, Spring Boot đã nhanh chóng trở thành một trong những framework phổ
biến nhất trong cộng đồng Java, được sử dụng rộng rãi trong nhiều loại ứng dụng khác
nhau, từ các ứng dụng web đơn giản đến các hệ thống microservices phức tạp. Sự phát
triển và cải tiến liên tục của Spring Boot đã giúp nó trở thành một phần không thể
thiếu trong hệ sinh thái Spring, giúp các nhà phát triển xây dựng các ứng dụng hiện đại
một cách dễ dàng và nhanh chóng hơn. Sự khác biệt giữa Spring và Spring Boot
Nếu bạn đã từng phát triển ứng dụng Java, chắc hẳn bạn đã trải qua sự phức tạp và tốn
công sức khi thực hiện các tác vụ với cơ sở dữ liệu. Đó thực sự là một quá trình không
mấy dễ dàng! Tuy nhiên, sự ra đời của Spring Boot đã giúp đơn giản hóa các tác vụ phức
tạp liên quan đến cơ sở dữ liệu.
lOMoARcPSD| 59114765
Spring là một tập hợp các framework con, bao gồm nhiều module khác nhau như Spring
MVC, Spring JDBC, Spring AOP, Spring ORM và Spring Test. Tính năng cốt lõi của
Spring Framework chính là Dependency Injection (DI), cho phép các đối tượng được
tiêm (injected) vào nhau một cách linh hoạt mà không cần phải tạo mới hoặc quản lý
chúng trực tiếp. Điều này làm cho ứng dụng trở nên dễ dàng quản lý và mở rộng hơn.
Mặc dù Spring đã giúp cho việc phát triển các ứng dụng Java trở nên dễ dàng hơn, nhưng
vẫn còn đó sự phức tạp và độ rộng lớn mà framework này mang lại. Việc học Spring
Framework từ đầu có thể là một hành trình dài và đầy thách thức đối với nhiều lập trình
viên. Đó cũng chính là lúc Spring Boot tỏa sáng với những cải tiến vượt trội.
Spring Boot ra đời với mục tiêu đơn giản hóa việc phát triển các ứng dụng Java bằng
cách giảm thiểu cấu hình thủ công và cung cấp các thiết lập mặc định hợp lý. Thay vì
phải cấu hình một cách phức tạp và chi tiết như trong Spring, Spring Boot giúp lập trình
viên khởi tạo và chạy ứng dụng một cách nhanh chóng chỉ với một vài dòng mã. Spring
Boot còn tích hợp sẵn các công cụ như máy chủ nhúng (embedded server), hỗ trợ cấu
hình bằng YAML, và tự động hóa nhiều tác vụ mà trước đây cần phải làm thủ công.
8. Blockchain
Blockchain là công nghệ chuỗi – khối, cho phép truyền tải dữ liệu một cách an toàn dựa
trên hệ thống mã hóa vô cùng phức tạp, tương tự như cuốn sổ cái kế toán của một công
ty, nơi mà tiền được giám sát chặt chẽ và ghi nhận mọi giao dịch trên mạng ngang hàng.
lOMoARcPSD| 59114765
Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước
đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch. Dữ liệu khi đã được mạng lưới
chấp nhận thì sẽ không có cách nào thay đổi được. Blockchain được thiết kế để chống lại
việc gian lận, thay đổi của dữ liệu.
Công nghệ Blockchain – sự kết hợp giữa 3 loại công nghệ:
- Mật mã học: để đảm bảo tính minh bạch, toàn vẹn và riêng tư thì công nghệ
Blockchain đã sử dụng public key và hàm hash function.
- Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là
server để lưu trữ bản sao ứng dụng.
- Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật
chơi đồng thuận (giao thức PoW, PoS,…) và được thúc đẩy bởi động lực kinh tế.
Blockchain có các đặc điểm nổi bật sau:
- Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý
thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệ
Blockchain biến mất khi không còn Internet trên toàn cầu.
- Bất biến: dữ liệu trong Blockchain không thể sửa (có thể sửa nhưng sẽ để lại dấu
vết) và sẽ lưu trữ mãi mãi.
- Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt
đối. - Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ
khác và có thể thống kê toàn bộ lịch sử trên địa chỉ đó.
- Hợp đồng thông minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code if-
thisthen-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba.
lOMoARcPSD| 59114765
9. Ethereum
Ethereum là nền tảng điện toán phân tán, mã nguồn mở dựa trên công nghệ chuỗi khối
(blockchain) có khả năng thực thi hợp đồng thông minh (smart contract) - tức là điều
khoản được ghi trong hợp đồng sẽ được thực thi một cách tự động khi các điều kiện
trước đó được thỏa mãn, không ai có thể can thiệp vào.
Ethereum là một dự án Blockchain Layer 1 cho phép nhiều các lập trình viên xây dựng
các ứng dụng phi tập trung (DApps) và các tổ chức tự trị phi tập trung (DAOs). Trong
đó:
Các ứng dụng phi tập trung (DApps - Decentralized Application) là các phần mềm
được triển khai độc lập, không nằm trên một máy chủ duy nhất mà được lưu trữ
một cách phân tán trên các kho lưu trữ phi tập trung và có thể được viết bằng bất
kỳ ngôn ngữ nào.
Các tổ chức tự trị phi tập trung (DAOs - Decentralized Autonomous
Organizations) là một tổ chức được vận hành bởi các thành viên dựa trên một bộ
quy tắc được mã hóa bằng code. Tất cả các thành viên đều có quyền biểu quyết
các quyết định quan trọng của DAOs.
10. Remix
Remix là một môi trường phát triển để biên dịch, triển khai, test và debug Dapp
Ethereum.
Một số điểm tính năng nổi bật của Remix:
Tích hợp mạng local hardhat, dễ dàng chạy và debug code ngay trên local.
Debug dễ dàng hơn: Với Remix, chúng ta có thể debug code Solidity dễ dàng hơn
khi có thể console.log ra các biến (Solidity vốn ko hỗ trợ console.log)
Hệ thống plugin: Giúp developer có thể bổ sung chức năng, tùy vào từng dự án cụ
thể
CHƯƠNG 3: PHÂN TÍCH ĐẶC TẢ YÊU CẦU
1. Danh sách người dùng
Bảng 3.1: Bảng danh sách người dùng
lOMoARcPSD| 59114765
#
Người dùng
Mô tả
1
Người xem phim
Người dùng có thể xem các bộ phim, đăng ký gói
VIP, Đánh giá bộ phim…
2
Admin
Admin có thể thêm, sửa, xóa các bộ phim hoặc xóa
tài khoản người dùng
2. Danh sách Usecase
2.1. Người xem phim
Bảng 3.2: Bảng chức năng người xem phim
#
Chức năng
1
Đăng ký
2
Đăng nhập
3
Xem phim
4
Đánh giá
5
Đăng ký gói VIP
6
Thêm phim vào yêu
thích
7
Tìm kiếm phim
8
Bình luận
9
Sửa thông tin cá
nhân
2.2. Admin
Bảng 3.3: Bảng chức năng admin
#
Chức năng
Mô tả
1
Đăng nhập
Cho phép admin đăng nhập vào website
2
Thêm bộ phim mới
Cho phép admin thêm 1 bộ phim mới.
lOMoARcPSD| 59114765
3
Thêm mới thể loại
phim
Cho phép admin thêm mới thể loại phim
4
Thêm mới đạo diễn /
diễn viên
Cho phép admin thêm mới thông tin đạo diễn / diễn
viên vào hệ thống
5
Thêm mới quốc gia
Cho phép admin thêm mới quốc gia xuất bản bộ
phim
6
Xóa phim
Cho phép admin xóa phim đã không còn phát hành
7
Sửa phim
Cho phép admin sửa thông tin của phim
8
Lấy danh sách phim
Cho phép admin có thể lấy danh sách tất cả phim có
trong hệ thống
9
Xem phim
Cho phép người dùng xem bộ phim mà họ chọn
10
Đánh giá
Cho phép người dùng đánh giá bộ phim
11
Thêm phim vào yêu
thích
Cho phép người dùng lưu trữ bộ phim vào danh mục
yêu thích
12
Tìm kiếm bộ phim
Cho phép người dùng tìm kiếm bộ phim họ mong
muốn
13
Bình luận
Cho phép người dùng bình luận về bộ phim
3. Đặc tả Usecase
3.1. Đặc tả Usecase của người xem phim
Bảng 3.4: Bảng đặc tả Usecase đăng ký
Mã Use-case
UC-1
Tên Use-case
Đăng ký
Tác nhân
Người xem phim
Mô tả tóm tắt
Người dùng ấn vào nút đăng ký
Điều kiện trước
Truy cập vào website.
Điều kiện sau
N/A
lOMoARcPSD| 59114765
Dòng sự kiện chính
Người dùng ấn nút đăng ký sẽ được đưa sang trang đăng ký
người dùng mới.
Dòng sự kiện phụ
Người dùng sẽ được chuyển sang trang xác thực OTP
cần nhập vào mã OTP đã được hệ thống gửi qua email xác
nhận của người dụng
Bảng 3.5: Bảng đặc tả Usecase đăng nhập
Mã Use-case
UC-2
Tên Use-case
Đăng nhập
Tác nhân
Người xem phim
Mô tả tóm tắt
Người dùng ấn vào nút đăng nhập
Điều kiện trước
Truy cập vào website.
Điều kiện sau
N/A
Dòng sự kiện chính
Người dùng ấn nút đăng nhập thì sẽ đăng nhập vô website.
Dòng sự kiện phụ
Bảng 3.6: Bảng đặc tả Usecase xem phim
Mã Use-case
UC-3
Tên Use-case
Xem phim
Tác nhân
Người xem phim
Mô tả tóm tắt
Người dùng ấn vào poster bộ phim
Điều kiện trước
Truy cập vào website.

Preview text:

lOMoAR cPSD| 59114765
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN ─ ─ ─ ─ ─ ─ ĐỒ ÁN
ĐỀ TÀI : TIỀN GIẢI THUẬT VÀ CÔNG NGHỆ BLOCKCHAIN GVHD : TS Huy Lê Họ và tên : Trịnh Hải Sơn Lớp : TH27.38 Mã sinh viên: 2722226637
Hà Nội, tháng 6 năm 2025 lOMoAR cPSD| 59114765 Mục Lục
CHƯƠNG 1 : GIỚI THIỆU...............................................................................................3
1. Đặt vấn đề..................................................................................................................3
2. Giải pháp....................................................................................................................3
3. Mục tiêu đề tài............................................................................................................3
3.1. Lý thuyết.............................................................................................................3
3.2. Mục tiêu..............................................................................................................4
3.3. Phạm vi...............................................................................................................4
3.4. Phương pháp nghiên cứu.....................................................................................4
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT..................................................................................5
1. HTML........................................................................................................................5
2. CSS............................................................................................................................6
3. Tailwind.....................................................................................................................6
4. Bootstrap....................................................................................................................7
5. ReactJS......................................................................................................................9
6. Java............................................................................................................................9
7. Spring boot...............................................................................................................11
8. Blockchain...............................................................................................................13
9. Ethereum..................................................................................................................14
10. Remix.....................................................................................................................14
CHƯƠNG 3: PHÂN TÍCH ĐẶC TẢ YÊU CẦU.............................................................15
1. Danh sách người dùng..............................................................................................15
2. Danh sách Usecase...................................................................................................15
2.1. Người xem phim...............................................................................................15
2.2. Admin................................................................................................................16
3. Đặc tả Usecase.........................................................................................................16
3.1. Đặc tả Usecase của người xem phim.................................................................16
3.2. Đặc tả Usecase của admin.................................................................................21
CHƯƠNG 4: THIẾT KẾ GIAO DIỆN............................................................................29
1. Đăng nhập................................................................................................................29
2. Đăng ký....................................................................................................................30 lOMoAR cPSD| 59114765
3. Xác thực OTP...........................................................................................................30
4. Nhận OTP qua mail................................................................................................31
5. Thanh toán VNPay...................................................................................................31
6. Trang chủ.................................................................................................................32
7. Chi tiết phim............................................................................................................33
8. Xem phim................................................................................................................34
9. Thông tin tài khoản..................................................................................................35
10. Đăng ký VIP...........................................................................................................36
11. Quản lý phim..........................................................................................................36
12. Danh sách phim......................................................................................................37
CHƯƠNG 5 : KẾT LUẬN...............................................................................................38
1. Tổng kết...................................................................................................................38
2. Khó khăn..................................................................................................................38
3. Hạn chế....................................................................................................................38
4. Hướng phát triển......................................................................................................38
TÀI LIỆU THAM KHẢO.............................................................................................39 lOMoAR cPSD| 59114765
CHƯƠNG 1 : GIỚI THIỆU 1. Đặt vấn đề
Trong thời đại công nghệ số phát triển mạnh mẽ, nhu cầu giải trí trực tuyến của người
dùng ngày càng gia tăng. Xem phim online đã trở thành một xu hướng phổ biến, đáp ứng
nhu cầu tiếp cận nội dung giải trí đa dạng, tiện lợi và linh hoạt về thời gian, địa điểm. Các
nền tảng như Netflix, YouTube, hay các dịch vụ streaming nội địa đã chứng minh tiềm
năng to lớn của thị trường này. Tuy nhiên, việc xây dựng một hệ thống xem phim online
hiệu quả, thân thiện với người dùng và đáp ứng các yêu cầu kỹ thuật như tốc độ tải, chất
lượng video, và khả năng tùy chỉnh trải nghiệm vẫn là một thách thức lớn.
Hiện nay, nhiều hệ thống xem phim trực tuyến tại Việt Nam còn gặp phải các vấn đề như
tốc độ tải chậm, nội dung hạn chế, hoặc giao diện người dùng chưa tối ưu. Bên cạnh đó,
các yêu cầu về tích hợp công nghệ mới như phát video tự động, quản lý dữ liệu lớn, và
đảm bảo tính bảo mật cho người dùng cũng đòi hỏi sự đầu tư nghiêm túc về mặt kỹ thuật
và chiến lược phát triển.
Xuất phát từ thực trạng trên, việc xây dựng một hệ thống xem phim online hiện đại, tích
hợp các công nghệ tiên tiến như xử lý video bất đồng bộ, giao diện thân thiện, và khả
năng cá nhân hóa trải nghiệm người dùng là cần thiết. Hệ thống này không chỉ đáp ứng
nhu cầu giải trí mà còn phải đảm bảo hiệu suất cao, khả năng mở rộng, và trải nghiệm
mượt mà trên nhiều nền tảng. Báo cáo này sẽ trình bày quá trình thiết kế, phát triển, và
triển khai hệ thống xem phim online, đồng thời đề xuất các giải pháp để khắc phục các
hạn chế hiện có và nâng cao chất lượng dịch vụ. 2. Giải pháp
Để giải quyết vấn đề trên, em quyết định chọn đề tài - xây dựng ứng dụng Blockchain hỗ
trợ xem phim online để giúp những người yêu thích phim tiếp cận các bộ phim yêu thích
dễ hơn và đồng thời giúp các nhà sản xuất phim tăng doanh thu hơn.
3. Mục tiêu đề tài 3.1. Lý thuyết
● Tìm hiểu và nghiên cứu Blockchain, React, Tailwind, Boostrap, Spring boot. lOMoAR cPSD| 59114765
● Nắm rõ các thao tác trên Visual studio code, Intellij IDE.
● Nghiên cứu các website xem phim online nổi tiếng trên thị trường như VieOn, Netflix,... 3.2. Mục tiêu
● Thiết kế giao diện bắt mắt, dễ sử dụng cho người dùng.
● Đảm bảo tính năng an toàn và bảo mật.
● Tối ưu hoá các chức năng của ứng dụng.
● Người dùng dễ dàng tìm kiếm được bộ phim yêu thích. 3.3. Phạm vi
● Phạm vi môi trường: triển khai trên website.
● Đối tượng sử dụng: Khán giả có nhu cầu xem phim. ● Phạm vi chức năng:
o Khán giả tìm kiếm các được các bộ phim yêu thích.
o Khán giả có thể đánh giá độ hấp dẫn của phim.
o Khán giả có thể tương tác với phim.
3.4. Phương pháp nghiên cứu
● Phương pháp làm việc: làm nhóm 2 người thông qua hình thức offline và online
qua google meeting dưới sự hướng dẫn của giảng viên.
● Phương pháp nghiên cứu:
o Khảo sát và nghiên cứu nhu cầu xem phim của mọi người o Nghiên cứu
các tài liệu và công nghệ liên quan đến đề tài như: Blockchain, React,.... lOMoAR cPSD| 59114765
o Tham khảo các website xem phim hiện có như: netflix, VieOn,... để tối ưu hoá website.
● Phương pháp công nghệ:
o Tìm hiểu các ngôn ngữ và framework liên quan đến đề tài.
o Xây dựng giao diện website để tương tác người dùng và nhận phản hồi, sửa chữa nếu cần thiết.
o Tìm hiểu các thư viện hỗ trợ cho dự án. lOMoAR cPSD| 59114765
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT 1. HTML
HTML là viết tắt của cụm từ Hypertext Markup Language (tạm dịch là Ngôn ngữ
đánh dấu siêu văn bản). HTML được sử dụng để tạo và cấu trúc các thành phần trong
trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles, blockquotes… và
HTML không phải là ngôn ngữ lập trình.
Một tài liệu HTML được hình thành bởi các phần tử HTML (HTML Elements) được quy
định bằng các cặp thẻ (tag và attributes). Các cặp thẻ này được bao bọc bởi một dấu
ngoặc ngọn (ví dụ ) và thường là sẽ được khai báo thành một cặp, bao gồm thẻ
mở và thẻ đóng. Ví dụ, chúng ta có thể tạo một đoạn văn bằng cách đặt văn bản vào trong
cặp tag mở và đóng văn bản

Ưu điểm:
a. Được sử dụng rộng rãi, có rất nhiều nguồn tài nguyên hỗ trợ và cộng đồng sử dụng lớn.
b. Học đơn giản và dễ hiểu.
c. Mã nguồn mở và hoàn toàn miễn phí.
d. Markup gọn gàng và đồng nhất.
e. Tiêu chuẩn thế giới được vận hành bởi World Wide Web Consortium (W3C). lOMoAR cPSD| 59114765
f. Dễ dàng tích hợp với các ngôn ngữ backend như PHP, Python… Khuyết điểm:
g. Được dùng chủ yếu cho web tĩnh. Đối với các tính năng động như update
hay realtime thời gian thực, bạn cần sử dụng JavaScript hoặc ngôn ngữ
backend bên thứ 3 như PHP.
h. Một số trình duyệt chậm hỗ trợ tính năng mới. 2. CSS
CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm
và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML). Nói ngắn
gọn hơn là ngôn ngữ tạo phong cách cho trang web
Mối tương quan giữa HTML và CSS rất mật thiết. HTML là ngôn ngữ markup (nền tảng
của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website), chúng là không thể tách rời. 3. Tailwind
Tailwind là một utility-first CSS framework giúp cho bạn xây dựng giao diện người dùng
một cách nhanh nhất. Tailwind CSS được phát hành lần đầu tiên vào tháng 10/2019 được
phát triển bởi Adam Wathan. Nếu so sánh với các nền tảng lập trình CSS khác như lOMoAR cPSD| 59114765
Bootstrap, Materialize, Foundation, Material Design… thì giữa chúng có điểm chung với nhau. Ưu điểm:
● Xây dựng giao diện chỉ cần khai báo class trên file html
● Chỉ xuất ra những file css chứa những class đã sử dụng trong giao diện.
● Dễ dàng thiết lập Responsive ngay trên file html
● Hỗ trợ tương tác hover, focus… ngay trên class html
● Tối ưu những cấu trúc html css có tính lặp lại
● Định nghĩa thêm class mới được phối hợp bởi các class có sẵn trong tailwind
● Hỗ trợ chế độ tối Dark Mode
● Dễ dàng mở rộng, chỉnh sửa và biến đổi
● Tăng tốc độ code với Extension thông minh trên VS Code. lOMoAR cPSD| 59114765 4. Bootstrap Bootstrap là gì?
Bootstrap là gì? Hiểu một cách đơn giản, Bootstrap một Framework bao gồm 3 thành
phần cơ bản, đó là: HTML, CSS và JavaScript. Framework này được sử dụng để phát
triển trang web chuẩn theo Responsive. Sử dụng Bootstrap giúp việc thiết kế web tiết
kiệm nhiều thời gian và đơn giản hơn.
Bootstrap là một bộ sưu tập hoàn toàn miễn phí. Bộ sưu tập này bao gồm các mã nguồn
mở và các công cụ giúp bạn có thể tạo thành một website với đầy đủ các thành phần.
Bootstrap sẽ quy định sẵn các thuộc tính về kích thích, màu sắc và các chiều dài, chiều
rộng của các vùng website…. Thông qua đó, designer có thể dễ dàng sáng tạo ra các
website theo mong muốn nhưng vẫn đảm bảo tính thẩm mỹ. Đồng thời, sử dụng
Bootstrap sẽ giúp tiết kiệm rất nhiều thời gian.
Lịch sử hình thành của Bootstrap
Sau khi đã tìm hiểu Bootstrap là gì, chúng ta chắc chắn không thể bỏ qua lịch sử hình
thành của Framework này. Bootstrap là Framework được nghiên cứu và phát triển bởi
Mark Otto và Jacob Thornton. Đây là 2 kỹ sư tại Twitter. •
Bootstrap ra mắt lần đầu tiên vào ngày 19/8/2011 trên mạng xã hội GitHub. Ban
đầu, Bootstrap được thiết kế như một mã nguồn mở và có tên gọi là Twitter Blueprint. lOMoAR cPSD| 59114765 •
Ngày 31/1/2012, các nhà sáng lập phát hành phiên bản thứ 2 của Bootstrap. So với
phiên bản cũ, phiên bản số 2 được bổ sung thêm 12 cột giúp người dùng có thể dễ
dàng tùy chỉnh và thiết kế với nhiều kích thước màn hình khác nhau. •
Đến ngày 19/8/2013, phiên bản thứ 3 của Bootstrap được ra đời. Đây là phiên bản
đầu tiên có giao diện dành cho điện thoại thông minh. Chính nhờ sự thay đổi này
đã giúp Bootstrap tạo nên sự đột phá và đứng thứ 1 trên Bảng xếp hạng các dự án của GitHub. •
Vào tháng 10/2014, các nhà phát triển tiếp tục nâng cấp và công bố phiên bản thứ 4 của Bootstrap. •
Tháng 8/2015, Bootstrap 4 giới thiệu phiên bản Alpha đầu tiên. 5. ReactJS
React là một opensource được phát triển bởi Facebook, ra mắt vào năm 2013, bản thân
nó là một thư viện Javascript được dùng để để xây dựng các tương tác với các thành phần
trên website. Một trong những điểm nổi bật nhất của ReactJS đó là việc render dữ liệu
không chỉ thực hiện được trên tầng Server mà còn ở dưới Client nữa.
ReactJS là một thư viện JavaScript chuyên giúp các nhà phát triển xây dựng giao diện
người dùng hay UI. Trong lập trình ứng dụng front-end, lập trình viên thường sẽ phải làm
việc chính trên 2 thành phần sau: UI và xử lý tương tác của người dùng. UI là tập hợp
những thành phần mà bạn nhìn thấy được trên bất kỳ một ứng dụng nào, ví dụ có thể kể
đến bao gồm: menu, thanh tìm kiếm, những nút nhấn, card,… Giả sử bạn đang lập trình
một website thương mại điện tử, sau khi người dùng chọn được sản phẩm ưng ý rồi và
nhấn vào nút “Thêm vào giỏ hàng”, thì việc tiếp theo mà bạn phải làm đó là thêm sản
phẩm được chọn vào giỏ hàng và hiển thị lại sản phẩm đó khi user vào xem => xử lý tương tác. lOMoAR cPSD| 59114765
Trước khi có ReactJS, lập trình viên thường gặp rất nhiều khó khăn trong việc sử dụng
“vanilla JavaScript”(JavaScript thuần) và JQuery để xây dựng UI. Điều đó đồng nghĩa
với việc quá trình phát triển ứng dụng sẽ lâu hơn và xuất hiện nhiều bug, rủi ro hơn. Vì
vậy vào năm 2011, Jordan Walke – một nhân viên của Facebook đã khởi tạo ReactJS với
mục đích chính là cải thiện quá trình phát triển UI. 6. Java
Java là một trong những ngôn ngữ lập trình hướng đối tượng. Ngôn ngữ Java được sử
dụng phổ biến trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động.
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem năm
1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm gia
dụng, và có tên là Oak. Java được chính thức phát hành năm 1994, đến năm 2010 được
Oracle mua lại từ Sun MicroSystem.
Java được thiết kế với tiêu chí “Write Once, Run Anywhere” (viết một lần, chạy mọi
nơi), tức là mã nguồn Java sau khi biên dịch có thể chạy trên bất kỳ nền tảng nào hỗ trợ
Java Virtual Machine (JVM), mà không cần thay đổi lại mã. Điều này giúp Java trở thành
một ngôn ngữ lập trình đa nền tảng và rất phổ biến.
Đặc điểm của ngôn ngữ lập trình Java là gì? lOMoAR cPSD| 59114765
• Tương tự C++, hướng đối tượng hoàn toàn
• Độc lập phần cứng và hệ điều hành • Ngôn ngữ thông dịch
• Ưu điểm : Phương pháp này giúp các đoạn mã viết bằng Java có thể chạy được
trên nhiều nền tảng khác nhau. Với điều kiện là JVM có hỗ trợ chạy trên nền tảng này.
• Nhược điểm : Cũng như các ngôn ngữ thông dịch khác, quá trình chạy các đoạn
mã Java là chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên vẫn ở trong một mức chấp nhận được). lOMoAR cPSD| 59114765
• Cơ chế thu gom rác tự động • Đa luồng
• Tính an toàn và bảo mật 7. Spring boot
Spring Boot được xây dựng dựa trên nền của Spring Framework, phát triển bởi ngôn ngữ
Java. Nó là một phiên bản có tính tự động hoá cao hơn và đơn giản hơn của Spring.
Spring Boot khiến cho việc tạo và khởi chạy ứng dụng chỉ diễn ra trong vòng vài phút.
Lịch sử phát triển của Spring Boot
Spring Boot được phát triển bởi Pivotal Software, với phiên bản đầu tiên (Spring Boot
1.0) được phát hành vào tháng 4 năm 2014. Mục tiêu ban đầu của Spring Boot là giải
quyết những hạn chế và phức tạp trong việc cấu hình Spring Framework truyền thống.
Spring Framework, mặc dù rất mạnh mẽ và linh hoạt, nhưng yêu cầu nhiều cấu hình thủ
công và có thể trở nên cồng kềnh khi xây dựng các ứng dụng phức tạp.
Trước khi Spring Boot ra đời, việc cấu hình một ứng dụng Spring thường đòi hỏi nhiều
file XML hoặc các class Java cấu hình, gây khó khăn cho việc bảo trì và phát triển.
Spring Boot được giới thiệu như một cách tiếp cận đơn giản và hiệu quả hơn, với các cấu
hình tự động và các công cụ hỗ trợ như Spring Initializr, giúp nhà phát triển bắt đầu dự
án mới nhanh chóng chỉ với một vài cú nhấp chuột.
Từ khi ra mắt, Spring Boot đã nhanh chóng trở thành một trong những framework phổ
biến nhất trong cộng đồng Java, được sử dụng rộng rãi trong nhiều loại ứng dụng khác
nhau, từ các ứng dụng web đơn giản đến các hệ thống microservices phức tạp. Sự phát
triển và cải tiến liên tục của Spring Boot đã giúp nó trở thành một phần không thể
thiếu trong hệ sinh thái Spring, giúp các nhà phát triển xây dựng các ứng dụng hiện đại
một cách dễ dàng và nhanh chóng hơn. Sự khác biệt giữa Spring và Spring Boot
Nếu bạn đã từng phát triển ứng dụng Java, chắc hẳn bạn đã trải qua sự phức tạp và tốn
công sức khi thực hiện các tác vụ với cơ sở dữ liệu. Đó thực sự là một quá trình không
mấy dễ dàng! Tuy nhiên, sự ra đời của Spring Boot đã giúp đơn giản hóa các tác vụ phức
tạp liên quan đến cơ sở dữ liệu. lOMoAR cPSD| 59114765
Spring là một tập hợp các framework con, bao gồm nhiều module khác nhau như Spring
MVC, Spring JDBC, Spring AOP, Spring ORM và Spring Test. Tính năng cốt lõi của
Spring Framework chính là Dependency Injection (DI), cho phép các đối tượng được
tiêm (injected) vào nhau một cách linh hoạt mà không cần phải tạo mới hoặc quản lý
chúng trực tiếp. Điều này làm cho ứng dụng trở nên dễ dàng quản lý và mở rộng hơn.
Mặc dù Spring đã giúp cho việc phát triển các ứng dụng Java trở nên dễ dàng hơn, nhưng
vẫn còn đó sự phức tạp và độ rộng lớn mà framework này mang lại. Việc học Spring
Framework từ đầu có thể là một hành trình dài và đầy thách thức đối với nhiều lập trình
viên. Đó cũng chính là lúc Spring Boot tỏa sáng với những cải tiến vượt trội.
Spring Boot ra đời với mục tiêu đơn giản hóa việc phát triển các ứng dụng Java bằng
cách giảm thiểu cấu hình thủ công và cung cấp các thiết lập mặc định hợp lý. Thay vì
phải cấu hình một cách phức tạp và chi tiết như trong Spring, Spring Boot giúp lập trình
viên khởi tạo và chạy ứng dụng một cách nhanh chóng chỉ với một vài dòng mã. Spring
Boot còn tích hợp sẵn các công cụ như máy chủ nhúng (embedded server), hỗ trợ cấu
hình bằng YAML, và tự động hóa nhiều tác vụ mà trước đây cần phải làm thủ công. 8. Blockchain
Blockchain là công nghệ chuỗi – khối, cho phép truyền tải dữ liệu một cách an toàn dựa
trên hệ thống mã hóa vô cùng phức tạp, tương tự như cuốn sổ cái kế toán của một công
ty, nơi mà tiền được giám sát chặt chẽ và ghi nhận mọi giao dịch trên mạng ngang hàng. lOMoAR cPSD| 59114765
Mỗi khối (block) đều chứa thông tin về thời gian khởi tạo và được liên kết với khối trước
đó, kèm theo đó là một mã thời gian và dữ liệu giao dịch. Dữ liệu khi đã được mạng lưới
chấp nhận thì sẽ không có cách nào thay đổi được. Blockchain được thiết kế để chống lại
việc gian lận, thay đổi của dữ liệu.

Công nghệ Blockchain – sự kết hợp giữa 3 loại công nghệ: -
Mật mã học: để đảm bảo tính minh bạch, toàn vẹn và riêng tư thì công nghệ
Blockchain đã sử dụng public key và hàm hash function. -
Mạng ngang hàng: Mỗi một nút trong mạng được xem như một client và cũng là
server để lưu trữ bản sao ứng dụng. -
Lý thuyết trò chơi: Tất cả các nút tham gia vào hệ thống đều phải tuân thủ luật
chơi đồng thuận (giao thức PoW, PoS,…) và được thúc đẩy bởi động lực kinh tế.
Blockchain có các đặc điểm nổi bật sau: -
Không thể làm giả, không thể phá hủy các chuỗi Blockchain: theo như lý
thuyết thì chỉ có máy tính lượng tử mới có thể giải mã Blockchain và công nghệ
Blockchain biến mất khi không còn Internet trên toàn cầu. -
Bất biến: dữ liệu trong Blockchain không thể sửa (có thể sửa nhưng sẽ để lại dấu
vết) và sẽ lưu trữ mãi mãi. -
Bảo mật: Các thông tin, dữ liệu trong Blockchain được phân tán và an toàn tuyệt
đối. - Minh bạch: Ai cũng có thể theo dõi dữ liệu Blockchain đi từ địa chỉ này tới địa chỉ
khác và có thể thống kê toàn bộ lịch sử trên địa chỉ đó. -
Hợp đồng thông minh: là hợp đồng kỹ thuật số được nhúng vào đoạn code if-
thisthen-that (IFTTT), cho phép chúng tự thực thi mà không cần bên thứ ba. lOMoAR cPSD| 59114765 9. Ethereum
Ethereum là nền tảng điện toán phân tán, mã nguồn mở dựa trên công nghệ chuỗi khối
(blockchain) có khả năng thực thi hợp đồng thông minh (smart contract) - tức là điều
khoản được ghi trong hợp đồng sẽ được thực thi một cách tự động khi các điều kiện
trước đó được thỏa mãn, không ai có thể can thiệp vào.
Ethereum là một dự án Blockchain Layer 1 cho phép nhiều các lập trình viên xây dựng
các ứng dụng phi tập trung (DApps) và các tổ chức tự trị phi tập trung (DAOs). Trong đó:
● Các ứng dụng phi tập trung (DApps - Decentralized Application) là các phần mềm
được triển khai độc lập, không nằm trên một máy chủ duy nhất mà được lưu trữ
một cách phân tán trên các kho lưu trữ phi tập trung và có thể được viết bằng bất kỳ ngôn ngữ nào.
● Các tổ chức tự trị phi tập trung (DAOs - Decentralized Autonomous
Organizations) là một tổ chức được vận hành bởi các thành viên dựa trên một bộ
quy tắc được mã hóa bằng code. Tất cả các thành viên đều có quyền biểu quyết
các quyết định quan trọng của DAOs. 10. Remix
Remix là một môi trường phát triển để biên dịch, triển khai, test và debug Dapp Ethereum.
Một số điểm tính năng nổi bật của Remix:
● Tích hợp mạng local hardhat, dễ dàng chạy và debug code ngay trên local.
● Debug dễ dàng hơn: Với Remix, chúng ta có thể debug code Solidity dễ dàng hơn
khi có thể console.log ra các biến (Solidity vốn ko hỗ trợ console.log)
● Hệ thống plugin: Giúp developer có thể bổ sung chức năng, tùy vào từng dự án cụ thể
CHƯƠNG 3: PHÂN TÍCH ĐẶC TẢ YÊU CẦU
1. Danh sách người dùng
Bảng 3.1: Bảng danh sách người dùng lOMoAR cPSD| 59114765 # Người dùng Mô tả 1 Người xem phim
Người dùng có thể xem các bộ phim, đăng ký gói VIP, Đánh giá bộ phim… 2 Admin
Admin có thể thêm, sửa, xóa các bộ phim hoặc xóa
tài khoản người dùng… 2. Danh sách Usecase 2.1. Người xem phim
Bảng 3.2: Bảng chức năng người xem phim # Chức năng Mô tả 1 Đăng ký
Dành cho người mới, cho phép tự đăng ký tài khoản 2 Đăng nhập
Cho phép người dùng đã có tài khoản đăng nhập vào website 3 Xem phim
Cho phép người dùng xem bộ phim mà họ chọn 4 Đánh giá
Cho phép người dùng đánh giá bộ phim 5 Đăng ký gói VIP
Cho phép người dùng đăng ký gói VIP để có thể xem
được nhiều bộ phim hơn 6
Thêm phim vào yêu Cho phép người dùng lưu trữ bộ phim vào danh mục thích yêu thích 7 Tìm kiếm phim
Cho phép người dùng tìm kiếm bộ phim họ mong muốn 8 Bình luận
Cho phép người dùng bình luận về bộ phim 9 Sửa thông tin cá
Cho phép người dùng chỉnh sửa thông tin cá nhân tài nhân khoản của họ 2.2. Admin
Bảng 3.3: Bảng chức năng admin # Chức năng Mô tả 1 Đăng nhập
Cho phép admin đăng nhập vào website 2
Thêm bộ phim mới Cho phép admin thêm 1 bộ phim mới. lOMoAR cPSD| 59114765 3 Thêm mới thể loại
Cho phép admin thêm mới thể loại phim phim 4
Thêm mới đạo diễn / Cho phép admin thêm mới thông tin đạo diễn / diễn diễn viên viên vào hệ thống 5
Thêm mới quốc gia Cho phép admin thêm mới quốc gia xuất bản bộ phim 6 Xóa phim
Cho phép admin xóa phim đã không còn phát hành 7 Sửa phim
Cho phép admin sửa thông tin của phim 8
Lấy danh sách phim Cho phép admin có thể lấy danh sách tất cả phim có trong hệ thống 9 Xem phim
Cho phép người dùng xem bộ phim mà họ chọn 10 Đánh giá
Cho phép người dùng đánh giá bộ phim 11
Thêm phim vào yêu Cho phép người dùng lưu trữ bộ phim vào danh mục thích yêu thích 12
Tìm kiếm bộ phim Cho phép người dùng tìm kiếm bộ phim họ mong muốn 13 Bình luận
Cho phép người dùng bình luận về bộ phim 3. Đặc tả Usecase
3.1. Đặc tả Usecase của người xem phim
Bảng 3.4: Bảng đặc tả Usecase đăng ký Mã Use-case UC-1 Tên Use-case Đăng ký Tác nhân Người xem phim Mô tả tóm tắt
Người dùng ấn vào nút đăng ký Điều kiện trước Truy cập vào website. Điều kiện sau N/A lOMoAR cPSD| 59114765
Dòng sự kiện chính Người dùng ấn nút đăng ký sẽ được đưa sang trang đăng ký người dùng mới. Dòng sự kiện phụ
Người dùng sẽ được chuyển sang trang xác thực OTP và
cần nhập vào mã OTP đã được hệ thống gửi qua email xác nhận của người dụng
Bảng 3.5: Bảng đặc tả Usecase đăng nhập Mã Use-case UC-2 Tên Use-case Đăng nhập Tác nhân Người xem phim Mô tả tóm tắt
Người dùng ấn vào nút đăng nhập Điều kiện trước Truy cập vào website. Điều kiện sau N/A
Dòng sự kiện chính Người dùng ấn nút đăng nhập thì sẽ đăng nhập vô website. Dòng sự kiện phụ
Bảng 3.6: Bảng đặc tả Usecase xem phim Mã Use-case UC-3 Tên Use-case Xem phim Tác nhân Người xem phim Mô tả tóm tắt
Người dùng ấn vào poster bộ phim Điều kiện trước Truy cập vào website.