DocsThe data protocol

mark/v2

packages/core/schema/mark-v2.schema.json
On 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

Fixture source

{
  "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"
        }
      }
    }
  }
}