Skip to main content

Function Signature

Description

Generates an idempotency key for a transaction send. This is a top-level function exported by package:portal_flutter/portal_flutter.dart. It is not a method on Portal, so no wallet or client is required to call it. The returned value is a lowercase UUID v4, which always meets Portal’s key rules (1–255 characters of A-Z a-z 0-9 . _ ~ -). Pass the result as idempotencyKey to sendTransaction, to request for eth_sendTransaction, sol_signAndSendTransaction or sol_signAndConfirmTransaction, or to sendAsset on EVM and Solana chains. Portal broadcasts a key at most once while it remembers the key (at least 24 hours after the request was last updated), so a retry with the same key within that time cannot send the same transaction twice.

Parameters

None.

Returns

String - A lowercase UUID v4, for example "550e8400-e29b-41d4-a716-446655440000".
  • PortalIdempotencyErrorId holds the error IDs Portal returns, as PortalException.code, when it rejects a request because of its key. PortalException.isIdempotencyRejection checks for any of them, and PortalException.isIdempotencyKeyReused checks for keyReused.
  • Before anything is signed or sent, the SDK throws a PortalException with code INVALID_IDEMPOTENCY_KEY for a key that breaks the rules above, and IDEMPOTENCY_KEY_UNSUPPORTED for a key on eth_sendRawTransaction, sol_sendTransaction or a Bitcoin sendAsset.

Example

Notes

  • Generate one key per operation, not per attempt. Reuse it only to retry the identical request.
  • Portal remembers a key for at least 24 hours after the request was last updated, then removes it. Once the key is removed, the same key is treated as a new request, so check the chain before retrying an operation that is older than 24 hours.
  • No rejection returns the original transaction hash. Check the chain before sending an operation again under a new key.