Yêu cầu đặt ra Một số yêu cầu nhóm đặt ra khi phát triển ứng dụng: • Tính tiện dụng: ứng dụng phải thân thiện với người dùng, dễ dàng tiếp cận với mọilứa tuổi • Tính đúng đắn: thông tin
Trang 1ĐẠ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ÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI:
TÌM HIỂU WEB3 VÀ ỨNG DỤNG MINH HỌA
Giảng viên hướng dẫn: Ths Nguyễn Tấn Toàn Nhóm thực hiện: 19521902 – Trần Hiếu Nghĩa
19521931 – Lê Anh Nhân
Trang 2MỤC LỤC
Trang 32.6.4 Ưu điểm và nhược điểm 17
2.7.4 Lợi ích đối với Developers & Team dự án 18
Trang 57.3 Kết quả đạt được và hướng phát triển 53
Trang 6LỜI CẢM ƠN
Trong quá trình học tập, nghiên cứu và phát triển đề tài chúng em đã nhận
được sự giúp đỡ, chỉ bảo nhiệt tình của thầy để hoàn thành đồ án này
Nhóm em xin chân thành gửi lời cảm ơn đến thầy Nguyễn Tấn Toàn – Giảng viên Khoa Công Nghệ Phần Mềm, Trường Đại học Công Nghệ Thông Tin, Đại học Quốc gia Thành phố Hồ Chí Minh – giảng viên dạy hướng dẫn môn Đồ án
2, đã tận tình hướng dẫn và giúp đỡ về kiến thức, phương pháp cho chúng em trong suốt quá trình thực hiện và hoàn thành đồ án
Hi vọng với sự chỉ bảo và góp ý từ thầy, nhóm đề tài có thể tiếp tục phát triển
để ứng dụng ngày càng được mở rộng và phục vụ được tốt hơn cho người dùng
Mặc dù đã có nhiều cố gắng trong suốt quá trình thực hiện đề tài, song không thể tránh khỏi những hạn chế, thiếu sót Chúng em mong rằng sẽ nhận được những đóng góp và nhận xét chân thành từ thầy, các bạn sinh viên và người dùng trong quá trình sử dụng phần mềm để phần mềm ngày càng hoàn thiện hơn nữa Mọi đóng góp xin vui lòng gửi về email: 19521902@gm.uit.edu.vn hoặc 19521931@gm.uit.edu.vn
Mỗi ý kiến đóng góp của thầy và các bạn sẽ là một nguồn động lực to lớn đối với chúng em để chúng em có thể cải thiện phần mềm tốt hơn và xây dựng những phần mềm hữu ích đối với người dùng hơn nữa
Chúng em xin trân trọng cảm ơn
Thành phố Hồ Chí Minh, ngày 17 tháng 12 năm 2022
Trang 7Chương 1 - TỔNG QUAN ĐỀ TÀI
1.1 Mô tả bài toán
- Với khả năng chia sẻ thông tin dữ liệu minh bạch theo thời gian thực, tiết kiệm không gian lưu trữ và bảo mật cao, Blockchain là một trong những xu hướng công nghệ đột phá, có khả năng ứng dụng rộng rãi ở nhiều ngành nghề, lĩnh vực Công nghệ này cũng được đánh giá là mảnh đất màu mỡ cho hệ sinh thái khởi nghiệp của Việt Nam
- Ngày nay, với sự bùng nổ trong lĩnh vực Blockchain, nổi bật hơn hết là lĩnh vực NFT và GameFi đánh dấu một bước phát triển mới so với lĩnh vực game truyền thống Ở lĩnh vực game truyền thống, để giao dịch các vật phẩm trong game với nhau, người chơi bắt buộc phải gặp nhau để giao dịch, hoặc phải nhờ đến một bên trung gian thứ ba đủ uy tín để giao dịch Chính vì vậy, NFT được ra đời để giải quyết bài toán đó Với công nghệ Blockchain, người chơi có thể giao dịch trực tiếp thông qua NFT Marketplace - một thị trường cho phép mọi người có thể giao dịch các NFT với nhau Và sau khi giao dịch, game sẽ có cơ chế để biết được Blockchain đã dịch chuyển NFT, và sẽ tự động cập nhật vật phẩm từ người dùng này sang người dùng kia
- Nhận thấy được vấn đề đó, website NFT Marketplace được ra đời nhằm đáp ứng được nhu cầu trao đổi, mua bán NFT tiện lợi, minh bạch
1.2 Yêu cầu đặt ra
Một số yêu cầu nhóm đặt ra khi phát triển ứng dụng:
• Tính tiện dụng: ứng dụng phải thân thiện với người dùng, dễ dàng tiếp cận với mọilứa tuổi
• Tính đúng đắn: thông tin đưa lên phải được xác thực kĩ về độ chính xác, ứng dụng chạy không lỗi
• Tính thích nghi: ứng dụng chạy được trên nhiều nền tảng trình duyệt web khác nhau
• Tính tiến hoá: ứng dụng phải dễ dàng phát triển thêm tính năng mà không ảnh hưởng đến các tính năng đã phát triển trước đó
• Tính bảo trì: ứng dụng có thể thay đổi một số chức năng hoặc cập nhật thêm thôngtin một cách tiện lợi nhất
Trang 8• Tính tương tác: tạo ra được một môi trường tương tác tốt giữa hệ thống và người dùng
Chương 2 - TỔNG QUAN BLOCKCHAIN
2.1 Giới thiệu chung
- Blockchain là cuốn sổ cái kỹ thuật số chống giả mạo 1 được triển khai theo mô hình phân tán (tức là không có kho lưu trữ trung tâm) và thường không cần một đơn vị đáng tin cậy chứng thực (như ngân hàng, công ty, chính phủ) Ở mức độ cơ bản, nó cho phép một cộng đồng người dùng ghi các giao dịch vào cuốn sổ cái chia sẻ, mà trong đó, với sự điều hành bình thường của mạng Blockchain thì không giao dịch nào có thể bị thay đổi sau khi xuất bản Vào năm 2008, ý tưởng Blockchain được kết hợp với một vài công nghệ và khái niệm điện toán khác để tạo ra đồng tiền mã hóa hiện đại: tiền điện tử được bảo vệ bởi các cơ chế mật mã học thay vì nhờ vào bên chứng thực hoặc kho lưu trữ trung tâm
Hình 2.1.Blockchain
- Công nghệ này được biết đến rộng rãi vào năm 2009 với sự ra đời của mạng Bitcoin – một trong những đồng tiền mã hóa hiện đại đầu tiên Ở hệ thống Bitcoin và các hệ thống tương tự, việc chuyển thông tin kỹ thuật số với đại diện là tiền điện tử diễn ra trong một
hệ thống phân tán Người dùng Bitcoin có thể ký chữ ký số và chuyển tài sản của mình
Trang 9sang người khác và Bitcoin ghi lại các giao dịch này công khai, cho phép những người tham gia mạng xác minh độc lập tính hợp lệ của giao dịch Công nghệ Blockchain do đó được xem là giải pháp chung cho các đồng tiền mã hóa sau này.
- Blockchain có thể được định nghĩa thông thường như sau: “Blockchain là cuốn sổ cái
kỹ thuật số của các giao dịch được ký bằng mật mã Mỗi khối được liên kết mã hóa với khối trước nó sau khi được xác thực thì trải qua một quyết định đồng thuận Khi một khốimới thêm vào, khối cũ hơn trở nên khó bị chỉnh sửa Cuốn sổ cái sau đó được sao chép đến toàn bộ mạng và bất kỳ xung đột nào được giải quyết tự động thông qua các quy tắc được thiết lập.”
2.2 Lịch sử ra đời
- Ý tưởng chính đứng sau công nghệ Blockchain này nổi lên vào cuối những năm
1980, đầu năm 1990 Vào năm 1989, Leslie Lamport đã phát triển giao thức Paxos
Năm 1990, ông có bài báo The Part-Time Parliament1 được gửi đến ACM
Transaction on Computer Systems; bài báo được phát hành cuối cùng vào một số của năm 1998 Bài báo miêu tả một mô hình đồng thuận giúp đạt được thỏa thuận trên một kết quả của mạng lưới máy tính – nơi mà các máy tính hoặc bản thân mạng có thể không
ổn định Năm 1991, một chuỗi thông tin được ký đã được dùng như một cuốn sổ cái điện
tử cho các tài liệu có chữ ký kỹ thuật số theo cách mà không dễ dàng để tài liệu được ký nào bị thay đổi Các khái niệm này được kết hợp và áp dụng vào tiền điện tử năm 2008 vàđược miêu tả trong bài báo – Bitcoin: A Peer to Peer Electronic Cash System – được xuấtbản giả bởi Satoshi Nakamoto , và sau đó năm 2009 với sự ra đời của tiền điện tử Bitcoin
Việc sử dụng Blockchain cho phép Bitcoin được triển khai theo kiểu phân tán, nhưvậy không có người dùng đơn lẻ điều khiển được tiền điện tử và không có khuyết điểm tồn tại đơn lẻ Lợi ích chính là cho phép các giao dịch trực triếp giữa những người dùng
mà không cần bên thứ ba đáng tin cậy Nó cũng cho phép phát hành tiền mới theo cách được định nghĩa đến những người quản lý việc xuất bản các khối mới và duy trì bản sao của sổ cái, thì những đó được gọi là các miner ở Bitcoin Bằng cách sử dụng cơ chế đồng thuận để duy trì và một cơ chế tự kiểm soát được tạo ra để đảm bảo rằng chỉ có các giao dịch và các khối hợp lệ mới được thêm vào Blockchain
2.3 Phân loại Blockchain
Mạng Blockchain có thể phân loại dựa trên mô hình quyền hạn của nó mà xác định ai có thể duy trì chúng (chẳng hạn xuất bản các khối) Nếu bất kỳ ai có thể xuất bản một khối mới, gọi là Blockchain mở Nếu chỉ có những người dùng cụ thể xuất bản các
Trang 10khối, gọi là Blockchain đóng Hiểu đơn giản, một mạng Blockchain đóng giống như một mạng Intranet của tổ chức, trong khi đó Blockchain mở lại giống như mạng Internet côngcộng vậy.
2.3.1 Blockchain mở
Mạng Blockchain mở là nền tảng sổ cái phi tập trung mở rộng đến bất kì ai muốn xuất bản các khối mà không cần quyền chứng thực nào cả Nền tảng Blockchain mở thường là phần mềm mã nguồn mở, có sẵn miễn phí cho mọi người muốn tải xuống
Bởi vì bất kỳ ai đều có quyền xuất bản các khối, nên kết quả là bất kỳ ai cũng có thể đọc Blockchain cũng như là phát hành các giao dịch trên Blockchain (các giao dịch nằm trong các khối được xuất bản) Người dùng có ý đồ xấu có thể xuất bản các khối nhằm đánh sập hệ thống Để ngăn chặn điều này, mạng Blockchain mở thường triển khai các thỏa thuận đa bên hay còn gọi là hệ thống “đồng thuận”, yêu cầu người dùng chi tiêu hoặc duy trì tài nguyên khi muốn xuất bản các khối Đồng thời, hệ thống “đồng thuận” thường thúc đẩy các hành vi đúng đắn thông qua việc trao thưởng cho các nhà xuất bản các khối tuân thủ giao thức với loại tiền điện tử tương ứng
Mạng Blockchain đóng và Blockchain mở có thể giống nhau ở các đặc điểm: khả năng truy xuất tài sản kỹ thuật số trên Blockchain; hệ thống phân tán; phục hồi và lưu trữ dữ liệu dự phòng; các mô hình đồng thuận; có hoặc không có chi tiêu và duy trì tài nguyên Trong mạng Blockchain đóng, có sự phân loại mức
độ tin tưởng và thu hồi chứng thực nếu làm sai
Mạng Blockchain đóng có lẽ được sử dụng bởi tổ chức muốn kiểm soát chặt chẽ hơn và bảo vệ Blockchain của họ Tuy nhiên, nếu một thực thể kiểm soát những ai có thể xuất bản các khối, thì những người dùng sẽ cần phải tin tưởng vào thực thể đó Một mạng
Trang 11Blockchain đóng của tổ chức này muốn làm việc với tổ chức khác nhưng có thể không hoàn toàn tin tưởng lẫn nhau Họ có thể thành lập mạng và mời các đối tác kinh doanh ghi lại các giao dịch trên một cuốn sổ cái phân tán chia sẻ Các tổ chức này có thể xác định mô hình đồng thuận sẽ được dùng dựa trên mức độ tin tưởng lẫn nhau Bên cạnh đó,mạng cung cấp sự minh bạch và hiểu biết mà có thể giúp thông báo các quyết định kinh doanh tốt hơn và buộc những bên làm sai chịu trách nhiệm
Một vài mạng Blockchain đóng hỗ trợ khả năng tiết lộ giao dịch có chọn lọc dựa trên danh tính của người dùng Với tính năng này, một vài mức độ riêng tư của giao dịch
có thể được áp dụng Ví dụ, mọi người có thể biết được có một giao dịch giữa hai người dùng được diễn ra, nhưng nội dung thật sự của giao dịch thì chỉ có những người liên quanmới có thể tiếp cận
2.4 Kiến trúc Blockchain
2.4.1 Hàm băm mật mã
Một thành phần quan trọng của công nghệ Blockchain là sử dụng các hàm băm mật mã cho các hoạt động Băm là một phương pháp áp dụng hàm băm mật mã vào dữ liệu nhằm tạo ra một đầu ra tương ứng duy nhất (được gọi là tóm tắt thông điệp –
message digest, hoặc tóm tắt – digest) từ một đầu vào của bất kỳ kích thước (chẳng hạn một tập tin, văn bản hoặc hình ảnh) Nó cho phép các cá nhân chứng minh không có sự thay đổi dữ liệu, kể cả khi chỉ là một sự thay đổi nhỏ của đầu vào (chẳng hạn thay đổi một bit) sẽ dẫn đến kết quả hoàn toàn khác
Cryptographic nonce
Số mật mã được dùng một lần (Cryptographic nonce) là một số tùy ý và chỉ được sử dụngmột lần Nó kết hợp với dữ liệu để tạo ra một tóm tắt mã băm khác nhau cho mỗi nonce: hash (data + nonce) = digest
Thay đổi giá trị nonce cung cấp một cơ chế thu về các giá trị tóm tắt khác nhau trong khi giữ được cùng một dữ liệu Kỹ thuật này được triển khai trong mô hình đồng thuận bằng chứng công việc (xem phần tiếp theo)
2.4.2 Giao dịch
Một giao dịch đại diện một sự tương tác giữa các bên tham gia Với các đồng tiền mã hóa, một giao dịch đại diện cho việc chuyển tiền giữa những người dùng Blockchain Đối
Trang 12với môi trường kinh doanh, một giao dịch có thể là một cách ghi lại các hoạt động xảy ra trên tài sản kỹ thuật số hoặc vật lý
Mỗi một khối trong Blockchain có thể không chứa hoặc chứa nhiều giao dịch Trong một vài triển khai Blockchain, việc cung cấp liên tục các khối mới (kể cả với giao dịch không)
là quan trọng cho việc duy trì bảo mật mạng Blockchain: nó ngăn chặn những người dùngxấu xa khỏi “bắt được” và tạo một chuỗi khác thay thế 12 Một người dùng gửi thông tin đến mạng Blockchain Thông tin được gửi có thể bao gồm địa chỉ người gửi (hoặc số nhận dạng có liên quan khác), khóa công khai của người gửi, chữ ký số, đầu vào và đầu
ra giao dịch
2.4.3 Mật mã khóa bất đối xứng
Công nghệ Blockchain sử dụng mật mã khóa bất đối xứng1 (hay còn gọi là mật
mã khóa công khai) Mật mã khóa bất đối xứng sử dụng một cặp khóa: một khóa chung
và một khóa riêng có quan hệ toán học với nhau Khóa công khai được phổ biến công khai mà không làm giảm tính bảo mật của quy trình nhưng khóa riêng phải được giữ bí mật nếu muốn mã hóa bảo vệ dữ liệu Khóa riêng không thể xác định hiệu quả dựa trên tri thức về khóa công khai Một khóa có nhiệm vụ là mã hóa thì khóa còn lại sẽ giải mã
Mật mã khóa công khai cho phép một mối quan hệ tin tưởng giữa những người dùng không quen biết tin một ai đó, bằng cách cung cấp một cơ chế để xác minh tính ràng buộc và tính xác thực của giao dịch trong khi vẫn cho phép các giao dịch được công khai Khóa riêng sẽ được dùng để mã hóa giao dịch và những ai có khóa công khai thì có thể giải mã được nó Bởi vì khóa công khai có sẵn miễn phí, nên mã hóa giao dịch bằng khóa riêng chứng minh được người ký giao dịch có quyền truy cập khóa riêng hay không.Thay vào đó, nếu một ai đó mã hóa bằng khóa công khai của một người thì chỉ có người dùng có khóa riêng tương ứng thì có thể giải mã Nhược điểm là mật mã khóa công khai thường xử lý tính toán chậm
Khóa đối xứng thì trái ngược với những điều trên ở chỗ chỉ có một khóa riêng được sử dụng cho việc mã hóa và giải mã Với mật mã khóa đối xứng, người dùng phải hoàn toàn tin tưởng vào người khác nếu muốn trao đổi khóa chia sẻ trước Trong hệ thống đối xứng, bất kỳ dữ liệu được mã hóa thì có thể được giải mã bằng khóa chia sẻ trước này, xác nhận nó được gửi bởi một người khác cũng có quyền truy cập vào khóa chia sẻ trước; người dùng mà không tiếp cận được khóa chia sẻ trước thì không thể xem được dữ liệu giải mã So với mật mã khóa bất đối xứng , mật mã khóa đối xứng thực thi nhanh hơn
Trang 13Chính vì vậy, dữ liệu được mã hóa bằng mật mã khóa đối xứng, khóa đối xứng được mã hóa bằng mật mã khóa bất đối xứng, “thủ thuật” này có thể làm tăng tốc độ của mật mã khóa bất đối xứng lên nhiều
2.4.4 Địa chỉ
Một vài mạng Blockchain sử dụng một địa chỉ, nó là một chuỗi ký tự trong bảng chữ cái và các số, ngắn, được lấy từ khóa công khai của người dùng bằng cách sử dụng một hàm băm mật mã, thêm vào là một vài dữ liệu (chẳng hạn số phiên bản, checksums) Các địa chỉ này là địa chỉ “đích đến” và địa chỉ “xuất phát” trong giao dịch Địa chỉ ngắn hơn khóa công khai và không bí mật
Một phương pháp để tạo địa chỉ là sử dụng một khóa công khai, áp dụng hàm bămmật mã cho nó, và chuyển nó thành chuỗi băm: khóa công khai -> hàm băm mật mã học -> địa chỉ Mỗi triển khai Blockchain có thể thực hiện một phương thức tạo địa chỉ khác nhau Các địa chỉ có thể đóng vài trò là người định danh công khai cho người dùng và thỉnh thoảng một địa chỉ được chuyển đổi thành một mã QR chứa dữ liệu tùy ý cho việc
sử dụng dễ dàng hơn trên thiết bị di động
2.4.5 Sổ cái
Một quyển sổ cái truyền thống bao gồm danh sách các giao dịch Trong suốt lịch
sử, bút và giấy được dùng để ghi lại các hoạt động trao đổi hàng hóa và dịch vụ Ngày nay, sổ cái đã được lưu trữ bằng kỹ thuật số, thường nằm trong một cơ sở dữ liệu lớn, được sở hữu và vận hành bởi một bên thứ ba tin cậy tập trung dựa, thay mặt cho cộng đồng người dùng Sổ cái với quyền sở hữu tập trung thì có thể được triển khai theo mô hình tập trung hoặc phân tán (chẳng hạn, chỉ một máy chủ hoặc nhiều máy chủ)
Trong công nghệ Blockchain, cách tiếp cận là sử dụng cả quyền sở hữu phân tán
và kiến trúc vật lý phân tán Kiến trúc vật lý phân tán của mạng Blockchain liên quan đếnmột số lượng lớn các máy tính, nhiều hơn so với mạng có kiến trúc vật lý tập trung Nhu cầu cần các sổ cái mà quyền sở hữu phân tán nhiều lên là bởi vì các sổ cái phải đảm bảo
có thể tin tưởng, bảo mật và tin cậy
2.4.6 Khối
Người dùng gửi các giao dịch ứng viên lên mạng Blockchain thông qua phần mềm(ứng dụng desktop, ứng dụng di động, ví điện tử, dịch vụ web,…) Phần mềm gửi các giao dịch này tới một nút hoặc các nút trong mạng
Trang 14Các giao dịch sau đó được gửi đến các nút khác trong mạng, nhưng lúc này vẫn chưa nằm trong Blockchain Một khi giao dịch được gửi đến các nút, nó nằm trong hàng đợi cho đến khi được thêm vào Blockchain bởi một nút xuất bản
Các giao dịch được thêm vào Blockchain khi có một nút xuất bản nó thành một khối Một khối bao gồm phần đầu (block header) và phần dữ liệu (block data) Phần đầu chứa siêu dữ liệu của khối, còn phần dữ liệu chứa một danh sách các giao dịch được xác minh tính hợp lệ và tính xác thực được gửi đến mạng Blockchain Tính hợp lệ và tính xácthực được đảm bảo bằng cách kiểm tra đúng định dạng và người gửi phải ký vào giao dịch chữ ký mật mã (đã đề cập ở phần trước) được xác minh tính hợp lệ và tính xác thực được gửi đến mạng Blockchain Tính hợp lệ và tính xác thực được đảm bảo bằng cách kiểm tra đúng định dạng và người gửi phải ký vào giao dịch chữ ký mật mã
2.4.7 Chuỗi khối
Các khối được nối với nhau thành chuỗi, trong đó mỗi khối chứa mã băm của phần đầu khối trước đó, do đó được gọi là chuỗi khối nếu một khối được xuất bản trước đó bị thay đổi, nó sẽ có mã băm khác, gây ra vấn đề là khối còn lại có mã băm khác với khối trước Điều này giúp cho việc phát hiện trở nên dễ dàng hơn và từ chối các khối thay thế
2.5.2 Phân loại các NFT marketplace
- Exclusive NFT marketplace (Thị trường NFT độc bản)
Trang 15Exclusive NFT marketplace là thị trường dành cho việc mua bán các NFT độc nhất Các NFT này thường là các tác phẩm nghệ thuật và nghệ sĩ hầu như chỉ phát hành duy nhất một bản hoặc với số lượng ít cho mỗi tác phẩm Điều này khiến giá trị các NFT trong Exclusive NFT marketplace rất cao.
Tuy nhiên, nhược điểm của thị trường này là tính thanh khoản thấp do số lượng ít và giá cao do đó phù hợp với những nhà sưu tầm muốn sở hữu những tác phẩm đặc biệt và duy nhất Một số Exclusive NFT marketplace nổi bật: SuperRare, Foundation, knownorigin
- General NFT marketplace (Thị trường NFT phổ thông)
General NFT marketplace là thị trường dành cho hầu hết các NFT Các loại NFT với mọi loại kiểu dáng, số lượng, giá cả cũng như tính năng có thể được tạo và bày bán ở đây
Đây là loại hình marketplace phổ biến nhất và có số lượng nhiều nhất vì chúng đáp ứng nhu cầu của đại đa số người dùng
General NFT marketplace nổi bật hiện tại có thể kể đến gồm OpenSea, Magic Eden, ImmutableX marketplace, hay các NFT marketplace của các CEX như Binance NFT, FTX NFT,
- Specific NFT marketplace (Thị trường NFT chuyên dụng)
Specific NFT marketplace là thị trường dành cho riêng NFT của một mảng nào đó Có thể đó là thị trường dành riêng cho việc mua bán NFT trong game hoặc có thể dành riêng cho các bài hát, video,
Việc có thị trường chuyên dụng cho một mảng nào đó giúp việc giao dịch tài sản dễ dàng
và thuận tiện hơn Người dùng cũng có thể theo dõi các biến động và phản ứng một cách nhanh chóng hơn so với việc theo dõi ở các thị trường phổ thông
Ngược lại, để Specific NFT marketplace hoạt động một cách trơn tru thì dự án cần phải đáp ứng những điều kiện căn bản như có một lượng người dùng đủ lớn cho đến việc tạo những yếu tố để khuyến khích việc giao dịch trong marketplace của mình
Tuy về hình thức mua bán giữa các marketplace trong mỗi loại có thể khác nhau như: đấugiá, đặt lệnh, P2P, nhưng tựu chung lại, ta có thể phân chia các NFT marketplace thành
Trang 16ba loại như trên Mỗi một loại có một cách thức tiếp cận và phù hợp cho những đối tượngkhác nhau.
2.6 Smart Contract
2.6.1 Khái niệm
Smart Contract (Hợp đồng thông minh) là một chương trình máy tính hay một giao thức giao dịch với mục đích tự động thực hiện, kiểm soát và ghi lại các sự kiện, hành động liênquan về mặt pháp lý dựa theo những điều khoản của hợp đồng hoặc thỏa thuận
2.6.2 yếu tố tạo thành
Có 4 yếu tố quan trọng để hình thành một hợp đồng thông minh:
Chủ thể hợp đồng: Các bên tham gia thực hiện giao kết hợp đồng, trong đó có
những bên được cấp quyền truy cập, theo dõi tình hình xử lý và nội dung hợp đồng
Điều khoản hợp đồng: Các điều khoản quy định ở dạng chuỗi, được lập trình đặc
biệt mà các bên tham gia phải đồng ý với các điều này
Chữ ký số: Các bên tham gia hợp đồng thông minh đồng thuận triển khai thỏa
thuận về chữ ký số và phải thực hiện thao tác thông qua chữ ký số
Nền tảng phân quyền: Bước vào giai đoạn hoàn tất, hợp đồng thông minh cần
được tải lên Blockchain Chuỗi Blockchain tiếp tục phân phối dữ liệu về các node
và lưu lại, không thể điều chỉnh
2.6.3 Hoạt đông.
Smart Contract hoạt động dựa theo câu lệnh đơn giản “if/ when … then …” và chúng được viết thành mã trên blockchain Một mạng máy tính sẽ thực hiện các hành động khi đáp ứng được điều kiện xác minh Các hành động có thể là: chi trả tiền cho bên thích hợp,đăng ký phương tiện, xuất vé, gửi thông báo… Cuối cùng cập nhật dữ liệu giao dịch hoàntất
Chỉ những bên được cấp quyền mới có thể xem kết quả, không thể tự ý thay đổi giao dịch Nếu như vậy, họ phải thiết lập những điều khoản về cách thực hiện giao dịch, quy tắc giao dịch, dự đoán tất cả những trường hợp ngoại lệ có thể xảy ra và phương thức giảiquyết tranh chấp Từ đó mới thỏa mãn được người tham gia, giúp việc ký hợp đồng hiệu quả hơn
Trang 17Dựa vào những điều trên, nhà phát triển sẽ lập trình ra các hợp đồng thông minh để doanh nghiệp, cá nhân sử dụng theo nhu cầu cụ thể.
2.6.4 Ưu điểm và nhược điểm.
Ưu điểm
Hợp đồng thông minh giúp tiết kiệm thời gian, giảm chi phí so với sử dụng hợp đồng truyền thống trong một số trường hợp
Bảo mật cao đảm bảo an toàn gần như tuyệt đối cho dữ liệu
Smart Contract là bộ mã có thể lập trình nên nhà phát triển dễ dàng tùy chỉnh, thiết
kế thành nhiều hợp đồng để phù hợp với loại dịch vụ, sản phẩm đa dạng
Bên cạnh đó, Smart Contract là các chương trình phi tập trung, không chịu sự can thiệp từ bên thứ ba Điều này giúp tăng tính minh bạch, tiết kiệm chi phí hoạt động
và tăng hiệu quả vận hành
Nhược điểm
Bởi vì được lưu trữ trên sổ cái, dữ liệu trong hợp đồng gần như không thể thay đổi Đây
là ưu điểm nhưng đồng thời cũng là nhược điểm nếu các bên tham gia đều đồng thuận thay đổi một số điều khoản trong hợp đồng
Vì hệ thống bảo mật cao, không bị tác động bởi trung gian nên tính an toàn dữ liệu đảm bảo, khó bị hacker tấn công nhưng đồng nghĩa việc sửa chữa cũng sẽ khó khăn
2.7 EVM(Ethereum Virtual Machine).
2.7.1 Khái niệm
EVM (Ethereum Virtual Machine) là máy ảo Ethereum Có thể hiểu đơn giản là các EVM sẽ đóng vai trò trung gian trong việc thực thi các smart contract (hợp đồng thông minh) ở trên mạng lưới Ethereum Mỗi một Ethereum node được trang bị một EVM riêng, điều này sẽ đảm bảo tính bảo mật và phi tập trung của mạng lưới
Giống như việc Software Developers phải dùng các IDE (Integrated Development
Environment - Môi trường tích hợp như là Microsoft Visual Studio hoặc Xcode) dùng để viết code và đóng gói ứng dụng Sau đó, các IDE này sẽ dịch code sang ngôn ngữ mà máy tính có thể hiểu được
Trang 18Thông thường, các smart contract của Ethereum được viết bằng ngôn ngữ lập trình Solidity, nên các EVM sẽ đóng vai trò dịch code sang bytecode Bytecode giống mã nguồn máy tính và trong đó sẽ được lưu các opcode (operation code) để mạng Ethereum
có thể trực tiếp hiểu và thực thi lệnh điều khiển
2.7.2 EVM Blockchain
EVM blockchain là các blockchain tương thích máy ảo Ethereum, điều này đồng nghĩa với việc các smart contract của Ethereum có thể được chạy trên các blockchain đó Nói một cách khác, chỉ cần điều chỉnh một chút, thì các Dapps (ứng dụng phi tập trung) trên Ethereum có thể chạy được trên EVM blockchain Một số ví dụ của EVM blockchain là Fantom, Celo, Avax C-Chain, BSC,
2.7.3 Lợi ích đối với người dùng
Giải quyết phí gas và tốc độ giao dịch: Hiện nay, mạng lưới Ethereum đang gặp phải rất
nhiều hạn chế của nền tảng như là phí giao dịch quá cao (đặc biệt lên tới $100 nếu mạng Ethereum bị tắc nghẽn, điều này xảy ra rất thường xuyên), hoặc là tốc độ giao dịch rất chậm
Hơn nữa, các blockchain ra mắt sau sẽ nổi bật hơn về công nghệ cũng như giải quyết được phần nào các vấn đề còn tồn đọng của Ethereum Đặc biệt hơn là khi tương thích EVM thì khả năng mở rộng của các blockchain này càng được củng cố
Có thêm tiện ích và sản phẩm mới: Các blockchain mới này có lợi thế về mặt công nghệ, thì sẽ có các ý tưởng mới được triển khai
2.7.4 Lợi ích đối với Developers & Team dự án
Không mất thời gian làm quen: Đối với các developer dù mới hay có kinh nghiệm cũng
sẽ rất tốn thời gian để nghiên cứu và làm quen với một ngôn ngữ lập trình mới Nhưng giờ đây, với công nghệ EVM, các dev có thể “nhảy” giữa các blockchain với nhau dễ dàng hơn
Nhận diện thương hiệu: Sản phẩm của team dự án khi được triển khai trên các blockchain
khác, về giao diện sẽ có thể được giữ nguyên hoặc thay đổi tùy theo nhu cầu của dự án
Trang 19Vậy nên thay vì lập một dự án hoàn toàn mới, thì team chỉ cần một chút chỉnh sửa cho phù hợp là có thể triển khai dự án trên Ethereum của mình lên trên EVM blockchain.
Sản phẩm sẽ được nhân rộng: Thay vì bị giới hạn ở trong một blockchain nhất định, thì
sản phẩm của team sẽ được mở rộng ra các blockchain khác ⇒ Mở rộng sức ảnh hưởng
và thu hút nhiều users
Trang 20Chương 3 - PHÂN TÍCH ĐẶC TẢ YÊU CẦU
3.1 Sơ đồ usecase
Hình 3.1 Sơ đồ usecase
3.2 Danh sách Use case
2 Add order Bán NFT đang sở hữu
3 Execute order Mua NFT đang bán
4 Cancel order Thu hồi NFT đang bán
5 View collection Hiển thị danh sách NFT đang sở hữu
Trang 216 viewNFT Hiển thị danh sách NFT đang bán
3.3 Đặc tả Usecase
3.3.1 Login
Mô tả User đăng nhập vào hệ thống thông qua metamask và lưu vào
database Tác nhân User
Luồng
chính Hành vi của tác nhân Hành vi của hệ thống
1 User bấm nút connect 2 Hiển thị màn hình đăng nhập
thay thế A4 Sai mật khẩu.
5 Yêu cầu nhập lại mật khẩu metamask Điều kiện
trước Xác thực tài khoản metamask.
Trang 22Tác nhân User
Luồng
chính Hành vi của tác nhân Hành vi của hệ thống
1 User bấm vào nút addOrder trong collection của mình 2 Hiển thị giao diện metamask yêu cầu người dùng confirm
approve
3 User sign in approve 4 Blockchain tiến hành xử lý
transaction approve
6 User sign in addOrder 5 xử lý thành công transaction
approve sau đó hiển thị giao diện metamask yều cầu người dùng confirm addOrder
7 Blockchain tiến hành xử lý transaction addOrder
8 Xứ lý thành công và gọi api addOrder và đưa NFT lên chợ để giao dịch
Luồng
thay thế A3 User không sign in approve. A4 Hệ thông hiển thị giao diện thất bại.
B6 User không sign in addOrder.
B7 Hệ thống hiển thị giao diện thất bại.
C4 Blockchain xác nhận người dùng không đủ tiền.
C5 Hiển thị giao diện thất bại.
Trang 23Tác nhân User
Luồng
chính Hành vi của tác nhân Hành vi của hệ thống
1 User bấm vào nút buy 2 Hiển thị giao diện metamask
yêu cầu người dùng confirm execute
3 User sign in execute 4 Blockchain tiến hành xử lý
transaction execute
5 Xứ lý thành công và gọi api executeOrder.
Luồng
thay thế A3 User không sign in execute. A4 Hệ thông hiển thị giao diện thất bại.
C4 Blockchain xác nhận người dùng không đủ tiền.
C5 Hiển thị giao diện thất bại.
chính Hành vi của tác nhân Hành vi của hệ thống
1 User bấm vào nút cancel 2 Hiển thị giao diện metamask
yêu cầu người dùng confirm cancel
3 User sign in cancel 4 Blockchain tiến hành xử lý
Trang 24transaction cancel
5 Xứ lý thành công và gọi api cancelOrder.
Luồng
thay thế A3 User không sign in cancel. A4 Hệ thông hiển thị giao diện thất bại.
C4 Blockchain xác nhận người dùng không đủ tiền.
C5 Hiển thị giao diện thất bại.
chính Hành vi của tác nhân Hành vi của hệ thống
1 User truy cập vào webApp 2 Hiển thị giao diện của sàn giao
Trang 253.3.6 ViewCollection
Mô tả User xem danh sách NFT đang sở hũu.
Tác nhân User
Luồng
chính Hành vi của tác nhân Hành vi của hệ thống
1 User truy cập vào trang collection 2 Hệ thống hiện thị danh sách NFT của người dùng Luồng
Trang 26Hình 3.4.1 SQ Login
3.4.2 Register.
Trang 27Hình 3.4.2 SQ Register
3.4.3 ExecuteOrder.
Hình 3.4.3 SQ ExecuteOrder