메인 콘텐츠로 건너뛰기
이 페이지에서는 Cosmos의 ADR-036 사양에 따라 임의 데이터를 서명하고 검증하는 방법의 예시를 제공합니다.
@injectivelabs/sdk-tsgenerateArbitrarySignDoc 함수를 사용하여 ADR-36 호환 signDoc을 생성할 수 있습니다. 그런 다음 브라우저 지갑이나 CLI 환경에서 서명/검증에 사용할 수 있습니다. 최신 패키지 버전을 사용하고 있는지 확인하세요.

Keplr과 같은 브라우저 지갑을 사용하여 서명 및 검증


(async () => {
  const message = "오프라인 서명 메시지 예시";
  const signer = 'inj1...'
  const chainId = 'injective-1'
  
  // 임의 데이터 서명
  const signature = await window.keplr.signArbitrary(chainId, signer, message)
  
  // 임의 데이터 검증
  const result = await window.keplr.verifyArbitrary(chainId, signer, message, signature)
  
  if (result) {
    console.log("서명이 유효합니다");
  }
})();

CLI 환경에서 PrivateKey를 사용하여 서명 및 검증

import { config } from "dotenv";
import { PrivateKey } from "@injectivelabs/sdk-ts/core/accounts";
import { generateArbitrarySignDoc } from "@injectivelabs/sdk-ts/core/tx";

config();

(async () => {
  const { privateKey } = PrivateKey.generate();
  const injectiveAddress = privateKey.toBech32();
  const publicKey = privateKey.toPublicKey();
  
  const message = "오프라인 서명 메시지 예시";
  const { signDocBuff } = generateArbitrarySignDoc(message, injectiveAddress);

  const signature = await privateKey.sign(signDocBuff);
  const signatureInHex = Buffer.from(signature).toString("hex");

  if (
    PrivateKey.verifyArbitrarySignature({
      signature: signatureInHex,
      signDoc: signDocBuff,
      publicKey: publicKey.toHex(),
    })
  ) {
    console.log("서명이 유효합니다");
  }
})();