Tengo 2 personas (digamos A o B). Quieren tener el siguiente acuerdo. La persona 'A' especifica un depósito (x monedas) para el usuario 'B' bajo una determinada condición con un bloqueo de tiempo futuro 't'. Si el usuario 'B' proporciona una solución válida, obtendrá el depósito. ¿Cómo podemos agregar un pago de multa al usuario 'B' al usuario 'A' si no proporciona una solución válida después del bloqueo de tiempo 't'? ¿Alguna solución detallada de contrato inteligente será muy útil?
Sí.
Podría ayudar pensar en el contrato como una máquina expendedora que hace cumplir y procesa.
El usuario A depositará algunos fondos. Esto podría modelarse como una oferta.
Si es posible que el usuario A reciba fondos de penalización del usuario B, entonces el usuario B también depositará fondos. Esto podría modelarse como la aceptación de los términos de la oferta.
Finalmente, el usuario B completaría la tarea o dejaría de hacerlo. Lo mejor es que el contrato pueda determinar por sí mismo que la condición se ha cumplido o que el límite de tiempo ha expirado para que pueda determinar qué usuario tiene derecho a los fondos. Es importante destacar que el contrato se limita a repartir fondos/activos que están bajo su contrato, razón por la cual los dos primeros pasos fueron depósitos de ambos participantes.
Espero eso ayude.
ACTUALIZAR
Este es un ejemplo simple de fecha límite. No aborda todas las preocupaciones de seguridad para una implementación lista para producción. Solo con fines ilustrativos. Sin garantía. ;-)
pragma solidity 0.5.1;
contract Timelock {
uint public deadline;
address owner;
constructor(uint _deadline) public payable {
deadline = _deadline;
owner = msg.sender;
}
function withdrawFunds() public {
require(msg.sender == owner); // funds are only for a certain entity
require(now >= deadline); // cannot be taken before the deadline
msg.sender.transfer(address(this).balance);
}
}
heba mohsen
Rob Hitchens