Saltar al contenido
Criptogen

Que es Solidity: El lenguaje de programación del blockchain de Ethereum

febrero 2, 2019
Que es Solidity: El lenguaje de programación del blockchain de Ethereum 1
Que es Solidity: El lenguaje de programación del blockchain de Ethereum 2

Cuando hablamos de que es Solidity, estamos hablando de manera directa al lenguaje de programación cuya síntesis es parecida a otros lenguajes de programación más populares, el JavaScript.

Dicho lenguaje está diseñado y desarrollado bajo un código de bytes llamado Bytecode, este es capaz de desarrollar contratos inteligentes que trabajen en la Máquina Virtual Ethereum, o como se le conoce por su siglas en inglés, la EVM.

Por medio de Solidity los desarrolladores pueden escribir dapps que se implementan en las automatizaciones en los negocios usando como aliado los contratos inteligentes, de esta manera se guarda un registro confiable y autorizado de las transacciones hechas.

 

Que es Solidity: Solidity y JavaScript

Para entender que es Solidity primero tenemos que tener claro que no hay que confundirlo con un lenguaje parecido como JavaScript.

El JavaScript es un lenguaje de programación que cuenta con una sintaxis similar a la del lenguaje programático C, aunque adopta nombres y convencionalidades del lenguaje de programación Java.

Se suele utilizar del lado del cliente, formando así parte de un navegador web y mejorando de tal manera la interfaz del usuario y de páginas web del tipo interactiva.

En otro sentido, también puede usarse para enviar y recibir información del servidor en conjunto con otras tecnologías.

Los navegadores de mayor uso como Google Chrome o Internet Explorer se basan en códigos de JavaScript integrado a las páginas webs. Sin embargo, el uso de estas aplicaciones de uso externo

también es muy significativo.

Que es Solidity.
Diferencias entre Solidity y JavaScript

Diferencias entre Solidity y JavaScript
Diferencias entre Solidity y JavaScript

Solidity es un lenguaje de programación de alto nivel para la cadena de bloques pública llamada Ethereum y de las aplicaciones que se basan en ella y están escritas totalmente en ese lenguaje. Solidity usa una sintaxis parecida a la de JavaScript, pero con ciertas diferencias que los distinguen, entre algunas de ellas están las siguientes:

Solidity es un lenguaje que se orienta en objetos (OO), como C++ Y C#, mientras que el JavaScript se basa en HTML.

La primera en mencionarse en el párrafo anterior, esta diseñada para seguir de manera específica las aplicación bajo el mando de Ethereum y se activa solo en cadena de bloques, mientras que el JavaScript usa un lenguaje más universal y opta por un gran número de aplicaciones.

En el caso de Solidity, el producto final está a la disposición en los nodos de la red. En cambio en el caso de JavaScript el resultado solo se refleja en un único nodo.

Una vez ya hayas entendido esta parte podemos pasar a hablar de IDE.

El IDE y la Máquina Virtual

Una vez y ya estén establecidos los lenguajes de comunicación y todo su proceso instructivo, es necesario formar un entorno propicio para las tareas.

Un IDE, o dicho de manera completa (Entorno de Desarrollo Integrado), como ya se sabe, es la aplicación informática que brinda las herramientas adecuadas a los programadores y desarrolladores de un programa. Es decir, es un medio que facilita la creación de otro programa de ayuda.

Se basa en la mayoría de los casos en un editor de código fuente, varias herramientas de construcción automáticas y un depurador, utilizado para aprobar y erradicar los errores.

Los IDES pueden incluir un compilador y un intérprete en la mayoría de sus casos.

Si hablamos de un compilador se puede traducir a un programa informático, su función actúa en función a traducir todo lo que se ha escrito en un lenguaje de programación y hacerlo pasar a un lenguaje de maquina bajo nivel.

El intérprete es un programa informático idóneo para analizar y hacer trabajar otros programas. Esto lo diferencia de los compiladores en que mientras uno traduce la totalidad de lo que se escribe, el otro analiza y traduce lo que se necesita, es decir una instrucción concreta.

