SOLIDITY - Creación de smarts contracts - [TUTORIAL][INTRODUCCIÓN]


destapeman

FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

Pero bueno, muchos os estaréis preguntando que es un smart contract y que es Solidity, pues bien:

- Smart Contract en castellano sería un contrato inteligente, y consiste en un programa informático que auto-ejecuta acuerdos establecidos entre dos o más partes. Que el contrato sea auto-ejecutable significa que ciertas acciones suceden como resultado de que se cumplan una serie de condiciones específicas, las acordadas en dicho contrato. Es decir, cuando se da una condición establecida con anterioridad, el contrato inteligente la detecta y ejecuta automáticamente la cláusula correspondiente.
- Solidity será el lenguaje de programación que usaremos y aprenderemos en esta serie de post para poder desarrollar los smart contracts. Su sintaxtis está basada en ECMAScript, y similar a otros lenguajes como JavaScript y C, pero con la diferencia de implementar un tipado fuerte a la hora de declarar el tipo de variables y argumentos. Esto es así para garantizar el rigor del contrato.


Solidity es un lenguaje creado para ejecutarse en las Ethereum Virtual Machines (EVM) que funcionan sobre la blockchain de Ethereum. Más adelante entraremos en las explicaciones sobre la EVM no os rayéis, esto como bien indica el título del post es la introducción al curso.

Vamos ahora a ver un ejemplo simple que establece el valor de una variable y la expone para que otros contratos puedan acceder a ella. Aunque ahora explique el funcionamiento de este pequeño script, no os preocupéis porque más adelante entraremos en materia, quiero poneros un ejemplo simple como primera toma de contacto:

