4.2 – Ethereum, Smart Contracts en Ethereum con Protección Modifier. Solidity

Ethereum y Solidity

Continuamos con el código del ejemplo anterior.

// Versión 
pragma solidity ^0.4.0;

// Definición de contrato
contract HolaMundoProtect {
    
    // Definición de variable
    string saludo = "Hola mundo";
    string msn = "";
    // address: cuenta o wallet que ha creado el contrato
    address propietario;
    
    // Constructor de esta "clase". Esta función se ejecuta cuando se crea el contrato y se ejecuta solo una vez.
    function HolaMundoProtect() {
        propietario = msg.sender;
    }
    
    // Definición para obtener el saludo
    function getSaludo() constant returns(string) {
        return saludo;
    }

    // Definición para modificar la variable
    function setSaludo(string nuevoSaludo) returns(string){
        // msg.sender: es la persona que llama a este contrato
        if (propietario != msg.sender) {
            msn = "No eres el creador del contrato";
        } else {
            saludo = nuevoSaludo;
            msn = saludo;
        }
        return msn;    
    }
    
    // 1 - Pulsamos en create
    // getSaludo y setSaludo son de diferente color
    // 2 - Pulsamos sobre getSaludo
    // 3 - Escribimos un nuevo saludo, entre comillas
    // 4 - Pulsamos sobre getSaludo y comprobamos
    // Todas las cuentas de mi nodo y mi blockchain tenian por defecto 100 eter
}

A programar!!!

Ahora vamos a modificar el código para que únicamente el creador del contrato pueda realizar cambios. Como puedes observar en la linea 11 se ha añadido una variable de tipo address. En esta variable vamos a guardar al creador del contrato para poder limitar el uso y aportar algo de seguridad a nuestro smart contract.

Otro cambio que podemos observar respecto al código anterior, es la linea 14, ya que hemos creado el «constructor» y que solo se ejecuta una vez cuando se crea el contrato la primera vez. Básicamente le estamos asignando la dirección del wallet del creador a esa variable.

El siguiente cambio se encuentra entre la linea 27 y 32, donde comprobamos si realmente el creador del contrato esta intentado modificar el contenido. A continuación un pequeño vídeo para comprobar que funciona correctamente.