区块广播:

比太公开课:八卦中本聪

姜家志队长发布在 比特派/比太钱包
 36145  140
  • 正序
  • 最新
只看帖主楼层直达
  • 姜家志 队长 2015-02-13 20:23:33 来自PC47楼
    前段时间,大约两个月前

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

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

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

    这其实也是本次“八卦”的第二个证据:签名(P2PKH)
  • 姜家志 队长 2015-02-13 20:26:49 来自PC48楼
    关于比特币交易的签名,其实经历了如下这么几个阶段:

    P2PK - P2PKH - P2SH

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

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

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

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

    重点要说的是,大家现在日常主要使用的交易签名类型:P2PKH
  • list1234 队长 2015-02-13 20:28:10 来自App49楼
    从其成果技术来推论中本聪的一些特性,挺有意思的
  • 姜家志 队长 2015-02-13 20:29:40 来自PC50楼
    在这里,要插入一点点内容

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

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

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

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

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

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

    好了

    现在我们可以开始具体的说说 P2PKH 这个当前最普遍的签名交易方式了
  • 姜家志 队长 2015-02-13 20:32:19 来自PC53楼
    对于 P2PKH 来说,交易签名后,广播到比特币网络的交易中的每一个 input 都会包含如下信息:

    r + s + public key

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

    public key 不用说了,就是公钥

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

    r 就是 那个 repeat-r 导致私钥暴漏,导致丢币的那个 r 值
  • 姜家志 队长 2015-02-13 20:34:17 来自PC54楼
    s 就是使用椭圆曲线签名算法进行签名计算之后的结果

    因此,并不复杂

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

    就可以了哈
  • 姜家志 队长 2015-02-13 20:34:59 来自PC55楼
    好了,现在,所有的其他节点,在收到该交易之后,就会对每一个 input 进行如下验证:

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

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

    很简单哈!
  • 手中无比特 船员 2015-02-13 20:36:25 来自PC56楼
    姜家志 发表于 2015-2-13 20:21 这个只是比特币历史上,早期没搞明白密码学的一个产物而已
    如果还有解决方案,到今天还在默认使用未压缩 ...
    现在生成的私钥还是5开头吧。
    楼层直达
  • 姜家志 队长 2015-02-13 20:36:54 来自PC57楼
    不过呢,这种结构,其实有那么一点点的空间上的“浪费”

    那是因为,我们可以通过 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-02-13 20:37:56 来自PC58楼
    姜家志 发表于 2015-2-13 20:29 在这里,要插入一点点内容
    问大家一个问题,您认为,对于 区块链 这类的去中心化存储结构(blockchain...
    这点很同意,IO很昂贵,因为全网同步。
    楼层直达
  • 姜家志 队长 2015-02-13 20:38:08 来自PC59楼
    这种验证方式,其实就类似于最早的 P2PK 那种直接发送比特币给公钥的 比特币交易

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

    通过 r + s + rec_id 来计算出公钥
  • 姜家志 队长 2015-02-13 20:39:14 来自PC60楼
    会多耗费那么一点点 CPU (其实多出来的很有限,因为本身验证过程也得做相应的 ECDSA 计算的)

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

    具体能节省多少呢?
  • 姜家志 队长 2015-02-13 20:42:01 来自PC61楼
    大概就是 每个 input 能节省 一个 公钥 的存储空间

    我们之前大概估算过,按历史交易的情况,应该是可以让整个区块链小上 不少于 30% 的存储空间

    也就是说,对于当前 33GB 的区块链 size,大约能减少到 20 GB 之内

    当然,代价就是每个节点在验证签名时都要多耗费些 CPU

    那现在得问题来了,CPU 和 IO 哪个更贵呢?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 10
前往
登录 账号发表你的看法,还没有账号?立即免费 注册