一起磨课程 分享实录|回归需求谈价值,比特币诞生起源

yanyan · 发布于 2018年04月26日 · 5 次阅读
600b82
本帖已被设为精华帖!

分享大纲

image

  • 60% 一步一步发明比特币

  • 35% 白话现代区块链新兴概念

  • 5% 落地应用点子分享

  • 彩蛋:加密货币的“价格”& 区块链的价值

首先跟大家分享我总结的关于区块链的几句话:因为贪婪所以信任;结构存储 数据黄金;分布架构 未来潜力。

我认为其中最重要的是:因为贪婪 所以信任。正是因为贪婪,把人类的欲望和区块链的共识连接在一起,才会如此吸引人。

接下来我们就站在巨人的肩膀上,来看这个过程。

1

一步一步发明比特币

image

1、信任是如何建立的?

在解答这个问题之前,我们先要了解区块链的特点:去中心化清算、分布式记账、离散化支付。然后我们来看信任的建立。

1.1 第一个用户需求:摆脱现金交易的不便

image

人类社会进行资源交换,最开始用贝壳来衡量物品价值,后来用金银铜铁,北宋时发明第一个纸币交子,代替金银铜铁等比较重且不方便携带的物质,直到现代社会,依旧使用纸币交易。然而随着社会的进步,人们觉得纸币也不方便,想寻求一种方式摆脱现金交易的不便,于是产生了第一个需求。

那么我们是怎么摆脱现金交易的呢?接下来分享一些金融体系的内容,帮助大家更好地理解协议和规则等概念。

我们在整个公共账本中记录所有的转账记录,每一个月或一段时间进行一次结算,把大家的余额都算出来。在这个系统中存在两个问题:第一是身份验证;第二是欠债跑路。

image

现代金融体系协议对这两个问题都提出了解决方案:

首先是身份验证。大家知道支票需要签字证明,在网络世界里出现了电子签名这样一个东西,就是在本地可以用你的私钥加上内容,比如一个字符串,经过一个函数,生成一串叫电子签名的字符串,然后在网络上用公钥加上刚刚生成的内容及电子签名一起进行身份验证。

其次是跑路问题。这个问题就更容易解决了,首先要存钱进账户,有余额才能进行交易。

1.2 账本放在哪里?怎么放?

image

摆脱了现金之后,迎来了第二个需求:账本放在哪里?怎么放?因为中心化的系统存在很多痛点:

第一,效率低下,具体表现在跨国转账中的时间延迟和费用太高。

第二,胖银行金融体系弊端,所谓胖银行就是中央控制货币,抬升杠杆,产生金融泡沫,诱发金融危机。

第三,私有财产神圣不可侵犯,这是精英与平民,剥削与被剥削者几个世界以来博弈的风暴中心,也是中本聪一直在提的问题。

最直接的解决方案是:不要中心化机构,把所有交易记录都在每个人的本地存储一份,也就是说每个人都存一份大账本。这样一来,问题就变成了:我们怎么实现分布式记账?

image

分而击之 广而告之。我要发起一笔交易,先把这笔交易添加到账本上,然后广播到全网络,告诉大家我今天要转给张三一百块钱,让大家都知道,大家认同这笔交易并保存到自己的本地账本中。互联网架构已经发展得很成熟,所以互联的问题已经解决了,但是同时新的问题也产生了:

image

第一是同意的问题,凭什么我广播数据大家就都要认同呢?

第二是同步的问题,全世界这么多节点,怎么保证所有账本都同步?

第三是信任的问题,添加交易的时候,别人怎么信任我这笔交易不是乱添加的呢?

说到信任就得提到拜占庭将军问题。

image

大概是这样的一个场景:我们假设有九个将军要攻城,然后设定一个条件,这九个将军必须一起攻城才能成功,只要其中有任何一个将军不攻城,攻城的将军就会全军覆没。那么在他们不知道其他将军的决定的时候,就会面临一个问题:我到底是攻还是不攻?解决方法是建立一个信道,比如派传令兵,让每个将军都知道其他八位将军的决定是什么,然后少数服从多数,一起决定是攻城还是撤退。

