尝试使用 Remix IDE 测试可靠性。我不断收到错误:
气体估计错误并显示以下消息(见下文)。事务 > 执行可能会失败。是否要强制发送?
有没有人知道什么可能会给我这个错误。我正在尝试使用以太坊智能合约销售产品。我已经使用 Remix IDE 创建了这个价值 = 0 的合同。我能够成功地创建合同和 add_product 但我无法购买。最后一行给了我上面提到的错误。
我正在测试的solidity 文件如下:如您所见,我创建了一个销售合同,该合同将允许用户使用区块链销售产品,并允许买家检索以以太坊支付价格的产品。如果有人有更好的解决方案供我用于这个确切的用例,我愿意接受建议。
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 => Product_Quantity) products;
}
Seller public seller;
mapping (address => 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);
}
}