Po.et Documentation
Technical documentation for the Po.et Network

About Po.et
Use Po.et


Po.et is a decentralized event-sourced system. Events can be made up of any data, and they are anchored to the blockchain in the form of claims.

Claim Goals

Claim Structure

Claims can have any information at all, but must include:

For example, a claim could look like this:

  '@context': {
    cred: 'https://w3id.org/credentials#',
    dc: 'http://purl.org/dc/terms/',
    schema: 'http://schema.org/',
    sec: 'https://w3id.org/security#',
    id: 'sec:digestValue',
    issuer: 'cred:issuer',
    issuanceDate: 'cred:issued',
    type: 'schema:additionalType',
    claim: 'schema:CreativeWork',
    archiveUrl: 'schema:url',
    author: 'schema:author',
    canonicalUrl: 'schema:url',
    contributors: {
      '@id': 'schema:ItemList',
      '@container': '@list',
      '@type': 'schema:contributor',
    copyrightHolder: 'schema:copyrightHolder',
    dateCreated: 'schema:dateCreated',
    datePublished: 'schema:datePublished',
    license: 'schema:license',
    name: 'schema:name',
    tags: 'schema:keywords',
    hash: 'sec:digestValue',
  id: 'f4b3e6cd7e516211d1b718b84860d26f59e3933c03c25c29d4e9ce9cc34ff26b',
  type: ClaimType.Work,
  issuanceDate: '2018-10-12T01:54:11.559Z',
  claim: {
    name: 'A Study in Scarlet',
    author: 'Arthur Conan Doyle',
    tags: 'detective novel, detective',
    dateCreated: '1886-01-01T00:00:00.000Z',
    datePublished: '1887-01-01T00:00:00.000Z',
  'sec:proof': {
    '@graph': {
      '@type': 'sec:Ed25519Signature2018',
      'dc:created': {
        '@type': 'http://www.w3.org/2001/XMLSchema#dateTime',
        '@value': '2018-10-12T01:54:11Z',
      'dc:creator': {
      'sec:nonce': 'cjn5czg1u0000mnc93s13ihuz',

The issuer field contains the public part of a key pair you own. You’ll need the corresponding private key to prove this claim was generated by you. Use @poet/poet-js to generate an appropriate issuer from your private key.

The sec:proof must be set to the result of cryptographically signing the claim with the private key you own using jsonld-signatures with the ED25519 eliptical curve. This signature is currently being validated with jsonld-signatures.verify, and we’re using jsonld-signatures.sign to sign claims.

The id field is the sha256 of the canonicalized claim, excluding the id and sec:proof fields, so getId(claim) == getId(getId(claim)). We’re using DigitalBazaar’s jsonld implementation of JSON-LD in order to serialize the claims to a byte buffer deterministically and hashing this byte buffer.

We use URIs to resolve identities and references for now, pending investigation and progress into the DID specification. Lots of existing developer tools already know how to resolve URIs, which will maximize our ability to take advantage of already existing tools.

Further Reading

  1. W3C Verifiable Credentials Data Model: Claims Draft
  2. W3C Linked Data Signatures 1.0 - Draft: Linked Data Signature Overview
  3. W3C Linked Data Signatures 1.0 - Draft: Multiple Signatures
  4. W3C RDF Dataset Normalization