For the complete documentation index, see llms.txt. This page is also available as Markdown.

Bridge từ Base sang Chiliz Chain

Triển khai OFT Adapter trên Base và Native OFT trên Chiliz Chain sử dụng LayerZero v2 để bridge một token ERC-20 hiện có từ Base sang Chiliz Chain.

Để bridge một token hiện có từ Base sang Chiliz Chain, bạn cần viết và triển khai hai smart contract riêng biệt: một OFT Adapter trên chain nơi token đã tồn tại (Base), và một Native OFT trên chain đích (Chiliz Chain).

Lưu ý rằng LayerZero cung cấp QuickStart riêng cho các hợp đồng OFT, cũng như một hướng dẫn để học cách đúc từ Base sang một chain EVM khác như Chiliz Chain. Hướng dẫn đó sử dụng Optimism làm chain đích, nhưng bạn có thể thay thế bằng thông tin chi tiết của Chiliz Chain.

Yêu cầu trước khi bắt đầu

Hướng dẫn này yêu cầu những điều sau:

Chúng ta sẽ sử dụng Hardhat làm môi trường phát triển, cùng với Node/npx.

Bước 1: Phát triển hợp đồng

Chuẩn bị OFTAdapter trên Base

Hợp đồng OFTAdapter đóng vai trò như một két khóa cho token hiện có của bạn. Khi người dùng bridge token của họ ra khỏi Base, hợp đồng này sẽ khóa các token ERC-20 gốc lại.

Tạo một file mới tên BaseTokenAdapter.sol trong thư mục contracts của bạn:

Như bạn có thể thấy, hợp đồng này kế thừa hợp đồng LayerZero OFT Adapter, cũng như hợp đồng Ownable.sol chuẩn để cấp quyền quản trị. Bạn cần cả hai để chỉ mình bạn có thể kết nối các chain một cách an toàn.

Khi triển khai lên Base Mainnet, bạn phải truyền địa chỉ hợp đồng token hiện có của mình làm _token và địa chỉ Base Endpoint V2 (0x1a44076050125825900e736c501f859c50fE728c) làm _lzEndpoint.

Xem tất cả các endpoint có sẵn cho Chiliz Chain tại đây:

Chuẩn bị OFT trên Chiliz Chain

Vì token chưa tồn tại trên Chiliz Chain, bạn phải triển khai một hợp đồng OFT chuẩn. Hợp đồng này có quyền đúc token mới khi nhận được tin nhắn hợp lệ từ OFT Adapter đã triển khai trên Base, và đốt chúng khi người dùng bridge ngược lại.

Tạo một file mới tên ChilizTokenOFT.sol trong thư mục contracts của bạn:

Như bạn có thể thấy, hợp đồng này kế thừa hợp đồng LayerZero OFT cũng như hợp đồng Ownable.sol chuẩn, vì những lý do tương tự như đã nêu ở trên.

Khi triển khai lên Chiliz Chain, hãy đảm bảo rằng _name_symbol khớp với token gốc của bạn trên Base để tránh gây nhầm lẫn cho người dùng. Truyền địa chỉ Chiliz Chain Endpoint V2 (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) làm _lzEndpoint.

Xem tất cả các endpoint có sẵn cho Chiliz Chain tại đây:

Bước 2: Cấu hình LayerZero

Sau khi các hợp đồng của bạn đã sẵn sàng, bạn cần thông báo cho công cụ LayerZero biết cách chúng kết nối với nhau. Việc này được thực hiện bằng cách sử dụng file layerzero.config.ts nằm ở thư mục gốc của dự án Hardhat của bạn.

File cấu hình này đóng vai trò như bản thiết kế cho kiến trúc cross-chain của bạn. Nó ánh xạ các smart contract đã triển khai với Endpoint ID (EID) tương ứng trên LayerZero và xác định các đường dẫn (kết nối) giữa chúng.

Simple Config Generator là cách được khuyến nghị để tạo cấu hình wiring, vì nó tự động hóa việc kết nối hai chiều và áp dụng các cấu hình bảo mật được khuyến nghị.

Tạo hoặc cập nhật file layerzero.config.ts của bạn ở thư mục gốc của dự án Hardhat:

