ASA Compass

How this marketplace works,
and how to check that it does

A description of mechanisms, not a pitch. Every rule below was made to refuse a real transaction on a named contract you can go and interrogate yourself, and the last section tells you how. Where something has not been built, or cannot be, it says so in the same plain words as the rest.

Application 770868027 Test network SHA-256 fa74919269d4e64f 11 September 2026

80 rules that actually refused a transaction built to break them
2 shown unreachable, by refusals rather than by argument
7 security reviews, across six versions of the contract
0 known defects that can cost anyone a piece or their money
Contents

Printing to PDF keeps this page exactly as you see it, dark background and all. In the print dialog, turn Background graphics on and Headers and footers off: the page numbers and the footer rule are part of the document itself.

1The object this document describes

Name the application and the fingerprint, not the project. Everything after this section is about that exact object and nothing else.

Application 770868027, on Algorand's test network. Approval program of 6,429 bytes, fingerprint fa74919269d4e64f. Quote that number and that fingerprint rather than the name of the project: two versions of the same contract carry two different fingerprints, and a green check on one establishes nothing about the other.

How you check you are looking at the right object: ask the network for the application's program and compute its fingerprint yourself. If it does not match, everything below is about something else.

This is a test network, and nothing here has ever charged anyone

Application 770868027 answers on TestNet and returns 404 on MainNet. No ASA Compass contract has ever taken a real commission from a real sale. Earlier versions of this document said the live instance, which read as though a market were running; it is not, and the wording has been corrected everywhere rather than footnoted.

A successor is written and not engraved. It carries the ceiling on commission, the staking scale and the currencies described in Part III. The refusals recorded throughout Part II were obtained on the contract above, not on the successor, and every one of them will be measured again against whichever program is finally engraved on MainNet.

Describing the successor as though it were the object of this document would make the text carry guarantees nobody can check, which is exactly the white paper of intentions this project refuses to write. Leaving it out would let you believe that what you read is what you will use. So it is named here, in the first section, rather than buried at the end.

2Why this marketplace exists

Not a gap in the market. A wreck: platforms died while their contracts kept running, and the pieces they listed are still there with nobody indexing them.

On Algorand, a token is called an ASA. Tens of thousands of non-fungible ones were minted in 2021 and 2022, at the dawn of the ecosystem, by isolated creators and small communities. Most of them exist nowhere. The large marketplaces only ever listed complete collections, promoted on social media and integrated by hand. Everything else, which is the majority, cannot be found, browsed or traded, even though the tokens are still on chain and people still hold them.

Then the marketplaces themselves went. Measured by real HTTP requests, not recalled. Every line carries the date it was taken, and the reason is in the note below the table.

PlatformAddressState on 11 September 2026
AB2 Galleryab2.galleryGone — does not resolve. Its escrow still holds the largest pile of anyone's pieces
ZestBloomzestbloom.comGone — does not answer
Shuflshufl.appGone — HTTP 530, origin unreachable
Asalyticasalytic.appGone — HTTP 404
Dartroomapp.dartroom.xyzGone — does not resolve
AlgoGemsalgogems.ioGone — does not resolve. It answered in August
NFT Explorernftexplorer.appParked — answers 200, serves a parking page that says so in its own markup
AlgoXNFTalgoxnft.comGone and repurposed — the domain now serves an online betting site
Rand Galleryrandgallery.comAnswers, but not as a marketplace — the domain now serves a lending platform
Exa Marketexa.marketAlive — a full marketplace. It was down for a time and came back
allo.infoallo.infoAlive — the reference explorer
Vestigevestige.fiAlive — DeFi analytics
Why every line carries a date, and why you should redo this

Gone is not a state. It is a reading. A marketplace can be dark one month and back the next: Exa Market was listed here as gone, and it is not. It was down for a time and it came back, and the entry that said otherwise had already been corrected in this project's own notes without this table hearing about it.

So a verdict with its date is information and a bare verdict is a trap, including the ones in the other direction: a site that answers today can be a shell tomorrow. Redo the ten requests rather than trusting this table, which is the only thing it is really for. It took under a minute to measure, and three of its ten lines had gone stale in a fortnight.

The fact that decides the whole project

A dead marketplace does not take its contracts with it. Listings made years ago are still open on chain, still executable, and nobody shows them any more. The pieces are not lost; they are unindexed. That is a cataloguing problem, not a blockchain problem, and it is the one thing this project is built to fix.

How much is actually sitting there

The escrows were swept on 11 September 2026, 307,160 applications read page by page in 169 seconds. A contract is recognised by the vocabulary of its stored state, never by the fingerprint of its program, which changes with every version.

Whose escrowLive applicationsPeriod of the listings
AB2 Gallery, sales14,732June 2021 → July 2023
AlgoXNFT and Exa Market, sales (one shared contract)11,476Nov 2021 → Sept 2026
AlgoGems, sales8,568March 2022 → Sept 2025
AlgoGems, auctions990—
AlgoXNFT, auctions315—
ZestBloom31Feb 2022 → —
Shufl, Asalytic, Dartroom, NFT Explorer, Rand Gallery—no contract identified

The cold, certain floor is AB2 Gallery: 14,732 listings whose most recent is three years old. A separate measurement reached it by another route entirely, walking the 918,261 transfers signed by that marketplace, and found 14,546 pieces still deposited, belonging to 4,523 people, 1,992 of whom hold exactly one. Those two numbers count different things — listings against pieces still in escrow — and two independent instruments landing within 1.3 per cent of each other is what makes the measurement worth quoting.

And the largest pile is not abandoned at all

Exa Market and AlgoXNFT share one contract. The state vocabulary identifies a FAMILY of contracts, not a brand, and this one is alive: its most recent listing is dated 7 September 2026, four days before this document. Around a fifth of the pile was deposited in December 2024 by an account whose address begins with the marketplace's own name.

So two lines of the table above describe brands whose pieces sit in the same escrow, and the chain alone does not separate them: the fee account is identical on a listing from 2023 and one from 2026, and every listing is created by its own seller. Pouring those 11,476 listings into a page of lost property would announce as abandoned what is on sale today, on a site that works. The distinction costs nothing to state and everything to get wrong.

So ASA Compass is not one more marketplace. It is the one that repairs that abandonment by indexing what the others dropped. Everything in Part III follows from it: a royalty offered to every creator rather than a selected few, because their original platforms are gone; a marketplace that shows you what is for sale elsewhere, because nobody else can.

Image slot 1 1600 × 900 px · 16:9
The first version of ASA Compass, and the wall it hit. A screenshot of the original site, where every collection was a hand-composed page and every piece a link pasted by hand to an external explorer. It is the picture of the method that could not keep up with a chain holding tens of thousands of assets, and it is why the catalogue is now built by indexing rather than by typing.

3What the index holds, and what it leaves out

A catalogue that says what it excludes is worth more than one that implies it holds everything.

The chain was swept rather than searched. Asking the public indexer for a name only matches a literal substring: Punk finds PUNKY, while OG Punk finds nothing at all, because that exact string does not exist. A catalogue cannot be built by looking up names you already know. So the whole window was swept, asset by asset, and the index is ours.

2021–2022, from every asset created to the objects kept

Of 6,468,636 assets created in 2021 and 2022, 4,570,783 were fungible tokens, 6,302 were technical receipts, and 1,891,551 were kept as collection objects Assets created on chain, 2021–2022 6,468,636 Fungible tokens, set aside 4,570,783 70.7% Technical receipts, set aside 6,302 0.1% Collection objects kept 1,891,551 29.2% Of those kept, limited editions 26,799 Distinct creators across the window 37,624
The three parts add up to the whole, exactly. 4,570,783 plus 6,302 plus 1,891,551 is 6,468,636, which is what makes this a split rather than an estimate. The sweep took 15.5 minutes across 120 ranges run eight at a time. Source: sonde/resultats/totaux-corpus.json, counted 11 September 2026, from the sweep of 28 August 2026.

