Skip to main content

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.

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, Logger } from '@hashgraphonline/standards-sdk';

const client = new HCS12Client({
network: 'testnet',
logger: new Logger({ module: 'HCS12' }),
operatorId: '0.0.123456',
operatorPrivateKey: 'your-private-key',
});

client.initializeRegistries();
import { HCS12Client } from '@hashgraphonline/standards-sdk';

const client = new HCS12Client({
network: 'testnet',
operatorId: process.env.HEDERA_ACCOUNT_ID!,
operatorPrivateKey: process.env.HEDERA_PRIVATE_KEY!,
});

Browser SetupDirect link to Browser Setup​

import { HCS12BrowserClient } from '@hashgraphonline/standards-sdk';

const browserClient = new HCS12BrowserClient({
network: 'testnet',
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 },
};