proof-of-people · stellar

Collect people,
not points.

Someone you trust vouches for you — and it becomes a star in your constellation. The more people back you, the brighter you shine.

@

3–20 characters: a–z, 0–9 or _

no seed phrase · fees sponsored · one tap

Pick your face

or see how it works

no_seed_phrase/fees_sponsored/live_on_stellar

Ayşe lit a star for MehmetDeniz vouched LeylaKerem backed SelinMert recognized AdaZeynep vouched CanEfe lit a star for NazAyşe lit a star for MehmetDeniz vouched LeylaKerem backed SelinMert recognized AdaZeynep vouched CanEfe lit a star for Naz
on-chain // facts00

CONTRACTS

0

Soroban, on-chain

XP_TRACKS

0

clout vs cashable

STAKE_WIN

0d

vouch window

How it works

[ 01 — 03 ]
01

Vouch

Pick someone you trust, add one line — why. You light a star for them.

mint · 1 line
02

Claim

They open your link, connect in a tap, and claim their half. Two halves become one card.

one tap · sponsored
03

Constellation

Every vouch adds a star. Your profile grows with the people who back you.

on-chain · forever
why_different01
F-01

Names humans, not tasks

Every card is one person and one moment — never a faceless badge or a points counter. Your reputation has a face.

✦ NO POINTS
F-02

Honest by design

Daily caps, first-pair-only, and a separate cashable track keep it real — not farmable.

F-03

Spendable recognition

Earned reputation unlocks real USDC — backed, capped, gated.

F-04

Yours, on-chain — readable by any app

Your constellation lives on Stellar. The reputation primitive can be read by any app in one call.

The most-connected

see_the_night_sky →
★ 20
★ 16
★ 12
★ 8
★ 4
// for_developers02
READ-ONLY · ON-CHAIN

Reputation other apps can read.

One call returns a wallet's score. Build allowlists, gates, and trust signals on a primitive that's on-chain and open.

read_the_docs →
read-reputation.mjs
import {
  Account,
  Address,
  Contract,
  Keypair,
  Networks,
  TransactionBuilder,
  rpc,
  scValToNative,
} from '@stellar/stellar-sdk';

const server = new rpc.Server('https://soroban-testnet.stellar.org');
const contractId = 'CBP34OU4D2RN22PVGH5G5EN4HDWHAD5I7VCOLPPB4RD6NMKBJMXY6KT5'; // reputation contract (testnet)
const address = 'GDIS5BDXSI2DDJNTKRZPI6MNB5XCLMN4Z6PPRPM4RQLZ3PSQ2YTERLFA';

// A read-only view is simulated: nothing is signed or paid, so any well-formed
// source account works.
async function read(method) {
  const source = new Account(Keypair.random().publicKey(), '0');
  const tx = new TransactionBuilder(source, { fee: '100', networkPassphrase: Networks.TESTNET })
    .addOperation(new Contract(contractId).call(method, new Address(address).toScVal()))
    .setTimeout(30)
    .build();
  const sim = await server.simulateTransaction(tx);
  if (rpc.Api.isSimulationError(sim)) throw new Error(sim.error);
  return scValToNative(sim.result.retval);
}

const social = await read('get_score'); // Social XP: from vouches, never cashable
const earned = await read('get_earned'); // Earned XP: from verified quests, the USDC-eligible track
console.log({ social, earned }); // u64 decodes to BigInt, e.g. { social: 15n, earned: 0n }

// your_turn

Someone's waiting to be recognized.

Open the app