Mấy nay nghe báo chí ca ngợi về blockchain & Web3 quá nên mình quyết định bước chân vào lĩnh vực này để tìm hiểu coi nó có ứng dụng thực tế gì không. Sau một tháng đọc tài liệu và viết code thử, mình nghĩ là đã tìm thấy câu trả lời.
Mình tìm hiểu về blockchain & Web3 với tâm thế của một người làm kĩ thuật, tức là mình không chỉ đọc khơi khơi. Mình muốn lập trình, làm ra được một ứng dụng cụ thể từ blockchain. Trong số các hệ thống blockchain, mình chọn Solana để nghiên cứu. Mình chọn nó là vì:
- Nó cho phép lập trình bằng ngôn ngữ Rust. Mình ưu tiên Rust không chỉ vì lý do cảm tính (yêu thích) mà còn vì lý do thực dụng: Đầu tư vào Rust để sau khi làm về blockchain, mình có thể sử dụng Rust để làm việc cho các mảng khác (web, hệ thống nhúng v.v...). Nếu mình theo Ethereum thì phải học ngôn ngữ Solidity, nhưng Solidity chỉ có giá trị với smart contract. Rời blockchain ra thì chẳng dùng Solidity được vào việc gì khác, phí thời gian học tập.
- Solana có tốc độ xử lý giao dịch nhanh. Theo mình, muốn có ứng dụng thực tế thì phải nhanh. Tương tự như bạn vô một website mà tải chậm thì lần sau bạn chẳng muốn ghé lại nữa.
Trong một tháng đấy mình vừa đọc tài liệu kĩ thuật, vừa tập tành viết code. Việc viết code không xuôi chèo mát mái tí nào vì đa số các tài liệu hướng dẫn bị lạc hậu hơn phiên bản phần mềm, không làm theo được. Mò mẫm tới lui thì cũng viết ra được một vài ứng dụng chạy được:
Mình cũng bỏ công nghiên cứu thực sự, đến khi đi ngủ cũng ráng đọc thêm về nó, và đêm qua thì lần mò tới mục này: Developing with Rust - Restriction
Một điểm rất quan trọng là ứng dụng trên chain của Solana không thể dùng std::net
, tức là không thể tạo socket và sử dụng các giao thức mạng, trao đổi thông tin qua mạng với các máy khác.
Để thấy việc truyền nhận thông tin qua mạng quan trọng thế nào, lấy ví dụ về hệ thống kiểm soát, điều khiển trang trại của AgriConnect:
- Hệ thống có các nút cảm biến. Các thiết bị này đo nhiệt độ, độ ẩm rồi gửi dữ liệu về một máy điều khiển trung tâm. Việc này đòi hỏi có mạng.
- Máy điều khiển trung tâm lưu các dữ liệu vào hệ thống database (PostgreSQL). Việc trao đổi với hệ thống database cũng thông qua giao thức mạng.
- Người quản lý trang trại muốn xem diễn biến nhiệt độ, độ ẩm thì dùng trình duyệt (trên điện thoại, laptop) truy cập vào website của máy điều khiển trung tâm. Việc tương tác giữa trình duyệt và website cũng tiến hành qua mạng.
- Người quản lý trang trại thiết lập lịch tưới trên website. Lịch tưới này cũng được lưu vào database. Các việc này cũng tiến hành qua mạng.
- Máy điều khiển trung tâm căn cứ vào số liệu nhiệt độ, độ ẩm thu được, so sánh với lịch tưới đã được cài đặt, sẽ ra lệnh tắt, mở bơm tưới. Tín hiệu điều khiển này được gửi qua mạng đến máy bơm đặt ở trang trại.
Bởi vậy, ứng dụng blockchain, Web3 mà không sử dụng được mạng thì coi như cụt tay. Nói "blockchain, web3 là tương lai" thì nổ quá. Mà hạn chế này cũng không phải của riêng Solana. Có vẻ bản chất của blockchain khiến phải có hạn chế này, vì Ethereum cũng bị như thế.