Los programas que se interpretan suelen ser más lentos si se compara con los programas compilados, ya que cubren la necesidad de ir traduciendo el programa mientras se está ejecutando.

Sin embargo, estos son más flexibles puesto que permiten ofrecer un entorno que no dependa de la maquina física, en donde se ejecute, sino en su propio interprete.

Si se lleva a Ethereum, haría que la Máquina Virtual Ethereum (EVM) interprete los diferentes IDEs que están a disposición para usarse en el lenguaje Solidity.

En palabras más sencillas, la EVM interpreta a los entorno de desarrollo de contratos inteligentes, así como el lenguaje en él se escribe.

Webs para crear y aprender Solidity

  • Solidity.readthedocs.io: se trata del principal recurso para aprender y poner en desarrollo a Solidity. En esta web podrás encontrar todo lo pertinente acerca del lenguaje de programación de los contratos inteligentes. Tiene la opción de encontrarse en español, para evitar el estar traduciendo si no dominas bien el inglés.
  • A 101 Noob Intro to Programming Smart Contracts on Ethereum: se basa en tutoriales para personas que desconocen la temática, es decir la programación de los contratos inteligentes de Ethereum.
  • Ethereum Stack Exchange: este medio fue concebido para que la familia de desarrolladores de Ethereum utilizaran este sitio como lugar de preguntas y respuestas. El no ser desarrollador no implica una limitante, si no eres uno también puede llegar a desarrollar y puede participar en e´l para preguntar cualquier duda que tengas.
  • Blockchain Development: consiste en curso corto de Udemy, en donde se enseña de manera amena los fundamentos básicos de Solidity y la creación de los Smart Contracts para Dapps.

Frameworks de Solidity

  • Truffle: es autodenominado “la navaja suiza del ejército” para Ethereum. Es un marco de desarrollo bastante completo y que es frecuentemente utilizado por los programadores de los contratos inteligentes de Ethereum. A través de manuales van explicando el paso a paso de su web, su dirección de repositorio es Github, en ella podrás descargarlo.
  • Embark: en conjunto con Truffle, los marcos para el desarrollo de Solidity que más se usan y están extendidos en toda la red Ethereum son estos. Ambos son los encargados de compilar, esparcir e interconectar con los contratos inteligentes.
  • Dapp: se trata de una herramienta basada en líneas de comandos simples para le desarrollo de los contratos inteligentes. Apoya los casos de uso común, como la tarea de paquetes, edificación de código fuente, pruebas de unidad y ejecución de contratos.

Nodos Ethereum

  • Mist: con ella se puede hacer la implementación de contratos inteligentes, pero también sirve para el almacenamiento de Ether, el enviar y recibir transacciones e interactuar con la blockchain, bien sea como red principal o en las redes de prueba.
  • Geth: se trata de una herramienta de línea de comandos multipropósito que se implementa a un clienten completamente Ethereum y que este implementado en Go, una de las tres ejecuciones originales del protocolo Ethereum en compañía de C++ y Python. Este nodo puede hacer cualquier cosa que Mist también pueda hacer, además de que ofrece diferentes interfaces.
  • Parity: este es otro cliente que comparte similitudes con Geth, los que lo ha usado sostienen que es mucho mejor Parity, ya que es más simple de usar, eso sí, no todo es color de rosa, por ende su instalación es la parte más compleja. Esta creado bajo el resguardo de Ethereum, Gavin Wood, y esta codificado bajo el lenguaje de programación Rust.

Parity es un entorno perfecto para crear Dapps y contratos inteligentes, esto gracias a su tecnología y entorno que se destina al desarrollo de Solidity, en el que se accede por medio de un navegador web.

  • Metamask: es un puente que visualiza la visita de la web distribuida y descentralizada del mañana. Es una extensión para los navegadores convencionales, su función es ejecutar apps descentralizadas que se basen en Ethereum desde el navegador, sin tener que acudir a la descarga del nodo completo, como es el caso de Geth y Parity. En palabras simples, no se trata de un nodo completo en sí, pero cumple con funciones parecidas.