Why the usual definition of an NFT had to be widened

The common test for a non-fungible token is total == 1 and decimals == 0. Applied here, it empties the catalogue of the very thing this project is looking for.

One of the oldest mints on Algorand, 1800's Non Fungible Tokens, has a total of twenty. It is not a unique piece, it is a limited edition: twenty copies of the same token. The usual test threw it out, along with Newspaper Graphics (edition of fifteen) and the whole Print Series (editions of fifty). On that one creator, widening the definition took the catalogue from 8 objects to 53. Collections of 2021 use that form heavily, which is plausibly one reason the large platforms never listed them: their definition of an NFT cannot see them.

The definition used here: a collection object is either a unique piece (total == 10^decimals, which also covers fractional ARC-3 pieces) or a limited edition (decimals == 0, a run between 2 and 10,000, and a media URL). The URL requirement is what keeps small community currencies out: they point at no media.

A threshold that is a judgement, and says so

The ceiling of 10,000 copies is not a truth. It is where a token without decimals stops being a collectible and starts being a currency, and nobody has established that number. It lives in one named constant so it can be changed rather than argued about, and this document would rather say so than present it as a finding.

What is deliberately not in the catalogue

Entries that are not collections at all. Some catalogue keys turn out to be aggregates built from a fragment of a title: a key mingo holding 257 pieces from 8 unrelated creators, because the word Flamingo was cut in two and its tail kept as a collection name. Those are the opposite defect from the one grouping fixes: they are already too merged. They are never grouped further, which would build exactly the jumble this catalogue exists to avoid.

Pieces whose media never came back. They stay in the index and say so, rather than being quietly dropped so the coverage figure looks better.

Nothing is removed for what it depicts. The catalogue organises access to sensitive content; it does not withdraw it. That is the platform's stated position, in its author's words:

Je crois que tout devrait être montré, mais je crois aussi qu'une portion de ce qui est montré devrait être assumée par ceux qui décident de le regarder. Dogebarb, 10 September 2026

Which commands three things for anyone building on this index: nothing is deleted from the catalogue on the grounds of its content; the decision belongs to the visitor, never to the platform, which only asks them to own it; and what the platform shows is not what it endorses. For an exhaustive catalogue, that is the only position that holds.

4How a piece enters the vault, and how it leaves

It enters by one gesture and leaves by four doors. Every other route was presented to the contract and refused.

It enters by a single gesture and never otherwise. The seller sends the piece to the vault in the same atomic group as their listing call. The contract reads what actually moved in that group rather than trusting an argument: you cannot misdeclare what you deposited.

Five refusals guard that entrance, all of them obtained:

What was attemptedWhat the contract answered
Deposit somebody else's piecepiece deposee par un tiers
Send the piece somewhere other than the vaultpiece mal adressee
Call without attaching any piece at allaucune piece deposee
Deposit a piece a third party can freeze or claw backun tiers garde un pouvoir sur cette piece
Deposit one of the market's own currencies as if it were a piececet actif est une monnaie du marche

The fourth deserves a word, because it protects the buyer and not the market. An asset somebody retains clawback rights over can be taken back from its buyer after the sale. The contract refuses to let it in, at all four deposit doors: listing, auction, offer, and offer acceptance. An independent review found that the offer path had been left out; it was closed, and the refusal was obtained on that exact path.

It leaves by four doors and no others: a sale, a withdrawal by the seller, the reclaiming of an expired listing by anyone at all, and the claiming of a piece the market owes. In the first three, the piece leaves along with the closing of the vault's position, once the vault holds no other copy.

5Buying: what it costs, what succeeds, what fails

The buyer pays the listed price plus the commission, and nothing else. The seller receives their price in full.

The buyer pays the listed price plus the commission, and nothing else. The commission is 2.5 per cent at most, ever, and section 3 continues below with what that ceiling means and how the rate falls beneath it. What follows here is the mechanism, measured to the unit on the test instance, on a listing at 0.5 ALGO. The rate in force on the instance that was measured was one per cent, which is where the 5,000 in the middle row comes from; the arithmetic of the mechanism is the same at any rate, and the rate itself is read from the contract rather than from this table.

What was paidOutcome
The price alone, 500,000REFUSED, paiement insuffisant
Price plus commission, 505,000Went through, 508 units of budget out of 700
More than thatWent through, and the surplus was returned

The commission is added to the price, it is not deducted from it. The seller receives their price in full. That is measured rather than inferred: on a sale of 500 units in a currency, the seller received 500, not 495. The surplus line matters too, and it comes from a defect: the contract used to require enough and keep the rest, so a buyer who rounded up, or whose interface miscalculated the commission, silently left the difference behind. That is not theft, it is worse: a quiet loss on a market whose whole promise is that you get back what you put in.

The fixed opening fee, currently 25,000 microALGO, is paid by the SELLER when they open their listing, not by the buyer. The operator can adjust it, under a hard ceiling of 250,000 that is written into the code; the attempt to exceed it is refused by frais au-dessus du plafond.

THE COMMISSION IS 2.5 PER CENT, AND THAT IS ALSO THE MOST IT CAN EVER BE. The figure is not a default setting that happens to sit at 2.5 today. It is a ceiling written into the contract's code, which cannot be changed after deployment by anyone, including its author and including whoever might own this marketplace in the future. The rate can be lowered. It can never be raised. That is a guarantee you can read on the chain yourself rather than a promise you have to take from us, and it is the reason the number is stated this way round.

Below that ceiling, the rate falls in evenly spaced tranches of what you have staked. Neither the width of a tranche nor the rate at each one is fixed in the code: both are set by the operator, adjustable after the fact, and until they are set no discount applies to anyone at all: the contract starts with tranches switched off, base rate for everyone. Each tranche's own rate is set individually rather than computed from a formula, so an operator can shape the curve, not just its slope. Adjusting any of it can only ever move the rate down from the ceiling: the contract checks the ceiling both when the tranches are set and again when a rate is applied, because a guard placed at one end only is a guard you get around from the other.

The tranches are evenly spaced on purpose, and it is not a matter of taste. An earlier version let the operator place thresholds anywhere, and working out which one a given deposit landed in took a full pass over all of them: measured at 940 units of compute out of the 700 a single ordinary transaction is granted, which refused the purchase outright, not only the discount. Someone holding a stake, even an unmatured one, could no longer buy at all. With even spacing, which tranche a deposit falls in comes from one division rather than a search, and the same call now costs 648 units: comfortably inside the budget of one ordinary transaction, with no second transaction for a wallet to compose on its own.

Two further bounds keep that scale honest, and they exist because a ceiling on the rate alone would not have been enough. A staked deposit only counts once it has matured, seven days by default: otherwise you would stake just before buying and withdraw just after, and the tiers would mean nothing. And the maturation period is itself capped at ninety days, because an operator who set it to five years would put the whole scale out of reach and so remove the discount without touching a single rate. Closing one door and leaving the window open is not a guard.

Both of those were attacked rather than assumed. A counterfeit staking application, declaring a hundred thousand billion tokens held since 2020, is not believed and pays the full rate. A deposit made at the last minute earns nothing. And the eight rules that guard how the tiers are set each refused a call built to break them.

What buying refuses, all obtained:

What was attemptedWhat the contract answered
Buy your own pieceon n achete pas sa propre piece
Pay less than price plus commissionpaiement insuffisant
Buy a listing whose deadline has passedannonce expiree

The first one is not about money. A seller buying their own listing loses only the commission, and in exchange writes a price of their own invention into the piece's history. This market's archive of real prices is its argument; a fabricated one stays in an immutable contract forever, and a single fabricated price makes a whole series doubtful.

One design fact that matters to you as a user: the asset opt-in can travel in the same group as the purchase. That is not a given, other marketplaces prevent it by locking their group size. Here, someone who discovers a piece buys it in one wallet gesture.

