- API 클라이언트 및 환경 설정,
- Chain 및 Indexer API에 연결,
- 사용자 지갑에 연결하고 주소 가져오기,
- 스마트 컨트랙트 쿼리 (이 경우 스마트 컨트랙트의 현재 카운트 가져오기),
- 컨트랙트 상태 수정 (이 경우 카운트를 1씩 증가시키거나 특정 값으로 설정),
설정
먼저 원하는 UI 프레임워크를 구성합니다. 구성에 대한 자세한 내용은 여기에서 찾을 수 있습니다. dex를 시작하려면 API 클라이언트와 환경을 설정해야 합니다. DEX를 구축하기 위해 Injective Chain과 Indexer API 모두에서 데이터를 쿼리할 것입니다. 이 예제에서는 기존 테스트넷 환경을 사용할 것입니다. 먼저 데이터를 쿼리하는 데 필요한 클래스 중 일부를 설정해 보겠습니다. 스마트 컨트랙트와 상호 작용하기 위해@injectivelabs/sdk-ts의 ChainGrpcWasmApi를 사용할 것입니다. 또한 사용할 네트워크 엔드포인트(메인넷 또는 테스트넷)가 필요하며, 이는 @injectivelabs/networks에서 찾을 수 있습니다.
예시:
@injectivelabs/wallet-strategy 패키지를 사용할 것입니다.
@injectivelabs/wallet-strategy의 주요 목적은 개발자에게 Injective에서 다양한 지갑 구현을 가질 수 있는 방법을 제공하는 것입니다. 이러한 모든 지갑 구현은 동일한 ConcreteStrategy 인터페이스를 노출하므로 사용자는 특정 지갑에 대한 기본 구현을 알 필요 없이 이러한 메서드를 사용할 수 있습니다.
시작하려면 다양한 지갑을 기본적으로 사용할 수 있는 기능을 제공하는 WalletStrategy 클래스의 인스턴스를 만들어야 합니다. walletStrategy 인스턴스에서 setWallet 메서드를 사용하여 사용되는 현재 지갑을 전환할 수 있습니다 (참고: setWallet은 비동기이며 await이 필요합니다). 기본값은 Metamask입니다.
WalletStrategy 생성자 내에서 evmOptions를 생략하세요.
마지막으로 Injective에서 전체 트랜잭션 흐름(준비 + 서명 + 브로드캐스트)을 수행하기 위해 MsgBroadcaster 클래스를 사용할 것입니다.
사용자 지갑에 연결
WalletStrategy를 사용하여 사용자의 지갑과의 연결을 처리하므로 사용자 주소 가져오기, 트랜잭션 서명/브로드캐스트 등과 같은 일부 사용 사례를 처리하기 위해 해당 메서드를 사용할 수 있습니다. 지갑 전략에 대해 자세히 알아보려면 WalletStrategy가 제공하는 문서 인터페이스와 메서드를 탐색할 수 있습니다.
참고: setWallet 메서드를 사용하여 WalletStrategy 내에서 “활성” 지갑을 전환할 수 있습니다 (비동기이며 await이 필요함).
쿼리
초기 설정이 완료되면 이전에 만든 chainGrpcWasmApi 서비스를 사용하여 스마트 컨트랙트를 쿼리하고 현재 카운트를 가져오고 스마트 컨트랙트에서 get_count를 호출하는 방법을 살펴보겠습니다.getCount 또는 우리가 만드는 다른 함수)가 있으면 애플리케이션의 어디에서나 호출할 수 있습니다 (일반적으로 Nuxt의 Pinia 또는 React의 Context 제공자와 같은 중앙 집중식 상태 관리 서비스).
상태 수정
다음으로count 상태를 수정합니다. 이전에 만든 Broadcast Client와 @injectivelabs/sdk-ts의 MsgExecuteContractCompat를 사용하여 체인에 메시지를 보내 이를 수행할 수 있습니다.
이 예제에서 사용하는 스마트 컨트랙트에는 상태를 변경하는 2가지 메서드가 있습니다:
incrementreset
increment는 카운트를 1씩 증가시키고 reset은 카운트를 주어진 값으로 설정합니다. reset은 스마트 컨트랙트의 생성자인 경우에만 호출할 수 있습니다.
이러한 함수를 호출하면 지갑이 열려 메시지/트랜잭션에 서명하고 브로드캐스트합니다.
먼저 카운트를 증가시키는 방법을 살펴보겠습니다.