Este nodo también cumple funciones como las de Wallet en las que se puede pasar los Ether en interactuar de forma dinámica con dapps como el caso de CriptoKitties. Además de todo lo mencionado, cumple con la función de herramienta que añade Smart contracts de Solidity.

  • Ethereum Javascript testrpc: consiste en un nodo sencillo de Ethereum capaza de testear y desarrollar los smarts contracts. Escibe el código de blockchain de Ethereum que tanto cuesta tener, y la idea consiste en construir potentes contratos para llevar a cabo pruebas que se gasten con Ether de prueba en lugar de verdaderos Ether.

Una vez y ya se encuentre testeado y garantizado el contrato, se puede publicar en la mainnnet de Ethereum.

Bibliotecas y librerías de Solidity

  • Web3.js: consiste en una colección de librerías que permite interactuar con los clientes Ethereum que se mencionaron anteriormente, bien sea de manera local, al tener en cuenta el propio ordenador, o bien sea de forma remota, por medio de la instalación del cliente en otro ordenador, usando los protocolos Http o Ipc.
  • Web3: permite compilar, desplegar y participar con los clientes de los contratos inteligentes. A través de su página readthedocs.io puedes hallar todo acerca de esta herramienta.
  • Zeppelin Solidity: se refiere a una biblioteca que escribe contratos intelegentes. Se pueden crear aplicaciones tipo Dapps, protocolos y organizaciones (DAOS), que son escritos en Solidity, además cuenta con la integración de IDE Truffle.

Compiladores de Solidity

  • Solidity Compiler: o como se le conoce Solc.jjs, el cual consiste en un software que funciona como compilador. Este transforma lo escrito en Solidity a un código byte de Ethereum.
  • Solium: cumple la función de ser un software capaz de analizar el código de contrato inteligente de Solidity y de esa manera evitar problemas con la seguridad. Para crear códigos en la cadena de bloques de debe contar con presupuesto, por lo que se deben utilizar Testnets para probar antes de que estos actúen en el software y así comprobar su conveniencia como Solium. Para tener seguridad al 100 % de que el smarts contract que se va utilizar es seguro y se encuentra bien escrito sin la presencia de fallos indeseables.
  • Strato BlockApps: es un software que ofrece manera de construir, administrar y ejecutar aplicaciones para la cadena de bloques que son específicas y personalizadas, estas pueden ser propias o construidas encima de Ethereum.

Cursos de pago de Solidity

Ya has llegado a este punto del articulo y esta aquella inquietud de aprender más, pero sobre todo de saber quiénes son los encargados de enseñar este lenguaje computacional que esta revolucionado a muchas empresa.

Una opción bastante fiable para aprender e instruirte en el asunto es Kibernum It Academy, esta opción es fiable si estas en Latinoamérica ya que se encuentra en Chile.

Quienes dictan un curso Kibernum It Academy en su versión en idioma castellano.

El curso dura 12 semanas y luego de ese periodo inicial proceso de certificación, que es entregado por B9lab y de aprobar de forma satisfactoria, la cual genera un código por medio de blockchain que acredita la certificación.

La blockchain es hoy en día una tecnología que se encuentra revolucionando la forma de relacionarse y todo lo relacionado con la tecnología.

El certificado Ethereum está hecho 100 % en español.

Cursos gratis de Solidity

Si estas en esa fase de querer ser un desarrollador y buscas un camino para tu emprendimiento que busque darte la orientación adecuada, en Codementor se ha creado un centro de aprendizaje sobre las cadenas de bloques, un factor que está involucrado con Solidity. Cuenta con una amplia colección de recurso para estudiar la programación y estar pendiente de los últimos desarrollos de la tecnología empleada.

Pero, te preguntaras ¿qué es Codementor?, pues la respuesta es simple, ya que se trata de una comunidad para los desarrolladores que se busca orientar a principiantes, sin embargo hay desarrolladores con experiencia que también acuden a dicho lugar, con el fin de adentrarse ye entender el desarrollo de cadenas de bloques.