Image slot 3 1400 × 900 px · 16:9
One wallet gesture, start to finish. The buy screen as a collector sees it: the piece, the price, the commission named separately, and the single signature that carries the opt-in, the payment and the delivery together. It is the picture of the one design fact in this section that other marketplaces do not allow.

And if a purchase fails, it fails entirely. Payment and delivery travel in the same atomic group: nobody pays without receiving. The most common reason a gesture fails on Algorand is not the contract at all, it is that an account has not opted in to the asset it is about to receive, which costs it 0.1 ALGO of held balance.

6Auctions, the reserve, and who the guard protects

Once a bidder meets the price the seller asked for, the seller can no longer walk away. That guard protects the bidder, not the market.

An auction has a starting price and, if the seller wants one, a reserve. A reserve of zero means the starting price serves as the reserve: agreeing to open at a hundred is agreeing to sell at a hundred.

Duration: one hour minimum, thirty days maximum. Both bounds refuse, by duree trop courte and duree trop longue. A bid placed in the last ten minutes pushes the end back by the same amount, with total extensions capped at twenty-four hours; without that cap, last-minute bids would postpone the ending indefinitely.

An outbid bidder is repaid immediately, rather than having their money sit until the close. It is simpler and more honest, and it avoids having to repay a crowd of losers in a single closing transaction, which the size of an atomic group would forbid anyway.

THE GUARD THAT MATTERS MOST HERE PROTECTS THE BIDDER, NOT THE MARKET. Once a bidder has met the price the seller asked for, the seller can no longer withdraw the piece: the attempt is refused by reserve atteinte, vente due. Without it, a seller could let the bidding climb and pull out at the last moment, which would make taking part worthless. Tested on an auction actually run, with a bid actually placed.

And the worst case the contract knows about, which is a winner who cannot receive. A winner is not a signer of the closing call, which anyone may make. If they have not opted in to the pieces, the delivery is rejected by the protocol and the close fails. Without a fallback it would fail forever: the seller's pieces and the winner's money would both sit in the vault with no method able to get them out. So the auction settles as though the reserve had not been met: the money goes back to the bidder, the pieces back to the seller, and each recovers their own. The seller loses the sale, which is a pity, and keeps the piece, which they otherwise would not.

Why the requirement is not imposed at bidding time instead, which is the obvious fix. It would prevent nothing: nothing obliges a bidder to stay opted in until the close, so they could opt in to bid and opt out before the end. The fallback is not a second best for want of something better, it is the only protection that holds. That argument came from the adversarial review, and it is better than the one the contract was built on.

The operator cannot help themselves to bids. They can set the share withheld from a defaulting bidder, but never above twenty per cent, and the attempt to exceed that engraved ceiling is refused by part retenue trop elevee, tested to the unit.

7Offers: money before the piece

The one path where money arrives before the goods, which is why it carries the most guards.

An offer is the one path where the money arrives before the goods, which is why it carries the most guards. The offerer puts money in the vault against a piece that is not theirs yet, and nothing guarantees the owner will want to sell.

The seller deposits nothing. The piece only moves at the instant its holder accepts, inside the same atomic group. Someone who will not put their collection into an escrow therefore still has a complete way to sell.

The contract requires the offerer to have opted in to the piece before offering on it, rather than letting them pay for nothing: acceptez la piece avant d offrir dessus. And it refuses an offerer who has opted out since, because otherwise the seller would meet a protocol error naming neither the offer nor the reason, over something they did not cause and cannot fix.

An offer can carry a deadline. Past it, the offer can no longer be accepted, offre expiree, and anyone can return it to its author. Before it, that return is refused by pas encore expiree. The same offer refused both, before and after: it was time that changed the outcome, not the way the transaction was built.

When the sale concludes, the piece goes directly from seller to buyer, without passing through the vault. That detail comes from a defect. An earlier version routed it through the vault, which had never opted in to a piece somebody merely made an offer on, so no offer could ever complete on a one-of-one, which is to say on nearly the whole catalogue. It was the feature ranked first in the project's own research, and it was unusable at a hundred per cent. The direct route also avoids tying up another 0.1 ALGO, and avoids the vault holding, even for an instant, property nobody asked it to keep.

An offer in a currency pays for its own storage. The offerer sends the necessary ALGO in the same group, failing which depot en ALGO manquant pour la boite. That closes a defect from the adversarial review: offers in a currency were being financed out of the vault, and repeated offers would have drained it.

8Debts: what could not be paid to you comes back to you

An account can stop being able to receive an asset between the moment it is owed something and the moment it is paid. The contract writes down the debt rather than holding or blocking.

The problem debts solve is ordinary and involves no bad actor. An Algorand account must have opted in to an asset to receive it, and it can opt out at any time, including between the moment something is owed to it and the moment it is paid. People opt out to recover the 0.1 ALGO each position ties up, usually without thinking about what is still owed to them.

The contract neither blocks nor keeps: it records a debt in that person's name, which they claim once they have opted back in.

Tested to the end, with balances compared before and after:

  • Money comes back to the exact figure. A seller paid in a currency they had opted out of cannot claim before opting back in, acceptez cette monnaie avant de reclamer; once they do, they receive their price in full.
  • A one-of-one piece returns to its owner. A seller who opts out of their own piece while it sits in the vault, then withdraws their listing, gets it back after opting in again.
  • The withdrawal itself was not blocked, and that is the point. The contract could have refused it on the grounds that the piece cannot be handed back. That refusal would have sounded prudent, and it would have locked the piece and the listing both, with no way out for anyone. Instead it records a debt and lets the listing close. Refusing cleanly can be worse than deferring.

The operator cannot sweep up what is owed to you for TWO YEARS. The attempt on a recent debt is refused by cette creance n a pas encore expire. The delay is not a comfort setting: it is the whole thing that separates this method from the confiscation the reviews closed elsewhere. Shortening it would reopen that defect by another door. And an expired debt that has not yet been swept remains claimable by its owner, because expiry is a door the operator may open, not a deadline that erases you.

A DEBT OVER A PIECE NEVER EXPIRES, AND THE ASYMMETRY IS DELIBERATE. A reader will find a two-year limit on money, none on pieces, and take it for an oversight. It is a decision, and the reason is not technical: a sum of money is fungible and replaceable; a work is not. It has an author, a history, sometimes a value to its owner that has nothing to do with its price. Recovering three forgotten ALGO after two years and taking somebody's artwork do not read the same way, even though the code makes the same gesture.

And the cost of that decision is accepted with open eyes: a single unclaimed piece makes this market impossible to close, permanently. Its storage keeps the vault's minimum balance above that of a bare account, and closing requires a bare account. That is exactly what the two-year limit prevents on the money side, and it is left open here on purpose. Adding an expiry to make the market closable would be undoing a decision, not fixing an oversight.

One fact that says who these guards really protect. Algorand does not let the creator of an asset close their position in it. A minter can therefore never end up in this situation with their own pieces. The debt mechanism protects resellers, which is to say most of the people on a secondary market, and the ones with the least recourse if a contract decides to keep what is theirs.

9Other currencies: how one enters the market, and how it leaves

The market does not only sell in ALGO, and a currency that cannot be closed would make the market itself unclosable.

The market does not only sell in ALGO. The operator can open other currencies, and a listing can be denominated in one of them.

Opening one takes three things, each with its own refusal, all obtained: that it be the operator doing it, seul l exploitant; that they have opted in to it themselves, acceptez cette monnaie avant de l ouvrir, failing which they could not collect the commissions it earns; and that it be given a floor price, un plancher est obligatoire.

EACH CURRENCY CARRIES ITS OWN FLOOR, EXPRESSED IN ITS OWN UNITS, and this is the thing to understand before reading any figure in this document. The four currencies open today carry a floor of 100 units, and since they have two decimals, that is 1.00 of their unit, not 100 microALGO. A bound written in microALGO applies to ALGO and to nothing else. That distinction was not obvious in advance: it showed up when a sale in a token was actually run on the test network, and a listing at five units was refused as being below a floor that meant nothing there.

