社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

九分钟了解区块链

MacTalk • 6 年前 • 523 次点击  

题图:by click_vision From Instagram

我在 2017 年 12 月 26 日写过一篇「2018 年技术趋势预测」,关于区块链我是这么写的:

区块链是可以改变世界的发明。区块链源起比特币,但并不局限在币圈。区块链技术是储存、验证和数据保护等问题的实际解决办法。区块链可被视为分散的、极度安全的数据库。更专业一点来说,区块链是分布式的点对点的基于密码学的共享账本,可以在金融服务、保险、医疗、政府等领域内被广泛应用。2018年应该是区块链技术起飞并日趋成熟的一年。

没想到 2018 年刚开始,区块链技术就像西去路上火焰山顶最高的火焰,简直火冒好几丈,红得发紫。很多人会说有这么火么,我怎么不知道。事实上 2017 年火爆的是比特币,区块链的拉升曲线确实是一月份才发生的,看下区块链的微信指数就知道了:

一个浪头打过来,最好的办法是迎上去了解个究竟,而不是漠视,或者干脆当事情没有发生。最近读了些相关资料,有了更具体一点的了解,那就写篇白话文吧。阅读时间大概九分钟。

区块链到底是啥?不明真相的群众一般都去查维基百科,上面是这么说的:

区块链(英语:blockchain 或 block chain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。中本聪在 2008 年,于《比特币白皮书》中提出「区块链」概念,并在 2009 年创立了比特币社会网络,开发出第一个区块,即「创世区块」。

看完以后你是不是发现,都是中国字,怎么就搞不懂是啥意思呢?所以区块链的概念还是得解释一下。首先需要明确的是,区块链是一套协议和规范,用英文表述就是 Protocol,不是具体的代码或者项目。理解了这套协议,你可以基于不同的语言和技术去实现它,这和我们平时定义了一套 API,然后基于不同的技术实现没有什么分别。

但是区块链在不同领域的人眼里,可能是不同的东西。角度不同,我们得出的结论也不一样。金融领域的人会认为区块链是个分布式的账本,是一个分布式的去中心化的记账系统。搞安全和密码学的人会说区块链是基于密码学构建的对等网络。而我们程序员了解了区块链技术,会认为这不就是一个保证最终一致性的分布式数据库嘛。

记账系统

对于普通人来说,记账系统最容易理解,我们从账本说起。比如大家一起做生意,总要有个账本,最初这个账本由账房先生管理。但一个人管,总会出现对账不平衡的情况(比如挪用),于是大家开始轮流管。这种方式也有问题,在某个人保管账本和记账期间,一旦发生了数据丢失或账本损坏的情况,也会搞不清真实原因。最后大家决定用一种新的记账方式,每个人一个自己的账本,任何人改动了自己的账本都要告诉其他所有人,其他人也会在自己的账本记上一笔。只要有人发现新的账目不对,可以拒绝接受。最后以大多数人一致的账目为准。

这就是分布式的去中心化的记账系统。但这种做法时间长了还是会有问题,有人天天记,有人偷懒不记,会产生不公平。于是大家决定每天早上掷骰子,根据点数决定谁来记当天的账,其他人核对一下,没问题就复制过来。并且,当天的记账者会获得一点点奖励(这就是挖矿)。

去中心化的分布式数据库

把上面的记账系统用软件技术实现了,就是去中心化的分布式数据库。

什么是中心化,早期互联网大都采用 CS 架构,一个服务器 N 个客户端,Client 和 Server 之间进行通讯,系统可靠性严重依赖 Server,这叫中性化。

随着业务复杂度的增加,服务器端也开始分拆,横向和纵向扩展,读写分离等等,这就是我们常用的分布式架构系统,系统可靠性依赖分布式系统的热备份和容灾恢复能力。这时候服务器虽然分布了,但依然是中性化的。大部分商业公司都采用类似的架构和模式。

去中心化是怎么回事呢?就是数据库不属于任何机构和管理员。只要服务器端被某个机构或管理员控制,就存在宕机或数据篡改的风险。区块链和 P2P 的网络通信技术最终实现了去中心化。区块链的作用就是存储信息,可以认为是一个数据库,而任何人都可以通过 P2P 网络架设服务器,接入区块链网络,成为一个节点。这下人人平等了,大家都是 Server,也就没有了 Server,每个节点既是生产者也是消费者。

你可以向任何一个节点读写数据,一旦写入就是历史,最后所有的节点都会同步数据,保证「账本」的一致性。

区块链是没有管理员的,也不需要人工审核和干涉。那人人都能写数据,数据的可信度怎么保证呢?数据被篡改了咋办?别担心,P2P 网络只是进行信息通讯,保证数据安全的还有共识算法和加密算法。

共识算法

关于共识算法、拜占庭将军问题,大家可以参考这一篇文章,很长,但容易看懂。

分布式一致性与共识算法(https://draveness.me/consensus)

简单来说,共识算法就是保证少数服从多数,也就是我在记账系统中写过的「最后以大多数人一致的账目为准」。大多数人认可的事情,就是事实。这种规则听起来挺吓人的,比如我们常常在文学作品和历史经验中知道,真理往往掌握在少数人手里。但是在 P2P 的网络里,有无数的节点,要想大部分节点一起作恶,除非这些节点都被某个组织控制了。这种可能性虽然不是没有,但几率非常小。

总的来说,共识算法解决的是对某个提案(Proposal)达成一致意见的过程。提案的含义在分布式系统中十分宽泛,包括多个事件发生的顺序、某个键对应的值…等等,可以认为任何需要达成一致的信息都是一个提案。

有了共识算法和相关的加密算法,就可以保证数据的安全性和一致性。

为什么会挖矿?

谈到比特币,大家耳熟能详的就是挖矿和矿机这种事。那为什么会挖矿呢?挖矿其实是一种激励和竞争机制。

在区块链系统中,总有些节点被选中进行数据整理、验证、打包,并把相关的改动广播出去,这个工作还是挺耗资源的,所以会有奖励机制。负责打包的节点会获得系统的奖励,类似积分,对于比特币系统来说,就是奖励比特币。有了奖励,很多节点都希望获得这样的奖励,于是有些区块链系统,比如比特币就会设计出一种竞争机制,让各个节点凭借自己的算力和资源去抢,能抢到这个数据打包的机会,就会获得奖励,也就是比特币。这个竞争的过程就是挖矿。

什么是算力呢?就是计算机每秒产生 hash 碰撞的能力。也就是说,手里的矿机每秒能做多少次 hash 碰撞。算力越高,获得的奖励越多。

区块链的未来

很多人觉得区块链的唯一应用就是发行虚拟货币,最近国内外市场也是烽烟四起,比如超过百年历史的伊士曼柯达公司宣布推出基于区块链技术的「柯达币」(KodakCoin)和 KodakOne 平台,让全球的摄影师能够更好的控制图片的版权和交易。然后股价就飙升了……

了解了区块链的技术特点,我们就知道,区块链的能力远不止虚拟货币领域,未来的 金融服务、物流、保险、医疗、共享经济、智能合约领域,应该都会有区块链的身影。

繁华落尽,洗尽铅华,所有的技术都将经历时间的洗礼。历经爆发期、衰退期并进入成熟期的技术,才是真正能具备生命力的技术。


想详细了解区块链技术,一篇文章是远远不够的,推荐一节免费直播课给感兴趣的读者。

分享者是冯贵彬:

(株)LinkJapan IoT新事业研究室技术主管
2006-2012年北京市气象局雷达通信研究室
2012-2015年北京康康盛世信息技术有限公司
负责BLT通信开发.现就职于日本LinkJapan Inc

主要研究方向:
IoT/big data,deeplearning,self-driving

直播课内容:

1、什么是区块链 
介绍一下区块链的概念和基本技术特点等相关内容

2、区块链的发展史
介绍区块链所解决的问题,谈一下区块链的发展史

3、区块链基础
介绍运算原理、公有链、私有链、联盟链、常用加密算法等机制以及分叉和矿工在链中的作用

4、区块链的缺点

5、区块链的典型应用 —— 以比特币为首的数字货币

7、区块链技术的未来发展应用
区块链1.0时代
区块链2.0时代
区块链3.0时代

直播时间:2018年1月24日晚20:30

报名方式:长按识别二维码

或添加【区块链技术分享群】群号:519832104


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/CEpCrFXocE
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/5821
 
523 次点击