Tu primer SC

PRIMER PASO:

Lo primero es abrir en nuestro navegador Remix y crear un nuevo archivo que llamaremos "webTutorial.sol". Una vez dentro lo primero que hay que escribir es el tipo de licencia que tendrá tu contrato, por motivos didácticos pondremos el tipo MIT. Lo siguiente es indicar la versión de solidity que vamos a utilizar, en mi caso la mas moderna y estable es la saga 0.8.0.
Y para terminar el primer paso iniciaremos nuestro contrato poniendo contract y el nombre de nuestro contrato que va a ser webTutorial.

SEGUNDO PASO:

Lo siguiente es instanciar las variables que vamos a utilizar, para hacer nuestro SC necesitaremos una de tipo sting, otra de tipo uint256 y una de tipo address.
La de tipo string la llamaremos message ya que será la variable que guarde nuestro mensaje en formato texto. El uint le llamaremos counterNumber que será un contador de cuantas veces se ha escrito el mensaje. Y por ultimo la address la llamaremos owner ya que guardara la dirección del creador del contrato.

TERCERO PASO:

El tercer paso consiste en crear una contructor, que es como si fuese una funcion que se ejecutara cuando se despliege el contrato automaticamente. En ella diremos que la variable owner, que hemos creada antes, es igual a "msg.sender", msg.sender es la direccion de la cuenta que esta ejecutando dicha funcion, de esta forma ya sabemos quien es el propietario de dicho contrato.

CUARTO PASO:

Para completar el paso anterior vamos a crear un modifier, lo llamaremos isOwner, este modificador nos servira para limitar las funciones que queremos que solo ejecute el propietario. Lo que debemos escribir es que requiere que la cuenta que ejecuta (msg.sender) la funcion sea el owner, despues hay que poner "_;" esto es imprescindible ya que sustitulle el codigo de la funcion a la que le pongamos este modificador, por esa barra baja.

QUINTO PASO:

Este es el paso más importante, ahora vamos a crear las funciones de nuestro contrato.

La primera función que vamos a crear se llamara setMessage, ya que esta función servirá para darle un valor a la variable string message. Para ello necesitaremos pasarle el mensaje, esto se consigue poniendo entre parentesis lo siguiente ¨(string memory newMessage)¨, lo que hacemos aqui es crear una nueva variable string que será de tipo memory, esto lo que hace es que su valor no lo almacena la blockchain, y eso es justo lo que queremos porque nosotros ya tenemos nuestra variable message en la blockchain. Dentro de la función lo que haremos es decir que message es igual a newMessage, para así darle el valor que nosotros le hemos pasado a la función. Por ultimo a nuestra variable counterNumber le diremos que es igual a counterNumber más uno, esto sirve para que se autoincremente su valora cada vez que se estriba un mensaje. Como extra podemos hacer que esta función sola la puede ejecutar el owner gracias al modificador que hemos creado antes, para ello volvemos a la cabecera de la función y al lado de la visibilidad ponemos el nombre de nuestro modificador.

La segunda función será para leer el mensaje, en esta le añadiremos varias cosas a la cabecera, lo primero es que será de tipo view, esto lo que hace es que no nos cobre comisiones por consultar la blockchain (esto es posible ya que no vamos a editar ningún valor solo a ver). Lo siguiente que debemos añadir a la cabecera es ¨returns (string memory)¨, esto hará que nos devuelva una string. Por ultimo, dentro de la función, pondremos return message esto hará que la string que nos va a devolver sea igual al mensaje que tenemos en nuestro contrato.

Y como extra para consultar cuentas veces se ha escrito el mensaje crearemos una función igual que la anterior, pero en este caso nos devolverá un uint.

SEXTO PASO:

Ya estamos casi al final de nuestro contrato, ahora vomos a compilarlo y desplegarmo en la maquina virtual de JavaScript. para ello nos dirigimos al panel izquierdo y pulsamos el inco con el logo de solidity, una vez alli lo unico que haremos es dale a ¨Compile webTutorial.sol¨ y no tendria que aparecer ningun error.

Una vez ya compilado nos moveremos al tercer icono del menú, aquí es donde vamos a desplegar nuestro contrato, elijaremos la maquina virtual de Java, en esta maquina virtual tendremos 15 cuentas con 100 ETH cada una.

Por utilo solo tendromos que pulsar Deploy y nuestro contrato esta publicado. Nos aparecera abajo en Deployed Contracts, es allí donde probaremos su funcionamiento.

ULTIMO PASO:

Ya esta todo hehco, solo queda probarlo, para ello podemos comprobar primero las dos funciones de lectura, como no hemos escrito nungun mensaje debira de aparecer 0 y nada. Luego podemos escribir un texto y comprobar con las funciones de lectura que pone dicho texto y que el contador marca 1.