TrustVault provides webhooks to alert you of the changes in that status of your transactions. These are POST requests delivered to your server and are sent as soon as an event occurs. The body of the request contains the details of the event.

Upon receiving a webhook notification, it should be acknowledged with a HTTP success response 20x. Otherwise the webhoook notification will be attempted to be sent again according to the following schedule:

  • 1 minute from the previous attempt
  • 2 minutes from the previous attempt
  • 15 minutes from the previous attempt
  • 2 hours from the previous attempt
  • 10 hours from the previous attempt
  • 24 hours from the previous attempt

NB: Webhooks will NOT follow a redirect of 30x. This is to prevent potential security risks.

If you need to register a webhook, just get in touch with Bitpanda Custody Support via help@bitpandacustody.com

Webhook Security

Webhook notifications should be verified using the message hash signature in the header and the secret key to prevent attackers from imitating valid webhooks.

Each webhook is associated with a single secret key, which is given upon registration of the webhook. The secret key is used to generate an HMAC using SHA-256 hash algorithm.

Webhook notifications will have an X-Sha2-Signature header in the request, containing the HMAC. The secret key should be used to compute the message hash signature using the complete event object. You must ensure that the generated hash signature matches the X-Sha2-Signature header sent by TrustVault.

All TrustVault webhooks will have the following header: User-Agent: "TrustVaultWebHook"

ERC-20 Tokens

Please note that ERC-20 tokens follow the EIP-20 spec. This means that:

  • The contract method symbol and name (which drives the assetName ) are optional and can be named by the contract creator. Do not expect unique names (spammers may deliberately copy common token names). For a unique key use the contractAddress
  • The contract method decimals (which are used to derive the more friendly quantity field) are optional. For the canonical truth use the rawQuantity field which will always be the quantity specified within the contract

Please see the "Token Data" information lower in this page where erc-20 details are exposed.

Verifying HMAC-256 signature

Copy
Copied
import * as crypto from "crypto";

// NOTE: Do not hard code your secret key. Store it somewhere safe
const secretKey = "SECRET_KEY";
const hmac = crypto.createHmac("SHA256", secretKey);

// Compute the hash from the stringified JSON request.body
const computedHashSignature = hmac.update(request.body).digest("hex");
const expectedHashSignature = request.headers["X-Sha2-Signature"];

if (computedHashSignature !== expectedHashSignature) {
  throw new Error("Webhook hash signature mismatch");
}

Handle Duplicate Events

Webhook endpoints might occasionally receive the same event more than once. In particular, during chain re-organisation a webhook event could be re-sent for the exact same transaction. We advise you to guard against duplicated event receipts by making your event processing idempotent.

Events

Wallet Specific

Event Description Event type
Creation Delegate Signed A wallet creation has been signed by a valid delegate WALLETCREATIONDELEGATE_SIGNED
Change Delegate Signed A wallet change has been signed by a valid delegate WALLETCHANGEDELEGATE_SIGNED
Policy Change Request Created There is a request to change the policy associated with a wallet POLICYCHANGEREQUEST_CREATED *

* - This webhook event type is likely to change name in the future

BITCOIN

Event Description Event type
Bitcoin Received A Bitcoin subwallet has received a transaction BITCOINTRANSACTIONRECEIVED
Bitcoin Transaction Created A Bitcoin transaction has been created BITCOINTRANSACTIONCREATED
Transaction Delegate Signed A transaction request has been signed by a valid delegate BITCOINTRANSACTIONDELEGATE_SIGNED
Bitcoin Transaction Signed An outbound Bitcoin transaction has been signed by private keys BITCOINTRANSACTIONSIGNED

Ethereum

Event Description Event type
Ethereum Received An ethereum subwallet has received a ETH or ERC20 transaction ETHEREUMTRANSACTIONRECEIVED
Ethereum Transaction Created An Ethereum transaction has been created ETHEREUMTRANSACTIONCREATED
Delegate Signed A request has been signed by a valid delegate ETHEREUMTRANSACTIONDELEGATE_SIGNED
Ethereum Transaction Signed An outbound Ethereumtransaction has been signed by private keys ETHEREUMTRANSACTIONSIGNED
Ethereum Internal Transfers have been received An ethereum subwallet has received an internal transfer ETHEREUMBLOCKINTERNALTRANSFERSRECEIVED

EVM Based (via MetaMask)

Webhooks via MetaMask will be renamed to UNSUPPORTED_ETHEREUM_XXXX. This is to help better associated known chains and unknown chains. Since these webhooks would have previously been called ETHEREUM_XXXX, they will continue to be sent under the old and new name.

Event Description Event type
Unsupported Ethereum Transaction Created A transaction created on an Unsupported Ethereum chain has been created (MM) UNSUPPORTEDETHEREUMTRANSACTION_CREATED
Delegate Signed A request has been signed by a valid delegate UNSUPPORTEDETHEREUMTRANSACTIONDELEGATESIGNED
Unsupported Ethereum Transaction Signed An outbound Unsupported Ethereumtransaction has been signed by private keys UNSUPPORTEDETHEREUMTRANSACTION_SIGNED

Sign Request Webhooks (EVM Based)

The following sign requests webhooks are not chain specific and are applicable for any EVM based chain

Event Description Event type
Sign Request Created (Typed) A request to sign a typed data on an EVM chain has been created ETHEREUMSIGNTYPEDDATACREATED
Sign Request Created (Personal) A request to sign data on an EVM chain has been created ETHEREUMPERSONALSIGN_CREATED

Binance Smart Chain

Event Description Event type
BSC Received An BSC wallet has received a BNB or BEP-20 transaction BINANCESMARTCHAINTRANSACTIONRECEIVED
BSC Transaction Created An BSC transaction has been created BINANCESMARTCHAINTRANSACTIONCREATED
Delegate Signed A request has been signed by a valid delegate BINANCESMARTCHAINTRANSACTIONDELEGATE_SIGNED
BSC Transaction Signed An outbound BSC transaction has been signed by private keys BINANCESMARTCHAINTRANSACTIONSIGNED

XDC.NETWORK Smart Chain

Event Description Event type
XdcNetwork Received An XdcNetwork wallet has received a ETH or ERC20 transaction XDCNETWORKTRANSACTIONRECEIVED
XdcNetwork Transaction Created An XdcNetwork transaction has been created XDCNETWORKTRANSACTIONCREATED
Delegate Signed A request has been signed by a valid delegate XDCNETWORKTRANSACTIONDELEGATE_SIGNED
XdcNetwork Transaction Signed An outbound XdcNetwork transaction has been signed by private keys XDCNETWORKTRANSACTIONSIGNED

RADIX

Event Description Event type
External Item Signed An external item has been signed RADIXITEMSIGNED
Delegate Signed A request has been signed by a valid delegate RADIXDELEGATESIGNED

Ripple

