昨天收到现金打赏,惊喜,感谢捧场!BlockChain 专题的所有内容,均为我的笔记(包括摘抄),原创部分不多,仅仅为梳理思路和分享。整个专题计划分四部分,第一部分是介绍中本聪先生在《 Bitcoin: A Peer-to-Peer Electronic Cash System 》提出的解决方案要点;第二部分是整体描述解决方案(因为没有第一部分的铺垫第二部分的内容理解起来会比较晦涩);第三部分是分享实践和案例;第四部分是思考和疑惑。
七 简化的支付确认
这章的思路是:在某个环节认为之这个环节之前的所有结果都是对的,这样验证本次结果是对的,总体就是对的。同时在这个环节之后链接在后面的 Block 进一步辅证这个环节是正确的。
第六章讲过节省磁盘空间的思路,可以对历史数据进行压缩,这样节点可以选择仅保存 Block 头。这种情况下一个节点仅需要保存一份最长工作量证明链的区块头,得到本次拟新增 Block 待确认交易的Merkle Branch。该节点并不能自行检查该交易的有效性,但是当它把这个 Merkle Branch 接到区块链上,就能看出某个节点曾经认可过这个交易,并且其后创建的区块进一步增强了认可。也就是说本次仅需要验证 Merkle Tree 成立,则即认为响应 Block 上的交易是真的。如下图中对交易 Tx3 的验证。
当然这种验证方式成立的前提是诚实的节点控制着整个网络。但是,当全网被一个计算力占优的攻击者攻击时,此方法将较为脆弱。由于缺乏完整节点自行检查交易有效性的能力,只要攻击者拥有计算力优势,简化机制则会一直被攻击者的伪造交易所欺骗。一个补偿策略是,运行简化机制的节点随时接收其他节点发现无效区块的警报,一旦收到警告则下载完整区块及警告涉及的交易信息,以确认是否存在不一致。
对于拥有完成数据的节点,则验证较为轻松。拥有完成数据的节点有能力回溯本次交易涉及的 BitCoin 的历史情况,(回溯的范围到第二部分再详谈)从而验证本次交易的真实性。并在发现问题后还能协助整个网络发起无效区块报警。对于经常性大量收付的商业机构,适合于运行完整节点,以得到更独立自主的安全保障和更快的交易检验。
八 价值的组合与分割
虽然理论可为每一枚电子货币单独发起一次交易,但不提倡。为了使得交易中的价值易于组合与分割,交易被设计为可以包含多个输入和输出。经常会出现如下两种情况:一个从前一个大的交易中分离出的单一价值做为本次的交易输入,或由几个价值较小的前次交易共同构成并行多输入,但是输出最多只有两个:一个用于支付,另一个用于找零。即便一笔交易依赖于之前的多笔交易,并且这些交易又各自依赖于多笔交易,也并不会有性能问题。因为不会有回溯电子货币所有交易历史的需要。
九 隐私保护
传统的银行模式为交易的参与者供了一定程度的隐私保护,因为试图向可信任的第三方索取交易方的信息是严格受限的。可是如果将交易信息向全网广播,就无法采用这种方式保护隐私。但是依然可以通过限制某种信息流动来保护隐私:将公钥保持为匿名。公众仅仅能看到某人将一定数量的货币给了另外一个人,但是难以将该交易同特定的人联系在一起。这同股票交易机构公开发布股票交易信息是类似的,每一笔股票交易发生的时间、交易量等信息是记录在案且可供公众查询的,但是交易双方的身份信息却不予透露。
作为一种额外的安全保障,用户可以为每一次交易生成一对新秘钥,以防止不同的交易被关联到同一个拥有者。风险在于,交易的并行输入(第八章提到的 input )使得追溯还是不可根本避免的,因为并行输入表明这些货币同属于一个所有者。这就会导致如果某人的一个公钥被确认属于他,那么他人可以查出此人的其它很多交易。