Skip to content

密钥与密码学

KeyManager (keys)

密钥派生和地址转换的静态方法。

keys.deriveKeyPair(seed, nonce?)

从种子字符串派生 BabyJubjub 密钥对。

ts
const keyPair = sdk.keys.deriveKeyPair(seed, nonce);
// keyPair.secretKey: bigint
// keyPair.publicKey: { user_address: [bigint, bigint] }
参数类型说明
seedstring秘密种子(最少 16 字符)
noncestring?可选 nonce,用于密钥层次

keys.getPublicKeyBySeed(seed, nonce?)

仅派生公钥(不暴露私钥)。

keys.userPkToAddress(userPk)

将 BabyJubjub 公钥压缩为 32 字节十六进制地址。

keys.addressToUserPk(address)

将十六进制地址解压缩为 BabyJubjub 坐标。


CryptoToolkit (crypto)

静态密码学操作。

crypto.commitment(data)

从记录开启数据计算 Poseidon2 承诺。

crypto.nullifier(commitment, secretKey, mkIndex)

计算 UTXO 的 nullifier。

crypto.createRecordOpening(params)

创建新 UTXO 的完整记录开启(带随机盲因子)。


MemoKit

memo 加密和解密的静态方法。

MemoKit.createMemo(ro)

将记录开启加密为十六进制编码的 memo。

MemoKit.decodeMemoForOwner(input)

使用所有者的私钥解密 memo。

ts
const ro = MemoKit.decodeMemoForOwner({
  secretKey: ownerSecretKey,
  memo: '0x...',
  expectedAddress: ownerAddress,
});