+2

Tìm hiểu Cosmos: "Internet of Blockchains"

image.png

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.

image.png

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: HubZone

  • 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.

HubZone 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 hubzone 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

image.png

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ó.

image.png

  • 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à file app.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 tùy 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

image.png

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

image.png

Kiểm tra số dư, tài khoản đã có thêm 10token

image.png

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

https://mapofzones.com/home?columnKey=ibcVolume&period=24h

https://docs.ignite.com


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí