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

Base에서 Chiliz Chain으로 브리지

LayerZero v2를 사용하여 Base에 OFT 어댑터를, Chiliz Chain에 네이티브 OFT를 배포하여 기존 ERC-20 토큰을 Base에서 Chiliz Chain으로 브릿징합니다.

Base에서 Chiliz Chain으로 기존 토큰을 브릿징하려면 두 개의 별도 스마트 컨트랙트를 작성하고 배포해야 합니다: 토큰이 이미 존재하는 체인(Base)에 OFT 어댑터를, 대상 체인(Chiliz Chain)에 네이티브 OFT를 배포합니다.

LayerZero는 OFT 컨트랙트에 대한 자체 QuickStart와 Chiliz Chain과 같은 다른 EVM 체인으로 민팅하는 방법 튜토리얼을 제공합니다. 해당 튜토리얼은 Optimism을 대상 체인으로 사용하지만, Chiliz Chain의 세부 정보로 대체할 수 있습니다.

사전 요구사항

이 가이드에는 다음이 필요합니다:

개발 환경으로는 Hardhat과 Node/npx를 사용합니다.

1단계: 컨트랙트 개발

Base에서 OFTAdapter 준비하기

OFTAdapter 컨트랙트는 기존 토큰의 잠금 상자 역할을 합니다. 사용자가 Base에서 토큰을 브릿징할 때, 이 컨트랙트가 원래 ERC20 토큰을 잠급니다.

contracts 폴더에 BaseTokenAdapter.sol 파일을 새로 만드세요:

이 컨트랙트는 LayerZero OFT 어댑터 컨트랙트와 관리 키를 제공하기 위한 표준 Ownable.sol 컨트랙트를 확장합니다. 체인을 안전하게 연결하려면 두 가지 모두 필요합니다.

Base Mainnet에 배포할 때, _token으로 기존 토큰의 컨트랙트 주소를, _lzEndpoint로 Base Endpoint V2 주소(0x1a44076050125825900e736c501f859c50fE728c)를 전달해야 합니다.

Chiliz Chain에서 사용 가능한 모든 엔드포인트를 확인하세요:

Chiliz Chain에서 OFT 준비하기

토큰이 Chiliz Chain에 아직 네이티브로 존재하지 않으므로, 표준 OFT 컨트랙트를 배포해야 합니다. 이 컨트랙트는 Base에 배포된 OFT 어댑터로부터 유효한 메시지를 받을 때 새 토큰을 민팅하고, 사용자가 다시 브릿징할 때 소각하는 권한을 갖습니다.

contracts 폴더에 ChilizTokenOFT.sol 파일을 새로 만드세요:

이 컨트랙트는 LayerZero OFT 컨트랙트와 위에서 언급한 이유로 표준 Ownable.sol 컨트랙트를 확장합니다.

Chiliz Chain에 배포할 때, 사용자가 혼동하지 않도록 _name_symbol이 Base의 원래 토큰과 일치하는지 확인하세요. _lzEndpoint로 Chiliz Chain Endpoint V2 주소(0x6F475642a6e85809B1c36Fa62763669b1b48DD5B)를 전달합니다.

Chiliz Chain에서 사용 가능한 모든 엔드포인트를 확인하세요:

2단계: LayerZero 구성

컨트랙트가 준비되면, LayerZero 도구에 연결 방법을 알려야 합니다. 이는 Hardhat 프로젝트의 루트에 있는 layerzero.config.ts 파일을 사용하여 수행됩니다.

이 구성 파일은 교차 체인 아키텍처의 청사진 역할을 합니다. 배포된 스마트 컨트랙트를 각각의 LayerZero Endpoint ID(EID)에 매핑하고 둘 사이의 경로(연결)를 정의합니다.

Simple Config Generator는 양방향 배선을 자동화하고 권장 보안 구성을 자동으로 적용하므로 권장되는 배선 구성 생성 방법입니다.

Hardhat 프로젝트 루트에서 layerzero.config.ts 파일을 생성하거나 업데이트하세요:

