title: Why am I getting this error ? "Gas estimation errored with the following message (see below). The transaction > execution will likely fail"
body: <p>Trying to test solidity using Remix IDE. I keep getting the error:</p>
  
  <blockquote>
    <p>Gas estimation errored with the following message (see below). The transaction > execution will likely fail. Do you want to force sending? </p>
  </blockquote>
  
  <p>Does anybody have an idea about what might be giving me this error. It I am trying to sell products using the ethereum smart contracts. I have used the Remix IDE to create this contract with value = 0. 
  I am successfully able to create the contract and add_product but I am unable to Buy. The last line give me the error mentionned above.</p>
  
  <p>The solidity file I am testing againt is the following: As you can see I create a Sell contract which would allow a user to sell products using the blockchain and a buyer to retrieve the product paying the price in ethereum. If anyone has a better solution for me to use for this exact use-case I am opened to suggestions. </p>
  
  <pre><code>pragma solidity ^0.4.0;
  
  contract Sell {
  
      struct Product_Quantity{
          string _product_name;  
          uint256 _product_quantity;        
          uint256 _price_unity; 
          bool isValue;
      }
      struct Seller{
          address _id;
          mapping(string =&gt; Product_Quantity) products; 
  
      }
  
      Seller public seller;
      mapping (address =&gt; Product_Quantity) product_owners;
  
      function Sell(){
          seller._id = msg.sender;
      }
      function add_product(string product_name, uint256 product_quantity, uint256 price_unity) {        
          if(msg.sender != seller._id) throw;
          if(seller.products[product_name].isValue){
              seller.products[product_name]._product_quantity += product_quantity;
          }
          else{
              seller.products[product_name] = Product_Quantity(product_name, product_quantity, price_unity, true); 
          }
      }
  
      function Buy( string product_name, uint256 quantity) payable {
  
  
          if(product_owners[msg.sender].isValue){
              product_owners[msg.sender]._product_quantity += quantity; 
          }
          else{
              product_owners[msg.sender] = Product_Quantity(product_name, quantity, seller.products[product_name]._price_unity, true);
  
          }
          seller.products[product_name]._product_quantity -= quantity;
          seller._id.transfer(seller.products[product_name]._price_unity * quantity);
  
  
      }
  }
  </code></pre>