区块链磨链(mochain)社区分享我爱编程

区块链导航-入门区块链

2018-05-25  本文已影响830人  磨链社区

区块链导航系列-入门区块链

磨链(mochain)区块链技术社区整理(投河自尽的鱼)

区块链导航也是一个入门区块链的入门学习路线。下图是一个区块链相关内容的整理分享,内容还是比较繁琐,当然在学习区块链的过程中并不需要那么复杂。钻研琢磨某些方面可能对这个学习过程更为深刻。 

所有内容不需要科学上网,当然通过科学上网能获取更多信息,这里暂时只收录了不通过科学上网能获取的内容

磨链社区-区块链导航目录:

区块链技术组成相关概念

摘要

区块链(blockchain)技术目前最为火热的计算机技术之一,区块链技术是相关成熟技术的一个结合。其包括了密码学算法、P2P网络技术、分布式架构、共识机制等方面,同时区块链应用则横跨了多类学科:计算机软件、计算机网络、密码算法、信息安全、经济学、博弈学等。大致介绍下区块链一些基础相关内容和一些目前区块链行业内一些专用术语。

概念

区块链技术组成,密码学算法、分布式系统、共识机制、P2P网络等。首先来理清这几个模块之间的关系。如下图: 

区块链技术起源于比特币,在比特币出现后,人们发现比特币的底层技术架构,是结合之前技术后一种全新的架构,在这种架构下,通过密码学算法保证身份、签名、交易安全。数据通过共识机制写入,实现了数据不可篡改,透明可追溯。并且结合P2P网络架构,实现了一种去中介化的,每个节点保存一份数据,每个节点参与维护数据,且不依赖中心服务器的达成系统状态一致。

密码学

密码经常能够听到,密码学应用也极为广泛,简述密码学发展的三个阶段:

古典密码学:古典密码学诞生至少有两三千年的历史了,这个阶段核心思想为:置换(permutation)。斯巴达人的塞塔式密码:把一个长条羊皮螺旋地斜着绕在一个多棱棒上,然后水平方向从左到右写字,写一个字绕一圈。这长条羊皮拿下来看上去杂乱无章的,但是加上同尺寸的多棱棒就能看到准确的信息了。之后又出现了一种古老的对称加密算法,凯撒算法,这类算法的基本实现原理是通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文,这种加密方式一旦掌握足够密文可以通过逆推的方式得到加密规则。古典密码学针对字符,对字符本身不做修改,通过位置的改变或者替换来隐藏信息,这种加密方式比较简单,主要通过工作或者机械的操作来加解密,一旦掌握了解密工具或者找到解密规律,信息马上就被破解了,整体安全性不高。

现代密码学:1948年10月香农Shannon(信息论之父)的信息论诞生,信息论将信息的传递作为一种统计现象来考虑。同时这也标志着密码学进入了第二阶段,现代计算机科学和信息技术的发展,之前对复杂计算的密码可以通过计算机来完成,密码学成为了一门科学。加密算法一般通过密钥来加解密,信息通过密钥加密后明文通过二进制的方式传播,一般的理解,你的密钥越长就越难破解,但是这个时候你会发现你的密钥只有一把,而且别人要解密你的信息,你必须把密钥也给对方,这种方式称为“对称加密算法”。你的密钥很关键,怎么保存,怎么传输就会很头疼。当然后来演变出来的哈希算法、公钥密码学、其实都是以现代密码学为基础。

1976年后,公钥密码学出现,这个也可以称为非对称加密,和之前的对称加密最大的区别就是,加解密分别使用公钥(publickey)和私钥(privatekey),密钥以一对的方式出现。W.Diffie和M.Hellman发表的New Direction in Cryptography,提出了非对称密码体制的概念。非对称密码体制一般依据两类类数学问题:大整数分解问题和离散对数问题。

加密算法原理概述,数据加密:数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。 

那么根据数据加密的定义,我们会发现数据加密是需要一个解密过程中,那么有些算法在加密后变成密文,但是无法逆推的那种就不能被真正定义为加密算法。

区块链中涉及到的:私钥、公钥、钱包、助记词、hash算法、椭圆加密算法、SHA算法家族等都是以密码学算法为基础。这里特别提及一下merkle tree(梅克尔树)。

Merkle tree(梅克尔树),Merkle tree是数据结构中的一种树结构,可以是二叉树,也可以是多叉树,它和数据结构中树的特点几乎一致,和普通树不同的是:merkle tree上的叶节点存放hash计算后的hash值,非叶节点是其对应的子节点串联的字符串的hash值。假设hash0是上一层节点,hash0-0和发送0-1是下一层节点,那么hash0=hash0-0+hash0-1。中本聪在比特币系统中很巧妙地运用了merkle tree树,包括钱包SPV简单支付验证都以merkle tree为基础。以太坊也使用该模式来做区块链系统中的验证互联。Merkle tree以hash算法为基础,这里引入入一个hash root的概念,在区块链中有merkle hash root值。这个数据值就是拼凑在一起的hash值,通过hash root,我们可以通过事先获知hash root,然后结合hash list计算,逐步校验每一块的hash值并进行组合,组合值和hash root比较,一致就说明数据块是没有问题的,这种方式更好的运用在实际的网络数据传输中。原理如下图: 

