Tổng quan

Substrate là một bộ công cụ phát triển phần mềm (software development kit – SDK) trong thế giới blockchain. Với Substrate, bạn có thể tạo một blockchain cho riêng mình với mức độ cá nhân hóa cao và nhanh chóng.

Tuy nhiên, thoạt nghe qua thì vẫn còn khá mơ hồ, và trong đầu bạn “nảy số” hàng loạt thắc mắc như tạo blockchain là tạo những gì? Substrate có vai trò trong việc này? Chúng ta có thể sử dụng Substrate ra sao? Chúng ta cần phải bắt đầu như thế nào? v.v.

Trong bài viết này, GFS sẽ giúp bạn giải đáp những thắc mắc đó, mặc dù không thể chuyên sâu “step by step” để tạo ra một Substrate blockchain, nhưng ít nhiều cũng giúp bạn hiểu cách áp dụng Substrate và có thêm động lực để xây dựng một blockchain cho riêng mình.

Xem thêm: Substrate là gì? Tầm quan trọng của Substrate với hệ sinh thái Polkadot

Các thành phần quan trọng trong Substrate

Trước tiên, để có thể để hiểu sâu hơn về việc xây dựng blockchain, chúng ta cần tìm hiểu những thành phần quan trọng có trong đó. Biết rằng, Substrate đã xây dựng những thành phần này một cách rất cơ bản để tối ưu hóa khả năng chỉnh sửa của bạn mà vẫn giữ được mạng lưới hoạt động trơn tru và các Substrate blockchain có thể tương thích mạch lạc với nhau. Các thành phần này bao gồm:

  • Database (cơ sở dữ liệu)
  • Networking (mạng lưới)
  • Transaction queue (thứ tự giao dịch)
  • Consensus (cơ chế đồng thuận)

Đầu tiên, chúng ta hãy cùng tìm hiểu về database

Database

Về bản chất, để mạng lưới blockchain có thể hoạt động, chúng ta cần duy trì và lưu trữ một sổ cái chung. Các node sẽ liên tục cập nhật trạng thái sổ cái và các giao dịch trong đó, khiến chúng trở thành một cơ sở dữ liệu.

Trong Substrate, sẽ không có những rào cản trong việc thiết lập nội dung và cấu trúc của data trong blockchain, nên vì vậy, bạn có thể thoải mái trong việc thiết kế cơ sở dữ liệu của mình sao cho phù hợp nhất với nhu cầu (ví dụ bạn có thể không bắt buộc lúc nào các node cũng phải lưu trữ hết toàn bộ dữ liệu, và giúp cho mạng lưới gọn nhẹ hơn).

Lớp cơ sở dữ liệu nền của Substrate sử dụng một phương pháp lưu trữ khóa giá trị đơn giản, triển khai trên một Modified Patricia Merkle Tree (trie). Cấu trúc lưu trữ đặc biệt này cho phép dễ dàng xác minh xem một item (vật phẩm, mà ở đây chính các sản phẩm của mạng lưới như một giao dịch, một account, một token,…) có được lưu trữ trong đó hay không.

Tất cả những điều này nghe khá rắc rối, nhưng về cơ bản nó giúp cho người dùng/validator dễ dàng tương tác (có thể là thực hiện việc cập nhật sổ cái) trustless (không đáng tin) với mạng lưới.

Database được phân phối trong blockchain
Database được phân phối trong blockchain

Networking

Sau khi có database, thì chúng ta cần khả năng giao tiếp với nhau. Và để một hệ thống blockchain phi tập trung có thể giao tiếp với nhau, nó cần thiết lập một giao thức mạng ngang hàng (P2P networking protocol).

Substrate sử dụng libp2p như một mô đun P2P networking. Thông qua networking này, người dùng Substrate blockchain có thể chia sẻ các giao dịch, khối, và các thông tin quan trọng khác của hệ thống mà không cần một máy chủ tập trung.

