Sign Typed Messages

What is Typed Message Signing?

Typed message signing is a crucial function in the blockchain ecosystem, designed to ensure security, transparency, and user trust when interacting with various blockchain applications.

Typed message signing refers to the process of creating and signing structured data that both machines and humans can understand and verify.

Unlike traditional message signing that deals with arbitrary data, typed message signing structures the data according to predefined formats, making it readable and understandable before it is signed. This process ensures that the signer fully comprehends what they are agreeing to, thereby enhancing the security and clarity of blockchain transactions.


Enabling Typed Message Signing

To use a dApp that requires you to sign in a Typed Message format, create a Typed Message TAP rule for that smart contract.


What are the use cases for Typed Message Signing?

  • Proof of Ownership: Users can sign messages to demonstrate ownership of a particular blockchain address or asset without making any on-chain transaction, crucial for identity verification processes.
  • Proof of Reserves: Financial institutions can use typed message signing to prove possession of sufficient funds or assets in a transparent manner, enhancing trust among users or regulators.
  • Compliance with Regulations: In scenarios like the Travel Rule and TRUST Platform in the cryptocurrency space, businesses must share certain transaction details with each other and regulatory bodies. Typed message signing ensures that this information is exchanged securely and verifiably.
  • Smart Contracts and Legal Agreements: In complex agreements or smart contracts, typed message signing can be used to confirm terms, conditions, and any other contractual obligations clearly and securely.
  • Meta-Transactions: Typed message signing enables meta-transactions, where users sign transactions that someone else submits to the network. This is particularly useful in dApps that aim to reduce the gas cost burden on users.
  • Authentication: Users can sign a typed message to prove ownership of a blockchain address without making a transaction. This method can be used for logging into decentralized applications (dApps) securely.

How Typed Message Signing Works?

  • Data Structuring: Initially, the data to be signed is structured into a predefined format. This structure includes defining types, fields, and the order in which the fields appear. This data format is often defined in a smart contract or a protocol specification.
  • User Confirmation: Before signing, the structured data is presented to the user in a human-readable form. This step is vital as it allows the user to verify the details of the data they are about to sign, ensuring transparency and informed consent.
  • Signing: The user signs the data with their private key. This signature process involves cryptographic algorithms that securely associate the signer's identity with the data they approved.
  • Verification: The signature can then be verified by anyone who has access to the signer’s public key, confirming that the specific data was signed by the owner of the private key and that it has not been tampered with since signing.


Typed Message Signing in Fireblocks

Supported Assets and Methods

Typed message signing in Fireblocks is supported for several assets and can be implemented through various methods:

Supported Assets:

Creation Methods for Typed Message Signing Requests:

Browser Extension or Wallet Connect:

Typed Message Signing requests are created by Decentralized Applications (dApps) when connected via Fireblocks Browser Extension or Wallet Connect integration, for various purposes such as (but not limited to):

  • Session Authentication: Similar to traditional web applications, dApps can use message signing to manage sessions. Once a user signs a message to prove ownership of an address, the dApp can create a session for the user without requiring them to sign in through traditional methods like username and password
  • Proving Ownership: dApps often need to verify that a user controls a specific blockchain address. Typed message signing enables users to prove ownership without having to conduct a transaction, which can save on transaction fees
  • Meta-transactions: Users can sign transactions that are paid for and submitted by another party (like a dApp). This can be used to improve user experience by allowing users to interact with the blockchain without needing to spend Ether for gas
EIP712, EIP191 and dApp authentication signing request examples

EIP712, EIP191 and dApp authentication signing request examples


Fireblocks API:

Typed Message Signing requests can also be initiated through the API by using the Create Transaction API. These requests are typically generated for scenarios such as (but not limited to):

  • Proof of Ownership: Users can sign messages to demonstrate ownership of a particular blockchain address or asset without making any on-chain transaction, crucial for identity verification processes
  • Compliance with Regulations: In scenarios like the Travel Rule and TRUST Platform in the cryptocurrency space, businesses must share certain transaction details with each other and regulatory bodies. Typed message signing ensures that this information is exchanged securely and verifiably
  • Proof of Reserves: Financial institutions can use typed message signing to prove possession of sufficient funds or assets in a transparent manner, enhancing trust among users or regulators

📘

Learn more on Typed Message Signing via API in the following guide