JavaScript:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract SimpleStorage {
    uint storedData;

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

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


- La primera línea indica que el código fuente está licenciado bajo la versión 3.0 de la GPL. Los especificadores de licencia legibles por máquina son importantes en un entorno en el que publicar el código fuente es lo habitual.

- La siguiente línea especifica que el código fuente está escrito para Solidity versión 0.4.16 o una versión más reciente del lenguaje hasta la versión 0.9.0 pero sin incluir ésta última. Esto es para asegurar que el contrato no se puede compilar con una nueva versión del compilador, donde podríamos tener algún fallo debido a que la última versión siempre suelen ser versiones Betas que no están del todo bien establecidas por así decirlo. Los pragmas son instrucciones comunes para los compiladores sobre cómo tratar el código fuente, por ejemplo para que asegurarse de que estamos usando la versión correcta de Solidity.

- En la siguiente línea vemos que comienza con la palabra clave contract, esta sentencia se utiliza para inicializar el contrato, al que hemos llamado SimpleStorage. Se crea como una Clase como lo haríamos normalmente en otro lenguaje de programación.

- La línea uint storedData; declara una variable de estado llamada storedData de tipo uint (entero sin signo de 256 bits). Pensemos en ella como un único espacio en la Base de Datos que podremos consultar o modificar llamando a las funciones, que tenemos más abajo, que gestionen la Base de Datos.

- Las dos siguientes líneas son la primera función al uso, una funcion setter para poder modificar el valor de storedData al que le podremos pasar un número entero sin signo de 256 bits. Como veréis no hay ninguna función de control que nos permita controlar quien puede modificar el estado de storedData por lo que entraña un peligro de seguridad, pero como dije antes, esto es un ejemplo básico para que veáis como funciona un smart contract simple. Básicamente en esta función con la sentencia set le pasamos un parámetro uint que se almacena en la variable x. Es una función de tipo public por lo que se tiene acceso desde todo el código. La función set nos dice que la variable storedData va a ser igual al número que hayamos metido en x.

- La última parte del código sería un getter o la típica función get para consultar el estado de la variable storedData. Al llamar a esta función podremos ver que valor tiene storedData. También es pública por la sentencia public porque queremos que pueda acceder todo el mundo. Le pasamos el parámetro returns (uint) porque necesitamos especificar que tipo de dato nos tiene que devolver, en este caso un entero sin signo (uint/ unasigned integer).


Hasta aquí ya habríamos visto como funciona un poco por encima Solidity, como dije antes esto es una toma de contacto, la chicha vendrá más adelante.

Si queréis compilar el código en un entorno TEST sin tener que gastar gas (también explicaré este término más adelante) podéis compilarlo y ejecutarlo para probar en la siguiente web: remix.ethereum.org
Enlace a donde he sacado la información y la fuente principal de donde lo estoy aprendiendo: docs.soliditylang.org


Un saludo,
 
Última edición:

RubRub

Miembro muy activo
Nodero
Noder
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
No conozco qué es, vamos a ver
 

Torbox

Miembro muy activo
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
Interesante
 

macruz

Miembro muy activo
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
s
 

Rodkaiser

Més que un nodero | Verdunchderechista
Noderador
Nodero
Noder
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
De ti me espero cualquier cosa menos un curso de solidity
 

Coscu

polvoraaa y manteka coloraaa
Noderador
Nodero
Noder
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
Pues muy buena cosa la verdad, a ver de qué va esto
 

Ricardo01310

Miembro muy activo
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
Vamo a ve
 

quierouncubata

Miembro muy activo
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

*** Hidden text: cannot be quoted. ***



Un saludo,
JEEPETA
 

destapeman

FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

Pero bueno, muchos os estaréis preguntando que es un smart contract y que es Solidity, pues bien:

- Smart Contract en castellano sería un contrato inteligente, y consiste en un programa informático que auto-ejecuta acuerdos establecidos entre dos o más partes. Que el contrato sea auto-ejecutable significa que ciertas acciones suceden como resultado de que se cumplan una serie de condiciones específicas, las acordadas en dicho contrato. Es decir, cuando se da una condición establecida con anterioridad, el contrato inteligente la detecta y ejecuta automáticamente la cláusula correspondiente.
- Solidity será el lenguaje de programación que usaremos y aprenderemos en esta serie de post para poder desarrollar los smart contracts. Su sintaxtis está basada en ECMAScript, y similar a otros lenguajes como JavaScript y C, pero con la diferencia de implementar un tipado fuerte a la hora de declarar el tipo de variables y argumentos. Esto es así para garantizar el rigor del contrato.


Solidity es un lenguaje creado para ejecutarse en las Ethereum Virtual Machines (EVM) que funcionan sobre la blockchain de Ethereum. Más adelante entraremos en las explicaciones sobre la EVM no os rayéis, esto como bien indica el título del post es la introducción al curso.

Vamos ahora a ver un ejemplo simple que establece el valor de una variable y la expone para que otros contratos puedan acceder a ella. Aunque ahora explique el funcionamiento de este pequeño script, no os preocupéis porque más adelante entraremos en materia, quiero poneros un ejemplo simple como primera toma de contacto:

JavaScript:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract SimpleStorage {
    uint storedData;

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

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


- La primera línea indica que el código fuente está licenciado bajo la versión 3.0 de la GPL. Los especificadores de licencia legibles por máquina son importantes en un entorno en el que publicar el código fuente es lo habitual.

- La siguiente línea especifica que el código fuente está escrito para Solidity versión 0.4.16 o una versión más reciente del lenguaje hasta la versión 0.9.0 pero sin incluir ésta última. Esto es para asegurar que el contrato no se puede compilar con una nueva versión del compilador, donde podríamos tener algún fallo debido a que la última versión siempre suelen ser versiones Betas que no están del todo bien establecidas por así decirlo. Los pragmas son instrucciones comunes para los compiladores sobre cómo tratar el código fuente, por ejemplo para que asegurarse de que estamos usando la versión correcta de Solidity.

- En la siguiente línea vemos que comienza con la palabra clave contract, esta sentencia se utiliza para inicializar el contrato, al que hemos llamado SimpleStorage. Se crea como una Clase como lo haríamos normalmente en otro lenguaje de programación.

- La línea uint storedData; declara una variable de estado llamada storedData de tipo uint (entero sin signo de 256 bits). Pensemos en ella como un único espacio en la Base de Datos que podremos consultar o modificar llamando a las funciones, que tenemos más abajo, que gestionen la Base de Datos.

- Las dos siguientes líneas son la primera función al uso, una funcion setter para poder modificar el valor de storedData al que le podremos pasar un número entero sin signo de 256 bits. Como veréis no hay ninguna función de control que nos permita controlar quien puede modificar el estado de storedData por lo que entraña un peligro de seguridad, pero como dije antes, esto es un ejemplo básico para que veáis como funciona un smart contract simple. Básicamente en esta función con la sentencia set le pasamos un parámetro uint que se almacena en la variable x. Es una función de tipo public por lo que se tiene acceso desde todo el código. La función set nos dice que la variable storedData va a ser igual al número que hayamos metido en x.

- La última parte del código sería un getter o la típica función get para consultar el estado de la variable storedData. Al llamar a esta función podremos ver que valor tiene storedData. También es pública por la sentencia public porque queremos que pueda acceder todo el mundo. Le pasamos el parámetro returns (uint) porque necesitamos especificar que tipo de dato nos tiene que devolver, en este caso un entero sin signo (uint/ unasigned integer).


Hasta aquí ya habríamos visto como funciona un poco por encima Solidity, como dije antes esto es una toma de contacto, la chicha vendrá más adelante.

Si queréis compilar el código en un entorno TEST sin tener que gastar gas (también explicaré este término más adelante) podéis compilarlo y ejecutarlo para probar en la siguiente web: remix.ethereum.org
Enlace a donde he sacado la información y la fuente principal de donde lo estoy aprendiendo: docs.soliditylang.org


Un saludo,
he quitado el reply and like del post por los siguientes motivos:
1- gente foránea al foro no podrá verlo.
2- si se preguntan cosas puede que se pierdan entre tanto mensaje para poder verlo.

Los siguientes los subiré sin esa opción directamente. Alguno pensará, que haces loco, que vas a perder muchas oportunidades de conseguir likes.

Me la sudan neno, no me hacen falta quieres que te venda unos cuantos likes?​

 
  • Like
Reacciones : edutenes1

baltasar

Miembro muy activo
Buenas tardes Noders,

Hoy vengo con algo a lo que no estoy acostumbrado a subir y es un post de programación, el primero de una larga serie en la que os intentaré enseñar desde 0 a como desarrollar smart contracts (contratos inteligentes).

La motivación principal para hacer esta serie de post va a ser la de tener una guía en castellano sobre ello, ya que lo único que he encontrado en la red es en inglés y eso suele dar mucha pereza por lo tedioso de andar traduciendo y tal... además que puede que no se entienda bien el contenido a los posibles fallos que puedan tener los traductores que uséis.

Pero bueno, muchos os estaréis preguntando que es un smart contract y que es Solidity, pues bien:

- Smart Contract en castellano sería un contrato inteligente, y consiste en un programa informático que auto-ejecuta acuerdos establecidos entre dos o más partes. Que el contrato sea auto-ejecutable significa que ciertas acciones suceden como resultado de que se cumplan una serie de condiciones específicas, las acordadas en dicho contrato. Es decir, cuando se da una condición establecida con anterioridad, el contrato inteligente la detecta y ejecuta automáticamente la cláusula correspondiente.
- Solidity será el lenguaje de programación que usaremos y aprenderemos en esta serie de post para poder desarrollar los smart contracts. Su sintaxtis está basada en ECMAScript, y similar a otros lenguajes como JavaScript y C, pero con la diferencia de implementar un tipado fuerte a la hora de declarar el tipo de variables y argumentos. Esto es así para garantizar el rigor del contrato.


Solidity es un lenguaje creado para ejecutarse en las Ethereum Virtual Machines (EVM) que funcionan sobre la blockchain de Ethereum. Más adelante entraremos en las explicaciones sobre la EVM no os rayéis, esto como bien indica el título del post es la introducción al curso.

Vamos ahora a ver un ejemplo simple que establece el valor de una variable y la expone para que otros contratos puedan acceder a ella. Aunque ahora explique el funcionamiento de este pequeño script, no os preocupéis porque más adelante entraremos en materia, quiero poneros un ejemplo simple como primera toma de contacto:

JavaScript:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.4.16 <0.9.0;

contract SimpleStorage {
    uint storedData;

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

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


- La primera línea indica que el código fuente está licenciado bajo la versión 3.0 de la GPL. Los especificadores de licencia legibles por máquina son importantes en un entorno en el que publicar el código fuente es lo habitual.

- La siguiente línea especifica que el código fuente está escrito para Solidity versión 0.4.16 o una versión más reciente del lenguaje hasta la versión 0.9.0 pero sin incluir ésta última. Esto es para asegurar que el contrato no se puede compilar con una nueva versión del compilador, donde podríamos tener algún fallo debido a que la última versión siempre suelen ser versiones Betas que no están del todo bien establecidas por así decirlo. Los pragmas son instrucciones comunes para los compiladores sobre cómo tratar el código fuente, por ejemplo para que asegurarse de que estamos usando la versión correcta de Solidity.

- En la siguiente línea vemos que comienza con la palabra clave contract, esta sentencia se utiliza para inicializar el contrato, al que hemos llamado SimpleStorage. Se crea como una Clase como lo haríamos normalmente en otro lenguaje de programación.

- La línea uint storedData; declara una variable de estado llamada storedData de tipo uint (entero sin signo de 256 bits). Pensemos en ella como un único espacio en la Base de Datos que podremos consultar o modificar llamando a las funciones, que tenemos más abajo, que gestionen la Base de Datos.

- Las dos siguientes líneas son la primera función al uso, una funcion setter para poder modificar el valor de storedData al que le podremos pasar un número entero sin signo de 256 bits. Como veréis no hay ninguna función de control que nos permita controlar quien puede modificar el estado de storedData por lo que entraña un peligro de seguridad, pero como dije antes, esto es un ejemplo básico para que veáis como funciona un smart contract simple. Básicamente en esta función con la sentencia set le pasamos un parámetro uint que se almacena en la variable x. Es una función de tipo public por lo que se tiene acceso desde todo el código. La función set nos dice que la variable storedData va a ser igual al número que hayamos metido en x.

- La última parte del código sería un getter o la típica función get para consultar el estado de la variable storedData. Al llamar a esta función podremos ver que valor tiene storedData. También es pública por la sentencia public porque queremos que pueda acceder todo el mundo. Le pasamos el parámetro returns (uint) porque necesitamos especificar que tipo de dato nos tiene que devolver, en este caso un entero sin signo (uint/ unasigned integer).


Hasta aquí ya habríamos visto como funciona un poco por encima Solidity, como dije antes esto es una toma de contacto, la chicha vendrá más adelante.

Si queréis compilar el código en un entorno TEST sin tener que gastar gas (también explicaré este término más adelante) podéis compilarlo y ejecutarlo para probar en la siguiente web: remix.ethereum.org
Enlace a donde he sacado la información y la fuente principal de donde lo estoy aprendiendo: docs.soliditylang.org


Un saludo,
Muchas gracias por este aporte!!
 
  • Like
Reacciones : destapeman

destapeman

FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
YA ESTÁ LA PARTE 2 DEL TUTORIAL!!!

APRENDED Y NO OS OLVIDÉIS DE PREGUNTAR VUESTRAS DUDAS, OS RESPONDERÉ EN LO QUE SEPA Y EN LO QUE NO NOS COMEREMOS UNA POLLA BIEN GORDA MIENTRAS ENCONTRAMOS LA RESPUESTA