Inicia tu camino construyendo la Web3

1

Pre-work para Desarrollo en Blockchain: Primeros Pasos y Herramientas

2

Desarrollo Blockchain: Principios y Oportunidades en Web3

3

Fundamentos de Blockchain y Descentralización

4

Smart Contracts y Web3: Construyendo el Futuro Descentralizado

Conociendo el entorno de desarrollo

5

Introducción al Desarrollo Blockchain: Git, Node.js y Comandos de Terminal

6

Fundamentos de Blockchain: Redes, Lenguajes y Herramientas Esenciales

7

Stack de Web3: Capas y Herramientas para Aplicaciones Descentralizadas

8

Conceptos Básicos de Criptografía para Web3

Desarrollo en Ethereum

9

Programación de Contratos Inteligentes con Solidity

10

Seguridad en Smart Contracts con Open Zeppelin Contracts

11

Fundamentos de la Ethereum Virtual Machine (EVM)

12

Desarrollo de Aplicaciones Blockchain con Solidity y Ethereum

Primeros pasos en Ethereum

13

Creación y gestión de wallets de criptomonedas

14

Redes de Pruebas Blockchain: Uso y Funcionalidad en Desarrollo

15

Creación de Contratos Inteligentes en Remix IDE y Solidity

16

Instalación y Configuración de Hardhat para Contratos en Solidity

17

Compilación y despliegue de contratos inteligentes con Hardhat

18

Conexión de Aplicaciones Descentralizadas a Blockchain con Ethers.js

19

Ejecución de Aplicaciones Descentralizadas con Metamask

20

Programación Web 3: Fundamentos y Especializaciones

Seguridad y protocolos de segunda capa

21

Capas 2 en Ethereum: Escalabilidad y Seguridad en Blockchain

22

Transición de Web 2 a Web 3: Desarrollo y Comunidades Blockchain

Más allá del desarrollo

23

Almacenamiento Descentralizado en Blockchain: IPFS, Filecoin y Más

24

Creación de Startups y DAOs en Blockchain

25

Introducción al Desarrollo en Web3 para Mujeres y Hablantes de Español

26

Fundamentos de Blockchain y Criptomonedas en Web3

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Programación de Contratos Inteligentes con Solidity

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 8

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
    }
}

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.

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!

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.
Es mi primera vez con OpenZeppelin y ya quiero poner los dedos en el teclado!