Event Description Event type
Ripple Transaction Created A new ripple transaction has been created RIPPLETRANSACTIONCREATED
Ripple Transaction Signed A ripple transaction has been signed RIPPLETRANSACTIONSIGNED

Legacy Events

From 20th Decemember 2021, the following events were deprecated and you should migrate off them as soon as posisble.

Event Description Event type
External Item Signed An external item has been signed EXTERNALITEMSIGNED
Delegate Signed A request belonging to the trustId has been signed by a valid delegate DELEGATE_SIGNED

 Migration of events

Old Event New Event Notes
EXTERNALITEMSIGNED RADIXITEMSIGNED Renamed to be more consistent with other webhooks associated with a specific chain
ETHERUEMTRANSACTIONRECEIVED {CHAIN}TRANSACTIONRECEIVED Previously all EVM based trasnsactions would have been called ETHEREUM_XXX. This has been changed to be chian specific.

Legacy Event Triggers

This are still valid events but will but will be deprecetaed in the future.

Event type Trigger
POLICYCHANGEREQUEST_CREATED API only: A request has been created to change the wallet policy via the API or SDK
EXTERNALITEMSIGNED TrustVault has signed the external item due to enough signature(s) were collected to satisfy the delegate schedule
DELEGATE_SIGNED A request belonging to the trustId has been signed by a valid delegate
ETHEREUMSIGNTYPEDDATACREATED A request to sign typed data has been created
ETHEREUMPERSONALSIGN_CREATED A request to sign personal data has been created

Event Object

Attribute Description
messageId string
Unique identifier for the webhook notification
version string
The webhook version
type string
The webhook notification type
timestamp integer
The timestamp of the webhook notification
isoTimestamp string
The timestamp of the webhook notification in ISO 8601 format
payload object
The payload for the webhook notification

Bitcoin Received Event

The bitcoin received webhook will be triggered as soon as there is 1 confirmation from a miner.

Bitcoin Transaction Received Payload

Attribute Description
trustId string
Unique identifier for the TrustVault user
subWalletId object
Unique identifier for the sub-wallet
subWalletIdString string
Unique identifier for the sub-wallet, in string format
transactionAmount string
The transaction amount in satoshi (integer string)
bitcoinAddress string
The UTXO receive address of the transaction
transactionType string
The type of transaction - RECEIVED or SELF
blockHeight integer
The block number where the transaction was included in
transactionId string
Unique identifier for the transaction in the blockchain
transactionBlockTime integer
The timestamp of the block
transactionAmountInBtc string
The transaction amount in BTC (float string)

Ethereum Received Event

The ethereum received webhook will be triggered as soon as there is 1 confirmation from a miner.

Ethereum Transaction Received Payload

Attribute Description
trustId string
Unique identifier for the TrustVault user
subWalletId object
Unique identifier for the sub-wallet
subWalletIdString string
Unique identifier for the sub-wallet, in string format
from string
Ethereum address where the transaction was sent from
to string
Ethereum address where the transaction was sent to (*)
transactionValue string
Transaction value in Wei
transactionValueInEth string
Transaction value in Eth
transactionType string
The type of transaction - RECEIVED/SELF
tokensData array
Token data (see "Token Data" structure below) (**)
transactionId string
Unique identifier for the transaction in the blockchain
blockHeight string
The block number where the transaction was included in
blockHash string
Unique identifier for the block the transaction was included in
gasUsed string
Gas used by the transaction
gasPrice string
Gas price of the transaction
transactionBlockTime number
The timestamp of the block
decodedInput object
The decoded input field of the transaction
decodedEvents array
Array with all the emitted decoded events

(*)

  • In Ether transfers, to has the value of ethereum address where the Ether is transferred to.
  • In ERC20 transfers, to has the value of smart contract that manages the token transfer.

(**)

  • In Ether transfers, this array will be empty.

Ethereum Transaction Created Payload

Attribute Description
trustId string
Unique identifier for the TrustVault user
subWalletId object
Unique identifier for the sub-wallet
subWalletIdString string
Unique identifier for the sub-wallet, in string format
assetSymbol string
The symbol associated with the asset being transacted
chain string
The chain associated with this transaction. i..e ETHEREUM
signData object
The full chain specific data associated with this transaction
policyData object
The full wallet policy
transferValueDefinition object
The transfer value of the transaction in native and fiat amounts

Bitcoin Transaction Created Payload

Attribute Description
trustId string
Unique identifier for the TrustVault user
subWalletId object
Unique identifier for the wallet
subWalletIdString string
Unique identifier for the wallet, in string format
assetSymbol string
The symbol associated with the asset being transacted
chain string
The chain associated with this transaction. i..e BITCOIN
fee string
Fee in Satoshis for this transaction
signData object
The full chain specific data associated with this transaction
policyData object
The full wallet policy
transferValueDefinition object
The transfer value of the transaction in native and fiat amounts

Delegate Signed Payload

Attribute Description
trustId string
Unique identifier for the TrustVault user
requestId string
Unique identifier for the request that was signed
requestType string
The type of the request that was signed. See Request Types below
walletId string
(Optional) Unique identifier for the parent wallet associated with the request that was signed. Does not exist for CREATION type
subWalletId string
(Optional) Unique identifier for the sub-wallet associated with the transaction, in string format. Does not exist for RECOVERY / CREATION types
assetSymbol string
(Optional) The symbol associated with the asset being transacted. Does not exist for RECOVERY / CREATION types
chain string
(Optional) The chain associated with this transaction. i..e ETHEREUM. Does not exist for RECOVERY / CREATION types
publicKeys object
Contains the list of valid delgate public keys that have signed the request so far
policy object
The delegate schedule of the wallet that is associated with the request

Request Types

Attribute Description
RECOVERY A request to change the policy of a wallet (i.e. recover it)
CREATION A request to create a new wallet with a defined policy
ETH_TRANSACTION A request to send an ETH / ERC20 transaction
RIPPLE_TRANSACTION A request to send a ripple transaction
EXTERNALETHTRANSACTION A request to send an ETH / ERC20 transaction which coming from a 3rd party (i.e. MetaMask x TrustVault extension)
BTC_TRANSACTION A request to send a bitcoin transaction
BINANCE_TRANSACTION A request to send BNB / BEP-2 transaction
ETHPERSONALSIGN A request to sign an Eth Personal Sign message
ETHTYPEDDATA_SIGN A request to sign an Eth Typed Data message
EXTERNAL_SIGN A request to sign data which comes from a 3rd party

TransferValueDefinition Field

It should be noted that not all transactions can be valued. Sending ETH or BTC is quite straight forward, as is sending supported ERC-20 tokens. However, when sending to contracts it can get difficult to value the transaction. As such, we currently only support valuing the following:

  • ERC-20 supported transactions
  • ETH value transfers
  • BTC value transfers

