姜家志 | 副船长 | 发表于 2015-2-13 20:21:43 | 显示全部楼层
这个只是比特币历史上,早期没搞明白密码学的一个产物而已

如果还有解决方案,到今天还在默认使用未压缩格式公钥,这......

这里,我问个问题,您新生成的私钥,还是 5 开头的吗?

上述证据,大约是在半年多之前,我们团队意识到的“八卦”证据之一。
姜家志 | 副船长 | 发表于 2015-2-13 20:23:33 | 显示全部楼层
前段时间,大约两个月前

我们团队在开发签名消息与验证签名功能时,又额外的发现了更多的“八卦”证据

这也可以算成是通过学习、不断进步、搞明白了更多东西后,产生的一些“副产品”吧。

当时,我们还在 bitcointalk 上发帖,与开发者们讨论了对于比特币这样的去中心化 blockchain 账本来说,哪个成本更高?CPU?IO?

这其实也是本次“八卦”的第二个证据:签名(P2PKH)
姜家志 | 副船长 | 发表于 2015-2-13 20:26:49 | 显示全部楼层
关于比特币交易的签名,其实经历了如下这么几个阶段:

P2PK - P2PKH - P2SH

早期有一些交易是 P2PK 的,即:Pay to Public Key

当前主要的交易类型大部分是 P2PKH 的,即:Pay to Public Key Hash,大家日常发送比特币到一个地址,都是这一类的交易

多重签名的则是 P2SH,即:Pay to Script Hash

当然,我们今天不聊多重签名

重点要说的是,大家现在日常主要使用的交易签名类型:P2PKH
list1234 | 队长 | 发表于 2015-2-13 20:28:10 来自手机版 | 显示全部楼层
从其成果技术来推论中本聪的一些特性,挺有意思的
姜家志 | 副船长 | 发表于 2015-2-13 20:29:40 | 显示全部楼层
在这里,要插入一点点内容

问大家一个问题,您认为,对于 区块链 这类的去中心化存储结构(blockchain 账本)来说,哪个更“昂贵”?是 CPU ?还是 IO ?(这里的 IO 包括数据存储的 IO 和 网络带宽的 IO 等)

“昂贵”和“成本高”是同义词哈

在这一点上,我个人与一些核心开发者的观点不尽相同,我个人的观点是,去中心化、P2P、分布式这类的系统中,IO 是最贵的,因为:

1、IO 对于去中心化网络中的所有节点来说,都是要永久性占据的资源;

2、IO 对于去中心化网络中的所有传输来说,都是要额外耗费的带宽;

3、更多的 IO 其实本身也意味着更多的 CPU,比如说,您要多传输 30% 的数据,多存储 30% 的数据,这些,除了空间耗费,当然也要同样多耗费相应数量的 CPU;
酱爆 | 副船长 | 发表于 2015-2-13 20:30:39 | 显示全部楼层
根据事实来反推,比太总是大胆而有创意。。。继续听课
姜家志 | 副船长 | 发表于 2015-2-13 20:31:07 | 显示全部楼层
当然,我个人的观点不一定对,只是我个人的看法而已哈

好了

现在我们可以开始具体的说说 P2PKH 这个当前最普遍的签名交易方式了

姜家志 | 副船长 | 发表于 2015-2-13 20:32:19 | 显示全部楼层
对于 P2PKH 来说,交易签名后,广播到比特币网络的交易中的每一个 input 都会包含如下信息:

r + s + public key

这里有来了几个词,r、s、public key

public key 不用说了,就是公钥

r 和 s 之前随机系列谈里 提到过一点

r 就是 那个 repeat-r 导致私钥暴漏,导致丢币的那个 r 值
姜家志 | 副船长 | 发表于 2015-2-13 20:34:17 | 显示全部楼层
s 就是使用椭圆曲线签名算法进行签名计算之后的结果

因此,并不复杂

大家只需要知道 广播 出去的交易的每个 input ,都会包括 r + s + 公钥

就可以了哈
姜家志 | 副船长 | 发表于 2015-2-13 20:34:59 | 显示全部楼层
好了,现在,所有的其他节点,在收到该交易之后,就会对每一个 input 进行如下验证:

1、验证该 input 的上一个 output;

2、使用 public key 来验证 r + s,验证通过则签名正确;

很简单哈!
手中无比特 | 拾比特副船长 | 发表于 2015-2-13 20:36:25 | 显示全部楼层
姜家志 发表于 2015-2-13 20:21
这个只是比特币历史上,早期没搞明白密码学的一个产物而已

如果还有解决方案,到今天还在默认使用未压缩 ...

现在生成的私钥还是5开头吧。
江傻逼与狗不得回帖!
姜家志 | 副船长 | 发表于 2015-2-13 20:36:54 | 显示全部楼层
不过呢,这种结构,其实有那么一点点的空间上的“浪费”

那是因为,我们可以通过 r + s (如果再带上一个 rec_id ,rec_id=0-3 共有4种可能),则可以计算出 public key

也就是说,交易中每一个 input 所包含的信息里,public key 其实是多余的

不带上 public key 这一信息,同样可以做验证

具体验证方式如下:

1、验证该 input 的上一个 output;

2、使用 r + s 及 rec_id 计算出 public key,并验证其 hash 是否对应于 上一个 output 的比特币地址 address;
手中无比特 | 拾比特副船长 | 发表于 2015-2-13 20:37:56 | 显示全部楼层
姜家志 发表于 2015-2-13 20:29
在这里,要插入一点点内容

问大家一个问题,您认为,对于 区块链 这类的去中心化存储结构(blockchain  ...

这点很同意,IO很昂贵,因为全网同步。
江傻逼与狗不得回帖!
姜家志 | 副船长 | 发表于 2015-2-13 20:38:08 | 显示全部楼层
这种验证方式,其实就类似于最早的 P2PK 那种直接发送比特币给公钥的 比特币交易

这样的结果呢,是在验证时,每一个节点需要进行一次 recover public key 的计算

通过 r + s + rec_id 来计算出公钥

姜家志 | 副船长 | 发表于 2015-2-13 20:39:14 | 显示全部楼层
会多耗费那么一点点 CPU (其实多出来的很有限,因为本身验证过程也得做相应的 ECDSA 计算的)

但能节省一点点的 区块链 存储空间

具体能节省多少呢?
高级模式
您需要登录后才可以发帖 登录 | 立即注册 用新浪微博登录

本版积分规则

搜索

0关注 2粉丝 64主题

作者的其他主题

比太亮点

  • bither1
  • bither2
  • bither3

关注微博

相关链接

返回顶部 返回列表
分享 发帖