[EVM_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS] 배열은 LayerZero Executor에게 Chiliz로 메시지를 전달할 때 200,000 가스 단위를, Base로 메시지를 반환할 때 동일하게 200,000 가스 단위를 적용하도록 지시합니다.

3단계: 배포 워크플로우

컨트랙트를 작성하고 layerzero.config.ts를 준비했다면, 이제 각 네트워크에 컨트랙트를 배포할 차례입니다. LayerZero V2 도구는 배포를 효율적으로 관리하기 위해 hardhat-deploy 플러그인을 사용합니다.

프로젝트의 deploy/ 디렉토리에 두 개의 배포 스크립트를 생성해야 합니다: Base Mainnet용과 Chiliz Chain Mainnet용.

Base 어댑터 배포 스크립트

deploy/ 폴더에 01_deploy_base_adapter.ts 파일을 생성합니다. 이 스크립트는 기존 토큰 주소와 Base Endpoint V2 주소를 생성자에 전달합니다.

Chiliz Chain OFT 배포 스크립트

deploy/ 폴더에 두 번째 파일 02_deploy_chiliz_oft.ts를 생성합니다. 이 스크립트는 Chiliz Chain에서 새 네이티브 OFT를 초기화합니다.

배포 실행

hardhat.config.ts에 Base와 Chiliz Chain 모두에 대한 RPC URL과 개인 키가 올바르게 구성되어 있는지 확인하세요.

RPC로 연결

터미널에서 다음 명령어를 실행하여 컨트랙트를 배포합니다:

배포가 완료되면, Hardhat이 deployments/ 폴더에 컨트랙트 주소를 저장합니다. LayerZero 도구는 다음 단계에서 배선 명령을 실행할 때 이 주소들을 자동으로 읽습니다.

4단계: 배선 및 피어링

이 단계에서 BaseTokenAdapterChilizTokenOFT 컨트랙트가 각 체인에 배포되었지만 완전히 격리된 상태입니다. Chiliz Chain 컨트랙트가 토큰을 민팅하도록 지시하는 메시지를 받으면, 해당 메시지가 악의적인 행위자가 아닌 귀하의 Base 어댑터에서 실제로 발신된 것인지 확인해야 합니다.

컨트랙트를 암호화 방식으로 "배선"하여 피어로 연결함으로써 이 신뢰를 확립해야 합니다.

이는 Chiliz와 Base 모두에서 트랜잭션을 생성하고 실행하는 wire 명령을 실행하여 수행됩니다.

내부적으로 무슨 일이 일어나나요?

완전한 LayerZero V2 경로 구성에는 각 체인에서 실제로 6개의 트랜잭션이 필요합니다:

  • setSendLibrary: 메시지 전송을 담당하는 LayerZero MessageLib를 할당합니다.

  • setReceiveLibrary: 메시지 수신을 담당하는 MessageLib를 할당합니다.

  • setConfig (Send Library): 아웃바운드 메시지에 대한 특정 DVN과 Executor를 설정합니다.

  • setConfig (Receive Library): 인바운드 메시지를 검증하는 데 필요한 특정 DVN을 설정합니다.

  • setEnforcedOptions: 필요한 실행 가스 한도를 설정합니다. 사용자가 Base에서 메시지를 보내면, 목적지 가스를 선불로 지불합니다. Enforced 옵션을 설정하면 LayerZero Executor가 Chiliz Chain에서 트랜잭션을 성공적으로 처리하기에 충분한 가스를 지불하는지 확인합니다.

  • setPeer: 목적지 Endpoint ID(EID)를 신뢰할 수 있는 컨트랙트 주소에 연결합니다. Base 컨트랙트가 Chiliz Chain 컨트랙트를 신뢰하고, Chiliz Chain 컨트랙트가 Base 컨트랙트를 신뢰하도록 설정해야 합니다.

배선 작업 실행

터미널에서 다음 명령을 실행합니다:

도구체인이 필요한 파라미터를 자동으로 계산하고, 실행하려는 트랜잭션 표를 표시한 후, 배포자 지갑을 사용하여 Chiliz와 Base에 제출합니다.

