比特币相关区块链专栏区块链研习社

我所认知的区块链(一)

2017-12-16  本文已影响145人  吴有言之
区块链(BlockChain)

最近一段时间比特币价格的飞涨让所有人都望币兴叹,截止到12月16号,比特币的价格达到了17250刀。这个是有多疯狂呢?我记得11月16号写比特币大事件,记录的比特币价格为7300刀左右。才一个月过去了,现在比特币价格涨幅高达136%。比特币是区块链的第一个应用,到目前来说也是最成功的应用。如果要想做区块链的投资,不懂区块链的是什么,你就不能真正发现好的项目,最后只能当做韭菜被割。

关于区块链,现在网上有大量的资料可以学习。我今天要讲的关于我对区块链的理解,源于对于公众号白话区块链和自己所从事行业所熟知内容的理解。区块链技术中提到的公开密钥算法和数字签名技术都是已经很成熟的技术,这个对于我更好的理解比特币提到的挖矿机制和转账机制等有更好的了解,接下来以白话区块链的讲解加点自己的理解来说明。

1.什么是区块链

1.1 一个有趣的数据记录格式

区块链(Blockchain),简单字面拆开理解就是“区块”+“链”。说的专业一点就是,通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。通俗一点说区块链技术就指一种全民参与记账的方式。举个会计记账栗子,每一笔发生的业务都记在账本中,每一笔记录的账务称之为是凭证,一个月下来,将记录的一堆凭证数据汇总成一个账簿,每过一个月就月结一下。区块链的格式,跟会计的这种记账方法很类似,所谓区块也就是一大坨数据的意思,我们可以将会计每个月所有记录的记账凭证看成是一个个的区块,区块之间通过年月串联起来,这样看起来就像是一条数据链一样,区块链其实就是这么简单的一个格式。

会计做账

如上图所示,就是区块链格式的样子。在比特币中,不是每个月存储一个区块, 而是大约每10分钟一个区块(注意只是大约,不是精确的10分钟),区块中存储的数据是最近的10分钟内发生的交易事务(最近的10分钟这个说法其实并不严谨,现在可以就这么理解,在下面另有解释),可以理解为就是流水账。

用家谱或者族谱解释起来会更加明白,每一代人之间的关系是一个区块,到了下一代又是一个区块,区块之间是父辈与子女的关系连接;说白了就是一个线性表,这就是比特币软件的主要数据存储格式,也是绝大部分基于区块链技术的系统存取数据的格式。

这是一个很有趣的数据格式,它将连续不断的发生的数据分成了一个一个的数据块,这样每个区块就都有自己的数字编号,也可以有自己的身份证号(通过哈希算法计算得到),在下载同步这些数据的时候,可以并行的从各个节点来获得,无论数据先后,到达本地后再根据区块号或者身份证号来组装起来就行。

另外,这种格式是一种链条的格式,链条最大的特点就是一环扣一环,很难从中间去破坏,比如有人篡改了中间的5号区块,那么如果要让数据看起来是完整的,就得同步把5号区块后续的所有区块都要更改掉,这个难度就大了,这也是区块链数据格式不可篡改的其中一个原因(当然了,如果仅仅只是本机的数据,也没什么不可篡改的,区块链系统真正的防篡改能力是通过无数个区块链系统运行的节点网络以及共识算法来实现的,这个在下面再介绍)

这种格式还要个妙处,如果这个数据总是由一个人来记录的,那自然也没什么,但是如果放到网络中,大家共同来记录这个数据,那就有点意思了,每个区块数据由谁来记录或者说打包,是可以设置一个游戏规则的,比如说掷骰子,大家约定谁能连续3次掷出6,那就让他来记这个数据,为了补偿 一下他的劳动投入,奖励给他一些收益,比特币正是使用了这样的原理来不断的发行新的比特币出来,奖励给打包的那个人的比特币就是新发行的比特币。

1.2一组技术的代表称呼

刚刚我们说了,区块链是一种数据的记录格式,在技术上区块链是一组技术的代名词,我们通常都说使用了区块链技术就是这个意思,那么既然是一组技术,那是由哪些技术组合起来的呢?我们来看一组关键词:

公开密钥算法

网络共识算法(挖矿)

梅克尔数据证明

可编程脚本合约

区块链账本

1.公开密钥算法

