transactions - Payable Function Solidity - 错误是什么:交易已恢复到初始状态
问题描述
我正在尝试在两部分(供应商和生产商)之间进行简单的交易。
首先我部署了合约,然后我定义了金额(即 1)并进行了交易。供应商定义数量,从而定义价格。
.
在我执行支付功能并更改 Remix 帐户(生产者将进行此交易)之前,在价值中定义 1 个以太币,这将是生产者的购买。
当我执行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;
}
}
解决方案
推荐阅读
- javascript - 如何在 Angular 7 中同步运行 2 个语句?
- text - utf-8 编码、zlib 压缩的 UUID 列表的空间最佳格式
- ios - 如何强制 Crashlytics 上传报告并等待
- javascript - 当我将刷新率设置为 0.01 秒时,从数据库获取数据而不刷新页面会出现 500 内部服务器错误
- python - 在python中读取没有openCV的视频文件
- flutter - TextFormField 字符限制不起作用
- matlab - MATLAB 使用 vpa() 时 mod() 的奇怪行为
- python - 如何优化 Python 中嵌套到平面级字典的转换?
- java - 如何在iText7中将背景颜色应用于带有圆角的表格单元格?
- javascript - 如何从地图中的承诺中设置 JS 变量?