Escrow user errors
Escrow user error is the result of invalid, unauthorized, prohibited, or malicious request sent by the buyer (Contractee), by the seller (Contractor), or by the agent (if invited for disputed cases) to the smart contract. They can be caused accidentally (because of technical issues or human error), or with the intent to manipulate the contract for personal gains.
As with all smart contracts, errors indicate that the request has been denied and the user(s) must comply with the programmed rules to have the request successfully executed.
Why do user errors happen?
Once a draft contract has been approved and deployed to the blockchain, it is managed through specific commands (a. i. contract actions) like "Transfer", "Confirm", or "Release". These requests are blockchain transactions that must be approved by the blockchain network. Once approved, calls activate a specific function in the contract code to execute the command. The change in the contract state is recorded in the blockchain.
At any point of escrow contract execution, requests made by the user may return an invalid response (error).
In order for users to spend less on gas while requesting escrow contract transactions, the errors only contain a number with the letter "e"(for "escrow") before it without the error message.
Important!
Please note that neither error will appear in normal escrow contract execution when each party (a buyer, a seller, and an agent, if invited to resolve a dispute) requests authorized operations (contract actions).
Create a draft escrow contract
✅
✅
❌
Deploy escrow contract
✅
❌
❌
Transfer agreed amount into the contract
✅
❌
❌
Confirm contract fulfillment
❌
✅
❌
Release agreed amount from the contract
✅
✅ only if buyer neither disputed nor released funds to seller's address
✅ only when invited to resolve the case (based on evidence for user(s) claims)
Dispute the contract with the seller (without agent)
✅
❌
❌
Dispute escalation to the agent
✅
✅ if cannot resolve directly with the buyer
❌
From the table above you can see that agent (Agent) is not authorized to request any operations with a contract before being invited by the buyer or the seller to resolve the disputed case.
Escrow user errors list
e001
Buyer (Contractee), seller (Contractor), and agent (Agent) must have different addresses.
e002
Agreed amount and the amount transferred into the contract do not match.
e003
Only the buyer (Contractee) can perform this action.
e004
Only the seller (Contractor) can perform this action.
e005
Only the agent (Agent) can use this function.
e006
Agreed amount must be greater than 0.
e007
Buyer protection time must be greater than or equal to 1 day.
e008
Requested amount or currency does not match the amount or currency transferred into the contract.
e009
Seller (Contractor) can release the agreed amount from the contract only after buyer protection time has passed.
e010
Agent's fee must be a minimum of 1% and a maximum of 3%.
e011
Agreed amount must be released from the contract in full.
e012
Only buyer (Contractee) or seller (Contractor) can perform this contract action.
e013
The contract must be in deployed state.
e014
The contract must be in fulfilled state.
e015
The contract must be in disputed state.
e016
The contract has to be in disputed state with the agent invited.
e017
The contract must be in deployed, fulfilled, or disputed state.
e018
The contract must be either in deployed or fulfilled state.
e019
The contract token must be a valid contract address
Escrow user errors explained
Error e001 - Buyer (Contractee), seller (Contractor), and agent (Agent) must have different addresses.
This error is displayed whenever one party (a buyer, a seller, or an agent) forces the contract to accept a cryptocurrency wallet address that matches the address of another party.
Error e002 - Agreed amount and the amount transferred into the contract do not match.
This error indicates that there is a difference between the initial amount the buyer and seller agreed upon in the contract terms (a.i. agreed amount) and the actual balance locked up in the contract. This may happen when the buyer transfers the amount into the contract outside of Zenland.
For example, copy-pastes the contract address into Metamask (or other cryptocurrency wallets) and accidentally (or on purpose) sends fewer tokens than stated in the contract terms. The user must send the missing amount into the escrow contract so that the user request is processed successfully.
Error e003 - Only the buyer (Contractee) can perform this action.
Normally, a seller (Contractor) or agent (if not invited for a disputed case) will not see this message. The error message only appears if anyone other than the buyer (Contractee) attempts to a) deploy a contract, b) release funds (agreed amount) from the contract through manipulations in code or otherwise.
Error e004 - Only the seller (Contractor) can perform this action.
This error message will not appear in usual circumstances when each party only requests contract actions they are authorized for. It is only displayed when anyone other than the seller (Contractor) tries to a) confirm contract fulfillment through code or otherwise.
Refer to the table above for a full list of authorized (permissioned) actions for each party.
Error e005 - Only the agent (Agent) can use this function.
Note that the agent may access the escrow contract only if invited by either a buyer (Contractee) or a seller (Contractor) when they request a neutral third party to resolve the disputed contract. Contract action called "Invite an Agent" authorizes the agent to perform a single action - release funds from the disputed contract. Error e005 appears only if anyone other than the authorized agent (Agent) attempts to release funds
Important!
When inviting an agent to resolve a disputed contract, a buyer and seller revert their permission to release funds from the contract on their own. Any attempts from a buyer or seller to request the release after inviting the Agent are unauthorized and will return the error e005.
Error e006 - Agreed amount must be greater than 0.
Escrow contract error e006 only appears if the buyer (Contractee) sends unauthorized request to deploy the escrow contract with "0"(null, zero) as the agreed amount stated in the contract terms. Such requests can be accidental or with the intent to manipulate the agreed amount, and are likely to be attempted through code or otherwise.
Interactions with contract through the Zenland interface prevent users from creating draft contracts with "0" (null, zero) as agreed amount.
Error 007 - Buyer protection time must be greater than or equal to 1 day.
This error is displayed whenever the buyer (Contractee) attempts unauthorized request to deploy the escrow contract with less than "1" day as the set value for buyer protection time stated in the contract terms. Prohibited requests (usually) are the results of malicious attempts to cheat the escrow contract through manipulations in code or otherwise.
Interactions with contract through the Zenland interface prevent users from creating draft contracts with less than "1" day as buyer protection time.
Error e008 - Requested amount or currency does not match the amount or currency transferred into the contract.
Error e008 occurs when the user requests to return:
a) any extra amount of tokens other than the agreed amount transferred into the contract, and b) when the user requests to return currencies other than the currencies transferred into the contract.
In reality, the contract does not have any extra amount of tokens or any currencies other than the one transferred by the user, and thus, returns the e008 error.
Example #1
The escrow contract states 10 USDT as the agreed amount.
The user (buyer) transfers 10 USDT into the contract.
The user (buyer) mistakenly believes (or intentionally claims) that 15 USDT have been sent into the contract and requests extra tokens (5 USDT according to user) back.
The request will return the error e008 because the contract contains only 10 USDT transferred as for the contract conditions and "0" (zero) extra tokens.
Example #2
The escrow contract states 10 USDT as the agreed amount.
The user (buyer) transfers 10 USDT into the contract.
The user (buyer) mistakenly believes (or intentionally claims) that 5 USDC have been accidentally sent into the contract in addition to 10 USDT.
The user requests to return mismatched currencies (5 USDC according to user) back.
The request will return the error e008 because the contract contains only 10 USDT transferred as for the contract conditions and "0" (zero) mismatched currencies.
Error e009 - Seller (Contractor) can release the agreed amount from the contract only after buyer protection time has passed.
Both a buyer (Contractee) and a seller (Contractor) can release the agreed amount from the contract. Only for seller there are two conditions to be met for it:
a) the contract cannot be in disputed state, and b) the amount can be released only after buyer protection time has passed. If the seller tries to manipulate this condition by sending unauthorized request to release the amount from the contract the response will return error e009.
Error e010 - Agent's fee must be a minimum of 1% and a maximum of 3%.
The error is seen by the agent authorized to resolve a disputed case if an attempt is made to manipulate the range of agent's commission directly through code, or otherwise. 1% - 3% of the agreed amount stated in the contract terms and locked in the contract is sent to the agent's wallet address for a contract dispute resolution.
For example, if the agent (Agent) attempts to release from the contract 10 or 15 tokens (that exceeds the allowed 1 - 3 tokens, as the agent's fee).
Error e011 - Agreed amount must be released from the contract in full.
In order for an escrow smart contract to be executed, the amount of tokens locked up there must be fully released. This also means that the total percentage of tokens released from the escrow contract must be equal to 100% of the agreed amount stated in the contract terms.
Error e011 is seen by the agent (Agent) whenever the agent attempts to release less tokens than the agreed amount in the disputed contract (intentionally, or by mistake).
Error e012 - Only buyer (Contractee) or seller (Contractor) can perform this contract action.
If a neutral third party, an agent (Agent) attempts to request any action, which is not specifically authorized for, error e012 occurs. From the above table with authorized escrow user requests, the agent (Agent) is authorized to "release" the agreed amount from the contract only after either a buyer (Contractee) or a seller (Contractor) invites an agent to resolve a disputed case.
In case of any other action, the request made by the agent is considered unauthorized (not permitted) and returns error e012.
Error e013 - The contract must be in deployed state.
The user(s) will see error e013 when attempting to perform unauthorized request for a contract that is in any state other than than the required deployed state. The escrow contract is given the deployed state once it has been deployed (published) to the blockchain.
For example, the seller has sent the request to confirm the contract completion while the contract is in the disputed or executed state. The request may be sent accidentally (due to technical issues or user error) or as a result of malicious attempt.
User errors associated with the contract state indicate that the user is authorized (allowed) to perform the request but the current state of the escrow contract does not allow to process the user request successfully.
It also indicates when the action requested can be performed (a.i. "The contract must be in fulfilled state" or "The contract must be in disputed state.").
Error e014 - The contract must be in fulfilled state.
The error e014 is displayed when the user(s) sends accidental (due to technical issues or user error) or intentional request to the contract to perform unauthorized (not allowed) action that do not correspond to the current state of the escrow contract.
One of such situations is if the seller attempts to request the release of agreed amount before confirming contract fulfillment.
Error e015 - The contract must be in disputed state.
In order for a buyer (Contractee) or a seller (Contractor) to "Invite an Agent" to review their claims and resolve them, the contract must in disputed state.
For all other states (deployed, fulfilled, etc.) the user requesting the agent's assistance receives "Error e015" response.
Error e016 - The contract has to be in disputed state with the agent invited.
The user request returns e016 error when the requested contract action is only allowed for contracts in disputed state when the agent has been invited. At the same time, the user is authorized to request a specific contract action and only the current state of the contract prevents from performing it.
For example, this error can occur when the agent requests to release the amount from the contract before being invited. In this case, the agent is authorized to release the amount from the contract but only in disputed contracts, when either a buyer (Contractee) or seller (Contractor) specifically invites the agent (Agent) to resolve the contract claims and disburse the amount locked in the contract.
Error e017 - The contract must be in deployed, fulfilled, or disputed state.
Similar to other errors associated with the contract state, error e017 is returned when the requested action is only allowed for contracts in deployed, fulfilled, or disputed state (without agent invited). That said the user sending the request is authorized to perform the contract action. Thus, once the contract state conditions are met, the request will be successfully processed.
For example, if buyer (Contractee) or seller (Contractor) attempts to release agreed amount from the contract (accidentally, due to technical issues or user errors, or with malicious intent) for the disputed contract after inviting the agent (Agent).
Both buyer and seller are authorized (under specific conditions) to release amount from the contract, but only when the contract is in the deployed, fulfilled, or disputed state.
Error e018 - The contract must be either in deployed or fulfilled state.
Just like the other errors associated with the contract state, error e018 indicates that the current state of the escrow contract does not allow the requested action to be successfully processed, and return the requested results. It indicates that the user has the right to request this specific contract action, but only when the contract is in the deployed or fulfilled state.
One example of such a situation is when a buyer (Contractee) requests (whether intentionally or accidentally) a dispute when the contract already is in the disputed or executed state.
Last updated