At this time ETH transfers to any contract (including a on-chain wallet or vault) are not valued. Transactions that cannot be valued will have transferValueDefinition.transferAmount and transferValueDefinition.convertedAmount fields set to undefined.

Token Data

Please note that ERC-20 tokens follow the EIP-20 spec. See details at the top of this page.

Attribute Description
to string
Ethereum address where the tokens were transferred to
quantity string
Quantity of tokens transferred taking into account the decimals value that the contract offers. If decimals is not defined, defaults to the rawQuantity value
rawQuantity string
Canonical truth for the quantity of tokens transferred in the raw units
symbol string
Token symbol (empty string if not defined)
assetName string
Name of the token (empty string if not defined)
tokenDirectionType string
Direction of token transfer - RECEIVED/SELF
contractAddress string
The contract address. The ideal unique key for assets

Policy Change Request Created

Attribute Description
trustId string
Unique identifier for the TrustVault user
requestId string
Unique identifier for the request
policyTemplate object
Object containing the new policy for the wallet
recovererTrustVaultSignature string
The r, s values of the signature of the SHA-256(DER(policy)) as signed by the TrustVault provenance key. This ensures that you can confirm that the policy has come from TrustVault
unverifiedDigestData string
The policy object containing properties for easy signing

UnverifiedDigestData

Called "unverified" because the onus is on the caller to ensure that the message contains the same data that has been requested for this wallet. i.e. if you requested a new policy you can construct the policy object you expect, DER encode it, SHA-256 hash it and then check that your digest matches the shaSignData. Additionally, you can verify the recovererTrustVaultSignature to ensure the data was signed by TrustVault.

For testing, verification is not required and you can simply sign the shaSignData or signData depending on if your signing code request the raw message or the digest (SHA-256).

The TrustVault node.js SDK will do verification of the payload for you

Attribute Description
signData string
The message containing the DER encoded policy that must be signed if you are in control of a publicKey referenced in the policy
shaSignData string
The SHA-256 digest of the message

PolicyTemplate

Attribute Description
delegateSchedules array
An array of delegate schedules which contain and array of clauses
recovererSchedules array
An array of delegate schedules which contain and array of clauses

Sub Wallet ID object

Attribute Description
id string
Unique identifier for the HD Wallet
type string
The chain identifier where the sub wallet belongs to ("BTC", "BINANCE")
index number
Index of the sub wallet in the HD Wallet starting at zero (integer)

Sample Bitcoin Received Event Object

Copy
Copied
{
  "messageId": "87f49826-dafb-46e9-a9bc-6ed7ef61f811",
  "version": "1.0.2",
  "type": "BITCOIN_TRANSACTION_RECEIVED",
  "timestamp": 1588323320463,
  "isoTimestamp": "2020-05-01T09:18:31.354Z",
  "payload": {
    "subWalletIdString": "f63b2ff1-f02b-48df-8b9f-bc57f5c57061/BTC/0",
    "trustId": "f67ddcf6-e95d-4aa7-9a2d-e855ba5dc380",
    "subWalletId": {
      "id": "f63b2ff1-f02b-48df-8b9f-bc57f5c57061",
      "type": "BTC",
      "index": 0
    },
    "transactionAmount": "142498030",
    "bitcoinAddress": "342ftSRCvFHfCeFFBuz4xwbeqnDw6BGUey",
    "transactionType": "RECEIVED",
    "blockHeight": 627997,
    "transactionId": "97f1f9150a992ac5309a0837ef3309757dc6359b8355867933d693b7c6a1ae98",
    "transactionBlockTime": 1588078790,
    "transactionAmountInBtc": "1.4249803"
  }
}

Sample Bitcoin Transaction Created Event Object

Copy
Copied
{
  "type": "BITCOIN_TRANSACTION_CREATED",
  "messageId": "7bd6edad-e23f-476b-8cab-714cb80e4840",
  "timestamp": 1588323320463,
  "isoTimestamp": "2020-05-01T09:18:31.354Z",
  "version": "1.0.0",
  "payload": {
    "requestId": "8f18b68b-eeb6-0b4c-9c93-2921b336f359",
    "fee": 900,
    "trustId": "c6b18fb4-3eac-420b-91f3-5ee1f679a16d",
    "assetSymbol": "BTC",
    "chain": "BITCOIN",
    "policyData": {
      "...<PolicyAssociatedWithWallet>"
    },
    "signData": {
      "transaction": {
        "version": 1,
        "inputs": [
          {
            "address": "37thS2qbjZD47eT7M2txL1NxUywEq3hfye",
            "txId": "4722c3f2d6a30fc481d237ccb4e6037cc02e3f4ff65e965b6cdbeaf0e59f52d6",
            "outputIndex": 1,
            "script": "a91444064f6cf221f0e64a0140b7e3707edd64bb6a1387",
            "sequence": "ffffffff",
            "value": 1642873750,
            "publicKeyProvenanceData": {
              "publicKey": "046386a33646742eeba5d202c09f123819b9785ddea5b78b5b64b36dd60397b36507a493d7a0a38334a6168f73e4ef9dfed1258b6248e8015c0e148b04cd3f6dc6",
              "path": [
                "0x80000049",
                "0x80000000",
                "0x80000000",
                "0x1",
                "0x45b"
              ],
              "accountHSMProvenanceSignature": "0261a5cd98e8bef2f2610f8f09fa07d12731f69835daccccd12763dbc6137444d2cd5c850d18dc7768cfa5582f04367a58ecaeccbfde944cbbce42cf4884a024",
              "unverifiedAddress": "37thS2qbjZD47eT7M2txL1NxUywEq3hfye",
              "addressType": "COMPATIBILITY"
            },
            "unverifiedDigestData": {
              "transactionDigest": "e928bcb8acf4bcda5c71151041c144e227ba60f30789fd470bd580391aa97d4a",
              "signData": "30400420e928bcb8acf4bcda5c71151041c144e227ba60f30789fd470bd580391aa97d4a301c0205008000004902050080000000020500800000000201010202045b",
              "shaSignData": "0ad7b306818ac11e812241fca40af3a621c348d25660fef9f5f59dacca14364f"
            }
          }
        ],
        "outputs": [
          {
            "recipientAddress": "3AnVHpLRg63RT5Tg7XbUBtU9yFtJirT4RG",
            "amountToSend": 9210000
          },
          {
            "recipientAddress": "3MMUFRuHqjwrDbZGoq5yZgqfktD5gLGMKk",
            "amountToSend": 1633653790,
            "publicKeyProvenanceData": {
              "publicKey": "040fbb85f7d9137ec3e88ddb88a79dbcc826e2de68fe4fb658bcef8031b1fd4b7507efc7ae6c014720929dfd5556756c387b9f7ce749ef277716d28d0ce973971a",
              "path": [
                "0x80000049",
                "0x80000000",
                "0x80000000",
                "0x1",
                "0x45d"
              ],
              "accountHSMProvenanceSignature": "e1efc0d84050d61de14c584713d47147bbd6c93dedf56e55fc57e962751fccaebab89bade9b46a8cbbe7bfcaeee4d4ca981b87ff83e1dddda2f447f8809f2dbe",
              "unverifiedAddress": "3MMUFRuHqjwrDbZGoq5yZgqfktD5gLGMKk",
              "addressType": "COMPATIBILITY"
            }
          }
        ],
        "lockTime": 0,
        "sighash": 1
      }
    },
    "transferValueDefinition": {
      "type": "BTC",
      "transferAmount": {
        "value": "0.0921",
        "currency": "BTC",
        "timestamp": "2021-03-09T17:26:49.028Z"
      },
      "convertedAmount": {
        "GBP": {
          "value": "3695.553945",
          "currency": "GBP",
          "timestamp": "2021-03-09T17:26:11.745Z"
        },
        "USD": {
          "value": "5127.37278",
          "currency": "USD",
          "timestamp": "2021-03-09T17:26:11.745Z"
        },
        "EUR": {
          "value": "4312.884588",
          "currency": "EUR",
          "timestamp": "2021-03-09T17:26:11.745Z"
        },
        "JPY": {
          "value": "557217.236406",
          "currency": "JPY",
          "timestamp": "2021-03-09T17:26:11.745Z"
        }
      }
    }
  }
}

