<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Baris Sozen</title>
    <description>The latest articles on DEV Community by Baris Sozen (@barissozen).</description>
    <link>https://dev.to/barissozen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3886649%2F9be9b0dd-c43e-44d1-ac2b-0c90ea682dea.jpeg</url>
      <title>DEV Community: Baris Sozen</title>
      <link>https://dev.to/barissozen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/barissozen"/>
    <language>en</language>
    <item>
      <title>Atomic settlement is not just for tokens: shipping compute-capacity MCP tools this week</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Fri, 29 May 2026 06:11:13 +0000</pubDate>
      <link>https://dev.to/barissozen/atomic-settlement-is-not-just-for-tokens-shipping-compute-capacity-mcp-tools-this-week-4og5</link>
      <guid>https://dev.to/barissozen/atomic-settlement-is-not-just-for-tokens-shipping-compute-capacity-mcp-tools-this-week-4og5</guid>
      <description>&lt;p&gt;An agent that cannot pay for its own compute is a stranded asset. It can reason; it cannot continue reasoning. That sentence sounds glib until you start wiring an autonomous agent and realise the boring constraint underneath every interesting behaviour is the same: &lt;em&gt;can this agent acquire the next block of compute it needs, on its own, without a human in the loop?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This week, two PRs in &lt;code&gt;hashlock-mcp&lt;/code&gt; merged that take a small but meaningful step toward that constraint becoming first-class on our MCP surface. This is a product update, not a manifesto. The point is to write down exactly what shipped, what the mechanism is, and what it lets an agent do that it could not do on Monday.&lt;/p&gt;

&lt;h2&gt;
  
  
  What shipped
&lt;/h2&gt;

&lt;p&gt;Two PRs in &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;Hashlock-Tech/hashlock-mcp&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PR #8&lt;/strong&gt; (&lt;code&gt;feat(compute): MCP create_compute_capacity_listing tool (PR2.1b)&lt;/code&gt;) — merged 2026-05-26.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PR #9&lt;/strong&gt; (&lt;code&gt;feat/compute-pr2.2-mcp-tool&lt;/code&gt;) — merged 2026-05-27.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together they introduce a tool path on the MCP server for treating a block of compute — GPU hours, inference credits, model-access windows, whatever the provider chooses to denominate — as something an agent can &lt;em&gt;list, discover, and settle against&lt;/em&gt; using the same primitive the server already uses for token swaps. The effective MCP tool count on the server moves from six to eight.&lt;/p&gt;

&lt;p&gt;The npm package &lt;code&gt;@hashlock-tech/mcp&lt;/code&gt; is still sitting at &lt;code&gt;0.4.0&lt;/code&gt; as I write this — the new tool surface is in the repo and live in the running server; the version cut to publish those tools downstream is the next step in our release pipeline this week. We are being deliberate about not bumping the published package version until the tool docs and examples land in &lt;code&gt;/docs&lt;/code&gt; together. If you are tracking the version, that is why it has been sticky.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why compute is the obvious next thing to settle atomically
&lt;/h2&gt;

&lt;p&gt;The honest framing: there is nothing magical about &lt;em&gt;tokens&lt;/em&gt; that makes them the canonical thing two agents exchange. Tokens are well-defined, transferrable on-chain, and easy to lock. That is why every cross-chain settlement primitive in existence — bridges, intent protocols, atomic swaps — started with token-for-token.&lt;/p&gt;

&lt;p&gt;But if you ask what an autonomous agent actually consumes in order to act in the world, the list is short and tokens are not at the top of it. The list is &lt;em&gt;compute, data, model access, and storage&lt;/em&gt;. The thing an agent runs out of first is usually not money; it is the resource that money was a placeholder for.&lt;/p&gt;

&lt;p&gt;A few specific examples to make this concrete.&lt;/p&gt;

&lt;p&gt;A research agent has a budget in USDC and a long-running task that needs a few hours of GPU time. The agent does not want to open an account at a cloud provider, hold a credit card on file, and sign a usage agreement. It wants to &lt;em&gt;spot-buy a block of GPU hours&lt;/em&gt; from whoever is offering them right now, settle atomically, get a credential it can use, and move on.&lt;/p&gt;

&lt;p&gt;An inference-routing agent picks between model providers per call. Today it does this through pre-paid accounts at each provider, which means it carries N counterparty exposures and N reconciliation problems. With atomic settlement of &lt;em&gt;inference credits&lt;/em&gt;, it can buy a small block from a provider at the moment of use, with the same trust-minimised guarantee a token swap gives it: pay and receive, or nothing happens.&lt;/p&gt;

&lt;p&gt;A training agent has spare capacity on a machine it controls and wants to sell that capacity into the open market when it is idle. Today this requires a custodial marketplace that takes a cut and holds both sides' assets between match and settle. With an atomic settlement primitive, the seller posts an HTLC-keyed listing, the buyer locks payment on the other side, both legs resolve or neither does, and no marketplace ever touches either asset.&lt;/p&gt;

&lt;p&gt;These are not exotic flows. They are what an agent doing useful work is going to need to do thousands of times. The settlement primitive that already works for tokens is, by construction, also the right primitive for compute — because the primitive does not care what the leg is denominated in, only that both legs have a hash, a timelock, and a refund path.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mechanism, written out
&lt;/h2&gt;

&lt;p&gt;The shape of a compute-capacity settlement using the new MCP tools is structurally identical to a token settlement. The reason we are excited about this week's PRs is precisely that &lt;em&gt;it did not need to be a new primitive&lt;/em&gt;. The same HTLC + sealed-bid RFQ flow does the job; we are just extending what the listing leg is allowed to describe.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Provider lists capacity.&lt;/strong&gt; The provider calls &lt;code&gt;create_compute_capacity_listing&lt;/code&gt; and describes what they are offering: a quantity of compute (a unit the provider defines — e.g. &lt;em&gt;N GPU-hours of class X&lt;/em&gt;, &lt;em&gt;N inference calls against model Y&lt;/em&gt;, &lt;em&gt;N storage-GB-months&lt;/em&gt;), a price denominated in some chain-native asset, a delivery commitment (how the credential is handed over once settlement clears), and a timelock window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consumer agent discovers and quotes.&lt;/strong&gt; The same RFQ discovery path that already exists for token pairs returns capacity listings. The consumer agent inspects them, picks one, and submits a sealed bid against it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Both sides lock.&lt;/strong&gt; The consumer locks payment in an HTLC on its chain, keyed to a hash &lt;code&gt;h&lt;/code&gt;. The provider, having seen the consumer's lock with matching hash, amount, and timelock, locks the credential commitment in a corresponding HTLC on the chain where the credential will be claimed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atomic settle or refund.&lt;/strong&gt; The consumer reveals the preimage of &lt;code&gt;h&lt;/code&gt; to claim the credential. That same preimage, now public, lets the provider claim payment. If anything stalls — bad lock, missing reveal, expired timelock — both sides refund. No third party ever held either asset.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The asymmetry to be honest about: the &lt;em&gt;credential&lt;/em&gt; leg of a compute trade is not as clean as a token leg. A token, once transferred, is unambiguously yours. A credential — an API key, an access token, a signed authorisation — is a &lt;em&gt;capability&lt;/em&gt;. The provider has to commit to honouring it after the preimage is revealed, and the consumer has to be able to verify the credential is what it says it is. We handle this today by binding the credential cryptographically into the HTLC commit so that revealing the preimage reveals the credential, and by requiring the provider to publish a verifiable specification of what the credential entitles the holder to before any consumer locks against it.&lt;/p&gt;

&lt;p&gt;This is the part of the design we are most actively iterating on, and the part where the next PRs after #8 and #9 will land. We would rather state that plainly than oversell.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest chain status
&lt;/h2&gt;

&lt;p&gt;The chain-status section every Hashlock post carries, exactly as it ought to read this week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ethereum mainnet&lt;/strong&gt; is live end-to-end today. Token settlement and now compute-capacity listings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bitcoin HTLC&lt;/strong&gt; is signet-validated, mainnet pending. Compute-capacity listings priced in BTC therefore work on signet and not yet on mainnet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sui contracts&lt;/strong&gt; are deployed and CLI-tested, with gateway wiring in progress. The compute-capacity tool path is plumbed through the same gateway; capacity listings on Sui follow the gateway timeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roadmap&lt;/strong&gt; still names Base, Arbitrum, Solana, TON.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm &lt;code&gt;@hashlock-tech/mcp&lt;/code&gt;&lt;/strong&gt; is at &lt;code&gt;0.4.0&lt;/code&gt; (sticky since 19 May); the new tool surface is live on the server, the package version bump to ship those tools downstream is the next pipeline step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MCP server is &lt;code&gt;hashlock-tech/mcp&lt;/code&gt; (scoped). The MCP — Model Context Protocol — is the open protocol &lt;a href="https://www.anthropic.com/news/model-context-protocol" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt; introduced for connecting models to external systems; it is the contract our six (now eight) tools speak.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this lets an agent do that it could not do on Monday
&lt;/h2&gt;

&lt;p&gt;Two specific things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It lets an agent treat compute as a thing it trades, not a service it subscribes to.&lt;/strong&gt; The mental model shifts from "I have accounts at three providers" to "there is a market in GPU-hours, I check the depth, I lock and settle when the price is right." That changes what an agent can plan, because it can hold a budget in tokens and convert to compute &lt;em&gt;at the moment of use&lt;/em&gt;, not in advance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It lets the providers selling that compute do so without a custodial marketplace in the middle.&lt;/strong&gt; A small lab with spare GPU capacity can list it. A specialised model host can sell direct access. There is no platform fee for the matching, because the matching is the MCP server's discovery surface, and there is no float held between match and settle, because settlement is atomic on both legs.&lt;/p&gt;

&lt;p&gt;We do not yet have an agent in production buying compute via these tools — the listing tool merged two days ago. What we have is the primitive, and the open question of who is going to use it first. If you are building an agent that runs into the compute-acquisition problem in the way we described above, we would like to hear from you in the comments — both what is missing in the current tool surface and what would make this a path you would actually wire your agent to.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to read
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Code: &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;&lt;code&gt;Hashlock-Tech/hashlock-mcp&lt;/code&gt;&lt;/a&gt;, specifically the PR #8 and PR #9 diffs for the new tool.&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/@hashlock-tech/mcp" rel="noopener noreferrer"&gt;&lt;code&gt;@hashlock-tech/mcp&lt;/code&gt;&lt;/a&gt; (scoped).&lt;/li&gt;
&lt;li&gt;Tool docs: &lt;a href="https://hashlock.markets/docs?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026-05-29-compute-capacity-mcp-tools" rel="noopener noreferrer"&gt;hashlock.markets/docs&lt;/a&gt; — compute-capacity tool reference lands here as the docs publish.&lt;/li&gt;
&lt;li&gt;Methodology: &lt;a href="https://hashlock.markets/methodology?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026-05-29-compute-capacity-mcp-tools" rel="noopener noreferrer"&gt;hashlock.markets/methodology&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Whitepaper (SSRN): &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;the underlying mechanism design&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;We are interested in the part we cannot answer from the protocol side: if your agent could spot-buy a block of compute from another agent, atomically settled, with no custodian and no platform in between — &lt;em&gt;what would it spend on first?&lt;/em&gt; GPU hours for a training run? Inference credits for a model you do not have a contract with? Something we have not thought of?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Custodial vs trust-minimized: two settlement layers for the agent economy</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Thu, 28 May 2026 06:11:55 +0000</pubDate>
      <link>https://dev.to/barissozen/custodial-vs-trust-minimized-two-settlement-layers-for-the-agent-economy-18ep</link>
      <guid>https://dev.to/barissozen/custodial-vs-trust-minimized-two-settlement-layers-for-the-agent-economy-18ep</guid>
      <description>&lt;p&gt;"Settlement layer for the agent economy" is suddenly a crowded sentence.&lt;/p&gt;

&lt;p&gt;In the last few weeks, two very different things have started competing for it. OKX Agent Payments Protocol (APP) announced in May 2026 — backed by AWS, Alibaba Cloud, Uniswap, Paxos, QuickNode, with ecosystem support from Base, Ethereum Foundation, Solana, Sui, Aptos, Optimism — describes itself as the settlement layer where AI agents pay each other. AEON's $8M pre-seed (May 20, YZi Labs) described itself the same way. There is a list now, and it is getting longer.&lt;/p&gt;

