Lập trình smart contracts Phần 3: — Xây dựng một dAPP
Sự ra đời của Ethereum ngoài việc hiện thực hóa các smart contracts còn cung cấp cho chúng ta các phương tiện để xây dựng các decentralized applications (dApps).
Decentralized Applications
Nói nôm na dApps là ứng dụng nhưng thay vì phụ thuộc vào một central point như các ứng dụng truyền thống vẫn tồn tại. Thì back-end của nó sẽ được thay thế bằng smart contracts hoặc programmable transactions.
Cấu trúc của dApp
Các dApp thường cấu thành bởi cách thành phần:
- Front-end: Đóng vai trò là GUI (Graphical User Interface), phần này sẽ có nhiệm vụ là hiển thị và xử lý các input. Bạn có thể build front end từ bất cứ thứ gì miễn là nó thuận tiện và có thể tái sử dụng. Điểm khác biệt so với front-end của web app hay mobile app là các xử lý quan trọng nhất sẽ nằm ở phía client-side. Front-end của bạn có thể sẽ giữ và mã hóa private key, sign các transactions hoặc phải có khả năng tương tác vời các third party extension như metamask, trezor.
- Transport: Front-end bản thân nó sẽ không có khả năng tương tác trực tiếp vào smart contracts mà luôn cần cầu nối tới các full-node, nơi cung cấp các API để làm việc với smart contracts/blockchain. Anonymous network layer, distributed file system cũng được dùng nhằm giảm thiểu việc tin tưởng các third parties hay single point of failure.
- Services: Cung cấp các methods để front-end có thể làm việc và tương tác với smart contracts. Các bạn phải lựa chọn giữa xây dựng các services hoặc sử dụng API của TTP như https://etherscan.io, điều này tùy thuộc vào mức độ quan trọng của dApp.
- Back-end: Các smart contracts sau khi được viết, trải qua quá trình biên dịch sẽ là các OPCODE (Operation Code) và sẽ được deploy tại một địa chỉ lý thuyết (logical address) trong blockchain của Ethereum. Các smart contracts hoàn toàn thụ động và không có khả năng thực thi các lệnh hoặc duy trì các timer. Giải quyết vấn đềnhư: trigger theo thời gian, lấy các thông tin từ internet… sẽ cần tới dịch vụ của third party như https://www.oraclize.it/.
Điểm mạnh của dApp
- Không tiêu tốn nhiều chi phí bảo mật
- Không tiêu tốn chi phí vận hành
- Không gặp vấn đề single point of failure
- Minh bạch và có thể kiểm chứng kết quả
- Tính mở cao không giới hạn quyền truy cập
- Người dùng tương tác với dApp, không cần cung cấp danh tín
Diểm yếu
- Chi phí vận hành sẽ do users trả (hay còn được biết là gas cost)
- Không có khả năng tương tác realtime
- Kiểm thử thường sẽ phức tạp hơn so với applications thông thường
- Phụ thuộc vào platform (e.g Ethereum)
Kết luận
Hiện tại định nghĩa decentralized application vẫn đang được hình thành, các platform vẫn đang chạy đua với nhau để giành vị trí quán quân trong việc trở thành một chuẩn chung cho dApp. Sự phát triển của blockchain, smart contracts trong những năm gần đây và việc bùng nổ các dApp sẽ thay đổi cách chúng ta viết các ứng dụng trong tương lai.
Các bài viết tiếp tiếp theo mình mong muốn đưa ra một ví dụ cụ thể và triển khai nó để chúng ta cùng quan sát quá trình phát triển một dApp từ những gì sơ khai nhất.