Sample Ethereum Transaction (ERC20) Created Event Object

Copy
Copied
{
  "version": "1.0.1",
  "type": "ETHEREUM_TRANSACTION_CREATED",
  "payload": {
    "assetSymbol": "OMG",
    "chain": "ETHEREUM",
    "signData": {
      "transaction": {
        "nonce": 10,
        "gasPrice": "172000000000",
        "gasLimit": "51303",
        "chainId": 3,
        "v": 3,
        "to": "0x7FC6F18fa1461189aB89732d2ECAaD988E1Be26A",
        "fromAddress": "0x6fe668915B32A1364FE63386b4E3cE919b267540",
        "value": "0",
        "data": "0xa9059cbb000000000000000000000000671e96593Ea93bfcb510375f4CeC111d0E5cf1b800000000000000000000000000000000000000000000000caf67003701680000",
        "decodedInput": {
          "id": "0xa9059cbb",
          "signature": "transfer(address to, uint256 amount)",
          "params": [
            {
              "name": "to",
              "type": "address",
              "value": "0x671e96593ea93bfcb510375f4cec111d0e5cf1b8"
            },
            {
              "name": "amount",
              "type": "uint256",
              "value": "0xcaf67003701680000"
            }
          ]
        }
      },
      "transferValueDefinition": {
        "type": "ETH",
        "transferAmount": {
          "value": "234",
          "currency": "OMG",
          "timestamp": "2021-03-09T17:26:49.028Z"
        },
        "convertedAmount": {
          "GBP": {
            "value": "884.52",
            "currency": "GBP",
            "timestamp": "2021-03-09T17:26:11.745Z"
          },
          "USD": {
            "value": "1228.5",
            "currency": "USD",
            "timestamp": "2021-03-09T17:26:11.745Z"
          },
          "EUR": {
            "value": "1031.94",
            "currency": "EUR",
            "timestamp": "2021-03-09T17:26:11.745Z"
          },
          "JPY": {
            "value": "133380",
            "currency": "JPY",
            "timestamp": "2021-03-09T17:26:11.745Z"
          }
        }
      },
      "hdWalletPath": [
        "0x8000002c",
        "0x8000003c",
        "0x80000000",
        "0x0",
        "0x0"
      ],
      "unverifiedDigestData": {
        "transactionDigest": "7ebf00d9345b2f2217c125afc633f623d2253a2b092992032f0d6a5f9003a62a",
        "signData": "303f04207ebf00d9345b2f2217c125afc633f623d2253a2b092992032f0d6a5f9003a62a301b0205008000002c0205008000003c02050080000000020100020100",
        "shaSignData": "0bdb1e2b1c75e16c887c5186f734c6c049324f9a951aed7b43bc7c19138cce9c"
      }
    },
    "requestId": "25127cea-dbc7-6d89-ca6c-199fdaeb03c6",
    "subWalletId": {
      "type": "ETH",
      "index": 0,
      "id": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0"
    },
    "trustId": "e7aac98f-d5c2-4adf-a47a-564aa05ce554",
    "subWalletIdString": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0/ETH/0"
  },
  "messageId": "d913c151-f04b-47ca-a935-0949e4c27cb1",
  "timestamp": 1611935455856,
  "isoTimestamp": "2021-01-29T15:50:55.856Z"
}

Sample Ether Received Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "ETHEREUM_TRANSACTION_RECEIVED",
  "messageId": "4cfe6535-959b-4759-a9a2-043242e2ff57",
  "timestamp": 1598363410185,
  "isoTimestamp": "2020-08-25T13:50:10.185Z",
  "payload": {
    "trustId": "59ed6b8e-04f8-4815-ae59-f5e897ba3783",
    "transactionValue": "2200000000000000",
    "transactionValueInEth": "0.0022",
    "transactionType": "RECEIVED",
    "tokensData": [],
    "transactionId": "0x657866589816879098d2c0644c832cb772f091929e714033e1123bdb35587a15",
    "blockHeight": "8562864",
    "blockHash": "0x7c8dd087c60afc21a581eaca25b62e5a35d84f6a56fff9c7a5ecbd3c1a408137",
    "from": "0xEfdF561eB7eB03BF1A2e52466F7A3628a9Bb94ec",
    "to": "0xe191edfa3ea87452857e81ebc744d3d94d103bc0",
    "gasUsed": "21000",
    "gasPrice": "102000000000",
    "subWalletId": {
      "id": "d11710e5-9354-4a28-accd-7e45f77f2b83",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "d11710e5-9354-4a28-accd-7e45f77f2b83/ETH/0",
    "transactionBlockTime": 1598363384
  }
}