那么问题又来了,如果这九个将军中出现了叛徒或间谍怎办?间谍通过这个系统很容易使得大家的一致性被破坏,导致全军覆没。如何解决信道中出现间谍的情况,怎样达成共识?是这个问题的核心。

是否可以找到一种存储结构,配合通信协议可以做到:

让你可以放心的相信,世界上遵守同一协议的人手上的账本都相同

欺诈和作假的成本极高,甚至完全不可行。

1.3 中本聪的解决方案

image

中本聪的解决方案是:区块链+P2P网络分布式存储。P2P网络分布式存储已经有了,比较关键的问题是怎么存?就是区块链。

区块链就是区块+链,简单理解,区块就是一张可以记录内容的白纸,链是首尾相连的链表数据结构。可以想象成一个大账本,这个账本也就是区块链,存在每个人的手上。

这里有两个问题,中本聪都给出了相应的解决方案:

第一怎么连?通过哈希函数来链接。

第二信任谁?信任工作量最大的链。

具体来看:

image

我们用哈希函数来进行连接。哈希函数是什么呢?一个字符串,输入进去以后生成一个256位的101010,其特点是:

第一,无法做运算,找不到FX的显性表达式,也就是说你不知道fx=x²+1。

第二,只要稍微改变了一点输入,整个输出结果就会发生巨大变动。

第一重保险:有说道的存储结构-工作量证明

image

假设有一个Ledger上面记录了Alice pays Bob,我们要干的事情就是算一个特殊数字,使得最后输出的这一串哈希值的前30位是0,只要这前30位是0,就可以把下一个区块加到这个区块的后面。也就是说只有让这一段特殊数字的哈希值前30位都是0才能连接起来。

image

这样做的好处是不能被篡改。篡改任何一个值的结果都需要重新计算所有的关键数字。因为这样的一个结构,不论是改任何一个字符还是交换两个区块的位置,都会使得所有的连接被打断。(具体演示过程请看视频)

image

第二重保险:激励+最长链确认+概率

image

我个人觉得这是一个非常优美的算法,因为看似好像不能相信的事情,正是因为用了贪婪这一关键点,给“好处”以刺激,同时使得大家都能相信。这个“好处”就是挖矿,挖矿其实就是那个很难的工作量证明,矿工要做的事情包括:接受交易信息,建造区块,把区块广播出去,然后得到新的“币”作为奖励,这么看来区块就像一个小彩票。

打个比方,一个国王有一个如花似玉的女儿,很多人想娶国王的女儿,国王就很犯难,到底要把女儿嫁给谁呢?他想出来一个办法,出一道很难的题让这些人去算,谁只要最先算出了这道题就能娶国王的女儿。这里国王是区块链,国王的女儿是区块,这些人就是矿工。

注意:区块记录了交易,只有国王的女儿被嫁出去了才能产生新的交易,这是非常关键的一个节点。所有矿工共同维持区块链的交易系统,所以必须给矿工好处。在中本聪的系统中,每一个新建区块的人可以得到比特币的奖励。中本聪设计每隔21万个区块,奖励减半,所以比特币的总量是2100万个。

也许有人会问,那所有区块的奖励都挖完了怎么办?这就要说到交易费了,矿工的奖励来源有两部分:发现奖励和交易费。每笔交易都要抽取其中很小的一部分来当做交易费。

image

那么作为一个用户,到底要信任哪一条我听到的区块链呢?注意,不要马上相信,假设你现在在听整个区块链,一定要把自己的维度升高。就是不要站在一个使用区块链的角度,而要感觉我们能看到的是一个网,是世界上所有和我相连的节点,听到的是这个节点上不断在更新的数据,每次听到矿工说找到了一个特殊证明以后,不要马上相信他,要等到几个区块产生之后,比特币系统中,一般是等待6-7个区块之后,才能确认这个新建的区块是可信的大家都认同的。

