Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Registro y gestión de direcciones

13/21
Recursos

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Código con import

// SPDX-License-Identifier: MIT

pragma solidity ^0.8;

import "@openzeppelin/contracts/access/Ownable.sol";

contract Proyecto is Ownable {

    address public comprador;
    address public vendedor;

    bool public depositoListo;
    bool public compradorOK;
    bool public pagoListo;

    uint public montoPago;

    modifier onlyComprador() {
        require(msg.sender == comprador, "No es el comprador");
        _;
    }

    constructor(address _comprador, address _vendedor, uint _monto) {
        comprador = _comprador;
        vendedor = _vendedor;
        montoPago = _monto;
        depositoListo = false;
        compradorOK = false;
        pagoListo = false;
    }

    //deposita el comprador
    function depositarPago() payable public onlyComprador {
        require(msg.value == montoPago, "No es el valor correcto");
        depositoListo = true;
    }

    function compradorConfirmaOK() public onlyComprador {
        compradorOK = true;
    }

    //retira el vendedor
    function retirarPago() public {
        require(compradorOK, "El comprador no ha dado el OK");
        payable(vendedor).transfer(montoPago);
        pagoListo = true;
    }

    //si el vendedor no entrega el producto, interviene el arbitro
    function pagarPorArbitro() public onlyOwner {
        payable(vendedor).transfer(montoPago);
        pagoListo = true;
    }
}

Código de ejemplo final

pragma solidity ^.8;

contract Proyecto is Ownable {

    address public comprador;
    address public vendedor;

    bool public depositoListo;
    bool public compradorOK;
    bool public pagoListo;

    unit public montoPago;

    modifier onlyComprador() {
        require(msg.sender==comprador,"No es el comprador");
        _;
    }

    constructor(address _comprador, address _vendedor, uint _monto){
        comprador= _comprador;
        vendedor= _vendedor;
        montoPago= _monto;
        depositoListo=false;
        pagoListo=false;
    }

    //deposita el comprador
    function despositarPago() payable public onlyComprador {
        require/msg.value == montoPago, "No es el valor correcto");
        depositoListo=true;
    }

    function compradorConfirmaOK() public onlyComprador {
        compradorOK=true;
    }

    //retira el vendedor
    function retirarPago() public {
        require(compradorOK,"El comprador no ha dado el  ok");
        payable(vendedor).transfer(montoPago);
        pagoListo=true;
    }

    // si el vendedor no entrega el producto, interviene el _arbitro
    function pagarPorArbitro() public onlyOwner {
        payable(vendedor).transfer(montoPago);
        pagoListo=true;
    }
} 

código del ejemplo

pragma solidity ^.8;

contract Proyecto {

    address public comprador;
    address public vendedor;

    address public arbitro;

    bool public depositoListo;
    bool public compradorOK;
    bool public pagoListo;

    unit public montoPago;

    constructor(address _comprador, address _vendedor, uint _monto, address _arbitro){
        comprador= _comprador;
        vendedor= _vendedor;
        montoPago= _monto;
        arbirto = _arbitro;
        depositoListo=false;
        pagoListo=false;
    }

    //deposita el comprador
    function despositarPago() payable public {
        require(msg.sender==comprador,"No es el comprador");
        require/msg.value == montoPago, "No es el valor correcto");
        depositoListo=true;
    }

    function compradorConfirmaOK() public {
        require(msg.sender==comprador,"No es el comprador");
        compradorOK=true;
    }

    //retira el vendedor
    function retirarPago() public {
        require(compradorOK,"El comprador no ha dado el  ok");
        payable(vendedor).transfer(montoPago);
        pagoListo=true;

    }

    // si el vendedor no entrega el producto, interviene el _arbitro
    function cancelarPorArbitro() public {
        require(msg-sender==arbitro,"Solo lo puede hacer el arbirto");
        payable(vendedor).transfer(montoPago);
        pagoListo=true;
    }
}