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を含める