共识机制

首先,共识机制在分布式系统中是无解的,为什么说是无解,众多的节点之间通信,必然存在网络自身不可靠的原因、主机故障原因、恶意操控等原因,故是无法保证实现完全的共识,这里不是笔者随便下的结论,Fischer, Lynch 和 Patterson三位在1985年就提出了一个FLP不可能原理:在网络可靠的前提下,任意节点失效,一个或者多个的最小化异步模型系统中,不可能存在一个解决一致性问题的确定性算法。这三位的论文后来获得了Dijkstra奖。这一理论已被可靠的论证过,所以不用再花大力气在异步分布式系统中去设计一个完全一致的共识算法。 

FLP说明在异步分布式系统中完全一致性是不可能的,但这是一个科学理论,应用到现实工程中,我们可以牺牲一些代价把不可能变成可能,这就是科学和工程的最大区别,就像你炒股吧,官方肯定会告诉你股市有风险,入市需谨慎,但你肯定认为在你高超的操作下还是能赚钱的。那在计算机工程领域中2000年 Eric Brewer在ACM 研讨会提出猜想,CAP猜想,CAP拆解后就是一致性(Consistency)所有节点上的数据时刻保持同步、可用性(Availablity)每个请求都能接受到一个响应不论响应成功或失败、分区容忍性(Partition)系统内部有消息失效的情况下仍能提供持续服务。如下图:

实际运用在工程环境下,适当取舍这三者,一致性、可用性和分区容错性三者无法在分布式系统中被同时满足,并且最多只能满足其中两个。这样就出现了以下三种情况:

CA without P:如果不要求P(不允许分区),则C(强一致性)和A(可用性)是可以保证的。但其实分区不是你想不想的问题,而是始终会存在,因此CA的系统更多的是允许分区后各子系统依然保持CA。Zookeeper为此类设计。 

CP without A:如果不要求A(可用),相当于每个请求都需要在Server之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式。MongoDB、Redis为此类设计。 

AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。CouchDB、cassandra为此类设计。 

那么在区块链中常见的共识机制有:pow、pos、dpos、pbft等,这里简单介绍下两种最为常见的共识机制,一种是比特币的POW机制,另一种是未来以太坊采用的POS机制。

POW(Proof of Work),工作量证明机制。我们最直观的理解就是,一份证明,这个证明确认你做了一定的工作量,类似于现代生活中一些检测考试,通过检测考试你就取得了一份证明,只不过这个证明是一个工作量的证明。 

工作量证明一开始是以工作量证明系统提出,这个概念来自Cynthia Dwork 和Moni Naor 1993年在学术论文中,是一种拒绝服务攻击和滥用服务的对策,要求发起者需要消耗一定量的计算机资源来进行计算。那么POW这个词汇在1999年 Markus Jakobsson 和Ari Juels的文章中正式提出。 

提到工作量证明,一般都会说到hash现金,亚当·贝克(Adam Back)在1997年发明的,用于抵抗邮件的拒绝服务攻击及垃圾邮件网关滥用。在比特币之前,哈希现金被用于垃圾邮件的过滤。哈希现金也被哈尔·芬尼以可重复使用的工作量证明(RPOW)的形式用于一种比特币之前的加密货币实验中。另外,戴伟的B-money、尼克·萨博的比特金(Bit-Gold)这些比特币的先行者,都是在哈希现金的框架下进行挖矿的。 

工作证明原理 

首先工作量证明需要客户端做一个有难度的工作且得出一个结果,这个结果公布后,验证的一方需要很快能进行验证。这是不对等的。比如我们在一个字符串后加一个随机数(nonce),对这个字符串进行SHA256计算,然后得到的结果用16进制来表示,我们要求这个计算后的16进制表示的初始几位为:0000,那么才能算通过了验证。这种规则就需要计算机去不断的尝试,当然你可以记得其中一些,但是这个概率毕竟是很小的。正常情况下需要不断的输出计算尝试,直到出现正确的要求结果。 

数学期望值,计算过程中会统计实际的计算次数,平均后得到的计算的次数,这个数学期望就是要求的“工作量”,当然这是一个符合数学统计学中的概率事件。 

比特币中的POW共识机制 

比特币的出现让人们开始了解到POW共识机制,在比特币中,把挖矿生成一个新的区块并把交易数据写入区块看做是一道 工作量证明的数学难题,那么这道题目中有四个重点: 

1.工作量证明函数:bitcoin中使用的就是SHA256算法,这个算法是输出256位的hash函数(本文不对hash函数和SHA265函数做具体说明)。目前还未出现针对SHA256算法的有效攻击方法,当然通过算法算法漏洞攻击这里不展开讨论。 

