moonbeamMoonbeam
$ 0.317798
Issue Price
Block Explorer
Website
Twitter
Whitepaper

Token Release

Giới thiệu về XC-20s và các loại tài sản Cross-chain

Share on facebook
Share on twitter
Share on linkedin

Cross-Consensus Message (XCM) là cách thức gửi thông tin giữa các blockchains tương thích. Định dạng này giúp việc chuyển thông tin và tài sản (tài sản Substrate) giữa Moonbeam/Moonriver với relay chain hoặc các parachain khác trong hệ sinh thái Polkadot/Kusama.

Các tài sản Substrate có thể tương tác với nhau. Tuy nhiên, các nhà phát triển cần phải khai thác API của Substrate để tương tác với nó, làm cho trải nghiệm của nhà phát triển trở nên thống nhất, đặc biệt là đối với những người từ thế giới Ethereum. Do đó, để giúp các nhà phát triển khai thác khả năng tương tác gốc mà Polkadot/Kusama cung cấp, Moonbeam đã giới thiệu khái niệm XC-20S.

XC-20S là một nhóm tài sản độc đáo trên Moonbeam. Nó kết hợp sức mạnh của tài sản Substrate (khả năng tương tác native) nhưng cho phép người dùng và nhà phát triển tương tác với chúng thông qua giao diện ERC-20 quen thuộc thông qua hợp đồng precompile  (API Ethereum). Hơn nữa, các nhà phát triển có thể tích hợp XC-20 với các kết cấu phát triển Ethereum thông thường hoặc DAPPS.

Tài sản XC-20 sẽ được phân biệt bằng cụm từ XC đứng trước tên của nó. Ví dụ, đại diện KSM của Kusama trên Moonriver sẽ được gọi là XCKSM. Xin lưu ý rằng các Precompile của XC-20 không hỗ trợ chuyển đổi cross-chain và điều này được thực hiện một cách cố ý để tiếp cận gần hơn đến giao diện ERC-20 tiêu chuẩn.

XC-20 cần được đăng ký và liên kết với một tài sản khác trong hệ sinh thái trước khi sử dụng. Điều này được thực hiện thông qua một quá trình whitelisting bằng việc tự đề xuất. 

Tài sản XC-20 hiện tại

Danh sách các tài sản XC-20 có sẵn trên mỗi network như sau:

* Bạn có thể kiểm tra ID của từng tài sản ở đây

Hướng dẫn này sẽ chỉ cho bạn cách truy xuất XC-20 có sẵn và tính toán các địa chỉ precompile của chúng cho TestNet MoonBase Alpha bằng ứng dụng POLKADOT.JS. Ngoài ra, bạn sẽ tìm hiểu cách tương tác với precompile XC-20 sử dụng Remix.

XC-20 vs ERC-20

Mặc dù XC-20 và ERC-20 gần như giống nhau, tuy nhiên chúng ta vẫn có thể nhận thấy được một số điểm khác biệt.

Đầu tiên và quan trọng nhất, XC-20 là tài sản dựa trên Substrate, và như vậy, chúng cũng có thể bị ảnh hưởng trực tiếp bởi các tính năng Substrate như quản trị. Ngoài ra, các giao dịch XC-20S được thực hiện thông qua  Substrate API  không hiển thị từ các block explorer dựa trên EVM như Moonscan. Chỉ các giao dịch được thực hiện thông qua API Ethereum có thể được hiển thị tại các explorer đó.

Tuy nhiên, XC-20 có thể tương tác được qua giao diện ERC-20, vì vậy chúng có thêm lợi thế khi có thể truy cập được từ cả Substrate và API Ethereum. Điều này cung cấp tính linh hoạt cao hơn cho các nhà phát triển khi làm việc với các loại tài sản này và cho phép các tích hợp liền mạch với các hợp đồng thông minh dựa trên EVM như DEX, Nền tảng cho vay, và nhiều thứ khác.

Danh sách truy xuất các tài sản cross-chain

Để lấy một danh sách các XC-20 hiện có sẵn trên Testnet MoonBase Alpha, hãy sử dụng các ứng dụng POLKADOT.JS và đảm bảo rằng bạn đã kết nối với Moonbase Alpha. Sau đó kích vào tab Developer và chọn  Chain State  từ danh sách các lựa chọn thả xuống. Để truy vấn XC-20 có sẵn, bạn có thể làm theo các bước sau:

  1. Từ selected state query, chọn assets
  2. Chọn asset extinsic như hình minh họa
  3. Kích vào thanh trượt include option để vô hiệu hóa nó
  4. Chọn “+” để gửi truy vấn 