A floor can only go down, refusal un plancher ne peut que baisser. The operator cannot raise the minimum price of a currency after sellers have settled into it.

A currency can be closed, and that is what was missing once. An adversarial review established that the market became impossible to close the moment a currency was accepted: the opt-in and its floor storage, 0.1093 ALGO, had no method that could undo them. There is now a closing method, and the four currencies open on the test instance all close in simulation, 96 units of budget each.

Two refusals guard it, both obtained: acceptez cette monnaie avant de la fermer, if the operator has opted out and could not receive what is due to them; and le coffre detient encore cette monnaie, for as long as the vault still holds units of it.

10The exempt token, and a rule that was removed rather than repaired

The best fact about this contract is a rule that was deleted, because it could be rented for the length of a single transaction.

The market can designate ONE currency that pays no commission. The designation is the operator's alone, ALGO cannot be the exempt one, refusal l'ALGO ne peut pas etre exonere, and it can only be done once: le jeton exonere est deja fixe.

This is the most useful thing in the contract, and it is made of a rule that was deleted.

An earlier version exempted anyone who held a million units of a partner token, which looked like a good way to create durable demand for it. The independent review measured something else: the contract was not reading a holding, it was reading a balance at an instant. It was enough to borrow the tokens inside the same atomic group and give them straight back. A commission of ten for an account holding three thousand tokens; a commission of zero for the same purchase with a hundred thousand tokens borrowed and returned in the same transaction, rounds 66868169 and 66868179. One large holder could have exempted the entire market by lending.

NO VIRTUAL MACHINE INSTRUCTION TELLS YOU HOW LONG AN ACCOUNT HAS HELD AN ASSET. A contract therefore cannot measure a holding, and any rule that depends on one is defeatable inside a single group. That was not a guard to strengthen, it was a rule not to write, and it was removed rather than patched.

What replaced it is not defeatable the same way: the exemption is on the currency you pay in, not on what you hold. Paying in a currency means actually parting with it, and you cannot borrow an expense.

And atomicity, here, worked against the contract instead of for it. Everywhere else it guarantees a buyer will not pay without receiving; there it guaranteed the lender would get their tokens back, which is exactly what made the instant loan free and safe. The same mechanism protects or betrays you depending on what you ask it to guarantee.

11Handover, suspension, closing, immutability

The four things an operator can do to the market itself, and the exact shape of what they cannot.

Handing over the operator role, and the warning the contract cannot give

The role is handed over in TWO steps: the operator proposes, the recipient accepts. A role sent in one gesture to a mistyped address would never come back. Proposing the null address cancels a proposal in flight, on purpose by the same gesture.

Three refusals guard it, all obtained: proposing is the operator's alone; accepting when nothing has been proposed gives aucun transfert de role en cours; and accepting a role proposed to somebody else gives ce role n a pas ete propose a ce compte. The first of those is not decorative: without it, anyone at all could take the role whenever no proposal was in flight, since the null address is the value at rest.

BUT THERE IS A WARNING THE CONTRACT CANNOT GIVE, AND SAYING SO IS BETTER THAN LETTING YOU ASSUME A GUARD EXISTS. A new operator must have opted in to every open currency, or every sale denominated in the ones they have not will fail, because the contract cannot pay them their commission.

The contract keeps no index of open currencies: it counts them, it cannot enumerate them. No guard is therefore possible at handover time, and it falls to the interface to check and to announce it. Saying where a guard is impossible is worth more than letting you believe there is one.

Suspension, and what it is really for

The operator can close off NEW deposits without touching anything already deposited. It is the only way to stop the bleeding if a defect were found after opening, and it is built so that nobody becomes a prisoner of their own property: withdrawals, claims, auction closings and reclaiming of expired listings all stay open, permanently and by design.

Tested by actually suspending a twin instance: listing was refused there by nouveaux depots suspendus, then the suspension was lifted and the state checked again. Never testing it would have meant discovering on the day of an incident that it does not work. The method moves no funds at all.

Bidding counts as a deposit, and that had been missed. A bid puts money in, so a suspended market was still taking deposits through its auctions until the guard was added there too. It is the kind of gap that only shows up when you ask which doors let value in, rather than which methods look dangerous.

Closing and immutability, in their exact form

This is the section a suspicious reader will check first, and it is the one most often said badly. Both halves are true, and they do not say the same thing.

THE CODE CANNOT BE CHANGED, INCLUDING BY ITS CREATOR. A real attempt to replace the program was presented to the test instance, signed by the account with the best chance of getting through, its creator, with a valid replacement program. The approval program rejects it. An immutability nobody has ever tried to violate is a claim, not a guard.

THE MARKET CAN BE CLOSED, BUT ONLY WHEN IT NO LONGER HOLDS ANYTHING. Writing "this contract refuses to be deleted" would be false, and verifiable as false in a few minutes: the closing method is in the public interface and nobody hid it. Closing is the operator's alone, and it is guarded. As long as the vault holds property, it is refused by le coffre garde encore quelque chose, and the condition is not declarative: the contract reads the minimum balance the protocol imposes on the vault. One open listing, one unreturned piece, one pending offer, each shows up in that figure and each blocks the close.

The whole sequence was run on a twin instance that really did disappear from the chain: closing refuses while anything remains; a piece held by a debt leaves when its owner claims it; a currency the operator opted out of only closes after opting back in; a currency the vault still held units of closes once everything else is gone; then the deletion goes through, the application becomes unfindable, and its balance returns to its operator.

And what was verified was the ABSENCE, not the success. A successful transaction receipt tells you a transaction went through. It never tells you the object is no longer there.

This is not a weakness dressed up as a feature. Total immutability would mean a dead contract could hold property forever, which is precisely the problem this project measured elsewhere, in the pieces still stuck in the escrow of a marketplace that shut down. What is true here is narrower and better: the market cannot be closed while it is holding anyone's property.

12What the contract cannot do, even if its author wanted it to

Not promises. Impossibilities, written into code that rejects its own replacement.

  • Change its own rules. The program rejects its own replacement.
  • Take a deposited piece. No path sends a piece out of the vault to anyone other than its depositor, its buyer, or its claimant.
  • Withhold more than twenty per cent of a bid, an engraved ceiling.
  • Charge a fixed fee above 250,000 microALGO, an engraved ceiling.
  • Sweep a debt before two years.
  • Raise the floor price of a currency once sellers are in it.
  • Exempt ALGO from commission, or change the exempt token once set.
  • Disappear carrying what was entrusted to it.
  • Stop anyone from reclaiming an expired listing. Anyone may do it, and the property goes back to its seller, because the destination is written in the listing rather than chosen by the caller. The worst a stranger can do is return somebody's property to them at their own expense.

That last one is worth a sentence of its own. Nothing on Algorand triggers itself; something must call. This marketplace makes those calls as a courtesy, and the point of leaving them open to anyone is that if this marketplace disappears, nobody is left a prisoner.

13The numbers, for anyone who wants to know what a gesture will cost

What a gesture costs, what comes back, and the compute budget that explains every bound above.

What a listing asks of the seller, one piece in ALGO, in microALGO:

ItemAmountReturned?
Storage for the listing36,500 plus 3,200 per pieceyes
Opt-in reserve for the asset, held by the vault100,000 per new assetyes
Provision against a piece debt22,100 per pieceyes
Provisioned exit fees4,000whatever is not spent
The market's fixed fee25,000no
Total paid190,800of which 155,800 returned

What opening a listing costs, and what comes back