2.区块头:bitcoin中的一个区块由区块头和区块中包含的交易列表组成(大小为1M),这里简述下区块头的组成: 

区块头大小为80字节。 

4字节的版本号。 

32字节的上一个区块的散列值。 

32字节的Merkle Root Hash,体现区块头和区块中的交易的关系,区块中包含的交易列表,通过Merkle Tree算法生成Merkle Root Hash。 

4字节的当前的难度值。 

4字节的随机数(nonce)。 

3.难度值:difficulty,这是一个指标,不恒定。它最为关键的作用就是决定了bitcoin网络中,矿工需要经过多少次hash运算才能获得记账权生成区块,进而获得区块奖励(12.5bitcoin)。bitcoin中区块产生的平均速率是10分钟一个,每经过2016个区块后,节点按照公式:新难度值 = 旧难度值 * ( 过去2016个区块花费时长 / 20160 分钟 )调整难度值。控制区块的平均产生时间,如果产生区块速率比10分钟快,那么增加难度值,比10分钟慢就降低难度。 

4.目标值:target,目标值公式:目标值 = 最大目标值 / 难度值 

最大目标值是一个恒定值: 

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF。目标值的大小和难度值是一个反比的关系。在bitcoin中矿工计算出来的区块的hash值必须小于这个目标值。换个说法方便理解:工作量证明过程中不断尝试变换nonce进行SHA256的计算,那么尝试的目的是为了找到一个指定前面有一定数量000的值,这个时候前面要求的0越多,那么表示你的难度越大。 

(为什么0越多难度越大?你尝试下用不断扔一对骰子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6, 你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,假如目标降低为了2,那就难度可想而知。)

工作量证明过程 

整个工作量证明过程其实不复杂。 

生成币基交易coinbase。 

打包交易,组成一个交易列表。 

通过Merkle Tree算法生成Merkle Root Hash。 

组装区块头。 

区块头作为工作量证明的输入,不断变换nonce值,通过公式:SHA256(SHA256(Block_Header))双重SHA256计算。结果不断和当前网络的目标值进行比对,一旦发现小于了目标值(target),那么工作量证明完成。 

广播区块到网络中,网络中节点验证。 

验证后等待后续区块生成确认(一般6个)。

POS权益证明(proof of stake)。这个解释为股权证明,2012年sunny king首次提出了POS概念,POS不需要大量算力来维持网络安全,通过钱包相应权重来获取奖励。所谓POS股权证明,通俗解释依据你持有的数字货币的数量和持有时间,根据这个两个要素发放一个利息,这里的银行存款的概念很相似。这里需要引入一个币龄的概念,币龄根据你持有的币乘以持有时间来计算,一旦你发现了一个POS的区块,那么你的币龄就被清空。当你被清空了365币龄,你将获得0.05个币的利息,那么计算公式就是:数字货币量*持有时间/365=利息。Pos机制鼓励每个人去打开客户端钱包,根据上面对POS的解释,打开客户端钱包里才可能发现区块,那么就会获得利息,当然现在POS2.0的机制(下文会解释2.0)里,必须在线运行客户端钱包,才会按照你的数字货币持有量和运行客户端钱包时间分发利息,不停的有在线客户端钱包运行,这也就保障了整个系统网络的健壮和系统运行的保障了。昨天刚好有个朋友来问,在比特币系统中万一比特币挖完了,那么算力大大降低了,是不是就可能出现51%算力集中攻击。这个问题如果在POS机制中,就要求攻击者需要拥有51%的货币量,试想下,51%的货币量被控制,这个难度和这个环境的不可靠,应该也不会吸引到太多的人了。再对比下比特币,有些人认为比特币是不会膨胀的一个货币体系,因为他的数量的是确定的,但是有没有想过一个钱包丢失的问题,要深究的话,比特币是一个货币紧缩体系,总数一定,但是会有不确定丢失。POS的机制,那和比特币的POW机制相比,POS认为是一定程序上缩短了达成共识的时间,而且节省了资源,不像POW需要大量的算力。但是POS也有自己不可避免的缺点,单纯来说POW中,算力是基础,根据算力来决定你的话语权,但是控制算力目前来看,规模越大,越无法控制甚至垄断,相对来说比较公平。POS类似股票,持有货币量决定话语权,在一个公司内部,前期奋斗,后期可能作为决策者有大量的股份那就有决定权,数字货币环境不是单纯的一个公司那么简单,数字货币要求一个公正的环境,那么POS机制下,后来者明显处于了劣势,你前期持有币,那么你就可以不断的通过利息机制获得新币,这个过程对于先前就掌握了币的人不需要付出太多的成本,可以永久吃利息,那么这会造成一个买卖币的问题,掌握了一定数量币,而且一直增加,那么就没有太大的卖币的需求,而且你的话语权因为你掌握的币不会变,后来者不管如何努力,话语权还是处于劣势。技术角度来说,之前的文章中有对软分叉和硬分叉做过简单介绍,那么在POS机制中,一旦发生了硬分叉,这个问题就相当复杂了,因为持有货币的人在两条链上都有相同数量的货币,新的分叉也能获得利益,那么这个分叉就很大程序会被默许,这样的分叉一旦出现就会不断出现,整个系统就处于崩溃,缺乏约束健壮性。大多数都是采用POS+POW机制,例如点点币,黑币。POS2.0:这里再说下黑币,黑币的机制被称为POS2.0(上文有提过),这个概念是前5000个区块,使用纯POW机制,5001到10000使用POS和POW混合机制、10001之后采用纯POS机制。这种模式在前期完成开采和分配,然后再进入POS模式。以太坊在第四阶段会采用casper机制, Casper是一种基于保证金的经济激励共识协议(security-deposit based economic consensus protocol)。协议中的节点,作为“锁定保证金的验证人(bonded validators)”,必须先缴纳保证金(这一步叫做锁定保证金,"bonding")才可以参与出块和共识形成。Casper共识协议通过对这些保证金的直接控制来约束验证人的行为。具体来说就是,如果一个验证人作出了任何Casper认为“无效”的事情,他的保证金将被罚没,出块和参与共识的权利也会被取消。

