{"id":1,"date":"2023-05-20T13:16:18","date_gmt":"2023-05-20T16:16:18","guid":{"rendered":"http:\/\/solidchain.ar\/?p=1"},"modified":"2024-07-02T14:08:19","modified_gmt":"2024-07-02T17:08:19","slug":"hola-mundo","status":"publish","type":"post","link":"https:\/\/solidchain.ar\/index.php\/2023\/05\/20\/hola-mundo\/","title":{"rendered":"Nondeterministic wallet, billeteras en Ethereum"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>En este articulo vamos a ver como funcionan las billeteras en Ethereum yendo a los conceptos base para entender la interacci\u00f3n de estas con la blockchain pero primero veamos un concepto mas general.<\/p>\n\n\n\n<p>Las billeteras en Ethereum son una aplicaci\u00f3n en donde vamos a &#8220;guardar&#8221; nuestras cryptomonedas o tokens y ademas nos van a servir para realizar transferencias de Ether, tokens, NFT&#8217;s y en general cualquier interacci\u00f3n con la blockchain, en principio pueden ser de dos tipos, hot wallets y cold wallets. Las hot wallet son billeteras f\u00edsicas que no se encuentran conectadas a internet y en donde la clave privada se guarda en un aparato usb con forma de pendrive, entre las mas conocidas podemos encontrar marcas como Trezor o Ledger entre otras. Las hot wallets por otro lado suelen ser aplicaciones para PC o Smartphone, generalmente las podemos encontrar como extensiones para navegadores web pero su caracter\u00edstica principal es que estas aplicaciones son quienes guardan la clave privada y suelen estar conectadas a internet para facilitar cualquier interacci\u00f3n que uno quiera realizar, algunos ejemplos pueden ser Metamask, Trustwallet entre otras muchas mas.<\/p>\n\n\n\n<p>No vamos a entrar en detalle de como funcionan las aplicaciones que nombramos arriba ni de como van a poder realizar una transacci\u00f3n sino de los conceptos inform\u00e1ticos y matem\u00e1ticos de una billetera para entender que es lo que se guarda en ella y que tan seguras pueden llegar a estar nuestras cryptomonedas<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Nondeterministic wallet<\/h2>\n\n\n\n<p>Como vimos pod\u00edamos encontrar dos tipos de aplicaciones para las billeteras (hot wallet y cold wallet) ahora indiferentemente de la aplicaci\u00f3n, hablando propiamente de la arquitectura de las billeteras podemos encontrar dos tipos: <strong>nondeterministic wallet<\/strong> y <strong>deterministic wallet<\/strong> nosotros nos vamos a enfocar en la mas b\u00e1sica que es la nondeterministic para entender mejor los conceptos, luego en un pr\u00f3ximo articulo abordaremos las deterministic wallet las cuales son las mas conocidas ya que hacen una de una semilla para generar las claves que en muchas billeteras se las conoce como &#8220;frase semilla&#8221; una frase de 12 o 24 palabras aleatorias. <\/p>\n\n\n\n<p>Las billetera de tipo nondeterministic se basa en una clave privada y una clave publica, un algoritmo por el cual se relacionan ambas claves y una direcci\u00f3n que deriva de la clave publica, veamos un ejemplo real de una billetera de ethereum, desde ya no deben usar esta direcci\u00f3n para hacer transacciones por estar la clave privada revelada en este mismo articulo, solo la usaremos de manera did\u00e1ctica:<\/p>\n\n\n\n<p>clave privada: <strong>0x8b641711470f5def1c3723ce67753e54e2a103d5cd0c38325c1f16a31b54b51d<\/strong><\/p>\n\n\n\n<p>Clave publica: <strong>0x047ba08bc0933cb643db943cffa05c0eed657feba568937de366de46309b9a 3de5413976045415bb728d5aa8f1ede236a7c7ccebbb8c26e9cf1d650dbaa986 0bf8<\/strong><\/p>\n\n\n\n<p>Direcci\u00f3n: <strong>0x7c976adaa628ecdf2c03ba060ec9a1345d2005bb<\/strong><\/p>\n\n\n\n<p>En el ejemplo estamos viendo un mont\u00f3n de n\u00fameros y letras que est\u00e1n relacionados solo porque est\u00e1n escritos juntos a continuaci\u00f3n vamos a ver que es cada numero y que relaciones tiene entre si.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Clave privada<\/h2>\n\n\n\n<p>Debemos comenzar por la clave privada ya que va a ser la generadora del resto de claves y direcciones que vemos en el ejemplo.  \u00bfEntonces que es la clave privada? No es mas que un numero aleatorio que va de 1 a <strong>1157920892373161954235709850086879078528375642790749043826051 63141518161494337<\/strong> en concreto el numero de la clave privada de nuestra billetera es: <strong>6304832986552043023809316049940127537189158008730688967007723 1591542681285917<\/strong> como ven este numero se encuentra entre los rangos definidos arriba lo que lo hace totalmente balido para generar una billetera para Ethereum. Ahora habr\u00e1n notado que el numero que acabo de escribir es totalmente diferente al del ejemplo sin embargo dije que son el mismo numero eso es porque uno esta en notaci\u00f3n decimal y el del ejemplo se encuentra en hexadecimal, no solamente la clave privada la tenemos en hexadecimal sino tambi\u00e9n la clave publica y la direcci\u00f3n \u00bfComo nos podemos dar cuenta de esto? Primero porque vemos letras que van de la &#8220;a&#8221; a la &#8220;f&#8221; entre los n\u00fameros y segundo porque cuando se escribe en hexadecimal se suele empezar con el sufijo &#8220;0x&#8221; que nos avisa que lo que sigue es un numero en hexadecimal de ahora en mas trabajaremos con los n\u00fameros en hexadecimal por comodidad y est\u00e1ndares.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">secp256k1<\/h2>\n\n\n\n<p>Bueno ya elegimos nuestra clave privada valida ahora debemos generar nuestra clave publica para lo cual utilizaremos un algoritmo de criptograf\u00eda asim\u00e9trica por curvas el\u00edpticas ECDSA dejo el <a rel=\"noreferrer noopener\" href=\"https:\/\/libroblockchain.com\/ecdsa\/\" target=\"_blank\">link<\/a> para los que quieran mas detalles de como funciona este tipo de algoritmo. Vamos a usar un tipo particular de curva el\u00edptica denominado secp256k1 que fue el elegido por Ethereum para genere su par de claves publico\/privada, este algoritmo es una particularidad derivado del algoritmo general de curvas el\u00edpticas donde algunas de sus variables se toman como constantes por ejemplo el par\u00e1metro <strong>G {<em>x<\/em> = 55066263022277343669578718895168534326250603453777594175500187360389116729240, <em>y<\/em> = 32670510020758816978083085130507043184471273380659243275938904335757337482424} <\/strong><\/p>\n\n\n\n<p>Ingresando la clave privada (hexadecimal): <strong>0x8b641711470f5def1c3723ce67753e54e2a103d5cd0c38325c1f16a31b54b51d en el algoritmo secp256k1 obtenemos la clave publica, en este caso va a ser: 0x047ba08bc0933cb643db943cffa05c0eed657feba568937de366de46309b9a 3de5413976045415bb728d5aa8f1ede236a7c7ccebbb8c26e9cf1d650dbaa986 0bf8<\/strong>. Este numero obtenido nos va a servir para derivar la direcci\u00f3n de nuestra wallet por la cual nos vamos a poder identificar en la blockchain, que este numero sea publico no es un problema ya que se puede usar para verificar todo lo que firmemos con nuestra clave privada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Direcci\u00f3n de nuestra billetera<\/h2>\n\n\n\n<p>La direcci\u00f3n de nuestra billetera va a derivar del numero de nuestra clave publica de la siguiente manera, debemos pasar la clave publica por una funciona de hash (Keccak256) y quedarnos con los \u00faltimos 20 bytes del hash obtenido, ac\u00e1 lo vamos a ver en un ejemplo.<\/p>\n\n\n\n<p>Para nuestra clave publica: <strong>0x047ba08bc0933cb643db943cffa05c0eed657feba568937de366de46309b9a 3de5413976045415bb728d5aa8f1ede236a7c7ccebbb8c26e9cf1d650dbaa986 0bf8<\/strong><\/p>\n\n\n\n<p>Obtenemos nuestro hash(Keccak256): <strong>f94651e66d2d62d6e00cae0e<mark style=\"background-color:rgba(0, 0, 0, 0);color:#ff7100\" class=\"has-inline-color\">7c976adaa628ecdf2c03ba060ec9a1345d2005bb<\/mark><\/strong><\/p>\n\n\n\n<p>Resaltamos los \u00faltimos 20 bytes de nuestro hash los cuales de ahora en adelante van a ser la direcci\u00f3n de nuestra billetera, como este hash deriva de la clave publica es virtualmente imposible que sea igual a otra direcci\u00f3n lo que hace que nuestra direcci\u00f3n sea \u00fanica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>En conclusi\u00f3n, en este art\u00edculo hemos explorado el funcionamiento de las billeteras en Ethereum, centr\u00e1ndonos en las billeteras no deterministas. Estas billeteras se basan en una clave privada y una clave p\u00fablica, y utilizan un algoritmo de criptograf\u00eda de curva el\u00edptica llamado secp256k1 para generar la clave p\u00fablica a partir de la clave privada. La direcci\u00f3n de la billetera se deriva de la clave p\u00fablica mediante una funci\u00f3n de hash, lo que garantiza su unicidad.<\/p>\n\n\n\n<p>Es importante comprender los conceptos inform\u00e1ticos y matem\u00e1ticos detr\u00e1s de una billetera para entender qu\u00e9 se guarda en ella y cu\u00e1n seguras pueden ser nuestras criptomonedas. La clave privada es un n\u00famero aleatorio v\u00e1lido dentro de un rango espec\u00edfico, mientras que la clave p\u00fablica se genera a partir de ella utilizando el algoritmo secp256k1. A partir de la clave p\u00fablica, se obtiene la direcci\u00f3n de la billetera mediante una funci\u00f3n de hash, lo que garantiza su unicidad en la red Ethereum.<\/p>\n\n\n\n<p>Es fundamental tener precauciones de seguridad al utilizar billeteras en Ethereum, como proteger adecuadamente la clave privada y utilizar m\u00e9todos de respaldo para evitar la p\u00e9rdida de acceso a los fondos. Comprender el funcionamiento de las billeteras y los conceptos subyacentes nos ayuda a tomar decisiones informadas y a mantener nuestros activos digitales seguros en el entorno descentralizado de Ethereum.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n En este articulo vamos a ver como funcionan las billeteras en Ethereum yendo a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":48,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts\/1","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/comments?post=1"}],"version-history":[{"count":12,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts\/1\/revisions"}],"predecessor-version":[{"id":58,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts\/1\/revisions\/58"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/media\/48"}],"wp:attachment":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/media?parent=1"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/categories?post=1"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/tags?post=1"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}