阅读 1451

趣说区块链入门

让你听过区块链

不知道大家有没有听过区块链?有没有了解过区块链?有没有开发过区块链?当然,这些都不重要。重要的是,现在开始,你即将了解“区块链”。区块链包括了 数学、密码学、P2P 通信、智能合约、分布式存储及共识算法等知识,是多种技术共同组合而成的。

下面从实际生活的例子出发,看看什么是区块链?区块链解决了什么问题?

压岁钱?

小时候最喜欢过年了,走亲访友我们都有压岁钱,也总是这样的客气。

但开心的时间总是短暂的,到家里,妈妈总会说:“红包我就给你保管了,等你需要用到的时候再给你啊”。当然,连续了好多年,我都没有看见过自己的压岁钱。

当时年纪尚小,父母是我们信任的人。什么都由父母说了算,这个压岁钱具体数额,使用日期,使用方式好像跟我们没多大关系,都是在父母指定的规则中进行。简单总结,这就是中心化的操作。中心可以随意更改我们的数据,更改规则,我们都是中心下运转的螺丝钉

就像现在我们的钱是存在银行,因为银行后面是国家,我们信任国家,所以把钱放到银行。银行就是一个中心化的机构,执行相关的政策,进行经济的宏观调控等。

接下来,让我们看看什么是区块链?解决了什么问题?

还是收压岁钱。

但是几年后的我聪明了。不相信妈妈给我保管压岁钱,每次拿到压岁钱,我都自己拿个小本子,把谁给我的压岁钱,具体金额跟时间都记上;并且告诉爸爸,哥哥姐姐,爷爷奶奶,七大姑八大姨,他们都跟我一样,记录着谁给我的压岁钱,具体金额跟时间等。 有一天,我有个喜欢的小女孩,她叫 LL,我向妈妈支出 100 块钱,想要给小女孩买礼物表白。妈妈一听?好小子,小小年纪,想法如此通透,果断拒绝,说我的压岁钱只有 10 块钱!!!!妈妈还拿出了她的小本本,上面确实只有 10 块钱。

9 龙表现得异常冷静,超出同龄人的沉着,化身福尔摩斯-龙。缓缓拿出了我的小本本,上面清楚记录着我的每一笔压岁钱(记录着哪位亲戚给我的,具体金额是多少)。妈妈开心的笑起来,表现出自己儿子是天才般的浮夸。很快,她的理智战胜了,说我记假账!!!!这时候又让我想起我小时候经常问的问题:“妈妈,我是从哪里来的?”

我笑了笑,接着在“相亲相爱一家人”群里给大家说,“请大家带上我压岁钱的小本本,来我家客厅一下”。大家都是爱我的,很快就来了。长辈们的小本本上都记录着我每一笔压岁钱,并且跟我的小本本记录的一模一样,那场景,异常尴尬啊。妈妈立刻从包里给了我 100 块钱,这时,我跟每一位长辈都在自己的小本本上记下:妈妈。。年。。月。。日给了 9 龙 100 块钱。 9 龙拿着钱,蹦跳着向商店跑去。

太棒了,这就是 amazing。我们再来分析一下这其中的关键。家中的每一个人都帮我记录每一笔压岁钱的来历:包括谁给我的,什么时间,具体金额等。 这就是“去中心化”,大家都在帮我记录,记录着我的每一笔入账与出账,谁要是修改了自己的小本本,我们就可以找大家来核对一下每个人的小本本,就可以知道谁的账本上错误的,而大多数人的账本都是一致的。

其实这就是区块链最核心的东西,去中心化,数据不可篡改,所以信任账本(少部分人篡改后,大部分诚实的人数据都是一致的,我们相信大多数)。

区块链的实质是一个去中心化的分布式数据库,只支持以数据增加的方式来更新账本,每一次更新都是以交易的形式进行,所以可以追溯余额的变化原因,每笔账单的来源与去向。 因为不可以更改其中的某一笔交易,也不可以删除数据,所以我们每个人都信任自己记录的小本本,信任着自己的账本。当你对自己的账本有质疑时,可以叫大家一起来互相核对,查看账本是否有问题。

所以区块链根本解决的是什么问题?

我认为根本解决的是信任问题,如何让互不认识的双方很放心地进行价值转移。 基于区块链的特性:去中心化、数据不可篡改。

聪明的你,应该也看出了要想实现区块链需要很多条件才行,下面我们来看一看。

区块链实现需要克服的问题

