Như anh em đã biết việc xây dựng 1 Blockchain riêng đòi hỏi rất nhiều tài nguyên, kiến thức chuyên môn và kỹ năng lập trình dẫn đến quá trình phát triển khá chua, mất nhiều thời gian.. dẫn đến nếu anh em build trên polkadot sẽ đỡ tốn sức hơn vì nó cung cấp sẵn rất nhiều thư viện và framework hỗ trợ chúng ta cấu hình, tùy biến chain cho nhiều mục đích sử dụng khác nhau, giúp giảm tải những vấn đề đau đầu không cần thiết, rồi dùng time còn lại tập trung cho các tính năng quan trọng.
Và khi anh em tạo blockchain trên nền tảng của Polkadot là chúng ta đang tạo 1 Parachain. Nên trước khi vào việc, anh em cần hiểu rõ các khái niệm về parachain, parathread, relay chain và substrate framework.
Còn anh em nào chưa biết Polkadot là gì luôn, thì xem thêm tại đây.
Nội dung chính
Parachain là gì?
Parachain là 1 dạng Blockchain tùy chỉnh hoặc một cấu trúc dữ liệu dành riêng cho ứng dụng, các parachains có thể hoạt động độc lập trên mạng Polkadot và có nền kinh tế riêng của nó.
Parachains cấp cho nhà phát triển nhiều không gian để xây dựng hệ thống tiền tệ và các khía cạnh khác ngay từ đầu. Giúp anh em thực thi logic phức tạp nhanh hơn và hiệu quả hơn cho các smart contract. Nó cũng dễ quản trị và nâng cấp mà không cần phải hard fork như những Blockchain thông thường.
Nói đơn giản là Polkadot cung cấp cho anh em 1 bản vẽ để xây dựng được Chain riêng, và khi làm việc này là anh em đang build 1 Parachain trên Polkadot. Tất cả parachain đều phải cắm vào Relay chain vì mục đích bảo mật và để giao tiếp với các parachain khác bằng cơ chế đồng thuận chéo XCM ( Cross-Consensus Message).
Relay chain lúc này sẽ như trung tâm điều khiển của toàn bộ mạng lưới Polkadot.
Sau này, Polkadot cũng xây thêm 1 network khác tên Kusama để các developer có thể chạy thử nghiệm Blockchain, dapp, governance..
Parathread là gì?
Parathread thì nó cũng như parachain nhưng là 1 parachain tạm thời, chỉ truy cập lấy dữ liệu (get API), các chức năng trên Polkadot và trả tiền theo nhu cầu sử dụng. Tạo điều kiện cho những dự án nguồn lực nhỏ phát triển.
Vì chi phí phát triển 1 Parachain cũng không rẻ, nên các dự án có thể lựa chọn phát triển Parathread trước.. khi thấy phù hợp có thể chuyển lên thành parachain và ngược lại, nếu làm parachain mà thấy không hiệu quả => có thể chuyển về parathread để giảm thiểu chi phí vận hành.
Substrate framework
Nó là 1 dạng Blockchain framework (khung sườn Blockchain chung), cung cấp các thành phần plug-and-play để xây dựng ứng dụng và mạng blockchain. Nó có sẵn rất nhiều module thư viện cho phép anh em triển khai logic Block, signatures (chữ ký), consensus mechanism (thuật toán đồng thuận), và các phần khác của chuỗi theo ý muốn. Cốt lõi của substrate là thúc đẩy quá trình xây dựng Blockchain trên Polkadot.
Hướng dẫn cách tạo Blockchain bằng Substrate
Các thành phần quan trọng cần build khi làm Blockchain:
- Database layer (lớp dữ liệu cơ sở).
- Transaction queue (hàng đợi giao dịch).
- Networking layer (lớp mạng).
- Block authoring.
- State transition function (hàm chuyển trạng thái).
Substrate sẽ cung cấp thành phần cốt lõi nhất tạo điều kiện thuận lợi cho quá trình custom chuỗi khối. Điều này giúp anh em tập trung hơn cho việc phát triển các tính năng hoặc từng use case cụ thể của dự án.
Anh em cũng có thể thiết lập nhanh Blockchain theo mẫu Node sẵn có (Substrate-based Node Template) đang hoạt động trên nền tảng.
Các bước thiết lập Blockchain riêng trên Polkadot
Trước khi làm theo hướng dẫn này, anh em cần chuẩn bị:
- Cài đặt Rust và cấu hình cục bộ để tạo môi trường phát triển.
- Hiểu biết một ít kiến thức về lập trình và sử dụng được terminal.
Bước 1: Set up Blockchain với Substrate
Để tạo môi trường phát triển, chúng ta sẽ sử dụng các mẫu sẵn có, Substrate templates cung cấp môi trường làm việc lý tưởng để bổ sung thêm nhiều tính năng và khả năng tùy biến cao.
git clone https://github.com/substrate-developer-hub/substrate-node-template
Chạy tiếp lệnh sau để thêm Nigtly cho Rust
rustup update nightly rustup target add wasm32-unknown-unknown --toolchain nightly
Tiếp theo thay đổi thư mục và kiểm tra latest version trong kho lưu trữ ./substrate-node-templatelatest
cd substrate-node-template git checkout latest
Kho lưu trữ này chứa các tệp Rust có thể sửa đổi cho phù hợp với các tính năng riêng của từng project.
Anh em hãy compile và run 1 Node bằng các lệnh sau:
$ cargo build --release 2021-12-16 00:36:30 Running in --dev mode, RPC CORS has been disabled. 2021-12-16 00:36:30 Substrate Node ... 2021-12-16 00:36:33 Highest known block at #0 2021-12-16 00:36:33 Prometheus exporter started at 127.0.0.1:9615 2021-12-16 00:36:33 Listening for new connections on 127.0.0.1:9944. 2021-12-16 00:36:36 Starting consensus session on top of parent 0x4bbcc70ccccc322d314a5df12a814c28d40e6879b7b930df5ac5a50fe4be4c30 2021-12-16 00:36:36 Prepared block for proposing at 1 (1 ms) [hash: 0x18f1c7bf91a1544c9a0e35ac08c8f036b4cb2f8d8297233fffadb94022b982a7; parent_hash: 0x4bbc…4c30; extrinsics (1): [0x6458…325e]] 2021-12-16 00:36:36 Pre-sealed block for proposal at 1. Hash now 0xf10d170d82617ff5df6752dc911d3483badf34b005c8c48a46aeb6b708c915b2, previously 0x18f1c7bf91a1544c9a0e35ac08c8f036b4cb2f8d8297233fffadb94022b982a7. 2021-12-16 00:36:36 Imported #1 (0xf10d…15b2) 2021-12-16 00:36:38 Idle (0 peers), best: #1 (0xf10d…15b2), finalized #0 (0x4bbc…4c30), ⬇ 0 ⬆ 0 ... 2021-12-16 00:36:42 Pre-sealed block for proposal at 2. Hash now 0x409138fda4f59dc093dce60fefbaca31c354ce18cef1bbea6f69a5009af6e0f4, previously 0x484e81ea10a15f04a640a595cb51d41eecc05919b4a16839852ba4d8a69440e1. ...
Trong output của terminal, blockchain của anh em sẽ tạo ra new block và đạt được sự đồng thuận về trạng thái.
Kế tiếp hãy thiết lập 1 giao diện người dùng để tương tác với blockchain đang chạy trên terminal. Mở 1 tab terminal mới và chạy command:
git clone https://github.com/substrate-developer-hub/substrate-front-end-template
Giờ hãy thay đổi thư mục thành thư mục mới tạo và cài đặt thuộc tính cần thiết cho giao diện substrate-front-end-template
yarn install
Sau khi cài đặt xong hết, anh em hãy dùng lệnh yarn start
Hình ảnh trên hiển thị thông tin hiện tại về chuỗi anh em đang kết nối, bao gồm khối hiện tại (current block) và khối cuối cùng (finalized block).
Trong basic UI này, bằng cách sử dụng transfer trên trang web chúng ta có thể copy address, dán vào input field để chuyển tiền vào tài khoản đó.
Chúng ta có thể add thêm nhiều thành phần hơn – được gọi là các pallet (bổ sung thêm nhiều chức năng). Hoặc xây dựng và xuất bản các pallet tùy biến của riêng mình (phần này mình sẽ hướng dẫn thêm sau). Sau đó dùng Pallet Interactor để đấu nối vào Node template.
Bước 2: Deploy Blockchain Application
Để test Blockchain, chúng ta cần start một chuỗi giống Polkadot, sau đó kết nối nó với Relay chain bằng môi trường testnet cục bộ.
Nhiều Relay chain có sẵn để phục vụ cho testnet trên polkadot. Và anh em có thể dùng Rococo hay Westend đều được – đều là những Parachain testnet phổ biến trên Polkadot.
Sau đó dùng Node Cumulus-based Substrate để cài đặt Parachain trên Rococo vì nó đã tích hợp sẵn với Cumulus. Node Cumulus này sẽ mô phỏng các sửa đổi cần thiết để đăng ký Parachain hoặc Parathread trên Rococo.
Để triển khai 1 Parachain thực tế trên mạng chính của Polkadot, ngày xưa anh em sẽ cần thông qua quy trình đấu giá nghiêm ngặt để được chọn, nhưng hiện tại chỉ cần dự án chất lượng, có định hướng phát triển và tầm nhìn tốt, anh em có thể liên hệ đội ngũ Polkadot để được hỗ trợ sử dụng khe cắm Parachain.
Kết luận
Trong bài viết này, mình đã giới thiệu về các khái niệm liên quan việc xây dựng Blockchain riêng trên mạng Polkadot như Parachain, parathread, relay chain và substrate framework. Như anh em thấy, mặc dù việc build chain riêng được hỗ trợ rất nhiều, nhưng đòi hỏi anh em cũng cần một số kiến thức nhất định về Blockchain, network và storage place để thiết lập các ứng dụng bên trên nó.
Phát triển Blockchain trên polkadot nó có lợi thế là Chain anh em làm ra luôn có thể giao tiếp với các parachain khác thông qua relay chain và tích hợp Oracle dễ dàng với các framework có sẵn.
Comments (No)