I decided to finally just ask Claude which predicate for “trust” makes the most sense. I’m curious your guys’ thoughts…
Based on what you know about how atoms and triples work… if you wanted to create a relationship for trust where the predicate atom is the trust-oriented one. Which of the following would make the most sense to make a convention (if any)?
-
alice.eth - trusts - bob.eth
-
bob.eth - has tag - trustworthy
-
I - trust - bob.eth
We have a lot of factors consider… thoughts?
Response
This is a great question with real depth. Let me work through each option against the protocol’s mechanics.
Option 3: I - trust - bob.eth – Eliminated
This one falls apart first. In the triple model, “I” would need to be an actual atom. There’s no mechanism for the subject to dynamically resolve to whoever is staking. So either:
- “I” is a literal shared atom, making the statement “The concept of I trusts Bob” – semantically meaningless
- You create per-user triples (
alice.eth - trust - bob.eth), which is just Option 1 with extra steps
Dead on arrival.
Option 1 vs Option 2: The real debate
Option 1: alice.eth - trusts - bob.eth
What it models: Trust as a directional relationship between two specific people.
The problem is who is staking and what are they expressing? When someone stakes FOR this triple, they’re saying “yes, Alice really does trust Bob.” They’re making a prediction about Alice’s internal state – which is unverifiable by third parties and not particularly useful as a market.
If Alice herself creates and stakes on it, she’s making a self-referential assertion. If someone else creates it, it’s gossip.
Then there’s the economics. Every unique A-trusts-B pair needs its own triple with its own vault pair. For a network of 1,000 people, that’s potentially O(N^2) = 1,000,000 triples. TVL gets fragmented across a million thin vaults, each with negligible liquidity. The signal is weak because there’s no capital concentration.
And creation fees add up: every directional trust edge costs gas + a triple creation fee.
Option 2: bob.eth - has tag - trustworthy
What it models: Trustworthiness as a community-assessed property of a person.
Here, the staking mechanics align beautifully with the intent:
- I stake FOR = “I believe Bob is trustworthy”
- I stake AGAINST = “I believe Bob is NOT trustworthy”
- The FOR/AGAINST ratio = the community’s aggregated assessment of Bob’s trustworthiness
All economic signal concentrates in ONE triple per person being evaluated. That’s O(N) = 1,000 triples for 1,000 people. Deep vaults, liquid markets, meaningful price signals.
And crucially – staker identity is still preserved on-chain. You can reconstruct “which addresses staked FOR Bob being trustworthy” from the indexed data. So the directional information (“Alice trusts Bob”) isn’t truly lost; it’s just encoded in staking records rather than in the triple structure itself.
The verdict
Option 2 wins, and it’s not close. It’s better on every axis that matters for the protocol:
| Factor | Option 1 | Option 2 |
|---|---|---|
| Capital efficiency | Fragmented across N^2 vaults | Concentrated in N vaults |
| Signal clarity | “Does Alice trust Bob?” (unknowable) | “Is Bob trustworthy?” (useful) |
| Scalability | O(N^2) triples | O(N) triples |
| Staker intent | Betting on someone else’s feelings | Expressing your own assessment |
| Existing infra | New predicate needed | Already has hasTagAtomId + trustworthyAtomId |
| Composability | Only models trust | has tag works for any trait |
The one thing Option 1 offers that Option 2 doesn’t is explicit directional relationships in the graph itself (useful for PageRank-style trust propagation). But that richness comes at a cost the economics can’t sustain, and the directional data can be reconstructed from staking records anyway.
Option 2 is already the convention in the codebase, and for good reason. It’s the one where the protocol’s economic engine – bonding curves, entry fees rewarding early stakers, FOR/AGAINST prediction markets – actually produces a coherent, useful signal.