1. Cosmos là gì ?
Cosmos được định nghĩa một hệ sinh thái blockchain mã nguồn mở.
Không giống như các mạng blockchain khá "độc lập" khác như Bitcoin, Ethereum, ... Cosmos là một hệ sinh thái bao gồm nhiều mạng blockchain khác nhau, được xây dựng, kết nối và tương tác với nhau thông qua các giao thức chung (IBC).
Hệ sinh thái Interchain
Interchain là cái tên được sử dụng để gọi hệ sinh thái Cosmos. Bao gồm rất nhiều mạng blockchain, token cũng như các công cụ để xây dựng và tương tác với hệ sinh thái phi tập trung Cosmos.
Năm 2022, có khoảng 100 tỷ USD tài sản số được quản lý trên Interchain, với khoảng hơn 70 blockchain khác nhau cùng với đó là 33 loại ví mà người dùng có thể thoải mái lựa chọn khi quản lý tài sản trong hệ sinh thái.
Danh sách 1 số blockchain nổi tiếng trong hệ sinh thái Interchain như BNB Chain, Cronos của Crypto.com, Luna ... Các bạn có thể xem đầy đủ các chain tại đây
Tendermint BFT
Tendermint là một phần mềm nằm ở tầng giao thức blockchain, được đóng gói sẵn. Với Tendermint, việc xây dựng một blockchain mới không cần là việc khó khăn khi nhà phát triển không cần quan tâm và hiểu sâu về giao thức P2P hay thuật toán đồng thuận.
Tendermint gồm có 2 phần chính:
- Tendermint core: Phần thuật toán đồng thuận (blockchain consensus engine)
- Generic application interface (ABCI): Giao diện lập trình để tương tác với lớp ứng dụng ở trên.
Hệ sinh thái Cosmos hiện tại không sử dụng Tendermint BFT mà tùy chỉnh 1 chút từ Tendermint (fork() tạo ra CometBFT
Cosmos SDK
Interchain hướng đến một hệ sinh thái có thể phát triển thêm các mạng blockchain mới 1 cách dễ dàng, tùy biến.
Trước đây, việc xây dựng một mạng blockchain mới là không hề dễ dàng một chút nào. Kể cả việc fork source code từ các blockchain đã hoạt động như Ethereum cũng yêu cầu kiến thức rất sâu về lập trình để có thể điều chỉnh, tùy biến.
Với công cụ Cosmos SDK, việc xây dựng 1 mạng blockchain sẽ dễ dàng, linh hoạt hơn. Vậy Cosmos SDK là gì ?
Cosmos SDK là một framework mã nguồn mở giúp xây dựng blockchain trên nền Tendermint BFT.
Inter-Blockchain Communication (giao thức IBC)
Inter-Blockchain Communication (IBC) là giao thức giúp việc chuyển tài sản (token) giữa các chain trong hệ sinh thái Cosmos.
Nếu không có giao thức IBC, các nhà phát triển sẽ phải tốn công xây dựng các cầu nối (bridge) bằng viết các bộ smart contract trên các chain khác nhau để chuyển đổi tài sản. Việc đó cũng tiềm ẩn rủi ro bảo mật vì chúng ta đã được chứng kiến nhiều vụ hack lớn nhỏ liên qua tới cầu nối chuyển token.
Các blockchain trong hệ sinh thái Interchain được chia làm 2 loại: Hub và Zone
- Các hub là các blockchain có nhiệm vụ làm trung gian kết nối giữa các chain khác qua giao thức IBC. Khi 2 zone muốn trao đổi tài sản với nhau, chúng sẽ kết nối với 1 hub chung.
- Các zone là các blockchain còn lại, không có nhiệm vụ làm trung gian kết nối.
Hub và Zone chỉ khác nhau trong việc chuyển tiếp kết nối IBC hay không mà thôi.
Chúng ta có thể xem chi tiết hơn kết nối giữa các hub và zone của Interchain tại đây
Cosmos Hub
Cosmos Hub là blockchain đầu tiên trong hệ sinh thái Interchain. Với token nền tảng là ATOM, thuật toán đồng thuận Proof-of-Stake (PoS). Cái tên Cosmos Hub dễ làm chúng ta nhầm lẫn với khái niệm Hub Zone ở trên.
Ignite CLI
https://docs.ignite.com/ là một công cụ dòng lệnh (command-line interface) giúp việc xây dựng chain mới trở nên tiện lợi, nhanh chóng. Được xây dựng trên Tendermint/CometBFT và Cosmos SDK. Một số tính năng của IgniteCLI có thể kể đến như sau:
- Tạo 1 modular blockchain với chỉ 1 lệnh
- Chuyển token qua giao thức IBC
- Khởi động node blockchain
CosmWasm
Cosmwasm là smart contracting platform trong hệ sinh thái Cosmos. Bao gồm môi trường với các công cụ giúp phát triển, kiểm thử cũng như triển khai smart contract.
Hiện tại smart contract sẽ được viết bằng ngôn ngữ Rust, tương lai có thể tích hợp thêm AssemblyScript.
2. Cùng thử tạo 1 mạng blockchain
Trong phần này chúng ta sẽ cùng thử đi tạo ra một mạng blockchain mới với Cosmos SDK thông qua Ignite CLI. Việc tạo cả một mạng blockchain thật sẽ rất phức tạp từ việc chuẩn bị các node, cài đặt client, kết nối ... nên chúng ta chọn cách đơn giản hơn nhiều là chạy trên máy local.
Cài đặt Ignite CLI
curl https://get.ignite.com/cli@v0.22.1! | bash
Kiểm tra phiên bản khi đã cài đặt xong
Chúng ta cũng có thể dùng Docker nếu không muốn cài đặt trực tiếp Ignite CLI lên máy. Các bạn có thể tham khảo tại đây
Source code
Chúng ta kéo mã nguồn của node client về bằng lệnh
ignite scaffold chain github.com/alice/checkers
Code được viết bằng ngôn ngữ Go, ngôn ngữ quen thuộc được dùng triển khai node client trên Ethereum và các phiên bản fork của nó.
- Thư mục
app
: Chứa các files có nhiệm vụ kết nối các phần của blockchain với nhau, quan trọng nhất là fileapp.go
, nó bao gồm các định nghĩa, cài đặt cấu hình để khởi chạy mạng blockchain ví dụ như định dạng địa chỉ bắt đầu bằng cosmos. - Thư mục
cmd
: Nơi định nghĩa các lệnh Ignite CLI và các thực thi chúng - Thư mục
proto
: Chứa các files.proto
(một dạng dữ liệu tương tự như JSON hay XML) để mô tả các cấu trúc dữ liệu của blockchain. - Thư mục
testutil
: Chứa các thư viện phục vụ việc viết unit test - Thư mục
x
: Chứa các mô-đun của mạng blockchain đã được tuy chỉnh so với mặc định của Cosmos SDK. Ví dụ như staking, governance, ... config.yml
: Chứa các thiết lập ban đầu về tài khoản, network ID, số dư, ...
Kích hoạt blockchain
cd checkers
ignite chain serve
Vậy là mạng blockchain mới đã được kích hoạt , ta hãy cùng thử faucet 1 ít tiền xem sao
Kiểm tra số dư, tài khoản đã có thêm 10token
Lưu ý: blockchain local chúng ta được dựa trên Cosmos Hub (cosmos1uzv4v9g9xln2qx2vtqhz99yxum33calja5vruz
) nên nếu truyền dạng địa chỉ của các chain khác thì sẽ không hợp lệ. Vd như osmo16w76z5wl0nehjxqcp9clpp0km4f5265r2kwv5q
Lời cuối
Cosmos blockchain vẫn đang phát triển rất mạnh mẽ trong thời kỳ thị trường vô cùng ảm đạm. Còn rất nhiều khái niệm, kiến thức mới so với các nền tảng Ethereum mà trong khuôn khổ bài viết chưa thể đề cập đến được. Hy vọng qua bài này chúng ta sẽ có cái nhìn tổng quan về hệ sinh thái Cosmos (Interchain).
Tài liệu tham khảo
https://tutorials.cosmos.network/academy/1-what-is-cosmos/2-cosmos-ecosystem.html
https://docs.cosmos.network/main