跳到主要内容

隐身地址

阅读需 3 分钟

隐身地址(Stealth Addresses)是加密货币隐私技术中的一个核心组件,旨在实现接收地址的不可关联性;隐身地址是⼀种通过公钥⽣成的加密地址,允许他⼈向您发送交易⽽不暴露您的真实身份;对发送方是透明的,对接收方是隐藏的。

基于双密钥对的方案,是最经典、最广为人知的方案,主要由  Peter Todd  提出,并在  门罗币(Monro)  和  比特币的 BIP 提案  中得到了应用。

该方案要求接收者生成两个密钥对:

  • 查看密钥对 (View Key Pair)(view_sk, view_pk),用于扫描交易。
  • 消费密钥对 (Spend Key Pair)(spend_sk, spend_pk),用于花费资金。
方案核心技术支持隐私范围交互性主要应用优点缺点
双密钥对椭圆曲线密码学发送方/接收方非交互式门罗币, BIP简单高效,无需注册通常不隐藏交易金额
可重复支付码椭圆曲线密码学发送方/接收方一次性交互比特币 (BIP47)建立了可重复的隐私支付通道需要初始通知交易,轻度交互
Zcash 屏蔽地址零知识证明发送方/接收方/金额非交互式Zcash, Horizen全隐私(交易图+金额)计算开销大,曾有可信设置
ERC-5564椭圆曲线密码学发送方/接收方非交互式以太坊/EVM 链标准化,为以太坊设计依赖外部基础设施(中继器)

隐身地址

发送方和接收方都使用了隐身地址,接收方在处理事件时,会先解析隐身地址,每个接收方只能解出接收者是自己的。

type Stealth struct {
// EphemeralPubKey one-time pub key
EphemeralPubKey string `json:"ephemeralPubKey"`
// StealthAddress one-time address
StealthAddress string `json:"stealthAddress"`
// ViewTag one-time view
ViewTag string `json:"viewTag"`
// CipherData encrypted data including all participant's did
CipherData string `json:"cipherData"`
}

使用 EphemeralPubKey、StealthAddress、ViewTag 可以 check 是否为自己的。不需要使用到私钥

实现

国密 vs 主流算法:

场景国密算法国际主流算法核心差异
非对称加密SM2(256 位)RSA(2048 位)、ECDSA国密更高效,国内合规要求
哈希函数SM3(256 位)SHA-256设计逻辑不同,国密适配国内场景
对称加密SM4(128 位)AES-128加密轮数和轮函数不同,安全性相当
曲线特点典型应用
secp256k1科布利茨曲线,参数简单,计算高效比特币、以太坊等区块链
secp256r1随机曲线,NIST 标准,应用更广泛TLS/SSL 证书、移动设备
SM2(国密)中国自主曲线,参数更复杂,国内合规要求电子签章、政务系统

生成隐身地址

![[Pasted image 20250904171746.png]]

校验:

![[Pasted image 20250904171943.png]]

计算隐身地址私钥:

![[Pasted image 20250904172010.png]]

https://github.com/tjfoc/gmsm

https://jason.mirror.xyz/fq9ZC-RcxKH7-j5BeBypT40soCAXmqhtZ5F5BV4LTrk