chain-insights 0.63.0 → 0.64.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -178,12 +178,25 @@ A thing has one name on topology, facts and chain. Copy a value from one layer i
|
|
|
178
178
|
|
|
179
179
|
A kind is a second label that topology takes from a chain fact: `:Account` for a key holder, `:Contract` for a contract (`:Contract:SmartAccount` for a contract wallet). Never both on one address. An address that only received has none, and so does a Nitro precompile on topology (chain reads it as a contract). A role label such as `:Pool` or `:Token` stays beside the kind. `is_contract` stays beside `:Contract`. Facts serves no kind: a facts read that names `:Account` or `:Contract` is refused, so ask `USE topology`, or `USE chain` for `is_contract` and `nonce`.
|
|
180
180
|
|
|
181
|
-
|
|
181
|
+
Marks say what an address is. They sit beside the kind and are never an anchor:
|
|
182
182
|
|
|
183
183
|
- `:Token` is a token contract: every ERC20, ERC721, ERC1155 and ERC6909 contract the chain's asset scan knows. `token_standard` on the node says which one (`ERC20`, `ERC721`, `ERC1155` or `ERC6909`). A token with no standard yet has no mark.
|
|
184
184
|
- `:NFT` is a token contract whose `token_standard` is `ERC721` or `ERC1155`. An `ERC20` is `:Token` only.
|
|
185
185
|
- `:Pool` is a pool contract the DEX indexer knows, traded or not. A bonding curve, a Virtuals starting pool and a pair that nobody has swapped in are `:Pool` from the day the pool is discovered. A singleton pool manager, such as the PoolManager, is never `:Pool`.
|
|
186
186
|
|
|
187
|
+
- `:Launchpad` is a Virtuals launchpad contract: an agent token or its starting pool. Its `labels` name the agent and its stage, `virtuals:<NAME>:bonding` or `virtuals:<NAME>:graduated`.
|
|
188
|
+
- `:Mixer` is a mixer contract from the mixer registry: a pool, the router or the relayer of a Tornado-style mixer (Hearsay on robinhood). Its `labels` carry the word `Mixer` and `label_risk_levels` carries `high`.
|
|
189
|
+
- `:Protocol` is a protocol's own contract: a pool, a router, a position manager, a stock token's proxy. It is never given for a token name alone.
|
|
190
|
+
- `:SmartAccount` is a contract wallet, beside `:Account` or `:Contract`.
|
|
191
|
+
|
|
192
|
+
**Ask by mark.** A question that names a kind of thing (mixers, launchpad pools, NFT collections, tokens of one standard) is a label match on the mark, a probe the server answers from the label index: nine `:Mixer` rows come back in 13 ms, a count of 2.4 million `:Token` in 4 s.
|
|
193
|
+
|
|
194
|
+
```cypher
|
|
195
|
+
USE topology MATCH (a:Mixer) RETURN a.address AS address, labels(a) AS node_labels, a.labels AS labels LIMIT 25
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Never write `MATCH (a:Address) WHERE a.labels CONTAINS "mixer"` with no address: `labels` is a list on every address, the scan touches all of them and the query times out. Read `a.labels` only beside an anchor, or beside a mark. The marks a lane serves, and a golden set of 37 addresses with the marks each must carry, are pinned in `tests/fixtures/graph-marks-golden.json`.
|
|
199
|
+
|
|
187
200
|
A token name from an explorer gives `:Token`, not `:Protocol`. `:Token` is a mark, not a stop: the walk guard below does not name it. One contract can carry both marks: a Uniswap v2 pair is itself an ERC20 token of its liquidity providers, so it is `:Pool` and, when the asset scan lists it, `:Token` too. Ask which tokens or pools an address touched with the mark: `WHERE t:Token` or `WHERE p:Pool`.
|
|
188
201
|
|
|
189
202
|
A topology link is a lifetime summary of a pair, and a facts row is one event. They are two things, so they keep two names: `SWAPPED`, `ADDED_LIQUIDITY` and `REMOVED_LIQUIDITY` on topology, `SWAP`, `LIQUIDITY_ADD` and `LIQUIDITY_REMOVE` on facts. Read the summary on topology, anchored on an address, then the events behind it on facts, by the pair and one day.
|
|
@@ -136,7 +136,9 @@ Run them in this order. Each step names its query in reference.md.
|
|
|
136
136
|
`virtuals:<NAME>:<stage>`. `AgentTokenV4` is missing on some tokens.
|
|
137
137
|
Tell them apart by the factory that made them (A6).
|
|
138
138
|
- The starting pool is `:Pool` from the day it is discovered, and the
|
|
139
|
-
agent token is `:Token`.
|
|
139
|
+
agent token is `:Token`. Both carry `:Launchpad` beside it, so
|
|
140
|
+
`MATCH (p:Pool:Launchpad)` lists every starting pool (see Marks in
|
|
141
|
+
reference.md). The Uniswap pair of the agent is `:Pool`, graduated
|
|
140
142
|
or not. The pre-made Uniswap pair of an agent that never graduated has
|
|
141
143
|
no Virtuals label at all.
|
|
142
144
|
- Holder counts on an explorer can run ahead of the graph. The graph
|
|
@@ -208,3 +208,24 @@ RETURN b.address AS linked_address, l.basis AS basis, l.confidence AS confidence
|
|
|
208
208
|
| Five random agents of that creator | All five never traded beyond dust (B3). |
|
|
209
209
|
| BIBEL, starting pool `0x09e9df72f639875b58dbfd356e31c47b0b87f65b` | Three holders: the pool and two wallets that bought in the same second through the router (B4). Both share the funder `0xca7ded7e4f4ba8ab3b10009236ae6d1b95094589` (C3). |
|
|
210
210
|
| VEX, Uniswap pair `0x817f16f5d8da83d1b089b082c0172af3923618da` | Seeded with about 23,225 USD by the token contract, never removed (B1). 82.8M USD volume. The creator `0x32e7c4afea4f868a53ec51435c92ed80625eeb33` only bought VEX (B2). |
|
|
211
|
+
|
|
212
|
+
## Marks on Virtuals contracts
|
|
213
|
+
|
|
214
|
+
What the graph serves on each piece of an agent, read live on 2026-10-21. A row is "marks present"; a lane may add a judgement label beside them.
|
|
215
|
+
|
|
216
|
+
| Piece | Address | Marks | Labels |
|
|
217
|
+
|---|---|---|---|
|
|
218
|
+
| BIBEL agent token, bonding | `0x966890d38bfd587c9d6fd6123389dfe18ac9de0e` | `:Address:Contract:Token:Launchpad`, `token_standard` ERC20 | `Launchpad`, `virtuals:BIBEL:bonding` |
|
|
219
|
+
| BIBEL starting pool | `0x09e9df72f639875b58dbfd356e31c47b0b87f65b` | `:Address:Contract:Pool:Launchpad` | `Launchpad`, `virtuals:BIBEL:bonding` |
|
|
220
|
+
| VEX Uniswap v2 pair, graduated | `0x817f16f5d8da83d1b089b082c0172af3923618da` | `:Address:Contract:Pool:Token:Launchpad`, ERC20 (the pair is the LP token) | `Launchpad`, `uniswap-v2`, `virtuals:VEX:graduated` |
|
|
221
|
+
| XMOBILE agent token (AgentTokenV4) | `0x06c9d1b053e5bd08147c35008a516d53686c14cc` | `:Address:Contract:Token:Launchpad`, ERC20 | `AgentTokenV4`, `Launchpad`, `virtuals:XMOBILE:bonding` |
|
|
222
|
+
| the mass creator wallet | `0x384d92776496bce2c6f08d5b8e015eae498e78b3` | `:Address:Account`, no mark | none |
|
|
223
|
+
| the launch contract | `0x65050a9b7e5075a2ba5ced7b1b64ee66262c40dc` | `:Address:Contract`, no mark | none |
|
|
224
|
+
|
|
225
|
+
Ask for every launchpad pool by the two marks, never by a text match over `labels`:
|
|
226
|
+
|
|
227
|
+
```cypher
|
|
228
|
+
USE topology MATCH (p:Pool:Launchpad) RETURN p.address AS address, labels(p) AS node_labels, p.labels AS labels LIMIT 25
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
The core skill's golden set (`tests/fixtures/graph-marks-golden.json`) pins these rows and the live test reads them on every release.
|