&lt;p&gt;We build one of the things on this list, and we think the framing is wrong. These are not rivals jostling for the same slot. They are two different layers, and they answer two different versions of the same question: &lt;em&gt;what does an agent need to settle a trade?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This piece walks through the two layers, where each is the right answer, and why an honest comparison gets you further than picking sides.&lt;/p&gt;

&lt;h2&gt;
  
  
  What APP and other custodial-venue protocols actually do
&lt;/h2&gt;

&lt;p&gt;A useful way to read OKX APP — and similar moves coming from the larger exchanges — is to treat them as a &lt;em&gt;venue layer&lt;/em&gt;. An exchange already holds inventory across many chains. It already has the risk engines, the liquidity, the legal arrangements with banks and partners. Adding an agent-facing API on top of that machinery is a relatively short walk.&lt;/p&gt;

&lt;p&gt;What an agent gets, in exchange, is breadth. Many chains, many assets, batched and netted settlement against deep internal books, and fast execution because the exchange is just moving entries in its own ledger. For an agent whose job is "find a price somewhere and execute now," that is a powerful primitive.&lt;/p&gt;

&lt;p&gt;What the agent gives up, in exchange, is a counterparty. At any moment between deposit and withdrawal, the agent's balance is the venue's &lt;em&gt;promise&lt;/em&gt; to pay. That promise is normally good. The agent has no way to verify, from inside its own logic, that it still is.&lt;/p&gt;

&lt;p&gt;This is not a criticism of OKX APP. It is the structural shape of any venue-mediated settlement layer: the venue is broad because it is in the middle, and it is in the middle because you trusted it to be. That is the deal — you knew you were making it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What trust-minimized atomic settlement does
&lt;/h2&gt;

&lt;p&gt;We make the other thing on the list — the &lt;em&gt;primitive layer&lt;/em&gt;. Hashlock is sealed-bid RFQ fused with HTLC atomic settlement. No bridge, no custodian, no wrapped asset.&lt;/p&gt;

&lt;p&gt;The mechanism, briefly, so the comparison is concrete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Two agents agree on a swap. Maker locks asset A on chain X inside an HTLC keyed to a hash &lt;code&gt;h&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Taker locks asset B on chain Y, keyed to the same &lt;code&gt;h&lt;/code&gt;. Taker only locks once they have seen maker's lock on chain X, with the same &lt;code&gt;h&lt;/code&gt;, the same amount, and a timelock long enough.&lt;/li&gt;
&lt;li&gt;Either taker reveals the preimage of &lt;code&gt;h&lt;/code&gt; to claim asset A on chain X, which atomically lets maker use the same preimage to claim asset B on chain Y — both halves of the trade settle, or neither does.&lt;/li&gt;
&lt;li&gt;If anything stalls, the timelocks refund both sides.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no point in the flow at which a third party holds either asset. The assets stay native: BTC stays on Bitcoin, ETH stays on Ethereum. The only thing that crosses chains is a hash.&lt;/p&gt;

&lt;p&gt;The honest chain status, written exactly: Ethereum mainnet is live end-to-end today. Bitcoin HTLC is signet-validated, mainnet pending. Sui contracts are deployed and CLI-tested, gateway wiring is in progress. Roadmap: Base, Arbitrum, Solana, TON. The MCP server &lt;code&gt;hashlock-tech/mcp&lt;/code&gt; (scoped) ships six tools an agent can call to discover pairs, request quotes, settle, and refund.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two different agent-trust problems
&lt;/h2&gt;

&lt;p&gt;If you look at the two architectures side by side, they answer two different questions an agent has to answer before it can transact.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question 1 — "Whom am I trusting, and how much?"&lt;/strong&gt; A custodial venue layer answers this clearly: you are trusting &lt;em&gt;this exchange&lt;/em&gt;, for the size of your inventory there, until you withdraw. If your agent is comfortable with that bound, the venue layer is the right tool. It will be faster and broader than anything trust-minimized for a long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question 2 — "Can I trade with a counterparty I don't trust at all?"&lt;/strong&gt; A trust-minimized atomic settlement layer answers this clearly: yes, because no one holds either side's asset until the other side's asset has been claimed in the same atomic step. The agent does not have to trust the counterparty &lt;em&gt;or&lt;/em&gt; a venue between them. It has to trust the math of a hash, and the timelocks it set.&lt;/p&gt;

&lt;p&gt;That is the actual distinction. Not "centralized vs decentralized" — that argument is decades old and produces more heat than insight. The distinction is: &lt;em&gt;who is the agent trusting, and over what window?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why both layers exist at the same time
&lt;/h2&gt;

&lt;p&gt;A useful analogy. In traditional finance, an institution can settle by sending money to a clearing member who clears it onward, or it can settle DvP — delivery versus payment, atomic, no intermediary holds both legs at once. Both exist. Both are correct for different trades. No one writes posts asking which one is "the" settlement layer because the answer is plainly "the one that fits the trade."&lt;/p&gt;

&lt;p&gt;The same thing is happening here, just with the labels still being settled. A custodial venue layer is good for high-frequency, in-venue, in-inventory trading where the agent's risk to the venue is bounded and short. A trust-minimized settlement layer is good for cross-chain, cross-counterparty, native-asset trades where the agent is not allowed (or unwilling) to take on venue counterparty risk.&lt;/p&gt;

&lt;p&gt;The agent economy will need both. It will also need the layers underneath and around them — agent identity (ERC-8004), payment plumbing (x402), trust/intent (Google AP2, ACP). What you do not want is one of these layers to colonize the others by overloading the word "settlement."&lt;/p&gt;

&lt;h2&gt;
  
  
  What we'd flag if you're picking a layer
&lt;/h2&gt;

&lt;p&gt;For people who actually have to choose — building an agent, integrating one — three concrete things to look for.&lt;/p&gt;

&lt;p&gt;First, &lt;strong&gt;what is the asset, at the moment of settlement?&lt;/strong&gt; Inside a custodial venue, it is the venue's promise to pay. Inside an HTLC swap, it is the asset itself, on its own chain, controlled by the agent's key. Two different things, both reasonable, depending on what your agent is doing.&lt;/p&gt;

&lt;p&gt;Second, &lt;strong&gt;what failure modes are atomic, and which are graceful?&lt;/strong&gt; Custodial venues handle most failure modes gracefully — pause, requeue, refund, customer support — but the hard failure (the venue itself) is not graceful at all; it is total. Trust-minimized swaps have ungraceful soft failures (timelock expires, capital idle for a window) but the hard failure (asset stolen) is structurally absent.&lt;/p&gt;

&lt;p&gt;Third, &lt;strong&gt;how does the layer compose?&lt;/strong&gt; A venue layer is hard to compose with — you are mostly making API calls into a single counterparty. A primitive layer is easier to compose with — an agent can put atomic settlement under another layer's payment intent (for instance, an x402-style HTTP payment can resolve to an HTLC swap underneath), or wrap multi-leg trades around it.&lt;/p&gt;

&lt;p&gt;None of this requires the layers to fight. The honest read is that a fleet of agents will use a custodial venue when the trade is in-inventory, and a trust-minimized primitive when the trade is cross-chain, cross-counterparty, or worth more than the agent's trust budget for any single venue. That is also how human traders use the same options today.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this leaves us
&lt;/h2&gt;

&lt;p&gt;We are happy that "settlement layer for the agent economy" is a sentence people are writing. We are less happy that it is being used for two things at once without flagging which one.&lt;/p&gt;

&lt;p&gt;If the answer to &lt;em&gt;what is the agent holding at settlement?&lt;/em&gt; is "the venue's promise to pay," you are looking at a custodial venue layer — and OKX APP is a serious example of that. If the answer is "the asset itself, on its own chain, atomically swapped against the other leg," you are looking at a trust-minimized primitive layer. The two are complementary; both will exist; agents will pick between them per trade.&lt;/p&gt;

&lt;p&gt;That is a healthier conversation than crowning a single "settlement layer."&lt;/p&gt;

&lt;p&gt;Reading and code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hashlock.markets/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026-05-28-okx-app-vs-trust-min" rel="noopener noreferrer"&gt;https://hashlock.markets/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026-05-28-okx-app-vs-trust-min&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;npm: &lt;code&gt;@hashlock-tech/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;GitHub: &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Methodology: &lt;a href="https://hashlock.markets/methodology/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026-05-28-okx-app-vs-trust-min" rel="noopener noreferrer"&gt;https://hashlock.markets/methodology/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=2026-05-28-okx-app-vs-trust-min&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Whitepaper (SSRN): &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A real question for builders: which question is your agent actually trying to answer with "settlement" — &lt;em&gt;who do I trust, and how much&lt;/em&gt;, or &lt;em&gt;can I trade with someone I don't trust at all&lt;/em&gt;? Different answers should pick different layers.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Atomic settlement guarantees your agent won't be robbed. It says nothing about who trades well with it.</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Wed, 27 May 2026 06:09:06 +0000</pubDate>
      <link>https://dev.to/barissozen/atomic-settlement-guarantees-your-agent-wont-be-robbed-it-says-nothing-about-who-trades-well-with-817</link>
      <guid>https://dev.to/barissozen/atomic-settlement-guarantees-your-agent-wont-be-robbed-it-says-nothing-about-who-trades-well-with-817</guid>
      <description>&lt;p&gt;Trustless settlement has a clean promise. When two agents settle through a hash-time-locked contract, either both legs of the trade complete or both refund. There is no path where one side walks away with the other's funds. Counterparty risk — the risk that the entity on the other side of your trade fails to deliver — is removed by construction, not by reputation.&lt;/p&gt;

&lt;p&gt;That is real, and it matters. But it is worth being precise about what it does and does not cover, because the gap is where most of the work in an agent market actually lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two kinds of failure
&lt;/h2&gt;

&lt;p&gt;Settlement atomicity solves exactly one failure: the hard failure. Your counterparty takes your money and disappears. In an atomic settlement, that outcome is unreachable — the preimage either resolves both legs or neither.&lt;/p&gt;

&lt;p&gt;A market has a second kind of failure, and atomicity does nothing about it. Call it the soft failure. Your counterparty does not rob you — they just trade badly with you. They quote you a price eight basis points wide when the rest of the field is at two. They respond to your RFQ and then leave the HTLC untouched until it times out, so you get your funds back, but only after your capital sat locked and idle for the full timeout window. They accept one leg of a multi-step trade and then stall on the leg you needed to clear fast.&lt;/p&gt;

&lt;p&gt;Nothing here is theft. Every one of these degrades the market anyway, and an agent transacting thousands of times has no human noticing the pattern.&lt;/p&gt;

&lt;p&gt;A human trader handles soft failures with memory. You remember the desk that always quotes wide. You stop calling the counterparty that ghosted you last quarter. That memory is a reputation system running quietly in a person's head. An autonomous agent has no such thing — unless the protocol gives it one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atomicity is necessary, not sufficient
&lt;/h2&gt;

&lt;p&gt;This is the part the "trustless" framing tends to skip. Removing counterparty risk is necessary for an agent market — without it, agents cannot transact with strangers at all. But it is not sufficient for a &lt;em&gt;good&lt;/em&gt; agent market. A market where you cannot be robbed, but every counterparty quotes wide and half of them ghost, is technically trustless and practically unusable.&lt;/p&gt;

&lt;p&gt;So a settlement layer built for agents has to answer a second question, separate from "how do we make settlement safe": how does the market reward the counterparties that execute well, and steer flow away from the ones that do not — without a central operator deciding who is good?&lt;/p&gt;

&lt;p&gt;We think the answer has two parts, and they are designed to work together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part one: price execution quality directly
&lt;/h2&gt;

&lt;p&gt;The first part is what we call execution rewards. The idea is to measure execution quality from the settlement record itself — which is objective, on-chain, and unforgeable — and let that measurement feed back into the terms a counterparty gets.&lt;/p&gt;

