```\nfunction drawNumber()\n    external\n    whenNotPaused\n    requireAccount(_alarmContract)\n    requireState(DrawState.Closed)\n    nonReentrant\n    returns (bool)\n{\n    require(_reserves > 0, "DCBW721: Not enough reserves for draw");\n    require(totalSupply() >= 500, "DCBW721: Supply of 500 not reached yet");\n\n    require(\n        _reserves != 0 && address(this).balance.sub(_grandPrizePool) >= _reserves,\n        "DCBW721: Not enough balance for draw prize"\n    );\n\n    bytes32 reqId = IRNG(_rngContract).request();\n\n    _state = DrawState.Open;\n    draws[_drawsToDate] = DrawData(\n        _drawsToDate,\n        uint32(block.timestamp), /* solium-disable-line */\n        0,\n        0,\n        address(0),\n        0,\n        _state,\n        reqId\n    );\n\n    emit DrawInitiated(reqId);\n\n    return true;\n}\n```\n