두 네트워크에서 트랜잭션이 확인되면, 토큰 브릿지가 공식적으로 활성화되고 완전히 구성됩니다! Base 어댑터는 이제 Chiliz Chain에 민팅 명령을 보낼 수 있는 권한을 갖게 되고, Chiliz Chain은 Base로 잠금 해제 명령을 보낼 수 있는 권한을 갖게 됩니다.

5단계: 운영 및 테스트

컨트랙트가 배포되고 안전하게 배선되었다면, 토큰은 이제 옴니체인입니다. 마지막 단계는 Base Mainnet에서 Chiliz Chain Mainnet으로 교차 체인 전송을 실행하는 것입니다.

1) 교차 체인 전송 실행

LayerZero V2 도구는 터미널에서 직접 OFT 전송을 테스트하기 위한 내장 Hardhat 작업을 제공합니다. 이 명령은 교차 체인 가스 요금을 추정하고, 소스 체인(Base)의 네이티브 가스 토큰인 $ETH로 지갑에 청구하며 전송을 시작합니다.

다음 명령을 실행합니다:

이 명령이 수행하는 작업:

  1. 구성에서 Base Mainnet(30184)과 Chiliz Mainnet(30409)을 찾습니다.

  2. LayerZero Executor가 요구하는 교차 체인 요금을 견적합니다.

  3. Base 어댑터에서 send() 함수를 호출합니다.

  4. 어댑터가 10개의 토큰을 잠그고 LayerZero Endpoint에 패킷을 전송합니다.

2) LayerZero Scan에서 패킷 추적

교차 체인 트랜잭션은 비동기식입니다. Chiliz 트랜잭션이 몇 초 안에 확인되지만, 메시지는 여전히 Base에서 검증되고 실행되어야 합니다.

이 과정을 실시간으로 추적하려면, CLI 출력에 나타나는 LayerZero Scan 링크를 클릭하세요.

이 도구에 대해 자세히 알아보세요:

가스 한도 설정

가스 한도를 설정하는 것은 매우 중요합니다. 설정하지 않으면 교차 체인 메시지가 목적지 네트워크에서 실패할 수 있습니다.

사용자가 Base에서 Chiliz Chain으로 토큰을 브릿징할 때, Base의 단일 트랜잭션에서 체인 모두의 가스 요금을 선불로 지불합니다($ETH 사용). LayerZero는 그 요금의 일부를 사용하여 Chiliz Chain에서 민팅 트랜잭션을 실행하는 데 필요한 실제 ETH 가스를 지불합니다.

LayerZero가 목적지 체인에서 lzReceive 함수를 성공적으로 처리하기에 충분한 가스를 갖도록 Enforced Options를 설정해야 합니다. 설정하지 않으면 "가스 부족" 오류로 인해 트랜잭션이 목적지 체인에서 되돌아갈 수 있습니다.

옵션 구성

이 옵션은 layerzero.config.ts 파일에서 설정합니다. connections 배열을 업데이트하여 각 경로에 enforcedOptions 블록을 포함시키세요:

파라미터 설명:

  • msgType: 1: 표준 토큰 전송을 나타냅니다. msgType: 2는 "composed" 호출(예: 토큰을 브릿징하고 즉시 스테이킹)에 사용됩니다.

  • optionType: 1: Executor에게 단순히 lzReceive 함수를 실행하도록 지시합니다.

  • gas: 200000: 표준 OFT 민팅 및 잠금 해제를 위한 안전한 기준 가스 한도입니다. 배포된 컨트랙트의 특정 가스 소비에 따라 조정할 수 있습니다.

이미 체인을 배선한 후에 이 옵션을 설정한 경우, 동일한 명령으로 옵션을 포함하여 재배선할 수 있습니다:

도구는 변경 사항을 자동으로 감지하고 Base와 Chiliz 양쪽 컨트랙트에 setEnforcedOptions() 트랜잭션을 제출합니다. 이제 사용자가 브릿지를 트리거할 때마다 컨트랙트는 사용자가 목적지 체인에서 최소 200,000 가스 단위를 지불하도록 강제하여 안정적인 전달을 보장합니다.

마지막 업데이트

도움이 되었나요?