Examples

On-chain Mode

import {
  SignProtocolClient,
  SpMode,
  EvmChains,
  delegateSignAttestation,
  delegateSignRevokeAttestation,
  delegateSignSchema,
} from '@ethsign/sp-sdk';
import { privateKeyToAccount } from 'viem/accounts';
const privateKey = '0xabc'; // optional

const client = new SignProtocolClient(SpMode.OnChain, {
  chain: EvmChains.polygonMumbai,
  account: privateKeyToAccount(privateKey), // Optional,if you want to use the browser plugin account does not need to pass in
});

//create schema
const createSchemaRes = await client.createSchema({
  name: 'xxx',
  data: [{ name: 'name', type: 'string' }],
});

// delegation create schema
const delegationPrivateKey = '0xaaaaa';
const info = await delegateSignSchema(
  {
    name: 'xxx',
    data: [{ name: 'name', type: 'string' }],
  },
  {
    chain: EvmChains.polygonMumbai,
    delegationAccount: privateKeyToAccount(delegationPrivateKey),
  }
);
const delegateCreateSchemaRes = await client.createSchema(info.schema, {
  delegationSignature: info.delegationSignature,
});

// create attestation
const createAttestationRes = await client.createAttestation({
  schemaId: '0x3',
  data: { name: 'a' },
  indexingValue: 'xxx',
});

// delegation  create attestation
const delegationPrivateKey = '0xaaaaa';
const info = await delegateSignAttestation(
  {
    schemaId: '0x1',
    data: { name: 'a' },
    indexingValue: 'xxx',
  },
  {
    chain: EvmChains.polygonMumbai,
    delegationAccount: privateKeyToAccount(delegationPrivateKey),
  }
);

const delegationCreateAttestationRes = await client.createAttestation(
  info.attestation,
  {
    delegationSignature: info.delegationSignature,
  }
);

//revoke attestation
const revokeAttestationRes = await client.revokeAttestation('0x3', {
  reason: 'test',
});

//delegation revoke attestation

const delegationPrivateKey = '0xaaaaa';
const info = await delegateSignRevokeAttestation(attestationId, {
  chain: EvmChains.polygonMumbai,
  reason: 'test',
  delegationAccount: privateKeyToAccount(delegationPrivateKey),
});
const delegationRevokeAttestationRes = await client.revokeAttestation(
  info.attestationId,
  {
    reason: info.reason,
    delegationSignature: info.delegationSignature,
  }
);

Off-chain (Arweave) Mode

import {
  SignProtocolClient,
  SpMode,
  EvmChains,
  OffChainSignType,
} from '@ethsign/sp-sdk';
import { privateKeyToAccount } from 'viem/accounts';
const privateKey = '0xabc'; // optional
const client = new SignProtocolClient(SpMode.OffChain, {
  signType: OffChainSignType.EvmEip712,
  account: privateKeyToAccount(privateKey), // optional
});

//create schema
const schemaInfo = await client.createSchema({
  name: 'xxx',
  data: [{ name: 'name', type: 'string' }],
});

//create attestation
const attestationInfo = await client.createAttestation({
  schemaId: 'xxxx', //schemaInfo.schemaId or other schemaId
  data: { name: 'a' },
  indexingValue: 'xxx',
});

//revoke attestation
const attestationId = 'xxx';
const revokeAttestationRes = await client.revokeAttestation(attestationId, {
  reason: 'test',
});

Index Service

import { IndexService } from '@ethsign/sp-sdk';

async function getSchemaListFromIndexService() {
  const indexService = new IndexService('testnet');
  const res = await indexService.querySchemaList({ page: 1 });
}

async function getSchemaFromIndexService() {
  const indexService = new IndexService('testnet');
  const res = await indexService.querySchema('onchain_evm_80001_0x1');
}

async function getAttestationListFromIndexService() {
  const indexService = new IndexService('testnet');
  const res = await indexService.queryAttestationList({ page: 1 });
}

async function getAttestationFromIndexService() {
  const indexService = new IndexService('testnet');
  const res = await indexService.queryAttestation('onchain_evm_80001_0x1');
}

Last updated