Skip to content

Changelog

A record of changes to the deployed protocol — the contracts, their parameters, and the permissions over them. It is not a product blog: new pages, copy edits, and interface work do not appear here.

Entries are newest first.

What gets an entry

Every one of these is logged here, without exception:

ChangeWhy it is logged
A UUPS upgrade of LootSkins or LootMarketThe code behind an address you have already approved is different afterwards.
A fee change — platform fee, fee recipient, withdrawal feeIt changes what a trade or a redemption costs you.
A royalty change — receiver or basis pointsIt changes the split on every sale.
An allow-list change — collections or payment currenciesIt changes what LootMarket will settle.
A baseURI changeIt changes where every token's metadata is served from.
A minter change on LootSkinsIt changes who can create tokens.
An ownership transfer of either contractIt changes who holds every power above.
A pause or unpause of LootMarketIt changes whether orders can be filled at all.

Each entry carries:

  • the date (UTC),
  • the transaction hash of the change,
  • what changed, in terms of the before and after values, and
  • a how to verify line, so you can confirm it on-chain instead of trusting this page.

Verify, don't trust this page

This is a website. It can be wrong, stale, or edited. Every entry below names a transaction and a call you can make yourself against https://rpc.mainnet.chain.robinhood.com, or a page you can open on the explorer at https://robinhoodchain.blockscout.com.

If this page and the chain disagree, the chain is right and this page is a bug.

2026-08-11 — Security upgrade (UUPS)

Both contracts were upgraded in place. The addresses did not change, no token moved, no balance changed, and the EIP-712 domain separator is identical — every order signed before the upgrade is still valid.

LootSkins proxy0xcDc669a4A2EE3C01C0B269c990B4F0ae6BdCDA2E (unchanged)
New LootSkins implementation0xd59bCB099927c8393d49e9b3F9247C25fFC5fBDa
Upgrade tx0xbbde4f771b6ddf2d393d2de52bc85c587b4ab76443e190a60a3ffac8a14c8c9a
LootMarket proxy0xb455Da2D860FabCe8ee6B0DA96398c4CACf14229 (unchanged)
New LootMarket implementation0x9E754adCEEAb0d08d039c44ECe71d5EA114a9Ecd
Upgrade tx0xb66a980dabb0ac6b6106ec7b3c2e7604a98d67a5c8d8be48bbd3c5566661cf6d

What changed

  1. Self-purchase is now rejected. fulfillOrder reverts with SelfPurchase when the buyer is the maker. Previously it succeeded: the price returned to the maker while the royalty and platform fee did not, which made it a fixed-percentage way to manufacture trading volume.
  2. The creator royalty is capped at 1000 bps (10%), enforced in both initialize and setDefaultRoyalty, reverting with RoyaltyTooHigh. Together with the existing 10% platform-fee cap this guarantees a seller keeps at least 80% of any fill. Before this, ERC-2981 permitted up to 100%, so the owner could have raised the royalty after a maker signed and settled that maker at zero on a successful sale.
  3. setMinimumNonce is now a one-way ratchet. Lowering the watermark reverts with NonceBelowMinimum. Previously it could be lowered, which revived signatures that had been bulk-cancelled — while LootFi's own records continued to treat them as dead, so they existed on chain and nowhere in the interface.

Unchanged and verified after the upgrade: owner, baseURI, royalty receiver and 500 bps rate, withdrawFee 0, platform fee 200 bps, fee recipient, pause state, collection allow-list, and every minted token's owner and tokenURI.

How to verify

bash
# the proxies still point at the same addresses, with new implementations behind them
cast call 0xcDc669a4A2EE3C01C0B269c990B4F0ae6BdCDA2E "MAX_ROYALTY_BPS()(uint96)" --rpc-url <rpc>   # 1000
cast call 0xb455Da2D860FabCe8ee6B0DA96398c4CACf14229 "domainSeparator()(bytes32)" --rpc-url <rpc>  # unchanged

2026-07-25 — Initial deployment

The protocol contracts were deployed to Robinhood Chain (chain id 4663) and went live at block 19419826.

What changed

  • LootSkins (ERC-721, UUPS) deployed and initialized: name LootFi Skins, symbol LOOT, default ERC-2981 royalty set, baseURI set, minter allow-list configured.
  • LootMarket (UUPS) deployed and initialized: platform fee 200 bps (2%), fee recipient set, LootSkins added to the collection allow-list.
  • LootToken (ERC-20) deployed.
  • withdrawFee on LootSkins left at 0 — redemption costs gas only.

Addresses are not restated here. There is one source of truth for them: Deployments.

How to verify

  1. Open Deployments and take the three addresses.
  2. On the explorer, open each address and confirm the contract creation is at or before block 19419826.
  3. Read the live parameters directly and compare them with Fees & royalties:
    • LootMarket.platformFeeBps()200
    • LootMarket.feeRecipient()
    • LootSkins.withdrawFee()0
    • LootSkins.royaltyInfo(<tokenId>, 10000) → receiver and 500
  4. Confirm LootSkins is allow-listed on the marketplace: LootMarket.allowedCollection(<LootSkins address>)true.

Indexing note

Block 19419826 is the first block at which protocol state exists. An indexer built against this deployment should start there; earlier blocks contain nothing relevant to it. See Indexing and Events & indexing.

An earlier deployment exists and is superseded

An earlier set of contracts was deployed at a lower block and is not in use. Those addresses are not listed anywhere on this site, and any token or order associated with them is unrelated to the live protocol. Take addresses only from Deployments — never from an old link, a screenshot, or a third party.

LootFi is not affiliated with, endorsed by, or sponsored by Valve Corporation. Counter-Strike and Steam are trademarks of Valve Corporation.