DocsThe data protocol
mark/v2
packages/core/schema/mark-v2.schema.jsonOn this page
mark/v2 (11 Nov, board #97) is mark/v1 with its organisation's types: each an is_a claim (claim/v4) about the map's own address or the DAO behind its token, with its kind and evidence, in the order they were found. What tells one organisation on the map from another: its name, its token's symbol and its logo, each with where it came from (Elco, 11 Nov: 'a better module or strategy to grab the names and the token symbols or any logos of these organizations'; board #85, research/org-names-logos-2026-11-11.md, strategy 2: the chain first, then curated lists). One per map, named by the map's address. Each part says whether the thing declared it itself (self-declared), a curated list holds it (verified), or Petals worked it out (inferred).
Fields
| Field | Type or allowed values | Presence in its parent | Description |
|---|---|---|---|
petal |
"mark/v2" | Required | |
about |
string | Required | the map it marks, by its address: chain:address, or chain:population for a whole network (the map card's id) |
name |
choice | Required | the organisation's name, or null when nothing names it beyond the map's own name |
name (variant 1) |
object | Required | |
name (variant 1).value |
string | Required | |
name (variant 1).status |
"self-declared" / "verified" / "inferred" | Required | self-declared: the contract, the DAO or the account says it of itself. verified: a curated list holds this address (verified_by names which). inferred: Petals worked it out (ref says how). |
name (variant 1).source |
string | Required | where it came from, in a word: chain, poster, daohaus, metaplex, ft_metadata, trustwallet, uniswap, coingecko, cow, superchain, arbitrum, jupiter, defillama, petals |
name (variant 1).ref |
string | Required | exactly where: the call it answered (symbol() on eip155:1:0x…), or the list and its version, or the page |
name (variant 1).verified_by |
array | Optional | the curated lists that hold this address, each with its version: what makes a self-declared value verified |
name (variant 1).verified_by[] |
string | Required | |
name (variant 1).at |
string | Required | when it was read there |
name (variant 2) |
null | Required | |
symbol |
choice | Required | its token's symbol, or null |
symbol (variant 1) |
object | Required | |
symbol (variant 1).value |
string | Required | |
symbol (variant 1).status |
"self-declared" / "verified" / "inferred" | Required | self-declared: the contract, the DAO or the account says it of itself. verified: a curated list holds this address (verified_by names which). inferred: Petals worked it out (ref says how). |
symbol (variant 1).source |
string | Required | where it came from, in a word: chain, poster, daohaus, metaplex, ft_metadata, trustwallet, uniswap, coingecko, cow, superchain, arbitrum, jupiter, defillama, petals |
symbol (variant 1).ref |
string | Required | exactly where: the call it answered (symbol() on eip155:1:0x…), or the list and its version, or the page |
symbol (variant 1).verified_by |
array | Optional | the curated lists that hold this address, each with its version: what makes a self-declared value verified |
symbol (variant 1).verified_by[] |
string | Required | |
symbol (variant 1).at |
string | Required | when it was read there |
symbol (variant 2) |
null | Required | |
logo |
choice | Required | its logo, kept by Petals as a picture named by its sha256, or null |
logo (variant 1) |
object | Required | |
logo (variant 1).sha256 |
string | Required | |
logo (variant 1).media_type |
"image/png" / "image/jpeg" / "image/webp" | Required | |
logo (variant 1).status |
"self-declared" / "verified" / "inferred" | Required | self-declared: the contract, the DAO or the account says it of itself. verified: a curated list holds this address (verified_by names which). inferred: Petals worked it out (ref says how). |
logo (variant 1).source |
string | Required | where it came from, in a word: chain, poster, daohaus, metaplex, ft_metadata, trustwallet, uniswap, coingecko, cow, superchain, arbitrum, jupiter, defillama, petals |
logo (variant 1).ref |
string | Required | the address it was read from |
logo (variant 1).at |
string | Required | |
logo (variant 2) |
null | Required | |
read_at |
string | Required | when it was read |
types |
array | Required | its types, each an is_a claim (claim/v4) about its own address, or the DAO behind its token (a Baal's), in the order found: a token, a DAO, a Moloch v3 (Baal); several at once |
types[] |
urn:petal:schema:claim:v4 | Required |
Examples
mark.v2.json
{
"petal": "mark/v2",
"about": "eip155:100:0x372fc5a6b0b12ae174f09f6fc849a83de6b503b6",
"name": {
"value": "RaidGuild",
"status": "self-declared",
"source": "poster",
"ref": "the DAO's own profile, posted through Poster on eip155:100:0xf02fd4286917270cb94fbc13a0f4e1ed76f7e986",
"at": "2026-11-11T15:58:50.889Z"
},
"symbol": {
"value": "RG",
"status": "self-declared",
"source": "chain",
"ref": "symbol() on eip155:100:0x372fc5a6b0b12ae174f09f6fc849a83de6b503b6",
"at": "2026-11-11T15:58:50.889Z"
},
"logo": null,
"types": [
{
"petal": "claim/v4",
"subject": "eip155:100:0x372fc5a6b0b12ae174f09f6fc849a83de6b503b6",
"verb": "is_a",
"object": {
"value": "token"
},
"kind": "observed",
"issued_at": "2026-11-11T15:58:50.889Z",
"by": "tool:petals-marks@1",
"evidence": [
{
"type": "snapshot",
"snapshot_sha256": "c0dbc77a9b2821a140dc603f3c829f97ffc23867b0811b123f3e439b47d63a6f",
"found_by": "tool:petals-marks@1",
"found_at": "2026-11-11T15:58:50.889Z"
}
],
"id": "afcbfc086b202ab1fb330a02cbc10d446190d7ec829186f9d964c9a909611e3f"
},
{
"petal": "claim/v4",
"subject": "eip155:100:0xf02fd4286917270cb94fbc13a0f4e1ed76f7e986",
"verb": "is_a",
"object": {
"value": "DAO"
},
"kind": "inferred",
"method": "marks/types@1",
"qualifiers": {
"grounds": "research"
},
"issued_at": "2026-11-11T15:58:50.889Z",
"by": "tool:petals-marks@1",
"evidence": [
{
"type": "note",
"note": "sharesToken() on eip155:100:0xf02fd4286917270cb94fbc13a0f4e1ed76f7e986 names 0x372fc5a6b0b12ae174f09f6fc849a83de6b503b6, the token it owns: a Moloch v3 (Baal) DAO",
"found_by": "tool:petals-marks@1",
"found_at": "2026-11-11T15:58:50.889Z"
}
],
"id": "1c0b9faccd038c1034fc9c44d4651af5e1d2a4678dfe5b596eeb61bea3b0fc9c"
},
{
"petal": "claim/v4",
"subject": "eip155:100:0xf02fd4286917270cb94fbc13a0f4e1ed76f7e986",
"verb": "is_a",
"object": {
"value": "Moloch v3 (Baal)"
},
"kind": "inferred",
"method": "marks/types@1",
"qualifiers": {
"grounds": "research"
},
"issued_at": "2026-11-11T15:58:50.889Z",
"by": "tool:petals-marks@1",
"evidence": [
{
"type": "note",
"note": "sharesToken() on eip155:100:0xf02fd4286917270cb94fbc13a0f4e1ed76f7e986 names 0x372fc5a6b0b12ae174f09f6fc849a83de6b503b6, the token it owns: a Moloch v3 (Baal) DAO",
"found_by": "tool:petals-marks@1",
"found_at": "2026-11-11T15:58:50.889Z"
}
],
"id": "5b5e7d4270ec5d7913225c8063a6649cd1d9f19e339aca531629fbdc59f03887"
}
],
"read_at": "2026-11-11T15:58:50.889Z"
}
Full schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:petal:schema:mark:v2",
"title": "Petal mark v2",
"description": "mark/v2 (11 Nov, board #97) is mark/v1 with its organisation's types: each an is_a claim (claim/v4) about the map's own address or the DAO behind its token, with its kind and evidence, in the order they were found. What tells one organisation on the map from another: its name, its token's symbol and its logo, each with where it came from (Elco, 11 Nov: 'a better module or strategy to grab the names and the token symbols or any logos of these organizations'; board #85, research/org-names-logos-2026-11-11.md, strategy 2: the chain first, then curated lists). One per map, named by the map's address. Each part says whether the thing declared it itself (self-declared), a curated list holds it (verified), or Petals worked it out (inferred).",
"type": "object",
"additionalProperties": false,
"required": [
"petal",
"about",
"name",
"symbol",
"logo",
"types",
"read_at"
],
"properties": {
"petal": {
"const": "mark/v2"
},
"about": {
"description": "the map it marks, by its address: chain:address, or chain:population for a whole network (the map card's id)",
"type": "string",
"minLength": 3
},
"name": {
"description": "the organisation's name, or null when nothing names it beyond the map's own name",
"oneOf": [
{
"$ref": "#/$defs/said"
},
{
"type": "null"
}
]
},
"symbol": {
"description": "its token's symbol, or null",
"oneOf": [
{
"$ref": "#/$defs/said"
},
{
"type": "null"
}
]
},
"logo": {
"description": "its logo, kept by Petals as a picture named by its sha256, or null",
"oneOf": [
{
"$ref": "#/$defs/logo"
},
{
"type": "null"
}
]
},
"read_at": {
"description": "when it was read",
"type": "string",
"format": "date-time"
},
"types": {
"description": "its types, each an is_a claim (claim/v4) about its own address, or the DAO behind its token (a Baal's), in the order found: a token, a DAO, a Moloch v3 (Baal); several at once",
"type": "array",
"items": {
"$ref": "urn:petal:schema:claim:v4"
}
}
},
"$defs": {
"status": {
"description": "self-declared: the contract, the DAO or the account says it of itself. verified: a curated list holds this address (verified_by names which). inferred: Petals worked it out (ref says how).",
"enum": [
"self-declared",
"verified",
"inferred"
]
},
"source": {
"description": "where it came from, in a word: chain, poster, daohaus, metaplex, ft_metadata, trustwallet, uniswap, coingecko, cow, superchain, arbitrum, jupiter, defillama, petals",
"type": "string",
"pattern": "^[a-z0-9_-]+$"
},
"said": {
"type": "object",
"additionalProperties": false,
"required": [
"value",
"status",
"source",
"ref",
"at"
],
"properties": {
"value": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"status": {
"$ref": "#/$defs/status"
},
"source": {
"$ref": "#/$defs/source"
},
"ref": {
"description": "exactly where: the call it answered (symbol() on eip155:1:0x…), or the list and its version, or the page",
"type": "string",
"minLength": 1
},
"verified_by": {
"description": "the curated lists that hold this address, each with its version: what makes a self-declared value verified",
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"minItems": 1
},
"at": {
"description": "when it was read there",
"type": "string",
"format": "date-time"
}
}
},
"logo": {
"type": "object",
"additionalProperties": false,
"required": [
"sha256",
"media_type",
"status",
"source",
"ref",
"at"
],
"properties": {
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
},
"media_type": {
"enum": [
"image/png",
"image/jpeg",
"image/webp"
]
},
"status": {
"$ref": "#/$defs/status"
},
"source": {
"$ref": "#/$defs/source"
},
"ref": {
"description": "the address it was read from",
"type": "string",
"minLength": 1
},
"at": {
"type": "string",
"format": "date-time"
}
}
}
}
}