Libp2p trên thực tế rất đặc biệt, vì nó không đưa ra những yêu cầu về một giao thức networking cụ thể nào, phù hợp với tinh thần của Substrate. Kết quả là bạn có thể triển khai và phát triển các cách thức giao tiếp khác nhau trên blockchain.

P2P network
P2P network

Transaction queue

Trong blockchain, các giao dịch được thu thập và lưu trữ trong các khối. Chúng là thành phần quan trọng trong việc xác định trạng thái blockchain. Vì thế, thứ tự của các giao dịch cũng có thể ảnh hưởng đến trạng thái cuối cùng của sổ cái.

Substrate cho phép bạn toàn quyền kiểm soát thứ tự giao dịch trên mạng lưới. Nó chỉ giả định rằng mỗi giao dịch có một sự ưu tiên (weight) khác nhau, nhằm gắn tag cho việc tạo một dependency queue (chuỗi thứ tự giao dịch phụ thuộc). Trong trường hợp đơn giản nhất là một chuỗi giao dịch phụ thuộc theo đường thẳng, nhưng chúng cũng có thể trở thành một chuỗi phức tạp hơn. Substrate sẽ tự động xử lý những sự phức tạp đó.

Thứ tự giao dịch trong mạng lưới
Thứ tự giao dịch trong mạng lưới có thể trở nên phức tạp

Consensus

Cơ chế đồng thuận rất quan trọng trong một mạng lưới blockchain. Nó là cơ sở để xác định một block có được thêm vào chuỗi hay không, hoặc là quyết định về một sự thay đổi trong chuỗi. Thông thường, cơ chế đồng thuận khó có thể sửa đổi vì có quan hệ mật thiết với các thành phần khác của blockchain.

Tuy nhiên, đội ngũ Substrate đã dành rất nhiều công sức để thiết kế một cơ chế đồng thuận có thể dễ dàng biến đổi trong quá trình xây dựng và thậm chí là sau khi blockchain đã “lên sóng”. Cơ chế này còn đặc biệt ở chỗ phân chia rõ ràng giai đoạn tạo khối và giai đoạn hoàn thiện khối.

Substrate runtime là gì

Substrate runtime là trái tim của một blockchain. Nôm na là nó bao gồm tất cả những thành phần quan trọng trên và còn nhiều thành phần khác.

Trong Substrate, runtime còn được gọi là state transition function (chức năng chuyển đổi trạng thái). Bạn có thể hình dung toàn bộ blockchain như một cỗ máy. Runtime xác định các quy tắc (xác định điều gì hợp lệ và không hợp lệ) để đi từ trạng thái này sang trạng thái tiếp theo. Thực tế, đây sẽ là nơi bạn dành nhiều thời gian để chỉnh sửa blockchain của mình.

Bản thân Substrate luôn cố gắng cở mở nhất có thể khi tùy chỉnh runtime. Ngoài một số yếu tố kĩ thuật mà bất kỳ runtime nào cũng phải áp dụng, thì bạn có toàn quyền tự do sáng tạo để xây dựng mọi thứ theo ý muốn.

Substrate Runtime Module Library (SRML)

Substrate Runtime được chia thành nhiều thành phần nhỏ gọi là runtime mô đun (ví dụ các thành phần quan trọng phân tích bên trên cũng là một mô đun). Các mô đun này sẽ thực hiện các nhiệm vụ logic khác nhau trên chuỗi. Là một nhà phát triển Substrate, bạn có thể chọn các mô đun và chức năng phù hợp để đưa vào blockchain của mình.

Các mô đun này liên tục được phát triển không chỉ từ đội ngũ Substrate mà còn từ cộng đồng, tất cả chúng được tập hợp lại trong một kho lưu trữ khổng lồ tên là Substrate Runtime Module Library (SRML). Trong tương lai, thư viện này sẽ trở nên thân thiện với người dùng hơn và hoạt động như môt “app store”, nơi mọi người tự do chọn những chức năng mong muốn để bổ sung thêm vào blockchain của mình. Còn blockchain sẽ hoạt động giống như một “điện thoại phi tập trung có thể cá nhân hóa”.