Of 190,800 microALGO paid to open a listing, 155,800 come back and 35,000 do not Paid to open the listing 190,800 Comes back to the seller 155,800 81.7% Does not: the fixed fee and network fees 35,000 18.3% Of the 35,000, the market keeps 25,000 0.025 ALGO and the network keeps 10,000 0.010 ALGO
Four fifths of what a seller puts down is a deposit, not a price. The figure comes from one measurement taken end to end rather than from the table above: a seller opened a listing and withdrew it at once, and the two balances were compared before and after. Source: LIVRE-BLANC-MATIERE.md section 13, measured by the contract bench on a test-network instance.

Measured end to end on a test-network instance running this contract: a seller opens a listing and withdraws it immediately. They pay 190,800 and get back 155,800. Opening then withdrawing a listing therefore costs 35,000 microALGO, being the market's fixed fee and 10,000 of network fees, plus the fees of the transactions themselves. Everything else comes back.

Why the seller provisions the exit fees at all. The transactions the vault emits to return a piece or pay a seller cost network fees. While those were charged at zero, they fell on whoever happened to call the method, so the vault could emit nothing without a third party agreeing to pay for it. The rule underneath is that neither the market nor its operator fronts the cost of a gesture somebody else asked for, and what is not consumed comes back with the rest.

The bounds and the ceilings:

Floor price in ALGO10,000 microALGO, that is 0.01 ALGO
Floor price in another currencywhatever the operator set for it, in ITS units
Ceiling price, and ceiling bid1,000,000,000,000
Auction floor130,000, adjustable
Commission2.5 per cent at most, ever, an engraved ceiling; paid on top by the buyer
Pieces per listing in ALGO3
Pieces per listing in a currency2
Pieces per auction in ALGO2
Pieces per auction in a currency1
Auction duration1 hour to 30 days
Extension per late bid10 minutes, 24 hours in total
Delay before a debt expires2 years
Share withheld from a defaulting bidder10 per cent, engraved ceiling of 20

The compute budget, which explains every bound above. Algorand grants 700 units to an application transaction. Measured on the test instance:

GestureBudget used
List 1 piece460
List 2 pieces571
List 3 pieces682
List 4 piecesREFUSED, lot trop grand
Buy508
Open an auction523
Close an auction326

The 700-unit wall, and why a listing holds three pieces

Algorand grants 700 compute units to an application transaction. Listing one piece uses 460, two 571, three 682, and four is refused. 0 200 400 600 compute units consumed by one transaction 700 granted List 1 piece 460 List 2 pieces 571 List 3 pieces 682 List 4 pieces REFUSED before it runs — lot trop grand Buy 508 Open an auction 523 Close an auction 326
Eighteen units of headroom at three pieces. The bound of three is not a margin of caution, it is the wall. Each extra piece costs about 111 units because the contract walks the transaction group, and the fourth crosses the line the protocol draws. Any guard added to that path would bring the bound down to two. Source: LIVRE-BLANC-MATIERE.md section 13, measured gesture by gesture on a test-network instance.

At three pieces there are eighteen units of margin left. The limit of three is not a cautious setting, it is the wall. Each further piece costs about 111 units, because the contract walks the transaction group.

The ceiling bid counts UNITS of a currency, not value. A currency with a very large supply reaches it without any real fortune behind it, and a currency with many decimals reaches large unit counts quickly. Worth knowing before opening one.

14The theme of twenty-five

Decided · four of six constants already carry it

Every charge on this platform is a twenty-five. Learn the number once and the whole fee schedule follows.

Partout où on a des frais, on dirait que ça devient ma règle. Soit zéro point zéro vingt-cinq à chaque fois qu'on fait une action, vingt-cinq ALGO pour l'outil de récupération. Donc on est dans le thème du vingt-cinq. Je trouve que c'est juste, personnellement. Dogebarb, 11 September 2026

Wherever we have a fee, it seems to become my rule. Either nought point nought two five each time an action is taken, or twenty-five ALGO for the recovery tool. So we are in the theme of twenty-five. I think that is fair, personally.

One number, nine places

Nine charges on the platform, all built on twenty-five: commission 2.5 per cent, creator royalty 2.5 per cent, fixed listing fee 0.025 ALGO with a 0.25 ALGO ceiling, a single lock of 25 million XDB that opens three separate services, 250 million for no commission at all, and 25 ALGO for the recovery tool PERCENTAGES 2.5% Commission ceiling, and its default 2.5% Creator royalty on each resale ALGO 0.025 Fixed fee to open a listing 0.25 Engraved ceiling on that fee 25 The recovery tool XDB LOCKED 25M See what is listed on other marketplaces 25M Turn on your royalty as an outside creator 25M One tranche off the commission 250M No commission at all
The three lines reading 25M are one lock, not three. A single lock of 25 million XDB opens all three services; they are listed separately because they are separate services, not because they cost three times as much. Section 18 shows it as one lock and three doors. The two exceptions are penalties, at 10 and 20 per cent, and they make the rule stronger rather than weaker. A penalty withheld from a defaulting bidder is not a fee, and it should not read like the rest of the schedule. The consistency is intended, not accidental. Four of the six fee constants in the successor contract already carry it: COMMISSION_PLAFOND and COMMISSION_DEFAUT at 250 basis points, FRAIS_FIXE_DEFAUT at 25,000 and FRAIS_FIXE_PLAFOND at 250,000 microALGO.
Why this belongs in a white paper at all

A fee schedule that has to be looked up one line at a time is a schedule nobody checks. Here a reader learns twenty-five once and can predict every other charge, which means a wrong number stands out instead of blending in. That is the practical value of the pattern, beyond the aesthetic one its author gives for it.

15The commission, and the ceiling written into the code

Ceiling engraved in the successor · scale measured on the test network

2.5 per cent is not a starting price that happens to sit there today. It is the most anyone can ever be charged, and the rate can only go down from it.

The commission is added to the price, it is not deducted from it. The seller receives their price in full. That is measured rather than inferred: on a sale of 500 units in a currency, the seller received 500, not 495. The buyer pays the listed price plus the commission, and nothing else, and anything paid above that comes back.

The figure is a ceiling written into the contract's code, which cannot be changed after deployment by anyone, including its author and including whoever might own this marketplace in the future. The rate can be lowered. It can never be raised. That is a guarantee you read on the chain rather than a promise you take from us, which is why the number is stated this way round.

The contract checks that ceiling at both ends. Once when the scale is set, and again when a rate is applied to a sale. A guard placed at one end only is a guard you get around from the other.

What has never happened

No ASA Compass contract has ever taken a commission from a real sale. The contract described in Part II runs on the test network and charges one per cent there; the successor carries the 2.5 per cent ceiling and is not engraved anywhere. Both statements are true at once, and a document that gave only the second would be describing a marketplace that does not exist yet.

16The scale: ten tranches of twenty-five million

Decided 11 September 2026 · written, not engraved

Locking XDB lowers the commission a quarter point at a time, and reaches zero exactly at the tenth tranche the contract allows.

Commission against XDB locked and matured

Commission falls one quarter of a point per 25-million tranche of locked XDB, from 2.5 per cent at zero to nothing at 250 million 2.5% 1.5% 0.5% 0% 2.50% with nothing locked 0% here 0 75M 150M 225M 250M XDB locked and matured
The arithmetic fits the ten tranches the contract allows, and reaches zero without an inch to spare. A previous shape used tranches of ten million and reached zero at a hundred; moving to twenty-five million aligns the scale with every other charge on the platform and halves the population already at zero. Sources: A-FAIRE.md K-359 for the scale, contrat/marche-successeur/contrat.py for PALIERS_MAXIMUM = 10.

Locking, not holding, and the reason is a defect we found in our own code

A balance can be borrowed for the length of a single transaction. Algorand groups transactions atomically, so a wallet can be handed millions of tokens, buy something, and hand them straight back, all in one go, keeping nothing. We measured it against our own contract before anyone else could: the same purchase cost full commission with 3,792 units held, and zero commission with 100,000 units borrowed and returned inside the same group, at rounds 66868169 and 66868179.

