请选择 进入手机版 | 继续访问电脑版

比特币地址的构造

所在版块: 区块链技术 2018-03-05 20:14 [复制链接] 查看: 995|回复: 86
[size=1em]比特币地址大家已经并不陌生,也注意到了这种地址常常以字符“1”打头。例如:
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
[size=1em]本文先用一张图片来解释比特币地址的构造步骤,后从有效性检查的角度去描述这个地址和签名脚本(Signature Script)的比对过程。
[size=1em]常见的比特币交易有P2PKH和P2SH两种,后者的地址常以字符“3”打头,其构造过程和P2PKH地址非常类似,本文暂时忽略了这部分内容。
1. 比特币地址的构造
[size=1em]下面这张图片引用自Bitcoin Wiki[1],描述了比特币地址(实际上是P2PKH地址)的构造过程。

[size=1em]可以看出,比特币地址的构造步骤如下:
  • 将公钥序列化为无压缩格式
  • 对无压缩公钥依次进行SHA-256和RIPEMD-160处理,得到20字节(160位)的哈希值
  • 在20字节的哈希值头部添加1个字节的网络ID,得到21字节的数据片段
  • 将21字节的数据片段经过两次的SHA-256处理得到32字节(256位)的数据片段,取前4个字节作为Checksum放置在21个字节的尾部,得到一个25字节的二进制地址
  • 将25字节的二进制地址经过Base58处理,得到大家常见的比特币地址

[size=1em]使用Checksum的目的是数据完整性,即避免地址在抄写或传输过程中发生改变。
[size=1em]Base58是Base64的一种变体,Wikipedia[2]整理了这个变化的目的:
[size=1em]Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。
[size=1em]设计Base58主要的目的是:
  • 避免混淆。在某些字体下,数字0和字母大写O,以及字母大写I和字母小写l会非常相似。
  • 不使用"+"和"/"的原因是非字母或数字的字符串作为帐号较难被接受。
  • 没有标点符号,通常不会被从中间分行。
  • 大部分的软件支持双击选择整个字符串。

[size=1em]比特币主网的ID为0x00,其对应的Base58编码符号为1。这就是为什么你见到的大多数比特币地址以1打头。
2. 比特币地址的使用
[size=1em]在一个P2PKH交易中,有两个关键字段用于检查交易是否合法:scriptPubKey和scriptSig。不熟悉的读者,可以查阅Protocol Document[4]中的交易的数据结构。
[size=1em]观察下面的P2PKH的交易:
scriptPubKey: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIGscriptSig: <sig> <pubKey>
[size=1em]在对这个交易执行合法性检查时,脚本系统的栈内元素按表格(引自[3])所述的步骤逐步变化。

[size=1em]交易发起者需提供正确的数字签名(sig)和公钥(pubKey),才能通过合法性检查。这需要满足的两个关键条件:
  • pubKey的OP_HASH160运算之后的值,应等于scriptPubKey中的pubKeyHash
  • sig是对应于pubKey的私钥签发的数字签名

3. 总结
[size=1em]通过对公钥进行一系列地加工处理,最终得到了一个融合了网络ID、Checksum的Base58编码的字符串。
[size=1em]这个处理过程对应于操作符OP_HASH160,在比特币的脚本系统求值过程中非常常见。
[size=1em]常见的比特币交易有P2PKH和P2SH两种,后者的地址常以字符“3”打头,其构造过程和P2PKH地址非常类似,本文暂时忽略了这部分内容。



回复

使用道具 举报

dabojin888

     
发表于 2018-3-5 21:14:46 来自手机 | 显示全部楼层
专业

点评

社区需要大家一起支持  发表于 2018-3-6 17:32
回复

使用道具 举报

Chandler

     
发表于 2018-3-5 22:33:23 来自手机 | 显示全部楼层
厉害
回复

使用道具 举报

十年醒

     
发表于 2018-3-5 22:55:10 | 显示全部楼层
回复

使用道具 举报

区块小康

     
发表于 2018-3-5 23:22:12 | 显示全部楼层
谢谢分享
18年区块链发展
回复

使用道具 举报

zyj5555

     
发表于 2018-3-6 00:32:33 来自手机 | 显示全部楼层
点个赞
回复

使用道具 举报

lfckkk

     
发表于 2018-3-6 06:30:53 | 显示全部楼层
欧克欧克
回复

使用道具 举报

wxw000

     
发表于 2018-3-6 12:55:31 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

a675824864

     
发表于 2018-3-6 13:01:19 | 显示全部楼层
2018安网一路大发,一路暴涨。支持安网!!
回复

使用道具 举报

wxw000

     
发表于 2018-3-6 13:10:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

SAFE官方公众号
SAFE官方QQ群
SAFE官方QQ2群
SAFE官方QQ3群

安网—全球领先安全隐私的数字货币支付和应用平台

GMT+8, 2018-12-15 16:51 , Processed in 0.067197 second(s), 34 queries .

Powered by Discuz! X3.4

© 2017-2018 安网3(SAFE)中文社区

快速回复 返回列表