首页 > 解决方案 > Payable Function Solidity - 错误是什么:交易已恢复到初始状态

问题描述

我正在尝试在两部分(供应商和生产商)之间进行简单的交易。

首先我部署了合约,然后我定义了金额(即 1)并进行了交易。供应商定义数量,从而定义价格。

有效的金额交易.

在我执行支付功能并更改 Remix 帐户(生产者将进行此交易)之前,在价值中定义 1 个以太币,这将是生产者的购买。

payble 函数的输入

当我执行payable函数时,出现错误: 交易已恢复到初始状态。如果您发送值并且您发送的值应该小于您当前的余额,则调用的函数应该是应付的。

我的代码如下,我正在寻找一种替代方法来完成两个不同账户之间的交易。我如何以正确的方式设置生产者?

pragma solidity ^0.5.0; 

contract supply {

address payable Supplier;
address payable Producer;
uint constant payment_unit = 1 ether;
uint public price_feature1_wei = 0;
string public features_product1;
bool public SellSuplier = true;
bool public contract_terminated = false;

constructor () public payable {
    Supplier = msg.sender;
    features_product1 = "product description...";

}

function PriceFeature1 (uint amount) public {
    require (SellSuplier == true);
    require (Supplier == msg.sender);
    price_feature1_wei = amount * payment_unit;
}

    function PurchaseFeature1() public payable {
    require (price_feature1_wei > 0);
    require (msg.value == price_feature1_wei);
    require (SellSuplier == true);
    require (Producer == msg.sender);
    require (Supplier.send(msg.value));
    SellSuplier = false;
}




}

标签: transactionsethereumsolidityremix

解决方案


推荐阅读