@injectivelabs/wallet-strategy의 주요 목적은 개발자에게 Injective에서 다양한 지갑 구현을 사용할 수 있는 방법을 제공하는 것입니다. 이러한 모든 지갑 구현은 동일한 ConcreteStrategy 인터페이스를 노출하므로 사용자는 특정 지갑의 기본 구현을 알 필요 없이 이러한 메서드를 사용할 수 있습니다.
시작하려면 WalletStrategy 클래스의 인스턴스를 만들어야 합니다. 이를 통해 다양한 지갑을 바로 사용할 수 있습니다. walletStrategy 인스턴스에서 setWallet 메서드를 사용하여 현재 사용 중인 지갑을 전환할 수 있습니다(참고: setWallet은 비동기이며 await가 필요합니다).
WalletStrategy 전략이 노출하는 메서드와 그 의미를 살펴보겠습니다:
Ethereum 및 Cosmos 네이티브 지갑 모두:
getAddresses는 연결된 지갑 전략에서 주소를 가져옵니다. 이 메서드는 Ethereum 네이티브 지갑(전략)의 경우 Ethereum 주소를 반환하고 Cosmos 네이티브 지갑(전략)의 경우 Injective 주소를 반환합니다.signTransaction은 해당 지갑 유형 메서드를 사용하여 트랜잭션에 서명합니다(Cosmos 네이티브 지갑의 경우signCosmosTransaction, Ethereum 네이티브 지갑의 경우signEip712TypedData)sendTransaction은 해당 지갑 유형 메서드를 사용하여 트랜잭션에 서명합니다(Ethereum 네이티브 지갑에서 사용하려면 옵션에sentryEndpoint를 전달해야 합니다 - 아래에서 설명)getWalletDeviceType은 지갑 연결 유형(모바일, 브라우저, 하드웨어)을 반환합니다.
signCosmosTransaction은 연결된 지갑 전략을 사용하여 Injective 트랜잭션에 서명합니다.getPublicKey는 Cosmos 네이티브 지갑 전략의 공개키를 가져옵니다.
getEthereumChainId는 Ethereum 네이티브 지갑 전략의 체인 ID를 가져옵니다.signEip712TypedData는 연결된 지갑 전략을 사용하여 EIP712 타입 데이터에 서명합니다.sendEvmTransaction은 연결된 지갑 전략을 사용하여 Ethereum Web3 트랜잭션을 전송합니다.signEvmTransaction은 연결된 지갑 전략을 사용하여 Ethereum Web3 트랜잭션에 서명합니다.getEvmTransactionReceipt는 지갑 전략에 대한 Ethereum 네이티브 트랜잭션의 트랜잭션 영수증을 가져옵니다.
인자
WalletStrategy에 전달되는 인자는 다음 인터페이스를 가집니다:sendTransaction을 다른 옵션(chainId 및 address)과 함께 사용하려면 트랜잭션을 브로드캐스트하기 위해 sentry에 대한 gRPC 엔드포인트도 전달해야 합니다. Ethereum 네이티브 지갑에서는 Keplr이나 Leap에서처럼 지갑의 추상화를 사용하여 트랜잭션을 브로드캐스트하는 broadcastTx 메서드에 접근할 수 없으므로 클라이언트 측에서 직접 체인에 브로드캐스트해야 하기 때문입니다.