P2P网络

P2P(peer to peer):这个peer中文翻译就是对等、对等者、伙伴、对端的意思。所以P2P网络一般叫做对等网络,其确切定义:网络中每个参与节点共享节点所拥有的一部分计算能力、存储能力、网络连接能力,这些能力或者称为共享资源通过网络提供的服务和内容,可被对等节点直接访问,访问过程中不需要再经过中间实体,所以每个节点既是资源和服务的使用者、又是整个资源和服务的提供者。P2P网络中各个节点都是出于一个对等的地位,没有主、从的区分,联系实际环境,你目前在操作的一台电脑终端既可以作为服务器。又可以作为终端去获取对等节点的资源。整个网络中不存在中心节点,每个节点都可对任意对等节点做出响应,提供资源,包括计算资源、存储资源等。 

P2P不是一个新的技术,早在2000年该模型就已出现,他于传统的客户端/服务器(Client/Server)结构(也就是WWW所采用的结构方式)的一个本质区别是,整个网络结构中不存在中心节点(或中心服务器)。这和区块链的去中心化概念完全契合。 

P2P的理念,“我为人人、人人为我”让所有加入互联网的人,直接通过互联网交互,不需要一个中间商,这样沟通,共享,交互更加自由和方便,最终把互联网的权利交换给用户,而不是一些集中网络中心。 

用过BT下载的同学肯定印象很深刻,种子的多少很大程度上决定了你的下载速度,P2P网络的一大特点区别于传统网络架构中,网络中的资源和服务分散在所有节点上,信息的传输和服务的实现都直接在节点之间进行,可以无需中间环节和服务器的介入,避免了可能的瓶颈。P2P的非中心化基本特点,带来了其在可扩展性、健壮性等方面的优势。在P2P网络中,随着用户的加入,不仅服务的需求增加了,系统整体的资源和服务能力也在同步地扩充,始终能比较容易地满足用户的需要。理论上其可扩展性几乎可以认为是无限的。例如:在传统的通过FTP的文件下载方式中,当下载用户增加之后,下载速度会变得越来越慢,然而P2P网络正好相反,加入的用户越多,P2P网络中提供的资源就越多,下载的速度反而越快。P2P架构天生具有耐攻击、高容错的优点。由于服务是分散在各个节点之间进行的,部分节点或网络遭到破坏对其它部分的影响很小。P2P网络一般在部分节点失效时能够自动调整整体拓扑,保持其它节点的连通性。P2P网络通常都是以自组织的方式建立起来的,并允许节点自由地加入和离开。在P2P网络中,由于信息的传输分散在各节点之间进行而无需经过某个集中环节,用户的隐私信息被窃听和泄漏的可能性大大缩小。此外,目前解决Internet隐私问题主要采用中继转发的技术方法,从而将通信的参与者隐藏在众多的网络实体之中。在传统的一些匿名通信系统中,实现这一机制依赖于某些中继服务器节点。而在P2P中,所有参与者都可以提供中继转发的功能,因而大大提高了匿名通讯的灵活性和可靠性,能够为用户提供更好的隐私保护。 

以上这些P2P特点阅读后发现和区块链的特点有众多相似,区块链技术在前文中就提到他是前人各种技术结合后产生的一种新的架构,很好的结合了之前那些技术的特点,实现了多种组合后公共的优良性。 

在中心化拓扑中,网络主体由一个处于中心地位的索引目录服务器连接到目录服务器和各网络节点中。这种方式维护简单,资源发现率高,可实现复杂查询,但容易出现单点故障。 

