Dead Simple Digital Ownership

Tephra is a Digital Ownership Platform (DOP) for brands and artists. We securely manage the creation and transfer of digital assets. Our network is massively scalable, verifiable, and immortal.

Built for consumer brands.

We give you the control you need to power the rich seamless experiences your customers expect. With Tephra, shoppers won't have to leave your platform and create an account somewhere else for a verifiable record of ownership.

Preservation-First

Every transaction is stored in the Tephra "Changeset". We regularly preserve the changeset, and take careful steps to ensure these preserves will exist into the distant future.

No Accounts Required

Keep your account provider. We don't store any user data. You only need to provide Tephra with user IDs that are meaningful to your platform when granting and transferring assets.

Rich History & Validation

Each asset has its own unique validation page. This page is styled to match your branding, and displays the contents of the asset (an image, text, structured attributes, etc) along with the full record of ownership.

Massively Scalable

We can provide accounts to meet virtually any scale requirements. You could manage anywhere from a few assets to a few hundred thousand without changing your integration.

Built for Integration

We've crafted our APIs to extend your digital experience, not to replace it. Combined with modern e-commerce platforms and payment providers, It will produce innovations worthy of your brand.

Portable to Other Markets

If you choose, customers can "eject" assets from Tephra to be bought and sold elsewhere. When an asset leaves our network, we store the date/owner at the time of ejection and maintain the Tephra address as a Certificate of Authenticity.

Start In Seconds

Our JS SDK provides simple functions with TypeScript types, object validation, and simple call patterns.
// Import our SDK
import { TephraSDK } from '@tephranet/tephra-sdk'

// Authenticate
const tephra = new TephraSDK(KEY, SECRET)

// Create an asset
const tokenId = await tephra.create({
  name: 'My First Asset',
  description: 'This asset will exist forever.',
  image: {
    type: 'ipfs',
    address: someIpfsAddress,
  },
  // Attributes can be used to store any structured
  // information about the asset.
  attributes: [{
    label: 'Created By',
    value: 'Me.',
  }]
})

// Grant the asset
await tephra.grant(tokenId, USER_ONE)

// Transfer the asset
await tephra.transfer(tokenId, USER_ONE, USER_TWO)