Exercício 7

Lista de permissão (AllowedList) em Solidity

Criaremos uma lista de permissão (allowedList) para que apenas as pessoas que estiverem nela possam modificar o valor da variável storedInfo. O dono do contrato será o único que poderá adicionar ou remover pessoas da lista branca.

Passos a seguir:

  1. Programe o contrato no Remix,

  2. Faça o deploy do contrato no Remix,

  3. Adicione endereços na allowedList utilizando aqueles fornecidos pelo Remix,

  4. Verifique que apenas as pessoas incluídas na allowedList podem modificar o valor de storedInfo.

Código Solidity

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

/// @title Conceitos: mapping e controle de acesso: allowedList
/// @author Solange Gueiros
contract Whitelist {
    string private storedInfo;
    address public owner;
    mapping (address => bool) public allowedList;
    
    // O construtor inicializa o owner e o inclui na whitelist
    constructor() {
        owner = msg.sender;
        allowedList[msg.sender] = true;
        storedInfo = "Hello world";
    }
    
    modifier onlyOwner {
        require(msg.sender == owner,"Somente o dono");
        _;
    }
    
    // Requer que quem enviar a transação esteja na whitelist
    modifier onlyAllowedlist {
        require(allowedList[msg.sender] == true, "Somente alowedList");
        _;
    }

    // setInfo só é acessível por quem está na allowedList
    function setInfo(string memory myInfo) external onlyAllowedlist {
        storedInfo = myInfo;
    }

    // addMember só é acessível pelo dono do contrato
    function addMember (address member) external onlyOwner {
        allowedList[member] = true;
    }

    // delMember só é acessível pelo dono do contrato
    function delMember (address member) external onlyOwner {
        allowedList[member] = false;
    }

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

Last updated