abstract contract ERC20Mintable is Ownable, ERC20{
    /**
     * @dev See `ERC20._mint`.
     *
     * Requirements:
     *
     * - the caller must have the `MinterRole`.
     */
    // 成都链安 // 铸币函数，合约所有者向指定地址account铸造一定数量的代币
    function mint(address account, uint256 amount) public onlyOwner returns (bool) {
        _mint(account, amount); // 成都链安 // 调用内部函数_mint，向指定地址account进行铸币
        return true;
    }
}
/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
function mint(address account, uint256 amount) public onlyOwner returns (bool) {
    _mint(account, amount); // 成都链安 // 调用内部函数_mint，向指定地址account进行铸币
    return true;
}

// 成都链安 // 铸币函数，合约所有者向指定地址account铸造一定数量的代币