Kết quả sẽ hiển thị ID tài sản cùng với một số thông tin bổ sung cho tất cả các XC-20 đã đăng ký trên Moonbase Alpha.

Truy xuất metadata tài sản cross-chain

Để nhanh chóng nhận được nhiều thông tin về một XC-20 cụ thể, chẳng hạn như tên, biểu tượng và các vị trí của tài sản, bạn có thể sử dụng metadate extrinsic để nhận được metadata. 

  1. Từ danh sách thả xuống selected state query, chọn assets
  2. Chọn  metadata extinsic như hình minh họa
  3. Kích hoạt thanh trượt include option
  4. Nhập vào ID tài sản nhận được từ việc yêu cầu asset extrinsic. Xin lưu ý rằng nếu bạn sao chép và dán ID tài sản với dấu phẩy, dấu phẩy sẽ tự động bị xóa và số có thể bị cắt. Hãy chắc chắn rằng ID mà bạn nhập là chính xác. Trong ví dụ này, bạn có thể sử dụng ID tài sản 42259045809535163221576417993425387648
  5. Kích vào “+” đển gửi truy vấn

Với kết quả từ metadata, bạn có thể nhận thấy ID tài sản tương ứng với Vunit XC-20.

Tính toán địa chỉ Precompile  

Bây giờ bạn đã truy xuất  được một danh sách các XC-20 có sẵn, trước khi bạn có thể tương tác với chúng thông qua precompile, bạn cần lấy được địa chỉ precompile từ ID tài sản.

Địa chỉ precompile XC-20 được tính bằng cách sử dụng các địa chỉ sau:

address = “0xFFF…” + DecimalToHex(AssetId)

Với phép tính trên, bước đầu tiên là lấy hiển thị U128 của ID tài sản và chuyển đổi nó thành giá trị hex. Bạn có thể sử dụng công cụ tìm kiếm của bạn để tìm kiếm một công cụ đơn giản để chuyển đổi số thập phân sang giá trị hex. Đối với ID tài sản 42259045809535163221576417993425387648, giá trị hex là 1fcacbd218edc0eba20fc2308c778080.

Vì các địa chỉ Ethereum dài 40 ký tự, bạn sẽ cần thêm FS vào giá trị HEX cho đến khi địa chỉ có 40 ký tự.

Giá trị HEX đã được tính toán dài 32 ký tự, vì vậy sẽ thêm 8 fs vào giá trị hex sẽ cung cấp cho bạn địa chỉ 40 ký tự bạn cần để tương tác với precompile XC-20. Trong ví dụ này, địa chỉ đầy đủ là 0xFFFFFFFF1FCACBD218edc0eba20fc2308c778080.

Các precompile của tài sản sẽ rơi vào giữa khoản 0xFFFFFFFF00000000000000000000000000000000 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.

Bây giờ bạn đã tính toán địa chỉ precompile xC-20, bạn có thể sử dụng địa chỉ đó để tương tác với XC-20 giống như cách mà bạn thực hiện với bất kỳ ERC-20 nào khác trong Remix.

Giao diện ERC-20

Giao diện ERC20.SOL trên Moonbeam tuân theo tiêu chuẩn token EIP-20, đó cũng là giao diện API tiêu chuẩn cho token trong các hợp đồng thông minh. Tiêu chuẩn xác định các hàm và hành động cần thiết rằng hợp đồng token phải thực hiện để có thể tương tác với các ứng dụng khác nhau.

Giao diện bao gồm các hàm sau:

  • name() – Chức năng chỉ đọc trả về tên của token
  • symbol() – Chức năng chỉ đọc trả về biểu tượng của token
  • decimals() – chức năng chỉ đọc trả về số thập phân của token
  • totalSupply() – Chức năng chỉ đọc trả về tổng số token tồn tại
  • balanceOf(address who)  – Chức năng chỉ đọc trả về số dư của địa chỉ đã chỉ định
  • allowance(address owner, address spender)– Chức năng chỉ đọc kiểm tra và trả về số lượng token mà chủ sở hữu được phép cho một người sử dụng
  • transfer(address to, uint256 value) – Chuyển một lượng token nhất định tới một địa chỉ được chỉ định và trả về TRUE nếu việc chuyển giao thành công
  • approve(address spender, uint256 value) – Phê duyệt địa chỉ được cung cấp để sử dụng một lượng token được chỉ định thay mặt cho Msg.sender. Trả về TRUE nếu thành công
  • transferFrom(address from, address to, uint256 value) – Chuyển token từ một địa chỉ đã chỉ định đến một địa chỉ cụ thể khác và trả về TRUE nếu thành công

