moonbeamMoonbeam
$ 1.21
Issue Price
Block Explorer
Website
Twitter
Whitepaper

Token Release

Giới thiệu Cross-Consensus Messaging (XCM)

Share on facebook
Share on twitter
Share on linkedin

Cấu trúc của Polkadot cho phép các parachain tương tác với nhau một cách tự nhiên và nguyên bản, cho phép chuyển cross-blockchain bất kỳ loại dữ liệu hoặc tài sản nào.

Để thực hiện điều đó, Cross-Consensus Message (XCM) xác định ngôn ngữ cho việc thực hiện chuyển thông tin giữa hai blockchain tương tác với nhau. XCM không dành riêng cho Polkadot, vì nó hướng đến mục tiêu trở thành một ngôn ngữ chung và có thể mở rộng giữa các hệ thống đồng thuận khác nhau.

Các định nghĩa chung về XCM

  • XCM – viết tắt của cross-consensus message, đó là phương thức chung để các hệ thống đồng thuận giao tiếp với nhau
  • VMP – là viết tắt của  vertical message passing, nó cho phép các parachain trao đổi thông điệp với relay chain. UMP (upward message passing) cho phép các parachain gửi thông tin đến relay chain của họ, trong khi DMP (downward message passing) cho phép relay chain truyền thông tin xuống một trong các parachain của chúng
  • XCMP – viết tắt của cross-consensus message passing, cho phép các parachain trao đổi thông tin với các parachain khác trên cùng một relay chain
  • HRMP – là viết tắt của horizontal relay-routed message passing, một giao thức stop-gap trong khi các triển khai XCMP đầy đủ được khởi chạy. Giao diện tương tự như XCMP, nhưng thông tin được lưu trữ trên relay chain 
  • Multilocation – 1 phương thức chỉ định một điểm trong toàn bộ relay chain / hệ sinh thái parachain từ một điểm ban đầu cụ thể, tương đối hoặc tuyệt đối. Ví dụ: nó có thể được sử dụng để chỉ định một parachain cụ thể, tài sản, tài khoản hoặc thậm chí một pallet bên trong parachain. Theo thuật ngữ chung, một multilocation được xác định với parents và  interior. Parents tức là số lượng “hops” (bước nhảy) vào một blockchain mẹ mà bạn cần thực hiện từ một điểm ban đầu nhất định. Interior chỉ số lượng trường bạn cần để xác định điểm đích (target point). Ví dụ: để hướng đến một parachain có ID 1000 từ một parachain khác, multilocation sẽ là {“parents”: 1, “interior”: {“X1”: [{“Parachain”: 1000}]}}

Giao thức truyền tải XCM

Polkadot triển khai hai giao thức cross-consensus hoặc giao thức truyền tải (transport) đối với các hành động trên các thông tin XCM giữa các parachain của nó, Moonbeam là một trong số đó:

  • Vertical Message Passing (VMP)  – được chia thành hai loại giao thức truyền tải thông tin:
  • Upward Message Passing (UMP)  – cho phép các parachain gửi thông tin đến relay chain của họ, ví dụ: từ Moonbeam đến Polkadot
  • Downward Message Passing (DMP) – cho phép relay chain truyền thông tin xuống một trong các parachain của nó, ví dụ, từ Polkadot đến Moonbeam
  • Cross-Chain Message Passing (XCMP) – cho phép hai parachain trao đổi thông tin với điều kiện là chúng được kết nối với cùng một relay chain. Các giao dịch cross-chain được giải quyết bằng cách sử dụng cơ chế xếp hàng đơn giản dựa trên Merkle tree để đảm bảo tính trung thực. Các Collator trao đổi thông tin giữa các parachain, trong khi các trình xác thực (validator) của relay chain sẽ xác minh rằng quá trình truyền thông tin đã được tiến hành.

Ghi chú

Hiện tại, trong khi XCMP đang được phát triển, có một giao thức stop-gap được thực hiện được gọi là orizontal Relay-routed Message Passing (HRMP), trong đó các thông tin được lưu trữ và đọc từ relay chain. Điều này sẽ không được sử dụng trong tương lai để triển khai XCMP đầy đủ

