Skip to main content
Note: see the language section for more details.

Overview

Tempo transactions have limited policy support compared to other blockchain types. Unlike Ethereum, Solana, Bitcoin, and Tron, Tempo does not expose transaction-specific fields (such as tempo.tx) in the policy engine. The primary way to govern Tempo transactions is through the activity.params.type field and other general policy attributes.

Policy Examples

Allow Tempo transactions

{
  "policyName": "Allow Tempo transactions",
  "effect": "EFFECT_ALLOW",
  "condition": "activity.type == 'ACTIVITY_TYPE_SIGN_TRANSACTION_V2' && activity.params.type == 'TRANSACTION_TYPE_TEMPO'"
}

Deny Tempo transactions

{
  "policyName": "Deny Tempo transactions",
  "effect": "EFFECT_DENY",
  "condition": "activity.params.type == 'TRANSACTION_TYPE_TEMPO'"
}

Allow Tempo transactions for a specific wallet

{
  "policyName": "Allow Tempo transactions for specific wallet",
  "effect": "EFFECT_ALLOW",
  "condition": "activity.params.type == 'TRANSACTION_TYPE_TEMPO' && wallet.id == '<WALLET_ID>'"
}

Allow Tempo transactions for a specific private key

{
  "policyName": "Allow Tempo transactions for specific private key",
  "effect": "EFFECT_ALLOW",
  "condition": "activity.params.type == 'TRANSACTION_TYPE_TEMPO' && private_key.id == '<PRIVATE_KEY_ID>'"
}

Require specific approver for Tempo transactions

{
  "policyName": "Require specific approver for Tempo transactions",
  "effect": "EFFECT_ALLOW",
  "consensus": "approvers.any(user, user.id == '<USER_ID>')",
  "condition": "activity.params.type == 'TRANSACTION_TYPE_TEMPO'"
}

Allow Tempo transactions for wallets with a specific label

{
  "policyName": "Allow Tempo transactions for wallets with specific label",
  "effect": "EFFECT_ALLOW",
  "condition": "activity.params.type == 'TRANSACTION_TYPE_TEMPO' && wallet.label == 'tempo-production'"
}

Allow Tempo transactions for private keys with a specific tag

{
  "policyName": "Allow Tempo transactions for private keys with tag",
  "effect": "EFFECT_ALLOW",
  "condition": "activity.params.type == 'TRANSACTION_TYPE_TEMPO' && private_key.tags.contains('tempo-enabled')"
}

Legacy Ethereum Transactions on Tempo

During Tempo’s testnet period, legacy Ethereum transactions are also supported on Tempo and can be governed using standard Ethereum policy syntax. See the Ethereum policy examples for more details on how to write policies for these transaction types.