HCS-12: HashLinks SDK
Build interactive, decentralized experiences on Hedera without smart contracts. HashLinks combines WebAssembly logic, Gutenberg UI blocks, and a composition layer to create powerful applications with minimal fees.
What HashLinks DoesDirect link to What HashLinks Does
HashLinks enables you to:
- Execute business logic deterministically through WebAssembly modules
- Create rich UI components using WordPress Gutenberg blocks
- Compose applications by binding actions to blocks via assemblies
- Store everything on-chain using Hedera Consensus Service topics
- Run anywhere with both server-side and browser-based clients
Quick StartDirect link to Quick Start
InstallationDirect link to Installation
npm install @hashgraphonline/standards-sdk
Basic SetupDirect link to Basic Setup
import { HCS12Client, NetworkType, Logger } from '@hashgraphonline/standards-sdk';
const client = new HCS12Client({
network: NetworkType.TESTNET,
mirrorNode: 'https://testnet.mirrornode.hedera.com',
logger: new Logger({ module: 'HCS12' }),
hcs12: { operatorId: '0.0.123456', operatorPrivateKey: 'your-private-key' },
});
await client.initializeRegistries();
Browser SetupDirect link to Browser Setup
import { HCS12BrowserClient, NetworkType } from '@hashgraphonline/standards-sdk';
const browserClient = new HCS12BrowserClient({
network: NetworkType.TESTNET,
mirrorNode: 'https://testnet.mirrornode.hedera.com',
hwc: hashinalsWalletConnectSDK,
});
API Surface & ModulesDirect link to API Surface & Modules
The HCS-12 SDK exports:
- Clients:
HCS12BaseClient,HCS12Client,HCS12BrowserClient - Composition & UI: builders (Action/Block/Assembly), rendering
- Registries & Types: discovery/catalogue helpers, canonical types
- Validation & WASM: zod schemas, WasmValidator, wasm utilities
See dedicated pages for actions, blocks, assembly, rendering, registries, wasm and security.
Core ArchitectureDirect link to Core Architecture
Actions (WebAssembly Logic)Direct link to Actions (WebAssembly Logic)
interface WasmInterface {
INFO(): string;
POST(...): Promise<string>;
GET(...): Promise<string>;
}
Blocks (UI Components)Direct link to Blocks (UI Components)
const block = {
name: 'hashlink/counter',
template_t_id: '0.0.789',
attributes: { count: { type: 'number', default: 0 } },
};
Assemblies (Composition Layer)Direct link to Assemblies (Composition Layer)
const assembly = {
blocks: [blockId],
actions: { increment: actionId },
attributes: { count: 10 },
};