Hơn nữa, hai trường hợp sử dụng phổ biến nhất đối với XCM messages, ít nhất là trong giai đoạn đầu của quá trình triển khai, là:

  • Asset Teleporting  – bao gồm việc di chuyển một tài sản từ blockchain này sang blockchain khác bằng cách tiêu hủy số lượng được chuyển trong chain ban đầu và tạo một bản sao (cùng số lượng đã bị phá hủy) trên chain đích. Trong những trường hợp như vậy, mỗi chain giữ tài sản native dưới dạng dự trữ, tương tự như cơ chế bridging burn-mint. Mô hình yêu cầu một mức độ tin cậy nhất định, vì bất kỳ chain nào trong hai chain đều có thể tạo ra nhiều tài sản hơn
  • Remote Transfers – bao gồm việc di chuyển tài sản từ blockchain này sang blockchain khác thông qua tài khoản trung gian trong chain ban đầu được sở hữu phi tin cậy bởi chain đích. Tài khoản trung gian này được gọi là tài khoản “Sovereign”. Trong những trường hợp như vậy, tài sản trong chain ban đầu không bị phá hủy mà do tài khoản Sovereign nắm giữ. Việc thực thi XCM trong chain đích thực hiện mint 1 đại diện được wrap (còn được gọi là “virtual” hoặc “cross-chain”) tới một địa chỉ đích. Phiên bản đại diện được wrap có thể hoán đổi cho nhau trên cơ sở 1: 1 với tài sản native. Điều này tương tự với cơ chế bridging lock-mint / burn-unlock

Bạn có thể tìm thấy bài viết chi tiết hơn về XCM trong Polkadot Wiki.

Ban đầu, Moonbeam sẽ chỉ hỗ trợ remote transfers. Tất cả các tài sản blockchain trên Moonbeam sẽ được gọi là xc + TokenName. Ví dụ: đại diện KSM của Kusama trên Moonriver sẽ được gọi là xcKSM. Bạn có thể đọc thêm về tiêu chuẩn XC-20 tại đây.

Các nhà phát triển phải hiểu rằng việc gửi các XCM message không chính xác có thể dẫn đến việc mất vốn. Do đó, điều cần thiết là phải kiểm tra các tính năng XCM trên TestNet trước khi chuyển sang môi trường sản xuất.

Đăng ký kênh

Trước khi hai chain có thể bắt đầu tương tác với nhau, một kênh thông tin phải được mở. Các kênh là một chiều, có nghĩa là một kênh từ chain A đến chain B sẽ chỉ chuyển thông tin từ A đến B. Do đó, chỉ có thể chuyển tài sản từ tin A đến B. Do đó, phải mở hai kênh để gửi thông tin (hoặc chuyển tài sản) qua lại.

Một kênh cho XCM giữa relay chain và parachain được tự động mở khi kết nối được thiết lập. Tuy nhiên, khi parachain A muốn mở một kênh liên lạc với parachain B, parachain A phải gửi một channel extrinsic trong mạng của nó. Extrinsic này cũng là một XCM! Bên nhận XCM này là relay chain và extrinsic sẽ bao gồm thông tin như:

  • Địa điểm đích – nơi thông tin sẽ được triển khai (trong trường hợp này là relay chain)
  • Tài khoản sẽ trả phí (thanh toán bằng token relay chain)
  • Phí mà giao dịch có thể tiêu tốn khi thực hiện
  • Dữ liệu yêu cầu được mã hóa, thu được bằng cách thực hiện tương tự như trên relay chain. Điều này bao gồm thông tin được mã hóa sau:
  • Phương thức được yêu cầu trong relay chain (open channel)
  • Parachain ID của chain đích (parachain B trong ví dụ này)
  • Số lượng thông tin tối đa trong hàng đợi đích
  • Kích thước tối đa của thông tin sẽ được gửi

