Interoperability with Other Decentralized Identity Frameworks
TODO: Are these good interoperability targets? Are there better ones? Is this tutorial useful? Needs complete rethinking. Not tested at all
Introduction
In this tutorial, we will explore how to achieve interoperability between Veramo and other decentralized identity frameworks such as Hyperledger Indy, Sovrin, or uPort.
Steps
Prerequisites
Before you begin, follow the prerequisites for installation and configuration instructions.
1. Integrate with Hyperledger Indy
To integrate with Hyperledger Indy, you need to use the @veramo/did-provider-hyperledger plugin:
npm install @veramo/did-provider-hyperledger
Configure your Veramo agent to use the Hyperledger Indy provider:
import { createAgent } from "@veramo/core";
import { KeyManager } from "@veramo/key-manager";
import { DIDManager } from "@veramo/did-manager";
import { DIDResolverPlugin } from "@veramo/did-resolver";
import { CredentialIssuer } from "@veramo/credential-w3c";
import { DataStore, DataStoreORM } from "@veramo/data-store";
import { HyperledgerIndyDIDProvider } from "@veramo/did-provider-hyperledger";
export const agent = createAgent({
plugins: [
new KeyManager(),
new DIDManager(),
new DIDResolverPlugin(),
new CredentialIssuer(),
new DataStore(),
new DataStoreORM(),
new HyperledgerIndyDIDProvider({
indyNamespace: "sovrin",
genesisPath: "/path/to/indy-genesis.txn",
poolName: "mainnet",
}),
],
});
2. Integrate with Sovrin
Sovrin is based on Hyperledger Indy, so the integration process is similar. Ensure you use the appropriate network configuration for Sovrin:
import { HyperledgerIndyDIDProvider } from "@veramo/did-provider-hyperledger";
export const agent = createAgent({
plugins: [
new HyperledgerIndyDIDProvider({
indyNamespace: "sovrin",
genesisPath: "/path/to/sovrin-genesis.txn",
poolName: "mainnet",
}),
],
});
3. Integrate with uPort
For integrating with uPort, you can use the did:ethr method, as uPort is built on Ethereum:
import { createAgent } from "@veramo/core";
import { KeyManager } from "@veramo/key-manager";
import { DIDManager } from "@veramo/did-manager";
import { DIDResolverPlugin } from "@veramo/did-resolver";
import { CredentialIssuer } from "@veramo/credential-w3c";
import { DataStore, DataStoreORM } from "@veramo/data-store";
import { EthrDIDProvider } from "@veramo/did-provider-ethr";
export const agent = createAgent({
plugins: [
new KeyManager(),
new DIDManager(),
new DIDResolverPlugin(),
new CredentialIssuer(),
new DataStore(),
new DataStoreORM(),
new EthrDIDProvider({
defaultKms: "local",
network: "mainnet",
rpcUrl: "https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID",
}),
],
});