Chinaunix首页 | 论坛 | 博客
  • 博客访问: 22491
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-16 15:42
文章分类
文章存档

2013年(12)

我的朋友

分类: 信息化

2013-12-03 12:02:25

近期 BitCoin 被炒作得沸沸扬扬,看好的唱衰的,莫衷一是。我们不妨读解一下 BitCoin的技术原理。了解原理以后,BitCoin 能够解决什么问题,尚存什么缺陷,自然就一清二楚。剩下的问题,就是讨论随着 BitCoin的发展,将会有什么机会。

我们不妨把 BitCoin 体系拆分为四个问题来谈,1. 交易(transaction), 2. 支付(payment),3. 审计(audit), 4. 铸币(mintage)。


【1】 交易(transaction) 

交易的基本诉求,是付款人(payer)汇款给收款人(payee)。技术挑战是加密(cryptography),目的是不让第三者截获甚至篡改汇款金额。

BitCoin的交易加密方式沿用了现成的,基于公钥(public-key)私钥(private-key)的非对称加密体系(asymmetriccryptography)。这里没有什么创新。

[1] 第二节的图例中,最左侧的框,解释了 Owner0 给 Owner1 汇款的交易机制,截图如下。

 解密比特币


1. Owner0 先查到 Owner1 的公钥。用 Owner1 的公钥(Public Key)把汇款详情加密。这样,只有Owner1 本人用自己的私钥(PrivateKey),才能打开加了密的汇款详情。在图例中,没有画汇款详情。不过这个小小的叙述的疏忽无妨大雅。

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)并没有完成。直到收款人签收了汇款以后,支付过程才正式结束。

在收款人接受汇款以前,他必须确认汇款人没有重复付款(doublespending)。这就类似于我们接受纸币前,最好验证一下纸币是不是假钞一样。

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的支付方式,有很多可以改进的地方。例如,可以强制付款人给收款人发汇款单时,必须把汇款单广而告之,这时汇款单尚未被签收。然后,当收款人签收汇款时,也必须再次广而告之,不过与第一次不同在于,第二次广而告之的,是已经被签收的汇款单。

但是似乎到目前为止,还没有发现一种数学上完全严谨的办法,能够彻底杜绝重复支付的发生。


【3】 审计(audit)

为了杜绝重复付款的欺诈行为,一个简单的办法是全球人民每次汇款时,先把汇款单提交给一个权威机构,例如支付宝。支付宝收下付款人汇来的BitCoin,然后发另一枚 BitCoin 给实际收款人。这样做,可以保证收款人收到的 BitCoin不会有诈,但是不能保证支付宝,从汇款人那里收到的 BitCoin,没有被重复支付。

举个例子,假如权威机构除了支付宝以外,还有 Paypal 等等,付款人用同一枚BitCoin,向两个收款人汇款,汇款时分别经过支付宝和 Paypal。假如重复支付成功,两个收款人没有损失,但是支付宝和Paypal 中,一定有一家机构被欺诈。

这种防范欺诈的机制,除了技术上有漏洞以外,依赖权威机构的做法,与 BitCoin 的群众路线的设计理念相违背。

BitCoin 的做法,是把任何一枚BitCoin,从诞生到当下,每一次交易都记录在案,而且按时间顺序串联起来。这就像古董,通常要附带历史记录,从制作出售之初,每一次转手,都被记录下来,这样有利于防范被冒牌顶替。

BitCoin 的每次记录都被广而告之,并且记录下来,并且连缀成串。这样,每一次 BitCoin的交易,不仅有付款人和收款人参与,而且有第三方审计人参与。审计人可以是专职机构,也可以是任何一台电脑。审计不仅能够及时发现违法操作,例如重复付款,而且即便当时漏网,事后也能回溯。
阅读(176) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~