Phí giao dịch được thanh toán bằng phiên bản đại diện cross-chain (xc) của tài sản relay chain (xcRelayChainAsset). Ví dụ: đối với Kusama / Moonriver, phí giao dịch sẽ được thanh toán bằng xcKSM. Do đó, tài khoản thanh toán phí phải có đủ xcRelayChainAsset. Điều này có thể được giải quyết trên Moonbeam / Moonriver bằng cách tính phí từ các XCM message đến, được thanh toán trong tài sản trên chain ban đầu, được gửi đến kho bạc và sử dụng tài khoản kho bạc để thanh toán cho extrinsic đăng ký kênh 

Mặc dù parachain A đã bày tỏ ý định mở kênh XCM với parachain B, nhưng parachain B đã không thông báo  cho relay chain về ý định nhận  thông tin từ parachain A. Do đó, để có một kênh được thiết lập, parachain B cũng phải gửi một extrinsic (cũng là một XCM) vào relay chain

Extrinsic kênh  chấp nhận  tương tự như đăng ký kênh trước đó.  Tuy nhiên, dữ liệu yêu cầu được mã hóa chỉ bao gồm phương thức mới (kênh chấp nhận) và ID parachain của bên gửi (parachain A trong ví dụ này). Sau khi cả hai bên đều đồng ý, kênh sẽ được mở trong lần thay đổi giai đoạn tiếp theo.

Tất cả các hành động được đề cập ở trên có thể được thực hiện thông qua SUDO (nếu có) hoặc thông qua  Democracy (ủy ban kỹ thuật hoặc trưng cầu ý kiến).

Khi kênh được thiết lập, tài sản cần được đăng ký trước khi được chuyển qua XCM, bằng cách đưa vào thời gian chạy dưới dạng hằng số hoặc thông qua pallet. Quy trình đăng ký tài sản cho Moonbeam sẽ được giải thích trong phần tiếp theo.

Đăng ký tài sản XCM

Khi một kênh được thiết lập giữa các parachains (hoặc relay chain-parachain), việc đăng ký tài sản có thể xảy ra.

Nói chung, đăng ký tài sản có thể thực hiện ở cấp độ thời gian chạy, có nghĩa là cần phải nâng cấp thời gian chạy, sau khi tài sản  được đăng ký và hỗ trợ bởi XCM. Tuy nhiên, Moonbeam đã bao gồm một pallet Substrate để xử lý việc đăng ký tài sản mà không cần nâng cấp thời gian chạy, giúp quá trình này trở nên đơn giản hơn rất nhiều.

Khi đăng ký tài sản XCM, extrinsic phải bao gồm (trong số những thứ khác):

  • Parachain ID của nơi đặt tài sản gốc
  • Loại tài sản. Tại thời điểm viết bài, bạn có thể đăng ký token parachain native hoặc một tài sản được tạo thông qua  Pallet Assets, bằng cách cung cấp chỉ mục của nó
  • Tên nội dung, ký hiệu và số thập phân
  • Số dư tối thiểu

Sau khi tài sản XCM được đăng ký, đơn vị thực thi tính bằng giây thực thi có thể được thiết lập. Đây là số liệu được sử dụng để tính phí XCM message phải chi trả để thực hiện trong parachain đích, tương tự như phí gas trong thế giới Ethereum. Tuy nhiên, phí có thể được tính bằng một token khác, ví dụ: DOT. Nếu số lượng token được gửi qua XCM không đủ để thực hiện XCM, giao dịch XCM không thành công và phí đã trừ sẽ không được hoàn lại.

Khi kênh đã được thiết lập thành công, tài sản XCM được đăng ký trong parachain đích và đơn vị thực thi tính theo giây được thiết lập, người dùng sẽ có thể bắt đầu chuyển tài sản.

Tất cả các hành động được đề cập ở trên có thể được thực hiện thông qua SUDO (nếu có) hoặc thông qua Democracy (ủy ban kỹ thuật hoặc trưng cầu ý kiến).

Moonbeam và XCM

