Blockchain Art Studio

TronMoji Generator

Create unique 16x16 pixel art and immortalize it on the TRON blockchain. Your digital creativity meets decentralized permanence.


Connect your TronLink wallet to send TronMoji on-chain

TronMoji Studio: Complete Technical Guide

TronMoji is an innovative protocol that revolutionizes digital art creation by embedding 16x16 pixel artwork directly into the TRON blockchain infrastructure. Unlike traditional NFTs, TronMoji data is inscribed permanently in transaction memo fields, creating truly immutable digital artifacts.

Each TronMoji exists as a self-contained hexadecimal data structure that can be reconstructed and displayed by any compatible viewer, making it a decentralized standard for blockchain-based pixel art.

Key Features: Zero external dependencies, permanent storage, minimal transaction cost (~1.1 TRX), and universal compatibility across TRON ecosystem applications.

Step-by-Step Creation Process:
  1. Color Selection: Choose from 16 available colors including transparent, black, white, and 13 HSL-based spectrum colors
  2. Grid Painting: Click grid cells to apply your selected color. The 16x16 matrix provides 256 individual pixels for your artwork
  3. Real-time Preview: Your artwork updates instantly with each click, showing the exact appearance of your final TronMoji
  4. HEX Export: Copy the generated 256-character hexadecimal string to save or share your creation
  5. Blockchain Inscription: Connect TronLink wallet and send your TronMoji to any TRON address for permanent storage
Pro Tip: Use the Random button to generate inspiration, or load example TronMojis to understand different artistic approaches.

Data Structure Specification
  • Grid Dimensions: 16×16 pixel matrix (256 total pixels)
  • Color Depth: 4-bit per pixel (16 colors maximum)
  • Data Format: Hexadecimal string with 'tronmoji:' prefix
  • Total Size: 265 bytes (9-byte prefix + 256 hex characters)
Color Encoding System
  • 0: Transparent (background)
  • 1: Pure Black (#000000)
  • 2: Pure White (#FFFFFF)
  • 3-F: HSL color wheel: hsl((hex_value - 3) × 27.6923°, 100%, 50%)
Blockchain Integration
  • Storage Location: Transaction memo field (raw_data.data)
  • Encoding Method: Direct hexadecimal insertion
  • Retrieval: Parse memo field from transaction data
Protocol Buffer Structure
  • Field Identifier: 0x32 (memo field tag)
  • Length Encoding: Varint format (typically 0x89 for 137 bytes)
  • Data Payload: UTF-8 encoded tronmoji string

Interactive gallery: Click any example to load it into the editor for modification or inspiration:

Featured Themes: Crypto symbols, Emojis, Memes, Abstract art, Gaming icons, and Web3 culture references

Heart TronMoji Transaction Breakdown

Memo Field Data (Hex):

74726f6e6d6f6a693a001110000001110001fff110011fff100feeeff11ffeeef01feddeeffeeddef1fedddddeedddddeffeddddddddddddeffe2dddddddddddeffe2dddddddddddef1fe2dddddddddef101fe2dddddddef10001fe2dddddef1000001fe2dddef100000001fe2def10000000001feef1000000000001ff10000000000000110000000

Complete Transaction Data:

890174726f6e6d6f6a693a001110000001110001fff110011fff100feeeff11ffeeef01feddeeffeeddef1fedddddeedddddeffeddddddddddddeffe2dddddddddddeffe2dddddddddddef1fe2dddddddddef101fe2dddddddef10001fe2dddddef1000001fe2dddef100000001fe2def10000000001feef1000000000001ff10000000000000110000000
Hex Breakdown:
  • 89 = Protocol buffer field encoding
  • 01 = Data length (137 bytes)
  • 74726f6e6d6f6a693a = "tronmoji:" prefix
  • Remaining 256 chars = Pixel data
Verification Steps:
  1. Decode transaction hex
  2. Extract memo field (0x32)
  3. Verify "tronmoji:" prefix
  4. Parse 256-char pixel data
  5. Render 16x16 grid

JavaScript Implementation
// Parse TronMoji from transaction memo
function parseTronMoji(memoHex) {
    const prefix = "tronmoji:";
    const memoStr = Buffer.from(memoHex, 'hex').toString('utf8');
    if (!memoStr.startsWith(prefix)) return null;
    
    const pixelData = memoStr.slice(prefix.length);
    if (pixelData.length !== 256) return null;
    
    return pixelData;
}

// Render TronMoji to canvas
function renderTronMoji(pixelData, canvas) {
    const ctx = canvas.getContext('2d');
    const pixelSize = canvas.width / 16;
    
    for (let i = 0; i < 256; i++) {
        const colorIndex = parseInt(pixelData[i], 16);
        const x = (i % 16) * pixelSize;
        const y = Math.floor(i / 16) * pixelSize;
        
        ctx.fillStyle = getColorFromIndex(colorIndex);
        ctx.fillRect(x, y, pixelSize, pixelSize);
    }
}
TRON API Integration
  • Query TronMojis: Search transactions by memo field prefix
  • Batch Processing: Use TronGrid API for bulk TronMoji discovery
  • Real-time Monitoring: WebSocket subscriptions for new TronMoji creations
  • Validation: Verify TronMoji format before processing