image

假设Alice想控制整个链,所有的交易都由她来做,在中间添加很多步,去偷某个账户的钱,她肯定说每一笔交易都得由我来建,那她就是跟世界上所有的矿工在进行竞争,而我作为用户不断等待,等到6个区块才信任这个交易,除非Alice能跑赢所有的矿工,比所有矿工一起算的速度更快地算到这6个区块,就是所谓最长链的确认,否则就不可能实现她的诡计。

image

也就是我们所说的共识攻击的问题,理论上来说只要有51%的算力就能做,但是想想看,我们要等待6-7个区块才能确认,如果这6个区块都是你产生的,51%算的就是1/2的6次方,这是非常难做到的,所以这是个概率问题。

效率降低是获得去中心化共识的绝对代价,这是没有办法从技术上真正解决的。

区块容量,区块新建时间间隔

image

我们来看几个有趣的问题:

问题1:为什么区块中不可能出现不可超支的情况

之前我们提到金融体系协议中有一个东西叫不可超支,为什么在区块链中不可能出现不可超支的情况?其实很简单,因为整个大账本中包含了世界上每一笔交易,可以反向推导出任何一个地址的余额是多少,而币的产生方式是通过挖矿,挖矿可以说是凭空产生币的一种方式,每找到一个特殊数字,给它一个地址,系统就会自动通过一个代码在你的地址上增加币。而其他人也不可能超支,因为地址中没有币的话就没有办法进行转账交易,从程序上阻止了超支的情况发生。

问题2:每一个区块有多大?

每一个区块记录的是转账交易,那这个区块有多大呢?可以是1M也可以是10M去扩,越大意味着一个区块所能承载的转账数量越多。但我们不能让区块太大,区块链的分布式存储数据库随着时间的增长容量会越来越大,因为会不断往上增加区块。

中本聪设计比特币一个区块是1M,能承载的交易量大概是最多2400笔。

问题3:hash摘要前面0的个数如何确定?

这是动态调整的,涉及到两个问题:0的个数和产生区块的时间间隔,根据全网算力进行难度调整,这也是个概率问题,暴力破解穷举法,才能算到这个值。0越多全网算力越强,通过调整0的个数,保证产生区块的速度大概是10分钟。

总结:区块链解决了分布式记账对的痛点

image

记住双重保险。

第一重:用链结构和分布式存储,解决了大账本的篡改问题。

第二重:通过贪婪解决的信任,也就是共识,用最长链确认+激励矿工,确保不是同一个人一直在新建区块,解决了中央集权的问题。

2、如何用比特币进行交易

image

区块链系统里有个术语:UTXO(unspent transaction outputs),可以类比成它是人民币的面值,一块五块十块。一比特币等于1亿一聪,这是UTXO的最小单位,相当于一个比特币最多可以分成1亿份。UTXO有一个特点:等于一个币值重估的数量和一段代码锁,这个代码锁就相当于是一个红包加一个支付宝口令密码,保证交易的安全。

假设我是一个用户,想购买3.1BTC商品,而我只有一个4BTC的UTXO,我需要构建一个0.8BTC的UTXO作为找零,剩下的0.1BTC作为交易费,再构建 交易字段,输入我的地址和对方的地址,广播到比特币网络 ,等待矿工挖矿,等待确认,交易才算完成。UTXO是通过不断的交易产生的,

3、真正的比特币网络是什么样的?

image

全功能节点包括四个模块:钱包、矿工、完整区块链、网络路由节点。

image

网络路由节点很关键,它是链接所有不同节点的枢纽,相当于世界上一个个的服务器或基站。上图是比特币网络的示意图,从图中可以看出比特币并不是一个完全的P2P系统,它中间也有服务器,用来连接各国的网络,完成处理和汇总本地网络信息,在两个大型节点中进行交互,以提高整个网络的效率。