Ghi chú

Tiêu chuẩn ERC-20 không chỉ định cụ thể quá trình triển khai của nhiều yêu cầu phê duyệt. Thay đổi số dư khả dụng với loại hàm này nhiều lần có thể đến đến sự tấn cộng của các vector. Để tránh thứ tự giao dịch không chính xác hoặc ngoài ý muốn, trước tiên bạn có thể giảm số dư khả dụng với 0 và sau đó đặt khoản khả dụng mong muốn. Để biết thêm chi tiết về vector có thể tấn công, bạn có thể xem tại ERC-20 API: An Attack Vector on Approve/TransferFrom Methods

Giao diện cũng bao gồm các hành động cần thiết sau:

  • Transfer(address indexed from, address indexed to, uint256 value) – báo hiệu khi chuyển khoản đã được thực hiện
  • Approval(address indexed owner, address indexed spender, uint256 value) – báo hiệu khi phê duyệt đã được đăng ký

Kiểm tra điều kiện tiên quyết

Để phê duyệt chi tiêu hoặc chuyển XC-20 thông qua precompile, bạn sẽ cần:

  • Metamask được cài đặt và kết nối với Testnet Moonbase Alpha 
  • Tạo hoặc có hai tài khoản trên Moonbase Alpha
  • Ít nhất một trong những tài khoản cần có token dev. Bạn có thể có được token cho mục đích thử nghiệm từ Mission Control

Tương tác với precompile trước khi sử dụng Remix

Bạn có thể tương tác với precompile XC-20 bằng Remix. Đầu tiên, bạn sẽ cần thêm giao diện ERC-20 vào Remix:

  1. Nhận một bản sao của erc20.sol
  2. Sao chép và dán nội dung tệp vào tệp Remix có tên Ierc20.SOL

Dịch hợp đồng

Khi bạn đã tải giao diện ERC-20 trong Remix, bạn sẽ cần phải dịch nó:

  1. Kích vào tab  Compile, thứ hai từ trên xuống
  2. Chọn Compile the IER20.sol file

Nếu giao diện được dịch thành công, bạn sẽ thấy một dấu kiểm màu xanh bên cạnh tab Compile.

Truy cập hợp đồng

Thay vì triển khai Precompile ERC-20, bạn sẽ truy cập giao diện với địa chỉ được cung cấp của precompile XC-20:

  1. Chọn tab Deploy and Run ngay bên dưới tab Compile in Remix. Xin lưu ý hợp đồng precompile đã được triển khai
  2. Đảm bảo đã được Injected Web3 được chọn trong danh sách thả xuống Environment. Khi bạn chọn Injected Web, bạn có thể được MetaMask yêu cầu  kết nối tài khoản của mình với Remix
  3. Đảm bảo tài khoản chính xác được hiển thị tại Account
  4. Đảm bảo IERC20 – IERC20.sol  được chọn trong danh sách thả xuống  Contract. Vì đây là một hợp đồng được precompile, không cần phải triển khai bất kỳ code nào. Thay vào đó, Moonbeam sẽ cung cấp địa chỉ của Precompile trong mục At Address 
  5. Cung cấp địa chỉ của precompile XC-20 được tính toán như hướng dẫn ở trên, 0xFFFFFFFF1FCACBD218edc0eba20fc2308c778080 và kích vào  At Address

Ghi chú

Tùy chọn, bạn có thể kiểm tra địa chỉ precompile XC-20 bằng cách truy cập công cụ tìm kiếm của bạn và tìm kiếm một công cụ để kiểm tra địa chỉ. Khi địa chỉ đã được kiểm tra, bạn có thể sử dụng nó trong mục At Address

Precompile IC20 dành cho XC-20 sẽ hiển thị trong danh sách các hợp đồng được triển khai. Bây giờ bạn tự do yêu cầu bất kỳ hàm ERC-20 tiêu chuẩn nào để nhận thông tin về XC-20 hoặc chuyển XC-20.

Để tìm hiểu cách tương tác với từng hàm, bạn có thể  xem hướng dẫn ERC-20 Precompile và sửa đổi nó để tương tác với precompile XC-20.

Nguồn: Moonbeam Network

Moonbeam Network Community

Website | Twitter | TwitterVN | Telegram | TelegramVN

Tác giả

Theo dõi Syndicator tại

moonbeamMoonbeam
$ 0.317798
Issue Price
Block Explorer
Website
Twitter
Whitepaper

Token Release