On-Chain Verification
Every contribution, endorsement, and reputation record on Pulse is independently verifiable on Arkiv Braga testnet. No backend. No database. No trust required.
Live Entity Counts
Fetching from Arkiv Braga testnet...
Contributions
Endorsements
Streaks
Validations
Passports
Bounties
Entity Relationship Map
Wallet
Passport
All 6 entity types use PROJECT_ATTRIBUTE = { key: "app", value: "pulse:v1" }
Verifiable Queries
Run these queries directly against Arkiv Braga to independently verify all data shown on Pulse.
All Pulse Contributions
Query all contribution entities created by Pulse v1
// Using @arkiv-network/sdk
import { createPublicClient } from "@arkiv-network/sdk";
import { eq } from "@arkiv-network/sdk/query";
import { http } from "@arkiv-network/sdk/transport";
const client = createPublicClient({
chain: { id: 60138453102, rpcUrls: { default: { http: ["https://rpc.braga.arkiv.network"] } } },
transport: http(),
});
const result = await client
.buildQuery()
.where([
eq("app", "pulse:v1"),
eq("type", "contribution"),
])
.withAttributes(true)
.withPayload(true)
.orderBy("createdAt", "number", "desc")
.limit(50)
.fetch();
console.log(result.entities);Leaderboard Query
Get validated contributions ranked by points for a cohort
const leaderboard = await client
.buildQuery()
.where([
eq("app", "pulse:v1"),
eq("type", "contribution"),
eq("status", "validated"),
eq("cohort", "ns-v3-2026"),
])
.withAttributes(true)
.orderBy("points", "number", "desc")
.limit(100)
.fetch();
// Group by wallet to compute total points
const scores: Record<string, number> = {};
for (const entity of leaderboard.entities) {
const attrs = entity.attributes ?? [];
const wallet = attrs.find(a => a.key === "contributorWallet")?.value ?? "";
const pts = Number(attrs.find(a => a.key === "points")?.value ?? 0);
scores[wallet] = (scores[wallet] ?? 0) + pts;
}Reputation Passport Lookup
Fetch a member's full Reputation Passport by wallet address
// Replace with any member wallet
const memberWallet = "0x742d35Cc6634C0532925a3b844Bc454e4438f44e";
const passport = await client
.buildQuery()
.where([
eq("app", "pulse:v1"),
eq("type", "passport"),
eq("memberWallet", memberWallet),
])
.withAttributes(true)
.withPayload(true)
.orderBy("generatedAt", "number", "desc")
.limit(1)
.fetch();
const entity = passport.entities[0];
const payload = JSON.parse(entity.payload ?? "{}");
console.log("AI Narrative:", payload.aiNarrative);
console.log("Total Points:", entity.attributes?.find(a => a.key === "totalPoints")?.value);Direct Links
Technical Stack
Everything shown on Pulse is independently verifiable
No centralized database. No admin keys. Every entity lives on Arkiv Braga testnet, owned by the contributor's wallet.