// SPDX-License-Identifier: CC0-1.0 pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import "./ERC4671.sol"; import "./IERC4671Consensus.sol"; contract ERC4671Consensus is ERC4671, IERC4671Consensus { // Consensus voters addresses mapping(address => bool) private _voters; address[] private _votersArray; // Mapping from voter to mint approvals mapping(address => mapping(address => bool)) private _mintApprovals; // Mapping from owner to approval counts mapping(address => uint256) private _mintApprovalCounts; // Mapping from voter to revoke approvals mapping(address => mapping(uint256 => bool)) private _revokeApprovals; // Mapping from tokenId to revoke counts mapping(uint256 => uint256) private _revokeApprovalCounts; constructor (string memory name_, string memory symbol_, address[] memory voters_) ERC4671(name_, symbol_) { _votersArray = voters_; for (uint256 i=0; i