Crearemos una whitelist para que solo las personas que estén en ella puedan modificar el valor de la variable storedInfo . El dueño del contrato será el único que podrá añadir o retirar personas de la whitelist.
Pasos a seguir:
Programe el contrato en Remix,
Despliegue el contrato en Remix.
Añada addresses en la whitelist utilizando las que Remix le proporciona.
Verifique que solo las personas incluidas en la whitelist pueden modificar el valor de storedInfo .
// SPDX-License-Identifier: MITpragmasolidity ^0.8.19;/// @title Concepts: mapping and access control: whiteList/// @author Solange Gueiroscontract Whitelist {stringprivate storedInfo;addresspublic owner;mapping (address=>bool) public whiteList;// El constructor inicializa al owner y lo incluye en la whitelistconstructor() { owner = msg.sender; whiteList[msg.sender] =true; storedInfo ="Hello world"; }modifieronlyOwner {require(msg.sender == owner,"Only owner"); _; }// Se requiere que quien envíe la transacción esté en la whitelistmodifieronlyWhitelist {require(whiteList[msg.sender] ==true,"Only whitelist"); _; }// setinfo solo accesible para quien esté en la whitelistfunctionsetInfo(stringmemory myInfo) externalonlyWhitelist { storedInfo = myInfo; }// addMember sólo accesible para el dueño del contratofunctionaddMember (address member) externalonlyOwner { whiteList[member] =true; }// delMember sólo accesible para el dueño del contrato functiondelMember (address member) externalonlyOwner { whiteList[member] =false; }functiongetInfo() externalviewreturns (stringmemory) {return storedInfo; }}