Vì Moonbeam là một parachain trong hệ sinh thái Polkadot, một trong những cách triển khai trực tiếp nhất của XCM là cho phép chuyển tài sản từ Polkadot và các parachain khác từ / đến Moonbeam. Điều này sẽ cho phép người dùng mang token của họ đến Moonbeam và tất cả các dApp của nó.

Mở rộng dựa trên các tính năng tương thích Ethereum độc đáo của Moonbeam, các tài sản nước ngoài sẽ được thể hiện qua giao diện ERC-20 tiêu chuẩn thông qua một hợp đồng được precompile. Tài sản  XCM trên Moonbeam được gọi là XC-20, để phân biệt tài sản XCM native với ERC-20 được tạo thông qua EVM. Hợp đồng precompile sẽ truy cập các chức năng Substrate cần thiết để thực hiện các hành động được yêu cầu. Tuy nhiên, từ quan điểm của nhà phát triển, XC-20 là token ERC-20 với lợi ích bổ sung là trở thành tài sản cross-chain XCM và dApp có thể dễ dàng hỗ trợ chúng thông qua giao diện ERC-20 quen thuộc.

Precompile không hỗ trợ chuyển cross-chain để đảm bảo kết nối gần nhất với giao diện ERC-20 ban đầu. Do đó, các nhà phát triển sẽ phải dựa vào API Substrate và XCM để chuyển tài sản trở lại chain ban đầu của chúng hoặc trên một hợp đồng precompile khác để truy cập các tính năng dựa trên XCM từ API Ethereum.

Tùy thuộc vào blockchain đích, việc chuyển tài sản có thể được thực hiện thông qua teleporting  hoặc remote transfers, đây là phương pháp phổ biến nhất được sử dụng. Ban đầu, Moonbeam sẽ chỉ hỗ trợ cremote transfers.

Các phần sau của bài viết này sẽ  cung cấp tổng quan chi tiết  về hai trường hợp sử dụng đầu tiên cho XCM trên Moonbeam: chuyển tài sản từ / đến Polkadot (qua VMP) và chuyển tài sản từ / đến các parachain khác (qua XCMP). Trang này sẽ được mở rộng khi có nhiều tính năng tương tác hơn, chẳng hạn như sự di chuyển của token ERC-20 từ Moonbeam sang các parachain khác hoặc sự di chuyển của các tài sản khác sang Moonbeam dưới dạng đại diện ERC-20.

Moonbeam & Polkadot

Vì Moonbeam là một parachain trong hệ sinh thái Polkadot, XCM + VMP cho phép chuyển DOT từ / đến Polkadot / Moonbeam. Phần này trình bày tổng quan chi tiết hơn về tất cả các hành động liên quan trong quá trình thực thi các XCM message như vậy.

Khi một dự án được giới thiệu dưới dạng parachain, nó sẽ tự động có một kênh liên lạc hai chiều với relay chain. Do đó, không cần phải thực hiện đăng ký chain. Tuy nhiên, token native của relay chain cần được đăng ký trên parachain.

Alice (Polkadot) muốn chuyển một lượng DOT nhất định từ Polkadot vào tài khoản của cô ấy trên Moonbeam, tên là Alith. Do đó, cô ấy khởi tạo một XCM để thể hiện ý định của mình. Đối với những giao dịch chuyển như vậy, Moonbeam sở hữu tài khoản Sovereign trên Polkadot.

Do đó, việc thực thi  XCM message trên Polkadot sẽ chuyển số lượng DOT vào tài khoản Sovereign của Moonbeam trên Polkadot. Sau khi tài sản được gửi, phần thứ hai của thông tin sẽ được gửi đến Moonbeam.

Moonbeam sẽ thực hiện hành động một cách cục bộ mà XCM message  được lập trình để thực hiện. Trong trường hợp này, đó là mint  và chuyển cùng một lượng xcDOT (DOT cross-chain) vào tài khoản do Alice chỉ định, trong trường hợp này là Alith. Phí thực hiện XCM trong parachain đích được trả bằng chính tài sản đang được chuyển (ví dụ này là xcDOT).