那么分布式P2P网络拓扑包括:全分布式非结构化拓扑(Decentralized Unstructured Topology);全分布式结构化拓扑(Decentralized Structured Topology,也称作DHT网络) 

全分布式非结构化拓扑的P2P网络是在重叠网络(Overlay Network)采用了随机图的组织方式,结点度数服从Power-law规律,从而能够较快发现目的结点,面对网络的动态变化体现了较好的容错能力,因此具有较好的可用性。同时可以支持复杂查询。 

全分布式结构化拓扑的P2P网络主要是采用分布式散列表(Distributed Hash Table, 简写成DHT)技术来组织网络中的结点。DHT是一个由广域范围大量结点共同维护的巨大散列表。散列表被分割成不连续的块,每个结点被分配给一个属于自己的散列块,并成为这个散列块的管理者。通过加密散列函数,一个对象的名字或关键词被映射为128位或160位的散列值。分布式散列表起源于SDDS(Scalable Distribute Data Structures)研究,Gribble等实现了一个高度可扩展,容错的SDDS集群。DHT类结构能够自适应结点的动态加入/退出,有着良好的可扩展性、鲁棒性、结点ID分配的均匀性和自组织能力。由于重叠网络采用了确定性拓扑结构,DHT可以提供精确的发现。只要目的结点存在于网络中DHT总能发现它,发现的准确性得到了保证。 

半分布式拓扑(Partially Decentralized Topology)吸取了中心化结构和全分布式非结构化拓扑的优点,选择性能较高(处理、存储、带宽等方面性能)的结点作为超级结点(英文表达为SuperNodes或者Hubs),在各个超级结点上存储了系统中其他部分结点的信息,发现算法仅在超级结点之间转发,超级结点再将查询请求转发给适当的叶子结点。半分布式结构也是一个层次式结构,超级结点之间构成一个高速转发层,超级结点和所负责的普通结点构成若干层次。 

那区块链技术模型中,一般都认可有一个网络层,在这一层,通过P2P组网机制,数据传播和验证机制来保证,所以P2P网络是区块链的基础,也是组成区块链技术的重要一环。区块链系统建立在IP通信协议和分布式网络的基础上,不依赖传统的电路交换,而是建立与网络通信之上,完全通过互联网交易信息。网络中的节点对等,没有中心化和层级概念,每个节点都承担维护网络路由、验证数据区块的功能。

智能合约

智能合约:智能合约是一种计算机协议,在以太坊中最重要的应用就是设计和部署只能合约。智能合约最早在1995年由计算机学者尼克·萨博(nick szabo)提出,当时他的理念是:智能合约是一套以数字形式定义的承诺(promises),包括合约参与方在内都可以在上面执行承诺的协议。这一套理论的目标是为了能够让智能合约满足普通合约的约束条件,最小化恶意或者意外发生的可能性,同时减小对信任中介的需求,这样一来也就能降低造成合约欺诈的损失和仲裁执行的成本以及其他一系列交易成本。Nick szabo希望借助计算机和密码学的约束,改进传统合同的制定和履行,将所有合约条款和约定执行置于计算机协议的掌控之下,但是在区块链技术未出现之前,这一套理论仅仅是理论,很少有真正在实践中尝试。

传统抵押贷款和贷款抵押智能合约(来源于2016年底发布智能合约白皮书)智能合约可以通过自动连接各方来完成抵押合同的执行,从而提供流畅且不易出错的体验。智能合约可以在贷款支付时自动处理付款并从土地记录中释放。

智能合同一直未被推广,是因为缺少一个可支持变成合约的系统,区块链的出现,因为其去中心、不可篡改、信息可追踪、信息透明等特点,使得智能合约找到了一个合适自己的平台,所以现在智能合约被认为是区块链技术中重要一块。特别是目前提出的区块链2.0技术,甚至用智能合约来作为明确的界限。

区块链技术其中一个目的是为了建立一个去信任化系统,信任在互联网中是什么概念,信任就是点对点的链接,这个链接存在于数字空间中(计算机底层不就是01010101),这个空间是分布式的,没有所谓的中心化,信任关系通过算法转变成为代码,代码转换为程序,程序驱动执行每一步。互相间的信任就是事先约定协议通过计算机和算法来实现控制。智能合约的信任在区块链环境中刚好能完美实现。

智能合约的法律意义:提到合约,不可避免的会牵扯到法律条文,智能合约使用的编程语言,不是法律条文,在区块链上智能合同可以理解:code is law。合约的主体是计算机网络中每一个拥有数字身份的甲方和乙方、合约的条款就是代码上规定的双方的权利和义务(代码上的规则指定可参考法律的约束性),执行条款时,合约代码判断是否符合、是否违规、是否作废,这个判决过程完全由代码来控制。所以智能合约没有法律上的明确条文约定,一些都是制定代码时的协议,故法律上的有效性这个问题还需要等待。

智能合约执行过程: 

首先说下智能合同的四个核心概念: 