4、比特币区块链交易处理能力

分享三个现状

image

第一幅图,横坐标是时间,纵坐标是每秒产生交易的平均速度,大家可以看到这个天花板是7笔,很难超过这个数量。中间的圆圈表示内存池中等待的交易的数量。举个例子,假设这一秒钟全世界比特币价格下跌,所有人都要卖出,就会有很多人同时建立交易,这个交易量如果超过了一个区块所能记载的上限2400笔,就需要进入内存池中排队等待。

当然内存池中是有规则的,比如交易不能等的时间特别长,如果等了一个小时,那这笔交易的优先级就会变成最高,让矿工先来处理。这些规则的代码实现都在书里,建议大家认真阅读。

image

第二幅图是每一个区块被产生的交易费得到了多少?这个节点是一个特例集群的节点,矿工挖到了一个区块,有10BTC的交易费。横坐标是区块大小的使用程度,因为每两个区块产生的时间不一定,不好判断全世界在这10分钟的间隔时间内产生了多少笔交易,所以10分钟产生得越多,使用率就越高。图上有一个110%,也是协议决定的。现在已经很阻塞了,基本上都用的是很高的百分比。

image

第三幅图是平均确认时间。这是从钱包的角度来讲,而不是指区块链上共识建立的时间。从图中可以看到平均值大概在20分钟左右。就是说一笔交易要等20分钟才能确认,确实速度很慢很慢,很多人不能接受。

5、什么是Merkle树,它可以用来干什么?

image

其实就是为了解决SPV钱包的问题,我本地不存区块链,但想做一个钱包,就要知道我建的这个区块有没有被矿工加到完整的区块链中,需要进行搜索。哈希表可以理解成一个数组,数组的下标就是哈希值。哈希表有一个好处:它的结果是可以使得搜索的速度O1,树形结构可以使得搜索的效率变成log这样的数量级。

所以每个区块中的所有交易都是用Merkle树这种数据结构来存的,它的好处是:使得你如果做一个SPV钱包,在没有存完整区块链的时候,想要搜索一笔交易是否存在区块链上的时间加快、网络中的带宽使用降低。就是你在拉取一些区块信息的时候,不需要拉区块的本体,只需要拉Merkle树的节点,就可以快速搜索到这个区块是否存在。

用比特币的人都会用到钱包,但不是每个人都要挖矿,也不是每个人都想去看每一笔交易是什么样子的,所以SPV钱包才是比特币网络中大部分人会选择的。Merkle树大大提高了网络的运行效率。

总结:区块链技术解决了什么问题

image

它允许我们建立一个系统,让所有的关联方(用户)能看到所有的转账记录,并且使用这些数据。

我们来对比之前的解决方案和区块链解决方案。

第一,之前的解决方案是中心化的,我们信任一个银行。

第二,之前的解决方案可以自建系统,花费成本来检查一致性。

区块链解决方案的优点是达成一致性共识,建立信任。不足是账本臃肿,消耗算力,可能沦为洗钱的工具。

2

白话现代区块链新兴概念

image

1、2.0以太坊

image

以太坊就是一个全球计算机,前面我们讲了区块中记录了很多东西,有一个特别厉害的人叫V神,他想到一个问题:为什么不把这个记录的东西换成代码?比如A转给B5块钱,我们现在把它变成代码,用C语言直接写一个简单的代码,就可以实现A和B交换的功能。

写到的这行代码,一样地算这个特殊数字,不断在区块上加一些东西,再加一个执行代码,也可以称之为指令,指向的是真正你存的这些代码如何执行。于是就产生了一个全球计算机的概念,就可以做智能合约了。

智能合约其实没有多么高大上,举个例子,自动售货机就可以看成是一个智能合约,你给它两块钱,它给你一罐可乐,这就是智能合约,类似执行一段给钱出东西的代码。

