# Graffiti

Heroglyph Graffiti is constructed with the following format:

* `#` precedes the tickers' names, separated by commas.
* `@` precedes the Graffiti Id's name.
* `-` precedes the global chain to execute all tickers on.

If `-` is missing, the default chain will automatically be used as global. If `#` or `@` are missing, the graffiti is invalid and won't be executed by Heroglyphs.

**Note:** You will have to pay the LayerZero fee on the target chain if you are not minting on Arbitrum.

Example of a valid graffiti: `#lueygi,69@atum-a` `#lueygi,69@atum` `#@atum`

Examples of invalid graffiti: `@atum-a` `#lueygi-a` `#lueygi@-a` `lueygi@atum`

### Advanced

You can override a specific ticker's execution chain by adding it after the ticker name: `#TickerNameA:OverriddenChain,TickerNameB@0xAtum`

For example: `#lueygi:h,69@atum` In this example, `lueygi` will be minted on **Base**, and `69` on **Arbitrum**.

### Cross-chain fee & claiming

When minting from another chain, you'll need to pay the layer-zero fee on the target chain, requiring extra steps.

For simplification, let's consider minting `lueygi` on `base`:

1. Switch to Base.
2. Approve WETH for `lueygi`.
3. Execute `lueygi.claimAction(srcChainLzEndpoint, [0])`.
   1. `[0]` is the id of the minting, for simplification, we will say this is our first time doing so

You'll pay the layer-zero fee with WETH and receive your token on the base chain

## Cross-chain graffiti's code

```typescript
enum EGraffitiChains {
  ARBITRUM = "a",
  ETHEREUM = "b",
  BNB_CHAIN = "c",
  AVALANCHE = "d",
  POLYGON = "e",
  OPTIMISM = "f",
  FANTOM = "g",
  DFK = "h",
  HARMONY = "i",
  DEXALOT_SUBNET = "j",
  CELO_MAINNET = "k",
  MOONBEAM = "l",
  FUSE_MAINNET = "m",
  GNOSIS = "n",
  DOS_CHAIN = "o",
  KLAYTN_MAINNET_CYPRESS = "p",
  METIS = "q",
  CORE_BLOCKCHAIN_MAINNET = "r",
  OKXCHAIN_MAINNET = "s",
  POLYGON_ZEVM = "t",
  CANTO = "u",
  ZKSYNC_ERA_MAINNET = "v",
  MOONRIVER = "w",
  TENET = "x",
  ARBITRUM_NOVA = "y",
  METER_MAINNET = "z",
  KAVA = "aa",
  MANTLE = "bb",
  HUBBLE = "cc",
  LINEA = "dd",
  BASE = "ee",
  ZORA = "ff",
  VICTION = "gg",
  LOOT = "hh",
  MERIT_CIRCLE = "ii",
  TELOS_EVM = "jj",
  OPBNB_MAINNET = "kk",
  ASTAR = "ll",
  AURORA_MAINNET = "mm",
  CONFLUX_ESPACE = "nn",
  ORDERLY_MAINNET = "oo",
  SCROLL = "pp",
  HORIZEN_EON_MAINNET = "qq",
  XPLA_MAINNET = "rr",
  MANTA = "ss",
  SHIMMER = "tt",
  INJECTIVE = "uu",
  RARIBLE = "vv",
  XAI = "ww",
  REAL = "xx",
  TILTYARD = "yy",
  BLAST = "zz",
  FRAXTAL = "aaa",
  ASTAR_ZEVM = "bbb",
  MODE = "ccc",
  MASA = "ddd",
  HOMEVERSE = "eee",
  MERLIN = "fff",
  DEGEN = "ggg",
  SKALE = "hhh",
  XLAYER = "iii",
  SANKO = "jjj",
  BOB = "kkk",
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.heroglyphs.com/heroglyphs/validators/graffiti.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