属于计算机密码学里面传统的技术,公开密钥算法是一种不对称的加密算法,拥有两个密钥,可以互相加解密,通常其中的一个密钥是公开的称之为公钥,另外一个密钥是保密的称之为私钥;加密货币重点是保护自己的私钥,只要私钥不丢失,你的数字钱包就属于你

2.哈希算法

也是属于计算机密码学中传统的技术,应用就更广泛了,主要来对一段数据进行计算,得出一个摘要信息,通俗点说就是给一段数据生成成一个身份证号;不同的消息生成的摘要数据是不一样的(某些抗碰撞能力弱的哈希算法可能在这方面会有些问题,但是使用广泛的一些知名的哈希算法,发生碰撞的概率很低),相当于给一段数据生成了一个身份证号这么个意思,在区块链系统中,哈希算法的使用很多,例如区块与区块之间,就是通过区块头的哈希关联起来的,而区块中的每一笔交易事务也都会生成一个哈希值作为交易易数据的ID,通过这些身份证号可以方便的检索或者关联区块,也能方便的指定某一笔交易事务。

哈希算法还可以用来生成梅克尔树,在下面再详细介绍。哈希算法的特点是,只要源文件数据有哪怕一点点的改动,生成的哈希值就会完全不不一样,因此可以用来验证数据是否被改动过。

3.网络共识算法

在很久前就有计算机科学家研究过,并且提出过一些模型,如拜占庭容错算法之类,比特币、以太坊这些使用的是一种工作量证明(Proof of Work)算法,其它的一些区块链系统有使用其他各种衍生的算法,其实算法的原理都很简单,就是约定一个规则,通过共同执行这个规则,让每个分布式的节点数据都保持最终一致;

4.梅克尔数据证明

这是利用哈希算法将一组数据创建为一棵哈希树结构,用于验证数据完整性的一种结构,同时也应用在了轻量级钱包中。不同的区块链系统对梅克尔树的应用不尽相同,比特币中是二叉梅克尔树,比较简单,通过交易事务的哈希值两两配合生成一棵树,以太坊这种就复杂的多了,称之为梅克尔.帕特里夏树,这里暂时不赘述。

5.可编程脚本合约

什么叫合约?就是一组约定的规则,例如银行的结算系统,小明转账100给小王,在这么一个过程中,银行系统就会根据一组规则自动执行,规则包含例如检测小明的密码是否正确,余额是否足够,小王的账号是否正确,检测通过则分别更改两者的账户余额并写进事务日志。是的,这就是合约的意思了,当然,如果范围再广泛些,各种商业合约也都是这么个意思,因此可编程脚本合约也没什么好稀奇的,然而,如果将这种编程合约放到区块链的环境中,就比较有趣了,看两个特点:

第一个,区块链系统是无中心的分布式网络,没有边界。

第二个,区块链系统通过一系列的技术实现了可信任网络。

加起来,就是无边界的可信任网络,在这样的一个网络中执行既定的合约,成本低廉而且安全,比特币在本质上也是属于这么一种脚本合约,只不过在比特币软件中,合约中处理的事情是比特币的转账,如果扩展这个概念,众筹、担保、分润等各种合约种类都能应该在这上面,用户也可以自行编写合约规则,以太坊便是这方面的一个典型代表,并由此带出了智能合约的应用。

1.3创世应用“比特币”

说了这么多,可以简单理解为区块链技术就是一套软件开发技术,跟我们平时的网站开发技术、游戏开发技术、手机APP开发技术类似。只不过,与其他的开发技术不同的是,它能开发出一款软件,这种软件能制造“货币”出来,这就让人觉得有些不可思议了,比特币正是区块链技术的第一个应用软件,因此我们称它为“创世应用”。

正是比特币把区块链的技术理念带到了我们的视野中,而且看来比特币系统以一种极其天才的创新设计,解决了人们一直以来都难以解决的问题,那就是异步网络环境中实现数据的可信任共识的方案。我们抛开比特币这个货币的概念,纯粹站在软件或者网络的⻆度来看一下,假设我们是当初的中本聪,模拟一下当时的想法,首先,希望实现一套系统,可以联网,并且通过网络传递数据,如果是使用中心服务器这个结构的话,那显然是不够安全的,只要服务器上的数据损坏或者被攻击,系统等于就被瘫痪了,因此,决定采用分布式的结构,可是分布式结构有几个问题;

