Game one
Chess
Two players on one screen. Click a piece to see its legal moves and click a square to play it. Full rules with check and checkmate, a move list, resign and a new game.
TensileInk V2, issued on Ink
TensileInk V2 ended as a set of 322 hand painted works. Each one is assembled from five traits, and the combination was decided by a salt that was committed before the claim window and revealed after it. The run was capped at 2,000 places; 1,678 of them were burned when nobody claimed them.
Read from the V2 contract. The run is finished: 322 works exist and 1,678 places were burned. No further works can be added.
The run replaces the first collection. How the migration works
The window
A snapshot block was fixed before the window opened. A holder of the first collection claimed one place per work held at that block. The window closed on the dates the contract holds: 322 places were taken and became works, and the 1,678 places nobody claimed were burned rather than saved. The window cannot reopen.
The traits of every work were set before the window and could not be chosen by anyone claiming. They can be verified by anyone afterwards.
Migration to V2
The migration is finished. A holder of the first collection took one place per work held at the snapshot, and 322 places were claimed. The window is closed and cannot reopen. The other 1,678 places were burned rather than saved, so the collection stands at 322 works.
Claim window, UTC
Closed. The contract recorded the window, and it cannot reopen.
Royalties, not migration, are handled in the Claim menu.
Nothing is claimed here any more. The finished collection is on OpenSea.
The Collection
Every work carries five traits. Their weights add up to a rarity score, and the score places the work in one of five tiers. The counts below are the real counts for the 322 works that exist.
Traits are drawn on chain from keccak256(salt, tokenId). The salt is committed before the window and revealed after it, so no work can be picked in advance and any trait can be checked afterwards.
Mechanism
Committed
Before the window opens, a salt is committed on chain. The commitment fixes the whole set of traits without showing any of them.
Revealed
After the window closes the salt is published. Each work then resolves to its five variants, and the same salt always gives the same answer.
Checked
Anyone can recompute the hash and reach the same traits, the same rarity score and the same tier. Nothing is retouched by hand.
Studio
TensileInk V2 ended as 322 works, each assembled from five painted traits: Palette, Crown, Pendant, Gear and Scale. The layers are made by hand. The combination is decided by the hash.
Score to tier: 6 to 11 Common, 12 to 13 Uncommon, 14 Rare, 15 Epic, 16 to 17 Legendary. The contract publishes the score. The tier follows from it, and the gallery filters use it.
Issued on Ink, chain 57073
Games
One table is open. Access is checked against the wallet you connect: a wallet that holds at least one TensileInk V2 work gets in, and so does a wallet that has paid for access at the arcade. Connect below to see which side of the gate this wallet is on. Nothing is written to the chain unless you press Pay.
Game one
Two players on one screen. Click a piece to see its legal moves and click a square to play it. Full rules with check and checkmate, a move list, resign and a new game.
Game two
A second table is being built for this room. There is nothing to open here yet.
Rarity
The contract publishes a rarity score for every work. This page reads all of them and orders the run from the highest score to the lowest, with the token id breaking a tie. Every number here comes from the chain, not from a list kept on this page.
The table fills when the contract answers.
Claim
Every secondary sale of a work pays a royalty, and part of that royalty belongs to the wallet holding the work. This page finds your works, adds up what they have earned and pays it out. Nothing is staked, nothing is locked, and there is nothing to register for.
Holder royalty
Wallet
Not connected
The contract takes a royalty of ten percent of every secondary sale. Thirty percent of that royalty goes to the wallets holding the works, split by weight: each work carries the weight of its rarity tier, so a Common work counts 3, an Uncommon 5, a Rare 8, an Epic 11 and a Legendary 13. A sale adds to the pot in proportion to those weights, and each work's share belongs to whichever wallet holds that work at the time of the sale.
There is no staking and no locking. The royalty sits in the contract against the work itself, so moving a work to another wallet moves its unclaimed royalty with it. Withdrawing is one transaction and can be done at any time.
reading totalWeight and accRewardPerWeight from the contract
Connect the wallet that holds the works. The contract answers for that address.
Read from the V2 contract on Ink at 0xfC410abdB27bE1bA58BB8E0d9beC11279a5eeDB4. Migrating from the first collection? That claim lives on the home view.
Documentation
TensileInk V2 was a fixed run of 2,000 places on Ink, of which 322 were taken. This page documents how the traits are drawn, how rarity is scored, how the salt is committed and revealed, and how the migration from the first collection works. Everything described here runs on chain and can be read without this site.
TensileInk V2 ended at 322 works. Each is painted in layers and assembled from five traits: Palette, Crown, Pendant, Gear and Scale. The combination is not a studio choice. It is read from the hash of a salt and the token id, so the set resolves the same way for everyone who checks it.
The run replaces the first collection. Holders of that collection claim their places in this one, and the traits of every work are fixed before the first claim is made.
Each trait reads one byte of the work's hash. The byte selects a variant, and every variant has its own drawing in the artwork.
Each variant carries a weight. The five weights of a work add up to a rarity score between 6 and 17, and the score places the work in one of five tiers. The counts below are the counts for the full run.
More than half the run.
Just under a third.
152 works in the whole run.
86 works in the whole run.
29 works in the whole run.
At deployment the contract stores a commitment: the hash of a salt, and nothing else. The salt itself stays private while the claim window runs.
When the window closes the salt is revealed. The contract checks it against the commitment and rejects anything that does not match, so the committed salt is the only one that can ever be used. From then on the traits of a work are the first five bytes of keccak256(salt, tokenId), and anyone can recompute them.
A snapshot block is fixed before the window opens. The balance of every address in the first collection is frozen at that block, and the whole list is committed as a single Merkle root. After the window opens that root can no longer change.
Claiming mints exactly one new work for each eligible place, less whatever the address has already taken. The place count and a proof travel with the claim, so only the address the snapshot recorded can take them. claim(count, proof) mints the whole remaining entitlement in one call. claimUpTo(count, proof) mints a bounded batch for an address with a large entitlement.
The window runs once, on the dates the contract holds. Once it closes, the unclaimed places are burned: each one is minted to the contract and immediately destroyed, so the id can never be used again. Circulating supply then equals exactly what was claimed.
The contract implements ERC-2981. On a secondary sale it reports a royalty of ten percent of the sale. Thirty percent of that royalty accrues to the wallets holding the works, split by rarity weight; the rest goes to the project wallet. There is no treasury contract in between.
The holder part is not paid out on the sale. It is held in the contract against each work, so it moves with the work and is withdrawn from the Claim view at any time, with no staking and no locking. holderShareBp reports the current split publicly.
MAX_SUPPLY, a constant
Palette, Crown, Pendant, Gear, Scale
Common to Legendary
No function can create a token beyond the cap. totalSupply counts the works that exist now, and because unclaimed places are burned it can settle below 2,000. The cap itself never moves.
Migration is the only way into this collection. There is no public sale and no second route. The window opens and closes at dates set in the contract, and closes for good. An address that held works at the snapshot can claim at any point inside it, and an address that held nothing has nothing to claim.
Every claim on this page can be checked without asking us. The V2 contract answers these calls directly, and they are the same calls this page makes.
| Call | Answers |
| MAX_SUPPLY | The cap of the run, 2,000. |
| totalSupply | How many works exist now. |
| claimWindowOpen | Whether the migration window is open. |
| eligibleRoot | The single root the snapshot list is committed to. |
| traitHash | The hash a work's traits are read from. |
| rarityOf | The rarity score of a work, 6 to 17. |
| royaltyInfo | The receiver and the royalty for a sale. |
No. The traits are derived from a salt that stays private until the window closes, and the commitment is fixed before the first claim.
They are burned when the window closes. The ids cannot be minted again.
No. MAX_SUPPLY is a constant and no function can create a token beyond it.
Ten percent of a secondary sale. Thirty percent of that royalty accrues to the wallets holding the works, and the rest goes to the project wallet.
It accrues in the contract against each work and is withdrawn from the Claim view. Nothing is staked or locked, and the split is reported on chain by holderShareBp.