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

Bridge từ Chiliz Chain sang Base

Triển khai OFT Adapter trên Chiliz Chain và Native OFT trên Base bằng LayerZero v2 để tạo token omnichain trên Base từ Chiliz Chain.

Để bridge một token hiện có từ Chiliz Chain sang Base, 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 (Chiliz Chain), và một Native OFT trên chain đích (Base).

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

Điều kiện tiên quyết

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 Chiliz Chain

Hợp đồng OFTAdapter hoạt động như một hộp khóa cho token hiện có của bạn. Khi người dùng bridge token ra khỏi Chiliz Chain, 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 ChilizTokenAdapter.sol trong thư mục contracts của bạn:

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

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

Xem tất cả các endpoint khả dụng cho Chiliz Chain tại đây:

Chuẩn bị OFT trên Base

Vì token chưa tồn tại tự nhiên trên Base, bạn phải triển khai một hợp đồng OFT tiêu 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 Chiliz, và đốt chúng khi người dùng bridge trở lại.

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

Như bạn thấy, hợp đồng này mở rộng hợp đồng LayerZero OFT cũng như hợp đồng Ownable.sol tiêu chuẩn, vì những lý do đã nêu ở trên.

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

Xem tất cả các endpoint khả dụng cho Base tại đây:

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

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

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 tới các LayerZero Endpoint ID (EID) tương ứng và định nghĩa 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ị bên trong.

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

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

Với các hợp đồng đã viết xong và layerzero.config.ts đã 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 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 Chiliz Chain Mainnet và một cho Base Mainnet.

Script triển khai Chiliz Adapter

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

Script triển khai Base OFT

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

Thực hiện triển khai

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

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 hoàn tất triển khai, Hardhat sẽ lưu các địa chỉ hợp đồng vào 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 ChilizTokenAdapterBaseTokenOFT 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 Base nhận được một 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 Chiliz, chứ không phải từ một kẻ tấn công độc hại.

Bạn phải thiết lập sự tin tưởng này bằng cách "wiring" các hợp đồng lại với nhau theo cặp thông qua mật mã.

Đ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 pathway LayerZero V2 hoàn chỉnh thực ra yêu cầu 6 giao dịch trên mỗi chain:

  • setSendLibrary: Gán MessageLib của LayerZero 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 đặt là 0).

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

  • setConfig (Receive Library): Đặt các DVN cụ thể cần thiết để xác minh các 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ừ Chiliz Chain, họ trả trước 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 một Endpoint ID (EID) đích với một địa chỉ hợp đồng được tin tưởng. Bạn phải thông báo cho hợp đồng Chiliz Chain tin tưởng hợp đồng Base, và hợp đồng Base tin tưởng hợp đồng Chiliz Chain.

Thực thi tác vụ Wire

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 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, cầu nối token của bạn đã chính thức hoạt động và được cấu hình đầy đủ! Chiliz Adapter hiện được phép gửi lệnh đúc token tới Base, và Base được phép gửi lệnh mở khóa trở lại Chiliz.

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

Với các hợp đồng đã triển khai và kết nối bảo mật với nhau, token của bạn giờ là omnichain. Bước cuối cùng là thực hiện một giao dịch chuyển cross-chain từ Chiliz Chain Mainnet sang Base Mainnet.

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

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

ChilizTokenAdapter cần quyền khóa Fan Tokens hiện có của bạn, một giao dịch approve() ERC-20 là bắt buộc.

LayerZero CLI phát hiện điều này và tự động xử lý việc phê duyệt trước khi gửi tin nhắn.

Chạy lệnh sau:

Lệnh này thực hiện những gì:

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

  2. Báo giá phí cross-chain mà LayerZero Executor yêu cầu.

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

  4. Adapter khóa 10 token và phát ra một packet tới 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 đường dẫn 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à cực kỳ quan trọng, vì nếu không làm vậy, các tin nhắn cross-chain của bạn có thể thất bại trên mạng đích.

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

Để đả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ị revert trên chain đích do lỗi "Out of Gas".

Cấu hình Options

Tùy chọn 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 pathway:

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

  • msgType: 1: Đại diện cho một giao dịch chuyển token tiêu 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ó trong một lần nhấp).

  • optionType: 1: Hướng dẫn Executor chỉ thực thi hàm lzReceive.

  • gas: 200000: Giới hạn gas cơ bản an toàn cho các lần đúc và mở khóa OFT tiêu 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 tùy chọn này sau khi đã wiring các chain, bạn có thể wiring lại với các tùy chọn đã có bằng cách dùng lệnh tương tự:

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