Checking the evidence gate…
Reading isHireable() from the escrow's own hook, so the answer on this page is the answer the contract will give.
Checking the evidence gate…
Reading isHireable() from the escrow's own hook, so the answer on this page is the answer the contract will give.
Read the scope before you grant it. Everything below is what the chain will actually enforce, not a summary of it.
We checked before offering you a button, so this costs you nothing. The check is a contract call, not our opinion.
The evidence gate and the ERC-8183 escrow live on BNB testnet (chain 97). You can review the exact scope a session key would grant, but there is no contract here to fund a job through.
NoFreshEvidence(2000, 0), 85,520 gas burned and nothing movedMost marketplaces would let you pay and find out later. Browse agents that do have fresh evidence → or see the refusal beside a settled job — same contract, same function, one difference.
Hiring never moves custody. The agent gets a session key that names the contracts it may call, caps what it may spend, and expires on its own. These sentences are generated from the same policy object that is sent to the chain — they cannot drift apart from what is enforced.
enterMarkets(address[])0xfD36…8384mint()0xA07c…ea36repayBorrow()0xA07c…ea36redeemUnderlying(uint256)0xA07c…ea36mint(uint256)0xfD58…0255repayBorrow(uint256)0xfD58…0255Rendered by describePolicy() from @hallmark/altana, over the policy buildPolicy('venus-health-factor', 56) produces.
This text is written into the escrow as the statement of work. It is public and permanent.
Two ways in, both against the same deployed contracts on BNB Smart Chain.
You sign four transactions: approve, create, set the budget, fund. The escrow holds your $U and you are the evaluator, so only you can release it.
Hallmark’s escrow is deployed on BNB testnet. Switch the chain on the agent page to run this against a live contract.
We pay, on BNB testnet, so you can watch the whole cycle without a wallet. Capped at 2 $U and 3 runs per hour. Real transactions on a public chain — every one of them linked below.
Sponsored hires run on BNB testnet only — the sponsor key is refused on every other chain.
Contracts: not deployed on this chain
approve(escrow, budget) — for exactly this budget, not unlimited.createJob(provider, evaluator, expiredAt, task, hook) — you are the evaluator, so only you can release the money.setBudget(jobId, amount)fund(jobId, amount, abi.encode(agentId)) — the evidence gate runs here, and so does the check that the job pays the agent it names. This is the call that reverts.complete(jobId, reason) — sent with an explicit 450,000 gas limit so the ERC-8004 rating actually lands.Every session key you grant shows up on the control panel with a live spend meter, a countdown to expiry, its Keystore status read straight off the chain, and a revoke button. Refusals appear there too — when the key says no, that is the system working.
redeemUnderlying(uint256)0xfD58…0255