数字身份,在区块链环境中不像现实社会每个人有身份证,每个企业有营业执照,那么区块链中的数字身份就类似你的个人信息,有个身份才能构建合约的主体。 

数字资产,这个不难理解,身份对应资产,智能合约中没有现实中心化机构来验证资产,那么你有房产要做抵押贷款,就要把这个房产作为数字资产登记到你的数字身份下并锁定。 

合约仲裁平台,这个就类似于现实中的仲裁机构(法庭),虽然区块链目的是一个去中心化的系统,但是在目前以太坊中的仲裁平台,个人理解为代码执行虚拟机类似以太坊中的EVM,区块链中的合约仲裁平台作用就是发现智能合同,并在参与合约双方的平台上安装这个合约,并执行这个智能合约。 

数字资产托管,智能合约用于保管数字资产。

开始执行后分为以下几步: 

1.各个合约参与方共同来制定一份之前协商好的智能合约。 

1.1.每个参与方需要先加入区块链,生成一个数字身份,以及一对公私钥,公钥加工后成为数字身份地址,私钥就好好保存。 

1.2.有数字身份后参与合约者,互相商定好协议,明确权利和义务,当然这都是通过编程语言来实现,完成后各自用私钥签名(类似于在合同上的签字),然后分发到区块链网络中。 

2.双方约定合约后发布到区块链网络中,理论上每个节点都会收到,验证节点会把合约暂时保存起来,等下一个区块生成写入区块。 

3.通过区块链的共识机制,在一定时间内会有一些合约被一起打包,验证节点通过对区块链上HASH值的计算打包称为一个区块,并在网络中发布,其余节点收到区块验证HASH值,验证是一个多轮的环节,最终验证节点在规定时间内对新合约集合达成一致,形成区块(区块内有合约集合,对于每条合约都需要验证,验证通过的才能到区块中,验证主要是合约参与者的私钥和账户是否匹配)。 

4.智能合约自动执行 

4.1.智能合约会定时检查状态,遍历合约中的事务和触发条件,将满足的事务推送到验证队列中。 

4.2.待验证的事务发布上每个验证节点,首先对签名验证,保证事务的有效性,然后验证通过的进入共识集合,等到共识后,事务执行成功后通知用户。 

4.3.事务执行后,智能合约中的状态机制在判断合约状态、标记状态,如果合约执行完成则在区块中删除,如未完成等待下一轮处理。 

整个智能合同的执行是自动完成,不可篡改,完全透明化。 

(参考:区块链:从数字货币到信用社会) 

智能合约其中一种模型结构,其实智能合同的模型可以有自己随着应用场景的不同来稍作修改,但基本成熟结构还是遵循各白皮书和目前比较流行的几个区块链技术中的架构模型。 

智能合约白皮书中提到了12个应用场景:数字身份、记录、证券、贸易金融、衍生产品、财务数据记录、抵押、土地所有权记录、供应链、汽车保险、临床试验、癌症研究(促进癌症数据共享、促进患者同意管理过程和汇总数据贡献和数据共享,同时保护患者的隐私,这可能需要新形式的区块链技术来提供实时访问和数据保密性,期待这一块和临床试验一期实现)

常见区块链词汇解释

区块链:Blockchain,分布式存储、加密算法、共识机制、P2P传输等计算机技术结合的新型应用模式。

区块:Block,用于记录区块链系统中数据的存储。

链:chain,区块头中通过引用哈希值链接。

区块链服务:BAAS,blockchain as a service,区块链即服务。

分布式:Decentralized,不依赖中心服务器,分布的计算机资源进行计算处理的模式。

共识机制:consensus,区块链中事务达成的分布式共识算法。

P2P传输:peer-to-peer P2P,对等互联网网络技术。

加密算法:针对数据加密使其成为不可读的一段密文,通过密钥加解密。

哈希算法:将任意长度的二进制值映射为较短固定长度的二进制值的一种算法。

对称加密:加密解密使用同一密钥。

非对称加密:加解密通过公钥私钥,配对使用。

公有链:PublicBlockChains,公共网络中任何个人团体接入,任何节点均可参与共识过程。

联盟链:ConsortiumBlockChains,共识过程由预选节点控制,一般为各企业机构互联形成。

私有链:privateBlockChains,私有区块链,数据记录在单一组织机构中,分权限对外开放,一般是单一企业机构构建。

图灵完备:turing complete图灵完备是指计算机中一切计算的问题都可以计算,这样的虚拟机或者编程语言称为图灵完备。

智能合约:smart contract,部署在区块链系统中,一段合约代码,或一套以数字形式定义的承诺,包括合约参与方可以在其上执行承诺的协议。

匿名:unlinkability,中文解释为无关联性。

软分叉:当新共识规则发布后,没有升级的节点会因为不知道新共识规则下,而生产不合法的区块,就会产生临时性分叉。