Mảng [EVM_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS] yêu cầu LayerZero Executor thực thi 200.000 đơn vị gas khi giao tin nhắn đến Chiliz, và tương tự 200.000 đơn vị gas khi trả tin nhắn về Base.

Bước 3: Quy trình triển khai

Sau khi các hợp đồng đã được viết và layerzero.config.ts đã được chuẩn bị, đã đến lúc triển khai các hợp đồng lên các mạng tương ứng. Bộ công cụ LayerZero V2 dựa vào plugin hardhat-deploy để quản lý việc triển khai một cách hiệu quả.

Bạn cần tạo hai script triển khai trong thư mục deploy/ của dự án: một cho Base Mainnet và một cho Chiliz Chain Mainnet.

Script triển khai Base Adapter

Tạo một file tên 01_deploy_base_adapter.ts trong thư mục deploy/. Script này truyền địa chỉ token hiện có của bạn và địa chỉ Base Endpoint V2 vào constructor.

Script triển khai Chiliz Chain OFT

Tạo file thứ hai tên 02_deploy_chiliz_oft.ts trong thư mục deploy/. Script này khởi tạo Native OFT mới trên Chiliz Chain.

Thực thi việc triển khai

Hãy đảm bảo rằng hardhat.config.ts của bạn đã cấu hình đúng URL RPC và private key cho cả Base và Chiliz Chain.

Kết nối bằng RPC

Chạy các lệnh sau trong terminal để triển khai các hợp đồng:

Sau khi triển khai hoàn tất, Hardhat sẽ lưu các địa chỉ hợp đồng trong thư mục deployments/. Bộ công cụ LayerZero sẽ tự động đọc các địa chỉ này khi chúng ta chạy lệnh wiring ở bước tiếp theo.

Bước 4: Wiring & Peering

Ở giai đoạn này, các hợp đồng BaseTokenAdapterChilizTokenOFT của bạn đã được triển khai trên mỗi chain, nhưng chúng hoàn toàn độc lập với nhau. Nếu hợp đồng trên Chiliz Chain nhận được tin nhắn yêu cầu đúc token, nó cần biết rằng tin nhắn đó thực sự xuất phát từ Adapter của bạn trên Base, chứ không phải từ một tác nhân độc hại.

Bạn phải thiết lập sự tin tưởng này bằng cách "kết nối" mật mã các hợp đồng lại với nhau như các peer.

Điều này được thực hiện bằng cách chạy lệnh wire, lệnh này sẽ tạo và thực thi các giao dịch trên cả Chiliz và Base.

Điều gì xảy ra bên trong?

Một cấu hình đường dẫn LayerZero V2 hoàn chỉnh thực sự yêu cầu 6 giao dịch trên mỗi chain:

  • setSendLibrary: Gán LayerZero MessageLib chịu trách nhiệm gửi tin nhắn (ví dụ: cấu hình để sử dụng V2 Send Library).

  • setReceiveLibrary: Gán MessageLib chịu trách nhiệm nhận tin nhắn. (Bao gồm gracePeriod, thường được đặt là 0).

  • setConfig (Send Library): Đặt các Decentralized Verifier Networks (DVN) và Executor cụ thể cho tin nhắn gửi đi.

  • setConfig (Receive Library): Đặt các DVN cụ thể cần thiết để xác minh tin nhắn đến.

  • setEnforcedOptions: Đặt giới hạn gas thực thi bắt buộc. Khi người dùng gửi tin nhắn từ Base, họ trả trước phí gas cho chain đích. Việc đặt enforced options đảm bảo họ trả đủ gas để LayerZero Executor xử lý thành công giao dịch trên Chiliz Chain.

  • setPeer: Liên kết Endpoint ID (EID) đích với một địa chỉ hợp đồng đáng tin cậy. Bạn phải thông báo cho hợp đồng Base tin tưởng hợp đồng Chiliz Chain, và hợp đồng Chiliz Chain tin tưởng hợp đồng Base.

Thực thi Wire Task

Chạy lệnh sau trong terminal:

Bộ công cụ sẽ tự động tính toán các tham số cần thiết, hiển thị cho bạn bảng các giao dịch sắp được thực thi, và gửi chúng lên Chiliz và Base bằng ví deployer của bạn.