第一个,这些分布式的系统节点运行在哪呢,谁愿意提供计算机设施来运行,靠自己来部署,那个成本就没底了;

第二个,分布式的节点,那么数据的一致性就是个问题,没有了服务器,数据来源也就没有权威的保证了;

第三个,怎么来验证网络中的数据呢?

对于第一个问题,站在经济⻆度,如果系统提供一种激励措施,让运行节点的人有利可图应该就能解决了,因此设计这个系统,得要有一个奖励或者激励的规则,在比特币中,打包区块的矿场能够获得一定数量量的比特币奖励,这就是激励措施了。

对于第二个,这个问题是个难点,比特币要运行在公网上,各种情况都有,数据可能被篡改,网络可能不稳定,就连节点什么时候运行也不在控制之中,如何来解决这些问题呢?得要有一个机制,这个机制必须要有公正性,既然网络是可能不可靠不稳定的,那这个机制中就不能有太多对其他节点的依赖,得是一个主要依靠本机就能实行的一个做法。

著名的CAP原理,阐述了这么一个结论:分布式计算系统不可能同时确保一致性、可用性和分区容忍性。看下这三个术语分别是是什么意思吧:

【一致性】:这里是指强一致性,发生在后面的事件能看到前面事件发生导致的结果。

【可用性】:在有限时间内,任何非失败节点都能应答请求。

【分区容忍性】:也就是说网络有可能发生分区,也就是说节点之间的通信不可保障不能同时确保,那就只能靠弱化某一个或者某两个特性,从而增强其中一个特性了。

中本聪在实现的时候,设计了一个工作量证明,很有意思,设置一个难度值,大家都通过一个类似于掷骰子的算法来命中一个结果,若结果符合预期的要求,就成功,成功者可以获得数据的记账权也就是区块数据打包打包完毕后在广播给其他人,其他人验证后写入自己的数据中

在这个过程中,由于使用的算法是一个类似于暴力破解的算法,除了靠提高计算机算力没有更高的办法去讨巧(这就一定程度上实现了一定程度的公正,当然了,土豪有能够购买更高性能的计算机设施,从而比普通用户更加具有抢得打包权的能力,这也是一个问题,不过这种技术总是只能解决一定范围的技术问题),但是大家需要注意的是,能够算出一个命中的值的,可并不一定只有一个人,如果出现了多个呢?那大家就只能进行区块的广播竞争了,谁被其他的节点接收的多,谁就被最终认可,而其他同样挖矿成功的就会被丢弃,从而得不到奖励。

因此,比特币中的这种数据一致性的算法是最终一致性而不是实时的一致性,这个大家一定要注意了。

对于第三个问题,怎么验证网络中的数据,在比特币网络中,每个节点都是独立的验证数据的,在验证过程不需要网络中其他节点提供依赖的服务。

区块链思维导图一

接下来将继续集合白话区块链的内容同时结合自己的理解,让自己对于区块链有更加深入的了解。也希望能够对于你有帮助。

现在针对区块链的应用,不仅仅是停留在比特币等的交易,基于区块链的社交软件BeeChat已经在币圈火爆了。对于新生事物,我们都不应该一开始去排斥,有句话是这么说的,“没有调查,就没有发言权”。我不是给他打广告,与其天天喊比特币是泡沫,为什么不去看看区块链到底能给我们带来怎样的改变呢?而且他的功能跟微信很类似,当然可以发红包,只不过他发的不是法币资产,而是像比特币这样的数字资产,搞不好那天土豪群主高兴,发了一个比特币给大家,哈哈。

你的一小步,区块链时代的一大步。如果你感兴趣可以下载看看,没兴趣直接无视。

http://in.ibeechat.org/spread/9903823

下载app领取 https://beechat.io/

最后,如果你下载了,记得及时加入一个叫莱特币现金社区群,在圣诞节前,莱特币会进行分叉,社区对于前2000位会免费发放糖果。莱特币现金怎么样,你也不要无视,币圈有这么一句话“牛市赚钱,熊市屯币”。有缘群里见,一起分糖果。关于莱特币现金我将在我自己的知识星球发布最新消息,你也可以进入星球查看。

我正在「言之有吴」和朋友们讨论有趣的话题,你一起来吧?

https://t.xiaomiquan.com/NvznIAQ

上一篇下一篇

猜你喜欢

热点阅读