Exercício 4

Neste exercício, faremos uma variante do exercício 3, pois verificaremos se quem envia a transação para atribuir um valor à variável storedInfo é o dono (owner) do contrato. Apenas o dono pode modificar o valor de storedInfo.

Passos a seguir:

  1. Programe o contrato no Remix.

  2. Deploye em uma rede de teste do Ethereum, como Sepolia.

  3. Publique e verifique o contrato utilizando um explorador de blocos.

  4. Interaja com o contrato através do explorador de blocos e verifique se é possível modificar o valor da variável storedInfo.

  5. Tente modificar o valor de storedInfo conectando-se com outra carteira (wallet).

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

/// @title Conceitos: Tipo de endereço, msg.sender, dono, if
/// @author Solange Gueiros
contract Owner {
    string private storedInfo;
    address public owner;
		// O construtor define como dono quem implanta o contrato.
    constructor() {
        owner = msg.sender;
    }

    /**
    * A função setInfo verifica se quem envia a transação
    * é o dono do contrato.
    * Se for, modifica o valor da variável. Caso contrário, não faz nada.
    */
    function setInfo(string memory myInfo) external {
        if (msg.sender == owner) {
            storedInfo = myInfo;
        }
    }

    function getInfo() external view returns (string memory) {
        return storedInfo;
    }
}

Pergunta: Como modificaria a função setInfo no contrato anterior para utilizar a estrutura de controle require em vez de if?

Resposta:

 	function setInfo(string memory myInfo) external {
        require(msg.sender == owner, "Only owner");
        storedInfo = myInfo;
    }

Last updated