En el sitio se puede encontrar lista seleccionada por parte de todo el equipo Codementor, en ellas se incluyen artículos con ciertos conceptos básicos, tutoriales, herramientas de desarrollo y cursos podcasts.

En los tutorials puedes conseguir frameworks, librerias, clients y demás herramientas que se pueden usar en la escritura, verificación y corrección de blockchain.

Cuentan con una sección que se dedica a los líderes de campo, en donde se recomienda seguir ciertas figuras que influyen en el mundo de blockchain, como el caso de Vitalik Buterin, el mismo creador de Ethereum.

Su cantidad de recursos es bastante extensa, se recomiendan libros y todo es de libre acceso. Su única limitante decidir por donde iniciar ya que hay mucho contenido que elegir, y el lugar no ofrece una guía al respecto.

Cursos para aprender Solidity en Español

La fiebre que han llegado a producir la criptodivisa ha hecho que inversores depositen esperanzas en ella, es por ello que sale a flote la importancia de formarse y estar capacitado para elaborar el análisis de manera crítica sobre la viabilidad técnica y legar acerca de las soluciones en estas tecnologías.

Existe en la actualidad un lugar llamado ICEMD Technology, una nueva línea de formación en tecnología, del Instituto de Economía Digital de Esic Business & Marketing School, un lugar de formación específica en la cadena de bloques.

En Ethereum Madrid, un think thank en donde se comparte y debaten conocimientos acerca de los encuentros público, desayuno y talleres sobre la formación de las blockchain .

Los cursos ayudan a profundizar en la raíz de la tecnología y todas sus aplicaciones en los campos para mantener todo a salvo, al mismo tiempo aprenden acerca de los fundamentos de la programación Solidity que es el tema central de este artículo.

Habitualmente se realizan encuentros relacionados con ether, la segunda moneda virtual más importante, de una forma bastante altruista se busca promover esta tecnología.

Por otra parte, la escuela de Marketing Digital Kschool, aporta un Curso de Introducción a la Tecnología Blockchain, con un tiempo de duración de 15 horas, en donde los alumnos pueden aprender los conceptos básicos y el valor de esta tecnología ante la sociedad. La temática se estructura en la Introduccion a Blockchain, la Revolucion de Blockchain y el Desarrollo de Software, este tiene un costo de 395 euros.

En el curso de Desarrollo de aplicaciones con Ethereum se enseña cómo crear una cartera o Wallet, y también de cómo crear una verificación de documento que tiene un costo de 495 euros.

Otra opción que es interesante de tantear es la de los cursos web que ofrecepatrobitcoin.com, ellos cuentan en sus asignaciones con un curso que se llama ¿Qué es el bitcoin? Dura alrededor de 5 horas y trata de aspectos con orígenes del dinero, que tipo de bitcoin es dinero, tecnología bitcoin, la compraventa, consecuencias, entre otros.

En Sngular, un grupo de organizaciones que busca aporta nuevos modelos de negocios que se basen en la cooperación, innovación y su alta tecnologia, organizan de forma periódica un evento que se llama Blockchain Show que cuenta con un carácter divulgativo y formativo.

En la Universidad de Alcalá de Henares, ofrecen un Master de Ethereum, tecnología Blockchain y Cripto-Economía. Se trata del primer programa de postgrado de esta temática en España y el segundo que se conoce en todo e continente europeo. Orienta a los profesionales usando una metodología Flipped Classroon que te ayuda a estudiar de manera semipresencial o totalmente online.

Por otra parte, la Universidad Europea dicta un postgrado de Experto en Bitcoin y Blockchain que cuenta con programas a nivel superior.

Otro de los programas que se relaciona con este tema, es el Master en Direccion Financiera y Controlling por parte de la IEBS, el cual se centra en asumir direcciones económicas y financieras, en donde se diseña y supervisa la parte del departamento de controlling financiero.

Del mismo modo, The Valley la cual no cuenta con cursos especializados, pero si cuenta con un temario de masters.

