This is a work in progress.
PubKey Protocol is the social layer on Solana. It allows users to create and manage a profiles and verify their Social or Solana identities. The identities are verified by the communities in the network.
For more information join our Discord or reach out to @PubKeyApp on X.
The following terms are used throughout the documentation and code:
A Community is an account that represents a team or project that creates Profiles and verifies their Identities.
A Profile is an account that represents a user and their verified Identities.
An Identity is a Social or Solana identity that is verified by one or more Communities.
An IdentityProvider represents the origin of an Identity.
An IdentityProviderId is the unique remote identifier for an IdentityProvider.
A Pointer is an account that maps an Identity to a Profile based on the IdentityProvider and IdentityProviderId.
The following identity providers are supported or in active development:
- Discord
- Github
- Solana
- X
The following identity providers are planned or need investigation:
- Farcaster
- Telegram
The following diagram shows the relationships between the different entities in PubKey Protocol:
erDiagram
Community ||--o{ Profile : "Creates"
Community ||--o{ Identity : "Verifies"
Profile ||--o{ Identity : "Has verified"
Pointer ||--o{ Profile : "Points to"
Pointer |o--|| Identity : "Points from"
Community {
string slug
IdentityProvider[] providers
}
Identity {
string IdentityProvider
string IdentityProviderId
string name
Community[] communties
}
Pointer {
string IdentityProvider
string IdentityProviderId
}
Profile {
string username
string[] authorities
Identity[] identities
}
Tip
If you don't have PNPM installed, you can install it using corepack
:
corepack enable
corepack prepare pnpm@latest --activate
- Clone the repository:
git clone https://github.com/pubkeyapp/pubkey-protocol
cd pubkey-protocol
pnpm install
Start web app
pnpm dev:web
Build web app
pnpm build:web
Build the Anchor program
pnpm build:anchor
Lint all projects
pnpm lint
Test all projects
pnpm test
To iterate on the anchor
program using a local validator, this is the recommended workflow:
Open this in one terminal:
pnpm anchor localnet
And this in another:
pnpm anchor test --skip-deploy --skip-local-validator
MIT