
The alarm screamed at 12:47 PM.
Val lunged across her bed, fumbling for the tablet. Her fingers were clumsy with sleep, and she nearly knocked the device onto the floor before she managed to silence the noise. The wall clock in the kitchen read the same time—she’d slept for nearly ten hours, longer than she’d intended.
Her father was gone again. A note on the kitchen table: “Double shift. Food cubes in the fridge. Don’t stay up too late.”
Val grabbed the tablet and stared at the swap status screen.
Chain A (her lock): 13:47:22 remaining
Chain B (Dara’s lock): 01:47:22 remaining
Her heart stopped.
One hour and forty-seven minutes.
Dara hadn’t revealed yet. In fact, Dara’s lock still showed as PENDING—not even funded. The blue box that should have contained 4,800 Credits was empty, showing only a placeholder: AWAITING COUNTERPARTY FUNDING.
Val refreshed the page. Then again. Then a third time.
Nothing changed.
“No, no, no.” She opened the chat window. HashlockHero was offline. The last message was from last night: “Same time tomorrow. Don’t be late.”
She typed frantically:
PreimageSeeker: “Dara? Where are you? Your lock isn’t funded. The timer is running.”
She stared at the screen. No response. The message sat there, unread.
Val’s mind raced through possibilities. Network congestion? Chain B was known for unpredictable traffic—sometimes transactions took hours to confirm. But Dara was an experienced broker. She would have accounted for that. She would have funded the lock immediately after Val completed hers.
Unless something had gone wrong.
Unless something had always been wrong.
Val pulled up Chain B’s public ledger. She knew how to read it—the Hash Club had spent three sessions on cross-chain explorers. She typed in the contract address Dara had provided and watched the transaction history load.
Nothing.
No outgoing transactions from Dara’s wallet. No lock at all.
The address was empty.
Val felt the floor drop out from under her. She checked again. Then a third time, using a different explorer. Same result.
Dara hadn’t funded the swap.
Why?
She forced herself to breathe. Panic wouldn’t help. She needed information. She needed to understand what was happening before she made a move.
The first thing she did was check Dara’s reputation again—deeper this time. Not just the positive reviews and the trust rating. She went to page two of the search results. Page three. Page four.
Most of it was boring: “Swap completed successfully.” “Would recommend.” “Fair rates.”
But on page six, buried under a mountain of noise, she found something.
A username she didn’t recognize: LostPreimage.
The post was from two years ago, in a now-archived forum called SwapSafety. The thread title was short: “Warning: HashlockHero timed out on me.”
Val clicked.
The post was brief—almost too brief:
“I entered an atomic swap with HashlockHero (Dara). She locked her funds. I locked mine. Then she went silent. Her timelock expired. She didn’t reveal. My timelock was longer, so my funds returned after 24 hours. But I lost three days of opportunity cost, and the exchange rate shifted. She cost me money. When I confronted her, she blamed ‘network issues.’ I don’t buy it. Be careful.”
The post had three replies. The first was from a moderator: “Do you have proof?”
LostPreimage never responded.
The second reply was from HashlockHero herself:
“This user is mistaken. I had a family emergency and couldn’t access the Neutral Zone. The swap failed due to circumstances beyond my control. I refunded his fee after the fact. The record has been corrected.”
The third reply was from the moderator again: “Dispute resolved. Thread locked.”
Val stared at the screen.
Family emergency. Circumstances beyond my control.
It could have been true. People had emergencies. Swaps failed for legitimate reasons. Dara’s reputation was still 94%—one complaint in two years wasn’t a pattern.
But the thread had been locked. The complaint deleted from most search results. And LostPreimage had never returned to defend himself.
Val felt the small, cold weight of doubt settle in her chest.
She checked the timer again.
Chain B: 01:22:15 remaining
Still no lock. Still no Dara.
She tried calling Dara through the chat interface. No answer. She sent a second message: “Please respond. I need to know you’re still there.”
Nothing.
Val thought about pulling out. She could revoke her lock—no, she couldn’t. That was the whole point of the timelock. Her funds were frozen until the 24 hours expired. She couldn’t cancel even if she wanted to.
She was committed.
Stupid, she thought. So stupid. You trusted someone you met on a forum.
But what choice did she have? The official exchanges were banned. The Warden had made sure there was no legal way to convert Aureus to Credits. The only path to Mira’s medicine was through the shadows.
Val pulled up the medical readout again. Mira’s blue line, still sloping downward. Twenty-seven days left.
She couldn’t afford to give up.
So she waited.
The hours crawled.
Val paced her apartment. She ate a food cube without tasting it. She checked the swap status every five minutes, then every three, then every sixty seconds.
At hour eleven—with sixty minutes left on Dara’s timelock—something changed.
The Chain B box flickered.
A new transaction appeared on the ledger.
INCOMING: 4,800 CREDITS LOCKED IN HTLC. TIMELOCK: 01:00:00. HASH: a4b8f2c9...
Val nearly dropped the tablet.
She funded it.
Dara had locked her Credits. With only one hour to spare.
The chat window pinged.
HashlockHero: “Sorry for the delay. Network congestion on Chain B. Had to broadcast the transaction six times before it confirmed. Everything is good now.”
Val stared at the message. Her relief was immediate but not complete. Something about the timing bothered her. Eleven hours of silence, then a lock at the last possible moment? That wasn’t congestion. That was cutting it close.
PreimageSeeker: “You scared me. I thought you had backed out.”
HashlockHero: “I wouldn’t do that. My reputation depends on completing swaps. You’ll get your Credits.”
PreimageSeeker: “You have the preimage. You can reveal any time. Why wait?”
HashlockHero: “I’ll reveal before my timelock expires. Don’t worry. Just be ready to claim when I do.”
Dara went offline again.
Val checked the timers.
Chain B (Dara’s lock): 00:58:33 remaining
Chain A (Val’s lock): 12:58:33 remaining
Dara had an hour to reveal the preimage. Val had thirteen hours after that to claim the Credits.
On paper, everything was fine.
But Val couldn’t shake the feeling that something was wrong.
She went back to the complaint thread—the one about LostPreimage. She read it again, looking for details she’d missed. The timestamps. The dates. The moderator’s response.
“Dispute resolved. Thread locked.”
Who had locked it? The moderator, or someone else?
Val clicked on the moderator’s profile. It was a generic account—no personal information, no history outside of that forum. The account had been created three days before the dispute was resolved.
That was strange.
She clicked on LostPreimage’s profile. Also sparse. Also created shortly before the post.
Val’s stomach tightened.
What if the entire thread was fake? What if someone had created it to make Dara look suspicious—or to make a rival broker look bad?
But what if it was real, and the moderator had been bribed to lock it?
She didn’t know. She couldn’t know. Not without more information.
Val opened a new browser window and searched for HashlockHero on three other forums. The results were mostly positive—but on the fourth forum, she found another anomaly.
A user named CryptoSkeptic had posted a question six months ago: “Has anyone else had delays with HashlockHero? She took 11 hours to lock her side of a swap with me. Nearly missed the timelock.”
There were no replies.
Val’s pulse quickened.
Eleven hours. That was exactly what had happened today.
She searched for CryptoSkeptic’s other posts. Most were mundane—questions about exchange rates, complaints about network fees. But one post stood out: a reply in a thread about timeout attacks.
“The real risk isn’t someone stealing your funds—it’s someone stalling until your timelock expires, then claiming your funds while their own timelock is still active. The asymmetry is the vulnerability. Always check your counterparty’s lock confirmation time.”
Val read the sentence three times.
Stalling until your timelock expires.
That was the classic timeout attack. One party delays revealing until the other party’s lock expires, then claims the funds without ever providing their own.
But that only worked if the attacker had the preimage.
Dara didn’t have the preimage. Val had never given it to her.
Unless.
Unless Dara didn’t need the preimage. Unless she had another way to claim Val’s funds.
Val’s mind raced through the possibilities. Could Dara brute-force the preimage? The hash was 64 characters—practically unbreakable with conventional computing. But there were rumors—whispers in the darkest corners of the Neutral Zone—about quantum decryptors. Machines that could reverse hash functions in hours instead of centuries.
The Warden denied they existed. Most experts agreed.
But most wasn’t all.
Val checked the timer again.
Chain B: 00:42:11 remaining
Dara had forty-two minutes to reveal the preimage.
Val sent another message:
PreimageSeeker: “Dara, you need to reveal now. The timer is running.”
No response.
PreimageSeeker: “Please. My sister is sick. I can’t afford to lose this.”
Still nothing.
Val watched the seconds tick down. Thirty minutes. Twenty. Ten.
At five minutes remaining, Dara came online.
HashlockHero: “I need more time. My wallet is having authentication issues. Can you extend your timelock?”
Val’s blood ran cold.
Extend your timelock.
That wasn’t possible. The contract was immutable. The timelock was coded into the blockchain. No one could change it—not Val, not Dara, not even the Warden.
PreimageSeeker: “I can’t. The contract is fixed. Only you can reveal. You have the preimage. Just do it.”
HashlockHero: “I don’t have it.”
Val stared at the screen.
PreimageSeeker: “What do you mean you don’t have it? I gave you the hash. The preimage is the secret. You have to reveal it.”
HashlockHero: “I mean I don’t have it. I never generated a preimage. I was supposed to use yours. But my system isn’t accepting it. Something’s wrong with the hash.”
Val’s hands started shaking.
That didn’t make sense. A hash was a hash. Either it matched or it didn’t. If Dara’s system wasn’t accepting it, either the hash was corrupted—or Dara was lying.
PreimageSeeker: “That’s not how hashes work. You can’t have ‘authentication issues’ with a hash. It’s math. It either works or it doesn’t.”
Dara didn’t respond.
The timer hit zero.
CHAIN B TIMELOCK EXPIRED. 4,800 CREDITS RETURNED TO SENDER.
The blue box on Val’s screen turned red. The Credits were gone—back in Dara’s wallet.
Val stared at the red box.
The swap had failed.
No—not failed. Broken.
Dara still had Val’s Aureus locked in the Chain A contract. And now Dara had no incentive to reveal, because her own funds were already back in her control.
But Dara didn’t have the preimage. She couldn’t claim Val’s funds without it.
Unless she had another way to get it.
Val’s eyes drifted to the hash at the bottom of the contract: a4b8f2c9d1e5f7a3b2c4d6e8f9a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Sixty-four characters. Her sister’s name plus random salt.
Unbreakable.
But the rumors about quantum decryptors wouldn’t leave her alone.
She opened a new search. Quantum decryption hash reversal estimated time.
The results were technical, dense, terrifying. Most said it was impossible with current technology. But one paper—from a researcher on Chain C—claimed that a sufficiently motivated actor with access to a quantum computer could reverse a 64-character hash in approximately ten to twelve hours.
Ten to twelve hours.
Val checked her own timer.
Chain A: 11:42:00 remaining
She had eleven hours and forty-two minutes before her Aureus returned to her wallet.
If Dara—or someone working with Dara—had a quantum decryptor, they could crack Val’s preimage in that window. Then they could claim her funds before the timelock expired.
And Val would lose everything.
The chat window pinged one last time.
HashlockHero: “I’m sorry. This isn’t what I wanted. But I don’t have a choice.”
Then Dara went offline.
Val sat in the silence of her apartment, the wall clock ticking, the red box glowing on her screen.
She had a secret. She had a preimage.
But if someone could break it, the secret wouldn’t save her.
She needed a new plan.
She needed to understand who she was really dealing with.
And she needed to do it before the timer ran out.
Table of contents:
Introduction
Chapter 1: Two Chains, One Prison
Chapter 2: The Hashlock Agreement
Chapter 3: A Secret Preimage
Chapter 4: The Timeout Problem <<<<<< NEXT
Chapter 5: The Uncooperative Counterparty
Chapter 6: The Trustless Escrow
Chapter 7: A Cross-Chain Hunt
Chapter 8: The Reveal
Chapter 9: Settling the Swap
Chapter 10: Interlinked
![]()