//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.18; contract SimpleStore { function set(uint _value) public { value = _value; } function get() public constant returns (uint) { return value; } // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleEscrow { address public escrowAgent; // Treuhänder address payable public seller; address payable public buyer; enum State { AWAITING_PAYMENT, AWAITING_DELIVERY, COMPLETE, REFUNDED } State public currentState; constructor(address payable _seller, address payable _buyer) { escrowAgent = msg.sender; seller = _seller; buyer = _buyer; currentState = State.AWAITING_PAYMENT; } // Einzahlung durch den Käufer function deposit() external payable { require(msg.sender == buyer, "Nur der Käufer kann einzahlen"); require(currentState == State.AWAITING_PAYMENT, "Zahlung nicht erwartet"); require(msg.value > 0, "Der Betrag muss größer als 0 sein"); currentState = State.AWAITING_DELIVERY; } // Bestätigung durch den Käufer function confirmDelivery() external { require(msg.sender == buyer, "Nur der Käufer kann die Lieferung bestätigen"); require(currentState == State.AWAITING_DELIVERY, "Keine Lieferung erwartet"); currentState = State.COMPLETE; seller.transfer(address(this).balance); } // Rückerstattung an den Käufer durch den Treuhänder function refundBuyer() external { require(msg.sender == escrowAgent, "Nur der Treuhänder kann zurückerstatten"); require(currentState == State.AWAITING_DELIVERY, "Rückerstattung nicht möglich"); currentState = State.REFUNDED; buyer.transfer(address(this).balance); } } uint value; }// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleEscrow { address public escrowAgent; address payable public seller; address payable public buyer; enum State { AWAITING_PAYMENT, AWAITING_DELIVERY, COMPLETE, REFUNDED } State public currentState; constructor(address payable _seller, address payable _buyer) { escrowAgent = msg.sender; seller = _seller; buyer = _buyer; currentState = State.AWAITING_PAYMENT; } function deposit() external payable { require(msg.sender == buyer, "Nur der Käufer kann einzahlen"); require(currentState == State.AWAITING_PAYMENT, "Zahlung nicht erwartet"); require(msg.value > 0, "Der Betrag muss größer als 0 sein"); currentState = State.AWAITING_DELIVERY; } function confirmDelivery() external { require(msg.sender == buyer, "Nur der Käufer kann die Lieferung bestätigen"); require(currentState == State.AWAITING_DELIVERY, "Keine Lieferung erwartet"); currentState = State.COMPLETE; seller.transfer(address(this).balance); } function refundBuyer() external { require(msg.sender == escrowAgent, "Nur der Treuhänder kann zurückerstatten"); require(currentState == State.AWAITING_DELIVERY, "Rückerstattung nicht möglich"); currentState = State.REFUNDED; buyer.transfer(address(this).balance); } }
0.4.18