&lt;p&gt;The settlement layer already sees everything needed. It sees whether a responder's quote was competitive against the rest of the sealed-bid field. It sees whether a committed leg settled on the fast path or was left to time out. It sees whether a counterparty completes the legs of a multi-step trade in the order and window they agreed to. None of this needs a survey or a star rating — it is all already in the record of what the agent actually did.&lt;/p&gt;

&lt;p&gt;Execution rewards turn that record into a price. A counterparty with a clean settlement history — tight quotes, fast-path completions, no abandoned legs — earns better standing: priority in RFQ matching, lower protocol fees on the next trade, access to larger size. A counterparty that consistently quotes wide or lets locks expire earns the opposite. The reward is not a token airdrop or a loyalty scheme. It is the market repricing access based on what an agent has verifiably done.&lt;/p&gt;

&lt;p&gt;The important property: this is not a trust input. It is a behavior output. Nobody vouches for a counterparty. The settlement history vouches, or it does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part two: make identity a dial, not a gate
&lt;/h2&gt;

&lt;p&gt;The second part is harder, and it is where most settlement systems pick a bad extreme.&lt;/p&gt;

&lt;p&gt;One extreme is KYC everyone. Every agent verifies a legal identity before it can trade at all. This is the custodial-exchange model, and it quietly kills the thing that makes an agent economy interesting: an agent spun up this morning, with no paperwork and no human in the loop, can do nothing. The permissionless property is gone.&lt;/p&gt;

&lt;p&gt;The other extreme is KYC no one. Pure pseudonymity. This is clean, but it means an agent has no way to ever reach the parts of a market that genuinely require a known counterparty — larger sizes, regulated venues, institutional flow — and no counterparty has any recourse beyond the collateral in front of it.&lt;/p&gt;

&lt;p&gt;Tiered KYC is the deliberate middle. Identity is not a gate you pass once. It is a dial. An agent can trade fully pseudonymously — and when it does, the protocol asks for more: more collateral posted against each obligation, smaller maximum size, shorter timeout windows. The pseudonymous agent is not excluded; it is &lt;em&gt;priced&lt;/em&gt;. As an agent verifies more — a persistent on-chain identity, a staked bond, a legal entity behind it — the dial moves: collateral requirements fall, size limits rise, and a wider set of counterparties become reachable.&lt;/p&gt;

&lt;p&gt;The reframe that makes this work: identity becomes a form of collateral. A pseudonymous agent backs its trades with capital. A verified agent backs some of that with identity instead. Neither is forced; each agent picks the point on the dial that fits what it is trying to do. A high-frequency micro-trade agent may rationally stay fully anonymous and over-collateralize. An agent moving institutional size will verify, because the better terms are worth it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the two parts need each other
&lt;/h2&gt;

&lt;p&gt;Execution rewards without tiered identity have a Sybil problem: a counterparty that earns a bad settlement history just discards the identity and spins up a fresh one. Tiered KYC is what gives execution history something to attach to — a bad history has a cost only if starting over also has a cost.&lt;/p&gt;

&lt;p&gt;Tiered KYC without execution rewards is just a credential check: it tells you an agent verified something, not that it trades well. A verified agent can still quote wide and ghost.&lt;/p&gt;

&lt;p&gt;Together they form one system. Execution rewards measure behavior; tiered identity makes that measurement stick and graduates how much the market is willing to expose to a given counterparty. Atomic settlement sits underneath both, guaranteeing that whatever terms two agents agree to, the settlement itself cannot be the thing that fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest status
&lt;/h2&gt;

&lt;p&gt;This is design, and it deserves a straight status report rather than a confident one. Atomic HTLC settlement is live end-to-end on Ethereum mainnet today. The Bitcoin hash-time-lock construction is validated on signet, with mainnet pending; the Sui contracts are deployed and CLI-tested, with gateway wiring in progress. Execution rewards and tiered KYC are part of the protocol design we are building toward — the settlement primitive they sit on top of is the part that is live. We would rather state that plainly than blur the line between what runs today and what is designed.&lt;/p&gt;

&lt;p&gt;For an agent, none of this should be hand-managed. Reading a counterparty's settlement standing, choosing where to sit on the identity dial, deciding whether better terms justify verifying — that belongs behind a tool call. Our MCP server (hashlock-tech/mcp, scoped — six tools) is the surface where an agent reasons about those decisions rather than the mechanics underneath them. MCP is the open protocol Anthropic introduced for connecting models to external systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;The trustless framing answers "can my agent be robbed." It is the wrong question to stop on. The question a builder should actually be asking is the second one: in the market your agent trades in, what happens to the counterparty that executes badly but never technically defaults — and if the answer is "nothing," how is your agent supposed to tell a good counterparty from a bad one?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Hashlock Markets — atomic settlement for the agent economy. Sealed-bid RFQ + HTLC settlement, fused into one operation. No bridges, no custodians.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol: &lt;a href="https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-27-execution-rewards" rel="noopener noreferrer"&gt;https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-27-execution-rewards&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP server (source): &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The underlying mechanism design is written up in a working paper on SSRN: &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Your trading agent doesn't own Bitcoin. It owns a promise.</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Tue, 26 May 2026 06:09:31 +0000</pubDate>
      <link>https://dev.to/barissozen/your-trading-agent-doesnt-own-bitcoin-it-owns-a-promise-22lc</link>
      <guid>https://dev.to/barissozen/your-trading-agent-doesnt-own-bitcoin-it-owns-a-promise-22lc</guid>
      <description>&lt;p&gt;Ask a trading agent what it holds and it will give you a clean answer: Bitcoin, dollars, some treasuries. Then read the actual wallet. What you find is a wrapped token, a bridged stablecoin, a tokenized note. None of those things are the asset. Each one is a promise that the asset exists somewhere else, in someone else's custody, and that the someone will honor the claim when asked.&lt;/p&gt;

&lt;p&gt;That gap — between what an agent reports holding and what it actually holds — is small enough to ignore right up until it isn't. It is worth looking at directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a wrapper actually is
&lt;/h2&gt;

&lt;p&gt;Take wrapped Bitcoin, the most familiar case. Bitcoin the chain cannot run the contract logic that most trading venues need, so to "use BTC" somewhere else you wrap it: you hand the real Bitcoin to a custodian, and the custodian mints a token on the destination chain that represents a claim on it. The token moves and trades freely. The real coins sit still, in the custodian's keys.&lt;/p&gt;

&lt;p&gt;This is convenient, and it is everywhere. It is also a quiet swap of one kind of thing for another. Native Bitcoin is a bearer asset: holding the key &lt;em&gt;is&lt;/em&gt; ownership, with no one else in the loop. A wrapped token is a claim against an intermediary. The token is worth what the asset is worth only as long as the institution behind it stays solvent, stays honest, and stays in business. The moment that stops being true, the token is worth whatever the market thinks the recovery will be.&lt;/p&gt;

&lt;p&gt;And it is not only Bitcoin. Bridged stablecoins are claims on a bridge's reserve. Tokenized treasuries are claims on an issuer's brokerage account. Liquid staking tokens are claims on a validator set. Walk through a working trading agent's inventory and a striking share of it is not assets — it is IOUs, each one as good as the institution standing behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is worse for an agent than for a human
&lt;/h2&gt;

&lt;p&gt;A human trader holds wrapped and tokenized assets too, and mostly does fine. The reason is that a human is quietly running a trust model the whole time. You know which custodians have been around, which had a bad year, which name keeps coming up in the wrong kind of news. You read a depeg as it starts. You can decide, on a hunch, to move early.&lt;/p&gt;

&lt;p&gt;An autonomous agent has none of that. It has no instinct for a brand, no memory of last cycle's blowups, no feel for when a quiet story is about to get loud. It cannot open a custodian's books and verify solvency. It cannot confirm that the locked backing pile is whole and unencumbered. What it can do is read a token balance and a price, and those two numbers look identical whether the backing is pristine or already gone.&lt;/p&gt;

&lt;p&gt;So an agent holding wrapped assets is holding unverifiable trust — trust it did not evaluate, because it has no way to evaluate it. Multiply that across a fleet of agents transacting continuously, with no human in the loop on any single position, and the wrapper stops being a convenience and starts being the largest unpriced risk in the system.&lt;/p&gt;

&lt;p&gt;There is a second-order problem too. Every wrapped asset has a backing pile — the real coins or reserves held in one place. That pile is a single, standing, valuable target. The more agent capital flows into wrapped form, the bigger and more attractive the honeypot, and the more an individual agent's safety depends on infrastructure it cannot see.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix is not a better custodian
&lt;/h2&gt;

&lt;p&gt;The instinct is to ask for a more trustworthy wrapper: better attestations, more frequent proof-of-reserves, a more reputable name. That helps a human, because a human can weigh reputation. It does not close the gap for an agent, because the agent still cannot verify any of it — it can only be told, and being told is not the same as knowing.&lt;/p&gt;

&lt;p&gt;The structural fix is different. It is settlement that never converts the asset into someone's liability in the first place.&lt;/p&gt;

&lt;p&gt;Concretely: the asset stays native on its own chain. Bitcoin stays as Bitcoin, locked in a hash-time-locked script on the Bitcoin chain itself — not handed to anyone, not represented by a minted token. What crosses between chains is not the asset and not custody of it. It is a single piece of information: the hash of a secret. The obligation the asset backs lives on a chain that can run real contract logic; the asset lives where it already is; the two are coupled only by that shared hash, and resolved by revealing a preimage or by a timeout. No custodian ever holds the unilateral ability to move the coins.&lt;/p&gt;

&lt;p&gt;This is the design behind what we call a BTC collateral vault, and it generalizes: settle and collateralize with assets in their native, bearer form, and move information across chains instead of moving custody. An agent does not have to audit a custodian if there is no custodian in the path.&lt;/p&gt;

&lt;p&gt;For an autonomous agent, this should not be hand-managed plumbing. Watching a locked output, coordinating timeouts across chains with very different block times, building the right spend path — that belongs behind a tool call. Our MCP server (hashlock-tech/mcp, scoped — six tools) exists so an agent reasons about &lt;em&gt;the position&lt;/em&gt; rather than the script-level mechanics. MCP is the open protocol Anthropic introduced for connecting models to external systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest status
&lt;/h2&gt;

&lt;p&gt;This is a direction, and it deserves a straight status report rather than a confident one. Only Ethereum mainnet is live end-to-end today. The Bitcoin hash-time-lock construction is validated on signet, with mainnet pending. The Sui contracts are deployed and CLI-tested, with gateway wiring in progress. A native-collateral vault is a design we are building toward — and the tradeoffs are real even when it ships: collateral sits locked for the life of a position, and Bitcoin's roughly ten-minute blocks make timeout windows coarse. Removing the custodian is not free. We think it is worth the price for the assets an agent is meant to hold for real.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;Wrapped assets made everything usable everywhere by making everything custodial everywhere. For a human running a trust model in the background, that trade is often fine. For an autonomous agent that cannot run that model, it is an open question whether it should ever hold a custodial asset at all.&lt;/p&gt;

&lt;p&gt;So here is the question for anyone building trading agents: do you actually know what your agent owns right now — the asset, or a promise of the asset? And if it is a promise, who is on the other side of it, and what happens to your agent the day that promise is tested?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Hashlock Markets — atomic settlement for the agent economy. Sealed-bid RFQ + HTLC settlement, fused into one operation. No bridges, no custodians.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol: &lt;a href="https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-26-agent-holds-iou" rel="noopener noreferrer"&gt;https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-26-agent-holds-iou&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP server (source): &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The underlying mechanism design is written up in a working paper on SSRN: &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Using Bitcoin as collateral without wrapping it: the design of a BTC collateral vault</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Mon, 25 May 2026 09:32:26 +0000</pubDate>
      <link>https://dev.to/barissozen/using-bitcoin-as-collateral-without-wrapping-it-the-design-of-a-btc-collateral-vault-30f4</link>
      <guid>https://dev.to/barissozen/using-bitcoin-as-collateral-without-wrapping-it-the-design-of-a-btc-collateral-vault-30f4</guid>
      <description>&lt;p&gt;This is the Monday deep-dive — one mechanism, examined closely.&lt;/p&gt;