Substrate blockchain sẽ trở nên vô cùng đặc sắc với nhiều mô đun khác nhau
Substrate blockchain sẽ trở nên vô cùng đặc sắc với nhiều mô đun khác nhau

3 hướng tiếp cận Substrate

Khi bắt đầu một dự án Substrate, có 3 cách tiếp cận bạn có thể lựa chọn để phù hợp với khả năng của mình:

  • Substrate Node
  • Substrate FRAME
  • Substrate Core

Sau đây, hãy cùng GFS khám phá từng tùy chọn một cách cụ thể hơn.

Substrate Node

Đây là hướng tiếp cận đơn giản nhất, nhiều cơ chế được dựng sẵn nhất và mức độ tùy chỉnh cũng thấp nhất. Substrate Node sẽ phù hợp đối với những bạn mới bắt đầu tập xây dựng blockchain, bắt đầu bằng việc tạo 2 node tương tác với nhau trong một môi trường chưa hoàn thiện. Tuy nhiên, nó vẫn hoàn toàn chạy được và cũng bao gồm một số chức năng mặc định như quản lý tài khoản, quyền truy cập, cơ chế đồng thuận… Chúng ta có thể tùy chỉnh khối khởi đầu (initial state) để khởi động mạng lưới. Bạn có thể xem làm sao để set up node tại đây.

Với Substrate Node, chúng ta có thể chạy node và làm quen với những gì Substrate cung cấp, tương tác với chuỗi khối và khám phá bloackchain state. Một cách khác để thực hiện điều tương tự là sử dụng Substrate Playground, nơi bạn có thể tự học hỏi thông qua trải nghiệm thực hành.

Khi bạn đã quen dần, bạn có thể bắt đầu trải nghiêm một mức độ cao cấp hơn là Substrate FRAME.

Substrate FRAME

FRAME (Framework for Runtime Aggregation of Modularized Entities), đúng như tên gọi của nó, là một framework để xây dựng và phát triển Substrate runtime với một mức độ tùy chỉnh cao để xác định logic mong muốn của blockchain (như chúng ta đã đề cập, đa số điều chỉnh sẽ thực hiện ở runtime). FRAME sẽ phù hợp cho những người đã có kinh nghiệm sử dụng các mô đun của Substrate.

Thực tế, chúng ta vẫn bắt đầu từ các node ở Substrate node, nhưng có thể thêm vào những mô đun từ SRML. Ở cấp độ này, bạn đã có thể set up khá đầy đủ logic, trạng thái và các loại dữ liệu của blockchain. Bạn có thể tìm hiểu thêm các mô đun tại đây.

Nhìn chung, với cách tiếp cận FRAME, bạn sẽ đầu tư tối thiểu thời gian của mình vào việc thiết lập những nền tảng cơ bản và tập trung phần nhiều vào việc chỉnh sửa mạng lưới theo ý muốn. Tức là bạn vẫn sẽ phải sử dụng một số mặc định vốn có của Substrate. Nếu muốn cải tiến cả điều này, bạn nên sử dụng cách tiếp cận thứ ba, Substrate Core.

Substrate Core

Về cơ bản, Substrate Core có nghĩa là chúng ta có thể triển khai runtime của mình theo bất kỳ cách nào chúng ta muốn, miễn là nó nhắm đến Web Assembly và tuân thủ các luật cơ bản về tạo khối của Substrate. Sau đó chúng ta có thể sử dụng runtime này trong các node.

Cách tiếp cận này chắc chắn đòi hỏi nhiều công sức nhất và mức độ khó cao nhất, nhưng nó cũng đi kèm với mức độ tùy chỉnh kĩ thuật cao nhất trong khi vẫn có thể tương thích mạnh mẽ với hệ sinh thái Substrate.

Các bước xây dựng blockchain bằng substrate

