Las stealth addresses son direcciones sigilosas. Direcciones de cautela. O al menos eso sale cuando ponemos stealth address en el traductor. Yo sinceramente prefiero decir que las stealth addresses son direcciones de un solo uso. Imagináte una address de plástico que llenas de coca con hielito, te la tomas y la tiras. Pero sin la parte de la contaminación, por supuesto. Y sin hielo, pero con mucha criptografía y matemática difícil.

Aclaración importantísima. Al igual que la semana pasada, estamos profundizando en el blog de Vitalik. Así que ahí pueden leer su explicación sobre stealth addresses, las fees, el gas, social recovery y otros factores relevantes en su interacción con el mundo Ethereum. Nuestro objetivo es traducir el blog de Vitalik a idioma humano para que les sirva de intro.

Hoy no vamos a agregar citas dudosas a filósofos porque esta semana no leí mucho. Aunque quizá alguna se nos ocurra, nunca se sabe la verdad. El futuro, como bien saben, es sumamente incierto. No será un filósofo, pero nuestro amigo Peter Drucker, genio del marketing (o sencillamente el loco que te hacen leer en la universidad) dice que “no hay mejor forma de predecir el futuro que creándolo”. Supongo que eso significa que la única persona que sabe si este artículo va a tener alguna cita delirante es quien lo está escribiendo, y les juro que no tengo idea, creanme. Pero basta de cháchara, vamos a hablar de cripto, vamos a sumergirnos en las Stealth Addresses.

¿Qué son las Stealth Address? y un ejemplo Messiánico

Una stealth address es simplemente una dirección de un solo uso. Stealth en inglés significa algo como cautela o sigilo. Y es que esta idea de “un solo uso” tiene como principal objetivo la privacidad. Una dirección secreta.

Supongamos que sos el community manager de Messi. Messi obviamente paga en cripto. Asi que todos los meses Lio te manda un par de LUSD a tu wallet. Lio obviamente usa LUSD porque no le gustan las stables centralizadas. Vos venís trabajando con Messi desde Cemento, desde que era un purrete de 19 años que le hacía 3 al Real Madrid. Así que tenés más de 15 años de sueldos asociados a esa wallet.

Supongamos que un amigo te dice que te quiere pagar su parte del Fernet del finde en cripto. Te pide que le pases una wallet. Si vos le pasas la misma que usas para cobrar, de repente tu amigo puede ir a la blockchain y ver la historia entera de tu historia remunerada con Lionel. Puede ver lo que recibiste cada vez. Puede ver lo que te pagaron otros amigos por otros Fernets. Puede ver esa coima que recibiste de parte del padre de uno de los chicos del club de futbol que entrenás para que pongas al pibe de titular. Puede ver todo. Y eso no está bueno.

Las Stealth Addresses permiten generar una dirección diferente para cada pago, lo que impide que la gente pueda asociar todos los pagos a la misma cuenta, a la misma humanidad detrás de dicha cuenta, a vos, tu historial financiero on-chain, tus sueños, tus tristezas y aquello que hacés cuando llueve, es domingo y la existencia se reduce a un pedazo de pizza fria que sobró de anoche.

Acá te dejo el video de ese día que Messi le hizo 3 al Real Madrid y vos empezabas a trabajar para él y te hizo tu primer pago en cripto. En realidad en ese momento no existía ni Bitcoin, así de loco es el mundo, pero a fines ilustrativos la historia y el ejemplo sirven, porque en definitiva lo que importa no es lo que pasó si no lo que creemos que pasó, o al menos así fue siempre en el mundo Antes de Satoshi (A.S. para referencia):

El flujo de una transacción usando Stealth Addresses

Vamos a seguir con las suposiciones quánticas y pretender que tengo las bases matemáticas suficientmente sólidas para explicar esto con la claridad que amerita.

Antes que nada, las Stealth Addresses tienen muy poco que ver con otras herramientas de privacidad como Tornado Cash, que es un mixer. Lo que hacen los mixers es agarrar tus fondos, meterlos en un pool lleno de fondos de otras personas, mezclarlos todos y repartirlos de nuevo a una wallet fresca. La magia es que como todo se mezcla no hay forma de saber cual era la wallet de la que provienen los fondos.

Las Stealth Addresses, en cambio, lo que hacen es agregar privacidad al workflow de pago tradicional. Veamoslo con un ejemplo.

Lio te quiere transferir tus LUSD mensuales. Podría ser también un NFT. O cualquier ERC. Pero vos no queres que todo el mundo sepa que vos sos quien recibió esos fondos. Entonces vos le mandás a Lio una Stealth Address o dirección de un sólo uso. Lio tiene que hacer un poquito de magia computacional (osea esas cosas que hacen las wallets detrás de escena) y después manda los fondos a la Stealth Address. El secreto es que solo vos podés controlar los fondos que quedan asociados a esa Stealth Address, del mismo modo que solo vos con tu private key podés controlar los fondos asociados a tu address “normal”.

Esta foto que armó Vitalik (con paint o alguna herramienta similar) es sorpresivamente clara.

¿Cómo funcionan las Stealth Addresses?