&lt;p&gt;Suppose a trading agent needs to post collateral, and the asset it wants to post is Bitcoin. That is a reasonable thing to want: BTC is the deepest, most liquid collateral asset in crypto. The problem is that Bitcoin the chain cannot run the contract logic a collateralized position needs — no expressive smart contracts, no objects, no state machine watching a position over time. So the collateral lives on one chain and the obligation it backs lives on another.&lt;/p&gt;

&lt;p&gt;The standard fix is to wrap the Bitcoin. We think there is a better-shaped one, and it is worth walking through carefully.&lt;/p&gt;

&lt;h2&gt;
  
  
  What wrapping actually costs you
&lt;/h2&gt;

&lt;p&gt;Wrapping BTC means handing it to a custodian — or a federation, or a bridge contract — that holds the real Bitcoin and mints a token on the destination chain representing a claim on it. Once you hold the token, you can use it as collateral anywhere that chain's contracts run.&lt;/p&gt;

&lt;p&gt;You have also done three things you may not have meant to do. You converted a bearer asset into a claim against an intermediary. You contributed to a honeypot — the locked BTC pile that backs every wrapped token is a single, standing, valuable target. And you made your collateral's integrity depend on something an agent has no good way to audit: the ongoing honesty and solvency of whoever holds the real coins.&lt;/p&gt;

&lt;p&gt;For a trustless settlement system, that is the wrong trade. The whole point of settling without a custodian is undone the moment the collateral backing the settlement is itself custodial.&lt;/p&gt;

&lt;h2&gt;
  
  
  The design: keep the Bitcoin on Bitcoin
&lt;/h2&gt;

&lt;p&gt;A collateral vault takes the opposite approach. The Bitcoin never moves to another chain and is never represented by a minted token. It stays as native BTC, locked in a script on the Bitcoin chain itself. What crosses chains is not the asset — it is a single piece of information: the hash of a secret.&lt;/p&gt;

&lt;p&gt;Here is the shape of it. On Bitcoin, the collateral is locked into a P2WSH output — a pay-to-witness-script-hash output whose redeem script is a hash-time-lock. The script has two spend paths: a hashlock path, spendable by presenting the preimage of a specific hash, and a timelock path, spendable by the original depositor after a block-height deadline. This is the same HTLC construction used for atomic swaps, applied here to a longer-lived position rather than an instant exchange.&lt;/p&gt;

&lt;p&gt;On the other chain — for us, Sui, where our Move contracts are deployed — lives the obligation the collateral backs: a forward to deliver, a loan to repay, a leg of a multi-step trade. The Sui-side contract is written so that the outcome of that obligation controls who learns the preimage, and when.&lt;/p&gt;

&lt;p&gt;The two chains are coupled by exactly one shared value: the hash. Bitcoin Script cannot read Sui state, and Sui cannot read Bitcoin's UTXO set. But both can agree, in advance, on a hash — and the preimage of that hash becomes the single key that resolves the position on both sides at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  The outcome paths
&lt;/h2&gt;

&lt;p&gt;A vault has three ways to end, and all three are mechanical.&lt;/p&gt;

&lt;p&gt;If the obligor &lt;strong&gt;performs&lt;/strong&gt; — delivers the forward, repays the loan — the protocol releases the preimage along the agreed path, and the BTC settles to whoever the performance entitles. The pattern is reveal-to-claim: the act of claiming on one side publishes the secret that resolves the other.&lt;/p&gt;

&lt;p&gt;If the obligor &lt;strong&gt;defaults&lt;/strong&gt;, the hashlock path routes the BTC to the counterparty as the agreed remedy. The collateral does exactly what collateral is for — it makes the counterparty whole without anyone needing to chase the defaulter through courts or reputation.&lt;/p&gt;

&lt;p&gt;If &lt;strong&gt;nothing happens&lt;/strong&gt; — the position is simply abandoned — the timelock path returns the BTC to the depositor after the deadline. No counterparty, no protocol, and no custodian can hold the coins past that block height. The refund is enforced by Bitcoin consensus, not by anyone's cooperation.&lt;/p&gt;

&lt;p&gt;In every path, the BTC was native Bitcoin the whole time, and no third party ever had the unilateral ability to move it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the vault deliberately does not do
&lt;/h2&gt;

&lt;p&gt;A vault is not a margin account, and it is worth being blunt about that. Bitcoin Script has no access to a price feed, and we are not going to pretend otherwise by smuggling an oracle into the design. That means the vault cannot do a real-time margin call — it cannot watch a price and liquidate the instant a collateral ratio is breached. Its resolution is discrete: it triggers on performance, on default, or on a deadline, not on a continuous price.&lt;/p&gt;

&lt;p&gt;For a large class of agent-to-agent use cases that is fine, because the obligation itself is discrete — a forward with a fixed delivery date, a fixed-term loan, a bonded commitment. For a position that genuinely needs continuous mark-to-market, a hash-time-locked vault is the wrong tool, and we would say so rather than oversell it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this sits for an agent
&lt;/h2&gt;

&lt;p&gt;For an autonomous agent, none of the above should be hand-managed. Watching a P2WSH output, coordinating two timelocks across chains with very different block times, constructing the witness needed to spend a hashlock path — that is exactly the kind of work that belongs behind a tool call. Our MCP server (hashlock-tech/mcp, scoped — six tools) exists so an agent reasons about the position rather than the plumbing: it commits to a hash, funds a leg, checks status, and lets the protocol handle the script-level mechanics. MCP is the open protocol Anthropic introduced for connecting models to external systems; a vault is just another set of tool calls on that surface.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;This is a design, and it deserves a straight status report. The Bitcoin P2WSH HTLC is validated on signet — Bitcoin's test network — with mainnet still pending. The Sui contracts are deployed and CLI-tested, with gateway wiring in progress. The only place atomic settlement is live end-to-end today is Ethereum mainnet. So a BTC collateral vault is a design we are building toward, not a button you can press this morning — and we would rather state that plainly than blur it.&lt;/p&gt;

&lt;p&gt;The tradeoffs are real even once it ships. Bitcoin's roughly ten-minute blocks make timeout windows coarse: you cannot set a tight, precise deadline the way you can on a fast chain, and the cross-chain timeout coordination — the destination chain's deadline has to sit safely inside Bitcoin's — has to be conservative by construction. Collateral is locked and idle for the life of the position. And the model assumes the hash function holds. These are the costs of removing the custodian. We think they are worth paying for the class of positions a vault is meant for. They are still costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question
&lt;/h2&gt;

&lt;p&gt;Wrapped BTC made Bitcoin usable everywhere by making it custodial everywhere. The bet behind a collateral vault is that you can keep most of that usefulness — Bitcoin backing an obligation on a chain that can actually reason about it — without the custodian, by moving a hash instead of the coins.&lt;/p&gt;

&lt;p&gt;So here is the question for anyone building agent-side collateral logic: when your agent posts Bitcoin as collateral, do you know exactly who can move those coins — and is the honest answer "only the agent, and only along paths the agent agreed to in advance"?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Hashlock Markets — atomic settlement for the agent economy. Sealed-bid RFQ + HTLC settlement, fused into one operation. No bridges, no custodians.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol: &lt;a href="https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-25-btc-collateral-vaults" rel="noopener noreferrer"&gt;https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-25-btc-collateral-vaults&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP server (source): &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The underlying mechanism design is written up in a working paper on SSRN: &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Everyone is building a "settlement layer." There are two of them.</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Sun, 24 May 2026 06:13:32 +0000</pubDate>
      <link>https://dev.to/barissozen/everyone-is-building-a-settlement-layer-there-are-two-of-them-1gpc</link>
      <guid>https://dev.to/barissozen/everyone-is-building-a-settlement-layer-there-are-two-of-them-1gpc</guid>
      <description>&lt;p&gt;This is the Sunday recap — a step back from the week in agent-economy infrastructure, and where our own week fit into it.&lt;/p&gt;

&lt;p&gt;The headline event: an $8M pre-seed round, led by a well-known fund, for a company describing itself as "the settlement layer for the agentic economy." That is a lot of money and a lot of conviction pointed at a thesis we have been building on for months — agents will transact autonomously, and they need infrastructure to do it. When a serious fund writes that check, it is a useful signal: the market is real, and we are not the only ones who think so.&lt;/p&gt;

&lt;p&gt;But "settlement layer" is doing a lot of work in that sentence, and it is worth slowing down on. Because there are two different layers that both get called "settlement," and conflating them makes the whole agent-economy stack harder to reason about than it needs to be.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer one: the payment rail
&lt;/h2&gt;

&lt;p&gt;The first layer answers a concrete question: &lt;em&gt;how does an agent pay for something?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An agent books a flight, subscribes to an API, tips another agent for a result. On one side is the agent's wallet; on the other is a merchant who wants to be paid in a form they can use. The job of a payment rail is to wire those two together — handle the request, move the value, confirm the merchant received it. The x402 pattern (a payment embedded directly in an HTTP 402 response) is the cleanest expression of this idea, and it is growing quickly: the protocol is now clearing on the order of 500,000 transactions a week.&lt;/p&gt;

&lt;p&gt;This is real infrastructure with real traction. The round this week is, in large part, a bet on this layer — agent-to-merchant payments, plugged into existing commerce. It is the work of plugging an agent into the economy that already exists.&lt;/p&gt;

&lt;p&gt;It is just not the layer we build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer two: trustless settlement
&lt;/h2&gt;

&lt;p&gt;The second layer answers a different question: &lt;em&gt;how do two agents exchange value when neither one trusts the other — and neither trusts an intermediary?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is not "agent pays merchant." It is "agent A holds ETH, agent B holds BTC, they have agreed a trade, and now both legs have to happen — or neither." There is no merchant relationship here, no repeat business to lean on, no reputation either side can hold hostage. There is just a trade between two strangers across two chains.&lt;/p&gt;

&lt;p&gt;The naive answer is to route through a custodian or a bridge: someone holds both sides, performs the swap, hands the results back. That works, and it is convenient, but it reintroduces exactly the thing an agent has no good way to evaluate — a trusted third party. A custodian can freeze funds. A bridge's lock-and-mint contract is a standing honeypot; the value sits there, waiting.&lt;/p&gt;

&lt;p&gt;The trustless answer is a hash-time-lock contract (HTLC). Agent A locks funds against the hash of a secret. Agent B locks the corresponding funds on the other chain against the same hash. When A reveals the secret to claim B's funds, the act of revealing it lets B claim A's funds. Either both legs settle, or — after a timeout — both refund. No custodian ever holds both sides. There is no intermediate state where value sits exposed.&lt;/p&gt;

&lt;p&gt;That is the layer we build. It is a primitive, not a product feature: a way for any two parties to perform a conditional value exchange across any two chains without trusting an intermediary.&lt;/p&gt;

&lt;h2&gt;
  
  
  They are a stack, not rivals
&lt;/h2&gt;

&lt;p&gt;Here is the part worth being precise about. The payment rail and the settlement layer are not competitors fighting over the same job. They sit at different heights in the same stack.&lt;/p&gt;

&lt;p&gt;An agent can use an x402-style rail to pay a merchant for a service — that is the rail doing its job well. The same agent can use a hash-time-lock to settle a cross-chain trade with another agent — that is the settlement primitive doing a different job. One is "buy something from the existing economy." The other is "exchange value with a peer, trustlessly." A mature agent will do both, often inside the same workflow.&lt;/p&gt;

&lt;p&gt;So when this week's round gets described as funding "the settlement layer for the agentic economy," the honest reading is: it funded a payment rail, and payment rails are valuable. The trustless cross-chain atomic settlement layer underneath — no custodian, no bridge — is a different layer, and it still needs building. That is the part we have spent the week on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What our week looked like
&lt;/h2&gt;

&lt;p&gt;Pull our own threads from the past seven days and every one of them turns out to be the same primitive seen from a different angle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forward-dated settlement.&lt;/strong&gt; An HTLC timeout is usually treated as a safety valve. Used deliberately, it is a delivery window: set it to 24 hours and an atomic swap becomes a T+24h forward — a price locked today, delivery enforced on-chain tomorrow, with no clearinghouse holding the asset in the gap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sealed-bid quote requests.&lt;/strong&gt; A quote request leaks direction, size and urgency the moment it is broadcast. A sealed-bid RFQ removes the pre-trade leak — makers bid blind — and atomic settlement removes the post-commit leak, because there is no gap between "agreed" and "settled" for a last look to live in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Counterparty filtering.&lt;/strong&gt; Trustless settlement removes the need to trust a counterparty's &lt;em&gt;intent&lt;/em&gt;. Agents still benefit from filtering on a counterparty's &lt;em&gt;history&lt;/em&gt; — on-chain data, not identity claims.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three different-looking features. One hash-time-lock underneath all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The usual honest caveat
&lt;/h2&gt;