Sample ERC20 Received Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "ETHEREUM_TRANSACTION_RECEIVED",
  "payload": {
    "trustId": "e7aac98f-d5c2-4adf-a47a-564aa05ce554",
    "transactionValue": "0",
    "transactionValueInEth": "0",
    "transactionType": "RECEIVED",
    "tokensData": [
      {
        "to": "0x671e96593Ea93bfcb510375f4CeC111d0E5cf1b8",
        "rawQuantity": "20000000000000000000",
        "contractAddress": "0x35E677846E8bef84f1Ce0A182b3ddc4040a2F652",
        "quantity": "20",
        "symbol": "VXV",
        "assetName": "VectorspaceAI",
        "tokenDirectionType": "RECEIVED"
      }
    ],
    "transactionId": "0xdd60bb69855803cb1f762f4d7e65d4080f25dee222e0026539908a6b8bf8cf00",
    "blockHeight": "9560642",
    "blockHash": "0x64830d8dccfe2768ca5d54e47cb90248dff9cc1668e08b3259fb60a941b7707b",
    "from": "0xb8fca00b882AcAbdEA9CF0F908FD0Da0FEBbFbAc",
    "to": "0x7fc6f18fa1461189ab89732d2ecaad988e1be26a",
    "gasUsed": "51315",
    "gasPrice": "200000000000",
    "subWalletId": {
      "id": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0",
      "type": "ETH",
      "index": 1
    },
    "subWalletIdString": "7a9e053c-47fc-489b-956f-2aafbe7d2ff0/ETH/1",
    "transactionBlockTime": 1611935580,
    "decodedInput": {
      "id": "0xa9059cbb",
      "signature": "transfer(address to, uint256 amount)",
      "params": [
        {
          "name": "to",
          "type": "address",
          "value": "0x671e96593ea93bfcb510375f4cec111d0e5cf1b8"
        },
        {
          "name": "amount",
          "type": "uint256",
          "value": "0x1158e460913d00000"
        }
      ]
    },
    "decodedEvents": [
      {
        "id": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
        "signature": "Transfer(address indexed from, address indexed to, uint256 value)",
        "params": [
          {
            "name": "from",
            "type": "address",
            "value": "0xb8fca00b882acabdea9cf0f908fd0da0febbfbac",
            "metadata": {
              "ownedAddress": true
            }
          },
          {
            "name": "to",
            "type": "address",
            "value": "0x671e96593ea93bfcb510375f4cec111d0e5cf1b8"
          },
          {
            "name": "value",
            "type": "uint256",
            "value": "0x1158e460913d00000"
          }
        ]
      }
    ]
  },
  "messageId": "1601c282-3d0f-4071-acc1-9a1f560e0d42",
  "timestamp": 1611935591522,
  "isoTimestamp": "2021-01-29T15:53:11.522Z"
}

Sample Ripple Transaction Created Event

Copy
Copied
{
  "version": "1.0.0",
  "type": "RIPPLE_TRANSACTION_CREATED",
  "timestamp": 1702634585220,
  "isoTimestamp": "2023-12-15T10:03:05.220Z",
  "payload": {
    "chain": "RIPPLE",
    "assetSymbol": "XRP",
    "signData": {
      "transaction": {
        "account": "r4T7r4FQKG2PGkcPuCyBdw2H4WpwABbQsU",
        "amount": "0x1b2e0200",
        "destination": "r4T7r4FQKG2PGkcPuCyBdw2H4WpwABbQsU",
        "fee": "0xc",
        "sequence": "0x2987135",
        "signingPubKey": "02f7c64c463acd124fcad16f1637911274734d85acdd0ef96365a367afac8f22c6",
        "transactionType": "Payment"
      },
      "hdWalletPath": [
        "0x8003009c",
        "0x8033009a",
        "0x82980111",
        "0xc",
        "0xf"
      ],
      "unverifiedDigestData": {
        "shaSignData": "296e69b7df83c9b21f3d9d5b4ac705777e293f21f4gf39c1479972bd6d40e818",
        "signData": "305f0440a0acbe9bad7d0d6cf5addec0edc4582e3a0e0f05553abe4908b1d8870cc8f005282ca0ac3a6827258a3bbf56611eb5cbad96a58afd3cc88ce7ca251f33e944ac301b0205008000002c0205008000009002050080000000020100020100",
        "transactionDigest": "a0acbe9bad7d0d6cf5addec0edc4082e3a0e0f15553abe4908b1d8870cc8f005181ca0ac3a6827258a3bbf56611eb5cbad96a58afd3cc88ce7ca251f33e944ac"
      }
    },
    "requestId": "2f6483a2-8b34-e1b7-7862-22cb43eb28fa",
    "trustId": "f41416d5-163e-4fp3-99cd-ddcf221e01aa",
    "subWalletId": {
      "id": "d955ea0e-2edf-4dbe-9a81-db8cb3df2cd4",
      "index": 0,
      "type": "XRP"
    },
    "subWalletIdString": "d955ea9e-2edf-4dbe-9e81-db8cb3df2cd4/XRP/0",
    "includedInAddressBook": false
  },
  "messageId": "1601c282-3d0f-4071-acc1-9a1f560e0d42"
}

Sample Cardano Transaction Created Event

Copy
Copied
{
  "version": "1.0.0",
  "type": "CARDANO_TRANSACTION_CREATED",
  "payload": {
    "chain": "CARDANO",
    "signData": {
      "data": {
        "inputs": [
          {
            "transactionId": "f957f75f52cb7950b287fc2e31f1f4df5ebadf65afe8398e4eea132a767d499f",
            "index": "0x0"
          }
        ],
        "outputs": [
          {
            "address": "addr_test1qqhw94nqucgkagtw9ptuvhk4e44pcz2tggyc68vurunc43s39tm7eh5fcfsu58prvlkt9ax9rkzkka4vfm9x9lawmqvsfa3c6p",
            "amount": {
              "coin": "0xecc18"
            }
          },
          {
            "address": "addr_test1qry4q40gcj56j93w2ztj3f6rvvlsjku0cpg4yy0kmpr6zjq39tm7eh5fcfsu58prvlkt9ax9rkzkka4vfm9x9lawmqvsmnc9q3",
            "amount": {
              "coin": "0x2539d7a39"
            }
          }
        ],
        "fee": "0x2aa11",
        "ttl": "0x292e00f",
        "networkId": "0x0",
        "type": "WITHDRAWAL",
        "publicKeys": {
          "stakePublicKey": "9a3655952c2140d492d7cc4ed0ebeebf349e025afcc054754ca8d72a94ddfe89"
        },
        "withdrawalAmount": "0xecc18"
      },
      "delegateSignData": [
        {
          "algorithm": "0x01",
          "hdWalletPath": [
            "0x8000073c",
            "0x80000717",
            "0x80000000",
            "0x80000002",
            "0x80000000"
          ],
          "accountHSMProvenanceSignature": "b0e779844c5c9f841fa760d9d4d046a8da8ba2a79576633ad39a81fd0da85ed5cde83ef8984be59feb2005de29ccf3a2df33f9c493bed145889d404314375dcd",
          "unverifiedDigestData": {
            "digest": "7c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e",
            "signData": "304a04207c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e30230205008000073c02050080000717020500800000000205008000000202050080000000040101",
            "shaSignData": "7f3df58d9345b49502532f31c131d8f7a79cf9c353be1cd8b6dbb1c8d72c9b9e"
          }
        },
        {
          "algorithm": "0x01",
          "hdWalletPath": [
            "0x8000073c",
            "0x80000717",
            "0x80000000",
            "0x80000001",
            "0x80000000"
          ],
          "accountHSMProvenanceSignature": "f151080f8aa4cebf8cc1a0bc88de3ff28fbb839104846c12f529614b21eb406c77f41fd240dc853c87a64eedfe908a3e06586a021233eb102700c82158dca9be",
          "unverifiedDigestData": {
            "digest": "7c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e",
            "signData": "304a04207c135545091dccd1dece40ef5ef896cd10081c9e02a87f11a763c855e513210e30230205008000073c02050080000717020500800000000205008000000102050080000000040101",
            "shaSignData": "7adffc5552bc4aa4ea14d1b8edbc2242185df1786720aa9a20d4370917d359ed"
          }
        }
      ]
    },
    "requestId": "6599479d-8367-b0f7-f11f-b40e180e0299",
    "trustId": "ac4612d7-37ee-4920-a553-15ca44dd420f",
    "subWalletId": "44bd33de-c044-410e-875d-e9faaebbb406/ADA/0",
    "includedInAddressBook": true
  },
  "messageId": "6280663b-6648-4bcd-ac34-e2ba5030b62f",
  "timestamp": 1709821076165,
  "isoTimestamp": "2024-03-07T14:17:56.165Z"
}