Nhìn chung, bạn đã có thể hiểu về các hướng tiếp cận Substrate một cách sơ lược nhất. Đối với mình, hãy bắt đầu từ những hiểu biết cơ bản về Node, sau đó đào sâu hơn với FRAME trước khi đi vào cấu trúc hạ tầng cơ bản (core). Bạn có thể tham khảo framework này để có một cái nhìn toàn diện hơn.

Các bước làm quen xây dựng một Substrate blockchain
Các bước làm quen xây dựng một Substrate blockchain

Ngoài ra, Substrate có các chỉ dẫn tuyệt vời, ngay cả đối với những người mới bắt đầu cũng có thể tìm hiểu, bao gồm mọi bước từ cài đặt, hướng dẫn sử dụng mô đun và các công cụ khác, tạo các thành phần cơ bản, đến xây dựng một blockchain tùy chỉnh hoàn toàn cho riêng bạn. Không chỉ vậy, còn có các dự án nguồn mở để bạn có thể học hỏi thêm.

Một số Substrate blockchain điển hình

Để dẫn chứng cho việc sử dụng Substrate hữu ích như thế nào, và tạo thêm động lực cho bạn đọc, ta hãy cùng xem qua những mạng lưới nổi bật xây dựng trên nền Substrate đã xử lí được các vấn đề gì, và cách họ xử lí chúng ra sao.

Astar Network

Astar Network là một blockchain đa chuỗi trên Polkadot. Astar tích hợp các giải pháp như EVM, WebAssembly và Layer2 (như là Rollups). Nền tảng hỗ trợ các ứng dụng phi tập trung khác nhau như DeFi, NFT và DAO.

Astar Network x Substrate
Astar Network x Substrate

Vấn đề:

Polkadot Realay chain không hỗ trợ các smart contract. Do đó, cần có một parachain đóng vai trò như một nền tảng hỗ trợ smart contract trên hệ sinh thái Polkadot.

Giải pháp:

Một nền tảng smart contract tốt cần đạt đươc 2 điều là khả năng tương thích với các máy ảo, và khả năng mở rộng.

  • Về khả năng tương thích với máy ảo: sử dụng một máy ảo vốn có của Substrate xử lí Web Assembly và tích hợp thêm một mô đun máy ảo EVM. Điều này cho phép Astar hỗ trợ cả hai máy ảo này một lúc, cho phép chúng cùng tồn tại và có thể tương tác với nhau. Qua đó, nhiều loại smart contract có thể được triển khai trên Polkadot, kể cả từ Ethereum, mà không cần phải chỉnh sửa gì nhiều.
  • Về khả năng mở rộng: Substrate có thể nâng cấp mà không cần fork. Vì thế Astar có thể thêm các mô đun Layer 2 và công nghệ của chúng sao cho phù hợp, qua đó nâng cao tính mở rộng.

Kết quả:

Với Substrate, Astar đã phát triển được một thành phần quan trọng là Multi Virtual Machine (đa máy ảo), cung cấp nhiều môi trường thực thi smart contract. Khả năng thậm chí còn được nâng lên tầm cao mới khi có thể cho phép tương tác giữa hai máy ảo khác nhau. Ngoài ra, Astar đã phát triển một khái niệm rất sáng tạo được gọi là “Dapps Staking”, cho phép stake token vào môt smart contract bằng cách sử dụng một Substrate mô đun để set phần thưởng stake cho mỗi khối.

Xem thêm: tổng quan dự án Astar Network

Acala Network

Acala là một nền tảng độc lập với hệ thống bảo mật mạnh mẽ, có khả năng tương thích với Ethereum, giao dịch đa chuỗi và thân thiện với người dùng. Nó tập trung vào trở thành một mạng lưới chuyên dành cho các ứng dụng và người dùng DeFi.

Acala Network x Substrate
Acala Network x Substrate

Vấn đề:

