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 (typically1)<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:
- Build your message:
1,pay,0x742c...,0x0000...,50000000000000000,1000000000000000,42,false,0x0000... - EIP-191 wraps it:
"\x19Ethereum Signed Message:\n145"+ message - 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:
trueorfalse(lowercase) - Bytes:
0xa1b2c3d4...(hex with 0x)
Message Construction Process
- Convert Parameters: Transform all values to proper string format
- Concatenate: Join with commas in exact parameter order
- Sign: Use wallet to create EIP-191 signature
Example: Payment Transaction
Scenario: Send 0.05 ETH to another user
Function Parameters:
- Recipient:
0x742c7b6b472c8f4bd58e6f9f6c82e8e6e7c82d8c - Token:
0x0000000000000000000000000000000000000000(ETH) - Amount:
50000000000000000(0.05 ETH in wei) - Priority Fee:
1000000000000000(0.001 ETH) - Nonce:
42 - Priority Flag:
false(sync execution) - 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
0xprefix