Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
244 changes: 244 additions & 0 deletions contracts/1/0x12fd3db5ae10615873a4eadbe4085d0698965139.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,244 @@
{
"$schema": "https://evmnow.github.io/contract-metadata/v1/schema.json",
"chainId": 1,
"address": "0x12fd3db5ae10615873a4eadbe4085d0698965139",
"meta": {
"version": 1,
"lastUpdated": "2026-08-21T00:00:00Z",
"locale": "en"
},
"name": "Automate Attention",
"symbol": "AATTN",
"description": "A fully on-chain generative NFT whose art and text are computed live by an on-chain LLM and SVG generator.",
"about": "## Automate Attention\n\nAutomate Attention (`AATTN`) is a fully on-chain ERC-721 collection. Nothing about a token is stored as a static file: each `tokenURI` is computed live from other contracts every time it is read.\n\n### Render pipeline\n\n`AutomateAttention.tokenURI` delegates to a **Renderer** (`0x6e8f02f70939ad8fa1497c6b3be5007c9100384e`), which:\n\n1. Runs an on-chain large language model, **OnChainLMv2** (`0x5f8e7d750e75b44747c058a204d8dea0d18fa5d3`), to generate a short aphorism for the token.\n2. Calls **ArtGenerator** (`0xcd84bc27d62e335cea20d1dff70d53f815489e16`), which dispatches across 23 art types to three sub-generators — **ArtGenA** (`0xd1f1d32aada5d09c602cf87e69d1d6d4fa6fa520`), **ArtGenB** (`0xa181e023e476a759f2423f02d61713db606fb45c`), and **ArtGenC** (`0x368934224d01230de6d6005fce4fe85ab37cee8c`) — to build an SVG.\n3. Packs the aphorism, SVG, and traits into a base64 `data:application/json` metadata URI.\n\n### Minting\n\nMinting is a flat 0.01 ETH via `mint()`. The first mint arms a rolling 24-hour window; every subsequent mint resets it. If 24 hours pass with no mint, minting closes permanently and can never reopen.\n\n### Traits\n\nTwo traits are fixed at mint time and packed into one byte per token:\n\n- **State / prefix** — derived from the time since the previous mint: `crowded` (< 5 min), `rising` (< 1 h), `falling` (< 6 h), or `scarce` (> 6 h). It selects the LLM prompt and the art pool.\n- **Wealth** — derived from the minter's ETH balance at mint time: `dust`, `modest` (≥ 0.1 ETH), `holder` (≥ 1 ETH), or `whale` (≥ 10 ETH). It shifts the generated art.\n\nThe project source describes itself as \"a vv inspired project by diid.\"",
"category": "nft",
"tags": ["art", "generative", "onchain", "llm", "ai", "svg"],
"risks": [
"Rolling 24h window — if no mint occurs for 24 hours, minting closes permanently and cannot reopen",
"mint() requires exactly 0.01 ETH — any other amount reverts",
"Ownership is a single EOA that can withdraw ETH and transfer ownership; no multisig or timelock",
"The wealth trait records the minter's approximate ETH balance at mint time onchain"
],
"links": [
{
"label": "Etherscan",
"url": "https://etherscan.io/address/0x12fd3db5ae10615873a4eadbe4085d0698965139"
}
],
"includes": ["interface:erc721", "interface:erc721-metadata"],
"groups": {
"mint": { "label": "Mint", "order": 1 },
"art": { "label": "Art & Traits", "order": 2 },
"info": { "label": "Collection Info", "order": 3 },
"admin": { "label": "Admin", "order": 4 }
},
"actions": {
"mint": {
"title": "Mint",
"description": "Mint one token at the flat 0.01 ETH price while minting is open.",
"intent": "Mint an Automate Attention token for 0.01 ETH",
"stateMutability": "payable",
"group": "mint",
"featured": true,
"warning": "Sends exactly 0.01 ETH. Any other amount reverts, and minting closes forever 24h after the last mint.",
"returns": {
"_0": { "label": "token ID", "type": "token-id" }
},
"related": ["currentPrice", "mintEnded", "mintDeadline"]
},
"currentPrice": {
"title": "Current Price",
"description": "The flat mint price. Always 0.01 ETH.",
"stateMutability": "view",
"group": "mint",
"returns": { "_0": { "label": "price", "type": "eth" } }
},
"mintDeadline": {
"title": "Mint Deadline",
"description": "Unix time at which minting closes. Returns 0 before the first mint.",
"stateMutability": "view",
"group": "mint",
"returns": { "_0": { "label": "deadline", "type": "timestamp" } },
"related": ["mintEnded"]
},
"mintEnded": {
"title": "Mint Ended",
"description": "True once the rolling 24h window has lapsed. Permanent once true.",
"stateMutability": "view",
"group": "mint",
"returns": { "_0": { "label": "ended", "type": "boolean" } },
"related": ["mintDeadline"]
},
"MINT_PRICE": {
"title": "Mint Price Constant",
"description": "The fixed per-token mint price (0.01 ETH).",
"stateMutability": "view",
"group": "mint",
"returns": { "_0": { "label": "price", "type": "eth" } }
},
"MINT_WINDOW": {
"title": "Mint Window",
"description": "The rolling window length that keeps minting open (24 hours).",
"stateMutability": "view",
"group": "mint",
"returns": { "_0": { "label": "window", "type": "duration" } }
},
"tokenPrefix": {
"title": "Token State",
"description": "The market-state trait a token was minted into.",
"stateMutability": "view",
"group": "art",
"params": { "_0": { "label": "token ID", "type": "token-id" } },
"returns": {
"_0": {
"label": "state",
"type": {
"type": "enum",
"values": { "0": "Scarce", "1": "Rising", "2": "Falling", "3": "Crowded" }
}
}
},
"related": ["tokenWealth", "tokenData"]
},
"tokenWealth": {
"title": "Token Wealth",
"description": "The wealth tier derived from the minter's ETH balance at mint time.",
"stateMutability": "view",
"group": "art",
"params": { "_0": { "label": "token ID", "type": "token-id" } },
"returns": {
"_0": {
"label": "wealth",
"type": {
"type": "enum",
"values": { "0": "Dust", "1": "Modest", "2": "Holder", "3": "Whale" }
}
}
},
"related": ["tokenPrefix", "tokenData"]
},
"tokenData": {
"title": "Token Data",
"description": "Raw packed trait byte: low 2 bits are state, next 2 bits are wealth.",
"stateMutability": "view",
"group": "art",
"params": { "_0": { "label": "token ID", "type": "token-id" } },
"returns": { "_0": { "label": "packed byte" } },
"related": ["tokenPrefix", "tokenWealth"]
},
"renderer": {
"title": "Renderer",
"description": "The Renderer contract that builds each token's metadata onchain.",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "renderer", "type": "address" } }
},
"CROWDED_THRESHOLD": {
"title": "Crowded Threshold",
"description": "Below this gap since the last mint, a token is tagged crowded.",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "threshold", "type": "duration" } }
},
"RISING_THRESHOLD": {
"title": "Rising Threshold",
"description": "Below this gap since the last mint, a token is tagged rising.",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "threshold", "type": "duration" } }
},
"FALLING_THRESHOLD": {
"title": "Falling Threshold",
"description": "Below this gap since the last mint, a token is tagged falling.",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "threshold", "type": "duration" } }
},
"MODEST_THRESHOLD": {
"title": "Modest Threshold",
"description": "Minimum minter balance for the modest wealth tier (0.1 ETH).",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "threshold", "type": "eth" } }
},
"HOLDER_THRESHOLD": {
"title": "Holder Threshold",
"description": "Minimum minter balance for the holder wealth tier (1 ETH).",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "threshold", "type": "eth" } }
},
"WHALE_THRESHOLD": {
"title": "Whale Threshold",
"description": "Minimum minter balance for the whale wealth tier (10 ETH).",
"stateMutability": "view",
"group": "art",
"returns": { "_0": { "label": "threshold", "type": "eth" } }
},
"nextTokenId": {
"title": "Next Token ID",
"description": "The token ID the next mint will assign.",
"stateMutability": "view",
"group": "info",
"returns": { "_0": { "label": "next token ID" } }
},
"lastMintTimestamp": {
"title": "Last Mint Time",
"description": "Unix time of the most recent mint. Zero before the first mint.",
"stateMutability": "view",
"group": "info",
"returns": { "_0": { "label": "last mint", "type": "timestamp" } }
},
"owner": {
"title": "Owner",
"description": "The address that can withdraw ETH and transfer ownership.",
"stateMutability": "view",
"group": "admin",
"returns": { "_0": { "label": "owner", "type": "address" } }
},
"withdraw": {
"title": "Withdraw",
"description": "Send the full contract ETH balance to the owner. Only the owner can call this.",
"group": "admin",
"warning": "Owner-only. Transfers the entire collected mint balance to the owner address.",
"related": ["owner"]
},
"transferOwnership": {
"title": "Transfer Ownership",
"description": "Transfer contract ownership to a new address. Only the owner can call this.",
"intent": "Transfer ownership to {_0}",
"group": "admin",
"warning": "Owner-only. The new owner gains full admin control, including ETH withdrawal.",
"params": { "_0": { "label": "new owner", "type": "address" } },
"related": ["owner"]
}
},
"events": {
"Minted": {
"title": "Minted",
"description": "Emitted when a token is minted, recording its state and wealth traits.",
"params": {
"tokenId": { "label": "token ID", "type": "token-id" },
"minter": { "label": "minter", "type": "address" },
"prefixIndex": { "label": "state" },
"wealthIndex": { "label": "wealth" }
}
},
"Withdrawn": {
"title": "Withdrawn",
"description": "Emitted when the owner withdraws the contract's ETH balance.",
"params": {
"to": { "label": "to", "type": "address" },
"amount": { "label": "amount", "type": "eth" }
}
},
"OwnershipTransferred": {
"title": "Ownership Transferred",
"description": "Emitted when contract ownership changes.",
"params": {
"previousOwner": { "label": "from", "type": "address" },
"newOwner": { "label": "to", "type": "address" }
}
}
}
}
37 changes: 37 additions & 0 deletions contracts/1/0x368934224d01230de6d6005fce4fe85ab37cee8c.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"$schema": "https://evmnow.github.io/contract-metadata/v1/schema.json",
"chainId": 1,
"address": "0x368934224d01230de6d6005fce4fe85ab37cee8c",
"meta": {
"version": 1,
"lastUpdated": "2026-08-21T00:00:00Z",
"locale": "en"
},
"name": "Automate Attention ArtGenC",
"description": "Sub-generator producing art types 16-22 for Automate Attention SVGs.",
"about": "## ArtGenC\n\nThe third of three SVG sub-generators for the **Automate Attention** NFT collection (`0x12fd3db5ae10615873a4eadbe4085d0698965139`). It is called by ArtGenerator (`0xcd84bc27d62e335cea20d1dff70d53f815489e16`), which routes art types 16–22 here: Parallel, Fade, Bubbles, Rising Arrows, Orbit, Spine, and Half Circles. Its siblings ArtGenA (`0xd1f1d32aada5d09c602cf87e69d1d6d4fa6fa520`) and ArtGenB (`0xa181e023e476a759f2423f02d61713db606fb45c`) cover the remaining types. The full pipeline is collection -> Renderer (`0x6e8f02f70939ad8fa1497c6b3be5007c9100384e`) -> OnChainLMv2 + ArtGenerator -> A/B/C.\n\n`generate(type, state)` is a pure function returning raw SVG element bytes.",
"category": "nft",
"tags": ["onchain", "generative", "svg", "art"],
"links": [
{
"label": "Etherscan",
"url": "https://etherscan.io/address/0x368934224d01230de6d6005fce4fe85ab37cee8c"
},
{
"label": "Collection (Automate Attention)",
"url": "https://etherscan.io/address/0x12fd3db5ae10615873a4eadbe4085d0698965139"
}
],
"actions": {
"generate": {
"title": "Generate",
"description": "Build the SVG elements for one of art types 16-22 from a type index and PRNG state.",
"stateMutability": "pure",
"params": {
"_0": { "label": "art type", "description": "Type index 16-22 (Parallel, Fade, Bubbles, Rising Arrows, Orbit, Spine, Half Circles)." },
"_1": { "label": "state", "description": "PRNG state seeding the drawing." }
},
"returns": { "_0": { "label": "SVG elements" } }
}
}
}
78 changes: 78 additions & 0 deletions contracts/1/0x5f8e7d750e75b44747c058a204d8dea0d18fa5d3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"$schema": "https://evmnow.github.io/contract-metadata/v1/schema.json",
"chainId": 1,
"address": "0x5f8e7d750e75b44747c058a204d8dea0d18fa5d3",
"meta": {
"version": 1,
"lastUpdated": "2026-08-21T00:00:00Z",
"locale": "en"
},
"name": "OnChainLMv2",
"description": "A fully on-chain language model that generates the aphorism text for Automate Attention tokens.",
"about": "## OnChainLMv2\n\nA transformer language model that runs inference entirely onchain, using INT8 per-channel quantized weights and Q16.16 fixed-point scales. Its architecture (layers, dimensions, vocabulary) is configured at deployment, and the model weights are held in a set of separate SSTORE2 data-storage contracts that this contract reads.\n\nIt is the text engine in the **Automate Attention** render pipeline: the collection (`0x12fd3db5ae10615873a4eadbe4085d0698965139`) renders through a Renderer (`0x6e8f02f70939ad8fa1497c6b3be5007c9100384e`), which calls this model to produce each token's aphorism and then pairs it with art from ArtGenerator (`0xcd84bc27d62e335cea20d1dff70d53f815489e16`).\n\nAll functions are read-only view calls. Inference is gas-intensive and intended to be run via `eth_call`, not in a transaction.",
"category": "nft",
"tags": ["onchain", "llm", "ai", "inference", "transformer"],
"links": [
{
"label": "Etherscan",
"url": "https://etherscan.io/address/0x5f8e7d750e75b44747c058a204d8dea0d18fa5d3"
},
{
"label": "Collection (Automate Attention)",
"url": "https://etherscan.io/address/0x12fd3db5ae10615873a4eadbe4085d0698965139"
}
],
"actions": {
"generate": {
"title": "Generate",
"description": "Run inference from a prompt and return the prompt plus generated tokens.",
"stateMutability": "view",
"params": {
"_0": { "label": "prompt tokens" },
"_1": { "label": "max new tokens" },
"_2": { "label": "temperature", "description": "Sampling temperature; 0 is greedy, 230 is the default." },
"_3": { "label": "seed" }
},
"returns": { "_0": { "label": "tokens" } },
"related": ["generateWithCache", "decode"]
},
"generateWithCache": {
"title": "Generate With Cache",
"description": "Generate using a precomputed KV cache to skip reprocessing the prompt.",
"stateMutability": "view",
"params": {
"_0": { "label": "cache", "type": "address", "description": "SSTORE2 address holding the precomputed KV cache." },
"_1": { "label": "prompt length" },
"_2": { "label": "prompt tokens" },
"_3": { "label": "max new tokens" },
"_4": { "label": "temperature", "description": "Sampling temperature; 0 is greedy, 230 is the default." },
"_5": { "label": "seed" }
},
"returns": { "_0": { "label": "tokens" } },
"related": ["generate", "computeKVCache", "decode"]
},
"computeKVCache": {
"title": "Compute KV Cache",
"description": "Compute the key-value cache bytes for all but the last prompt token.",
"stateMutability": "view",
"params": { "_0": { "label": "prompt tokens" } },
"returns": { "_0": { "label": "cache bytes" } },
"related": ["generateWithCache"]
},
"decode": {
"title": "Decode",
"description": "Decode a sequence of token IDs into a text string.",
"stateMutability": "view",
"params": { "_0": { "label": "tokens" } },
"returns": { "_0": { "label": "text" } },
"related": ["generate"]
},
"logits": {
"title": "Logits",
"description": "Return the raw next-token logits for a sequence of tokens.",
"stateMutability": "view",
"params": { "_0": { "label": "tokens" } },
"returns": { "_0": { "label": "logits" } }
}
}
}
Loading