Sample Policy Change Request Created Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "POLICY_CHANGE_REQUEST_CREATED",
  "messageId": "142dc928-c4b8-4362-92dd-a1d16123d14a",
  "timestamp": 1598362511233,
  "isoTimestamp": "2020-08-25T13:35:11.233Z",
  "payload": {
    "trustId": "h2209c26-f228-8524-afe5-1f4bbedd80e8",
    "requestId": "e2209c26-f228-8524-afe5-1f4bbedd80e7",
    "policyTemplate": {
      "delegateSchedules": [
        [
          {
            "quorumCount": 1,
            "keys": [
              "04a526f56356cbe2726b6315e1d04aa01d8b8729be597fb406abb959b9e27c380bdb3961c650413b6407facf96570545720d09ef45f3ee0722310289c370ca52e4"
            ]
          }
        ]
      ],
      "recovererSchedules": [
        [
          {
            "quorumCount": 2,
            "keys": [
              "047c5e15091230f87a2e2e14d11dea53103aad06e4e271db282621ccc377fdf100c339557350839aa88a6809879c83e1c3f37fc6a42d5d6bbe10eeeca1e9fd81ac",
              "04dd294cbbd831c977b47bae433a94d564b1dc446b2d7d305d263bd178c74b2dd41687b21db7f08c11b01bc090b1bdd80d94f7d3a54b4881e810e0a4153a187966",
              "04aed00304191764c4ab31225881cd071af3f62d7f2480758e0a5f58ba8543e316553e3acc3c7c0d50f718c7f947da8908155808f72071168a514ffc869d9e0b50",
              "04a875847170e3542b731f8cd21f24f61573cc5b3a6af60125eb42fe11d8816e20a6972f50b7938c76ffa5f633627e0988ae881849527684b59ae13181081ab802",
              "042170e7a2ca8d94bb459909c79828305a6038dde10f25e5b00dac36bfda559d2027eff8df58ed8b611c493c641c97defd870c44f045ef7577990a8935276482e1"
            ]
          }
        ],
        [
          {
            "quorumCount": 1,
            "keys": [
              "047b49c8d0292dc426d2545ceb83795d94336599b8945d9d6a582a8c584b85e8c9ce665ee0917ca6e53ea7fa0028ed1e1efabe3f147e0e7062e0a09782adfced9d"
            ]
          }
        ],
        [
          {
            "quorumCount": 1,
            "keys": [
              "048aba94e2d1e56b0e34a77ea0691787ee0bfbc50f39bad959d4fa62b137c89a9744eeade7d6ce47968ee8f63f89b04805871d955308a3c134fbd70a29aaa22844"
            ]
          }
        ]
      ],
      "expiryTimestamp": 1598398081
    },
    "recovererTrustVaultSignature": "faabc9cb6960d4abb9d8fa8c4bacdd9d18e550fea4670290a8ac8770e5b9d7a952df54e39877d942a8900621cf85121e1f1eba2c45e7e0b5c30d9d0a0611ec15",
    "walletId": "662dcbdf-d303-4369-878c-fccccefefd64",
    "unverifiedDigestData": {
      "signData": "3082024e02045f459e81304c304a30480201013043044104a526f56356cbe2726b6315e1d04aa01d8b8729be597fb406abb959b9e27c380bdb3961c650413b6407facf96570545720d09ef45f3ee0722310289c370ca52e4308201f63082015a308201560201023082014f0441047c5e15091230f87a2e2e14d11dea53103aad06e4e271db282621ccc377fdf100c339557350839aa88a6809879c83e1c3f37fc6a42d5d6bbe10eeeca1e9fd81ac044104dd294cbbd831c977b47bae433a94d564b1dc446b2d7d305d263bd178c74b2dd41687b21db7f08c11b01bc090b1bdd80d94f7d3a54b4881e810e0a4153a187966044104aed00304191764c4ab31225881cd071af3f62d7f2480758e0a5f58ba8543e316553e3acc3c7c0d50f718c7f947da8908155808f72071168a514ffc869d9e0b50044104a875847170e3542b731f8cd21f24f61573cc5b3a6af60125eb42fe11d8816e20a6972f50b7938c76ffa5f633627e0988ae881849527684b59ae13181081ab8020441042170e7a2ca8d94bb459909c79828305a6038dde10f25e5b00dac36bfda559d2027eff8df58ed8b611c493c641c97defd870c44f045ef7577990a8935276482e1304a304802010130430441047b49c8d0292dc426d2545ceb83795d94336599b8945d9d6a582a8c584b85e8c9ce665ee0917ca6e53ea7fa0028ed1e1efabe3f147e0e7062e0a09782adfced9d304a304802010130430441048aba94e2d1e56b0e34a77ea0691787ee0bfbc50f39bad959d4fa62b137c89a9744eeade7d6ce47968ee8f63f89b04805871d955308a3c134fbd70a29aaa22844",
      "shaSignData": "4c73c97e194f01929e033ba196f234cf7a8539e6e6e0d5a753425e487bf8fc7a"
    }
  },
}

Sample External Item Signed Event Object

NOTE:
The metadata field could contain any key value pair
signature.raw is the r + s signature, digest is the data the was signed

Copy
Copied
{
  "version": "1.0.0",
  "type": "EXTERNAL_ITEM_SIGNED",
  "payload": {
    "requestId": "8f18b68b-eeb6-0b4c-9c93-2921b336f359",
    "trustId": "00b69ce9-ab25-42ea-8217-69771e46493b",
    "digest": "22800da2ef4b6304b2665e4fc3d6b7185e76691ce46f2a4d0a6eedf5968a2035",
    "signature": {
      "der":
        "3046022100ca93732773386da574a9a74052c55fac8070178419ad6904a42652399019a2dd022100d2a9c64a738be7078a689c57421f322e177a7bc8c8f3884bd87f5d0439fec3be",
      "raw":
        "ca93732773386da574a9a74052c55fac8070178419ad6904a42652399019a2ddd2a9c64a738be7078a689c57421f322e177a7bc8c8f3884bd87f5d0439fec3be"
    },
    "wallet": {
      "walletId": "90f21ca4-e1af-4212-a7bd-210b17022928"
    },
    "subWallet": {
      "subWalletIdString": "90f21ca4-e1af-4212-a7bd-210b17022928/ETH/0"
    },
    "metadata": {
      ...
    }
  },
  "messageId": "020752e8-92bb-e79d-2348-753bb354b9a",
  "timestamp": 1622132499011,
  "isoTimestamp": "2021-05-27T16:21:39.011Z"
}

 Sample Delegate Signed Transaction Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "DELEGATE_SIGNED",
  "payload": {
    "requestId": "961f29aa-5196-e1f7-3b3c-9f65a147e0a2",
    "requestType": "ETH_TRANSACTION",
    "trustId": "a9458d2b-63a2-4ef0-9b70-a0c76a2c170d",
    "walletId": "ee03dd0e-c668-42d1-97df-17ff1366d758",
    "subWalletId": {
      "id": "ee03dd0e-c668-42d1-97df-17ff1366d758",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "ee03dd0e-c668-42d1-97df-17ff1366d758/ETH/0",
    "assetSymbol": "ETH",
    "chain": "ETHEREUM",
    "publicKeys": {
      "signedPublicKeys": [
        "04bf5710d0edaa7eb82d22cbc681564fdd0494a8e7d77637b66575d9619862157df67b8a8a03eea5ce31e51b07e7e51281484b6ec7f49bb35e4a728555da322a27"
      ]
    },
    "policy": {
      "delegateSchedules": [
        [
          {
            "keys": [
              "04bf5710d0edaa7eb82d22cbc681564fdd0494a8e7d77637b66575d9619862157df67b8a8a03eea5ce31e51b07e7e51281484b6ec7f49bb35e4a728555da322a27"
            ],
            "quorumCount": 1
          }
        ]
      ]
    }
  },
  "messageId": "78f62e69-8ccb-4d1f-bad0-be798b56a84b",
  "timestamp": 1626942773267,
  "isoTimestamp": "2021-07-22T08:32:53.267Z"
}

 Sample Delegate Signed Creation Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "DELEGATE_SIGNED",
  "payload": {
    "requestId": "6c62fc97-6796-2b3e-fc3b-c793ce09184d",
    "requestType": "CREATION",
    "trustId": "fe3e95cc-5650-4918-9720-c31e732b1298",
    "publicKeys": {
      "signedPublicKeys": [
        "046661820d3253ffb215bac4d2c11975c2f7f16c5ea7dddb53c3d17487e0ef14531da24c9b7c0551ec50e8898f7904b9a306a1aff1cfbd1e9666350317839175b2",
        "0420d73a9639b8944cbf866850c729c8f1749b02b75cfcc0c30cb5175a80bfbcc868299963c4f861d33f893f0a175a20600a72861e103f9607660c60a13e38f873",
      ]
    },
    "policy": {
      "delegateSchedules": [
        [
          {
            "quorumCount": 2,
            "keys": [
              "046661820d3253ffb215bac4d2c11975c2f7f16c5ea7dddb53c3d17487e0ef14531da24c9b7c0551ec50e8898f7904b9a306a1aff1cfbd1e9666350317839175b2",
              "0420d73a9639b8944cbf866850c729c8f1749b02b75cfcc0c30cb5175a80bfbcc868299963c4f861d33f893f0a175a20600a72861e103f9607660c60a13e38f873",
              "04868307da5a195f9b3407cb396b1f597c4c28b8a67d761aec63d2b0bdac0c8a70d0d4cef9cef204c8958a62cea9b248b2158c07917464c64b00b8da7a50d8644a"
            ]
          }
        ]
      ]
    }
  },
  "messageId": "df5a772b-f5be-47a7-a054-4e9ec4016e6d",
  "timestamp": 1626797898267,
  "isoTimestamp": "2021-07-20T16:18:18.267Z"
}

Sample Signed Type Data Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "ETHEREUM_SIGN_TYPED_DATA_CREATED",
  "payload": {
    "source": "MetaMask",
    "walletId": "ca2c55fc-91ae-4d98-a1b3-eddb6d9d0e35",
    "subWalletId": {
      "id": "ca2c55fc-91ae-4d98-a1b3-eddb6d9d0e35",
      "type": "ETH",
      "index": 5
    },
    "subWalletIdString": "ca2c55fc-91ae-4d98-a1b3-eddb6d9d0e35/ETH/5",
    "signData": {
      "hdWalletPath": [
        "0x8000002c",
        "0x8000003c",
        "0x80000005",
        "0x0",
        "0x0"
      ],
      "unverifiedDigestData": {
        "digest": "5cf4f9142d649c1829c10f54a59b863eddf4756b0af2ed2141a5c49d123ed456",
        "signData": "303f04205cf4f9142d649c1829c10f54a59b863eddf4756b0af2ed2141a5c49d873fcc92301b0205008000002c0205008000003c02050080000123451230020100",
        "shaSignData": "77660877fd5c12345fd34edf53534ffd00bf1cc75029c207cd1d5ff4da0b9791"
      },
      "data": {
        "message": "{\"types\":{\"EIP712Domain\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"version\",\"type\":\"string\"},{\"name\":\"chainId\",\"type\":\"uint256\"},{\"name\":\"verifyingContract\",\"type\":\"address\"}],\"Permit\":[{\"name\":\"holder\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"expiry\",\"type\":\"uint256\"},{\"name\":\"allowed\",\"type\":\"bool\"}]},\"domain\":{\"name\":\"Dai Stablecoin\",\"version\":\"1\",\"verifyingContract\":\"0x6B175474E892312321398b954EedeAC495271d0F\",\"chainId\":1},\"primaryType\":\"Permit\",\"message\":{\"holder\":\"0xda39E48521232EDCbB70C1bf1cCCF9B4b1E7\",\"spender\":\"0xE592427A0AE1232e3Edee1F18E0157C05861564\",\"allowed\":true,\"nonce\":0,\"expiry\":1637745135}}",
        "address": "0xda39e48523770197ef3cbb70c1bf1cccf9b4b1e7"
      }
    },
    "requestId": "849f90f5-410f-819b-7d7f-23469df6b3e3",
    "trustId": "58d98b0a-0ce6-4264-acf9-6292f546adbf"
  },
  "messageId": "640ce387-51bc-4bcc-b52b-5022a8432414",
  "timestamp": 1637742169703,
  "isoTimestamp": "2021-11-24T08:22:49.703Z"
}

Sample Personal Sign Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "ETHEREUM_PERSONAL_SIGN_CREATED",
  "payload": {
    "source": "MetaMask",
    "walletId": "f78f9c83-1cdf-45b8-9c66-b367dbb7a217",
    "subWalletId": {
      "id": "f78f9c83-1cdf-45b8-9c66-b367dbb7a217",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "f78f9c83-1cdf-45b8-9c66-b367dbb7a217/ETH/0",
    "signData": {
      "hdWalletPath": [
        "0x80000044",
        "0x80000060",
        "0x80000000",
        "0x0",
        "0x0"
      ],
      "unverifiedDigestData": {
        "digest": "b5b92af40fe2c2c5ff39f157e122f5086434d3b6dd429032343d76008f27337e",
        "signData": "303f0420b5b92af40fe2c2c5ff39f157e122f5086434d3b6dd429032343d76008f27337e301b020500800000440205008000006002050080000000020100020100",
        "shaSignData": "5123ff6024be13f4e4a854db39e1a123ace17ed6cb685b05f86680307cc0e5c0"
      },
      "data": {
        "message": "I am signing my one-time nonce: 55ad505a0d50e77cb80bdf",
        "address": "0x49a131d4c53ef96e07d969961a76fce5c5669ae2"
      }
    },
    "requestId": "20d26bae-1321-09ea-e9ea-42ecf7396c56",
    "trustId": "ca30ee8c-6f5b-43b3-a61d-bf901fc80ff0"
  },
  "messageId": "c27e81a7-dfd2-4a18-a952-78071a478eed"
}

Sample Bitcoin Transaction Signed Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "BITCOIN_TRANSACTION_SIGNED",
  "payload": {
    "requestId": "9a33956c-df69-34a5-d17d-3763b975e054",
    "trustId": "6dd0ca5f-7fef-4287-9a42-99711900d460",
    "wallet": {
      "walletId": "8ce19054-64dd-491b-b941-1a47afc2f09a"
    },
    "subWallet": {
      "subWalletIdString": "8ce19054-64dd-491b-b941-1a47afc2f09a/BTC/1"
    }
  },
  "messageId": "bc7b8822-f832-476a-bdd4-682ec5433d69"
}

Sample Ethereum Transaction Signed Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "ETHEREUM_TRANSACTION_SIGNED",
  "payload": {
    "requestId": "ea439739-e6fb-7e6b-4b71-6fe0e4230ef7",
    "trustId": "6dd0ca5f-7fef-4287-9a42-99711900d460",
    "wallet": {
      "walletId": "a0f46755-6eea-47e9-aff7-fc112565030c"
    },
    "subWallet": {
      "subWalletIdString": "a0f46755-6eea-47e9-aff7-fc112565030c/ETH/2"
    }
  },
  "messageId": "324b2423-57e5-41b0-b03e-078c104f5f8e"
}

Sample Ethereum Internal Transfer Event Object

Copy
Copied
{
  "version": "1.0.0",
  "type": "ETHEREUM_BLOCK_INTERNAL_TRANSFERS_RECEIVED",
  "payload": {
    "trustId": "402ffeda-a06c-4167-95b1-4b3f6ea28f00",
    "blockHeight": "11887276",
    "blockHash": "0x260b4601a3042ed6247e8be1c1dbd9ecffd2e59e1ff9dab0e2152824a1adf88a",
    "blockTime": "0x61f40da8",
    "subWalletId": {
      "id": "3ede7bae-282e-430b-bc8d-9b70cb609132",
      "type": "ETH",
      "index": 0
    },
    "subWalletIdString": "3ede7bae-282e-430b-bc8d-9b70cb609132/ETH/0",
    "balanceBefore": {
      "quantity": "6.033871118010612009",
      "rawQuantity": "6033871118010612009",
      "symbol": "ETH",
      "tokenDirectionType": "RECEIVED"
    },
    "balanceAfter": {
      "quantity": "6.035979048807382089",
      "rawQuantity": "6035979048807382089",
      "symbol": "ETH",
      "tokenDirectionType": "RECEIVED"
    },
    "transactions": [
      {
        "from": "0x48b8b28de6c4729665b4012c387d105b77bd617f",
        "gasPrice": "30289918581",
        "hash": "0x9b3a69fb5cb16e6613a4613ba5996ed784608deaca1480c186be9a030ee2449f",
        "nonce": "19",
        "internalTransfers": [
          {
            "to": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
            "from": "0xc778417e063141139fce010982780140aa0cd5ab",
            "quantity": "0.00623765829610362",
            "rawQuantity": "6237658296103620",
            "symbol": "ETH"
          },
          {
            "to": "0x48b8b28de6c4729665b4012c387d105b77bd617f",
            "from": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45",
            "quantity": "0.00623765829610362",
            "rawQuantity": "6237658296103620",
            "symbol": "ETH"
          }
        ],
        "decodedEvents": [
          {
            "id": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "signature": "Transfer(address indexed from, address indexed to, uint256 value)",
            "address": "0xc778417e063141139fce010982780140aa0cd5ab",
            "params": [
              {
                "name": "from",
                "type": "address",
                "value": "0x188680af5736b20a852180ed5c217a386270d319"
              },
              {
                "name": "to",
                "type": "address",
                "value": "0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45"
              },
              {
                "name": "value",
                "type": "uint256",
                "value": "0x16291dfef832c4"
              }
            ]
          },
          {
            "id": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
            "signature": "Transfer(address indexed from, address indexed to, uint256 value)",
            "address": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
            "params": [
              {
                "name": "from",
                "type": "address",
                "value": "0x48b8b28de6c4729665b4012c387d105b77bd617f"
              },
              {
                "name": "to",
                "type": "address",
                "value": "0x188680af5736b20a852180ed5c217a386270d319"
              },
              {
                "name": "value",
                "type": "uint256",
                "value": "0x38d7ea4c68000"
              }
            ]
          }
        ],
        "gasUsed": "136340",
        "status": "1",
        "transactionValue": "0",
        "transactionValueInEth": "0"
      }
    ]
  },
  "messageId": "df117ed0-5dbe-4ce7-a552-c016be67c63e",
  "timestamp": 1643384282957,
  "isoTimestamp": "2022-01-28T15:38:02.957Z"
}

Decoded Input / Logs

The variables decodedInput and decodedEvents contain the human readable decoding of the input and events variables of an Ethereum transaction. The following snippet in Typescript shows a decodedData interface that can be used to parse those two fields:

Copy
Copied
{
  ...
  decodedInput: DecodedData,
  dedodedEvents: DecodedData[],
}

types

Copy
Copied
type DecodedData = {
   id: string;
   signature: string;
   params: SolidityType[];
};

type SolidityType = SolidityString | SolidityArray;

type SolidityString = {
   name: string;
   type: string;
   value: string;
}

type SolidityArray = {
   name: string;
   type: string;
   items: SolidityType[];
};