57 lines
1.7 KiB
Solidity
57 lines
1.7 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity 0.8.19;
|
|
|
|
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
|
|
abstract contract MallBase is Ownable {
|
|
address public verifier;
|
|
// Address to receive transaction fee
|
|
address public feeToAddress;
|
|
|
|
uint256 public immutable _CACHED_CHAIN_ID;
|
|
address public immutable _CACHED_THIS;
|
|
|
|
mapping(address token => bool status) public erc20Supported;
|
|
event AddERC20Suppout(address erc20);
|
|
event RemoveERC20Suppout(address erc20);
|
|
event VerifierUpdated(address indexed verifier);
|
|
event FeeToAddressUpdated(address indexed feeToAddress);
|
|
|
|
constructor(address _currency, address _feeToAddress, address _verifier) {
|
|
_CACHED_CHAIN_ID = block.chainid;
|
|
_CACHED_THIS = address(this);
|
|
verifier = _verifier;
|
|
erc20Supported[_currency] = true;
|
|
feeToAddress = _feeToAddress;
|
|
}
|
|
|
|
function addERC20Support(address erc20) external onlyOwner {
|
|
require(erc20 != address(0), "ERC20 address can not be zero");
|
|
erc20Supported[erc20] = true;
|
|
emit AddERC20Suppout(erc20);
|
|
}
|
|
|
|
function removeERC20Support(address erc20) external onlyOwner {
|
|
erc20Supported[erc20] = false;
|
|
emit RemoveERC20Suppout(erc20);
|
|
}
|
|
|
|
/**
|
|
* @dev update verifier address
|
|
*/
|
|
function updateVerifier(address _verifier) external onlyOwner {
|
|
require(_verifier != address(0), "address can not be zero");
|
|
verifier = _verifier;
|
|
emit VerifierUpdated(_verifier);
|
|
}
|
|
|
|
function setFeeToAddress(address _feeToAddress) external onlyOwner {
|
|
require(
|
|
_feeToAddress != address(0),
|
|
"fee received address can not be zero"
|
|
);
|
|
feeToAddress = _feeToAddress;
|
|
emit FeeToAddressUpdated(_feeToAddress);
|
|
}
|
|
}
|