Đầu tiên, trong các nền tảng Layer-1, người dùng khi muốn tham gia các giao thức DeFi sẽ phải mua native token (vd ETH, SOL…) để làm phí giao dịch. Điều này có thể là rào cản đối với người dùng mới khi họ chỉ muốn chuyển từ tiền Fiat sang stablecoin, và không muốn tiếp xúc quá nhiều với thị trường crypto. Sự đơn giản hóa sẽ là chìa khóa cho DeFi nếu muốn thu hút thêm người dùng.

Một vấn đề khác chính là Oracle. Oracle là một thành phần rất quan trọng trong nhiều giao thức DeFi. Các nhà vận hành Oracle tìm nạp dữ liệu bên ngoài và đưa chúng vào blockchain, trở thành các số liệu để giao dịch (ví dụ giá BTC, ETH…), nếu không có họ, dường như sẽ không có sự đồng nhất giữa các sàn giao dịch, hay tỉ lệ chuyển đổi trong pool AMM.

Tuy nhiên, hiện tại, còn tồn đọng một số vấn đề khá vô lý đối với giải pháp Oracle trên các nền tảng DeFi. Thứ nhất, giao dịch cấp dữ liệu (feed transactions) oracle có lợi cho nền tảng, nhưng những giao dịch đó vẫn phải chịu phí giao dịch. Thứ hai, các giao dịch oracle thường cùng mức độ ưu tiên với loại với các giao dịch khác. Tức là, khi mạng bị tắc nghẽn, chúng phải cạnh tranh với các giao dịch bình thường của người dùng, và có thể không được đưa vào khối kịp thời, dẫn đến thiệt hại cho các giao thức.

Không chỉ vậy, chúng còn có thể bị sắp xếp lại thứ tự khi bị các giao dịch trả phí nhằm nhận được sự ưu tiên cao hơn từ validator lấn át, điều này có thể dẫn đến một cuộc sandwich attack (hưởng lợi bằng cách đặt lệnh chèn vào trước một giao dịch/ thông tin quan trọng có thể làm biến động mạnh về giá).

Cuối cùng, nhiều giao thức DeFi hiện có được triển khai trong Solidity, nơi có một cộng đồng nhà phát triển lớn. Điều này đặt ra một thách thức đối với bất kỳ nền tảng DeFi nào không hỗ trợ EVM và Solidity.

Giải pháp:

Substrate rất linh hoạt và có thể tùy chỉnh hầu hết mọi thứ, bao gồm cả logic thanh toán phí. Vì thế, Acala đã kết hợp một mô đun thanh toán với một mô đun DEX để xử lý phí giao dịch. Điều này có nghĩa là người dùng có thể trả phí giao dịch bằng bất kỳ tiền mã hóa nào được liệt kê trong Acala DEX mà không cần đến native token (ACA).

Ngoài ra, Substrate cho phép tùy chỉnh các nhóm giao dịch và đánh dấu các giao dịch nhất định với mức độ ưu tiên cao hơn so với các giao dịch khác. Nên Acala có thể đảm bảo rằng các giao dịch cấp dữ liệu oracle luôn được ưu tiên cao nhất, và nằm đầu tiên ở mỗi khối, tránh được sự tự ý sắp xếp lại giao dịch của các validator. Các giao dịch oracle hợp lệ cũng được miễn phí giao dịch để hỗ trợ các nhà khai thác oracle.

Với tất cả các tính năng đó, Acala có thể có nhiều người vận hành oracle hơn, và các giao dịch oracle vẫn được đảm bảo kể cả khi mạng tắc nghẽn. Do đó, các giao thức trên Acala sẽ trở nên an toàn hơn.

Substrate cũng cung cấp một mô đun EVM cho phép Acala hỗ trợ các hợp đồng thông minh EVM và Solidity. Do vậy, các smart contract Solidity hiện có có thể được chuyển sang nền tảng Acala với những thay đổi tối thiểu và các nhà phát triển Solidity có thể tiếp tục triển khai các ứng dụng DeFi trên Acala bằng bộ công cụ và thư viện quen thuộc.

Kết quả:

