Post
Topic
Board Services
Merits 3 from 1 user
Re: [PAID TESTERS NEEDED] Zenland Escrow Contract | Custom Agents | Up to $20 (open)
by
nelson4lov
on 05/01/2024, 12:29:27 UTC
⭐ Merited by Zenland (3)
Zenland Escrow Review

I was invited to try a Zenland escrow contract as an agent. The contract is 0x621340a3883bFF299E9AEb8c466598395408a53B on Bsc Chain (contract on bscscan: https://bscscan.com/address/0x621340a3883bFF299E9AEb8c466598395408a53B)


Contract terms: 
Exchange of 1 BUSD to 0.000022 BTC

However, there is a small mistake in the contract details, USDT is used instead of BUSD as quoted below:

Quote
This escrow contract initiates the exchange of 1 USDT for 0.000022 BTC. To fulfil this agreement, I, as the buyer, have locked in 1 BUSD

What happened:
The buyer was supposed to receive BTC from the seller. The seller sent an invalid TX hash since it doesn’t include the buyer's BTC address as a recipient. The buyer pointed this out to the seller who insisted it was a blockchain congestion problem which isn’t the case. The seller persuaded the buyer to coerce him/her to release the BUSD when the seller hadn’t fulfilled his end of the contract. 

Given the seller's dishonest behaviour, I was inclined to resolve the escrow contract in favour of the buyer and I did. Agent fee is currently set between 1-3 % for the agent for successful resolution as seen below: 





I took a 1% fee and returned the other 99% to the buyer.
 

Observations:
  • Messages in chat by the agent can’t be edited once sent.
  • The buyer protection time countdown is stuck at 1 days, 0 hours, 0 minutes in the UI even if it is enforced at the contract level.
  • After the buyer protection time is elapsed, the seller can call
Code:
release()
    and take 100% of the buyer's money and there is nothing the buyer can do about it. [/li]
  • Contract code looks good and secure but lacks comments and some gas optimizations can be done to reduce the gas costs for users (buyer, seller, agent) eg: changing some require statements to custom error and other best practices like using constants instead of magic numbers.