硬分叉:区块链发生永久性分歧,在新共识规则发布后,部分没有升级的节点无法验证已经升级的节点生产的区块,产生硬分叉。

EVM:以太坊虚拟机。

POW:proof of work,工作量证明。

POS:proof of stake,权益证明。

DPOS:delegate proof of stake,股份授权证明。

PBFT:practical Byzantine fault tolerance,实用拜占庭容错。

ECC:椭圆加密算法,一种公钥加密算法。

SHA:secure hash algorithm,安全散列算法,NIST发布一系列密码散列函数。

SPV:Simplified Payment Verification,简单支付验证。

Merkle tree:梅克尔树,merkle tree是计算机数据结构中的一种树。

DAG:计算机数据结构中有向无环图。

DAPP:去中心化应用。

Double spending:双重支付,也称为“双花”。

BIP:bitcoin improvement proposals,bitcoin改进协议。

比特币-区块链的第一个应用

比特币是在2008年由署名Satoshi Nakamoto(中本聪或者中本哲也)发明的,他出版了一篇题为“Bitcoin:A Peer-to-Peer Electronic Cash System”的论文。

论文链接:https://wenku.baidu.com/view/c62c067cb307e87101f69642.html

Nakamoto结合了诸如b-money和HashCash等先前的发明,创建了一个完全去中心化的电子现金系统,它不依赖中央机构进行货币发行或结算和验证交易。使用分布式系统架构加工作量证明机制(POW)每平均10分钟通过工作量证明机制来计算随机数,竞争生成区块,交易数据打包区块中。实现分布式网络达成关于交易状态的共识。解决了双花问题,和传统解决双花问题需要中心化系统机构来解决解决不同,实现一种分布式的账本模式,bitcoin系统也被称为全网分布式数据库或者分布式统一账本。网络中每个节点都可选择保存一份全网数据副本。 

2009年区块链比特币网络出现,创世区块中的coinbase写下:“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks”,中本聪和比特币的奇迹开始于2009-01-03。创世区块如图: 

比特币区块相关信息查询:https://blockexplorer.com/

比特币单位数量:最小单位为“聪”,1聪=0.00000001比特币,1Satoshi = 0.00000001比特币,bitcoin发行总量为2100万个。

数字货币:完全虚拟,没有实体,一串字符串表示。

比特币:bitcoin也可理解为是一种协议,对P2P网络和分布式计算存储一种共识协议。

区块链定义

区块链是一系列技术结合的新应用模式,它包含了密码学、算法、分布式架构、P2P网络等一系列的技术,2009年中本聪创造了比特币,随着比特币的火热让人们逐渐认识和重视区块链。区块链被理解为去信任化“机器”,普遍认为它能实现互联网的价值传递,是新一代价值互联网架构的基石。目前对区块链技术的应用研究也层出不穷,比特币、莱特币等一系列的数字货币,以太坊、IBM的hyperledger、R3的corda,国内的chinaledger、金联盟等,各家都在积极探索区块链技术。 

区块链定义:网络中一种分布式架构系统,通过密码学、共识算法、P2P对等网络交互,实现网络中去信任化的方式全节点集体维护一致可靠分布式账本技术架构。换种通俗的说法,区块链就是网络中各个参与者,都有一份相同可靠的数据副本,数据的写入需要网络中节点达成一种共识,和之前传统化中心机构来记录数据不同,它不依赖中心来记录数据。从区块链定义来理解,区块链保证了网络中数据的可靠,不依赖中心认证保证了信任的传递,这是目前对区块链技术价值普遍的认为。根据这些特性设想了众多应用场景:金融支付清算、数字身份、物联网、供应链、艺术版权等。 

这里有三个误区解释下: 

区块链不是比特币,区块链是比特币底层技术架构,比特币是区块链的一个应用。两者不是同一个概念。 

区块链降低成本,区块链无中心机构认证,简化交易环节,可节省第三方中介认证的成本,但这不代表区块链技术是一种廉价的技术,在区块中写入保存数据需要成本,再者区块链技术整个开发设计过程不是之前山寨币那种模式,也是需要大量的成本的投入。 

区块链技术目前还在发展阶段,很多人都理解在技术发展前期,项目大多还是实验性质,不盲目因为区块链而去搭建区块链。在实验室中跑通了一段代码,不代表实际应用中可以真正应用,明知有缺陷的上线是对系统本身的不负责任。 

用一种普通人能明白的说法来解释区块链: 

在一个网络环境中,每个人拥有两把钥匙,一把用于交易传递给对方打开验证交易信息,一把自己保存用来加解密和账户的保护,每个人都有一本系统中的完整账本,每个人在系统中都是一个记账员,系统中发生了交易,需要记录,每个人都开始记账,然后系统来判定那个记账员做的最好,就把记录写入账本,随即更新后账本传递给每个人,每个人更新记录。这就是区块链。为什么在区块链中一直强调信任的问题,因为网络中互相之间交易,一般都是通过第三方中介权威机构来保证信用,区块链中不需要第三方机构来保证信任,每个人都可以自证,整个账本信息记录后不可更改,一直可被追溯。