No instruction on Algorand can say how long an account has held an asset. A contract therefore cannot measure holding at all, and any rule that depends on it is defeated inside the same group. That was not a guard to strengthen; it was a rule that should not have been written, and it was removed rather than patched.

Three things, not two

Holding can be rented for the length of one atomic group. Locking can be measured, because the contract writes the date down itself. Maturing is what makes locking mean anything: without a waiting period, the defect comes straight back with one more transaction, since you would deposit just before buying and withdraw just after.

So the rule closes at both ends: adding to a lock resets its clock, taking some out does not touch it. Seven days by default, and the waiting period is itself capped at ninety days, because an operator who set it to five years would put the whole scale out of reach and remove every discount without touching a single rate. Closing one door and leaving the window open is not a guard.

Never write "locked" on its own. Write "locked and matured." A reader who believes an instant lock is enough is holding exactly the defect, in its third form.

Both of those were attacked rather than assumed. A counterfeit staking application, declaring a hundred thousand billion tokens held since 2020, is not believed and pays the full rate. A deposit made at the last minute earns nothing. And the eight rules that guard how the tiers are set each refused a call built to break them.

The staking contract exists and is deployed on the test network, application 770940665, and the market contract already knows how to read it. What it deliberately does not hold is the scale itself: it records how much and since when, and nothing else, so that changing a tranche never means redeploying it or re-locking anybody.

17A royalty for every creator, not a selection

Decided 11 September 2026 · no contract carries a line of it yet

2.5 per cent to the creator on every resale that goes through this market, offered to all 4,076 creators in the catalogue rather than to a chosen few.

C'est un autre nouveau service qui est incroyable. Je trouve qu'on offre ce qui est du jamais vu : la capacité — on va donner la chance à TOUS les créateurs, pas des sélectionnés, à tous les créateurs DEPUIS LE DÉBUT — de recevoir une commission sur les transactions de leur collection, de leur pièce. Pour tout le monde, tout le monde. Dogebarb, 11 September 2026

It is another new service, and it is incredible. I think we are offering something never seen before: the ability — we are going to give the chance to EVERY creator, not a selected few, to every creator SINCE THE BEGINNING — to receive a commission on transactions of their collection, of their piece. For everyone, everyone.

The mechanism, in its final form:

Where the collection was mintedWhat the creator receivesCondition
Here, on ASA Compass2.5 per cent on every resaleNone. The royalty follows the collection
Anywhere else, before this site existed2.5 per cent on every resaleThe creator wallet locks 25 million XDB
The lock is not a toll, it is proof of identity

This project has no reliable way of knowing who created an old collection. A creator commonly used several wallets, which is an established fact here rather than a guess. Requiring them to show up in order to be paid turns a guess into a voluntary step, and it is the only mechanism available that does not ask anyone to sign anything to prove who they are.

That last point is deliberate and it is a safety decision. Asking a collector to sign a message to prove ownership trains them in the exact gesture phishing exploits. This platform does not do it anywhere, and not here either.

Why 2.5 per cent rather than 5, and the argument is its author's

Deux point cinq pour cent sur un marché où il y a beaucoup d'activité, c'est mieux que cinq pour cent sur un marché où il n'y en a pas beaucoup. Et pour un utilisateur, payer cinq pour cent, je trouve que c'est beaucoup, parce que c'est pour toujours, à chaque fois qu'un actif est échangé. Je trouve qu'exiger cinq pour cent, c'est un peu greedy. Dogebarb, 11 September 2026

Two point five per cent on a market with plenty of activity is better than five per cent on a market without much. And for a user, paying five per cent is a lot, I think, because it is forever, every time an asset changes hands. Asking five per cent is a bit greedy, I think.

Royalties on Algorand NFT sales, 2021 to 2026

Sales fell from 148,448 in 2022 to 65 in the first eight months of 2026. The share of sales paying a royalty fell from 80.1 per cent in 2025 to 7.7 per cent in 2026. The median royalty rate settled at 5.4 per cent from 2023 onward. Sales recorded on chain 82,463 148,448 28,483 4,738 784 65 Share of those sales that paid a royalty 100% 0% 60.6% 80.1% 7.7% Median royalty rate on the sales that paid one 12% 0% 10.0% 5.4% ASA Compass: 2.5% 2021 2022 2023 2024 2025 2026 8 months
The median of 10 per cent comes from 2021, a market that no longer exists. The living norm is 5.4 per cent and it has been stable for three years. The competing marketplaces whose rates were measured for this comparison charge 5 per cent, so 2.5 is clearly the cheapest without being symbolic. And the bottom panel is why the offer matters at all: the share of sales paying any royalty collapsed from 80.1 per cent to 7.7. These creators are receiving nothing today. Source: A-FAIRE.md K-358, measured across all NFT sales on the chain, not a sample. The last three bars in the top panel are below the threshold at which a bar is visible and carry their value instead. What this does NOT establish is that high royalties killed the market: both fell together, which points to two symptoms of one collapse.

4,076 distinct creators are named in the published catalogue, counted on the creator field of its 4,091 entries. That is the scale of what « everyone » means here: four thousand people to whom a royalty opens on pieces minted four or five years ago, on a market whose original platforms are dead.

The count not to make, and what is not known

Every address named anywhere in that file comes to 42,023, which would be a correct count of the wrong population: it mixes buyers and sellers in with creators. And nobody has checked how many of the 4,076 still collect a royalty somewhere else. That is unmeasured, and it is said here rather than assumed either way.

The buyer's XDB lowers our commission, never the royalty

An earlier shape had the creator's royalty falling with the buyer's staked XDB. Cutting our own commission is giving up our revenue; cutting the royalty is giving away a third party's money, and that third party agreed to nothing. The rule that came out of it, in its author's words: tu as raison sur l'aspect de redirection du créateur vers un objet de spéculation — you are right about redirecting the creator towards an object of speculation. The creator always receives their full percentage.

An open question, stated rather than settled

When a creator has not turned their royalty on, does the buyer pay less, or does the platform keep the 2.5 per cent? The honest answer is that it does not charge it at all, since otherwise the platform collects money meant for someone else. That has not been confirmed by the platform's owner, and this document says so rather than picking the answer that reads better.

Image slot 2 1200 × 800 px · 3:2
A 2021 collection and the wallet that minted it. Pieces from one of the catalogue's older collections shown beside the creator address that frapped them, as the royalty screen will show it to a creator claiming their wallet. It is the picture of what « every creator since the beginning » refers to.

18XDB: what it is, and what it opens

Token measured on chain 11 September 2026 · two of its uses exist today

Full disclosure first: XDB was created by the people who run ASA Compass. Nothing on this site requires it.

XDB, also called Dogebarb, is an Algorand asset with two decimals, asset ID 1290751153. It is the currency of this marketplace alongside ALGO. It was created by the people who run ASA Compass, and accepting it here is how they give it a use instead of a promise. Every listing, every sale and every offer works in ALGO. Anyone can read the link between the token and this project off the chain in a few minutes; it is far better that you read it here first.

The token is inert, and that is its most important property

PowerHeld byWhich means
freezethe zero addressnobody can freeze a balance
clawbackthe zero addressnobody can take tokens back
managerthe zero addressnobody can reconfigure the asset
reservethe zero addressnobody can issue any more

The supply of 200 billion is therefore final. No dilution is possible and no balance can be seized, which is what makes the token usable as collateral inside a contract: a clawback-able token would not be.

Check this one yourself, and check it correctly

Algorand's zero address is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5HFKQ — fifty-eight characters, and it does not end in A. Testing whether the field is merely present always returns true, and leads straight to the conclusion that the token is freezable and clawback-able, which is the exact opposite of the truth. This project got it wrong three times in one day before measuring it properly, which is why the warning is here rather than in a footnote.

Three different things are called a reserve, and they are not the same size

