区块链入门学习(1)——概念
区块链(Blockchain)是近年来的大热门,最近开始学习区块链,以及主流平台以太坊的一些内容,不得不说对于小白而言,内容概念确实多,且杂。以此记来梳理一下知识点,分享一下经验内容。
一、区块链的实质
区块链,第一反映联想到前段日子疯涨的比特币。没错,比特币是依赖于区块链底层框架,是一种数字货币,早在2009年,比特币系统开始运行,并且为没有中心机构运维下,运行了9年多的时间,它依赖于加密和共识算法。
而区块链的本质就是一个去中心化的的数据库,结合分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,说白了,就是一个分布式账本。具有以下特点:
- 它是一个链式的数据库,每个区块打包了一段时间内的交易信息,通过共识算法以更新数据信息。通过哈希(hash)值与上一个区块相关联。
- 采用共识算法更新、生成数据,保证了信任与交易安全,取代了传统第三方中介机构。
- 与密码学高度关联,采用非对称加密的方式,使用数字签名技术保证交易安全。
二、区块链中的核心概念
- 非对称加密:通过同一个密匙进行加密解密,称之为对称加密。顾名思义,非对称加密就是有两把密匙进行加密与解密,其中一把称为私有密匙(Private key),另一把称为共有密匙(Public key),密匙是成对出现的。举个例子:A通过B的公有密匙将信息进行打包,B要获取信息,必须通过B的私有密匙进行解密,然后获得信息,而别人并不知道B的私有密匙,无从获得信息。非对称加密的保密性较好。
- 区块:区块包含区块头与区块体两部分。区块头包含了上一区块打哈希值、Merkle树等信息,而区块体内包含该区块内所有的交易信息。区别一个区块可以通过区块的哈希值。所谓哈希值,就是一种数字指纹,将信息提取并打乱随机生成打,常用的哈希算法有SHA1、SHA2、SHA256等(1,2,256表示哈希值位数),区块中采用SHA256算法。Merkle树,是一棵二叉树,通过有效的存储,递归访问的手段,对两个节点进行哈希运算,将运算的哈希值叠加,再进行哈希运算,直至剩余一个哈希值,称为Merkle树的根,便是区块头结构中的哈希值。
- 共识机制:通过该机制,可以使得区块链这个去中心化的数据库中,各个节点达成共识。例如比特币系统,采用一种工作量证明共识(Proof of Work,PoW)的机制保证了分布式账本的一致,简单打来讲,就是不断改变随机数,进行SHA256运算,求区块头的哈希值,这个过程,就是我们俗称的“挖矿”,做这件事的人,称为“矿工”。显而易见,这需要一定的算力,费时费力,但是存在一定的激励措施,例如,发现新的区块时,将奖励给矿工比特币(2018年,12.5个,每4年减半)。因此,一些人提出了多种共识机制,如股权证明机制(PoS)等。
- 智能合约:做个简单的设问,室友A跟室友B打赌,说明天高数课不上,赌金10元,如果真不上,B给A10元,否则A给B10元。但是A对B的人品很是不屑,超级嫌弃,但是都赌了,每办法悔约。但是另一方面呢,B对A的为人也嫌弃的不行。于是,他们自作聪明的各出10元,把钱交给了室友C。若高数课不上,那么C把20给A,不然给B。那么愉快的结局可能将是C卷着20块钱跑了。从上面的例子中,可以看出AB之间迫切需要一个公正,双方都认可的事物,去执行将要完成的操作,这就是智能合约。它允许在所谓没有第三方的情况下进行交易。
三、区块链的平台
比特币并不是区块链的全部,它是PoW共识机制,任何人可以加入,是公有链(区块链可以按公有链,联盟链,私有链),但是它不支持智能合约,可以支持一些脚本来进行编程操作。
以太坊(Ethereum)是区块链的一个开发平台,是一个开源的有智能合约功能的公共区块链平台。通过其专用以太币(Ether)提供的虚拟机来处理点对点的合约。它提供一些界面,降低了开发难度。在接下去打学习中,将围绕以太坊展开,主要有Meteor、Truffle、Remix-IDE等内容。
Hyperledger Fabric是 The Linux Foundation主办的 Hyperledger项目之一。Hyperledger Fabric 旨在作为开发模块化体系结构的区块链应用程序的基础,以便诸如共识和会员服务等组件可以即插即用。它使用容器技术来托管构成系统应用逻辑的智能合约(也称为链代码)。该架构将交易处理分为 3 个阶段:分布式逻辑处理和协商(“链代码”)、交易订购,以及交易验证和提交。这种分离提供了一些优势:不同节点类型之间需要的信任和验证水平更低,网络可伸缩性和性能得到了优化。采用PBFT(实用拜占庭容错算法)共识机制。(目前对这块还是一点都没步入。。有待学习)
除此之外,未来币、瑞波等平台。
下面的学习将围绕“以太坊”展开,主要射击环境搭建、私有链搭建、合约部署等内容,若上文有错,欢迎指正。