// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/security/Pausable.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
contract BONDToken is ERC20, Pausable, AccessControl {
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");
// Advanced security features
mapping(address => bool) public blacklisted;
uint256 public maxTransferAmount;
// Cross-chain compatibility
mapping(uint256 => bool) public supportedChainIds;
constructor() ERC20("BLOCKCHAINS.BOND", "BOND") {
_setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
_setupRole(MINTER_ROLE, msg.sender);
maxTransferAmount = 1000000 * 10**decimals();
}
// Additional security and functionality...
}