EOS使用了一个新的共识算法:DPOS,类似于代表投票机制,先选出部分代表节点,大家都信任他们,让他们轮流来新建区块。DPOS是放弃了一部分共识,来获得TPS的提高,加快以太坊全球计算机的运行速度。

Ripple是想做成一个全球化的“支付宝”,就是用去中心化的理念,把中心化的东西都去掉,它要解决的其实是跨国价值流动的问题。

2、IPFS分布式数据传输协议

image

IPFS是文件hash标识高速搜索+分布式存储,自带文件管理和运行环境的P2P系统。简单来说,就是我们用同样的技术再结合共识,把这个东西搬到每个人的计算机上。这种分布式存储+区块链价值体系可以应用于:完全解决盗版问题;分布式游戏、视频和网站;另一种架构的CDN系统或云硬盘;与git结合,版本同步。

举个例子,现在付费观看有一个痛点,我们想筛选掉那些我们不想看的内容,比如广告或垃圾片,但是花钱买票了,就不能退回来了。运用IPFS会怎么样呢?我可以看几分钟,如果觉得不想看,只需要花这几分钟的观影费,也就是说花的钱和浏览的流量成正比。相反,有价值的内容,比如一首歌,听几遍十几遍都可能,但是很多人不会去买专辑,因为盗版的东西太多,我们运用IPFS可以设计一套代码来解决盗版的问题。

3、HyperLedger超级账本

image

HyperLedger是非公有链,就是只在小范围内做,即所谓的联盟链,不需要征求所有人的同意,只需要联盟中的几个节点达成共识就好了。HyperLedger使用一个分布式的架构让联盟中所有节点都能完全了解,其中的所有内容透明化,类似于孵化系统,底下还有fabric等,可以理解成框架和工具的集合,如上图所示。

3

落地的点子

image

image

商业模式Dapp

影链,简单来说就是明星向粉丝发币,购买明星币的好处是看该明星的影视作品可以打折,类似这样的商业模式,其实就是粉丝经济。

菩提,其实就是博彩,当庄家,抓住人“一夜暴富”的心理。

纸贵。这是我认为在版权保护方面做得不错的一个项目,方式是把每一个排队的具体内容存在大账本上,保证这个内容不可篡改,并且可以直接用这个算法模式去检索,看有没有别人做过同样的东西,同样的有多少。

基础设施

FAB,是我目前看到解决效率问题的一个比较成功的东西。

4

彩蛋:加密货币的“价格”和区块链的价值

image

加密货币的“价格”

为什么要把两者分开来讲呢?因为现在加密货币的价格和区块链的价值是完全不同的东西,因为有交易所的存在,加密货币的价格完全由市场行为推动,学金融的同学很容易明白这一点。

加密货币最开始的价格是怎么从0-1的?几年前有个人用2万个比特币换了一个披萨,可能这是比特币价格最开始产生的原因:它可以换物了。

影响加密货币价格的因素很多,包括市场行为、供求关系、挖矿成本等,这个挖矿成本包括全网算力和显卡成本。

区块链的价值

区块链的价值绝对不是体现在现在的价格上,它的价值体现在以下几个方面:

  • 固有价值:解决了一致性和信任问题。

  • 媒介价值:中心机构的运维成本,是否能提高效率。

  • 资本价值:流动性=经济增长。

  • 人才价值:顶尖人才的硬实力。

  • 潜力价值:成为独角兽的能力。

我觉得现在的比特币系统,有很严重的痛点,只有这些痛点都被解决的时候,才能真正实现价值的重塑,它是信任和价值重塑的一个接口。

image

上期精彩:区块链创业者:谈企业级区块链落地,传统行业的崛起(分享实录)

内容来源:BitTiger读书会刘遥行老师的线上分享手把手带你跟着中本聪发明比特币 ——白话讲解《精通比特币》

本文编辑:Cynthia

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

image

共收到 0 条回复
600b82 yanyan 将本帖设为了精华贴 04月26日 13:46
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册