Fireblocks Typed Messages Signing

Prerequisites



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

Structuring the API Call:


Typed message signing in Fireblocks is performed through the Fireblocks API - Create Transaction Endpoint. The following parameters are required for any Typed Message Signing API request:

{
  operation: "TYPED_MESSAGE",
    assetId: "ETH"/"BTC"/"TRX",
    source: {
      type: "VAULT_ACCOUNT",
      id: "<vaultAccountId>"
  },
    extraParameters: {
    rawMessageData: {
      messages: [{
        content: "my_message",
        type: "EIP191"/"EIP712"/"TIP191"/"BTC_MESSAGE"
      }]
    }
  }
}
  • assetId - The network to use (possible values are ETH, BTC and TRX
  • operation - Transaction operation type (TYPED_MESSAGE)
  • source - The vault account from which the Typed Message Signing is to be executed
  • extraParameters - An additional parameters object that includes the rawMessageData object, which contains the messages array. Each message in this array specifies its content and the type of message signing. The possible types are: EIP191, EIP712, TIP191 and BTC_MESSAGE

📘

Fireblocks users are not required to prefix the message before submitting it to the API. The only requirement is that for any message type other than EIP712, the message to be signed must be submitted in hexadecimal format.

For more detailed examples on how to structure your API calls correctly for the relevant supported asset, please refer to the guides per asset provided in this section.