Trusted Assertions (NIP-85)

low level

When to use

Trusted assertions are data events computed by a provider. It's useful when certain operations might be too expensive (bandwidth, compute) on the edge device.

Usage Example

1) Option A: Use NDK default trusted providers

NDK ships defaultTrustedProviders preconfigured for NIP-85.

final metrics = await ndk.ta.getUserMetrics(
  '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
  metrics: {Nip85Metric.rank, Nip85Metric.followers},
);

print('rank=${metrics?.rank}, followers=${metrics?.followers}');

2) Option B: Override providers with your Cipolin instance

  final NdkConfig ndkConfig = NdkConfig(
    cache: db!,
    eventVerifier: eventVerifier,
    bootstrapRelays: APP_DEFAULT_BOOTSTRAP_RELAYS,
    logLevel: Logger.logLevels.info,
    defaultTrustedProviders: APP_DEFAULT_NIP85_PROVIDERS,
  );

or per request


final stream = ndk.ta.getUserMetrics(
        <eventId>,
        metrics: <metrics>,
        providers: <providers>,
      );

print('user rank=${user?.rank} postCount=${user?.postCount}');


final user = await ndk.ta.getUserMetrics(
  '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
  metrics: {Nip85Metric.rank, Nip85Metric.postCount, Nip85Metric.replyCount},
  providers: providers,
);

print('user rank=${user?.rank} postCount=${user?.postCount}');

Providers like Cipolin emit progressive updates while syncing, so streaming APIs are the best fit.

4) Event and addressable lookups

Event metrics (kind 30383):

final eventMetrics = await ndk.ta.getEventMetrics(
  '<eventId>',
  metrics: {Nip85Metric.rank, Nip85Metric.commentCount, Nip85Metric.zapAmount},
  providers: providers,
);

print('event rank=${eventMetrics?.rank} comments=${eventMetrics?.commentCount}');

Addressable metrics (kind 30384):

final addressMetrics = await ndk.ta.getAddressableMetrics(
  '30023:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef:my-article-slug',
  metrics: {Nip85Metric.rank, Nip85Metric.reactionCount, Nip85Metric.zapCount},
  providers: providers,
);

print('address rank=${addressMetrics?.rank} zaps=${addressMetrics?.zapCount}');