第一章:区块链创世纪
1.1 区块链技术是站在巨人的肩膀上产生的。虽然巨人正在走远,但依然值得纪念。
中本聪提出的《比特币:一种点对点的电子现金系统》中结合了许多密码学创新成果,例如非对称加密,分布式电子加密货币系统,工作量验证,点对点网络技术等。这些先驱们的知识土壤最终孕育了比特币的诞生。他们包括了蒂莫西.梅,戴伟,尼克.萨博,肖恩.范宁,肖恩.帕克。。。。。。
1.2 货币只是一种记账形式。在没有货币的时候,张三若想吃鱼,只能找到李四说用自家的苹果换。如果刚好李四也想吃苹果,则张三李四可以很愉快的达成交易。第二年,张三还想吃鱼,但李四却想换渔网。虽然张三手上没有渔网,但张三知道有渔网的村长想吃苹果,于是张三找到村长用自己的苹果换了渔网背到李四家,最终成功的获得了鱼。大家看到了村长家的渔网可以起到中介的作用,于是纷纷将自己的物品换成渔网。考虑到村长家渔网充足且渔网搬运困难,村长就和大家商定拿出一个笔记本,记录下各家渔网的数量。第三年,张三还想吃鱼,张三和李四就找到村长,村长在张三的账户里面扣除了一张渔网,再在李四的账户中增加了一张渔网。于是张三就获得了李四的鱼。从这个例子可以看出,货币本身只是记账的一种形式。
1.3 信用评价是不等式。例如在支付宝上,张三李四在两个账户间分别制造多笔资金的转移并刷高各自的信用评级。区块链中的“币天”可以很好的解决这一问题。币天销毁是指每笔交易金额(币数量)乘以这笔交易所花费的币在账面上停留的时间。例如张三向李四转了10个比特,这10个币在张三账面上停留了10天,张三转账的币天消耗为100. 虽然李四获得了的币等于张三转的币,但李四的信用增加了。若李四再将这10个币转给张三,则张三的币仍等于之前的币,而其信用也基本不会增加(因为币在李四账面上停留的时间很短,币天很小)。币天销毁也被用到了权益证明中。
第二章:区块链基础
2.1区块链诚实的记录并存储了外部数据,并非意味着外部数据的输入本身诚实。例如认证工作往往能够线下完成,虽然区块链可以存储信息图像,但信息图像本身是否是伪造的,则不得而知。
2.2 区块链的分类(公共链,联盟链,私有链):依据参与人员可读写的权限范围,区块链分为公共链,联盟链,私有链。
2.3 区块链工作流程:区块链分为节点广播数据,接收节点验证数据,全网取得共识,以及区块加入区块链等四步。全网都基于最长链为有效链。若出现两个节点同时广播出了新版本的区块,这每个网络节点在自己先收到的区块上进行工作。同时保留另外一个区块,已防其变成最长链。
2.4 共识机制。分布式系统最主要的一个问题就是如何在分布的节点上对某一问题 达成一致。这就涉及到了共识协议。
2.5 区块链面临的问题
第三章:区块链进阶
3.1 SPV (简单支付验证) :只需保留存储区块链头部信息即可进行支付验证的技术。该技术可以大大简化用户的存储空间。以下是SPV与轻钱包,交易验证之间的差别。
3 .1.1 SPV 实现过程
3.1.2 SPV的问题
(a)SPV节点与去中心化之间的矛盾。运用SPV的节点越多,参与完整验证的节点必然会减少。这会导致一定程度的中心化。
(b)可锻性攻击。可锻性攻击为因为签名算法不够完善,攻击者修改原交易中的签名。而由于算法问题修改签名后的信息依然能够被其他节点校验成功。这时原交易和修改后的交易就形成了双重支付。原交易就有可能不被确认,带来不可预计的影响。
3.2 侧链协议
侧链协议是相对比特币主链而言的。侧链协议可以使比特币安全的从比特币主链转移到其他区块链,又可以从其他区块链转移到主链上的一种协议。侧链协议的主要目的是实现比特币区块链与侧链之间的双向锚定。比特币的锁定与解锁与侧链的交易相关。
侧链协议中包含了一些新技术:
(a)秘密交易:交易中的金额仅有少数参与者知道,通过在数据中引入了盲化因子对其他人隐藏了交易金额。盲化因子的引入使数据本身不容易被猜测。这点对于短数据尤为重要。
(b)隔离验证。隔离验证是指将签名从交易中分离出来。交易的ID仅由信息本身确定。这可以避免交易的可塑性,更适合轻钱包中SPV证明。
(c)相对锁定时间。使签名交易被确认后,其输入在一段时间内保持无效,目的是支持交易替换功能。
(d)Schnorr签名。更有效的n/n与之签名,多个签名间可以合成一个签名,同时签名容量更小。
(e)启用了一下被禁用的脚本代码。
3.3 闪电网络
闪电网络可以使小额的,高频的交易以非常少的全网认证次数而实施。
3.3.1 合并交易
例如张三想从李四那购买一部电影(每部电影0.1比特币),首先张三先支付1个比特币到一个双重签名地址,形成交易o。之后张三再和李四构建了一个赎回条款A。A带有锁定时间,只有在N天后才会生效。于是张三将O条款签名并对外广播(标黄)。而赎回条款并未对外广播。若张三看了一部电影,则张三再次构建交易B,并签了自己的名字。这时,李四只要立刻签上自己的名字并对外广播,则张三李四可以各自得到相应的钱数。考虑到张三有可能再次购买电影,且交易数量小,李四并未将协议B签名广播。之后张三看了第二部电影并构建了协议C。考虑到A的锁定时间快到(锁定时间到期李四还未签名则协议A可以向全网广播,李四得不到任何钱),李四对协议C进行了签名并进行了广播。于是该交易通道自动关闭。协议A,B均失效。这么做只需要向比特币网络广播两次即可对多频的小额交易进行支付,减少了比特币网络的整体负担。
问题:该支付通道解决了合并交易的问题,但是依靠理性的经纪人和单向流通来达到撤销交易的目的。并不是实际的撤销上个交易。
3.3.2 序列到期可撤合约(RSMC)
初始合约的构建
张三和李四因为有经常的业务往来,于是各出0.5BTC放入了一个双重签名合约中。张三和李四可以通过签名构建以下初始合约,然后广播O。《》代表需要填入的签名。由下面的结构可知,若张三对A先签名并且广播,则李四可以立刻得到0.5个BTC,A的另外一个输出是张三2的签名,则张三要再后续1000个区块后才能拿到自己的0.5 BTC。反之亦然。
交易更新。
若张三从李四处购买了一件售价为0.1BTC的商品。则张三和李四则在这个合约框架中加入了新的合约内容。但如何能让张三放弃A1呢?张三和李四在发生交易的时候,张三就说我一定不会用A1,我张三2的秘钥是XXX。若李四知道了张三的秘钥2就可能会将A1的下面合约“张三:0.5个BTC (红色部分)”变为”李四0.5个BTC”.如果张三用张三签名执行了A1。李四可以迅速拿到原先自己的0.5个BTC,同时还会在1000个区块后拿到原本属于张三的0.5个BTC.
3.3.3 支付中转站
若张三想支付一笔货款1BTC给李四,但张三和李四之间没有渠道进行交易。而刚好王五和他们都有渠道。他们就可以通过王五来进行中转。张三先和李四约定了一个暗语。于是张三跟王五说,你如果能告诉我窗前明月光对应的哈希下一句,我就给你1.1个BTC.而王五询问到了李四,说你要是能告诉我窗前明月光的哈希下一句,我就给你一个1BTC。这时李四告诉了王五,王五给了李四1BTC。然后王五找张三拿到了1.1BTC。
第四章 智能合约
智能合约的本质是 如果XXX,那就YYYY。在计算机语言中常为if。。。then。。。。
它最早由尼克.萨博从自动售货机的概念上衍生出来的。自动售货机可以看做是如果你投入了规定数量的硬币,则你可以获得相应的某种物品。一般会涉及到参与方,资产,自动判定状态的状态机,以及下一步行动的总和。
智能合约与传统的合约存在较大的差别。具体差别如下:
智能合约可以被运用到保险,房屋租赁,博彩等各方面。但同时其也面临着一些问题,例如合约的安全性(无欺诈,陷阱等),私密性,意外情景等。
《区块链:从数字货币到信用社会》-- 长铗,韩峰等著