Patricio usted es muy buen Maestro, muy bien explicado todo,
Introducción
Conoce la red de Celo
¿Por qué Celo?
Entendiendo la EVM
Herramientas
Desarrollando para la EVM
Transacciones
Herramientas de Solidity
Estructura del Smart Contract
Loops y condicionales
Tipo dato "Address"
Atributo payable
Retiros y control de permisos
Modificadores
Herencia
Scaffold del contrato
Registro y gestión de direcciones
Interactuando con la Blockchain de Celo
Instalando en una testnet
Desplegando con Hardhat
Interactuando con Smart Contracts
Uso del contractKit para integrar la interfaz gráfica
Uso de WalletConnect
Desplegando el contrato en la testnet Alfajores
Usando el ContractKit para integrar la resolución arbitral
Nuestra interfaz de pago con WalletConnect
Sigue practicando
Crea un mejor futuro con Celo
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 4
Preguntas 1
Patricio usted es muy buen Maestro, muy bien explicado todo,
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;
}
}
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;
}
}
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;
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?