From ce072cd20d48281ee41a03e4e2c13a6cdef3b614 Mon Sep 17 00:00:00 2001 From: Javier Gonzalez Date: Mon, 20 Dec 2021 12:32:24 -0600 Subject: [PATCH] #15: add merkle root check --- contracts/SimpleToken.sol | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/contracts/SimpleToken.sol b/contracts/SimpleToken.sol index 40376b7..f81f758 100644 --- a/contracts/SimpleToken.sol +++ b/contracts/SimpleToken.sol @@ -3,6 +3,7 @@ pragma solidity 0.8.6; import "./@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "./@openzeppelin/contracts/access/AccessControl.sol"; +import "./@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; //import "hardhat/console.sol"; /** @@ -12,6 +13,9 @@ import "./@openzeppelin/contracts/access/AccessControl.sol"; */ contract SimpleToken is ERC20, AccessControl { uint256 immutable initialSupply; + bytes32 public merkleRoot; + + event MerkleRootChanged(bytes32 merkleRoot); /** * @dev Constructor. @@ -41,4 +45,10 @@ contract SimpleToken is ERC20, AccessControl { function getInitialSupply() public view returns (uint256) { return initialSupply; } + + function setMerkleRoot(bytes32 _merkleRoot) external onlyRole(DEFAULT_ADMIN_ROLE) { + require(merkleRoot == bytes32(0), "Merkle root already set"); + merkleRoot = _merkleRoot; + emit MerkleRootChanged(_merkleRoot); + } }