Estoy nostálgico, asi que va 🧵 nerd bitcoinero dedicado a este falso Bolsonaro que me inspiró, como a tantos otros, a estudiar ciencias cuando era pibe
Y de yapa juego de lotería crypto gratuita para adivinar seeds en python
Empecemos por imaginar un número muy grande
- no, mas grande
Carl Sagan decía "Hay mas estrellas en el universo que granos de arena en todas las playas del planeta"
Como la cantidad de estrellas es medio abstracta, imaginen la cantidad de granos de arena
Se estima 28.000.000 de Km^2 de arena, con una media de 25m de profundidad, o sea 7*10^11 m^3 de arena
Luego como hay unos 10.000 millones de granos de arena por m^3, tenemos 7*10^21 granos de arena en el planeta
O sea un 7 seguido de 21 ceros, muy grande pero no infinito
Guarden ese número en su memoria un rato, ya volveremos
Vamos ahora al bitcoin y sus wallets
¿Cuántas posibles wallets se pueden formar con 24 palabras semilla?
- Pero, ¿24 palabras de una lista de cuantas?
Buen punto, para explicar eso tengo que decirles que lo de las 24 palabras es solo una representación de la verdadera seed
La verdadera seed son 256 "0" y "1" en cualquier orden, eso da 2^256 = 1.15 * 10^77 posibilidades
Y las 24 palabras?
Bueno, imaginate anotando 256 "0" y "1" en un papel
¿Incomodo no?
Veamos la solución, imaginen 24 grupos de 11 ceros o unos
Tendríamos 11*24 = 264 "0" o "1", en realidad necesitamos 256 pero podemos usar los 8 que sobran para verificar (digitos verificadores)
-Y que hago con 11 ceros o unos?
Tenemos 2 elementos tomados de a 11 y el orden importa, o sea 2^11=2048
Es decir que puedo asignar cada permutación de 11 ceros y unos, a una de 2048 posibles palabras
Pero tenemos que fijar 2048 palabras, bueno, eso sería una convención, y de hecho está en la BIP39 (propuesta de mejora del codigo abierto de bitcoin)
Curiosidad, está "satoshi" y no está "bank" en la lista
Dejo link a la lista en github
Entonces, por ejemplo la palabra "abandon" que es la 1ra de la lista, es el número 0 pasado a binario que serían 11 ceros (completando los 11 lugares con 0 a la izq)
Y la palabra "zoo" que es la ultima es 2047 pasado a binario que serían 11 unos
Recopilando, esos 24 grupos de 11 ceros y unos, alternados los podemos pasar a la representacion decimal para obtener numeros desde el 0 al 2047 y luego transformamos cada uno de esos 24 números en una palabra según su numero de orden
O sea, adivinar una seed frase de 24 de esas 2048 palabras, es ∼ adivinar una secuencia de 256 unos y ceros
o sea que tirar 24 palabras al azar es como inventar una clave privada
Bueno, con eso, vamos a jugar a la lotería con #python
Empecemos generando una seed cualquiera, recordemos que esas 24 palabras corresponden a 256 ceros y unos, esa es la clave privada que generamos y con ella vamos a cear "varias direcciones"
Y ahora veamos las direcciones que se asocian a esa seed
-Momento por qué "VARIAS direcciones"?
Si, una sola seed puede generar de modo determinístico muchas direcciones, por eso en la met*m*sk 🦊 tienen una sola seed frase y con ella puede crear muchas addresses diferentes
En realidad las wallets implementan un derivation path para crear las wallets secundarias que implementan el BIP32 del código de bitcoin, tema medio técnico que explica mejor que nadie @bourbonni en este hilo
Aca dejo ejemplo de codigo con el derivation que usa met*m*sk 🦊
Pero me empecé a ir a la banquina y no quería, perdón, vuelvo en el proximo tweet
Vamos a generar con #python unas 1000 wallets, por ahora solo la primaria, pero bien podría aprovechar y generar muchas mas por cada seed
Como ven, tardé 5 seg en generar 1000 seeds y sus respectivas wallets, o sea que en un día puedo generar unas 17 Millones con una simple PC
Ahora podriamos pensar que podria intentar generar alguna de la lista de las wallets con mas BTC de casualidad
Recordemos el cálculo que hicimos que hay 2^256 = 1.15 * 10^77 seeds diferentes, alguna es la de satoshi
Si sr, es así de "endeble" el sistema, con este jueguito de lotería gratis, cualquiera puede volverse multimillonario de un día para el otro sin necesidad de saber los secretos del doctor en treidin
Ahora volviendo al amigo Carl Sagan, ¿Qué tanta suerte tengo que tener?
Bueno 1.15*10^77 no parecen tantas..
Veamos, habíamos dicho que hay 7*10^21 granitos de arena en todo el planeta
Pensar que si alguien esconde 1 grano de arena en alguna playa del planeta
Y lo encontramos eligiendo 1 (UN) grano de arena al azar.. (alta suerte)
Y luego repetimos el proceso y la pegamos 3 veces seguidas
Es un suceso en... (7*10^21)^3, o sea, 3.43*10^65
Entienden que tan poco probable es el 1.15*10^77?
Encontrar al azar 3 veces seguidas el grano de arena escondido en el planeta, aun es (real) 298mil millones de veces mas probable que acertar la wallet de satoshi probando al azar
Bueno, yo nunca prometí que sea fácil, solo dije que es gratis jugar a esta lotería
Les dejo código, en este quini solo tienen que encontrar 34 caracteres, desde como dijimos, una lista de 256 ceros y unos, parece "no tan dificil" pero es literalmente imposible
Antes de hablar del proyecto en sí, voy a hablarles de algo mucho mas relevante y muy importante, que es necesario entender para entender por qué es muy valioso este proyecto
La privacidad en la blockchain
Piensen que las blockchains son públicas, es decir que todo el mundo ve todos los movimientos, queda todo grabado ahí, la única capa de protección a la privacidad es que nuestra dirección pública para recibir y enviar fondos no tiene nuestro nombre y apellido
Pero piensen esto, si le envían fondos a alguien por lo que fuera (venta de algo, pago de apuesta, compra, intercambio P2P, lo que sea) ese "alguien" ya sabe que la wallet que le envió los fondos es la tuya porque tuviste que firmar el envío, y la puede asociar a tu nombre
Hice modelito de machine learning para predecir "Alt Season" próximos 30 días (cuando baja fuerte la dominancia de #BTC y se vuelan las small cap crypto)
Pero el 🧵es para manijear #python y no crypto así que si les interesa hay que leer hasta el final para ver el resultado
A pesar de lo rústico del modelo, tiene un % de aciertos alto, tanto cuando predice que se dará la Alt season, como cuando predice que no
Esto se ve en la llamada "matriz de confusión" que se arma sometiendo al modelo a predecir con datos con los que no fue entrenado
Arranco tomando datos de dominancia de CoinmarketCap y los históricos de precio y volumen de Coingecko, el código python para ambas cosas son un par de líneas como ven
El exchange que lo listará por primera vez te deja comprar antes (en cantidad limitada) un token del ~2% al 20% del valor que saldrá a cotizar, lo que te genera una ganancia del ~400% al ~5000%
Pero antes que nada entendamos las motivaciones y donde esta el truco
1. Los proyectos nuevos en salir a cotizar les sirve porque les da mucha visibilidad estar en grandes exchanges, por eso se listan en estos IEOs (initial exchange offerings)
Además recaudan $$ por los tokens que entregan antes de listarse