Which predicate for "trust"?

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)?

  1. alice.eth - trusts - bob.eth

  2. bob.eth - has tag - trustworthy

  3. 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.

1 Like

hey killian it is a very good question and i think it depends of the relationship you want to create , i think option 3 might be getting eliminated based on an assumption that doesn’t necessarily have to hold.

The idea is that “I” would need to dynamically resolve to the staking wallet, otherwise it’s meaningless. In our approach, that resolution doesn’t need to happen at the triple level — it happens economically through the staker’s identity.

So:

I – trusts – bob.eth

means:
“The staking wallet publicly asserts: I trust Bob.”

“I” can be a canonical atom representing the asserting subject, and the semantic meaning is completed by who stakes on the triple. It’s not predicting someone else’s internal state — it’s self-attestation with capital attached.

That’s different from:

alice.eth – trusts – bob.eth

which models a claim about Alice.

Economically, the O(N²) argument assumes we want each directional edge to function as a deep global prediction market. In Sofia, that’s not the goal. We’re prioritizing a directional trust graph first, with optional economic positioning on top.

Reputation can still emerge organically:
if many distinct wallets stake FOR their own “I – trust – Bob” edges, Bob effectively becomes trustworthy through aggregation of directional signals — without collapsing everything into a single “has tag – trustworthy” property.

So I see the distinction as:

Option 2 = Reputation-as-Score
Option 3 = Trust-as-Relationship

If the objective is a global rating system, Option 2 makes sense.
If the objective is a directional trust network that enables propagation, circles, and discovery, Option 3 is structurally aligned with that goal.

We chose Option 3 because our product prioritizes relationship semantics over global scoring but we are looking every step that others take to stay align with the protocol and other builder….

Is trust:
A) A property you have?

or

B) A relationship between us?

Option 2 models A.

Option 3 models B.

Option 1 could be created by someone else and not necessarily be true since we can’t tell someone else’s feelings unless they actually stake on it themselves

2 Likes

It depends on the context, but both possibilities can evolve together

1 Like

I guess a further question would be: by “trusting” someone, is it not implied that the person you are trusting is trustworthy? Isn’t that exactly what it means when you say someone is “trustworthy”? Are there any people you consider “trustworthy” who you don’t actually trust? And if “has tag” can be used for many adjectives, then why would trustworthiness be any different?

Moreover when browsing Intuition claims seeing a triple like I - trusts - someone.eth makes no sense because I (smilingkylan.eth) actually DO NOT trust those people. It’s factually incorrect (aside from being grammatically incorrect) IMO and it is also meaningless to anyone not currently looking into WHO actually staked on that triple. I expect new users to be thoroughly confused by claims like “I - follows - intuitionbilly.eth”.

For me I think the big question is whether I want to use “trusts” in lieu of “follows” or “likes”, as the PRIMARY predicate to build a user’s network. By doing so I would be committing myself to enshrining the concept of trust as a first-class citizen for my apps. I feel that Intuition is primarily a tool to uncover truth, and trusting the information other people give you is paramount, so I’m leaning towards enshrining it. If truth is paramount on Intuition then claims made by people you trust should get more prominence in your user experience so I think it makes logical sense

I think the difference between our approaches might simply be the level at which the signal operates

What you’re building is a community-level signal — a global trust score that reflects aggregated sentiment. That makes a lot of sense for surfacing broadly reputable accounts inside MetaMask or X.

What we’re building is slightly different.

We’re prioritizing personalized trust circles. That means the signal is not “Who does the community trust?” but rather “Who do I trust, and how does that shape what I see?”

A global score reflects community consensus.

But consensus and relevance are not the same thing.

An account with a modest global trust score might be extremely valuable to me personally — maybe because we share the same niche, the same domain expertise, or simply because I’ve had strong direct interactions with them.

Conversely, a high-score opinion leader might have massive community backing, but their content may not be relevant or aligned with my context.

So from our perspective:

Your signal = community-level reputation
Our signal = personalized relational weighting

Neither is wrong — they just optimize for different user experiences.

And ideally, both signals can coexist:

  • The global score helps users quickly assess broad credibility.

  • The trust circle shapes a personalized information hierarchy.

We’re simply prioritizing the relational layer first because our apps are designed around contextual discovery rather than global ranking.

1 Like

Option 1 is best because it holds both the subject and the object in one claim along with the predicate

Option 2 removes subjectivity

Option 3 is a no-no because of the ‘I’. It should rather be a unique identifier or atom

Okay I think I see what you guys are saying. If you give “trust” a special meaning or functionality, like if you were to use that predicate to build someone’s trust network, then maybe it’d be better to have it grammatically or structurally different / unique (like not using the “has tag - _____” pattern)