En el laboratorio Teamlabs, cuenta con un campus urbano en Barcelona y Madrid en donde se dictan calases acerca de las Demolabs, Labs, taller y charlas informativas sobre blockchain y bitcoin.

Integraciones existentes de Solidity

  • Remix: es un IDE que se basa en un navegador compilador que se integra al entorno y ejecución de Solidity, sin tener que entrar en los componentes de parte del servidor.
  • Plugin IntelliJ IDEA: se trata de una extensión de Visual Studio.
  • Solidity plugin para Microsoft Visual Studio: esta incluye un compilador solidity.

Package for SublimeText : trata de una sintaxis similar al lenguaje que se aplica en Solidity. Se destaca entre las demás por su editor Sublime Text.

  • Etheratom: trata de un plugin para el editor de Atom en el que cuente con sintaxis y entorno de tiempo de implementación.
  • Atom Solidity Linter: proporciona linting de Solidity ideal para el editor de Atom.
  • Atom Solium Linter: este es el último que se configura con Atom usando a Solium como su principal base.
  • Solium: es un linter de comandos que se rige estrictamente bajo las normas prescritas por parte de la guía de estilo de Solidity.

Extensión de Visual Studio Code

  • Emacs Solidity: es un plugin que funciona como editor de Emacs que brinda un resaltado nivel de sintaxis y reportes de errores de la compilación.
  • Vim Solidity: se trata también de un plugin para el editor Vim que proporciona una relevante sintaxis.
  • Vim Syntastic: comprueba la compilación.

¿Por qué los programadores adoran Ethereum?

Solidity se trata de un lenguaje para programar los Smart contract.

Ethereum se encarga de combinar facetas de networking, app hosting y base de datos para guardar estados de los contratos.

En Ethereum, los Smart contract están programados en Solidity, un lenguaje especifico que es creado para dicho fin. Se puede decir que es un puente a algunas convencionalidades ya usadas por parte de los programadores web. Su sintaxis es parecida a la de JavaScript.

Esta te permite compilar los contratos en código de bytes que se usa en Ethereum y que será desplegado en maquina virtuales que están en representación de los nodos. Es decir, Ethereum es la responsable de la codificación de códigos en computadoras pequeñas distribuidas de 256 bits.

Estas se pueden programar con los Smart contracts de manera local y luego desplegarlo para que se propaguen en toda la red siendo alojados de manera descentralizada. En tal dirección, Ethereum combina networking con apps de hosting y base de datos y así resguardar los contratos inteligentes.

El desplegar las aplicaciones en Ethereum no es una actividad fácil, ya que se debe tener en cuenta cierta curva de aprendizaje. Para que eso se logre existen herramientas como browser, Mist Browser que permite poder hacer prototipos de scripts y crear wallets que brindan ciertas funcionalidades a través de una línea de comandos que se comunican con la red de Ethereum.

Con respecto a Solidity, se puede encontrar bastante documentación de cómo empezar a programar con este en la web de proyecto Ethereum. Además de tratar algunos ejemplos de smarts contracts que ya han sido creados.

Cuando ya se tiene los Smart contract estos se despliegan y se puede empezar a llevar un seriado de aplicaciones que giren en torno a ellos. Esta es la función de Distribuited Aplication o mejor conocidas con el nombre de Dapps.

Las Dapps, como ya se conoce están estructuradas por Smart contract que se implementan en la red de nodos de Ethereum (backend). Este es más fácil y accesible, la parte de frontend se inicia con HTML/CCS/JavaScript y se puede usar por medio de una web browser.

Términos básicos de Smart Contracts con Solidity

En este apartado se hablaran de una serie de artículos que se encaminan en la creación de token, es decir de una criptomoneda propia. Para ello se debe usar el lenguaje de Solidity.

No hay que tener miedo si nunca has programado, y si es la primera vez te explicaremos lo básico a saber cerca de este tema.

