```\nfunction drawNumberGrandPrize()\n    external\n    payable\n    whenNotPaused\n    onlyOwner\n    requireState(DrawState.Closed)\n    nonReentrant\n    returns (bool)\n{\n    if(msg.value > 0){\n        _updateGrandPrizePool(_grandPrizePool.add(msg.value));\n    }\n\n    require(\n        _grandPrizePool != 0 && address(this).balance.sub(_reserves) >= _grandPrizePool,\n        "DCBW721: Not enough balance for grand 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        1,\n        address(0),\n        0,\n        _state,\n        reqId\n    );\n\n    emit DrawInitiated(reqId);\n\n    return true;\n}\n```\n