Skip to main content

Introduction to EVVM Signature Structures

All EVVM operations require cryptographic signatures for security. This guide explains the universal signature format used across all EVVM services.

Universal Message Format

Every EVVM signature follows this standardized structure:

<evvmId>,<functionName>,<param1>,<param2>,...,<paramN>

Components:

  • <evvmId>: Network identifier (typically 1)
  • <functionName>: Operation to execute (pay, registerUsername, etc.)
  • <param1>, <param2>...: Function parameters in exact order

EIP-191 Message Signing

EVVM uses the EIP-191 standard - the same protocol used by MetaMask and other Ethereum wallets.

How it works:

  1. Build your message: 1,pay,0x742c...,0x0000...,50000000000000000,1000000000000000,42,false,0x0000...
  2. EIP-191 wraps it: "\x19Ethereum Signed Message:\n145" + message
  3. Wallet creates signature from the wrapped message

This prevents signatures from being used on other systems or contracts.

Parameter Formatting Rules

All parameters must be converted to strings:

  • Numbers: 50000000000000000 (decimal, no separators)
  • Addresses: 0x742c7b6b472c8f4bd58e6f9f6c82e8e6e7c82d8c (lowercase hex with 0x)
  • Strings: alice (as provided)
  • Booleans: true or false (lowercase)
  • Bytes: 0xa1b2c3d4... (hex with 0x)

Message Construction Process

  1. Convert Parameters: Transform all values to proper string format
  2. Concatenate: Join with commas in exact parameter order
  3. Sign: Use wallet to create EIP-191 signature

Example: Payment Transaction

Scenario: Send 0.05 ETH to another user

Function Parameters:

  1. Recipient: 0x742c7b6b472c8f4bd58e6f9f6c82e8e6e7c82d8c
  2. Token: 0x0000000000000000000000000000000000000000 (ETH)
  3. Amount: 50000000000000000 (0.05 ETH in wei)
  4. Priority Fee: 1000000000000000 (0.001 ETH)
  5. Nonce: 42
  6. Priority Flag: false (sync execution)
  7. Executor: 0x0000000000000000000000000000000000000000 (unrestricted)

Constructed Message:

1,pay,0x742c7b6b472c8f4bd58e6f9f6c82e8e6e7c82d8c,0x0000000000000000000000000000000000000000,50000000000000000,1000000000000000,42,false,0x0000000000000000000000000000000000000000

Username Alternative: Replace address with username alice:

1,pay,alice,0x0000000000000000000000000000000000000000,50000000000000000,1000000000000000,42,false,0x0000000000000000000000000000000000000000

EVVM Services Overview

EVVM Core Functions

Payments and transfers:

  • Single payments to addresses or usernames
  • Batch payments to multiple recipients
  • Withdrawal operations (coming soon)

Name Service Functions

Username management:

  • Registration (pre-register → register process)
  • Marketplace (make/withdraw/accept offers)
  • Metadata management and renewal

Staking Functions

Token staking operations:

  • Public and presale staking/unstaking
  • Reward claiming and management

Treasury Functions

Cross-chain operations:

  • Bridge transfers between blockchains
  • Asset management across networks

Important Rules

  • Parameter Order: Must match exact function specification
  • Nonce Usage: Each signature requires unique nonce per service
  • Format Precision: No extra spaces, correct case sensitivity
  • Address Format: Always lowercase with 0x prefix