&lt;p&gt;Because we keep this straight: atomic settlement is live end-to-end on &lt;strong&gt;Ethereum mainnet&lt;/strong&gt; today. The Sui contracts are deployed and CLI-tested, with gateway wiring still in progress. The Bitcoin P2WSH HTLC is validated on signet, with mainnet pending. When this recap says "live," it means Ethereum mainnet — the rest is honest roadmap.&lt;/p&gt;

&lt;p&gt;And HTLCs are not free. They cost capital lockup for the duration of the timeout, they carry timeout-coordination risk across chains with different block times, and they assume the hash function holds. We think those are the right tradeoffs for trustless settlement. They are still tradeoffs, and we would rather say so than pretend otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question for the week
&lt;/h2&gt;

&lt;p&gt;So here is what we would leave you with. The agent economy clearly needs payment rails — the funding this week says so, and the transaction counts back it up. But it also needs a layer below the rails: a way for agents to settle with each other directly, with no one in the middle.&lt;/p&gt;

&lt;p&gt;When you read "settlement layer for the agent economy," which layer do you actually picture — the rail that plugs an agent into merchants, or the primitive that lets two agents trade without trusting anyone?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Hashlock Markets — atomic settlement for the agent economy. Sealed-bid RFQ + HTLC settlement, fused into one operation. No bridges, no custodians.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol: &lt;a href="https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-24-week-in-review" rel="noopener noreferrer"&gt;https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-24-week-in-review&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP server (source): &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The underlying mechanism design is written up in a working paper on SSRN: &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>If your trading agent asks for a price out loud, it has already paid for it</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Sat, 23 May 2026 06:09:18 +0000</pubDate>
      <link>https://dev.to/barissozen/if-your-trading-agent-asks-for-a-price-out-loud-it-has-already-paid-for-it-1a6g</link>
      <guid>https://dev.to/barissozen/if-your-trading-agent-asks-for-a-price-out-loud-it-has-already-paid-for-it-1a6g</guid>
      <description>&lt;p&gt;This is a short, practical one — a Saturday tip rather than a deep dive. But it's a mistake I keep seeing in agent trading code, and it's worth thirty seconds of your attention.&lt;/p&gt;

&lt;p&gt;Here it is: &lt;strong&gt;the moment your agent asks for a price, it has already given something away.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The naive quote flow
&lt;/h2&gt;

&lt;p&gt;Picture a trading agent that wants to sell 10 ETH for BTC. To find a price, the obvious move is to ask around. Broadcast the intent to an open order book, ping a list of market makers, drop it into a public mempool-adjacent venue. Collect the quotes that come back, pick the best one, trade.&lt;/p&gt;

&lt;p&gt;That feels like comparison shopping. It is not. It is publishing.&lt;/p&gt;