Say which one you mean, every time. The asset's reserve field is an address, and it is the zero address. The exchange pool is what actually sets the price. The supply is everything that exists. Burning nine billion XDB would be 4.5 per cent of the supply and 65.7 per cent of the exchange pool: the same measurement changes its conclusion depending on which denominator goes unsaid.

Where the 200 billion XDB are, across 1,161 holders

Of 200 billion XDB, 145.82 billion sit in 1,157 ordinary accounts, 30.62 billion in the XDB-ALGO pool account, 10.25 billion in the XDB-RIZER pool, 9.22 billion with the token's creator and 4.09 billion in the XDB-GAAL pool Total supply, fixed for good 200,000,000,000 1,157 ordinary accounts 145.82 bn 72.91% The XDB-ALGO pool account 30.62 bn 15.31% The XDB-RIZER pool account 10.25 bn 5.12% The token's creator 9.22 bn 4.61% The XDB-GAAL pool account 4.09 bn 2.05% Fourteen wallets hold half the supply between them
The biggest « holder » is not one. The first account in the ranking is the XDB-ALGO pool, and reading it as a holder makes any statement about concentration wrong. And the account's balance is not the pool either: Tinyman computes on reserves recorded in the pool's own state, not on what the account holds, and 15.64 billion XDB were sent to that account outside any transaction group in December 2024. They sit there without ever entering the price curve. Source: XDB-CE-QUON-SAIT.md, measured on chain 11 September 2026 across all 1,161 holders. The distinction was paid for: a price computed from the account balances was wrong by a factor of 2.09, and a second source appearing to confirm it was applying the same wrong method.
Image slot 4 1200 × 1200 px · square
The XDB token, as it appears on chain. The asset page for 1290751153 showing its four powers at the zero address, beside the wallet drawer where a visitor opts in. What the picture has to make obvious is that opting in is one click and costs nothing but the 0.1 ALGO the network holds while you keep the asset.

The liquidity is locked, and the lock is cryptographic

95.44 per cent of the pool shares sit in two accounts that have no private key. They are the accounts of applications 2842666357 and 2313510156, which was verified by deriving each address from its application ID: both match to the character. An application account cannot sign, so the shares cannot leave except through the program itself. Both applications carry the same 2,160-byte program, fingerprint 2dd88f58567442f6: they are liquidity locks.

What is not established, and must not spread as though it were

The unlock date cannot be read. The applications' state carries timestamps, but they are dates of past events — the lock being placed in March 2025, a withdrawal of an unrelated token in February 2026 — and every one of them is in the past. Reading the expiry would take disassembling the program, and nobody has. The lock is real today and has never released a share. Until when, we do not know, and this document will not guess.

What locking XDB opens

One lock, three doors. That was decided on 11 September 2026, in three words: un seul verrouillage, trois portes. A visitor learns one number and understands the whole system.

One lock of 25 million, three doors

A single lock of 25 million XDB opens three things: seeing listings on other marketplaces, turning on a creator royalty, and one tranche off the commission 25M XDB locked and matured See what is listed on other marketplaces Their sites are gone; their listings are still open on chain Turn on your creator royalty Only if you minted elsewhere; minting here needs nothing One quarter point off the commission Ten tranches; the tenth takes it to nothing
And paying in XDB costs no commission at all, with no threshold and no lock. That one is not a door the lock opens: holding the asset and paying with it is the whole condition. A sale settled in ALGO carries the standard rate. Source: A-FAIRE.md K-363, decision 3, and K-362.
What the thresholds are for, and why they are not prices

The thresholds do not exclude anyone by wealth. They oblige a person to show up, which is their actual function: this project cannot otherwise tell which of a creator's wallets is theirs.

This document deliberately gives no conversion of those thresholds into ALGO or dollars. A token price moves fast, and a converted figure in a document that outlives the week is wrong before it is read. The threshold is 25 million XDB; that sentence stays true.

There is a shorter page about all of this, written for someone who wants to understand what the token is for rather than check how it behaves: what XDB does here. It says the same things in fewer words. This section is the one that names the measurements.

Two of the seven uses exist today

The marketplace accepts several currencies, each with its own floor in its own units, and XDB is one of them: that is built and measured, in section 9. Everything else on this page is decided and not engraved — the tranches, the royalty, the lock that opens three doors. And no service of this platform is paid for in XDB today. The contract makes it possible; nobody is charged in it.

19Two units in twenty-five go back to the pool

Decided 11 September 2026 · no contract carries it yet

Eight per cent of everything the platform collects is paid into the XDB-ALGO exchange pool, in ALGO, and the shares it receives are put somewhere nobody can withdraw them from.

Si on a le thème du vingt-cinq sur tout ce qui est commission, tout ce qui est charge, tout l'argent qu'on reçoit — si sur vingt-cinq on gardait toujours DEUX UNITÉS. Dogebarb, 11 September 2026

If we have the theme of twenty-five across everything that is a commission, everything that is a charge, all the money we receive — what if out of twenty-five we always kept TWO UNITS.

What the platform collectsOf which, to the pool
The 2.5 per cent commission0.2 per cent of sale volume
The recovery tool, at 25 ALGO2 ALGO
The fixed listing fee, at 0.025 ALGO0.002 ALGO
Any future charge, whatever its shape8 per cent
The creator's 2.5 per cent royaltyNothing. It is untouched

The exclusion of the royalty is its author's own, unprompted: ça, c'est juste sur NOTRE charge à nous, pas sur celle des créateurs. Les créateurs gardent leur deux point cinq. — that is only on OUR own charge, not the creators'. The creators keep their two point five. It is the second application of a rule stated earlier in a different context: you do not dispose of a third party's money.

Paid in ALGO, and nothing is burned

The original shape had one unit staying in ALGO and one unit buying XDB, with both then paid into the pool. That step turns out to do nothing, and the reason is simple enough to check by inspection: the only place to buy that XDB is the pool itself. The token leaves one side and comes back the other. Measured against the real reserves, the two routes end at the same numbers, to the token.

So the decision, in its author's words: on verse en ALGO et on ne brûle rien — we pay in ALGO and we burn nothing. What rises is the quantity of ALGO facing the same quantity of XDB. The effect on price is real; it simply comes through the other side of the balance.

Why not burn, and the comparison that decided it

Burning XDB pushes the price harder. It also empties the pool of XDB, so each subsequent purchase costs more, and the mechanism closes on the very people it was meant to attract. Compared over ten years at the 2025 rate of activity: paying ALGO multiplies the price roughly sevenfold while leaving the pool's depth intact; burning takes two thirds of it away. Paying ALGO takes nobody's place in the queue to cross a threshold. Burning removes two thirds of the places.

The strongest argument for it, which its author did not make

The mechanism makes the pool's depth proportional to the market's own activity. The more that sells, the deeper the pool, so the better it absorbs the very purchases that activity causes. That property is self-regulating and holds at any volume, independently of the fact that at today's volumes the mechanism collects almost nothing.

Three things this document will not pretend are settled

Shares received for paying into a pool are new and free. They do not join the existing locks on their own. Without one more step the platform would simply be accumulating liquidity it could withdraw, which is the exact difference between locked and ours. The decision is a lock of the project's own, audited and with its source published, and the reason is that a contract holding other people's liquidity has to be checkable by somebody else.

Those shares cannot be burned. Algorand's zero address holds no assets and has never opted in, so a transfer to it fails. That differs from other chains where a zero address accepts anything, and it is the sort of detail that gets discovered at the wrong moment.

And there is a legal question, which is serious and is not a technical one. A platform that takes a commission and spends part of it buying its own token, whose creator holds 9.22 billion of it, is close to the structure a regulator examines when deciding whether a token is a security. This is not a claim that it is one. It is that the mechanism moves the token towards that description, where its current use — a friction that obliges someone to show up — moves it away. It belongs with a lawyer, not with the people who wrote the contract.

20Everything that is charged stays adjustable

