Approach 2 is leaner, but tags don't mean the same thing across event kinds, so using `r` tags might not be a good idea
Some event kinds are always anchored to other things like comments. That's why NIP-22 was created.
Here is an example of a comment on a URL from NIP-22
{
"kind": 1111,
"content": "Nice article!",
"tags": [
// referencing the root url
["I", "https://abc.com/articles/1"],
// the root "kind": for an url, the kind is its domain
["K", "https://abc.com"],
// the parent reference (same as root for top-level comments)
["i", "https://abc.com/articles/1"],
// the parent "kind": for an url, the kind is its domain
["k", "https://abc.com"]
]
// other fields
}
Considering zap requests and receipts are also anchored to other events, maybe you can use the K, E, A, I, k, e, a, i tags with the zap event kinds?