3.2.2 • Published 5 months ago

@empe/blockchain-client v3.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

@empe/blockchain-client

A client library for interacting with the Empe blockchain, providing functionality for DID document management, wallet generation, and blockchain transactions.

Installation

npm install @empe/blockchain-client
# or
yarn add @empe/blockchain-client

Features

  • Wallet Generation: Create and manage blockchain wallets
  • DID Document Anchoring: Anchor DID documents on the Empe blockchain
  • DID Document Retrieval: Fetch DID documents from the blockchain
  • Document Transformation: Convert between blockchain protobuf and standard W3C DID document formats

Usage

Generating a Wallet

import { generateWallet } from '@empe/blockchain-client';

// Generate a new wallet with the Empe prefix
const wallet = await generateWallet('empe');
const [{ address }] = await wallet.getAccounts();

console.log('Wallet address:', address);
console.log('Mnemonic phrase:', wallet.mnemonic);

Anchoring a DID Document

import { anchorDidDocument } from '@empe/blockchain-client';
import { Client } from '@empe/identity';

// Create a DID document using the identity client
const client = new Client({ network: 'testnet' });
const document = await client.createEmpeDocument();

// Anchor the document on the blockchain
const response = await anchorDidDocument(
    client,
    document,
    walletMnemonic,
    'empe',
    'https://rpc-testnet.empe.io',
    'https://lcd-testnet.empe.io',
    {
        amount: [{ denom: 'uempe', amount: '30' }],
        gas: '200000',
    }
);

console.log('Transaction hash:', response.transactionHash);

Retrieving a DID Document

import { getDidDocument, transformBlockchainDidDocumentToDIDDocument } from '@empe/blockchain-client';

// Fetch a DID document from the blockchain
const did = 'did:empe:testnet:97eec7696b23ee18aece64af6c6cfc595af94fd4';
const blockchainDocument = await getDidDocument(did, 'https://rpc-testnet.empe.io');

// Transform to standard DID document format
const standardDocument = transformBlockchainDidDocumentToDIDDocument(blockchainDocument);

Format Conversion

The package includes utilities for converting between the W3C DID Document format and the blockchain's protobuf format. This conversion is necessary because the protobuf format used on the blockchain cannot fully represent all aspects of the W3C DID Document standard.

The transformation functions handle these differences by:

  • Restructuring arrays and nested objects to fit the protobuf schema
  • Converting between different representation formats for verification methods
  • Ensuring compatibility with the blockchain's data model while preserving the semantic meaning
// Converting from W3C format to blockchain format
const blockchainFormat = convertToBlockchainDocumentFormat(empeDocument);

// Converting from blockchain format back to W3C format
const w3cFormat = transformBlockchainDidDocumentToDIDDocument(blockchainDocument);

Integration with Other Empe Packages

This package is designed to work with other packages in the Empe ecosystem:

  • @empe/identity: For creating and managing DID documents
  • @empe/empe-did-resolver: For resolving DIDs using the blockchain client

License

MIT