Crear problema de gas de contrato

Cuando creo mi contrato en remix usando metamask (web3 inyectado) me pide que baje mi tarifa de gas. Una vez que lo bajo (si no lo hago, no puedo crearlo), el contrato se crea PERO mis variables dentro del contrato no se inicializan. Por ejemplo una var a = 10; está devolviendo 0. Cuando comento algunas funciones oraclize y bajo la necesidad de gas, entonces mi contrato se implementa bien. No tengo idea de lo que está pasando.

Agregué el código y una captura de pantalla. Como ya he dicho. Una vez que comencé a comentar la función 'oraclize' en algún momento, comienza a funcionar bien ...

pragma solidity ^0.4.20;
import "./oraclize.sol";

contract Casino is usingOraclize {
   address owner;
   uint public betAmount = 30 finney; //Equal to 0.01 Ether
   uint public totalBet; //Amount of Ether bet for current game
   uint public numberOfBets; //Total number of current bets
   //uint public maxAmountOfBets = 1 //Maximum amount of bets can be made for each game by each user
   uint public limitAmountOfBets = 3; //Maximum amount of bets for each game
   uint public numberWinner; //Number that won last game
   address[] public players; //Players
   mapping(uint => address[]) numberBetPlayers; //Who bet for which number
   mapping(address => uint) playerBetsNumber; //Number bet by each player

   modifier onEndGame() {
       if(numberOfBets >= limitAmountOfBets) _;
   }

   //constructor - set bet amount and max bets in each game
   function Casino(uint _betAmount, uint _limitAmountOfBets) {
       owner = msg.sender; //set creator of contract to owner

       if(_betAmount > 0) betAmount = _betAmount;
       if(_limitAmountOfBets > 0) limitAmountOfBets = _limitAmountOfBets;

       oraclize_setProof(proofType_Ledger); //arge
   }

   //check if player exists in current game
   function checkPlayerExists(address player) public returns(bool) {
       if(playerBetsNumber[player] > 0) return true;
       else return false;
   }

   //bet function
   function bet(uint numberToBet) payable {
       require(numberOfBets <= limitAmountOfBets); //check if limit has been reached
       require(!checkPlayerExists(msg.sender)); //check that player hasn't bet before
       require(numberToBet >=1 && numberToBet <= 10); //check that the bet is between 1 and 10
       require(msg.value == betAmount); //check that ether send by sender is equal to bet amount

       playerBetsNumber[msg.sender] = numberToBet;
       numberBetPlayers[numberToBet].push(msg.sender);

       numberOfBets += 1;
       totalBet += msg.value;

       if(numberOfBets >= limitAmountOfBets) generateNumberWinner();
   }

   //generate random numbers using oraclize_newRandomDSQuery function
   function generateNumberWinner() payable onEndGame {
       uint numberRandomBytes = 4;
       uint delay = 0;
       uint callbackGas = 200000;

       bytes32 queryId = oraclize_newRandomDSQuery(delay, numberRandomBytes, callbackGas);
   }

   function __calback(bytes32 _queryId, string _result, bytes _proof) oraclize_randomDS_proofVerify(_queryId, _result, _proof) onEndGame {
       assert(msg.sender == oraclize_cbAddress());

       numberWinner = (uint(sha3(_result))%10+1);
       distributePrizes();
   }

   function distributePrizes() onEndGame {
       uint winnerEtherAmount = totalBet / numberBetPlayers[numberWinner].length; //how much each winner will get

       for(uint i = 0; i < numberBetPlayers[numberWinner].length; i++) { //sent ether to addresses
           numberBetPlayers[numberWinner][i].transfer(winnerEtherAmount);
       }

       for(uint j = 1; j <= 10; j++) {
           numberBetPlayers[j].length = 0;
       }

       totalBet = 0;
       numberOfBets = 0;
   }
}

¿Problema de límite de gas?

¿¿Alguna ayuda?? Gracias.

Hola. ¿Podría incluir su código de contrato?
agregué el código

Respuestas (2)

Puede ser que su contrato requiera más gasolina que la gasolina predeterminada. Intenta aumentar el valor del gas en el remix.

Un breve sobre Gas y gasPrice.:

El gas es una unidad fija para cada paso, esto se define en el nivel EVM.

gasPrice lo deciden mis mineros, para ejecutar cada paso cuántos ether están dispuestos a gastar.

Aumenté el valor del gas pero no cambia el resultado.
Agregar 4469391 como gas
Sí, funcionó, PERO, ¿cómo se te ocurrió este número y por qué tiene que ser EXACTAMENTE este número y no un número mayor como 4700000? ¿Puedes explicarlo para que pueda entenderlo más claramente? ¡Gracias!
¿Estás esperando tu solución? Intento el mismo gas con el mismo código pero ahora recibo el mismo error nuevamente... :(

La opción Optimize establecida en true en remix resolvió el problema. Por ahora al menos.