2月7日,此次疫情的“吹哨人”李文亮医生去世,令无数人扼腕叹息。其后,有人在以太坊区块链上为李文亮医生树了一座碑,区块高度9432824。区块链原来还可以这么用!
在不少人眼里,区块链和虚拟货币是划等号的,但其实,区块链的实际应用远不止如此。
国家正大力发展区块链的技术和应用,区块链得到国家层面的高度重视,并已被上升为国家战略。区块链在各行各业,都已经或将会产生巨大的应用价值和市场价值。
但区块链究竟是什么呢?与其盲人摸象一般通过道听途说,对区块链产生了一些似是而非的片面认识,不如系统地了解一下区块链。
有个村子,村里有个专职会计管着村里的账本,村里的开支和收入,都由他记账。有一天,有人无意中看到了会计的那本账,发现数字不对,立即告诉了所有村民,经过一番讨论,村民们决定,撤销专职会计,由村民们轮流记账。
但过了没多久,有当值记账的村民,打起了公款的主意,为了不被别人发现,他故意损坏了一部分账本,反正只有一本账,查无对证,之后,这么干的人越来越多,而村里的账也越来越乱。于是,大家又进行了一番讨论,决定启用一种新的记账方法:即每个村民都拥有一本自己的账本,每次需要记账的时候掷色子,根据点数决定谁来记账,其他人只要核对一下,没问题就复制过来,抄到自己的账本上,而被掷到进行记账的人,会获得一点酬劳。这样,所有人的账本,记录的内容都应该是一致的。而如果谁的账本损坏了,则以大多数人都一致的账本记录为准。这就是区块链的雏形了。
所以,区块链的本质,其实就是一种记账方法。在上面的例子中,每个村民,都相当于一个参与记账的“节点”。至于整个村子,村民们互相认识,可以彼此间进行账目信息的传输和复制,这就是一张区块链网络了。在这个网络中,每个节点都维护着自己的一个账本,账本中记录着网络中发生的每笔账务。
而这个账本,并不是只能用来记录资金往来的,还可以用来记录各式各样的账务。所以,区块链可用于哪些领域,取决于区块链具体面向什么样的应用场景和事务类型。
下面列举了一些区块链相关的知识点,可以让大家对区块链的一些重要概念有个基本了解。此外,这里还有本《白话区块链》电子书随附,干货满满,是一本关于区块链的由浅入深的高分书籍,有兴趣的朋友可以根据文末信息前往获取。在这本书中,下面的这些知识点,都有更详细的展开,仅供内部学习,朋友们也可以通过评论或私信与我们交流。
区块链技术
区块链是一整套技术组合的代表,包括:
1.区块链账本
是一种特有的数据记录格式,就是“区块+链”,所谓的区块就是指数据块的意思,每一个数据块之间通过某个标志连接起来,从而形成一条链。
2.共识机制
共识算法其实就是一个规则,通过一种机制筛选出最具有代表性的节点,每个节点都按照这个规则去确认各自的数据。在区块链系统中,存在着多种这样的筛选方案,比如PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)、PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)等。区块链系统就是通过这种筛选算法或者说共识算法来使得网络中各个节点的账本数据达成一致的。
3.密码算法
区块链账本对每个区块都会计算出一个哈希值,称为区块哈希,通过区块哈希来串联区块。这样,如果对原始数据进行修改,哪怕只是一点点修改,那么计算出来的哈希值都会发生完全的变化。除了整个区块会被计算哈希值外,区块中包含的每一笔事务数据也会被计算出一个哈希值,称为“事务哈希”,可以确保区块数据的完整性。当然,密码算法在区块链系统中的应用还远不止这些,比如通过密码算法来创建账户地址、签名交易事务等。
4.脚本系统
在区块链系统中,有些系统是允许用户自行编写一组程序规则的,编写好后可以部署到区块链账本中,这样就可以扩展区块链系统的功能,比如以太坊就是通过实现一套可以自定义功能的脚本系统,进而实现了智能合约的功能。而所谓脚本,就是指一组编写程序的规则。脚本系统使得在区块链中可以实现各种各样的业务功能。
5.网络路由
网络路由可以说是区块链系统中的触角,通过大量的触角将每个节点连入网络,从而形成一个功能强大的区块链共识网络。区块链系统是一个分布式的网络,这些网络中的节点能够进行连接通信,依靠的就是网络路由功能。在分布式的网络结构中,不存在一个指定的服务器,大家没法通过一个服务器来直接交换彼此的身份信息,而只能是彼此之间直接进行联系并传播信息。在区块链系统中,这个功能一般会定义成一种协议,称为“节点发现协议”。而除了要发现节点外,更重要的一个功能就是同步数据。节点要保持自己的账本数据是最新的,就必须要时时更新自己的数据。而同步数据,需要通过向邻近节点发送数据请求来获得最新的数据,节点彼此都充当服务者和被服务者,通过这种方式,网络中的每一个节点都会在某一个时刻达成数据上的一致。
区块链分类
根据网络范围,可以划分为公有链、私有链、联盟链。
1.公有链
所谓公有就是完全对外开放,任何人都可以任意使用。比特币就是一个公有链网络系统,大家在使用比特币系统的时候,只需要下载相应的软件客户端,创建钱包地址、转账交易、挖矿等操作。公有链系统由于完全没有第三方管理,因此依靠的就是一组事先约定的规则,这个规则要确保每个参与者在不信任的网络环境中能够发起可靠的交易事务。在公有链的环境中,节点数量是不固定的,节点的在线与否也是无法控制的,甚至节点是不是一个恶意节点也不能保证。
2.私有链
私有链是与公有链相对的一个概念,所谓私有就是指不对外开放,仅仅在组织内部使用的系统,比如企业的票据管理、账务审计、供应链管理等,或者一些政务管理系统。私有链在使用过程中,通常是有注册要求的,即需要提交身份认证,而且具备一套权限管理体系。在私有链环境中,节点数量和节点的状态通常是可控的。
3.联盟链
联盟链的网络范围介于公有链和私有链之间,通常是使用在多个成员角色的环境中,比如银行之间的支付结算、企业之间的物流等,这些场景下往往都是由不同权限的成员参与的。由于联盟链一般用在明确的机构之间,因此与私有链一样,节点的数量和状态也是可控的,对于企业或者机构之间的事务处理很合适。
区块链架构
1.区块链1.0架构
这个阶段区块链系统主要是用来实现数字货币的,在整个架构中,分为核心节点和前端工具。这里提一下核心节点中“矿工”功能。矿工在1.0架构的系统中,主要是承担两个任务:第一个是通过竞争获得区块数据的打包权后将内存池(发送在网络中但是还没有确认进区块的交易数据,属于待确认交易数据)中的交易数据打包进区块,并且广播给其他节点;第二个是接受系统对打包行为的数字货币奖励,从而系统通过这种奖励方式完成新增货币的发行。在前端工具中,最明显的就是钱包工具,钱包工具是提供给用户管理自己账户地址以及余额的;浏览器则用来查看当前区块链网络中发生的数据情况,比如最新的区块高度、内存池的交易数、单位时间的网络处理能力等;RPC客户端和命令行接口都是用来访问核心节点的功能的,在这个时候,核心节点就相当于一个服务器,通过RPC服务提供功能调用接口。
2.区块链2.0架构
区块链2.0架构的代表产品是以太坊,与1.0架构相比,最大的特点就是支持智能合约。在以太坊中,我们使用智能合约开发工具开发合约程序,并且编译为字节码,最终部署到以太坊的区块链账本中。部署后的智能合约是运行在虚拟机上的,称为“以太坊虚拟机”。正是通过这样的智能合约的实现,扩展了区块链系统的功能,同时我们也能看到,在以太坊中还是支持数字货币的,因此在应用工具中也是有钱包工具的。
3.区块链3.0架构
在区块链3.0的架构中,超越了对数字货币或者金融的应用范畴,而将区块链技术作为一种泛解决方案,可以在其他领域应用,比如行政管理、文化艺术、企业供应链、医疗健康、物联网、产权登记等,可以认为是面向行业应用。行业应用一般是需要具备企业级的属性的,比如身份认证、许可授权、加密传输等,并且对数据的处理性能也会有要求。因此企业级场景下的应用,往往都是联盟链或者私有链。在3.0架构中,数字货币不再是一个必选组件了,当然如果需要,我们也是可以通过智能合约的方式来实现数字货币的。与之前的架构相比,最大的特点就是增加了一个网关控制,实际上就是增加了对安全保密的需求支持,并且通过数据审计加强对数据的可靠性管理。在3.0架构中,实际上可以看成是一套框架,通过对框架的配置和二次开发可以适应各行各业的需求。
区块链技术,为我们解决信任和价值传递问题提供了一个新颖而实用的思路方案。随着人们对区块链技术的认识加深,大家终将意识到,与其说区块链是一种技术,不如说这是一类思想,它代表了一种价值观,公正透明、信任协作的价值观,我们将沿着历史发展的路线,从最初处于灰色地带的虚拟货币,走到智能合约,再走向更有前景的可编程的信任社会。
欢迎朋友们关注、评论、转发。如商业转载或其它,请联系:keji5u(科技无忧订阅号)