我们从上面的例子可以看出一些问题。这里只是说一些大方向的问题,毕竟此篇不涉及技术。后续的文章会详细说明的,请耐心等待,持续关注。

  1. 可以看出,记账的人越多,其实越安全。可能记账的人分散在世界各地,彼此不认识,如何让大家都知道彼此什么时候获得多少压岁钱,谁给的呢?
  2. 如何保证大家知道的此条账单信息来源的真实性?(是否传输过程中被人篡改)
  3. 如何保证在有人会修改账单,或者转发已经修改的虚假账单给别人时,别人如何处理此账单?
  4. 如何保证大家都会按照约定的规则进行记账呢?确保都会将账单加入到自己的数据库中。
  5. 如果有人串通好一起更改账本,并且广播这个更改的账本,这时候又怎么处理呢?
  • 我们先说第一个问题:如何让世界各地的人互相都知道自己的压岁钱来历,金额等。这就是P2P 通信(peer to peer),点对点的传输,双方都是直接发送消息给对方。p2p 是区块链的基石,所有的操作都得靠 p2p 来完成。(引入 p2p 就会有很多网络问题,比如网络分区)
  • 第二个问题:可以采用非对称加密算法,使用私钥进行关键数据签名;公钥及原始数据,签名进行验签。这样就可以验证数据是否与来源对应,数据是否被篡改。
  • 第三个问题:其实问题二说明中,可以验证此账单是否被修改,如果被修改了验证不通过,丢弃此账单,等待正确账单的到来,或者向已经连接的其他人索要账单。
  • 第四个问题:大家都按照某种规则来验证此账单的有效性,最简单的做法可能通过投票,大家都来表决是否此账单有效并进行记录。这一步就是所谓的共识,即大家都对此账单的有效性进行表决,是否接受账单。共识是基于 P2P 通信的,所以可能会出现网络故障、网络分区;更甚其过程会有作恶的人篡改账单,广播假的账单,或者一会同意一会不同意等捣乱行为,影响共识的进行。这就是分布式事务问题,如何在分布式场景中对某一个值进行共识,来达到大家都对这个值一致的处理结果——都同意或者都不同意,或者满足指定的规则下允许少部分的人可以与大家的结果不一致。对于分布式一致性算法:有 2PC、3PC、PAXOS、PBFT、RAFT 等。还有区块链特有的 POW、POS、DPOS 等,以后慢慢道来。
  • 第五个问题:这个问题其实也是属于共识范畴,但可以知道的是,我们是相信大多数人的账本,如果大多数人都接受一个更改后的账本,反过来说,这个“错误的账本”其实就是正确的,被大家所共识后并接受的。

区块链分类

区块链根据需求划分为三类

  1. 公有链:指所有人都可以参与,可以随时上下线;
  2. 联盟链:想要加入的人或者机构需要进行 CA 认证,即需要经过现有联盟链中节点的审批,满足定义的背书策略即可;退出亦然。
  3. 私有链:不允许其他人加入退出,或者只有经过许可的才能加入,但是其他的人没有决定权,完全由私有链决定如何处理交易等。我理解私有链已经不能称为区块链链,就是一个中心化的分布式账本。

比特币?以太坊?EOS(柚子)?

或许你听过这些名字,也听说了是基于区块链的加密数字货币。

但我强调!!!!!比特币、以太坊、EOS 等数字货币,不等同于区块链,它们只是区块链的一种应用。

比特币是区块链的第一个应用,并且经过时间验证,是可行的,现在还在正常运行,没有任何中心化的机构运行,全靠比特币区块链网络中的节点来共同维护。

分布式账本——Hyperledger Fabric

Hyperledger 是一个开源社区,致力于为企业级区块链部署开发一套稳定的框架,工具和库。旗下有很多开源的产品,最出名的非属 Fabric,是可商用的联盟链框架。国内也是主推联盟链的发展,联盟链才是可真正承接业务的区块链,公链暂时还没有找打比较好的商用场景。如果大家对区块链感兴趣,建议向联盟链方向发展。

国内的联盟链框架

以下排名不分先后(狗头保命)

  • XuperChain:百度完全自主研发的联盟链框架。github 地址:https://github.com/xuperchain/xuperchain
  • FISCO BCOS:由微众银行牵头,众多企业参与研发,基于 ethereum 进行研发的联盟链框架。github 地址:https://github.com/FISCO-BCOS/FISCO-BCOS
  • CITA:CITA 由秘猿科技开源, 是一个开源的区块链操作系统内核,以高稳定性,高性能,高可扩展性为设计目标。gi thub 地址:https://github.com/citahub/cita
  • 梧桐链:由苏州同济区块链研究院进行研发,基于开放标准研发的联盟链平台,聚焦行业、结合联盟、服务社区。github 地址:https://github.com/tjfoc/wutongchain

说到联盟链,怎么能不说智能合约呢

智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1995 年由 Nick Szabo 首次提出。

可以理解为某个系统中,达到了某个条件后自动触发执行的程序。 智能合约已经提出很多年了,但为什么都没有应用,直到以太坊的出现?因为智能合约是自动执行的程序,如果运行其的系统不可信,那系统可能在智能合约运行过程中更改运行状态,这就与合约的概念背道而驰。直到区块链的出现,以太坊将智能合约引入到了区块链中,使用区块链的不可篡改特性提供了可信的运行环境,智能合约才能得以应用。

灵魂拷问?

  1. 什么是区块链?你可以用自己的话给别人说清楚吗?
  2. 存在即合理,为什么会产生区块链?区块链解决什么问题?
  3. 区块链涵盖哪些主要知识?有什么分类?
  4. 你理解了区块链是什么之后,你有什么好的想法或者应用场景?

这篇文章是区块链的入门文章,之后的文章会偏向底层技术一些,拭目以待吧。

本文使用 mdnice 排版

文章分类
后端
文章标签