Skip to content

visualizevalue/black-check

Repository files navigation

Black Check ($BLKCHK)

An ERC20 token backed by Checks Originals NFTs

Black Check ($BLKCHK) is an experimental digital artwork that creates a fungible token representation of Checks Originals NFTs. The contract accepts Check NFTs and mints tokens proportional to their checks count, with a maximum supply of 1 token (1 × 10^18 wei).

📄 Read the Full Whitepaper

⚠️ Important Notice

Participation in this project involves engagement with experimental digital artworks and is undertaken entirely at your own risk. This work does not constitute an offer to sell or the solicitation of an offer to buy any security, commodity, or financial instrument in any jurisdiction. It is a creative exploration of ownership, value, and representation, not an investment vehicle. No guarantees are made regarding liquidity, market value, or future performance.

Token Allocations

The amount of $BLKCHK minted per Check depends on its check count:

Check Type Tokens Minted Decimal Fraction
80-check 0.000244140625 1/4096 2^0 / 4096
40-check 0.00048828125 2/4096 2^1 / 4096
20-check 0.0009765625 4/4096 2^2 / 4096
10-check 0.001953125 8/4096 2^3 / 4096
5-check 0.00390625 16/4096 2^4 / 4096
4-check 0.0078125 32/4096 2^5 / 4096
1-check 0.015625 64/4096 2^6 / 4096

The formula: tokens = (2^divisorIndex) / 4096 (with 18 decimals)

How It Works

Depositing Checks

There are two ways to deposit a Check NFT and receive $BLKCHK tokens:

Method 1: Direct Transfer (safeTransferFrom)

  1. Transfer your Check NFT to the BlackCheck contract address using safeTransferFrom
  2. The contract automatically calculates and mints the appropriate amount of tokens based on the Check's rarity
  3. Tokens are sent to your address

Method 2: Approval Flow (mint)

  1. Approve the BlackCheck contract to transfer your Check NFT(s) using:
    • approve(blackCheckAddress, checkId) for specific checks, OR
    • setApprovalForAll(blackCheckAddress, true) for all your checks
  2. Anyone can call mint([checkId1, checkId2, ...]) on the BlackCheck contract with an array of check IDs
  3. The contract transfers the Check(s) and mints tokens to the NFT owner (not the caller)

Note: The mint function accepts an array of check IDs, allowing multiple checks to be deposited in a single transaction. Since tokens are always minted to the NFT owner, anyone can call mint to help process approved checks without security concerns.

Important: Once deposited, your specific Check can be composited by anyone at any time. You may not be able to retrieve the exact same Check you deposited.

Exchanging for Checks

To exchange your $BLKCHK tokens for a specific Check NFT:

  1. Call exchange(checkId) with the ID of the Check you want
  2. The contract burns the required amount of tokens from your balance
  3. The Check NFT is transferred to you (if the contract owns it)

Compositing Checks

Anyone can composite Checks held by the contract:

composite(keepId, burnId)
  • keepId: The token ID to keep (must be smaller than burnId)
  • burnId: The token ID to burn
  • This progresses the Checks toward Single Checks and eventually the Black Check

Creating the Black Check

The ultimate goal is to create "one" - a single Black Check from 64 single-check tokens:

one(tokenIds)
  • Requires an array of 64 single-check token IDs
  • The smallest ID must be at index 0
  • All checks must be owned by the contract
  • Calls the Checks contract's infinity() function
  • The first check becomes the Black Check (1/∞)

Contract Details

  • Address: 0x718477c471b335ee0ca29b9f4b95edd26d2ede54
  • Token Name: Black Check
  • Token Symbol: $BLKCHK
  • Decimals: 18
  • Max Supply: 1.0 (1 × 10^18 wei)
  • Checks Contract: 0x036721e5A769Cc48B3189EFbb9ccE4471E8A48B1

Development

Running Tests

npx hardhat test

Project Structure

  • contracts/BlackCheck.sol - Main ERC20 contract
  • contracts/interfaces/ - Interface definitions
  • contracts/test/ - Foundry-compatible Solidity tests
  • contracts/mocks/ - Mock contracts for testing

This project may or may not be notable. It explores the transformation of discrete digital objects into fungible representations, questioning the nature of ownership, rarity, and collective creation in the context of on-chain art.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •