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:
Programe o contrato no Remix.
Deploye em uma rede de teste do Ethereum, como Sepolia.
Publique e verifique o contrato utilizando um explorador de blocos.
Interaja com o contrato através do explorador de blocos e verifique se é possível modificar o valor da variável
storedInfo
.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