Permanent rule · the contract already applies it, and applies it the right way

The value can be set. The ceiling is engraved. That pair is what makes a contract worth trusting.

Ce qui est certain, c'est que toutes les charges, tous les frais, ça doit être changeable. Il faut que ce soit inscrit dans le contrat intelligent. Parce que si le prix du XDB devient trop grand et que toutes les charges deviennent trop grandes aussi — comme la quantité nécessaire à verrouiller pour débloquer certaines choses — la tokenomique ne fonctionnera plus. Il faut qu'on ait la possibilité de changer avec le temps. Absolument tout ce qui nécessite un paiement, XDB ou ALGO, il faut que ce soit modifiable. Dogebarb, 11 September 2026

What is certain is that every charge, every fee, has to be changeable. It has to be written into the smart contract. Because if the price of XDB gets too big and all the charges get too big with it — like the amount you have to lock to unlock certain things — the tokenomics will stop working. We have to be able to change with time. Absolutely everything that requires a payment, XDB or ALGO, has to be modifiable.

What can be setWhat bounds it, permanently
The commission scale2.5 per cent, engraved ceiling
The maturation period90 days, engraved ceiling
The share withheld from a defaulting bidder20 per cent, engraved ceiling
The fixed listing fee0.25 ALGO, engraved ceiling
The price boundsAn engraved maximum

That is what makes the contract checkable once and for all: you can satisfy yourself that the commission will never exceed 2.5 per cent, even if whoever operates this marketplace changes their mind, and even if it is somebody else by then.

A ceiling on a threshold is not written the same way round

A price ceiling protects by forbidding an increase. The operator can only go down. An access threshold has to protect in the same direction, which means forbidding it from being raised beyond a bound: if the token appreciates, the operator will want to lower the threshold, and nothing should stand in the way of that. The engraved part is that it can never be arbitrarily raised. Same protection, opposite arithmetic, and getting it backwards would build the barrier the rule exists to prevent.

The one exception to "absolutely everything", and it must not be "fixed"

The commission-exempt token is designated once and never changes. That is deliberate. If it could change, the exemption could be taken away from people who acquired the token in order to have it. Some things have to stay immutable precisely so they can be believed, and making that field adjustable in the name of the rule above would destroy the promise the rule is there to serve.

21What is not done yet

Publishing these makes the rest of this document stronger, not weaker.

  1. Nothing in Part III is engraved in any contract. The royalty, the tranches of twenty-five million, the lock that opens three doors and the eight per cent returning to the pool were all decided on 11 September 2026. The word "royalty" does not appear once in any of the three contract files. That part is entirely new code, not a setting, and this document says so rather than describing it in the present tense alongside rules that have refused real transactions.
  2. One question about the royalty is open and its answer is not ours to assume. When a creator has not turned theirs on, does the buyer pay less, or does the platform keep the 2.5 per cent? The honest answer is that it should not be charged at all, and it has not been confirmed.
  3. The lock that will hold the platform's own pool shares does not exist yet. It is decided that it will be the project's own contract, audited and with its source published, which is different from every other file in this project and deliberately so: a contract that holds other people's liquidity has to be checkable by somebody who is not us.
  4. All of this is on the test network. The program engraved on MainNet will have to be measured in its turn and its fingerprint compared. Until that is done and published, this document describes the test network and says so.
  5. The contract described here is not the one that will go into production. The successor is written and not engraved anywhere, and it carries the staking-linked commission scale: the rate falls in tiers below 2.5 per cent as the engraved ceiling, described in section 1 and section 3. The refusals recorded throughout this document were obtained on the contract in service, not on the successor, and everything here will be re-measured against whichever program is finally engraved on MainNet, its rule count included.
  6. Multi-copy listings are engraved nowhere. The mechanism is written, it compiles, and it has been tested on disposable instances. Until it is engraved, a listing holds three pieces at most.
  7. Two rules out of eighty-two were never made to refuse, because they are out of reach. commission superieure au montant would need a price of zero, which both entry doors refuse; cette piece n est plus au coffre would need a clawback-able piece to have entered the vault, which both deposit doors refuse. They stay in as defence in depth, and their unreachability rests on refusals obtained upstream, not on an argument about the code.
  8. A listing holds at most three pieces, with eighteen units of budget left at three. That is a limit rather than a defect, but it leaves no room: any guard added to that path would bring it down to two.
  9. One correction is read rather than measured. The fix preventing one seller from recovering a reserve another seller paid was verified by reading the code. Proving it would take two sellers of the same multi-edition asset and a withdrawal by the first before the second. That has not been done, and it is recorded here as read rather than observed.
  10. One limit is proven on a copy and can never be proven here. Sending the vault exactly the floor amount of a currency used to stop that currency closing, and the market with it, for about a dollar. The remedy is in place and tested, but the bench that tests it destroys by construction the instance it measures: it has run on six disposable instances and can never run on the test one. A debt that cannot be repaid is not a debt, it is a limit, and it belongs here rather than on a list of things to do.
  11. A per-buyer purchase limit, when it exists, will count what the buyer HOLDS. That penalises someone who received copies as a gift or bought them elsewhere, and it is a deliberate choice. It also means that, on a chain where an account is free, any per-account limit is a speed bump and not a barrier. Saying so is not an argument against it: it is what lets you pay the right price for it instead of buying an expensive guarantee you will not get.
  12. The site and the contract have to move together. The multi-copy mechanism changes two method selectors, and a selector that matches no method is rejected by the virtual machine rather than by the contract, so listing and buying would both stop at once with a message that has nothing to do with what the user was trying to do. When the contract cannot speak, the protocol speaks in its place, and it speaks badly.
Image slot 5 1600 × 900 px · 16:9
A bench run, on screen, refusing. The replay of one chapter of the test bench, showing a transaction built on purpose to break a rule and the exact refusal message coming back. It is the only picture in this document that shows the thing the whole document rests on: a rule counts here only because it actually refused.

22How to check any of this yourself

The benches are in the repository, they submit nothing, and a rule counts only if it actually refused.

The benches are in the repository, one chapter per family of rules. A full replay runs with one command and submits nothing: it simulates against the test instance, costs no ALGO and changes nothing. A rule is counted only if it actually refused a transaction built on purpose to break it, and if the refusal message, read back from the contract's own published interface, matches the expected one exactly.

Three methodological precautions are what give those figures their value, and a careful reader will want to know them.

Every chapter also builds a gesture that MUST succeed. Without it, you cannot tell a contract that guards from a bench that does not know how to compose a valid call. A bench that only ever collects refusals proves nothing.

A case that could not be built is declared as such, with its reason, and counted neither as proven nor as absent. A silent failure makes an untested path indistinguishable from a covered one.

A refusal from the protocol is not a refusal from the contract. Insufficient balance, an asset not opted in, a missing reference: those arrive before the contract runs, and counting them against it would invent defects that do not exist. The bench names them explicitly rather than guessing.

Seven security reviews were carried out, on six versions of the contract, and the versions they examined are archived so each review can be replayed against the exact object it looked at. The last two worked blind, without knowing of each other, and they have not a single finding in common. Zero out of five. That does not mean the reviews were poor. It means the coverage of any single review is far narrower than it looks, and this project measured that instead of assuming it. It is the reason there were seven and not one.

23Who wrote this

There is no authority here for you to defer to, so nothing in this document asks you to.

The contract, the guards and the bench that made them refuse were written and run by Claude, an AI agent, under the direction of this project's author. That is stated plainly rather than shown as a badge, because a badge would suggest a company examined and endorsed this marketplace, and none did.

Which is exactly why this document is built the way it is. There is no authority here for you to defer to, so nothing in it asks you to. The instance is named, its fingerprint is published, the bench can be replayed by anyone and submits nothing, and every mechanism is described by what it actually refused rather than by what it is meant to prevent. Check the parts you care about; none of it depends on trusting who wrote it.