Escrowdefi
ESCROW
how to:
deploy
-> deployer deposit
-> crew finish job
-> deployer sending money
- deploy contract by recuriter/customer
- run deposit by sending a value & address of services(like a programmer)
- after finishing the job by services(programmer) runing finish function by him/her
- customer can to run withdraw function for releasing & send value
Exacutables:
- deposit
- finish
- withdraw Readonly:
- depositsOf
Todo:
save value amount
in a variable, delete/0 that after withdrawgetter function
for escrowID
security
- change
internal
functions toprivate
Review
- Deposit
function _deposit(address payee) internal virtual onlyOwner returns (bool) {
uint256 amount = msg.value;
deposits[payee] += amount;
customer = payable(payee);
uint256 id = ID;
isReceive[payee][id] = false;
emit Deposited(payee, amount, block.timestamp);
return true;
}
- Withdraw
function _withdraw(address payable payee, uint256 id) internal virtual onlyOwner returns (bool) {
require(isReceive[payee][id] == true, "not yet finished job");
uint256 payment = deposits[payee];
deposits[payee] = 0;
payee.sendValue(payment);
emit Withdrawn(payee, payment, block.timestamp);
return true;
}
- Finalize
function finish(uint256 id) public returns (bool) {
require(msg.sender == customer, "recurited user can do this");
isReceive[msg.sender][id] = true;
return true;
}