No les voy a mentir. Puse “como funcionan las Stealth Addresses” como título de esta sección así aparece el artículo cuando la gente googlea…. “como funcionan las Stealth Addresses”. Pero la realidad es que deberíamos llamarla “como se crean las Stealth Addresses”. Porque realmente ahí es donde está la magia.

Una Stealth Address, en definitiva, es un secreto compartido. Un secreto entre vos y Messi. Una dirección secreta que vos y Messi van a usar para que te pueda pagar por tu laburo. La clave es que cualquiera de los dos puede generar la Stealth Address, pero solo vos podés gastar los fondos que se le envíen.

Para que empiece la fiesta vos generas una nueva private key. Luego usas esa private key para generar una Stealth Meta-Address. Esa Stealth Meta-Address es la base que se usa para generar todas las demás Stealth Addresses. Es como un molde que permite hacer los vasitos de plástico de cumpleaños que se usan y se tiran.

A partir de esa Meta-Address Messi puede generar una Stealth Address que te pertenezca a vos y fondearla. Si bien Messi la puede crear, como está asociada a tu private key, solo vos vas a poder usar los fondos que envíe a esa Stealth Addres.

Lo interesante es que el algoritmo para generar Stealth Addresses funciona tal que una address generada con tu private key y la public key de Messi va a dar el mismo resultado que una address generada con la private key de Messi y tu meta-stealth address.

Esto permite que Messi la cree, envíe los fondos y luego vos verifiques que esos fondos te pertenecen haciendo computación bastante simple.

Otra vez recurrimos a las imágenes de Vitalik. Ojo, se pone un poco más complejo. Quedate con la idea de que vos y Messi comparten un secreto, una dirección que ambos pueden crear pero que solo vos podés controlar, y que nadie más puede asociar a tus otras addresses.

Acá dejamos la traducción a humanoide. Hice lo mejor que pude:

  1. Vos generás una “spending key” y una meta-stealth address. Esto es como el proceso de creación de una address normal. La diferencia es que la gente que te quiera pagar va a usar esa Stealth Meta-Address para generar addresses de un solo uso y pagarte.
  2. Messi genera una PRIVATE “ephemeral key”. Ephemeral es efímera. Osea una llave efímera (o de un sólo uso) que va a usar para pagarte.
  3. Messi combina su ephemeral key con tu Stealth Meta-Address address para generar tu Stealth Address. Es una dirección secreta que sólo Messi conoce, porque el la generó usando tu Stealth Meta-Address y su ephemeral key.
  4. Messi general una Public Key de su ephemeral key. Es decir, la ephemeral key es como una llave privada que solo el tiene para generar Stealth Addresses y pagarle a todos sus colaboradores. Pero puede derivar una Public Key de su ephemeral key y publicarla en un registro de ephemeral Public Keys.
  5. Después vos vas y escaneás ese registro de ephemeral Public Keys y las combinas con tu PRIVATE spending key para generar una Stealth Address y ver si tiene fondos. Probás con todas las opciones hasta que encontrás una que tiene fondos, que es la Stealth Address que generó Messi y que efectivamente vos podés controlar porque está asociada a tu Stealth Meta-Address y por ende a tu spending key.

De nuevo. La clave es que el algoritmo para generar Stealth Addresses funciona tal que una address generada con tu private key y la public key de Messi va a dar el mismo resultado que una address generada con la private key de Messi y tu meta-stealth address.

Vos probás combinando tu private key con todas las public keys del registro hasta que encontrás una que generar una Stealth Address con fondos. Como solo vos o Messi pueden crear una Stealth Address común a ambos, esa tiene que ser la address a la que te pagó Messi. Y como fue generada usando tu Stealth Meta-Address (y la private key de Messi), va a estar controlada por tu private key.

Lo interesante es que si además de trabajar con Messi trabajás con la Escuela de Tablones, nombre con que se conoce a la sección de la maravillosa hinchada de San Lorenzo de Almagro que escribe las canciones de cancha más ingeniosas del futbol argentino, vas a poder usar la misma Stealth Meta-Address sin revelar nada de información a nadie. Messi solo va a saber cuanto te pago él, y la banda de San Lorenzo lo mismo.

Conclusiones

La matemática funciona. Hay mucha magia criptográfica, pero nada tan loco para los estándares del mundo cripto. El siguiente paso sería que las wallets los implementen. Quizá el principal impedimento para las Stealth Addresses en Ethereum sea el tema del gas. Si vos enviás fondos a una Stealth Address que no tiene ETH, luego no vas a poder mover los fondos. Deberías fondear con un poco de ETH pero eso va a generar vínculos on-chain entre la Stealth Address y la address que la fondea. También es complicado el tema de social recovery. Y existe el riesgo de computación cuántica, que rompería todo este sistemita. Pero ya se está trabajando hace bastante en todo esto y seguramente sea un tema del que vamos a seguir escuchando (y leyendo) en los próximos meses y años.

IMPORTANTE: si no entendiste nada, te dejo dos bullets points. Si entendiste, también te van a servir:

  • Las Stealth Address son direcciones de un solo uso que permiten mayor privacidad
  • Se generan a través de un secreto compartido entre pagador y receptor del pago, gracias a un algoritmo que permite que ambos generen y verifiquen la address pero solo el receptor pueda mover los fondos que tiene.