TỔNG QUAN
Bối cảnh và nhu cầu thực tế
Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, nhiều sản phẩm mới như Hệ thống quản lý ERP và CRM đã ra đời, giúp doanh nghiệp tin học hóa quy trình và nghiệp vụ Những hệ thống này không chỉ cải thiện chất lượng và độ chính xác mà còn nâng cao hiệu quả làm việc và giảm thiểu thời gian, từ đó thúc đẩy sự phát triển vượt bậc cho các doanh nghiệp.
Trong quy trình kinh doanh, giai đoạn sau bán hàng rất quan trọng và cần được ưu tiên Thực hiện tốt giai đoạn này không chỉ tạo niềm tin cho khách hàng khi quyết định mua sản phẩm, mà còn giúp giảm chi phí thu hút khách hàng mới Điều này góp phần thúc đẩy tăng trưởng doanh thu khi khách hàng quay lại mua sản phẩm hoặc sử dụng dịch vụ khác.
Hiện nay, quy trình sau bán hàng đã được triển khai bằng nhiều phương thức hiệu quả, mang lại thành công cho doanh nghiệp Một trong những phương thức nổi bật là phát hành thẻ thành viên, giúp quản lý quá trình sử dụng sản phẩm và dịch vụ của khách hàng Từ đó, doanh nghiệp có thể triển khai hiệu quả các quy trình bảo hành, khuyến mãi và tri ân khách hàng Do đó, nhu cầu xây dựng một hệ thống quản lý quy trình sau bán hàng là cần thiết, và thường thì hệ thống này sẽ là một phần của hệ thống CRM.
Mặc dù các hệ thống lưu trữ thông tin theo mô hình Client-Server đang phổ biến, nhưng chúng đã gặp nhiều sự cố an toàn thông tin do những khuyết điểm tiềm ẩn Chi phí triển khai các hệ thống này cũng là một rào cản lớn đối với các doanh nghiệp vừa và nhỏ Nhận thấy lợi ích của công nghệ Blockchain trong việc lưu trữ dữ liệu minh bạch và bất biến, nhóm đã quyết định áp dụng công nghệ này như một giải pháp lưu trữ dữ liệu nhằm nâng cao độ tin cậy và an toàn, đồng thời giúp các doanh nghiệp vừa và nhỏ, đặc biệt trong lĩnh vực dịch vụ, bán lẻ và thực phẩm nhanh, tiếp cận dễ dàng hơn.
Mục tiêu
Nhóm nghiên cứu hướng đến mục tiêu xây dựng hệ thống hỗ trợ doanh nghiệp phát hành E-Voucher nhanh chóng, tiết kiệm và hiệu quả Hệ thống này được thiết kế với ba 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ây dựng hệ thống như mong muốn, luận văn sẽ tập trung vào việc xác thực quyền sở hữu E-Voucher của khách hàng.
• 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.
Nội dung đề tài
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 toá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
LARAVEL VOYAGER
Laravel Framework
Laravel là một framework mã nguồn mở phổ biến trong cộng đồng lập trình ứng dụng web, đặc biệt được ưa chuộng bởi các lập trình viên sử dụng ngôn ngữ PHP.
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
Hướng dẫn sử dụng Laravel được trình bày một cách hợp lý, đầy đủ và luôn được cập nhật thường xuyên Người phát triển framework này cam kết cập nhật tài liệu trước mỗi phiên bản mới, giúp người học lập trình tiếp cận với thông tin mới nhất Điều này tạo ra sự khác biệt rõ rệ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
Laravel, với cú pháp đơn giản và mô hình MVC, giúp lập trình viên dễ dàng thao tác với cơ sở dữ liệu Sự phát triển mạnh mẽ của cộng đồng hỗ trợ đã dẫn đến việc ra đời nhiều framework, library và packages, giúp quá trình phát triển ứng dụng web trở nên thuận tiện hơn.
Laravel Voyager là gì?
Voyager là một package Laravel giúp xây dựng trang quản trị cho website một cách nhanh chóng và dễ dàng, với giao diện đẹp, thân thiện và dễ sử dụng Package này hỗ trợ nhiều tính năng hữu ích cho người dùng.
- 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
Laravel Voyager nổi bật với khả năng quản lý cơ sở dữ liệu, cho phép người dùng dễ dàng thực hiện các thao tác CRUD/BREAD Giao diện trực quan giúp quản lý Controller và thực hiện các nhiệm vụ quản trị trang web một cách hiệu quả.
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.
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
Voyager nổi bật trong cộng đồng lập trình viên Laravel nhờ khả năng tối ưu hóa việc làm việc với cơ sở dữ liệu Khi tạo bảng mới, lập trình viên có thể đồng thời tạo Model, Controller, Migration và quy tắc dữ liệu thông qua giao diện trực quan Công cụ BREAD (Browse, Read, Edit, Add, Delete) hỗ trợ hiệu quả các thao tác duyệt, đọc, thêm mới, chỉnh sửa và xóa dữ liệu Mỗi bảng có thể có BREAD riêng, giúp tạo trang quản trị tương ứng, nơi lập trình viên dễ dàng quản lý quyền truy cập của người dùng đối với các cột BREAD cũng cho phép thiết lập quy tắc dữ liệu mà không cần viết SQL trigger hay mã phức tạp Hơn nữa, BREAD hỗ trợ quản lý mối quan hệ giữa các bảng, cho phép cài đặt các quan hệ 1-1, 1-n và n-n một cách dễ dàng thông qua kéo thả và lựa chọ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
Voyager hỗ trợ tính năng xây dựng menu điều hướng cho trang web, cho phép lập trình viên dễ dàng thêm, chỉnh sửa hoặc xóa các menu hiện có, bao gồm menu ở tiêu đề, chân trang và thanh bên.
Ngoài các menu có sẵn, lập trình viên có thể tùy chỉnh menu cho trang web bằng Bootstrap hoặc tự xây dựng menu riêng để phù hợp với nhu cầu sử dụng.
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
Hình 2.3: Tính năng Compass của Voyager
LARAVEL ORCHID
Tổng quan
Laravel là một framework triển vọng cho lập trình ứng dụng web, dẫn đến sự ra đời của nhiều sản phẩm hỗ trợ, trong đó có Orchid, nhằm khắc phục những thiếu sót mà Laravel chưa giải quyết.
Voyager là một package mạnh mẽ dành cho việc xây dựng trang quản lý cho quản trị viên, trong khi Orchid là một package mã nguồn mở (giấy phép MIT) tiềm năng, giúp phát triển ứng dụng nhanh chóng Orchid cung cấp các mẫu giao diện cho ứng dụng web văn phòng, trang quản trị và trang quản lý thông tin, cho phép lập trình viên dễ dàng tạo ra trang web mới với ít nỗ lực nhất.
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.
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
Tầng xử lý logic là nơi tập trung các logic nghiệp vụ, thực hiện các thao tác với cơ sở dữ liệu thông qua Eloquent, đồng thời gửi đi các tài nguyên và thực hiện 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ệ thống kiến trúc 3 tầng trong Orchid giúp giảm thiểu thời gian phát triển ứng dụng bằng cách phân chia trách nhiệm giữa các tầng xử lý Orchid đã điều chỉnh mô hình MVC truyền thống bằng cách thay thế Controller và View bằng khái niệm Screen Điều này cho phép việc xử lý yêu cầu, dữ liệu và hiển thị dữ liệu chỉ cần thực hiện ở một nơi duy nhất, tạo sự thuận tiện và hiệu quả cho quá trình phát triển.
Hình 3.2: Mô hình MVC trong Orchid
CÔNG NGHỆ BLOCKCHAIN
Blockchain là gì?
Blockchain là một cơ sở dữ liệu phân cấp lưu trữ thông tin trong các khối liên kết bằng mã hóa, hoạt động độc lập và mở rộng theo thời gian Mỗi khối chứa thông tin về thời gian khởi tạo, liên kết với khối trước đó và bao gồm mã thời gian cùng dữ liệu giao dịch Hệ thống được quản lý bởi tất cả người tham gia mà không cần trung gian, giúp ngăn chặn việc thay đổi dữ liệu Khi dữ liệu được mạng lưới chấp nhận, nó không thể bị thay đổi.
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 trong Blockchain là thông tin được lưu trữ trong quá trình hoạt động của nó, và loại dữ liệu này khác nhau tùy thuộc vào từng loại Blockchain Chẳng hạn, Blockchain của Bitcoin chứa các thông tin cần thiết cho giao dịch tiền ảo như địa chỉ ví người nhận, người gửi và số lượng Bitcoin Trong khi đó, Blockchain liên quan đến bảo hiểm lưu giữ thông tin về đối tượng sở hữu bảo hiểm và các lượt thanh toán mà bảo hiểm đã chi trả cho đối tượng đó.
Mã băm (hash) của một khối trong Blockchain được tạo ra từ dữ liệu của khối đó và có tính duy nhất, giúp định danh khối Mọi thay đổi xảy ra trong khối sẽ dẫn đến sự thay đổi của mã băm, đảm bảo tính toàn vẹn của dữ liệu.
Mã băm của khối phía trước đóng vai trò quan trọng trong việc liên kết các khối trong chuỗi, tương tự như cấu trúc dữ liệu danh sách liên kết Mọi sự thay đổi trong một khối sẽ làm mất liên kết với các khối tiếp theo do mã băm của khối đó bị thay đổi.
Dấu thời gian (timestamp) trong Blockchain ghi lại mốc thời gian chính xác mà khối được thêm vào, với độ chính xác lên đến một phần nghìn giây.
Hình 4.1: Cấu trúc cơ bản của một khối
Cơ chế liên kết các khối: Với mỗi khối được thêm vào Blockchain đều chứa mã băm của khối trước đó
Hình 4.2: Cơ chế liên kết theo mã băm của các khối trong Blockchain
Tính bảo mật của Blockchain
Để hiểu rõ lý do tại sao Blockchain lại có tính bảo mật cao, bài viết sẽ trình bày các thành phần chính cấu thành hệ thống Blockchain và cơ chế hoạt động của chúng.
4.3.1 Kiến trúc hệ thống truyền thống Đầu tiên, chúng ta hãy cùng nhìn vào bài toán Sổ cái ngân hàng Thông thường ngân hàng sẽ lưu trữ thông tin giao dịch của khách hàng tại một nơi duy nhất Trên thực tế, hệ thống quản lý thông tin của ngân hàng cũng thường được xây dựng trên kiến trúc Client – Server Hệ thống này vô cùng phức tạp và đắt tiền, việc xây dựng, vận hành, bảo trì nó cũng rất tốn kém Bên cạnh đó các ngân hàng còn phải đối mặt với rất nhiều nguy cơ từ các cuộc tấn công của hacker Chỉ cần một sơ suất nhỏ cũng có thể tạo ra lỗ hỏng khai thác, đánh cắp thông tin Ngoài ra, điểm yếu của kiến trúc Client – Server còn nằm ở các yếu tố bên ngoài như nơi đặt máy chủ, băng thông đường truyền
Hình 4.3: Kiến trúc Client – Server
4.3.2 Kiến trúc hệ thống của Blockchain
Công nghệ Blockchain đã giới thiệu Sổ cái phân tán, một kiến trúc hệ thống loại bỏ vai trò của máy chủ trung tâm Trong mô hình này, tất cả các thành phần tham gia đều có vai trò ngang nhau và giữ một bản sao dữ liệu của Sổ cái, đảm bảo tính minh bạch và an toàn cho hệ thống.
Hệ thống lưu trữ dữ liệu đảm bảo tính an toàn cao, vì nếu một số thành phần gặp trục trặc, bản sao dữ liệu vẫn tồn tại ở nhiều vị trí khác nhau Người dùng có thể dễ dàng khôi phục dữ liệu đã mất từ các bản sao lưu này, cho thấy rằng việc phá hủy hoàn toàn dữ liệu trên hệ thống là rất khó khăn.
Hình 4.4: Kiến trúc Sổ cái phân tán
4.3.3 Các thành phần cấu tạo nên một hệ thống Blockchain
4.3.3.1 Mạng phân tán (Distributed Network)
Mô hình số cái phân tán hoạt động trên hệ thống mạng ngang hàng P2P, trong đó tất cả máy tính tham gia, được gọi là Node, có quyền hạn và vai trò ngang nhau Mỗi Node giữ một bản sao của cuốn sổ cái, giúp tăng cường tính bảo mật và sức mạnh của hệ thống Số lượng Node tham gia càng lớn, khả năng bảo mật và hiệu suất của hệ thống càng được nâng cao.
4.3.3.2 Cơ chế đồng thuận phi tập trung (Decentralized Consensus)
Khi một giao dịch diễn ra trong mạng, để lưu trữ thông tin vào sổ cái, cần có sự đồng thuận của hơn 50% số Node trong hệ thống Do đó, nếu một hacker muốn thay đổi thông tin giao dịch và chuyển tiền sang ví của mình, họ phải chiếm quyền sở hữu hơn 50% số Node để đạt được sự đồng thuận rằng số tiền đó là của họ.
Hình 4.5: Mô hình đồng thuận phi tập trung – 1
Khi thông tin giao dịch được xác nhận, dữ liệu sẽ được đóng gói và mã hóa thành một khối, sau đó được nối vào chuỗi Blockchain Một khi dữ liệu đã được kết nối vào chuỗi, nó sẽ không thể thay đổi.
Hình 4.6: Mô hình đồng thuận phi tập trung – 2
4.3.3.3 Cơ chế bằng chứng công việc (Proof of Work)
Nhóm tác giả sẽ giải thích quá trình lưu trữ giao dịch tiền điện tử vào sổ cái sau khi đạt được sự đồng thuận từ các Node trong hệ thống Trong giai đoạn này, các máy tính có khả năng tính toán sẽ tham gia để xác nhận thông tin giao dịch và sắp xếp các block.
Quá trình này thường được gọi là Mining (đào khối), trong đó các máy tính tham gia đóng góp sức mạnh tính toán được gọi là Miner (thợ mỏ).
Hình 4.7: Minh họa hoạt động Mining (đào block) - 1
Bằng chứng công việc (Proof of Work) là thuật toán xác nhận giao dịch và tạo khối mới trong hệ thống blockchain Nó cho phép các thợ mỏ cạnh tranh để hoàn thành giao dịch bằng cách giải quyết một bài toán khó, và khi thành công, họ sẽ nhận được phần thưởng bằng coin.
Một PoW (Proof of Work) sẽ giải quyết các bài toán nào để có thể mã hóa các câu đố mà hệ thống đưa ra:
Hàm băm là quá trình mã hóa dữ liệu đầu vào thành dữ liệu đầu ra, giúp bảo vệ thông tin khi truyền tải đến nguồn đích Sau khi đến nơi, dữ liệu đầu ra này có thể được xử lý để phục hồi lại dữ liệu ban đầu.
• Nhân tử số nguyên: Trình bày một số dưới dạng phép nhân của hai số nguyên tố khác
Khi mạng Blockchain ngày càng phát triển, nó đang gặp phải nhiều thách thức, đặc biệt là về sức mạnh xử lý cần thiết để giải quyết các thuật toán phức tạp hơn Đây là một trong những hạn chế mà chúng ta cần khắc phục để thúc đẩy sự phát triển bền vững trong tương lai.
Nhóm thợ mỏ nhận Coin khi tìm ra hàm băm hợp lệ đầu tiên cho một khối Mặc dù phần thưởng khối được trao cho thợ mỏ phát hiện hàm băm đầu tiên, xác suất cho cá nhân không có nhiều thiết bị khai thác để tạo khối là rất thấp, chưa kể đến việc cạnh tranh với các thợ mỏ khác.
Hình 4.8: Minh họa hoạt động Mining (đào block) – 2
Làm việc theo nhóm giúp các thợ mỏ xử lý nhanh chóng hơn và nhận phần thưởng công bằng dựa trên đóng góp của từng thành viên trong việc tìm kiếm khối mới.
ETHEREUM VÀ SMART CONTRACT
Ethereum – Blockchain 2.0
Ethereum (ETH) là nền tảng điện toán phân tán, công cộng và mã nguồn mở dựa trên công nghệ Blockchain Nền tảng này nổi bật với tính năng hợp đồng thông minh, giúp đơn giản hóa và tối ưu hóa các thỏa thuận hợp đồng trực tuyến.
Ethereum được khởi xướng bởi Vitalik Buterin, một lập trình viên có liên quan đến Bitcoin vào cuối năm 2013, với mục tiêu phát triển các ứng dụng phân quyền Ông cho rằng Bitcoin cần một ngôn ngữ lập trình để hỗ trợ việc phát triển ứng dụng, nhưng không tìm được sự đồng thuận từ nhóm phát triển Bitcoin Do đó, Buterin đã đề xuất xây dựng một nền tảng mới với ngôn ngữ lập trình tổng quát hơn.
This platform features a fully Turing-complete virtual machine known as the Ethereum Virtual Machine (EVM), which is capable of executing scripts through a network of Ethereum computers.
Ethereum cung cấp một loại tiền mã hóa mang tên "Ether", cho phép người dùng chuyển đổi giữa các tài khoản và sử dụng để thanh toán cho các thợ đào thực hiện các phép toán.
"Gas" là một cơ chế giá giao dịch nội bộ, được sử dụng để giảm thiểu giao dịch rác (spam) và phân bổ các nguồn lực trên mạng lưới
5.1.2 Kiến trúc của hệ thống Ethereum
5.1.2.1 Đơn vị tiền điện tử ETH
Tiền mã hóa trên mạng lưới Ethereum được gọi là Ether, với mã giao dịch là ETH Ether không chỉ được giao dịch trên các sàn tiền mã hóa mà còn được sử dụng để thanh toán phí giao dịch và dịch vụ tính toán trên mạng Ethereum.
Giá trị của Ether có thể biến động theo từng mốc thời gian, hiện tại 1 đồng Ether có giá trị tương đương khoảng 1150 USD (hơn 26.000.000 VND)
Máy ảo Ethereum (EVM) là môi trường chuyên dụng để chạy các hợp đồng thông minh trên mạng Ethereum, hoạt động hoàn toàn độc lập với mạng lưới, hệ thống tập tin và các quy trình khác của máy chủ Mỗi nút trong mạng Ethereum đều vận hành một EVM và thực hiện các hướng dẫn tương tự nhau EVM được lập trình bằng nhiều ngôn ngữ như C++, Go, Haskell, Java, Python, Ruby, Rust và WebAssembly, ngôn ngữ đang trong quá trình phát triển.
EVM đóng vai trò quan trọng trong giao thức Ethereum, hỗ trợ cho công cụ đồng thuận của hệ thống Nó cho phép người dùng thực hiện mã trong một môi trường không tin cậy, đảm bảo rằng kết quả hoạt động là hoàn toàn xác định và thực hiện các hợp đồng thông minh một cách an toàn.
5.1.2.3 Hợp đồng thông minh (Smart Contract)
Hợp đồng thông minh (Smart Contract) là một thuật ngữ chỉ các giao thức đặc biệt có khả năng tự động thực hiện các điều khoản và thỏa thuận giữa các bên thông qua công nghệ Blockchain.
Mỗi tài khoản Ethereum được đại diện bởi 20 ký tự Các thông số sau được lưu trong dữ liệu trạng thái (state) của Ethereum cho mỗi tài khoản:
• Số nonce, để đảm bảo mỗi giao dịch chỉ được xử lý một lần
• Mã nguồn hợp đồng (nếu có)
• Phần lưu trữ của tài khoản (mặc định là trống)
Hợp đồng thông minh (Smart Contract)
Hợp đồng thông minh (Smart Contract) là một giao thức đặc biệt có khả năng tự động thực hiện các điều khoản và thoả thuận giữa các bên thông qua công nghệ Blockchain.
Tất cả hoạt động của Smart Contract diễn ra tự động, không cần sự can thiệp từ bên ngoài hay bên thứ ba Giao dịch qua hợp đồng thông minh rất minh bạch, dễ dàng truy xuất và không thể bị can thiệp hay đảo ngược Điều khoản trong Smart Contract tương đương với hợp đồng pháp lý và được lập trình bằng ngôn ngữ lập trình.
5.2.2 Cách thức hoạt động của Smart Contract
Cơ chế hoạt động của Smart Contract tương tự như máy bán hàng tự động, tức là chúng chỉ thực hiện các điều khoản đã được lập trình sẵn khi đáp ứng đủ yêu cầu Đầu tiên, các điều khoản trong hợp đồng được viết bằng ngôn ngữ lập trình, sau đó mã hóa và chuyển vào một block trên Blockchain Khi đã được chuyển vào block, Smart Contract sẽ được phân phối và sao chép bởi các node hoạt động trên nền tảng đó.
Sau khi nhận lệnh triển khai, hợp đồng sẽ được thực hiện đúng theo các điều khoản đã định sẵn Đồng thời, Smart Contract sẽ tự động kiểm tra quá trình thực hiện các cam kết và điều khoản nêu trong hợp đồng.
Nếu bạn đang tìm kiếm một căn hộ để thuê, bạn có thể thanh toán tiền thuê bằng tiền điện tử thông qua công nghệ Blockchain Sau khi giao dịch hoàn tất, biên nhận sẽ được lưu trữ trong một hợp đồng thông minh Chủ nhà sẽ cung cấp cho bạn mã khóa để vào căn hộ vào một ngày đã được thỏa thuận.
Nếu mật mã không được gửi đúng hạn theo thỏa thuận, hợp đồng thông minh sẽ hoàn lại tiền Ngược lại, nếu mật mã đến trước thời hạn, hệ thống sẽ giữ cả tiền và mật mã cho đến khi đến hạn Hệ thống hoạt động theo nguyên tắc "Nếu - Thì" và được giám sát bởi hàng trăm người, đảm bảo không xảy ra sai sót trong quá trình giao nhận.
5.2.3 Ưu điểm và nhược điểm của Smart Contract
5.2.3.1 Ưu điểm của Smart Contract
Smart Contract có thể ứng dụng trong nhiều lĩnh vực trong tương lai, hiện tại đã được triển khai trong các ngành như tiền điện tử, logistics, ngân hàng, bất động sản và cả trong quy trình bầu cử.
• Tự do: Không bị một cơ quan nào quản lý
5.2.3.2 Khuyết điểm của Smart Contract
Tính pháp lý của smart contract hiện nay gặp nhiều khó khăn, vì người sử dụng sẽ không được bảo vệ quyền lợi khi xảy ra lỗi phát sinh Điều này là do pháp luật các nước vẫn chưa có chính sách rõ ràng để khai thác và quản lý loại hình hợp đồng thông minh này.
• Chi phí triển khai: Cần chi trả cho hệ thống cơ sở hạ tầng, máy tính, và các lập trình viên giỏi để triển khai
Mặc dù Smart Contract có bản chất an toàn, nhưng việc lộ thông tin nhạy cảm hoặc bị hacker khai thác có thể dẫn đến những rủi ro nghiêm trọng.
KĨ THUẬT LẬP TRÌNH SMART CONTRACT
Ngôn ngữ Solidity
Solidity là ngôn ngữ lập trình hướng đối tượng cao cấp, được sử dụng để phát triển các Smart Contract Smart Contract có thể được xem như những ứng dụng giúp quản lý hành vi của các tài khoản trên nền tảng Ethereum.
Solitdity được thiết kế dựa trên C++, Python, JavaScript và nó được tạo ra để nhằm vào việc tương tác với Ethereum Virtual Machine (EVM)
Với Solidity, bạn có thể tạo hợp đồng cho các mục đích sử dụng như bỏ phiếu, gây quỹ, đấu giá và ví đa chữ ký
Dưới đây là một ví dụ Smart Contract đơn giản
Hình 6.1: Ví dụ Smart Contract đơn giản
Khi triển khai Smart Contract trên hệ thống Ethereum, chúng ta có hai biến là name và age cùng một số phương thức cơ bản để lấy và thiết lập giá trị Các biến và phương thức được khai báo là public sẽ dễ dàng được truy cập và sử dụng, trong khi những biến và phương thức không được khai báo public hoặc được khai báo là private sẽ bị ẩn và không thể truy cập Do hai biến name và age không được khai báo là public, nên sau khi triển khai, chúng ta chỉ có thể truy cập chúng thông qua các phương thức get đã được cài đặt sẵn.
Triển khai một Smart Contract lên Ethereum cho thấy rằng biến age trong Contract không có phương thức set, điều này có nghĩa là giá trị của biến age không thể bị thay đổi sau khi triển khai Để thay đổi biến này, cần phải cài đặt phương thức trong Smart Contract trước khi triển khai lên hệ thống.
Mã nguồn mở ethereum-php
Nhóm đã áp dụng mã nguồn mở từ repository btelle/ethereum-php để tương tác với blockchain Ethereum thông qua giao thức RPC, nhằm phục vụ cho đề tài nghiên cứu.
Hình 6.3: Mô hình tương tác với Ethereum với ethereum-php
Ganache và Ropsten Testnet
Ganache là một công cụ giả lập mạng blockchain trên máy tính cá nhân, cho phép người dùng trải nghiệm các tính năng của mạng blockchain thực tế như Ethereum Khi khởi động Ganache, nó tự động tạo ra một mạng blockchain giả lập và cung cấp 10 địa chỉ ví (wallet), mỗi ví có sẵn 100 ETH, giúp người dùng dễ dàng thực hiện các giao dịch và thử nghiệm.
Hình 6.4: Ứng dụng Ganache trên máy cá nhân
Ropsten Ethereum, hay còn gọi là Ether Ethereum Testnet, là một mạng thử nghiệm mô phỏng giao thức của Ethereum, được sử dụng để kiểm tra các ứng dụng và tính năng trước khi chính thức triển khai trên mạng chính (Mainnet).
Ropsten ETH là loại tiền điện tử được sử dụng chủ yếu cho mục đích thử nghiệm Nó cho phép các nhà phát triển xây dựng dApps và thử nghiệm các giao dịch từ ứng dụng của họ mà không cần phải chi tiêu ETH thực sự cho phí giao dịch và triển khai Smart Contract, giúp tiết kiệm chi phí trong quá trình phát triển.
MetaMask là một tiện ích mở rộng cho trình duyệt Chrome, hoạt động như một ví quản lý Ethereum Nó đóng vai trò là cầu nối, cho phép trình duyệt Chrome kết nối với mạng Ethereum và các mạng blockchain khác.
Truffle Framework
Truffle là một trong những framework hàng đầu cho việc phát triển DApp trên nền tảng Ethereum, cung cấp môi trường phát triển, công cụ kiểm thử và hệ thống tài nguyên cho ứng dụng blockchain dựa trên Ethereum Virtual Machine (EVM), từ đó giúp đơn giản hóa quá trình lập trình và phát triển ứng dụng sử dụng Ethereum.
• Quản lý biên dịch, liên kết và triển khai cho Hợp đồng thông minh
• Tự động kiểm thử cho Hợp đồng
• Khả năng nén và mở rộng các triển khai và nâng cấp, di chuyển dữ liệu
• Quản lý mạng lưới các node để triển khai đến bất kỳ mạng lưới nào khác
• Quản lý các gói với EthPM và NPM theo chuẩn ERC190
• Bảng điểu khiển có thể tương tác được với các giao tiếp trực tiếp với Hợp đồng
• Luồng cấu hình cài đặt với sự hỗ trợ tích hợp chặt chẽ
• Hỗ trợ các đoạn mã bên ngoài có thể thực thi bên trong môi trường của Truffle
Truffle cung cấp công cụ Ganache, giúp người dùng tạo blockchain cục bộ dễ dàng Với Ganache, bạn có thể tạo ra các tài khoản sẵn có, xác định số lượng ETH trong mỗi tài khoản, thiết lập cổng blockchain, giới hạn gas và các sự kiện khác.
ỨNG DỤNG BLOCKCHAIN VÀO BÀI TOÁN THỰC TIỄN
Bài toán thực tiễn
Giai đoạn sau bán hàng trong quy trình kinh doanh của cửa hàng là rất quan trọng và cần được ưu tiên Thực hiện tốt giai đoạn này không chỉ giúp khách hàng tin tưởng hơn trong quyết định mua sắm mà còn giảm chi phí thu hút khách hàng mới, khi khách hàng cũ quay lại mua sắm hoặc sử dụng dịch vụ khác, từ đó thúc đẩy tăng trưởng doanh thu.
Các cửa hàng thường sử dụng voucher giảm giá để thu hút khách hàng, trong đó có voucher giấy truyền thống và voucher điện tử phát hành qua internet Mặc dù voucher điện tử được coi là một giải pháp tiết kiệm và hiệu quả, cả hai loại voucher này vẫn tồn tại những khuyết điểm riêng.
Hình 7.1: Voucher giảm giá dạng giấy được phát hành bởi Highlands Coffee
Voucher điện tử được phát hành qua email giúp giảm thiểu chi phí so với voucher giấy, bởi vì nhà phát hành không cần chi cho thiết kế, in ấn, vận chuyển và phát hành Hơn nữa, voucher điện tử cũng giảm thiểu rủi ro liên quan đến việc nhân viên lợi dụng kẽ hở để tái sử dụng mã, cũng như tránh tình trạng voucher giấy bị hư hỏng trước khi đến tay khách hàng.
Voucher điện tử đã khắc phục nhiều nhược điểm của voucher giấy truyền thống, giúp giảm chi phí in ấn và phát hành Tuy nhiên, để triển khai và duy trì hệ thống voucher điện tử, nhà phát hành cần đầu tư vào việc xây dựng hệ thống, chi phí duy trì server và đối phó với các cuộc tấn công từ hacker.
Giải pháp
Dựa trên việc phân tích các vấn đề liên quan, nhóm tác giả đề xuất giải pháp tích hợp hệ thống voucher điện tử với công nghệ Blockchain nhằm nâng cao hiệu quả và tính bảo mật.
Nhóm sẽ phát triển một hệ thống dựa trên Blockchain để cung cấp dịch vụ phát hành, quản lý và sử dụng mã giảm giá Các mã giảm giá sẽ được phát hành dưới dạng mã QR, tạo điều kiện thuận lợi cho người dùng trong việc nhận và sử dụng ưu đãi.
Hệ thống hỗ trợ người dùng tạo và phân phối mã voucher đến khách hàng, đảm bảo mỗi mã giảm giá chỉ thuộc về một khách hàng và chỉ được sử dụng một lần duy nhất Nhờ vào công nghệ Blockchain, người dùng có thể dễ dàng theo dõi tình trạng hiện tại của các voucher đã phát hành.
Khách hàng của người dùng có thể kiểm tra thông tin, tính khả dụng voucher được tặng thông qua hành động quét mã QR.
Thiết kế tổng quan hệ thống
Hình 7.3: Sơ đồ tổng quan hệ thống
Nhóm tác giả quyết định sử dụng Laravel Framework cho phát triển backend của hệ thống, tận dụng thế mạnh của nhóm về Back-End PHP Hệ quản trị cơ sở dữ liệu được chọn là MySQL, và hệ thống sẽ tương tác với Blockchain thông qua giao thức RPC.
Các thành phần của hệ thống bao gồm:
• Smart Contract phục vụ cho việc lưu trữ thông tin, xác nhận chủ quyền của voucher
Client WebApp là giao diện người dùng cuối của hệ thống, cung cấp các tính năng như tạo, phát hành, quản lý, thống kê và xác thực voucher Hệ thống này hoạt động thông qua các kết nối API đến backend, đảm bảo tính năng hiệu quả và linh hoạt cho người dùng.
• Admin Panel: Giao diện quản lý dành cho người quản trị hệ thống
• MySQL Database: Dùng để lưu trữ dữ liệu của hệ thống.
Thiết kế cơ sở dữ liệu
Hình 7.4: Thiết kế cơ sở dữ liệu
Lượt đồ Use – Case
Ảnh 7.5 Mô hình Use – Case toàn hệ thống
7.5.1 Quản lý tài khoản Ảnh 7.6 Lượt đồ Use – Case: Quản lý tài khoản
7.5.1.1 Đăng ký tài khoản Ảnh 7.7 Lượt đồ Use – Case: Đăng ký tài khoản Đăng ký tài khoản Requirements Cho phép khách hàng đăng ký tài khoản với hệ thống Sau khi khách hàng đã nhập đủ thông tin cần thiết, hệ thống gửi email kích hoạt đến email đã đăng ký Khách hàng dùng mã kích hoạt trong email để kích hoạt tài khoản
Actors Khách hàng (chủ các cửa hàng cần tạo mã giảm giá)
Post-conditions Nếu thành công khách hàng chưa thể đăng nhập ngay, chỉ sau khi kích hoạt tài khoản mới có thể đăng nhập thành công
Constraints Một email chỉ được dùng để đăng ký một tài khoản
Bảng 7.1 Use – Case đăng ký tài khoản
7.5.1.2 Kích hoạt tài khoản Ảnh 7.8 Lượt đồ Use – Case: Kích hoạt tài khoản
Kích hoạt tài khoản Requirements Một email được gửi tới địa chỉ email của người dùng yêu cầu kích hoạt tài khoản
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá)
Post-conditions Nếu thành công đối tác có thể kích hoạt tài khoản và đăng nhập thành công vào hệ thống
Bảng 7.2 Use – Case Kích hoạt tài khoản
7.5.1.3 Đăng nhập Ảnh 7.9 Lượt đồ Use – Case: Đăng nhập Đăng nhập
Requirements Cho phép người dùng đăng nhập và sử dụng những tính năng của đã được cấp quyền
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá), quản trị hệ thống (admin)
Post-conditions Nếu thành công người dùng sẽ có thể truy cập và thực hiện các tính năng đặc trưng có phân quyền của tài khoản
Bảng 7.3 Use – Case Đăng nhập
7.5.1.4 Đăng xuất Ảnh 7.10 Lượt đồ Use – Case: Đăng xuất Đăng xuất Requirements Cho phép người dùng thoát ra khỏi tài khoản của mình
Các đối tác, bao gồm chủ các cửa hàng, cần tạo mã giảm giá để thu hút khách hàng, trong khi quản trị hệ thống (admin) sẽ đảm nhận việc quản lý toàn bộ quy trình Để thực hiện các thao tác này, người dùng bắt buộc phải đăng nhập trước khi có thể tiến hành đăng xuất.
Nếu thành công, người dùng sẽ không còn khả năng sử dụng các tính năng đặc trưng của tài khoản và sẽ truy cập trang web với tư cách là người dùng ẩn danh.
Bảng 7.4 Use – Case Đăng xuất
7.5.2 Quản lý đối tác Ảnh 7.11 Lượt đồ Use – Case: Quản lý đối tác
7.5.2.1 Quản lý danh sách đối tác Ảnh 7.12 Lượt đồ Use – Case: Quản lý danh sách đối tác
Quản lý danh sách đối tác
Requirements Cho phép người dùng xem được danh sách đối tác hiện có trong hệ thống
Actors Quản trị hệ thống (admin)
Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, người dùng sẽ xem được danh sách đối tác của hệ thống
Bảng 7.5 Use – Case: Quản lý danh sách đối tác
7.5.2.2 Thêm đối tác Ảnh 7.13 Lượt đồ Use – Case: Thêm đối tác
Thêm đối tác Requirements Cho phép người dùng có thể thêm mới một đối tác đăng ký sử dụng dịch vụ của hệ thống
Actors Quản trị hệ thống (admin)
Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, người dùng sẽ truy cập được màn hình tạo mới và lưu được thông tin đối tác
Bảng 7.6 Use – Case: Thêm đối tác
7.5.2.3 Sửa đối tác Ảnh 7.14 Lượt đồ Use – Case: Sửa đối tác
Sửa đối tác Requirements Cho phép người dùng có thể cập nhật thông tin của một đối tác
Actors Quản trị hệ thống (admin)
Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, người dùng sẽ truy cập được màn hình chi tiết, cập nhật được dữ liệu của đối tác
Bảng 7.7 Use – Case: Thêm đối tác
7.5.2.4 Xóa đối tác Ảnh 7.15 Lượt đồ Use – Case: Xóa đối tác
Xóa đối tác Requirements Cho phép người dùng có thể xóa đi thông tin của một đối tác
Actors Quản trị hệ thống (admin)
Chỉ những tài khoản admin có quyền hạn cao mới được phép xóa dữ liệu Nếu quá trình xóa thành công, dữ liệu của đối tác sẽ bị loại bỏ.
Bảng 7.8 Use – Case: Xóa đối tác
7.5.3 Quản lý đăng ký dịch vụ của đối tác Ảnh 7.16 Lượt đồ Use – Case: Quản lý đăng ký dịch vụ
7.5.3.1 Theo dõi danh sách các đăng ký dịch vụ của đối tác Ảnh 7.17 Lượt đồ Use – Case: Xem danh sách Đăng ký dịch vụ
Xem danh sách Đăng ký dịch vụ Requirements Cho phép người dùng có thể theo dõi các đăng ký dịch vụ của đối tác
Actors Quản trị hệ thống (admin)
Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, người dùng có thể truy cập vào trang danh sách đăng ký dịch vụ
Bảng 7.9 Use – Case: Xem danh sách Đăng ký dịch vụ
7.5.3.2 Khởi tạo đăng ký dịch vụ cho đối tác Ảnh 7.18 Lượt đồ Use – Case: Khởi tạo Đăng ký dịch vụ
Khởi tạo Đăng ký dịch vụ Requirements Cho phép người dùng có thể khởi tạo một đăng ký dịch vụ cho đối tác
Actors Quản trị hệ thống (admin)
Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, hệ thống sẽ khởi tạo một đăng ký dịch vụ cho đối tác
Bảng 7.10 Use – Case: Khởi tạo Đăng ký dịch vụ
7.5.3.3 Cập nhật thông tin của một đăng ký dịch vụ Ảnh 7.19 Lượt đồ Use – Case: Cập nhật dữ liệu Đăng ký dịch vụ
Cập nhật dữ liệu Đăng ký dịch vụ Requirements Cho phép người dùng có thể khởi tạo cập nhật dữ liệu của một đăng ký dịch vụ
Actors Quản trị hệ thống (admin)
Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, người dùng có thể truy cập vào trang chi tiết và thay đổi dữ liệu
Bảng 7.11 Use – Case: Cập nhật dữ liệu Đăng ký dịch vụ
7.5.4 Quản lý voucher Ảnh 7.20 Lượt đồ Use – Case: Quản lý voucher
7.5.4.1 Xem danh sách voucher đã tạo Ảnh 7.21 Lượt đồ Use – Case: Xem danh sách voucher đã tạo
Xem danh sách voucher đã tạo Requirements Cho phép người dùng có thể quản lý danh sách voucher đã tạo
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá) Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, người dùng có thể truy cập vào trang danh sách voucher
Bảng 7.12 Use – Case: Xem danh sách voucher đã tạo
7.5.4.2 Thêm mới voucher Ảnh 7.22 Lượt đồ Use – Case: Thêm mới voucher
Requirements Cho phép người dùng tạo mới voucher
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá) Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, dữ liệu của voucher sẽ được lưu trữ vào cơ sở dữ liệu và đồng bộ lên hệ thống Blockchain
Bảng 7.13 Use – Case: Thêm mới voucher
7.5.4.3 Cập nhật dữ liệu voucher Ảnh 7.23 Lượt đồ Use – Case: Cập nhật dữ liệu voucher
Cập nhật dữ liệu voucher Requirements Cho phép người dùng cập nhật lại thông tin voucher đã tạo trước đó
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá) Pre-conditions Người dùng trước tiên phải đăng nhập
Post-conditions Nếu thành công, dữ liệu của voucher sẽ được cập nhật vào cơ sở dữ liệu và đồng bộ lên hệ thống Blockchain
Bảng 7.14 Use – Case: Cập nhật dữ liệu voucher
7.5.5 Tra cứu thông tin voucher Ảnh 7.24 Lượt đồ Use – Case: Tra cứu thông tin voucher
Tra cứu thông tin voucher
Requirements Cho phép người dùng có thể tra cứu thông tin của một voucher
Actors Bất kỳ ai có mã QR code đều có thể tra cứu được thông tin
Post-conditions Nếu thành công, hệ thống sẽ hiển thị các thông tin cần thiết của voucher cho hành động tra cứu
Bảng 7.15 Use – Case: Tra cứu thông tin voucher
7.5.6 Phát hành voucher Ảnh 7.25 Lượt đồ Use – Case: Phát hành voucher
Requirements Cho phép người dùng phát hành voucher đã tạo đến tay khách hàng của mình
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá)
Post-conditions Nếu thành công, hệ thống sẽ gửi mail chứa voucher dưới dạng QR code đến khách hàng của đối tác
Bảng 7.16 Use – Case: Phát hành voucher
7.5.7 Thu hồi voucher Ảnh 7.26 Lượt đồ Use – Case: Thu hồi voucher
Requirements Cho phép người dùng tra cứu thông tin voucher, thu hồi và áp dụng giảm giá cho khách hàng của mình
Actors Đối tác (chủ các cửa hàng cần tạo mã giảm giá)
Post-conditions Nếu thành công, hệ thống sẽ cập nhật lại trạng thái voucher trong DB và đồng bộ lên Blockchain
Bảng 7.17 Use – Case: Thu hồi voucher