Sau khi các giao dịch được xác nhận trên cả hai mạng, bridge token của bạn đã chính thức hoạt động và được cấu hình đầy đủ! Base Adapter hiện được phép gửi lệnh đúc đến Chiliz Chain, và Chiliz Chain được phép gửi lệnh mở khóa trở lại Base.

Bước 5: Vận hành & Kiểm tra

Sau khi các hợp đồng được triển khai và kết nối an toàn với nhau, token của bạn đã trở thành omnichain. Bước cuối cùng là thực hiện một giao dịch cross-chain từ Base Mainnet sang Chiliz Chain Mainnet.

1) Thực hiện giao dịch Cross-Chain

Bộ công cụ LayerZero V2 cung cấp một Hardhat task tích hợp sẵn để kiểm tra các giao dịch OFT trực tiếp từ terminal. Lệnh này sẽ ước tính phí gas cross-chain, tính phí ví của bạn bằng $ETH (token gas gốc trên chain nguồn, Base), và khởi tạo giao dịch chuyển nhượng.

Chạy lệnh sau:

Lệnh này thực hiện:

  1. Tra cứu Base Mainnet (30184) và Chiliz Mainnet (30409) trong cấu hình của bạn.

  2. Ước tính phí cross-chain do LayerZero Executor yêu cầu.

  3. Gọi hàm send() trên Base Adapter của bạn.

  4. Adapter khóa 10 token và phát một packet đến LayerZero Endpoint.

2) Theo dõi Packet trên LayerZero Scan

Các giao dịch cross-chain là bất đồng bộ. Trong khi giao dịch Chiliz của bạn sẽ được xác nhận trong vài giây, tin nhắn vẫn cần được xác minh và thực thi trên Base.

Để theo dõi hành trình này theo thời gian thực, hãy nhấp vào liên kết LayerZero Scan xuất hiện trong đầu ra CLI.

Tìm hiểu thêm về công cụ này tại đây:

Thiết lập giới hạn Gas

Việc đặt giới hạn gas là rất quan trọng, vì việc không làm như vậy có thể khiến các tin nhắn cross-chain của bạn thất bại trên mạng đích.

Khi người dùng bridge một token từ Base sang Chiliz Chain, họ trả phí gas cho cả hai chain trước trong một giao dịch duy nhất trên Base (sử dụng $ETH). LayerZero sau đó sử dụng một phần của phí đó để trả phí gas ETH thực tế cần thiết để thực thi giao dịch đúc trên Chiliz Chain.

Để đảm bảo LayerZero có đủ gas để xử lý thành công hàm lzReceive trên chain đích, bạn phải đặt Enforced Options. Nếu không đặt, giao dịch có thể bị hoàn lại trên chain đích do lỗi "Out of Gas".

Cấu hình Options

Option này được thiết lập trong file layerzero.config.ts của bạn. Cập nhật mảng connections để bao gồm khối enforcedOptions cho mỗi đường dẫn:

Giải thích các tham số:

  • msgType: 1: Đại diện cho một giao dịch chuyển nhượng token chuẩn. msgType: 2 được dùng cho các lệnh gọi "composed" (ví dụ: bridge một token và ngay lập tức stake nó chỉ trong một cú nhấp).

  • optionType: 1: Hướng dẫn Executor thực thi đơn giản hàm lzReceive.

  • gas: 200000: Giới hạn gas cơ bản an toàn cho các lệnh đúc và mở khóa OFT chuẩn. Bạn có thể điều chỉnh dựa trên mức tiêu thụ gas cụ thể của các hợp đồng đã triển khai.

Nếu bạn đặt option này sau khi đã kết nối các chain, bạn có thể kết nối lại với các option mới bằng cùng một lệnh:

Bộ công cụ sẽ tự động phát hiện các thay đổi và gửi giao dịch setEnforcedOptions() đến các hợp đồng của bạn trên cả Base và Chiliz. Bây giờ, bất cứ khi nào người dùng kích hoạt một bridge, các hợp đồng sẽ yêu cầu người dùng trả ít nhất 200.000 đơn vị gas trên chain đích, đảm bảo việc giao nhận đáng tin cậy.

Cập nhật lần cuối

Nội dung này có hữu ích không?