Lưu ý những điều dưới đây:

  • Tài khoản Alice và Alith có thể khác nhau. Ví dụ: tài khoản của Polkadot là SR25519 (hoặc ED25519), trong khi của Moonbeam là tài khoản ECDSA (theo kiểu Ethereum). Chúng cũng có thể có các chủ sở hữu khác nhau
  • Có một mức độ tin cậy nhất định, trong đó chain này dựa vào chain kia để thực thi phần của nó trong XCM message. Điều này được lập trình ở mức thời gian chạy, vì vậy có thể dễ dàng xác minh.
  • Đối với ví dụ này, DOT cross-chain (xcDOTS) là bản đại diện được wrap của các DOT ban đầu đang được lưu giữ trong tài khoản Sovereign của Moonbeam trên Polkadot. xcDOT có thể được chuyển trong Moonbeam bất kỳ lúc nào và chúng cũng có thể được đổi lấy DOT trên cơ sở 1:1

Alith đã gửi xcDOT của cô ấy vào một pool thanh khoản. Tiếp theo, Charleth có được một số xcDOT bằng cách hoán đổi với pool thanh khoản đó và anh ta muốn chuyển một số xcDOT vào tài khoản Polkadot của Charley. Do đó, anh ta khởi tạo một XCM thể hiện ý định của mình.

Do đó, việc thực thi XCM message trên Moonbeam sẽ tiêu hủy số lượng xcDOT. Sau khi tài sản bị tiêu hủy, phần thứ hai của thông tin sẽ được gửi đến Polkadot.

Polkadot sẽ thực hiện hành động một cách cục bộ, và XCM message được lập trình để thực hiện cục bộ. Trong trường hợp này, đó là chuyển cùng một lượng xcDOT đã tiêu hủy từ tài khoản Sovereign trên Moonbeam sang tài khoản do Charleth chỉ định, trong trường hợp này là Charley.

Moonbeam & các Parachain khác

Vì Moonbeam là một parachain trong hệ sinh thái Polkadot, XCM + XCMP cho phép chuyển tài sản từ / đến Moonbeam và các parachain khác. Phần này trình bày tổng quan chi tiết hơn về những điểm khác biệt chính so với XCM từ / đến Polkadot / Moonbeam.

Yêu cầu đầu tiên là phải tồn tại một kênh giữa các parachain và tài sản được chuyển phải được đăng ký trong parachain đích. Chỉ khi cả hai điều kiện được đáp ứng, XCM mới có thể được gửi giữa các parachain.

Sau đó, khi Alith (Moonbeam) chuyển một lượng GLMR nhất định từ Moonbeam sang một tài khoản khác (Alice) trong một parachain đích, các token sẽ được gửi đến một Tài khoản Sovereign thuộc sở hữu của parachain đích đó trên Moonbeam.

Khi XCM message được thực thi trong parachain đích, đồng nghĩa điều này dự kiến sẽ được xử lý và chuyển cùng một lượng xcGLMRs (GLMR cross-chain) đến tài khoản được chỉ định bởi Alith, trong trường hợp này là Alice. Phí thực hiện XCM trong parachain đích  được thanh toán trong số tài sản được chuyển (ví dụ này là xcGLMRs).

Quá trình tương tự đối với xcGLMRs khi chuyển trở lại Moonbeam như đã giải thích trong phần trước. Đầu tiên, việc thực thi XCM message ghi số lượng xcGLMR được trả về cho Moonbeam. Sau khi tiêu hủy, phần còn lại của thông tin được gửi đến Moonbeam thông qua relay chain. Moonbeam sẽ thực thi một cách  cục bộ XCM message và chuyển GLMR (cùng một lượng xcGLMR đã tiêu hủy) từ tài khoản Sovereign trên parachain đích đến địa chỉ được chỉ định.

Nguồn: Moonbeam Network

Moonbeam Network Community

Website | Twitter | TwitterVN | Telegram | TelegramVN

Tác giả

Theo dõi Syndicator tại

moonbeamMoonbeam
$ 1.21
Issue Price
Block Explorer
Website
Twitter
Whitepaper

Token Release