Skip to main content

Signature

Signature resource provides operations for signing and verifying messages and typed data.

Overview​

Digital signatures are used to prove ownership of an address and authenticate messages without revealing the private key.

Operations​

Sign Message​

Sign a personal message with your wallet.

Required Credentials: Ethereum RPC, Ethereum Account

Parameters:

  • Message (required): The message to sign

Use Cases:

  • Authenticate users
  • Prove ownership of address
  • Sign off-chain messages

Example:

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

Output:

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

Sign Typed Data​

Sign structured data according to EIP-712.

Required Credentials: Ethereum RPC, Ethereum Account

Parameters:

  • Domain (required): EIP-712 domain separator
  • Types (required): Type definitions
  • Value (required): The data to sign

Use Cases:

  • Sign permit transactions (gasless approvals)
  • Sign structured messages for dApps
  • Create verifiable signatures for complex data

Example:

{
"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"
}
}

Output:

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

Verify Message​

Verify a personal message signature.

Required Credentials: Ethereum RPC

Parameters:

  • Message (required): The original message
  • Signature (required): The signature to verify
  • Address (required): Expected signer address

Example Output:

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

Verify Typed Data​

Verify an EIP-712 signature.

Required Credentials: Ethereum RPC

Parameters:

  • Domain (required): EIP-712 domain separator
  • Types (required): Type definitions
  • Value (required): The original data
  • Signature (required): The signature to verify
  • Address (required): Expected signer address

Example:

{
"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"
}

Output:

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

Recover Address​

Recover the signer address from a signature.

Required Credentials: Ethereum RPC

Parameters:

  • Message (required): The original message
  • Signature (required): The signature

Example Output:

{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb"
}

Hash Message​

Calculate the keccak256 hash of a message.

Required Credentials: Ethereum RPC

Parameters:

  • Message (required): The message to hash

Example Output:

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

Hash Typed Data​

Hash typed data for signing (EIP-712).

Required Credentials: Ethereum RPC

Parameters:

  • Domain (required): EIP-712 domain separator
  • Types (required): Type definitions
  • Value (required): The data to hash

Example:

{
"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"
}
}

Output:

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

Common Use Cases​

User Authentication​

[Trigger] → [Sign Message] → [Verify Message] → [Authenticate User]

Gasless Approvals (EIP-2612)​

[Trigger] → [Sign Typed Data: Permit] → [Submit to Contract] → [Token Approved]

Verify Ownership​

[User Input] → [Recover Address] → [Check Ownership] → [Grant Access]

EIP-712 Domain Example​

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

Tips​

  • Personal Sign: Use Sign Message for simple text authentication
  • EIP-712: Use for structured data that needs to be human-readable
  • Security: Never sign messages you don't understand
  • Verification: Always verify signatures before trusting them
  • Recovery: Recover Address can identify who signed a message
  • Chain ID: Include chain ID in EIP-712 to prevent replay attacks