メインコンテンツまでスキップ

Signature(署名)

Signatureリソースは、メッセージと型付きデータの署名と検証のための操作を提供します。

概要

デジタル署名は、アドレスの所有権を証明し、秘密鍵を明かすことなくメッセージを認証するために使用されます。

操作

Sign Message(メッセージに署名)

ウォレットでパーソナルメッセージに署名します。

必要な認証情報:Ethereum RPC、Ethereum Account

パラメータ

  • Message(メッセージ)(必須):署名するメッセージ

ユースケース

  • ユーザーを認証
  • アドレスの所有権を証明
  • オフチェーンメッセージに署名

{
"message": "I agree to the terms and conditions"
}

出力

{
"signature": "0x1234567890abcdef..."
}

Sign Typed Data(型付きデータに署名)

EIP-712に従って構造化データに署名します。

必要な認証情報:Ethereum RPC、Ethereum Account

パラメータ

  • Domain(ドメイン)(必須):EIP-712ドメインセパレーター
  • Types(型)(必須):型定義
  • Value(値)(必須):署名するデータ

ユースケース

  • permitトランザクションに署名(ガスレス承認)
  • dApp用の構造化メッセージに署名
  • 複雑なデータの検証可能な署名を作成

範例

{
"domain": {
"name": "MyDApp",
"version": "1",
"chainId": 1,
"verifyingContract": "0x..."
},
"types": {
"Permit": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"},
{"name": "value", "type": "uint256"},
{"name": "nonce", "type": "uint256"},
{"name": "deadline", "type": "uint256"}
]
},
"value": {
"owner": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"spender": "0x...",
"value": "1000000000000000000",
"nonce": "0",
"deadline": "1700000000"
}
}

輸出

{
"signature": "0x1234567890abcdef..."
}

Verify Message(メッセージを検証)

パーソナルメッセージ署名を検証します。

必要な認証情報:Ethereum RPC

パラメータ

  • Message(メッセージ)(必須):元のメッセージ
  • Signature(署名)(必須):検証する署名
  • Address(アドレス)(必須):期待される署名者アドレス

出力例

{
"valid": true,
"recoveredAddress": "0x..."
}

範例

{
"valid": true,
"recoveredAddress": "0x..."
}

Verify Typed Data(型付きデータを検証)

EIP-712署名を検証します。

必要な認証情報:Ethereum RPC

パラメータ

  • Domain(ドメイン)(必須):EIP-712ドメインセパレーター
  • Types(型)(必須):型定義
  • Value(値)(必須):元のデータ
  • Signature(署名)(必須):検証する署名
  • Address(アドレス)(必須):期待される署名者アドレス

範例

{
"domain": {
"name": "MyDApp",
"version": "1",
"chainId": 1,
"verifyingContract": "0x..."
},
"types": {
"Permit": [
{"name": "owner", "type": "address"},
{"name": "spender", "type": "address"},
{"name": "value", "type": "uint256"}
]
},
"value": {
"owner": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
"spender": "0x...",
"value": "1000000000000000000"
},
"signature": "0x1234567890abcdef...",
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}

輸出

{
"valid": true,
"recoveredAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}

Recover Address(アドレスを復元)

署名から署名者アドレスを復元します。

必要な認証情報:Ethereum RPC

パラメータ

  • Message(メッセージ)(必須):元のメッセージ
  • Signature(署名)(必須):署名

出力例

{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}

範例

{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}

Hash Message(メッセージをハッシュ化)

メッセージのkeccak256ハッシュを計算します。

必要な認証情報:Ethereum RPC

パラメータ

  • Message(メッセージ)(必須):ハッシュ化するメッセージ

出力例

{
"hash": "0x1234567890abcdef..."
}

範例

{
"hash": "0x1234567890abcdef..."
}

Hash Typed Data(型付きデータをハッシュ化)

署名用の型付きデータをハッシュ化します(EIP-712)。

必要な認証情報:Ethereum RPC

パラメータ

  • Domain(ドメイン)(必須):EIP-712ドメインセパレーター
  • Types(型)(必須):型定義
  • Value(値)(必須):ハッシュ化するデータ

一般的なユースケース

範例

{
"domain": {
"name": "MyDApp",
"version": "1",
"chainId": 1,
"verifyingContract": "0x..."
},
"types": {
"Message": [
{"name": "content", "type": "string"},
{"name": "timestamp", "type": "uint256"}
]
},
"value": {
"content": "Hello World",
"timestamp": "1700000000"
}
}

輸出

{
"hash": "0x1234567890abcdef..."
}

ユーザー認証

[Trigger] → [Sign Message] → [Verify Message] → [ユーザーを認証]

ガスレス承認(EIP-2612)

[Trigger] → [Sign Typed Data: Permit] → [コントラクトに提出] → [トークン承認済み]

所有権を検証

[ユーザー入力] → [Recover Address] → [所有権をチェック] → [アクセスを許可]

EIP-712ドメイン例

{
"name": "MyDApp",
"version": "1",
"chainId": 1,
"verifyingContract": "0x..."
}

ヒント

  • パーソナル署名:単純なテキスト認証にはSign Messageを使用
  • EIP-712:人間が読める必要がある構造化データに使用
  • セキュリティ:理解していないメッセージには決して署名しない
  • 検証:署名を信頼する前に常に検証
  • 復元:Recover Addressは誰がメッセージに署名したかを特定できます
  • チェーンID:リプレイ攻撃を防ぐためにEIP-712にチェーンIDを含める