Acala đã phát triển và có những điểm đặc biệt của riêng mình. Tất cả nhờ vào sự linh động của mô đun Substrate. Acala đã có thể xử lý phí giao dịch bằng nhiều loại token khác nhau, giúp cho oracle trở nên được ưu tiên đúng với tầm quan trọng của nó. Và trên hết, Acala phát triển được một môi trường hỗ trợ Solidity smart contract tên là Acala EVM+, với nhiều tính năng mà EVM không có.

Xem thêm: tổng quan dự án Acala Network

Unique Network

Unique Network là một mạng lưới được xây dựng bằng Substrate, nhằm cung cấp cơ sở hạ tầng cho NFT trong hệ sinh thái Polkadot và Kusama. Nó có tất cả chức năng cơ bản để phát triển NFT (như đúc, giao dịch, đốt), cũng như các công cụ hỗ trợ NFT (như ví, phòng trưng bày, sàn giao dịch…), và hướng tới việc xây dựng các giải pháp ứng dụng NFT trong tương lai.

Unique Network x Substrate
Unique Network x Substrate

Vấn đề: 

  • Mô hình kinh tế: các nền tảng yêu cầu người dùng của họ phải sở hữu tiền điện tử để thực hiện giao dịch NFT. Điều này tạo ra một xung đột lớn đối với việc áp dụng NFT trên thị trường đại chúng.
  • Quyền sử dụng: các blockchain hiện tại không cho phép thuê hoặc ủy quyền quản lý NFT. Đây là một điểm thiếu sót trong mô hình kinh tế, khiến cho người sở hữu NFT không nhận được một khoản thu nhập ổn định bằng tài sản của mình.

Giải pháp:

  • Mô hình kinh tế: Substrate cho phép tùy chỉnh trên tất cả các giai đoạn của một giao dịch.
  • Quyền sử dụng: Substrate cho phép lên lịch để thực hiện thanh toán khi thuê NFT.

Kết quả: 

  • Mô hình kinh tế: người dùng không phải trả phí giao dịch nữa, có nghĩa là họ có thể sử dụng Unique Network để tạo và trao đổi NFT mà không cần phải:
    • Tìm hiểu địa chỉ tiền mã hóa là gì
    • Đăng ký trên các sàn giao dịch
    • KYC
    • Tạo ví và lưu trữ một lượng native token để làm phí giao dịch

Bằng cách sử dụng mô đun Signed Extension trên Substrate, địa chỉ thanh toán phí có thể được xác định trước. Ví dụ, khi giao dịch trong một bộ sưu tập NFT cụ thể, phí giao dịch đã được chỉ định sẵn vào một địa chỉ ví (có thể là ví của người tạo ra bộ NFT), nên tất cả giao dịch liên quan đến bộ NFT đó sẽ không phải tốn phí (không cần mua native token), tạo thuận lợi cho cả người bán lẫn người mua.

  • Quyền sử dụng: để kích hoạt mô hình đăng ký quyền sử dụng NFT, Unique Network sử dụng một mô đun “lên lịch” (scheduler). Người dùng có thể lên lịch bất kỳ giao dịch nào từ chuyển tiền đơn giản (trả nợ) đến smart contract call (đòi nợ). Điều này tạo ra một mối quan hệ thanh toán giữa người thuê và người cho thuê NFT, và khiến cho việc ủy quyền NFT trở nên khả thi.

Xem thêm: tổng quan dự án Unique Network

Tổng kết

Hi vọng qua bài viết này, bạn đã có thêm những kiến thức về Substrate và có một góc nhìn cho hướng đi của mình. Không chỉ vậy, rất nhiều mạng lưới cùng nhiều tính năng độc đáo đã được xây dựng, cho thấy sức mạnh tối ưu hóa và sáng tạo khi sử dụng Substrate. Mong rằng bạn sẽ có thêm niềm tin và động lực để tự phát triển một blockchain để đời.

Nếu bạn thích bài viết này hay có ý kiến nào muốn chia sẻ, hãy comment bên dưới cho chúng mình biết nhé!