本文讲解一下 BitCoin 的技能原理。了解原理以后,BitCoin 能够解决什么问题,尚存什么缺陷,天然就一览无余。剩余的问题,便是评论跟着 BitCoin 的开展,将会有什么时机。

咱们不妨把 BitCoin 系统拆分为四个问题来谈,1. 买卖(transaction), 2. 付出(payment), 3. 审计(audit), 4. 铸币(mintage)。
【1】 买卖(transaction)
买卖的基本诉求,是付款人(payer)汇款给收款人(payee)。技能应战是加密(cryptography),意图是不让第三者截获甚至篡改汇款金额。
BitCoin 的买卖加密方法沿用了现成的,基于公钥(public-key)私钥(private-key)的非对称加密系统(asymmetric cryptography)。这儿没有什么立异。
[1] 第二节的图例中,最左侧的框,解释了 Owner0 给 Owner1 汇款的买卖机制,截图如下。
1. Owner0 先查到 Owner1 的公钥。用 Owner1 的公钥(Public Key)把汇款概况加密。这样,只需 Owner1 本人用自己的私钥(Private Key),才能翻开加了密的汇款概况。在图例中,没有画汇款概况。不过这个小小的叙述的疏忽不妨大雅。
2. 为了方便 Owner1 验证这笔汇款确实来自 Owner0,而不是别人,Owner0 宣布的汇款单里,除了有加了密的汇款概况,还有 Owner0 的数字签名(Signature)。Owner1 拿到汇款时,为了验证这笔汇款确实来自 Owner0,他能够用 Owner0 的公钥,来验证汇款单中 Owner0 的数字签名。
3. Owner0 宣布汇款单时,汇款单不只仅投递到 Owner1,并且还要广而告之,任何人只需愿意参加 BitCoin 审计,都能够收到全球一切人宣布的一切汇款单。
4. 沿用 1、2、3 的原理,Owner1 给 Owner2 汇款,然后 Owner2 给 Owner3 汇款。BitCoin 经过 Hash 机制,把触及同一枚 BitCoin 的一切汇款买卖(Tranaction)串连起来,意图是为了追查重复付款(double spending)的诈骗行为。
【2】 付出(payment)
当付款人(payer)向收款人(payee)宣布汇款买卖(transaction)后,付出过程(payment)并没有完结。直到收款人签收了汇款以后,付出过程才正式结束。
在收款人承受汇款曾经,他有必要确认汇款人没有重复付款(double spending)。这就类似于咱们承受纸币前,最好验证一下纸币是不是假钞一样。
BitCoin 验证重复付款的方法,是靠大众检举。当收款人收到汇款时,他把汇款单广而告之。审计站点收到广而告之的汇款单时,会查看汇款单中触及的 BitCoin,是否呈现在其它汇款单中,是否被重复付款。假设呈现这种重复付款,审计站点会检举,并通知收款人拒绝签收汇款。
BitCoin 确保重复付款的行为,能够被检举,可是不能确保能够被当场抓获。[2] 假设了一个场景,
1. 骗子开设了两个账号,A 和 B。他先把一枚 BitCoin 由账号 A 汇款到账号 B,账号 B 马上签收。账户 B 签收汇款前,没有把汇款单广而告之。
2. 然后骗子去 C 的网店买东西,他把同一枚 BitCoin 由账号 A 汇款到账号 C。C 收到汇款单后,等候几秒钟,假设各个审计网站没有检举,C 就签收 A 的汇款,同时交给产品。
3. 可是就在 C 等候的时候,骗子把从 A 到 B 的汇款单广而告之,并且这是一个现已被 B 签收了的汇款单。因为从 A 到 B 的汇款单是合法的,这个汇款单被各个审计站点承受。
4. 等到 C 签收了 A 发来的汇款单,并广而告之时,各个审计网站会检举,说 A 到 C 的汇款单是重复付款,无效。虽然骗子被检举,可是 C 现已交给了产品,C 上当了。
为了防备重复付款,现行 BitCoin 的付出方法,有许多能够改进的当地。例如,能够强制付款人给收款人发汇款单时,有必要把汇款单广而告之,这时汇款单尚未被签收。然后,当收款人签收汇款时,也有必要再次广而告之,不过与第一次不同在于,第2次广而告之的,是现已被签收的汇款单。
可是好像到目前为止,还没有发现一种数学上完全谨慎的方法,能够彻底根绝重复付出的产生。
【3】 审计(audit)
为了根绝重复付款的诈骗行为,一个简略的方法是全球公民每次汇款时,先把汇款单提交给一个权威组织,例如付出宝。付出宝收下付款人汇来的 BitCoin,然后发另一枚 BitCoin 给实际收款人。这样做,能够确保收款人收到的 BitCoin 不会有诈,可是不能确保付出宝,从汇款人那里收到的 BitCoin,没有被重复付出。
举个比如,假设权威组织除了付出宝以外,还有 Paypal 等等,付款人用同一枚 BitCoin,向两个收款人汇款,汇款时别离经过付出宝和 Paypal。假设重复付出成功,两个收款人没有损失,可是付出宝和 Paypal 中,一定有一家组织被诈骗。
这种防备诈骗的机制,除了技能上有缝隙以外,依赖权威组织的做法,与 BitCoin 的大众路线的设计理念相违背。
BitCoin 的做法,是把任何一枚 BitCoin,从诞生到当下,每一次买卖都记载在案,并且按时间顺序串联起来。这就像古玩,一般要附带历史记载,从制作出售之初,每一次易手,都被记载下来,这样有利于防备被冒牌代替。
BitCoin 的每次记载都被广而告之,并且记载下来,并且连缀成串。这样,每一次 BitCoin 的买卖,不只有付款人和收款人参加,并且有第三方审计人参加。审计人可所以专职组织,也可所以任何一台电脑。审计不只能够及时发现违法操作,例如重复付款,并且即使当时漏网,事后也能回溯。
[1] 第八节的图例中,解释了 BitCoin 买卖记载的串联的数据结构,截图如下。
有两点值得注意,
1. 为了进步审计效率,BitCoin 把多个买卖(Transaction)兼并成一个块(Block),同时用 Merkle Tree(又称 Hash Tree)[3],把这些买卖概况组织起来。
假设想查看一个 Block 里是否包括有某个 Transaction,最简略的方法是找到合适的私钥,把 Block,以及其间包括的 Transactions,解密翻开,然后逐一核对。很显然,这样的做法,既浪费时间,又很不安全。
运用 Merkle Tree 的优点在于,不需要解密开包,只需要把 Transaction 也 Hash 一下,然后把哈希结果与 Merkle Tree 中各个中心节点的哈希值,依次对比,就能够很轻松地确定 Merkle Tree 中,是否包括着指定的 Transaction,假设有,它是哪一个叶子节点。
2. 假设每次买卖,只包括一枚 BitCoin,那么每枚 BitCoin 的历史记载,是一根单线。可是事实上,每次买卖,能够触及多枚 BitCoins,所以,买卖的历史记载,不只有单线,还有多根单线兼并成一根线的情况。
不只有兼并,还有分叉,这种情况呈现在 A 给 B 汇款了多枚 BitCoins,B 签收了这笔汇款买卖后,又把多枚 BitCoins 易手分发给多个收款人。
不只 BitCoin 的历史记载有多线兼并成单线,又有单线分叉成多线。并且一枚 BitCoin 还能够分裂成多个小币。
【4】 铸币(mintage)
在 BitCoin 系统中,任何参加审计的人,都自动参加钱银的出产。钱银的出产,即铸币(mintage)的过程,在 BitCoin 系统中被称为挖金矿(gold mining)。
从技能上讲,审计和铸币完全是能够拆分的两件工作。把铸币权与参加审计绑定在一起,是游戏规则的设定,意图是发动大众,共同维护 BitCoin 的诚信系统。
另外,BitCoin 的总蕴藏量,被预先设定了上限。这样做的意图,是经过约束钱银流通量,遏制通货膨胀。
从技能上来看,完全能够把 BitCoin 系统当成一个工具箱,用这些工具,配置不同的规则,从而创造另一种钱银系统。
例如,
1. 能够设定只需政府才有资历挖金矿,从而把铸币权收归政府。
2. 不用设定钱银流通上限,而是能够依据新增财富,来添加钱银发行。
3. 能够经过认证,给每个付款人设定信誉值,用于加速付出签收速度。
4. 也能够经过稳妥,让每一笔汇款买卖的收款人,马上签收汇款。假设呈现重复付款,稳妥公司赔付。
5. 虽然理论上每个人(实际上是每台电脑),都有资历成为审计员,实际上,必定会呈现大型组织,凭借强大的计算和存储才能,成为专业审计组织。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注