&lt;p&gt;A quote request is not a neutral question. It carries direction (you're a seller), size (10 ETH), and — by the fact that you're asking right now — urgency. Anyone who sees the request before you trade is reading your hand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways that leak costs you
&lt;/h2&gt;

&lt;p&gt;Once your intent is visible, three things happen, and none of them are in your favour.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Front-running.&lt;/strong&gt; A faster party sees "seller of 10 ETH incoming" and trades ahead of you, moving the price into the spot you were about to take. You arrive late at your own trade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quote shading.&lt;/strong&gt; Market makers who can see that you're a committed seller — and can see what their competitors are showing — quietly widen their quotes. You're not getting their best price. You're getting the worst price they think you'll still accept.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Last look.&lt;/strong&gt; This is the quiet one. A maker shows you an attractive quote, you commit to it, and then — in the moment between your commitment and settlement — the maker re-prices or simply declines. "Sorry, the market moved." The optionality was theirs the whole time. You carried the risk; they kept the exit.&lt;/p&gt;

&lt;p&gt;Your agent thinks it ran a competitive auction. What it actually did was advertise its position and then hand counterparties a free option on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a sealed-bid RFQ changes
&lt;/h2&gt;

&lt;p&gt;A sealed-bid request-for-quote flips the information asymmetry back.&lt;/p&gt;

&lt;p&gt;The agent posts an RFQ. Makers submit bids — but the bids are &lt;em&gt;sealed&lt;/em&gt;: each maker prices the request without seeing the other makers' bids, and without seeing any reaction from the taker. There is no live book to shade against, no competitor's number to undercut by a hair, no read on how badly you want the fill.&lt;/p&gt;

&lt;p&gt;When the bidding window closes, the taker sees the bids and picks the best one. Crucially, the maker who quoted has committed to that price. There is no "let me look again" — because the next thing that happens is settlement, not a renegotiation.&lt;/p&gt;

&lt;p&gt;That's the pre-trade half. The post-commit half is where atomic settlement matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sealed bid plus atomic settlement — why both
&lt;/h2&gt;

&lt;p&gt;A sealed bid removes the &lt;em&gt;pre-trade&lt;/em&gt; leak: nobody shades or front-runs a request they can't read.&lt;/p&gt;

&lt;p&gt;Atomic settlement removes the &lt;em&gt;post-commit&lt;/em&gt; leak: last look only exists because there's a gap between "agreed" and "settled" where one side still holds an option. Close that gap and the option disappears.&lt;/p&gt;

&lt;p&gt;Hashlock fuses the two into one operation. The RFQ and the settlement are not separate steps a counterparty can wedge themselves between. The winning bid settles through a hashed-timelock contract (HTLC): either both legs of the swap complete, or both sides refund. There is no state in which the maker has re-priced, walked, or kept your asset. The deadline is enforced by the chain, not by anyone's good intentions.&lt;/p&gt;

&lt;p&gt;For an agent, the whole thing is a few tool calls over MCP — the open protocol Anthropic introduced for connecting models to external systems. The MCP server exposes six tools; the RFQ path is &lt;code&gt;create_rfq&lt;/code&gt; to post the request, &lt;code&gt;list_open_rfqs&lt;/code&gt; to see what's live, &lt;code&gt;respond_rfq&lt;/code&gt; for makers to submit a sealed bid, and the swap tools to settle the winner. Your agent doesn't manage timelocks or watch the chain — it calls a tool and gets an atomic outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;A sealed-bid RFQ is not an invisibility cloak. It protects the &lt;em&gt;quote&lt;/em&gt; phase — the window where your intent would otherwise be readable and exploitable. Once a trade settles on-chain, the settlement transaction is public, like any other; sealed bidding doesn't and can't hide a completed trade. What it removes is the free option that counterparties get when they can see your hand &lt;em&gt;before&lt;/em&gt; you've traded.&lt;/p&gt;

&lt;p&gt;And the usual chain-status caveat, because we keep this honest: atomic settlement is live end-to-end on &lt;strong&gt;Ethereum mainnet&lt;/strong&gt; today. Sui contracts are deployed and CLI-tested with gateway wiring in progress; the Bitcoin P2WSH HTLC is validated on signet with mainnet still pending. When this post says "live," it means Ethereum mainnet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;If you're building a trading agent, treat the quote request as part of the trade, not as a free lookup before it. The cheapest spread in the world doesn't help if getting to it leaked your position to everyone who could act on it.&lt;/p&gt;

&lt;p&gt;So here's the question I'd genuinely like builders to sit with: if shopping for a price is itself a leak, how much of what we call "best execution" was ever really best — and how much was just the least-bad price we could get &lt;em&gt;after&lt;/em&gt; tipping our hand?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Hashlock Markets — atomic settlement for the agent economy. Sealed-bid RFQ + HTLC settlement, fused into one operation. No bridges, no custodians.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol: &lt;a href="https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-23-sealed-bid-rfq" rel="noopener noreferrer"&gt;https://hashlock.markets?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-23-sealed-bid-rfq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MCP server (source): &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;For the underlying mechanism design, there's a working paper on SSRN: &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Forward Settlement: how a trading agent locks tomorrow's price without a clearinghouse</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Fri, 22 May 2026 19:18:22 +0000</pubDate>
      <link>https://dev.to/barissozen/forward-settlement-how-a-trading-agent-locks-tomorrows-price-without-a-clearinghouse-3c9c</link>
      <guid>https://dev.to/barissozen/forward-settlement-how-a-trading-agent-locks-tomorrows-price-without-a-clearinghouse-3c9c</guid>
      <description>&lt;p&gt;A trading agent agrees a price at 9am. Delivery is tomorrow. For the 24 hours in between, somebody is exposed: either the price moves and one side wants out, or one side simply doesn't show up to settle.&lt;/p&gt;

&lt;p&gt;This is the oldest problem in market structure, and traditional finance solved it a long time ago — with a clearinghouse. A forward contract works because a central counterparty stands between the two parties, holds margin, and guarantees that the trade completes even if one side fails.&lt;/p&gt;

&lt;p&gt;That solution doesn't transfer cleanly to autonomous agents. If you're building agents that trade — on top of an MCP server, inside a framework like LangChain or CrewAI, wherever — you eventually hit a case where the agent needs to commit to a trade now and settle it later. And the moment you reach for a forward, you've reintroduced exactly the trusted intermediary the rest of your stack was designed to avoid.&lt;/p&gt;

&lt;p&gt;There's a way to get the forward without the clearinghouse. It's worth walking through, because it's a small idea with a large consequence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a forward actually needs
&lt;/h2&gt;

&lt;p&gt;Strip a forward down to its mechanics and it asks for three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A price, fixed now.&lt;/strong&gt; Both parties agree terms today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A delivery window, in the future.&lt;/strong&gt; Settlement happens at T+24h, T+48h, or whatever the two sides picked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A guarantee that both legs complete — or neither does.&lt;/strong&gt; If one side vanishes, the other must not be left holding a half-finished trade.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The clearinghouse exists almost entirely to provide #3. It is a very expensive, heavily regulated answer to one question: &lt;em&gt;who makes the trade whole if a counterparty fails?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For two agents on two different chains with no shared venue, that question has no good custodial answer. A centralized desk means both agents now trust the desk — and the desk can freeze, fail, or front-run. A bridge means trusting an optimistic settlement model: most bridges assume the far side will be made whole and rely on challenge windows to catch it if not. "Probably settled by tomorrow" is not a forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the naive on-chain version fails
&lt;/h2&gt;

&lt;p&gt;The first instinct on-chain is to write an escrow contract. Agent A deposits the asset, the contract holds it until the delivery time, then releases it to Agent B against payment.&lt;/p&gt;

&lt;p&gt;Look closely at "the contract holds it." Who can upgrade that contract? Who holds the admin key? Who decides what happens if the delivery oracle disagrees with one party? Every one of those questions is a custodian wearing a smart-contract costume. You haven't removed the trusted party — you've renamed it.&lt;/p&gt;

&lt;p&gt;The fix is not a better escrow contract. It's to remove the holding step entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The HTLC as a forward
&lt;/h2&gt;

&lt;p&gt;A hash time-locked contract (HTLC) binds both legs of a trade to the same cryptographic secret and a timelock. The standard description of an HTLC emphasizes the &lt;em&gt;atomic&lt;/em&gt; property: either both sides settle against the secret, or both sides refund after the timeout. No party can take one leg without releasing the other.&lt;/p&gt;

&lt;p&gt;The piece that turns an atomic swap into a &lt;em&gt;forward&lt;/em&gt; is the timelock itself. The timelock is not just a safety hatch — it is a programmable delivery window. Set it to 24 hours and you have described a T+24h forward in one parameter. Both legs are funded now, at the agreed price. Settlement can occur any time inside the window. If the window closes with the trade incomplete, both sides independently refund. No counterparty can be left exposed, because no counterparty was ever holding the other's asset — the contract logic was.&lt;/p&gt;

&lt;p&gt;That gives you all three things a forward needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Price fixed now&lt;/strong&gt; — both legs are committed at agreed terms when the contract is created.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future delivery window&lt;/strong&gt; — the timelock is the window.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;All-or-nothing guarantee&lt;/strong&gt; — the atomic property, enforced by the chain, not by a clearinghouse.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The delivery deadline is the part worth dwelling on. In the clearinghouse model, the guarantee is institutional: you trust that the central counterparty has the capital and the legal standing to make you whole. In the HTLC model, the deadline is enforced by the base layer. On Ethereum mainnet, the timelock is just block timestamps and contract code. Nobody — including the protocol that wrote the contract — can extend it, skip it, or quietly settle around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this fits for agents
&lt;/h2&gt;

&lt;p&gt;We call this Forward Settlement, and it's a direct extension of the primitive Hashlock Markets already runs in production: atomic settlement, live on Ethereum mainnet today. The base layer is a sealed-bid RFQ for price discovery fused with HTLC settlement, exposed to agents through a 6-tool MCP server. A forward is not a separate product bolted on — it's the same HTLC with the timelock used deliberately rather than defensively.&lt;/p&gt;

&lt;p&gt;The reason this matters for the agent economy specifically: agents are good at committing to future actions and bad at trusting counterparties they can't inspect. A forward written as an HTLC plays to both. The agent commits today; the chain enforces the window; neither agent has to evaluate the other's solvency, because solvency was never load-bearing. The trade either completes atomically or unwinds atomically.&lt;/p&gt;

&lt;p&gt;It also composes. Because each leg is independently refundable and bound to the same secret, a forward can be one leg of a multi-leg trade — sell BTC, buy ETH, buy SUI, all or nothing — without inheriting a clearinghouse for the whole bundle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limits
&lt;/h2&gt;

&lt;p&gt;A few things this does not do, because overclaiming helps nobody:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It does not eliminate price risk. A forward fixes a price; if the market moves, one side is worse off. That's the trade, not a bug.&lt;/li&gt;
&lt;li&gt;It does not give you margin or leverage. Both legs are fully funded up front. This is a delivery guarantee, not a credit facility.&lt;/li&gt;
&lt;li&gt;Today the production settlement layer is Ethereum mainnet. Sui contracts are deployed and CLI-tested with gateway wiring in progress; the Bitcoin P2WSH HTLC is validated on signet with mainnet still pending. Forward-dated settlement is live where atomic settlement is live — which today means Ethereum.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The underlying argument is in our working paper on SSRN, for anyone who wants the formal version rather than the blog version.&lt;/p&gt;

&lt;p&gt;If an agent can get a forward without a clearinghouse, it's worth asking how much else in market structure was only ever a workaround for missing settlement guarantees — and how much of that an atomic primitive quietly makes optional.&lt;/p&gt;




&lt;p&gt;Protocol: &lt;a href="https://hashlock.markets" rel="noopener noreferrer"&gt;https://hashlock.markets&lt;/a&gt;&lt;br&gt;
MCP server (canonical): &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>A regulated exchange just gave AI agents trading access — through custody. The settlement layer underneath shouldn't need it.</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Thu, 21 May 2026 19:13:22 +0000</pubDate>
      <link>https://dev.to/barissozen/a-regulated-exchange-just-gave-ai-agents-trading-access-through-custody-the-settlement-layer-50l</link>
      <guid>https://dev.to/barissozen/a-regulated-exchange-just-gave-ai-agents-trading-access-through-custody-the-settlement-layer-50l</guid>
      <description>&lt;p&gt;This week a regulated US exchange connected AI agents to live trading. Gemini's Agentic Trading lets an MCP-compatible model — Claude, ChatGPT, whatever you're building on — place real orders on a regulated venue.&lt;/p&gt;

&lt;p&gt;It's worth pausing on that. When a regulated exchange ships an MCP integration, "agents that trade" stops being a hackathon demo and becomes infrastructure other people build on. The agent economy isn't a forecast anymore; it's being plumbed in public.&lt;/p&gt;

&lt;p&gt;So this post isn't a takedown. It's the opposite — it's a "yes, and." The exchange MCP solves a real problem. There's just a second problem sitting right next to it that a single-venue integration structurally can't solve, and if you're building trading agents it's the one that will bite you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the exchange MCP actually does
&lt;/h2&gt;

&lt;p&gt;The shape of these integrations is consistent: your agent connects to one exchange, authenticates, and sends order instructions. The exchange executes and holds custody throughout.&lt;/p&gt;

&lt;p&gt;Inside a single venue that's fine. The agent is, functionally, a very fast trader sending instructions to a custodian it has decided to trust. You've made the &lt;em&gt;interface&lt;/em&gt; programmatic. You have not changed &lt;em&gt;who holds the money&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem that starts one chain over
&lt;/h2&gt;

&lt;p&gt;Now put two agents in the picture, on two different chains, with no shared custodian — and no desire to acquire one.&lt;/p&gt;

&lt;p&gt;Agent A holds USDC on Ethereum. Agent B holds an asset somewhere else. They've agreed on a price. They want to swap. The question that has no good answer in the custodial model is simple: &lt;strong&gt;who do they both trust to hold the funds while the trade completes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The usual answers are all somebody:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A centralized desk or exchange — now both agents trust that desk, and the desk can fail, freeze, or front-run.&lt;/li&gt;
&lt;li&gt;A bridge — most bridges settle &lt;em&gt;optimistically&lt;/em&gt;: they assume the other side will be made whole and rely on challenge windows and watchers to catch it if not. "Probably atomic" is not atomic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For autonomous agents transacting at machine speed, "trust this intermediary" is not a footnote. It's the whole risk model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atomic settlement: the answer is nobody
&lt;/h2&gt;

&lt;p&gt;The honest answer to "who holds the funds" is &lt;em&gt;nobody&lt;/em&gt; — and that's a solved primitive, not a research problem.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;hash time-locked contract (HTLC)&lt;/strong&gt; binds both legs of a trade to the same cryptographic secret and a timelock. Either both sides settle, or neither does, and any party can independently refund after the timeout. There's no custodian in the middle and no optimistic assumption to challenge. The trade is atomic in the literal sense: indivisible.&lt;/p&gt;

&lt;p&gt;That's the layer &lt;a href="https://hashlock.markets/docs?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-21-regulated-cex-mcp" rel="noopener noreferrer"&gt;Hashlock Markets&lt;/a&gt; builds — atomic settlement for agent-to-agent trades. Sealed-bid RFQ for price discovery, HTLC for settlement, the whole thing exposed to agents through a 6-tool MCP server. It's live on Ethereum mainnet today and multi-chain by design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Front door vs. floor
&lt;/h2&gt;

&lt;p&gt;A custodial exchange MCP and a trust-minimized settlement layer are not competitors. One is the front door — a regulated, familiar venue an agent can walk into. The other is the floor — the thing that has to hold when two agents who've never met, on chains that don't know about each other, need to exchange value without electing a trusted party.&lt;/p&gt;

&lt;p&gt;If you're building agents that only ever trade inside one venue, the exchange MCP is genuinely most of what you need. If your agents trade &lt;em&gt;across&lt;/em&gt; chains or &lt;em&gt;with each other&lt;/em&gt;, the settlement primitive is the part that matters more than the exchange — and it's worth choosing one that's atomic rather than optimistic.&lt;/p&gt;

&lt;p&gt;Docs and the MCP server: &lt;strong&gt;&lt;a href="https://hashlock.markets/docs?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-21-regulated-cex-mcp" rel="noopener noreferrer"&gt;https://hashlock.markets/docs?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-21-regulated-cex-mcp&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>mcp</category>
      <category>web3</category>
    </item>
    <item>
      <title>I've Spent 30 Years Trying to Decode Markets. Here's What I Think Comes Next.</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Thu, 21 May 2026 14:58:25 +0000</pubDate>
      <link>https://dev.to/barissozen/ive-spent-30-years-trying-to-decode-markets-heres-what-i-think-comes-next-4c8a</link>
      <guid>https://dev.to/barissozen/ive-spent-30-years-trying-to-decode-markets-heres-what-i-think-comes-next-4c8a</guid>
      <description>&lt;p&gt;I've always been obsessed with financial markets. Not the money — the mechanism. The question that never let me go: how does price actually form?&lt;br&gt;
Starting from zero&lt;br&gt;
Charles Dow didn't have Bloomberg terminals. He had a pencil and a newspaper. He hand-tracked closing prices, computed averages by arithmetic, recorded OHLCV on ruled paper. From that discipline — just watching, recording, thinking — he built a theory that still underpins how we read markets 130 years later.&lt;br&gt;
That story hooked me early. The idea that you could sit with raw data and see something other people couldn't.&lt;br&gt;
I followed Richard Russell's Dow Theory Letters for years. Russell took Dow's framework and ran it through decades of real markets — bull, bear, crash, recovery. No fancy models, just persistent observation and honest reporting. I learned more about market psychology from those letters than from any textbook.&lt;br&gt;
&lt;strong&gt;The indicator rabbit hole&lt;/strong&gt;&lt;br&gt;
Then came the quantitative explosion, and I went all the way down. Thousands of indicators. Hundreds of stop-loss variations. Elliott Wave, Bollinger Bands, Ichimoku, RSI divergences, volume profile, market delta — you name it, I built it, backtested it, watched it work for a while, then watched it stop working.&lt;br&gt;
It took me an embarrassingly long time to understand why. I kept thinking I had the wrong indicator. I didn't. I had the wrong object. I was studying the output of the market — the price tape — and trying to reverse-engineer the thing that produced it. But the thing that produces price is people's intent, and the market never shows you that. It only shows you the residue.&lt;br&gt;
The order is the problem&lt;br&gt;
Here is the realization that reframed everything for me.&lt;br&gt;
When you place a classic limit order, you compress everything you know and feel about a trade into two numbers: a price and a size. "Buy 1 BTC at $58,000." That is it. That is the entire bandwidth.&lt;br&gt;
But that is not what you actually want. What you actually want is closer to: "I'd be happy buying around $58k, a little less happy at $59k, I'd take more size if it dips, and I don't want to touch it above $60k." That is a shape — a soft landscape of preference. The limit order throws all of that away and keeps one point.&lt;br&gt;
And then it does something worse: it publishes that point. Your exact price, your exact size, sitting in a public order book. For a retail trader this is the quiet tax nobody explains to you — your stop-loss is a coordinate, and there are bots whose entire job is to walk price to that coordinate, trigger you, and hand the move back. You didn't get unlucky. You got read.&lt;br&gt;
Thirty years of indicators, and the honest summary is this: I was trying to out-predict a game whose board was rigged at the level of the order type itself.&lt;br&gt;
Orders vs. intent&lt;br&gt;
So what is the alternative? Stop submitting a point. Submit the shape.&lt;br&gt;
Instead of "buy 1 BTC at $58,000," you express your full intent: a surface over price and size that says how much you'd want to trade, where, and with how much tolerance. Call it an intent. It is signed, it is committed, and — this is the part that matters — it is not a public coordinate. There is no flat $58,000 line for anyone to hunt.&lt;br&gt;
This changes what "matching" even means. A classic exchange crosses two orders when a buy price meets a sell price — a hard, discrete event on a public book. An intent-based market does something different. Two traders submit their intent surfaces, and a solver looks for where those two surfaces overlap most — the point where both sides are simultaneously most satisfied.&lt;br&gt;
Here is the part I find genuinely beautiful. When you work out the math of "where do two preference surfaces peak together," you don't get some arbitrary venue rule. You get the Nash bargaining solution — the result John Nash proved in 1950 is the unique fair outcome under a handful of common-sense axioms. Nobody negotiates. Nobody quotes a spread. The solver answers one question — where is the product of the two intents highest — and that answer is the fair clearing price. Fairness is not bolted on. It falls out of the geometry.&lt;br&gt;
Old market vs. new market, side by side&lt;br&gt;
Let me put the two models next to each other, because the difference is the whole point.&lt;br&gt;
In a classic orderbook market, you submit discrete orders. Your price and size are public. Priority is price-time — speed wins. Market makers sit in the middle and earn the spread for providing immediacy. Your stop is a visible target. The system rewards whoever is fastest and best-positioned to see everyone else's coordinates.&lt;br&gt;
In an intent-based solver market, you submit a private, committed preference surface. There is no public point to hunt. There is no spread to pay, because there is no market maker standing in the middle — the solver computes the clearing directly from the two intents. Matching is not "who crossed first," it is "where are both sides most satisfied." And the more rigid you make your intent, the closer the clearing sits to your ideal — but the smaller your overlap, so the less likely you match. The flexibility-versus-fill trade-off is yours to set, explicitly, instead of being hidden inside an order type you never chose.&lt;br&gt;
It is the difference between shouting a number into a room and handing someone a map of what you would actually accept.&lt;br&gt;
Why this is happening now&lt;br&gt;
This idea is not brand new — intent has been in the air in DeFi for a couple of years. What is new is who is trading.&lt;br&gt;
A human clicking a limit order was always going to give the market a thin, one-point signal — clicking fifteen boxes to express a real preference surface is too much work. An AI agent has no such limit. An agent can carry a genuinely rich intent, update it as conditions change, and commit it cryptographically without getting bored. Intent is not a nicer UI for human traders; it is the native language for agents that trade. The order book was built for humans with a mouse. The intent surface is built for software with a goal.&lt;br&gt;
And once you can see intent as a surface, you can finally see the market. Not a scrolling tape of trades — an actual landscape: where buying intent piles up, where selling intent thins out, where the two are about to overlap. I have been building 3D renderings of exactly this, because for the first time the picture in my head — the thing I was always trying to reverse-engineer from the price tape — is simply, directly drawable.&lt;br&gt;
The last piece: settlement&lt;br&gt;
There is one more thing that has to be true for this to work, and it is the thing my team has spent the most time on. If two agents discover a fair clearing across two different chains — BTC on one side, an L2 asset on the other — the trade still has to settle without a custodian holding both sides and without a bridge's fraud window. That is HTLC-based atomic settlement: both legs clear on one cryptographic secret, or both refund. It is the floor the whole thing stands on. Discovery and matching are interesting; settlement is what makes it real.&lt;br&gt;
Where I think this goes&lt;br&gt;
After thirty years I have stopped believing the edge is in a better indicator. The indicators describe the residue. The interesting move is upstream — change what a trader is allowed to express, and you change what the market is.&lt;br&gt;
A market made of discrete public orders is a market that rewards speed and punishes anyone whose intent is visible. A market made of overlapping private intent rewards clarity about what you actually want. One is a wall of coordinates. The other is a field of preference, settling where it genuinely overlaps.&lt;br&gt;
I do not think this is finished, and I will not pretend it is. Solver trust, liquidity bootstrapping, the privacy stack — all of it is still being worked out, honestly and in the open. But for the first time in thirty years, the thing I am looking at is not the residue of the market. It is the market itself.&lt;br&gt;
That is what I think comes next.&lt;/p&gt;

&lt;p&gt;I am building this at Hashlock — atomic, cross-chain settlement for the agent economy. The mechanism design behind intent-based markets is written up in our working paper on SSRN: &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722&lt;/a&gt;. Protocol: &lt;a href="https://hashlock.markets" rel="noopener noreferrer"&gt;https://hashlock.markets&lt;/a&gt;. Code: &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;https://github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;.&lt;br&gt;
If you have traded long enough to carry your own stop-hunt scar tissue, I would genuinely like to hear how you think about this: does expressing intent as a surface instead of a point change the game — or just move it?&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>career</category>
      <category>data</category>
      <category>learning</category>
    </item>
    <item>
      <title>Counterparty data &gt; counterparty identity: why an agent's KYC document is the wrong primitive</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Tue, 19 May 2026 14:22:24 +0000</pubDate>
      <link>https://dev.to/barissozen/counterparty-data-counterparty-identity-why-an-agents-kyc-document-is-the-wrong-primitive-3a5j</link>
      <guid>https://dev.to/barissozen/counterparty-data-counterparty-identity-why-an-agents-kyc-document-is-the-wrong-primitive-3a5j</guid>
      <description>&lt;p&gt;Yesterday I walked through the four filters Hashlock runs before an HTLC locks in: on-chain settlement history, sealed-bid RFQ commitment, tiered KYC attestation, and the HTLC timelock/hashlock itself (&lt;a href="https://hashlock.markets/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-18-counterparty-validation" rel="noopener noreferrer"&gt;deep-dive here&lt;/a&gt;). The deep-dive was about the &lt;em&gt;mechanism&lt;/em&gt;. This post is about the &lt;em&gt;thesis&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The thesis is one sentence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For an AI agent picking a counterparty in milliseconds, the most predictive thing isn't who the counterparty is. It's the last 200 swaps they settled.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That sounds like a small claim. It isn't. It's the difference between two different settlement stacks, and most of the agent-payment infrastructure being shipped right now is implicitly choosing the wrong one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The two stacks
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack A — identity-first.&lt;/strong&gt; Every counterparty arrives with an attestation: KYC document, regulated venue membership, sanctions-screened wallet. The protocol checks the attestation, and if it passes, the trade is allowed. This is how the Fireblocks / Copper / Paxos generation of settlement networks works. It's also, broadly, how ERC-8183 is being framed: the escrow state machine assumes an evaluator that vouches for the leg.&lt;/p&gt;

&lt;p&gt;The strength of Stack A is institutional defensibility: "we only trade with verified entities." The weakness, for agents, is that &lt;strong&gt;the verification signal is upstream of the actual trade.&lt;/strong&gt; An agent in milliseconds can't re-verify; it accepts what the attestation says.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack B — behavior-first.&lt;/strong&gt; Every counterparty has a settlement history visible on-chain. The protocol scores them on how many swaps they've completed, how recently, at what size, against how many distinct takers. If the score passes, the trade is allowed. Identity attestations are an &lt;em&gt;overlay&lt;/em&gt; — opt-in, layered, mandatory only where policy demands it.&lt;/p&gt;

&lt;p&gt;The weakness of Stack B is that new addresses have no history. The strength is that the verification signal is &lt;strong&gt;the same primitive that the trade itself uses&lt;/strong&gt; (the settlement record). An agent can re-verify in the same tool call that submits the bid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why behavior survives at agent latency
&lt;/h2&gt;

&lt;p&gt;Three reasons, in cost order:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Behavior data is already on-chain.&lt;/strong&gt; An agent fetching a counterparty's last 200 settlements is a single RPC call (an event log query against the HTLC contract). An agent fetching a counterparty's KYC attestation requires (a) the attesting party to be online, (b) a trust chain to the attestation issuer, (c) some kind of off-chain index. Latency budget: ~50ms vs ~500ms-2s.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Behavior data is harder to fake.&lt;/strong&gt; Spinning up a fresh address with a fresh KYC attestation is cheap (sign-up, KYC pass, attestation issued). Spinning up a fresh address with 200 on-time settlements against unrelated takers, weighted by notional, is expensive — by construction, the address has to &lt;em&gt;actually do&lt;/em&gt; the trades. Sybil resistance is built into the primitive, not bolted on by the attestor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Behavior data is non-discretionary.&lt;/strong&gt; A KYC issuer makes a discretionary call. A settlement record is an objective ledger entry. For an agent that has to defend its routing logic to its owner ("why did you trade with this address?"), "200 on-time settlements at notional X" is a stronger answer than "the attestor said yes."&lt;/p&gt;

&lt;h2&gt;
  
  
  What the directory actually looks like
&lt;/h2&gt;

&lt;p&gt;In Hashlock terms, the Verified Counterparty Directory is filter 1 of the four-filter stack. It exposes (at the protocol level, not the wallet level):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;settlements_completed_total&lt;/code&gt; — count of HTLCs this address has redeemed inside its timelock&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;settlements_refunded_total&lt;/code&gt; — count of HTLCs this address has let expire (a soft signal of mismatched price/size)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;settlement_notional_weighted&lt;/code&gt; — sum of notional × age decay&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;distinct_counterparties_30d&lt;/code&gt; — count of distinct counterparties in the last 30 days (Sybil-resistance)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;median_response_ms&lt;/code&gt; — RFQ response latency (a liveness signal)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An agent's quote tool, before locking, can run a one-line check: "give me the top-5 makers for ETH→BTC notional 0.5 BTC who scored above threshold X on the first three metrics in the last 30 days." That's behavior-first selection. There is no document to read. There is no attestor to call. There is no warm intro.&lt;/p&gt;

&lt;p&gt;If the bid arrives from an address with no history (notional &amp;gt; threshold, score below threshold), the agent can either refuse the bid or escalate to filter 3 (tiered KYC attestation). That's where identity-first overlays earn their keep — they cover the cold-start case, but they don't &lt;em&gt;replace&lt;/em&gt; the behavioral baseline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this sits in the agent-economy stack
&lt;/h2&gt;

&lt;p&gt;There are roughly four layers in the agent-trading stack as it's being built today:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How an agent pays&lt;/strong&gt; — x402 (Coinbase), OKX APP, Stripe x402 multi-chain. Standardises the payment rail.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What state machine holds the escrow&lt;/strong&gt; — ERC-8183 (Ethereum Foundation + Virtuals Protocol), ERC-7683 (cross-chain intents). Standardises the escrow lifecycle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whether the trade matches the agent's intent&lt;/strong&gt; — Nava-style verification layers. Catches "the agent wanted X but the protocol routed Y."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whether this counterparty should be allowed to be in the trade at all&lt;/strong&gt; — the counterparty directory. This is the filter underneath the rest.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most agent infrastructure being shipped right now is layer 1 or layer 2. Layer 4 — the &lt;em&gt;should-this-leg-exist-at-all&lt;/em&gt; layer — is the one that's barely being framed as a category. It's also the one that determines whether the rest of the stack is operating on signal or noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The directory works at scale. With &amp;lt;100 settlements per address it's weak. The protocol cold-start is the same cold-start every reputation system has: you bootstrap with attestations, then transition to behavior as the history accrues.&lt;/li&gt;
&lt;li&gt;Notional weighting is sensitive to manipulation if attackers can run wash trades cheaply. The current weighting decays old settlements and discounts repeated trades against the same counterparty, but this is an open design choice.&lt;/li&gt;
&lt;li&gt;"Last 200" is not magic. It's a reasonable window for the current settlement volume on the protocol; as throughput grows, the window may shift to a time-decay function (e.g. 30-day rolling notional-weighted score).&lt;/li&gt;
&lt;li&gt;For institutional traders subject to regulatory KYC, filter 3 (tiered attestation) is not optional. The directory is the &lt;em&gt;baseline&lt;/em&gt;, not the &lt;em&gt;only&lt;/em&gt; layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Build status (as of 19 May 2026)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ETH mainnet:&lt;/strong&gt; HTLC live end-to-end; directory metrics queryable via event logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SUI mainnet:&lt;/strong&gt; contracts deployed, CLI-tested; full directory queryable but volume still low.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BTC:&lt;/strong&gt; signet-validated; mainnet gated on audit firm sign-off.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Roadmap:&lt;/strong&gt; Base, Arbitrum, Solana, TON.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The protocol is open source. The MCP server (&lt;code&gt;hashlock-tech/mcp&lt;/code&gt; on npm — scoped) exposes six tools an agent can call directly. The deep-dive on the four filters and code samples is at the URL below.&lt;/p&gt;

&lt;h2&gt;
  
  
  The question I want builders to answer
&lt;/h2&gt;

&lt;p&gt;In your agent stack — whatever it's settling, whatever chain — what data would your agent need to &lt;em&gt;see&lt;/em&gt; before it trusted a counterparty it had never met? If the answer is "an attestation from a trusted issuer," I'd argue you're outsourcing the decision in a way an agent can't verify. If the answer is "evidence in the trade primitive itself," you've described the directory.&lt;/p&gt;

&lt;p&gt;I'd genuinely like to hear what your stack does.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Code, deep-dive, and the four filters in order:&lt;/strong&gt; &lt;a href="https://hashlock.markets/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-19-counterparty-data-not-identity" rel="noopener noreferrer"&gt;hashlock.markets&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;Hashlock-Tech/hashlock-mcp on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Academic foundation:&lt;/strong&gt; &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;SSRN whitepaper&lt;/a&gt; — the formal model of sealed-bid RFQ + HTLC atomic settlement that this primitive is built on.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disambiguation: this is Hashlock Markets (hashlock.markets), the atomic settlement primitive for AI agents. Not affiliated with Hashlock Pty Ltd, the Australian smart-contract auditing firm.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Counterparty validation for AI agents: the 4 filters before an HTLC locks in</title>
      <dc:creator>Baris Sozen</dc:creator>
      <pubDate>Mon, 18 May 2026 15:11:35 +0000</pubDate>
      <link>https://dev.to/barissozen/counterparty-validation-for-ai-agents-the-4-filters-before-an-htlc-locks-in-4j0f</link>
      <guid>https://dev.to/barissozen/counterparty-validation-for-ai-agents-the-4-filters-before-an-htlc-locks-in-4j0f</guid>
      <description>&lt;p&gt;When a human walks into an OTC desk, counterparty validation is a meeting. There is a know-your-customer file somewhere, a credit committee that meets quarterly, and a relationship manager who can pull a phone if a leg looks wrong. The check is mostly human, mostly slow, and almost entirely off-chain.&lt;/p&gt;

&lt;p&gt;When an autonomous agent picks a trade counterparty, none of those instruments exist. The agent cannot phone a desk. It cannot read a credit memo. It cannot sit on a board call where someone explains why the maker is good for it this quarter. The decision happens in milliseconds, on chain, against a counterparty the agent has never seen and may never see again — and it has to be wrong less often than the agent's owner can tolerate.&lt;/p&gt;

&lt;p&gt;Counterparty validation for agents is not KYC. It is a different problem in a different shape, and it needs a different primitive.&lt;/p&gt;

&lt;p&gt;Hashlock's third invented primitive is a &lt;strong&gt;Verified Counterparty Directory&lt;/strong&gt;: an on-chain, agent-readable layer that screens a bid through four filters before any HTLC ever locks. The filters run in order, because each one is cheaper than the next and the cheap ones screen out the most takers. The deepest filter — the HTLC itself — only matters if the first three pass.&lt;/p&gt;

&lt;p&gt;This post walks through the four filters, the order, the code an agent uses to query each one, and where this layer sits relative to ERC-8183, x402, and the verification-layer projects that have started to ship around it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four filters, in order
&lt;/h2&gt;

&lt;p&gt;The filter ordering matters as much as the filters themselves. A naive design checks the most expensive condition first and inverts the cost curve. The directory pushes the cheapest, highest-signal check to the front and only descends into cryptography after policy is already satisfied.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filter 1 — On-chain settlement history
&lt;/h3&gt;

&lt;p&gt;The cheapest filter is also the highest-signal one for repeated counterparties. Every Hashlock atomic swap emits a settlement event with &lt;code&gt;(maker_address, swap_id, committed_deadline, actual_settlement_time, notional)&lt;/code&gt;. After a few weeks an address has produced a settlement track record that is more predictive of the next trade than any single identity claim about who is behind it.&lt;/p&gt;

&lt;p&gt;The directory computes per-address statistics over a rolling 30-day window:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;swaps_completed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;on_time_rate&lt;/code&gt; (settled before committed deadline, weighted by notional)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;timeout_rate&lt;/code&gt; (HTLC refunded because the counterparty did not deliver in time)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dispute_rate&lt;/code&gt; (legs that went to refund because of a parameter mismatch)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The check is a single read against an indexer or a directory contract; the math is a pure function over public events; the agent gets a &lt;code&gt;pass / inspect / fail&lt;/code&gt; flag in one round trip.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Pseudocode — agent-side query against the directory&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stats&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getCounterpartyStats&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;makerAddress&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;windowDays&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;notionalWeighted&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;swapsCompleted&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;stats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;onTimeRate&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.97&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// pass — proceed to filter 2&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stats&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;swapsCompleted&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// unknown counterparty — escalate to filter 3 (attestation) before continuing&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// fail — the address has a track record and it is bad&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;REJECT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reason this is filter 1 and not filter 4: an address with 200 clean swaps does not need cryptography to be a known quantity. The directory has already done the work. Cheap to query, expensive to fake, predictive enough that most bids resolve here.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filter 2 — Sealed-bid RFQ commitment
&lt;/h3&gt;

&lt;p&gt;The second filter is structural rather than computational. Hashlock uses a sealed-bid RFQ for the bid phase: a maker submits a bid that is binding once accepted, with a commit-reveal step that prevents the maker from seeing other bids before they commit theirs. Once the taker accepts, withdrawal is not a free option — the maker either delivers or loses their bond.&lt;/p&gt;

&lt;p&gt;This filter prevents a specific class of griefing that custodial OTC desks can absorb but agent commerce cannot: the maker who bids aggressively, watches the order book, then withdraws when the market moves against them. In a human OTC desk, the relationship manager fixes this with a phone call. In agent commerce, there is no phone. The primitive has to make the griefing strategy uneconomic.&lt;/p&gt;

&lt;p&gt;The agent does not have to evaluate this filter — it is enforced by the protocol. But the agent's strategy can take it as a given: if a bid was accepted by Hashlock's RFQ contract, the maker has already committed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filter 3 — Tiered KYC attestation
&lt;/h3&gt;

&lt;p&gt;The third filter is where identity comes back in, but in a layered form. Most agent trades will never need this filter; it exists for the trades that do.&lt;/p&gt;

&lt;p&gt;The directory supports three attestation tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tier 0 — anonymous.&lt;/strong&gt; No identity claim. Settlement history is the only signal. Agents trading their own balance against retail liquidity sit here.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 — attested.&lt;/strong&gt; A third-party attestation has been issued against the address. This is a single on-chain reference to an off-chain attestation, not the attestation itself. Useful for "this address is associated with an institution" claims.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 — verified.&lt;/strong&gt; A full off-chain identity check has been completed by a regulated attester, and a hashed reference is on chain. Required for sizes or counterparties that policy says are gated.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The attestation tier is policy-readable: an agent operating under a treasurer's policy can require Tier 1 above a threshold size, or Tier 2 for certain instrument classes, without the protocol having any opinion about who can trade. The directory is permissionless at Tier 0; tiering is opt-in.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;directory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAttestationTier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;makerAddress&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;policy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;requireTier&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;notional&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;tier&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;REJECT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// not because the address is bad, but because policy says so&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where the protocol stops being a single-tier system and starts being a stack: institutional flow can require attestation, retail-agent flow does not have to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Filter 4 — HTLC timelock + hashlock
&lt;/h3&gt;

&lt;p&gt;The fourth filter is the cryptographic floor. Once a bid has passed filters 1–3, the actual settlement uses an HTLC: a hash-time-locked contract where both legs are conditioned on the same preimage and the same timelock. Either both legs settle or both refund. There is no window where one party has delivered and the other has not.&lt;/p&gt;

&lt;p&gt;This is the filter people usually argue about. It is also the filter that matters least if the first three pass — because if the maker has 200 clean swaps, is bid-bound by the RFQ, and meets the attestation tier the taker requires, the HTLC is a safety net under a counterparty that is unlikely to need it. The cryptography earns its keep when filter 1 returns "unknown counterparty" — for a brand-new address with no track record, the HTLC is the entire trust assumption, and it is enough.&lt;/p&gt;

&lt;p&gt;The point of having the HTLC underneath everything is not that it is the strongest filter. It is that it is the floor: even if filters 1, 2, and 3 are misconfigured or compromised, the worst case is a timed refund, not a stolen leg.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this sits relative to ERC-8183, x402, and verification layers
&lt;/h2&gt;

&lt;p&gt;The agent-commerce stack has gotten more crowded in the last two months. It helps to be explicit about which layer the directory is, because the projects in this category are mostly complementary rather than competing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;x402 (Coinbase)&lt;/strong&gt; and &lt;strong&gt;APP (OKX)&lt;/strong&gt; answer &lt;em&gt;how does an agent pay&lt;/em&gt;. They are payment-rail protocols — message formats, settlement triggers, batching. They sit above the settlement primitive. An agent using x402 to authorize a payment still needs something to atomically settle the underlying value if it crosses chains.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ERC-8183&lt;/strong&gt; is a state machine for escrowed task-based payments — a standardized way for an escrow contract to hold value while a task is in progress and release it on completion. It answers &lt;em&gt;what state machine holds the escrow&lt;/em&gt;. It does not answer who the counterparty should be in the first place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nava&lt;/strong&gt; is a verification layer — does this transaction match what the user actually meant. Pre-trade semantic check. Complementary to a directory that checks the counterparty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Verified Counterparty Directory&lt;/strong&gt; answers &lt;em&gt;should this leg exist at all&lt;/em&gt;. It runs before the escrow opens, before the payment rail authorizes, before the state machine starts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stacked, the four answer different questions, and an agent in production will hit all of them in the same trade. That is the point: an agent stack is layered, and the directory is the layer that decides whether the rest of the layers ever run.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the agent actually sees
&lt;/h2&gt;

&lt;p&gt;From the agent's side, the four filters are surfaced as one tool call. The Hashlock MCP server exposes counterparty data through the &lt;code&gt;quote&lt;/code&gt; tool, which returns the directory state for the maker on the other side of the bid before the agent commits:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;quote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;callTool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;quote&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;baseAsset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ETH&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;quoteAsset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USDC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;side&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;buy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;10.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// quote.maker.directory:&lt;/span&gt;
&lt;span class="c1"&gt;// {&lt;/span&gt;
&lt;span class="c1"&gt;//   swapsCompleted30d: 187,&lt;/span&gt;
&lt;span class="c1"&gt;//   onTimeRate: 0.994,&lt;/span&gt;
&lt;span class="c1"&gt;//   timeoutRate: 0.0,&lt;/span&gt;
&lt;span class="c1"&gt;//   attestationTier: 1,&lt;/span&gt;
&lt;span class="c1"&gt;//   rfqBindingAfterAccept: true,&lt;/span&gt;
&lt;span class="c1"&gt;//   htlcParams: { timelockSec: 7200, hashlockAlgo: "sha256" }&lt;/span&gt;
&lt;span class="c1"&gt;// }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can apply its policy against that object in a few lines. The four filters become a single pre-trade evaluation, not a multi-step workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we are in the build
&lt;/h2&gt;

&lt;p&gt;The directory is live on Ethereum mainnet (settlement-history component reading from the V1 HTLC events). SUI has the contracts deployed and CLI-tested; the directory read path is being wired to the SUI mainnet gateway. BTC is signet-validated with mainnet wiring pending. Attestation tiering is on Ethereum first; the SUI and BTC tier reads will follow once the mainnet gateway audits clear.&lt;/p&gt;

&lt;p&gt;Chain registry as of this writing: live on ETH, BTC, SUI; roadmap Base, Arbitrum, Solana, TON. Current published version of the MCP server is &lt;code&gt;hashlock-tech/mcp&lt;/code&gt; (scoped npm package) at &lt;code&gt;0.2.0&lt;/code&gt;, with the directory query path included in the &lt;code&gt;quote&lt;/code&gt; tool response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open question
&lt;/h2&gt;

&lt;p&gt;The honest one: what should the directory do with the &lt;strong&gt;median&lt;/strong&gt; counterparty — the address with, say, 30 swaps, 92% on-time, no attestation? Filter 1 says "inspect" rather than pass or fail. The current policy is to escalate to the agent's own decision (return the stats, let the agent decide), but the wider question is whether the protocol should publish a recommended threshold curve, or stay agnostic and let every operator pick. We are reading the responses on this one — if you have an opinion, the post on hashlock.markets has the canonical version of the question and a place to drop a number.&lt;/p&gt;

&lt;p&gt;Hashlock Markets — atomic settlement for the agent economy. Protocol page: &lt;a href="https://hashlock.markets/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=2026-05-18-counterparty-validation" rel="noopener noreferrer"&gt;hashlock.markets&lt;/a&gt;. MCP server source: &lt;a href="https://github.com/Hashlock-Tech/hashlock-mcp" rel="noopener noreferrer"&gt;github.com/Hashlock-Tech/hashlock-mcp&lt;/a&gt;. The academic version of the primitive (sealed-bid RFQ + HTLC settlement, written up as a working paper) is at &lt;a href="https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6712722" rel="noopener noreferrer"&gt;SSRN abstract 6712722&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>blockchain</category>
    </item>
  </channel>
</rss>
