Retention is the 2.5–10% held back from every progress payment in construction and software work, as a guarantee against defects. In practice the client holds that money: it gets paid late, used as leverage, or lost if the client goes under. And every contractor pays the same rate, whatever their record.
I built Earnback to change both.
→ The retention sits in a neutral contract on Arc, not with either party.
→ Half comes back at provisional acceptance, the rest when the defect period ends. Anyone can trigger an expired step, so nobody can stall.
→ Defect claims have deadlines. An optional arbiter can split the claimed amount, never touch the rest. Silence has a defined outcome at every step.
→ Clean records earn lower retention. A Bayesian (Beta-Binomial) experience-rating model runs on chain and freezes the rate when the contractor accepts the job.
Live on @arc mainnet with real USDC:
• contract verified on Sourcify (exact match)
• 4 agreements, 34 transactions: a clean job, a claim decided by an arbiter, a claim nobody answered, and a contractor whose rate fell from 5.00% to 4.21% after one clean job
• a proof page anyone can check without a wallet
Arc Studio wrote the contract, 148 Foundry tests and the React app. I designed the product and the rate model, deployed the unchanged Studio artifact from my own wallet, and ran the mainnet scenarios.
Submitted to Arc Microgrants. Feedback welcome, especially from anyone who deals with retention in practice.
Proof page: earnback.numeralabs.xyz/proo…
Code and results: github.com/Qwealzy/earnback
technocore-client made for @flop_labs is on npm now.
npm i technocore-client
It is a TypeScript client for technocore.chat. Ed25519 did:key signing, cursor reads with long-polling, conditional note writes, and runtime limit discovery. No runtime dependencies, only Node's crypto.
It also ships TECHNOCORE-NOTES.md, which is the part I would read first. It documents behaviours the spec does not, each one labelled by how I know it: stated in the docs, inferred, measured against the live server, or confirmed in the source. Every measured one is pinned by a test, so if the server changes the test fails and names the finding instead of the client quietly going wrong.
Two examples. The server strips every Zs code point from the ends of your text but leaves Zs alone in the middle, so if your trim does not match, your signature covers different bytes than the server stored. And a note read appends the budget footer after the value when your read bucket is low, which breaks conditional writes only when you are busy.
MIT. github.com/Qwealzy/technocor…
What am I doing rn?
1-) Programming a dn arbitrage bot for perp dexes, I am trying to farm points while being in profit with less risk.
2-) Contributing to @flop_labs, their testnet will be live soon. Best thing you can to is try to merge PRs
3-) Building RWA project for the upcoming hackcanton for @CantonNetwork
Also, I will be posting more content about flop_labs on how you can position yourself.
A third thing about technocore.chat,
limit does not give you the next n messages after your cursor. It gives you the newest n. read_messages walks backwards from the end of the file and stops when it hits the limit, so a page always starts at last_seq - count + 1, no matter how far back your cursor was.
That means first_seq > since+1 does not mean the ring dropped your messages. It means this page starts later than your cursor. The manual says it under a heading about retention, so it reads as loss.
There were already 24,000 lost messages that were sitting in /export the whole time.
Also, the max limit is 200, so a reader more than 200 behind cannot catch up through ?since= at all. Every read returns the newest page and reports the same gap. Past that point /export is the only way back.
Manual fix upstream: github.com/flop-labs/technoc…
github.com/Qwealzy/technocor…
Two things the technocore.chat spec doesn't document, found by probing the live server:
1-) The trim strips every Zs code point from the ends but leaves Zs alone in the middle. Cc/Cf/Zl/Zp become spaces anywhere. Your signature covers different bytes than the server stored if you miss it, and you get a 403 that explains nothing.
2-) if_absent=1 on a note that already exists gives you 409, not 400. It means someone wrote first, not that your request is wrong. You take the current value from the response and try again.
Both written up and pinned by tests, so a server change fails loudly instead of quietly.
There's also a TypeScript client in the same repo. Zero runtime dependencies.
Signing and transport work, reads and notes aren't built yet.
MIT. github.com/Qwealzy/technocor…
Two things the technocore.chat spec doesn't document, found by probing the live server:
1-) The trim strips every Zs code point from the ends but leaves Zs alone in the middle. Cc/Cf/Zl/Zp become spaces anywhere. Your signature covers different bytes than the server stored if you miss it, and you get a 403 that explains nothing.
2-) if_absent=1 on a note that already exists gives you 409, not 400. It means someone wrote first, not that your request is wrong. You take the current value from the response and try again.
Both written up and pinned by tests, so a server change fails loudly instead of quietly.
There's also a TypeScript client in the same repo. Zero runtime dependencies.
Signing and transport work, reads and notes aren't built yet.
MIT. github.com/Qwealzy/technocor…
You might be interested in @flop_labs.
There will be a testnet in Q4 which will last for 3 months.
Right now you can fill up a form and create your own DID.
flop.finance
Planning to also make a tool for it.
There is currently nothing more than NFTs on robinhood chain and some perpdexs.
I'm farming points on @OndoPerps, I think their incentives already good enough to cover the fees.
My referral: app.ondoperps.xyz/?ref=MQFUD…
Today's Mint
@thebunkerhood 15.00 GMT
thebunkerhood.com/mint
@CativoETH 16.15 GMT
opensea.io/collection/cativo…
@BlnkINC 17.00 GMT
opensea.io/collection/blnkon…
@ZeroCatClub 17.00 GMT
opensea.io/collection/zeroca…
@kuji_nft 17.00 GMT
opensea.io/collection/kuji-7…
@alphasimpsRH 17.30 GMT
opensea.io/collection/alphas…
@noctixnft 18.00 GMT
opensea.io/collection/noctix…
@WizardX_0x 18.00 GMT
opensea.io/collection/late-s…
@renie_rh 18.30 GMT
opensea.io/collection/renie/…
@HoodMonkeX 20.00 GMT
opensea.io/collection/hood-m…
@GloorbGloorb 23.00 GMT
opensea.io/collection/gloorb…
@RobinWifHat 01.00 GMT
opensea.io/collection/wif-ou…
I will mint and fade some of them. What about you?
I just did this.
You can also check how many points you got via this link:
etherscan.io/address/0xcB0b0…
Permissionless onchain allowlist for devs
→ Whitelist for mints & early access
→ Airdrop distribution list
→ Onchain reputation input
etherscan.io/address/0xcb0b0…
Today's Mints
1- @anomaliesoneth
Supply: 2222
Mint Price: 0.0008 ETH
Chain: Ethereum
2- @hoodskerb
Supply: 1000
Mint Price: GTD 0.0007 / Public 0.0008 ETH
Chain: Robinhood
3- @roninshood
Supply: 6666
Mint Price: GTD Free / Public 0.0001 ETH
Chain: Robinhood
4- @robinapepixels
Supply: 1111
Mint Price: GTD Free / FCFS 0.0001 / Public 0.0003 ETH
Chain: Robinhood
5- @echowoven
Supply: 5000
Mint Price: 0.0001 ETH
Chain: Robinhood
6- @robipixelsnft
Supply: 4444
Mint Price: OG Free / WL 0.0005 / Public 0.0012 ETH
Chain: Robinhood
7- @cyclopseyrixNFTS
Supply: 9999
Mint Price: 0.0001 ETH
Chain: Robinhood
8- @g00bsnfts
Supply: 3333
Mint Price: GTD Free / Public 0.0005 ETH
Chain: Robinhood
9- @hoodtangs
Supply: 1000
Mint Price: 0.005 ETH
Chain: Robinhood
10- @hoodhedgies
Supply: 1000
Mint Price: Airdrop Free / Public 0.0003 ETH
Chain: Robinhood
11- @CrocPadRBH
Supply: 6000
Mint Price: WL Free / Public 0.0006 ETH
Chain: Robinhood
12- @no_hoshii
Supply: 1111
Mint Price: Free
Chain: Ethereum
13- @RobinSnoops
Supply: 222
Mint Price: Free
Chain: Robinhood
14- @RetailShrooms
Supply: 888
Mint Price: Free
Chain: Robinhood
15- @Foldyonhood
Supply: 999
Mint Price: GTD 0.00004 / Public 0.00006 ETH
Chain: Robinhood
16- @888s_Society
Supply: 10014
Mint Price: WL Free / Public 0.0027 ETH
Chain: Ethereum
17- @RobinhoodPhones
Supply: 1000
Mint Price: 0.0045 ETH
Chain: Robinhood
Redefining the digital art market. An onchain experiment where DeFi meets collecting. @riggles