区块链展望 

从区块链技术发展来看,首先是被普遍认为加密数字货币应用的区块链1.0,到现在结合智能合约的区块链2.0,甚至现在提及的区块链3.0(个人认为概念还是模糊的、没有明确的定义和划分)。区块链随着技术的发展不单单是加密数字货币,越来越多的现实生活应用场景结合智能合约可以很好的切合到现实中来,目前是一种理念和传统架构的颠覆需要经过一个长期的过程,区块链去中介的特性肯定对传统中介机构会有一定的冲击,现在随着区块链技术被越来越重视,各类传统行业巨头也都逐渐进入这个圈子来推广和钻研应用落地。相信随着侧链、跨链、闪电网络、隔离见证等各类区块链技术的发展和应用,区块链能实现的应用会越来越广,会出现一个革命性区块链应用来带动理念的转变,直至大规模应用实现。 

从区块链应用场景来看,公有链、联盟链、私有链。那么公有链现在众多,刚刚最新的公链评级: 

(来自工信部赛迪研究院) 

联盟链最为知名的超级账本项目,国内也有专业做联盟链服务平台的众多公司,普遍认为联盟链在机构和企业巨头的推动下会最先实现落地,而公有链则影响范围更大。随着技术的发展,结合应用场景,区块链技术必然会有良好的发展。

针对区块链导航-入门区块链图示:

区块链入门资料网络分享

区块链开发资料整理:

DAO-ONE :

区块链兄弟:

HiBlock:

孔壹学院:

因特链:

区块链日报:

磨链社区:

区块链100问:

谈国鹏 :

区块链基础博客:

深入浅出区块链:

汪晓明博客:

简书-风静縠纹平 :

猿链:

区块链资讯

巴比特:

金色财经:

火币资讯:

币乎:

币问:

区块链基础学习目录

区块链技术简介

分布式系统的概念

共识机制

密码学相关

P2P网络等区块链相关技术

区块链中的必须掌握的密码学基础

hash算法

merkle树

对称加密

非对称加密

椭圆加密算法

区块链中用到的加密算法SHA-256、RIMPED160、Base58

数字签名

区块链中的必须掌握的分布式概念

CAP原理

FLP原理

ACID原则

分布式系统中时间问题

分布式系列总结

区块链中的必须掌握的网络相关概念

中心化拓扑

全分布式非结构化拓扑

全分布式结构化拓扑

半分布式拓扑

区块链中的必须掌握的共识机制

POW机制

POS机制

DPOS机制

拜占庭问题

PAXOS

RAFT

Casper

小蚁共识

区块链常见词汇解释

区块链中常见词汇解释,中英文解释

公链、联盟链、私有链

分叉,软分叉、硬分叉

数字货币概念

明确区分数字货币的概念

区块链不等同于数字货币

区块链经济学

区块链经济学

区块链进阶技术

零知识证明

闪电网络、雷电网络

隔离见证

跨链

侧链

最新区块链技术

比特币相关网络分享

Bitcoin:A Peer-to-Peer Electronic Cash System

比特币:一种点对点电子现金系统

比特币是代码开源在github上,比特币采用C++编写,具体地址如下:

获取bitcoin代码

bitcoin社区

比特币社区-中文

bitcoin-wallet

bitcoin-wallet获取代码

bitcoin交易查询

Blockchain-info

BIP(比特币改进协议)

BIPs-github地址

在学习比特币过程中,《精通比特币》无疑是最好的一本入门书籍。下列了中英文两个版本地址。 

《Mastering Bitcoin》

《Mastering Bitcoin》

《精通比特币》第二版(中文)

《精通比特币》第二版-中文-巴比特读书

那么网络上一些比特币学习资料和相关网络分享如下:

区块链中文社区-比特币板块

详解比特币的原理和运行机制 视频讲解

区块链100问

巴比特-比特币

以太坊相关网络分享

以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(“以太虚拟机” Ethereum Virtual Machine)来处理点对点合约。 

以太坊官网:

以太坊代码github:

solidity开发文档:

Etherscan:

Remix :

Truffle :

Mist :

Parity:

Web3.js:

以太坊白皮书:

以太坊黄皮书(中文):

*

超级账本相关网络分享

超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,加入成员包括:荷兰银行(ABN AMRO)、埃森哲(Accenture)等十几个不同利益体,目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程。由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。

超级账本官网:

超级账本官方文档 :

超级账本中文文档 :

巴比特专栏 :

区块链技术指南:

Hyperledger Fabric 从零开始:

Hyperledger详解:

趣链科技技术团队:

孔壹学院:

区块链兄弟:

IBM Fabric系列微讲堂 :

超级账本白皮书:

github源码 :

Fabric源码分析 :

上一篇下一篇

猜你喜欢

热点阅读