{"id":106,"date":"2015-05-30T18:28:05","date_gmt":"2015-05-30T18:28:05","guid":{"rendered":"https:\/\/santiagomarquezsolis.com\/?p=106"},"modified":"2024-05-26T18:58:07","modified_gmt":"2024-05-26T18:58:07","slug":"construyendo-una-blockchain-basica-en-python-parte-2","status":"publish","type":"post","link":"https:\/\/santiagomarquezsolis.com\/index.php\/2015\/05\/30\/construyendo-una-blockchain-basica-en-python-parte-2\/","title":{"rendered":"Construyendo una Blockchain B\u00e1sica en Python. Parte 2"},"content":{"rendered":"<p>En este art\u00edculo, vamos a explorar las diferencias entre una implementaci\u00f3n b\u00e1sica de blockchain en Python que hicimos hace unos dias y una versi\u00f3n mejorada que incluye la funcionalidad de monederos para los usuarios. Esta comparaci\u00f3n te ayudar\u00e1 a entender c\u00f3mo se puede evolucionar una blockchain b\u00e1sica para manejar transacciones de manera m\u00e1s eficiente y segura.<\/p>\n<h4>Implementaci\u00f3n B\u00e1sica de la Blockchain<\/h4>\n<p>Primero, recordemos c\u00f3mo era la implementaci\u00f3n b\u00e1sica de nuestra blockchain:<\/p>\n<ol>\n<li><strong>Clases Principales<\/strong>:\n<ul>\n<li><code>Block<\/code>: Representa un bloque en la blockchain.<\/li>\n<li><code>Blockchain<\/code>: Maneja la cadena de bloques y las transacciones pendientes.<\/li>\n<li><code>Transaction<\/code>: Representa una transacci\u00f3n en la blockchain.<\/li>\n<li><code>Node<\/code>: Gestiona las transacciones y la miner\u00eda de bloques.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Funcionalidad Clave<\/strong>:\n<ul>\n<li>Minerado de bloques mediante el algoritmo de prueba de trabajo (PoW).<\/li>\n<li>Verificaci\u00f3n de la validez de la cadena de bloques.<\/li>\n<li>Adici\u00f3n de transacciones a una lista de transacciones pendientes.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h4>Implementaci\u00f3n Mejorada con Monederos<\/h4>\n<p>En la versi\u00f3n mejorada, introducimos la clase <code>Wallet<\/code> para representar a los usuarios y manejar sus saldos. A continuaci\u00f3n, se detallan las principales diferencias y adiciones:<\/p>\n<p><strong>Nueva Clase <code>Wallet<\/code><\/strong>:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Prop\u00f3sito<\/strong>: Representar a los usuarios con atributos como direcci\u00f3n, nombre de usuario, clave privada derivada de la direcci\u00f3n y saldo.<\/li>\n<li><strong>Funcionalidades<\/strong>:\n<ul>\n<li>Generar una direcci\u00f3n \u00fanica para cada monedero.<\/li>\n<li>Derivar una clave privada basada en la direcci\u00f3n.<\/li>\n<li>Manejar el saldo del monedero.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-107 aligncenter\" src=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/wallet2.png\" alt=\"\" width=\"846\" height=\"467\" srcset=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/wallet2.png 846w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/wallet2-300x166.png 300w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/wallet2-768x424.png 768w\" sizes=\"auto, (max-width: 846px) 100vw, 846px\" \/><\/p>\n<p><strong>Modificaciones en la Clase <code>Blockchain<\/code><\/strong>:<\/p>\n<ul>\n<li><strong>Gesti\u00f3n de Monederos<\/strong>: Ahora la blockchain tiene un diccionario para almacenar los monederos (<code>wallets<\/code>).<\/li>\n<li><strong>Validaci\u00f3n de Transacciones<\/strong>: Antes de a\u00f1adir una transacci\u00f3n a la lista de transacciones pendientes, se verifica que el remitente tenga fondos suficientes.<\/li>\n<li><strong>Actualizaci\u00f3n de Saldos<\/strong>: Los saldos de los monederos se actualizan cuando se mina un nuevo bloque.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-112 aligncenter\" src=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2015\/05\/blockchain2.png\" alt=\"\" width=\"845\" height=\"1798\" srcset=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2015\/05\/blockchain2.png 845w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2015\/05\/blockchain2-141x300.png 141w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2015\/05\/blockchain2-481x1024.png 481w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2015\/05\/blockchain2-768x1634.png 768w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2015\/05\/blockchain2-722x1536.png 722w\" sizes=\"auto, (max-width: 845px) 100vw, 845px\" \/><\/p>\n<p><strong>Actualizaci\u00f3n de la Clase <code>Node<\/code><\/strong>:<\/p>\n<ul>\n<li><strong>Gesti\u00f3n de Monederos<\/strong>: A\u00f1ade la capacidad de gestionar monederos, permitiendo la creaci\u00f3n y registro de monederos en la blockchain.<\/li>\n<\/ul>\n<div class=\"dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium\">\n<div class=\"flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md\">\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-108 aligncenter\" src=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/node2.png\" alt=\"\" width=\"840\" height=\"339\" srcset=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/node2.png 840w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/node2-300x121.png 300w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/node2-768x310.png 768w\" sizes=\"auto, (max-width: 840px) 100vw, 840px\" \/><\/p>\n<div class=\"flex items-center\"><\/div>\n<\/div>\n<div>\n<p><strong>Funci\u00f3n Principal Actualizada<\/strong>:<\/p>\n<ul>\n<li><strong>Creaci\u00f3n y Registro de Monederos<\/strong>: Ahora la funci\u00f3n principal incluye la creaci\u00f3n de monederos y la asignaci\u00f3n de saldos iniciales.<\/li>\n<li><strong>Transacciones y Miner\u00eda<\/strong>: Se crean transacciones y se minan bloques como antes, pero ahora se valida que los monederos tengan suficientes fondos antes de permitir una transacci\u00f3n.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-109 aligncenter\" src=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/main2.png\" alt=\"\" width=\"834\" height=\"1410\" srcset=\"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/main2.png 834w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/main2-177x300.png 177w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/main2-606x1024.png 606w, https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/main2-768x1298.png 768w\" sizes=\"auto, (max-width: 834px) 100vw, 834px\" \/><\/p>\n<\/div>\n<\/div>\n<p>En resumen, hemos transformado nuestra implementaci\u00f3n b\u00e1sica de blockchain para incluir una funcionalidad esencial: monederos para los usuarios. Ahora, cada usuario tiene una direcci\u00f3n \u00fanica, una clave privada y un saldo, lo que permite una gesti\u00f3n m\u00e1s eficiente y segura de las transacciones. Esta mejora sienta las bases para futuras expansiones, como la adici\u00f3n de contratos inteligentes y la implementaci\u00f3n de una red peer-to-peer.<\/p>\n<p>Esta evoluci\u00f3n muestra c\u00f3mo una implementaci\u00f3n b\u00e1sica puede ser el punto de partida para desarrollar aplicaciones m\u00e1s complejas y robustas en el fascinante mundo de la tecnolog\u00eda blockchain.<\/p>\n<p>Como siempre pod\u00e9is descargar o ver el c\u00f3digo fuente en mi Github desde <a href=\"https:\/\/github.com\/santiagomarquezsolis-me\/blockchain-tutorial\/tree\/main\/iteration-2\">aqu\u00ed<\/a> \ud83d\ude09<\/p>\n<p>\u00a1Feliz codificaci\u00f3n!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo, vamos a explorar las diferencias entre una implementaci\u00f3n b\u00e1sica de blockchain en Python que hicimos hace unos dias y una versi\u00f3n mejorada que incluye la funcionalidad de monederos para los usuarios. Esta comparaci\u00f3n te ayudar\u00e1 a entender c\u00f3mo se puede evolucionar una blockchain b\u00e1sica para manejar transacciones de manera m\u00e1s eficiente y [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":48,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[43,2,12],"tags":[16,44,17],"class_list":["post-106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain","category-blog","category-cripto","tag-blockchain","tag-cadena-de-bloques","tag-cripto"],"jetpack_featured_media_url":"https:\/\/santiagomarquezsolis.com\/wp-content\/uploads\/2024\/05\/blockchain-e1716059059216.webp","_links":{"self":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts\/106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/comments?post=106"}],"version-history":[{"count":5,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts\/106\/revisions"}],"predecessor-version":[{"id":115,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/posts\/106\/revisions\/115"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/media\/48"}],"wp:attachment":[{"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/media?parent=106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/categories?post=106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/santiagomarquezsolis.com\/index.php\/wp-json\/wp\/v2\/tags?post=106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}