3.2.2 • Published 5 months ago
@empe/blockchain-client v3.2.2
@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-clientFeatures
- 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