通过后量子 ML-KEM-768 密钥封装和多链支持,为区块链应用程序启用抗量子加密和秘密管理。
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install cifer-sdk或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install cifer-sdk⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/cifer-sdk/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
> Skill for AI Agents | Enable quantum-resistant encryption in blockchain applications using the CIFER SDK.
CIFER (Cryptographic Infrastructure for Encrypted Records) SDK provides quantum-resistant encryption for blockchain applications. This skill enables AI agents to implement secure data encryption, secret management, and on-chain commitments using post-quantum cryptography.
Use the CIFER SDK when you need to:
npm install cifer-sdk
# or
yarn add cifer-sdk
# or
pnpm add cifer-sdk
Requirements: Node.js 18.0+, TypeScript 5.0+ (recommended)
import { createCiferSdk, Eip1193SignerAdapter, blackbox } from 'cifer-sdk';
// 1. Initialize SDK with auto-discovery
const sdk = await createCiferSdk({
blackboxUrl: 'https://blackbox.cifer.network',
});
// 2. Connect wallet (browser)
const signer = new Eip1193SignerAdapter(window.ethereum);
// 3. Encrypt data
const encrypted = await blackbox.payload.encryptPayload({
chainId: 752025,
secretId: 123n,
plaintext: 'My secret message',
signer,
readClient: sdk.readClient,
blackboxUrl: sdk.blackboxUrl,
});
// 4. Decrypt data
const decrypted = await blackbox.payload.decryptPayload({
chainId: 752025,
secretId: 123n,
encryptedMessage: encrypted.encryptedMessage,
cifer: encrypted.cifer,
signer,
readClient: sdk.readClient,
blackboxUrl: sdk.blackboxUrl,
});
console.log(decrypted.decryptedMessage); // 'My secret message'
---
A secret is the core primitive in CIFER. Each secret represents an ML-KEM-768 key pair:
| Property | Description | |----------|-------------| | owner | Address that can transfer, set delegate, and decrypt | | delegate | Address that can decrypt only (zero address if none) | | isSyncing | true while key generation is in progress | | clusterId | Which enclave cluster holds the private key shards | | secretType | 1 = ML-KEM-768 (standard) | | publicKeyCid | IPFS CID of public key (empty if syncing) |
Lifecycle: Creation → Syncing (~30-60s) → Ready
| Role | Capabilities | |------|-------------| | Owner | Encrypt, decrypt, transfer, set delegate | | Delegate | Decrypt only |
CIFER uses hybrid encryption:
Output format:
cifer: 1104 bytes (ML-KEM ciphertext + tag)encryptedMessage: Variable length (max 16KB)The SDK returns transaction intents instead of executing transactions:
interface TxIntent {
chainId: number;
to: Address;
data: Hex;
value?: bigint;
}
Execute with any wallet library (ethers, wagmi, viem).
---
const sdk = await createCiferSdk({
blackboxUrl: 'https://blackbox.cifer.network',
});
sdk.getSupportedChainIds(); // [752025, 11155111, ...]
sdk.getControllerAddress(752025); // '0x...'
sdk.getRpcUrl(752025); // 'https://...'
const sdk = await createCiferSdk({
blackboxUrl: 'https://blackbox.cifer.network',
chainOverrides: {
752025: {
rpcUrl: 'https://my-private-rpc.example.com',
secretsControllerAddress: '0x...',
},
},
});
import { createCiferSdkSync, RpcReadClient } from 'cifer-sdk';
const readClient = new RpcReadClient({
rpcUrlByChainId: {
752025: 'https://mainnet.ternoa.network',
},
});
const sdk = createCiferSdkSync({
blackboxUrl: 'https://blackbox.cifer.network',
readClient,
chainOverrides: {
752025: {
rpcUrl: 'https://mainnet.ternoa.network',
secretsControllerAddress: '0x...',
},
},
});
---
All wallets must implement the SignerAdapter interface:
interface SignerAdapter {
getAddress(): Promise<string>;
signMessage(message: string): Promise<string>;
sendTransaction?(txRequest: TxIntent): Promise<TxExecutionResult>;
}
import { Eip1193SignerAdapter } from 'cifer-sdk';
await window.ethereum.request({ method: 'eth_requestAccounts' });
const signer = new Eip1193SignerAdapter(window.ethereum);
import { EthereumProvider } from '@walletconnect/ethereum-provider';
const provider = await EthereumProvider.init({
projectId: 'YOUR_WALLETCONNECT_PROJECT_ID',
chains: [752025],
showQrModal: true,
});
await provider.connect();
const signer = new Eip1193SignerAdapter(provider);
import { Wallet } from 'ethers';
const wallet = new Wallet(process.env.PRIVATE_KEY);
const signer = {
async getAddress() { return wallet.address; },
async signMessage(message) { return wallet.signMessage(message); },
};
import { useAccount, useConnectorClient } from 'wagmi';
function useCiferSigner() {
const { address, isConnected } = useAccount();
const { data: connectorClient } = useConnectorClient();
const getSigner = async () => {
if (!isConnected || !connectorClient) {
throw new Error('Wallet not connected');
}
const provider = await connectorClient.transport;
return new Eip1193SignerAdapter(provider);
};
return { getSigner, address, isConnected };
}
---
Interact with the SecretsController contract for secret management.
// Get secret creation fee
const fee = await keyManagement.getSecretCreationFee({
chainId: 752025,
controllerAddress: sdk.getControllerAddress(752025),
readClient: sdk.readClient,
});
// Get secret state
const state = await keyManagement.getSecret(params, 123n);
// Returns: { owner, delegate, isSyncing, clusterId, secretType, publicKeyCid }
// Check if secret is ready
const ready = await keyManagement.isSecretReady(params, 123n);
// Check authorization
const canDecrypt = await keyManagement.isAuthorized(params, 123n, '0x...');
// Get secrets by wallet
const secrets = await keyManagement.getSecretsByWallet(params, '0xUser...');
// Returns: { owned: bigint[], delegated: bigint[] }
// Create a new secret
const fee = await keyManagement.getSecretCreationFee(params);
const txIntent = keyManagement.buildCreateSecretTx({
chainId: 752025,
controllerAddress: sdk.getControllerAddress(752025),
fee,
});
// Set delegate
const txIntent = keyManagement.buildSetDelegateTx({
chainId: 752025,
controllerAddress: sdk.getControllerAddress(752025),
secretId: 123n,
newDelegate: '0xDelegate...',
});
// Remove delegate
const txIntent = keyManagement.buildRemoveDelegationTx({ ... });
// Transfer ownership (irreversible!)
const txIntent = keyManagement.buildTransferSecretTx({
chainId: 752025,
controllerAddress: sdk.getControllerAddress(752025),
secretId: 123n,
newOwner: '0xNewOwner...',
});
...
安装 西弗SDK 后,可以对 AI 说这些话来触发它
Help me get started with Cifer SDK
Explains what Cifer SDK does, walks through the setup, and runs a quick demo based on your current project
Use Cifer SDK to quantum-resistant encryption and secret management for blockchain a...
Invokes Cifer SDK with the right parameters and returns the result directly in the conversation
What can I do with Cifer SDK in my finance & investment workflow?
Lists the top use cases for Cifer SDK, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/cifer-sdk/ 目录(个人级,所有项目可用),或 .claude/skills/cifer-sdk/(项目级)。重启 AI 客户端后,用 /cifer-sdk 主动调用,或让 AI 根据上下文自动发现并使用。
西弗SDK 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
西弗SDK 可免费安装使用。请查阅仓库了解许可证信息。
通过后量子 ML-KEM-768 密钥封装和多链支持,为区块链应用程序启用抗量子加密和秘密管理。
西弗SDK 属于「Finance & Investment」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my finance & investment tasks using Cifer SDK
Identifies repetitive steps in your workflow and sets up Cifer SDK to handle them automatically