Skip to main content
Field types are the building blocks of VisualSign visualizations. Each type displays specific kinds of blockchain data in a clear, consistent way.

Core field types

text_v2

Displays plain text information. Use for labels, status messages, and non-monetary values.
When to use:
  • Network names
  • Protocol identifiers
  • Status messages
  • Transaction types
  • Warning messages

amount_v2

Displays monetary values with proper formatting. Automatically handles decimal places and currency symbols.
Properties:
  • Amount: Numeric string (must be a valid signed decimal number)
  • Abbreviation: Token symbol or currency code
Visual treatment:
  • Large, prominent display for amounts
  • Currency symbol or code shown clearly
  • Automatic formatting for readability

address_v2

Displays blockchain addresses with optional identity resolution and verification badges.
Properties:
  • Address: The blockchain address
  • Name (optional): ENS name, contract name, or identity
  • BadgeText (optional): Verification status or warning
Visual features:
  • Truncated address display (0x742d…bEb7)
  • Copy-to-clipboard functionality
  • Visual badges for verification status
  • Color coding for risk levels

Layout field types

list_layout

Groups related fields together in a vertical list. Perfect for showing multiple related parameters.
When to use:
  • Grouping related parameters
  • Showing inputs/outputs
  • Listing multiple recipients
  • Displaying step sequences

preview_layout

Provides expandable/collapsible content with progressive disclosure. Shows essential info collapsed, full details when expanded.
Properties:
  • Title: Main heading for the preview
  • Subtitle (optional): Secondary information
  • Condensed: Fields shown when collapsed
  • Expanded: Full field list when expanded
Visual behavior:
  • Chevron indicator for expand/collapse
  • Smooth animation between states
  • Preserves user’s expand/collapse choice

Field type selection guide

Combining field types

Example: DeFi position

Best practices

1. Label clarity

  • Use action-oriented labels (“You’re sending” vs “Amount”)
  • Keep labels concise but descriptive
  • Use consistent terminology across transactions

2. Progressive complexity

  • Show critical information with basic field types
  • Use preview_layout for advanced details
  • Group related items with list_layout

3. Risk communication

4. Visual hierarchy

  • Primary action: Large amount_v2 fields
  • Recipients: Clear address_v2 with names
  • Context: text_v2 for supporting information
  • Details: preview_layout for optional viewing

Platform considerations

Mobile optimization

  • Field types automatically adapt to screen size
  • preview_layout defaults to collapsed on mobile
  • Touch-friendly expand/collapse controls
  • Horizontal scrolling for addresses

Accessibility

  • All field types support screen readers
  • Keyboard navigation between fields
  • High contrast mode support
  • ARIA labels for interactive elements

Internationalization

Parser output is ASCII-only (see Character set validation). Wallet applications handle localization:
  • Locale-aware number formatting (decimal separators, grouping)
  • Currency symbol positioning based on locale
  • Date/time formatting for timestamps
  • UI translation of standard labels

Validation

Each field type has validation rules:

Character set (all fields)

All text content is restricted to printable ASCII characters only (codes 0x20-0x7E). The following are rejected:
  • Unicode characters (Chinese, Japanese, Arabic, Cyrillic, etc.)
  • Emoji
  • Non-ASCII currency symbols (€, £, ¥)
  • Control characters and zero-width characters
  • Unicode escape sequences (\u)
This restriction prevents security attacks including:
  • Homoglyph attacks: Cyrillic “а” (U+0430) looks identical to Latin “a” (U+0061)
  • Right-to-left override: Characters that reverse text direction
  • Invisible characters: Zero-width spaces that hide content
Token names and other content must use ASCII equivalents (e.g., “EUR” instead of ”€“).

amount_v2

  • Amount must be a valid signed decimal number (validated by regex)
  • Abbreviation must be non-empty
  • Supports decimal places
  • Large numbers should use decimal notation, not scientific notation

address_v2

  • Must be valid for target chain
  • Ethereum: 40 hex characters with 0x prefix
  • Solana: Valid Base58 public key
  • Sui: 32-byte hex address with 0x prefix
  • Tron: Base58 address starting with T

text_v2

  • Maximum 500 characters
  • ASCII printable characters only (see character set above)
  • HTML is escaped for security

Layout types

  • Maximum 20 nested fields
  • Recursive nesting not allowed
  • At least one field required

Chain-specific patterns

Ethereum ERC-20 approval

Solana SPL token transfer

Diagnostic field type

diagnostic

Reports data quality findings from the parser’s lint framework. Diagnostics are attested alongside display fields in the signed payload, so the HSM/attester can verify what the parser checked and what it found.
Properties:
  • Rule: Rule identifier in domain::rule_name format
  • Domain: Category of the check (e.g., transaction, decode, idl)
  • Level: Severity of the finding
    • ok — rule ran and found no issues (boot-metric attestation)
    • warn — data quality issue found, parsing continued
    • error — serious issue found
  • Message: Human-readable description of the finding
  • InstructionIndex (optional): Which instruction triggered the diagnostic
Wallet handling:
  • Wallets that don’t recognize Type: "diagnostic" can display the FallbackText
  • Diagnostics always appear after all display fields (network, instructions, accounts)
  • When report_all_rules is enabled (default), every rule emits a diagnostic — ok, warn, or error — so the attester can verify all expected rules ran
Current rules:

Future field types

Planned additions to the field type system:
  • image_v2: NFT previews and token logos
  • chart_v2: Price charts and historical data
  • qr_v2: QR codes for addresses
  • signature_v2: Signature visualization
  • timeline_v2: Transaction history display