!Ya estoy en youtube! suscribete a mi canal https://www.youtube.com/channel/UC6-tLGUyvfrb9ibuCipFQKg
Este es el mejor Blog en español dedicado a la tecnología Java, noticias, API's, Frameworks y toda mi experiencia.
Páginas
martes, 29 de junio de 2021
El Gas de Ethereum
sábado, 26 de junio de 2021
lunes, 21 de junio de 2021
Como transferir criptomonedas Ether en Java
Está guía será completamente practica, vamos a enviar nuestros primeros Ether's entre dos Wallets en la red de pruebas Ropsten usando la api para Java Web3j.
Si necesitas profundizar en la teoría del blochain y criptomonedas te recomiendo estudiar la ruta completa Blockchain y Criptomonedas. En este ejemplo no vamos a involucrar el Gas de Ethereum, más adelante modificaré esta entrada para incluir el Gas.
Paso 1.- Crear tu proyecto Maven y agregar la dependencia Web3j
Créate un proyecto Maven y agrega la dependencia Web3j
Paso 2. Necesitamos un Nodo que esté conectado a la red Ropsten
Puedes instalar y ejecutar tu propio nodo, pero mantenerlo es caro, si no vas a minar Ether's no te lo recomiendo, en su lugar usaremos algunos nodos disponibles.
Para acceder a algunos nodos disponibles necesitas crearte una cuenta en algunas de las siguientes plataformas, yo elegí Alchemy
https://auth.alchemyapi.io/signup
https://infura.io/register
Una vez que te has creado una cuenta en Alchemy necesitas crear una app y elegir la red Ropsten, en tu dashboard podrás ver la URL del proyecto que acabas de crear, esta URL será la URL al nodo de Alchemy el cual está conectada a la red de pruebas Ropsten
Paso 3.- Necesitamos crear dos Wallets
Si no tienes ninguna Wallet puedes crearlas, para ello puedes ejecutar la siguiente porción de codigo
Paso 4.- Necesitamos fondear al menos una de nuestras Wallets
Para fondear una de nuestras Wallets usaremos algunos faucets, aquí tienes una lista.
https://faucet.dimensions.network/
https://faucet.ropsten.be/
Copias la dirección de tu Wallet y la pegas en cualquiera de los faucets
Para verificar el saldo y movimientos de tu Wallet puedes ir a https://ropsten.etherscan.io/
Paso 5.- Transferir los Ether's de una Wallet a la otra
Finalmente vamos a realizar la transferencia, aquí el programa Java, observa que aquí estoy usando la URL que obtuve de mi proyecto en Alchemy
viernes, 11 de junio de 2021
Blockchain y Criptomonedas
Mitos y verdades de la Blockchain y Criptomonedas
!Este articulo se ha actualizado, ver actualización al final.!
Estamos viviendo días en donde escuchamos sobre criptomonedas en todos lados, en las noticias, en las redes sociales y en los medios financieros. Gente experta sobre el tema, gurús vendehúmos (cursos) y especuladores oportunistas hablando del tema.
La Blockchain y las Criptomonedas fueron creados por programadores, así que no podemos ser ajenos a esta tendencia/tecnología.
¿Para que sirven las criptomonedas?
Algunas criptomonedas serán el nuevo dinero que usaremos para comprar y vender bienes y servicios mientras que otras criptomonedas serán el nuevo refugio contra la inflación, el oro digital. Por ultimo, tendremos otras criptomonedas que servirán para pagar los costos de aplicaciones descentralizadas y contratos inteligentes.
He decidido crear una serie de entradas de lo más simple a los complejo para comprender esta nueva tecnología.
En esta entrada revisaremos los siguientes puntos:
¿Qué es una cadena de bloques o Blockchain?
¿Cómo funciona la cadena de bloques?
¿Qué tan segura es la cadena de bloques?
Aplicaciones de la cadena de bloques en los sectores de servicios financieros y de seguros
Los desafíos
Conclusiones
¿Qué es una cadena de bloques o Blockchain?
La tecnología de cadena de bloques o blockchain fue introducida por primera vez en un artículo técnico publicado en el año 2008 bajo el seudónimo de Satoshi Nakamoto, y es mejor conocida hoy en día como la plataforma base de la criptomoneda Bitcoin. Aunque los términos blockchain y Bitcoin son usados a menudo como sinónimos, es importante destacar que Bitcoin es tan solo una de las infinitas aplicaciones de la tecnología de cadena de bloques.
La cadena de bloques puede ser definida como un libro contable público descentralizado diseñado para registrar las transacciones en un entorno protegido. En otras palabras, es un tipo de base de datos usado para registrar las transacciones, que es copiado en todas las computadoras que conforman la red específica.
Para comprender con exactitud lo que eso significa, resulta muy útil tener en cuenta las deficiencias de los procesos de transacción existentes. Para ilustrar cómo se realiza una transacción típica en la actualidad, tomemos el ejemplo de Juan, quien desea comprar una camisa en la tienda de María. Debido a que Juan no tiene suficiente dinero en efectivo para pagar la camisa, y a que Juan y María no se conocen, se necesita que una tercera parte de confianza (como un banco o una compañía de tarjeta de crédito) garantice que John tiene la capacidad de pagar por la camisa para poder completar la transacción y llevarse la camisa a casa. Para ello, Juan pasa su tarjeta de débito o de crédito por el terminal de la tienda de María, la compra es aprobada y Juan sale con su nueva camisa. Bastante simple, ¿verdad? Bueno, no es tan simple como parece.
En promedio, cinco instituciones deben estar implicadas en una transacción de rutina como la que ocurre entre Juan y María: el banco de Juan, el banco de María, las entidades procesadoras de tarjetas (Transbank en Chile) y, en ciertos casos, la compañía de tarjeta de crédito (p.ej. Visa o MasterCard). Con todos estos participantes implicados en la transacción, puede pasar hasta una semana antes de que María reciba el dinero de la venta. Además, existen diversos puntos a lo largo del proceso donde puede ocurrir un fraude o un robo. Por obvias razones, este proceso es dispendioso e ineficaz.
¿Cómo funciona la cadena de bloques?
En cualquier sistema de transacciones debe existir un libro contable en el que figura el saldo de cuenta de todos los participantes. En la actualidad, estos libros son aislados y cerrados al público y, en esa condición, se requiere la presencia de terceras partes de confianza (p.ej. gobiernos, bancos, compañías fiduciarias, contables, notarios y papel moneda) para facilitar y aprobar las transacciones.
La tecnología de cadena de bloques es un software gratuito y de código abierto distribuido a nivel mundial que elimina la necesidad de terceras partes de confianza al hacer que una red de computadoras mantenga un libro contable común vía el internet. Este libro contable común es público y es distribuido en su totalidad a través de una red de «nodos», cada uno de los cuales tienen una copia completa del libro contable o de la cadena de bloques.
En una de cadena de bloques, todos los detalles de una nueva transacción son registrados, marcados con la hora y verificados por agentes denominados «mineros», quienes compiten por ser los primeros en resolver problemas matemáticos complejos y poder publica el siguiente bloque de transacciones en el libro contable (o la cadena del historial de transacciones). Los mineros son personas que utilizan complejos sistemas informáticos para resolver problemas matemáticos y reciben un tipo de remuneración financiera por sus esfuerzos. Cuando el bloque de transacciones es subido por el minero que fue el primero en resolver el cálculo, todos los nodos de la red validan automáticamente el libro contable y todas las transacciones que se encuentren en él. Por lo general, la mayoría de los nodos (51 por ciento) deben aceptar que el bloque es válido para que éste pase a formar parte de la cadena de bloques de transacciones o Blockchain. Los bloques de transacciones son usualmente publicados en el libro contable compartido a intervalos de diez minutos.
En este ejemplo básico, los términos del acuerdo entre John y Jane para la compra de la camisa son claros y directos. Sin embargo, el tipo de detalles que pueden ser incluidos en las transacciones son ilimitados. Esto quiere decir que una simple transacción puede ser no solamente realizada eficazmente en una cadena de bloques, sino que los términos de un contrato complejo (p.ej. hipotecas, contratos de opciones y futuros, contratos laborales, contratos de seguros, etc.) también pueden ser manejados mediante una cadena de bloques. Un «contrato inteligente» en una cadena de bloques conserva los términos del contrato e incluso los ejecuta automáticamente mediante, por ejemplo, flujos de dinero automatizados. Estos contratos inteligentes eliminan la necesidad de intermediarios entre las partes, garantizan su cumplimiento automático y reducen significativamente la burocracia. De hecho, Capgemini estima que los contratos inteligentes serán implementados en aplicaciones prácticas de uso general antes del 2020, y que esto puede representar ahorros de 16 mil millones de dólares americanos anuales para los consumidores ($500 USD para el consumidor promedio) en costos de banca y seguros.
¿Qué tan segura es la cadena de bloques?
Considerando el carácter público y compartido de la cadena de bloques, es natural que surjan preguntas respecto a la seguridad de las transacciones en este tipo de red. En realidad, la cadena de bloques es mucho más segura que las redes de transacción existentes.
En primer lugar, aunque el libro contable y todas sus transacciones son públicos, las personas que participan en la cadena de bloques mantienen el anonimato, por intermedio de claves cifradas públicas y privadas. Esto significa que incluso si todos conocen todas las transacciones y el saldo de todos los participantes en la cadena de bloques, no existe ninguna manera de relacionar las transacciones con las personas específicas.
En segundo lugar, debido a que cada nodo individual de la red posee un registro actualizado del libro contable, para modificar las transacciones en la cadena de bloques un pirata informático tendría que piratear por lo menos el 51 por ciento de los nodos mineros a nivel mundial (porque si no hay consenso, un bloque de transacciones no puede ser incluido en la cadena) en un tiempo de diez minutos (que es la frecuencia con que un nuevo bloque de transacciones es validado y agregado a la cadena). Por ello, se estima que se necesitaría combinar 200 de las más grandes súper computadoras del mundo para poder piratear el sistema5.
Aplicaciones de la cadena de bloques en los sectores de servicios financieros y de seguros
Las aplicaciones de la tecnología de cadena de bloques, las cuales son obvias y bien documentadas, están centradas en el concepto de facilitar las operaciones de intercambio de dinero y la actualización de los antiguos sistemas heredados de transacción y de liquidación. Sin embargo, la tecnología de cadena de bloques ofrece a las firmas de servicios financieros y a las empresas de seguros otras e innumerables oportunidades para optimizar sus procesos y mejorar sus servicios.
Un libro contable descentralizado basado en la cadena de bloques permitirá que las actualizaciones de los detalles del cliente sean distribuidas a todas las instituciones casi en tiempo real. Asimismo, el libro contable descentralizado proporcionará un registro histórico de todos los documentos y actividades de cumplimiento de todos los clientes.
De la misma manera, en el sector de los seguros, los contratos inteligentes en una cadena de bloques pueden ofrecer a los consumidores y a los aseguradores los medios para gestionar los reclamos de manera transparente y eficaz. Los detalles de un contrato de seguros pueden ser almacenados en una cadena de bloques, y la plataforma también puede ser usada para validar los reclamos (reduciendo de esta manera la frecuencia de los reclamos fraudulentos) e incluso para activar los pagos automáticamente cuando se reúnan y validen las condiciones necesarias. Como resultado, se obtendrían procesos simplificados y una mejor experiencia del cliente.
Nuestra misión como programadores es descubrir más aplicaciones de uso para esta naciente tecnología.
Los desafíos
Si bien la tecnología de cadena de bloques tiene el potencial de impulsar un cambio de paradigma en la forma como se hacen los negocios en el mundo, ésta no deja de tener desafíos. A continuación, indicamos algunos de los principales retos asociados con la adopción de esta joven tecnología.
ACEPTACIÓN
Debido a que la cadena de bloques es una tecnología tan sin precedentes, lograr su comprensión y aceptación por parte de los desarrolladores de sistemas, los usuarios y los operadores constituye todo un reto. Como la cadena de bloques representa una manera de pensar muy alejada de la manera como se hacen las cosas en la actualidad, los recursos y habilidades de TI en esta área podrían ser difíciles de conseguir, debido a que salen del conjunto de habilidades tradicionales de TI.
COSTO
Pese a que la tecnología de cadena de bloques puede ofrecer a las organizaciones ahorros increíbles en los costos, los altos costos iniciales pueden representar un factor disuasivo. Pasar de un sistema centralizado a una red descentralizada requiere cambios significativos o el reemplazo completo de la estructura heredada.
ASPECTOS REGLAMENTARIOS
Las divisas mundiales en la actualidad son por lo general creadas y reguladas por los gobiernos nacionales.
Las criptomonedas, gestionadas por cadenas de bloques, pueden tener dificultades para lograr su adopción generalizada por las instituciones financieras existentes, si las preguntas acerca de su estatus normativo no son contestadas.
CONSUMO DE ENERGÍA
La tecnología de cadena de bloques necesita una cantidad importante de energía para mantenerse activa.
Miren por ejemplo la cadena de bloques Bitcoin. Los mineros de la red proponen 450 mil billones de soluciones por segundo para validar las transacciones7.
A medida que se añaden nuevas cadenas de bloques, las exigencias en cuanto a la capacidad informática de procesamiento pueden crecer exponencialmente.
NORMALIZACIÓN
Para que la cadena de bloques pueda acelerar eficazmente los procesos comerciales, mejorar el mantenimiento de registros, perfeccionar la detección de fraudes y mucho más, es necesario un cierto nivel de normalización global a través de las instituciones.
Desafortunadamente, esto es algo más fácil de decir que de hacer. Las costumbres, los regímenes reglamentarios y los procesos políticos de los países pueden retrasar los esfuerzos de normalización.
Conclusiones
Hoy en día, la cadena de bloques es una tecnología emergente que tiene ciertos desafíos importantes en el futuro. Sin embargo, si es bien encauzada, la cadena de bloques tiene el potencial de causar una disrupción total en los modelos de negocios tradicionales y hacer obsoletos ciertos líderes actuales de la industria, en un lapso de cinco a diez años. Esa es precisamente la razón por la cual los líderes mundiales de la industria y las firmas emergentes están invirtiendo billones de dólares en la investigación, el desarrollo y la prueba de aplicaciones basadas en la tecnología de libro contable descentralizado.
Sobre las criptomonedas como el nuevo dinero realmente se ve muy complejo a corto plazo, viene de la mano con la evolución de la Blockchain ya que se requiere disminuir los tiempos y costos de transacción, actualmente hacer una transacción con Bitcoin para pagar una coca cola te puede costar unos 30 USD y se demora unas 3 horas.
Entonces, como programadores debemos seguir atentamente la evolución de esta estupenda tecnología e involucrarnos en ella.
Independientemente de cuándo, o incluso de si alguna vez, la tecnología de cadena de bloques pase a ser de uso general, es algo que merece nuestra atención. Después de todo, ¿acaso la computadora personal, el internet y las redes sociales, hoy en día de uso corriente, no fueron alguna vez tecnologías emergentes que tenían un futuro incierto?
!!Actualización!!
Cuando escribí este articulo se veía complicado que las criptomonedas se usarán como medio de pago, el tiempo ha pasado y la tecnología Blockchain ha evolucionado, entra al escenario la Lightning Network la cual permite realizar transacciones casi instantáneas y a un precio muy bajo, en promedio 0.50 centavos de dólar. Así que las criptomonedas como medio de pago y/o transferencias se ve totalmente factible.
También tenemos en escena las estables coin, las aplicaciones de finanzas descentralizadas y exchanges descentralizados.
Aun hay desafíos por superar pero no dude que en los próximos 5 años vamos a tener avances, transacciones casi instantáneas, comisiones más baratas y consumo reducido de energía.
martes, 8 de junio de 2021
Blockchain: Usando Criptomonedas con Java
Integrando el blockchain (cadena de bloques) Ethereum en las aplicaciones Java usando web3j
Es una realidad que la tecnología blockchain terminará por imponerse, así como un día lo fue el internet, o la energía eléctrica. Lo escuchamos en todos lados, en la prensa tecnológica o financiera. En el ecosistema del emprendimiento cada día se crean nuevas empresas alrededor de esta tecnología, algunas lograrán despegar y otras se quedarán en el camino.
¿Pero que es todo el alboroto sobre esta tecnología? ¿Cómo puedo trabajar con ella desde mis aplicaciones Java? Como programadores o desarrolladores de software, no podemos ser ajenos a esta tendencia.
Antes de entrar en profundidad con la biblioteca que hace posible la interacción (web3j), te explicaré brevemente pero con información solida de lo que es y como funciona el blockchain.
lunes, 7 de junio de 2021
Iniciandome en Java
Iniciándome en Java
Esta ruta está organizada para proporcionarte todo lo que necesitas saber para iniciarte con el lenguage de programación Java.
El fenómeno de la tecnología Java - Proporciona una vista general de la tecnología Java. Discutiremos brevemente el lenguaje de programación Java y la plataforma, proporcionando una amplia descripción de lo que esta tecnología puede hacer y como puede hacer tu vida más fácil.
Configuración de nuestro ambiente de Desarrollado - Vamos a configurar nuestro ambiente de desarrollo, desde la estructura de directorios sugerido, la instalación del JDK de Java, la instalación de nuestro IDE favorito, la configuración de herramientas Built como ANT y Maven, hasta la estructura de directorios de un proyecto Java.
La aplicación "Hola Mundo" - Este enfoque practico describe lo que hay que descargar, lo que hay que instalar, y las actividades a realizar para crear una simple aplicación "Hola Mundo". La practica la haremos en Microsoft Windows usando el IDE (entorno de desarrollo integrado) NetBeans.
Una mirada más cercana a la aplicación "Hola Mundo" - Discutiremos en profundidad la aplicación "Hola Mundo", describiendo en detalle cada sección del código: comentarios, el bloque de la definición de la clase y el método main.
Problemas comunes (y sus soluciones) - Este es el lugar al que tienes que ir si se presentan problemas al compilar o ejecutar el programa en esta ruta.