Primero hay que hablar acerca de Ethereum, esta es una plataforma de blockchain que cuenta con un código abierto en el que se basa bitcoin y que permite la construcción y el uso de las Dapps por medio de la tecnología blockchain. Ethereum posee su propia criptomoneda de nombre Ether, esta es la segunda más importante en relación al dinero minado.

¿Por qué el hecho tan fascinante de acudir a Ethereum?

Uno de las razones por la que la gente se ha visto vislumbrada con Ethereum es por su universalidad para la construcción de los contratos inteligente o tipo de transacción en donde se puede definir por medio de matemáticas el hecho de invertir tu propio derivado financiero.

Con Ethereum se puede hacer tu propia moneda si se configura como un contrato de Ethereum. Es posible alcanzar la configuración con un Daemon o Skynet si se tiene miles de contratos interconectados ya segurarse de que se alimenten adecuadamente.

¿A qué se refiere cuando se habla de Smart Contracts?

Los Smart Contracts son piezas centrales de blockchainy pedazos de código que se implementan a través de una máquina virtual de ethereum. Por medio del lenguaje de programación de Solidity se puede desarrollar los contratos y realizar transferencias, operaciones y cualquier cosa relacionada con Ethereum.

La manera más viable de describir a los Smarts es comparándolos con la tecnología de una máquina que expende dulces, ya que por lo general, se acude a un abogado o notario, le cancelas y esperas mientras este te entrega un documento. En el caso de los Smarts sucede algo similar, y es que simplemente entregas el bitcoin y en la máquina expendedora o el Ledger, termino oficial, se ingresara en tu cuenta.

Los contratos inteligentes se definen con reglas y sanciones que giran alrededor de un acuerdo que trabaja bajo los estándares de un contrato común, y en este se debe cumplir de obligaciones automáticas.

¿Qué beneficios brinda el usar Smart Contracts?

1. Ser autónomo

Eres quien hace el acuerdo y no se tiene que confiar en los servicios de un corredor, abogado o cualquier tercero para su confirmación. El paso también elimina el peligro al que se está expuesto, como el caso de la manipulación por un intermediario, ya que la implementación que se gestiona es automática en la red, en lugar de por un grupo de individuos que están en exposición continua a equivocaciones.

2. Copia de seguridad

¿Cuantas veces no ha pasado que te olvidas de una contraseña y quieres recordar como era?. Pues en la blockchain todos los usuarios te respaldan y tus documentos siempre se multiplican, y muchas veces.

3. Seguridad

La criptografía, el cifrado de las webs, mantiene todos los documentos resguardados, no existe piratería que pueda entrar y se requiere de no yaun hacker con una inteligencia anormal, sino también de unos recursos de crackeo o descifrado casi impensables.

4. Velocidad

Los contratos inteligentes se rigen bajo un código de software que automatiza tareas, lo que ve reducidas las horas de una variedad de procesos.

5. Exactitud a la mano

Los contratos inteligentes son rápidos y económicos por lo que están hechos a prueba de errores que evitan que se rellenen los formulario de manera manual.

Para concluir, palabras claves del tema

Solidity: lenguaje de alto nivel, cuenta con una sintaxis parecida a la de JavaScript, es un lenguaje que admite herencia, bibliotecas, tipos de usuarios definidos, ente otros pertinentes.

Entre una de sus características está el hecho de que se comparte documentación con Solidity para que este pueda mirar y conocer otras características del lenguaje.

Red Ropsten: es una red completa e igual a la red principal de Ethereum, pero esta es más usada como red de pruebas para no cometer errores en los Smarts Contracts de la red principal.

Gas: Se trata de la cuota a cancelar para poder hacer uso del poder del cómputo dentro de la red Ethereum y de esa manera implementar las transacciones.

Por ejemplo, si se implementa lo que se debe pagar se ven incluidos la tarifa de transacción que se usara para poner en función el contrato en el blockchain. Cuando alguien necesite usar su Smart necesitara enviar una transacción para su ejecución.

Por cada transacción, el cliente debe pagar la tarifa, en gas, y este se usara para implementar la función de Smarts Contract. La persona que envié la transacción deberá cancelar el monto del gas para que la función se active.