Posts

SeedCuba: arte generativo determinista, verificable y cubano [Spanish-English]

3 comments·0 reblogs
lorenaavila9403
57
0 views
·
5 min read

🌱 SeedCuba

Arte generativo determinista, verificable y cubano

Deterministic, verifiable generative art from Cuba


🎨 Concepto de marca · Brand concept

🇪🇸 Español

El nombre une dos mundos: la seed del código generativo y el origen cubano de cada pieza. El logo es una semilla geométrica hecha de píxeles que se disuelve en pinceladas: el código que se vuelve arte.

Lema: Cada obra nace de una semilla única.

Paleta: turquesa #2EC4B6 (mar, tecnología), coral #FF6B57 (calor, trópico), gris cemento (fondo urbano) y carbón #1E2226 (texto).

Tono: tech-artista, moderno, minimalista.

🇬🇧 English

The name joins two worlds: the generative-code seed and the Cuban origin of every piece. The logo is a geometric seed built from pixels that dissolves into brushstrokes: code becoming art.

Tagline: Every artwork is born from a unique seed.

Palette: turquoise #2EC4B6 (sea, technology), coral #FF6B57 (warmth, tropics), cement gray (urban backdrop) and charcoal #1E2226 (text).

Voice: modern tech-artist, minimal.



💡 La idea central · The core idea

¿Y si una obra de arte no fuera un archivo, sino una función? En SeedCuba, cada pieza es el resultado de ejecutar un algoritmo con una semilla (seed) y un conjunto de parámetros. Misma entrada, misma salida, siempre. Eso la hace reproducible, verificable e irrepetible a la vez.

SeedCuba es una galería de arte generativo creada por artistas y programadores cubanos. El artista no entrega una imagen final, entrega un algoritmo. El coleccionista elige paleta, densidad, forma y semilla, y al confirmar esa combinación se registra en blockchain como NFT. La obra es suya porque esa combinación exacta solo puede existir una vez.

What if an artwork wasn't a file, but a function? In SeedCuba, every piece is the result of running an algorithm with a seed and a set of parameters. Same input, same output, always. That makes it reproducible, verifiable and unrepeatable at once.

SeedCuba is a generative art gallery built by Cuban artists and programmers. The artist doesn't deliver a final image, they deliver an algorithm. The collector picks palette, density, shape and seed, and on confirmation that exact combination is recorded on-chain as an NFT. The piece is theirs because that combination can only exist once.



⚙️ Arquitectura técnica · Technical architecture

1. Motor generativo. Los algoritmos se escriben en p5.js y siguen una interfaz común: una función que recibe seed y params y dibuja en un canvas. Así el marketplace puede cargar cualquier obra de forma uniforme.

2. Determinismo. Se prohíbe Math.random(). Todo el azar sale de un PRNG con semilla (como mulberry32 o sfc32) y de randomSeed() y noiseSeed() de p5.js. Tampoco se permite depender del reloj ni del tamaño de pantalla: el lienzo se renderiza a resolución fija y luego se escala. La misma seed debe producir los mismos píxeles en cualquier dispositivo.

3. Unicidad en el contrato. El smart contract (ERC-721) guarda por cada token el identificador del algoritmo, la seed y los parámetros. Calcula un hash de esa combinación y lo registra en un mapping. Si el hash ya existe, la transacción se revierte. La unicidad no depende de nuestra palabra, sino del contrato.

4. Almacenamiento. El código de cada algoritmo y los metadatos se publican en almacenamiento descentralizado (IPFS o Arweave), y el token apunta a ellos por su hash de contenido. Si SeedCuba desapareciera, la obra se podría seguir renderizando desde su código y su seed.

5. Pagos. La compra será en USDC, con reparto automático de ingresos entre artista y plataforma mediante el contrato. La red concreta (probablemente una L2 de comisiones bajas) aún está en evaluación.

1. Generative engine. Algorithms are written in p5.js and follow a shared interface: a function that receives seed and params and draws to a canvas. This lets the marketplace load any artwork uniformly.

2. Determinism. Math.random() is banned. All randomness comes from a seeded PRNG (such as mulberry32 or sfc32) and from p5.js randomSeed() and noiseSeed(). Artworks also can't depend on the clock or the screen size: the canvas renders at a fixed resolution and is scaled afterwards. The same seed must produce the same pixels on any device.

3. On-chain uniqueness. The smart contract (ERC-721) stores, for each token, the algorithm ID, the seed and the parameters. It computes a hash of that combination and records it in a mapping. If the hash already exists, the transaction reverts. Uniqueness doesn't rely on our word, but on the contract.

4. Storage. Each algorithm's code and metadata are published to decentralized storage (IPFS or Arweave), and the token points to them by content hash. If SeedCuba disappeared, the artwork could still be rendered from its code and seed.

5. Payments. Purchases will be in USDC, with automatic revenue splitting between artist and platform handled by the contract. The specific network (likely a low-fee L2) is still under evaluation.



💻 Ejemplo mínimo · Minimal example

// PRNG determinista con semilla / Deterministic seeded PRNG 
function mulberry32(a) { 
  return function () { 
    a |= 0; a = (a + 0x6D2B79F5) | 0; 
    let t = Math.imul(a ^ (a >>> 15), 1 | a); 
    t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t; 
    return ((t ^ (t >>> 14)) >>> 0) / 4294967296; 
  }; 
} 
 
// Interfaz común de una obra / Common artwork interface 
export function render(p, seed, params) { 
  const rand = mulberry32(seed); 
  p.randomSeed(seed); 
  p.noiseSeed(seed); 
  // dibujo usando solo rand(), p.random() y p.noise() 
  // draw using only rand(), p.random() and p.noise() 
} 
// Control de unicidad en el mint / Uniqueness check at mint 
bytes32 h = keccak256(abi.encode(algoId, seed, params)); 
require(!used[h], "Combination already exists"); 
used[h] = true; 

🗺️ Roadmap técnico · Technical roadmap

  • Fase 1: colección inaugural con 5 artistas, render determinista y contrato en testnet.
  • Fase 2: marketplace propio, previsualización en vivo y pagos en USDC.
  • Fase 3: residencias y herramientas para que nuevos artistas publiquen sus algoritmos.

Retos abiertos

  • Garantizar determinismo entre navegadores (diferencias de coma flotante).

  • Reducir el costo de gas por mint.

  • Facilitar el acceso a pagos en cripto desde Cuba.

  • Curar algoritmos sin frenar la creatividad.

  • Phase 1: inaugural collection with 5 artists, deterministic rendering and a testnet contract.
  • Phase 2: own marketplace, live preview and USDC payments.
  • Phase 3: residencies and tooling so new artists can publish their algorithms.

Open challenges

  • Guaranteeing determinism across browsers (floating-point differences).

  • Reducing gas costs per mint.

  • Making crypto payments accessible from Cuba.

  • Curating algorithms without stifling creativity.



💬 Participa · Get involved

Si eres artista, desarrollador, auditor de contratos o coleccionista, quiero tu opinión: ¿qué PRNG usarías? ¿Qué red te parece mejor para el mint? Respóndeme en los comentarios. Si te gusta el proyecto, un upvote y un resteem ayudan a que llegue a más gente.

If you're an artist, developer, contract auditor or collector, I want your take: which PRNG would you use? Which network seems best for minting? Tell me in the comments. If you like the project, an upvote and a resteem help it reach more people.


Cada semilla cuenta · Every seed counts 🌱