No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Solidity: el lenguaje para programar contratos inteligentes

9/27
Recursos

Blockchain trajo consigo un nuevo paradigma de programaci贸n. Desarrollar en blockchain, es muy diferente al desarrollo de software tradicional. Debemos conocer muy bien algunas particularidades que lo hacen diferente para comprender qu茅 tipo de proyectos podemos construir y c贸mo.

Bases del desarrollo blockchain

El desarrollo en blockchain posee tres caracter铆sticas que lo hacen 煤nico:

  • Inmutabilidad: toda la informaci贸n que se guarda en blockchain es inmodificable por defecto. Salvo que el smart contract que guarda dicha informaci贸n permita su modificaci贸n.
  • Dinero programable: blockchain otorga la posibilidad de programar dinero. Determinar el flujo de montos econ贸micos mediante c贸digo fuente.
  • C贸digo p煤blico: en blockchain todo es p煤blico, tanto el c贸digo fuente de los proyectos como la informaci贸n de las transacciones que viajan hacia la red. Es importante tener en cuenta esto 煤ltimo a la hora de programar los contratos inteligentes, dado que todo es accesible por todos.

El contexto de desarrollo de software en web3 es muy distinto al web2. Esto requiere de un lenguaje de programaci贸n especial para este prop贸sito.

Conceptos b谩sicos de Solitity

Solidity es el lenguaje de programaci贸n por excelencia para desarrollar contratos inteligentes en blockchains como Ethereum. El mismo es orientado a objetos y de alto nivel, lo que lo convierte en un lenguaje bastante sencillo de aprender.

Descubre m谩s en el Curso de Introducci贸n a Solidity.

Que el mismo sea orientado a objetos permite que, de conocer previamente ese paradigma de programaci贸n, todo sea m谩s intuitivo. Conceptos como propiedades, funciones, herencia, todo forma parte de Solidity.

Se lo considera de "alto nivel" debido a que es una capa de abstracci贸n para programar en un lenguaje binario, mucho m谩s complicado de entender para el ser humano, y que los programas sean ejecutados por la Ethereum Virtual Machine.

Todo programa desarrollado en blockchain se lo conoce con el nombre de smart contract, o contrato inteligente. Piezas de c贸digo capaces de resolver, casi, cualquier problema computacional.

La 煤nica limitaci贸n en el desarrollo de contratos que debes considerar, y que explorar谩s poco a poco en tu carrera, es el determinismo que blockchain demanda. Todo lo que ocurre en un contrato es determinista, no pueden ocurrir resultados distintos para un mismo input. Esto provoca que en blockchain no exista la aleatoriedad ni la comunicaci贸n con el exterior. Para esto se requiere de concepto m谩s avanzado como lo son los or谩culos; pero es algo m谩s avanzado y no debes preocuparte de momento.

Blockchain es una gran base de datos. En todo momento, la misma posee un estado 煤nico y compartido por todos los nodos de la red. Solidity es capaz de acceder a ese estado y modificarlo o interactuar con este, dependiendo la l贸gica que haya sido programada en el contrato.

Estructura b谩sica de un contrato inteligente con Solidity

La sintaxis de un contrato desarrollado con Solidity es una combinaci贸n de Javascript y C++. Observemos un contrato b谩sico que permite guardar un n煤mero dentro del mismo:

``` // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.8.1 <0.8.19;

contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } } ```

Todo contrato en Solidity comienza con un comentario indicando la licencia del mismo, seguido por la versi贸n del compilador de Solidity utilizando la palabra reservada, "pragma". Otra palabra reservada, "contract", podemos asociarla a "class" en la POO. Dentro del contrato, o la clase, encontrar谩s seguramente que es muy intuitivo comprender la l贸gica del programa y c贸mo estamos logrando persistir, obtener y modificar informaci贸n de la blockchain.

Conclusi贸n

Solidity es un lenguaje bastante ameno y que podr谩s aprender poco a poco para desarrollar tus primeros contratos. Por supuesto que la experiencia previa en cualquier otro lenguaje o paradigma de programaci贸n har谩 la tarea m谩s f谩cil.

Y t煤: 驴Ya tienes experiencia en Solidity?


Contribuci贸n creada por: Kevin Fiorentino (Platzi Contributor).

Aportes 7

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

M谩s all谩 del contenido de Platzi para aprender Solidity
En esta web aportan una gamificaci贸n del aprendizaje interesante
https://cryptozombies.io/

Solidity

Es un lenguaje orientado a objetos, de alto nivel, para programar Smart Contracts.

  • Programas computacionales: es posible realizar cualquier programa decidible usando este lenguaje.
  • Alto nivel: es una capa de abstracci贸n para programar en una maquina de instrucciones conocida como la Ethereum Virtual Machine (EVM).
  • Orientada a objetos: utiliza un paradigma de programaci贸n ampliamente aceptada.
  • Estado: tiene acceso a un conjunto de variables almacenadas en la blockchain pro todos los nodos.
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.8.2 <0.9.0;

contract simpleStorage {
    uint storedData;

    function set(uint x) public {
        storeData = x;
    }

    function get() public view returns (uint) {
        return storedData
    }
}

Apenas empec茅 con el lenguaje de solidity y la verdad me esta gustando mucho, se me complican un poco algunos temas, pero es normal al momento de agarrar alg煤n tema nuevo.

esta ser谩 mi primera vez usando Solidity!

Cuando Ernesto dice que Solidity es un lenguaje decidible, b谩sicamente se refiere a que el mismo es determinista. En blockchain todo debe ser determinista, por lo tanto, en Solidity no es posible la aleatoriedad de las cosas o comunicarse con el exterior. Para este prop贸sito existen los Or谩culos, pero esto es algo m谩s complejo y para m谩s adelante.

La descentralizaci贸n y la confianza en el c贸digo en lugar de en intermediarios son conceptos clave en esta 谩rea, y pueden ser tanto emocionantes como desafiantes. Es cierto que Solidity y los contratos inteligentes permiten crear aplicaciones descentralizadas (DApps) que operan en la cadena de bloques de una manera que elimina la necesidad de intermediarios y conf铆a en la ejecuci贸n del c贸digo. Sin embargo, esta tecnolog铆a tambi茅n plantea desaf铆os importantes, como: 1. **Seguridad:** Los contratos inteligentes son inmutables, lo que significa que una vez desplegados en la cadena de bloques, no se pueden cambiar. Los errores en el c贸digo pueden resultar en p茅rdidas importantes de activos. Es fundamental realizar auditor铆as de seguridad y pruebas exhaustivas. 2. **Responsabilidad:** Los contratos se ejecutan autom谩ticamente seg煤n las reglas del c贸digo, lo que significa que los errores humanos o fallos en el dise帽o pueden ser costosos. La responsabilidad recae en los desarrolladores y los usuarios para comprender completamente el funcionamiento de un contrato antes de interactuar con 茅l. 3. **Gobernanza:** La descentralizaci贸n puede llevar a desaf铆os de gobernanza, ya que las decisiones sobre actualizaciones y cambios en la red deben ser tomadas por la comunidad. Esto puede llevar a debates y conflictos sobre el rumbo a seguir. 4. **Educaci贸n:** Como desarrollador, es fundamental aprender y comprender profundamente Solidity y las particularidades de la cadena de bloques en la que est谩s trabajando. La curva de aprendizaje puede ser pronunciada.