Provable Fairness
Pachiverse Machines is a generative collection of 500 NFTs on Polygon. This page explains — and lets anyone independently verify — that we did not and cannot manipulate what comes out of a pack.
Pachiverse Machines (PVM) is a generative collection of 500 NFTs on Polygon. This page explains — and lets anyone independently verify — that we did not and cannot manipulate what comes out of a pack.
It is written in two parts: a plain-language explanation, and a technical appendix with commands you can run yourself.
Nothing is drawn at the moment you open a pack. Both the contents of all 500 Machines and the pack-to-Machine assignment table were finalized and frozen before the reveal opened.
When we froze them, we published a SHA-256 fingerprint of each — a 64-character value computed from the entire data set.
| Commitment | SHA-256 | Frozen at |
|---|---|---|
| Artwork Commitment The artwork, rarity, and the eight trait layers of all 500 Machines, plus the SHA-256 of every image and metadata file |
aacc48d0f736925054fd4f9e5acdb5299b3ba6f5830a81483a0daab59cc77efc | 2026-09-02 08:30 JST (2026-09-01 23:30:31 UTC) |
| Allocation Commitment Which pack contains which Machine, for all 500 packs |
87ebeb172cc6fa7004d664ef3922c06e034eada5ebadcaf4c1647d580f3208be | 2026-09-02 09:37 JST (2026-09-02 00:37:34 UTC) |
The assignment was derived from a fixed seed that was chosen and recorded before the commitment was frozen. The seed itself will be published on this page after the reveal opens on 2026-09-09 00:00 JST, together with the full manifests, so that the assignment can be reproduced from scratch.
All 500 Machines were minted on-chain before the reveal began. They are not minted on demand.
| Network | Polygon mainnet (chain ID 137) |
| Pachiverse Machines (ERC-721) | 0x55E3A05eaAc41aAeB596227CD4076e91033541b3 |
| Pachiverse Mystery Packs (ERC-1155) | 0x2B5DaC082f664986e77b4f075617D1908BBd109C |
| Image CID (IPFS) | bafybeidv6b46q4n2pn4tnrrgsq3bhb7penpumgkelteqsntga3r3z26jki |
| Metadata CID (IPFS) | bafybeicmfx247ojiqgtmpcn4rmw2tslqmipw6fj53a7gsvsbx2a5ry7yem |
What you get is not decided when you open a pack — the full assignment table was fixed before the reveal opened, and we published a SHA-256 fingerprint of that table at the moment we froze it. Changing even one character of the contents or the assignments would produce a completely different fingerprint, and matching the published one while altering the data underneath is not computationally feasible. So once the reveal is open and we publish the table itself, anyone can recompute the fingerprint and confirm that nothing was swapped in between.
The table also identifies each pack by an anonymous, permanent reference rather than by its owner, so “give this particular Machine to this particular person” is not an operation the system can express in the first place — transferring a pack to a different holder does not change the committed hash at all.
All 500 Machines break down as follows. This distribution is part of the frozen allocation data.
| Rarity | Total | Pool A (token 1101, 300 packs) | Pool B (token 1202, 200 packs) |
|---|---|---|---|
| R | 270 | 229 | 41 |
| SR | 120 | 40 | 80 |
| SSR | 60 | 20 | 40 |
| SSSR | 30 | 10 | 20 |
| UR | 15 | 1 | 14 |
| LEGEND | 5 | 0 | 5 |
| Total | 500 | 300 | 200 |
The five LEGEND Machines are one-of-one pieces, each with its own name.
- One Machine is assigned to you immediately. Its image, name, rarity, and traits appear on your member page right away.
- Your claim to that Machine is settled at that moment. It persists across reloads.
- The Machine is held on your behalf at this stage. It does not yet appear in your own wallet (MetaMask, OpenSea, and so on).
- To move it into a wallet you control, a separate withdrawal request is required. Withdrawal requests will open at a later date after launch; until then, Machines stay safely in the custody wallet and are fully visible on your member page.
- Opened packs are burned on-chain in periodic batches. Because batches run on a schedule, there is a delay — but your claim to the Machine is settled without waiting for the burn.
| Contract | Standard | Status |
|---|---|---|
| Pachiverse Machines (PVM) | ERC-721 | Verified |
| Pachiverse Mystery Packs | ERC-1155 | Verified |
| Companion NFT Collection | ERC-721 | Scheduled Q4 2026 |
Everything below can be done without trusting or querying our systems. The steps that require the seed and the full manifests are listed under Published after the reveal opens.
- A Polygon mainnet RPC endpoint (export POLYGON_RPC_URL=...)
- cast (Foundry), or any Web3 client
- Python 3, for recomputing hashes
- An IPFS gateway — the examples below use https://ipfs.filebase.io/ipfs/; substitute your own gateway or node
Both contracts are verified on Polygonscan.
- PVM (ERC-721): polygonscan.com/address/0x55E3A05eaAc41aAeB596227CD4076e91033541b3
- Mystery Packs (ERC-1155): polygonscan.com/address/0x2B5DaC082f664986e77b4f075617D1908BBd109C
Total supply minted — expected 500:
cast call 0x55E3A05eaAc41aAeB596227CD4076e91033541b3 "totalMinted()(uint256)" --rpc-url "$POLYGON_RPC_URL"
Token URI (<n> = 1..500) — expected ipfs://bafybeicmfx247ojiqgtmpcn4rmw2tslqmipw6fj53a7gsvsbx2a5ry7yem/1.json:
cast call 0x55E3A05eaAc41aAeB596227CD4076e91033541b3 "tokenURI(uint256)(string)" 1 --rpc-url "$POLYGON_RPC_URL"
Two further locks are applied on a published schedule: finalizeMinting() is executed on 2026-09-08 (before the reveal opens), and freezeMetadata() on 2026-09-10 (after the first day of reveals has confirmed that images and metadata display correctly). Until each is executed, the corresponding call below returns false; afterwards it returns true permanently. The base URI is unchanged since deployment and is committed by the Artwork Commitment above.
cast call 0x55E3A05eaAc41aAeB596227CD4076e91033541b3 "mintingFinalized()(bool)" --rpc-url "$POLYGON_RPC_URL"
cast call 0x55E3A05eaAc41aAeB596227CD4076e91033541b3 "metadataFrozen()(bool)" --rpc-url "$POLYGON_RPC_URL"
curl -sS https://ipfs.filebase.io/ipfs/bafybeicmfx247ojiqgtmpcn4rmw2tslqmipw6fj53a7gsvsbx2a5ry7yem/1.json
Each metadata file contains name, a lore description, external_url, an image field of the form ipfs://bafybeidv6b.../<filename>, and attributes covering Rarity plus eight trait layers: Background, Body, Frame, Reel, Light, Effect, Logo, Overlay.
Logo and Overlay are optional layers and are omitted for Machines that do not have them. The five LEGEND Machines additionally carry a Legend trait (the piece’s own name) and Edition: 1 of 1.
You can hash any file now and keep the result. Once the artwork manifest is published, each value must match the metadata_sha256 / image_sha256 recorded there.
curl -sS https://ipfs.filebase.io/ipfs/bafybeicmfx247ojiqgtmpcn4rmw2tslqmipw6fj53a7gsvsbx2a5ry7yem/1.json | shasum -a 256
Each commitment is the SHA-256 of one canonical JSON string — the manifest. The Artwork Commitment covers a manifest listing all 500 Machines (token id, serial, rarity, the eight trait codes, the image and metadata filenames, the SHA-256 of each file, and the IPFS URIs). The Allocation Commitment covers a manifest listing all 500 packs and the Machine each one contains.
Artwork Commitment = SHA256( compact_json(artwork_manifest) )
Allocation Commitment = SHA256( compact_json(allocation_manifest) )
Canonicalization is fixed in advance so the hash is reproducible: keys appear in a defined order, entries are sorted by a defined field, numbers and strings have defined types, and the JSON is serialized compactly — no whitespace, no newlines (separators , and :), with forward slashes unescaped and non-ASCII emitted as UTF-8 rather than \uXXXX. The complete rules, and the manifests themselves, are published in stage 2 below.
python3 -c "import json,hashlib;m=json.load(open('artwork_manifest.json'));print(hashlib.sha256(json.dumps(m,separators=(',',':'),ensure_ascii=False).encode('utf-8')).hexdigest())"
The result must equal the corresponding value in the commitments table above. An important property: the allocation manifest identifies packs only by an anonymous, immutable reference. No user identity is included — so transferring a pack from our reserve to a member does not change the Allocation Commitment hash.
Opened packs are burned in batches via burnBatchFromCustody on the Mystery Packs contract. For Pool A (1101), remaining + burned = 300. For Pool B (1202), remaining + burned = 200. Because burns are batched, there is a lag between a reveal and its on-chain burn.
cast call 0x2B5DaC082f664986e77b4f075617D1908BBd109C "balanceOf(address,uint256)(uint256)" \
0x502cef1173c162a39d8b23fa69579d862c2c728a 1101 --rpc-url "$POLYGON_RPC_URL"
cast call 0x2B5DaC082f664986e77b4f075617D1908BBd109C "burnedOf(uint256)(uint256)" 1101 --rpc-url "$POLYGON_RPC_URL"
- Opening a pack is irreversible. A pack cannot be un-opened, and a reveal cannot be re-rolled.
- Withdrawal to your own wallet is irreversible. If you supply an incorrect destination address, we cannot recover, restore, or re-issue the NFT. Please verify the address yourself.
- Withdrawal is request-based and processed manually. It is not instant.
- No fees for members. Gas for the withdrawal transaction is paid by the operator’s custody wallet; we do not charge a withdrawal fee.
- Withdrawal requests open at a later date after launch, and each request is reviewed and approved by the operator before the transfer is sent.
- Images are stored off-chain on IPFS. Display may be delayed or temporarily unavailable depending on gateway conditions. Your ownership is not affected.
- We take no part in, and accept no responsibility for, secondary-market pricing or trading.
- Every value published on this page (SHA-256 commitments, CIDs, contract addresses) is frozen and will not change. Should circumstances ever require a change, we will disclose the change and the reason for it.
| Term | Meaning |
|---|---|
| SHA-256 | A one-way function producing a 64-character hex value. A single-bit change in the input produces a completely different output. |
| Commitment | Publishing only the SHA-256 of a data set up front. Releasing the data later and matching the published hash proves nothing was substituted. |
| Manifest | The full data set (500 Machines, or 500 packs) that the SHA-256 is computed over. |
| Seed | The fixed string used to derive the assignment. It was chosen before the commitment was frozen and will be published here after the reveal opens. |
| IPFS / CID | Distributed file storage, and the identifier for a set of files within it. The same CID always means the same content. |
| ERC-721 / ERC-1155 | NFT standards for one-of-a-kind items and for multi-copy items, respectively. |
| Burn | Permanently destroying a token. Here, applied to opened packs. |