比特币之stealth address

stealth address基本原理:

公私钥对(A,a)和(B,b)

Ab = aB

其中公钥相当于椭圆曲线乘法上的一个点ECPoint,私钥相当于一个系数BigInteger

stealth address地址格式:

[version:1=0x2a] [options:1] [scan_pubkey:33] [N:1] [spend_pubkey_1:33] ...

[spend_pubkey_N:33] [number_sigs:1] [prefix_length:1] [prefix:prefix_length/8, round up]

其中:

Mainnet version = 0x2a (42), testnet version = 0x2b (43)

options bitfield = 0 or 1 (reuse scan_pubkey for spends)

交易产生过程描述如下

先做如下说明

(A,a):表示公私钥对,A为公钥,a为私钥

G:代表椭圆曲线乘法(ECDSA,secp256k1)中的G点。A=aG;

H:信息摘要算法HMac

具体过程如下

step 1

接收者receipt:拥有两对公私钥scan(A,a),payload(B,b)

A,B可以相互推导出stealth address

接收者把自己的stealth address公布出去

step 2

发送者sender:拥有自己一对公私钥(R,r)

拿到stealth address,相当于拿到了receipt的两个公钥A,B

然后通过以下算法来生成一个接收币的公钥P,从而生成一个P address(也就是说sender真正的打币地址是P,但是P所对应的私钥,sender是计算不出来的,所以sender发送币之后就失去了币的使用权)

P = H(rA)G+B;

sender在发送交易的时候,同时把R公布出去

step 3

receipt扫描到自己stealth address上的交易,拿到了R

通过以下公式可以计算出P所对应的私钥   H(aR)+b

从而拥有P的使用权

具体推导公式如下

P = H(rA)G+B = H(raG)G+bG = H(arG)G+bG = H(aR)G+bG=(H(aR)+b)G

所以P对应的私钥为H(aR)+b

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者 Kevin 简介:“比特币技术进阶”由知名比特币技术专家Kevin原创的三篇文章《比特币交易构成》、《时间...
    西部之歌阅读 1,305评论 0 0
  • 仪式感让生活更美好,到底什么是仪式感,也许是早晨起床前听一首歌,给自己一个暗示今天还是美好的开始,也许是晚会上那个...
    这是一只没有刘海的喵阅读 222评论 0 1
  • 我曾一度认为成长只是于孩子而言,并不然,人的一生都需要成长,成长不仅仅局限于学习,也包括了思维方式、社交方式等技能...
    冷饮不加冰阅读 150评论 0 2
  • 《肖申克的救赎》观后感 安迪在历经十九年的牢狱之灾,经过锲而不舍的挖掘后,终于在一个雷电交加之夜从500码的下水道...
    怡然自得66阅读 382评论 0 6