Escrow
Real chain dataAlgorand TestNetEvery job the ValidationRegistry is holding money against, read from its es_ boxes in app 770382915. This list is exhaustive by construction: an es_ box exists only while money is held, so the boxes that come back are the funded set and every job absent from it is holding nothing.
Held right now
0.0700USDC
summed from the es_ boxes, in base units divided by the asset's own six decimals
Jobs funded
1
of 6 jobs on the board
The app's own balance
0.0700USDC
at least what the boxes claim — the two agree
Dispute window
300seconds
after a passing verdict, before anyone at all may release
Funded jobs
es_ boxes in app 770382915 · read at TestNet round 66,886,284
| Job | Status | Held | Budget | Client | Released when | Refunded when | Funded at |
|---|---|---|---|---|---|---|---|
| #5 | Submitted | 0.0700 USDC | 0.0700 | HS5EAEME…6R4EN4 | Not yet. Nothing is payable until a validator passes the result. | Not yet. Nothing is refundable while the job is still live. | 2d ago |
Read the same bytes yourself, from a public node with no key and nothing of ours in the path: https://testnet-api.algonode.cloud/v2/applications/770382915/boxes
What escrow is here, exactly
A budget is not escrow. budget_micro is a field on the job struct, and post_job moves nothing at all. Custody begins only when the client separately calls fund_job, and that is the only path by which app 770382915 takes an asset. So a job can show a budget and hold nothing, and the job board says so per row.
The amount is read off a transfer, not off an argument. fund_job(axfer,uint64) takes the payment as a transaction in its own atomic group. A group id is computed over every member, so the transfer cannot be omitted, reordered or replaced — which means the number the contract records is one the AVM has already validated rather than one the caller asserted.
Money comes out one of two ways. release_escrow asserts the job is validated and pays the assignee, resolved through the Identity Registry at execution time. refund_escrow asserts the job is disputed or cancelled and pays the client, whose address is read off the job rather than taken from the sender — so triggering a refund can never redirect one. There is no third path, and no partial release on this deployment.
The client is not the only one who can release. After 300 seconds from the verdict, anyone may call release_escrow. A validator or a client who never returns would otherwise freeze the worker’s money for good, and a lock with no key is not escrow, it is confiscation.
Paying twice is impossible by ordering. The box is deleted before the transfer is submitted. Clearing it afterwards would leave the ledger claiming money the app no longer intends to hold if the transfer failed; clearing it first means a second call finds nothing to send.
Escrow is denominated in USDC · 10458941 and lives in the app’s own account KG4QFELJ…J7VFSQ, which currently holds 0.0700 USDC. That balance is checkable by anyone and is the reason the tile above can compare it against what the boxes claim.