其他分享
首页 > 其他分享> > 币图网_教你必须了解的智能合约,共识机制,分布式存储以及密码学

币图网_教你必须了解的智能合约,共识机制,分布式存储以及密码学

作者:互联网

智能合约:A向B借钱不还,欠条等于合约。而将这张欠条公布于天下让所有人都知道的合约这就是智能合约。(法律在第一时间应该保护的是谁,应该为难的又是谁)智能合约就是先前设定好的代码数字协议,在不可更改且公共监督的情况下去运行一个合约,违反合约的一方将付出事先设定好的代价,也就是a会自动扣除违约金信用度维护了b的权益(本该法律为我们提供的保障)当法律不再成为有钱有势就可以任性的工具。智能合约的今天,他或许只是一个概念技术,但它正在向我们生活悄悄靠近,跟我已阅读并遵守,希望将来智能合约能站在人民的一边。

尼克•萨博关于智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一。 如果说区块链1.0是以比特币为代表,解决了货币和支付手段的去中心化问题,那么区块链2.0就是更宏观的对整个市场去中心化,利用区块链技术来转换许多不同的数字资产而不仅仅是比特币,通过转让来创建不同资产的价值。区块链技术的去中心化账本功能可以被用来创建、确认、转移各种不同类型的资产及合约。几乎所有类型的金融交易都可以被改造成在区块链上使用,包括股票、私募股权、众筹、债券和其他类型的金融衍生品如期货、期权等。 智能合约看上去就是一段计算机执行程序,满足可准确自动执行即可,那么为什么用传统的技术为何很难实现,而需要区块链技术等新技术呢?传统技术即使通过软件限制、性能优化等方法,也无法同时实现区块链的特性:1是数据无法删除、修改,只能新增,保证了历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被永远记录;2是去中心化,避免了中心化因素的影响。 基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可攥改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。 智能合约工作原理 基于区块链的智能合约包括事务处理和保存的机制,以及一个完备的状态机,用于接受和处理各种智能合约;并且事务的保存和状态处理都在区块链上完成。事务主要包含需要发送的数据;而事件则是对这些数据的描述信息。事务及事件信息传入智能合约后,合约资源集合中的资源状态会被更新,进而触发智能合约进行状态机判断。如果自动状态机中某个或某几个动作的触发条件满足,则由状态机根据预设信息选择合约动作自动执行。 智能合约系统根据事件描述信息中包含的触发条件,当触发条件满足时,从智能合约自动发出预设的数据资源,以及包括触发条件的事件;整个智能合约系统的核心就在于智能合约以事务和事件的方式经过智能合约模块的处理,出去还是一组事务和事件;智能合约只是一个事务处理模块和状态机构成的系统,它不产生智能合约,也不会修改智能合约;它的存在只是为了让一组复杂的、带有触发条件的数字化承诺能够按照参与者的意志,正确执行。 基于区块链的智能合约构建及执行分为如下几步: 1、多方用户共同参与制定一份智能合约; 2、合约通过P2P网络扩散并存入区块链; 3、区块链构建的智能合约自动执行。 下面详细描述步骤1“多方用户共同参与制定一份智能合约”的过程,包括如下步骤: (1)首先用户必须先注册成为区块链的用户,区块链返回给用户一对公钥和私钥;公钥做为用户在区块链上的账户地址,私钥做为操作该账户的唯一钥匙。 (2)两个以两个以上的用户根据需要,共同商定了一份承诺,承诺中包含了双方的权利和义务;这些权利和义务以电子化的方式,编程机器语言;参与者分别用各自私钥进行签名;以确保合约的有效性。 (3)签名后的智能合约,将会根据其中的承诺内容,传入区块链网络中。 下面详细描述步骤2“合约通过P2P网络扩散并存入区块链”的过程,包括如下步骤: (1)合约通过P2P的方式在区块链全网中扩散,每个节点都会收到一份;区块链中的验证节点会将收到的合约先保存到内存中,等待新一轮的共识时间,触发对该份合约的共识和处理。 (2)共识时间到了,验证节点会把最近一段时间内保存的所有合约,一起打包成一个合约集合(set),并算出这个合约集合的Hash值,最后将这个合约集合的Hash值组装成一个区块结构,扩散到全网;其它验证节点收到这个区块结构后,会把里面包含的合约集合的Hash取出来,与自己保存的合约集合进行比较;同时发送一份自己认可的合约集合给其它的验证节点;通过这种多轮的发送和比较;所有的验证节点最终在规定的时间内对最新的合约集合达成一致。 (3)最新达成的合约集合会以区块的形式扩散到全网,如下图所示,每个区块包含以下信息:当前区块的Hash值、前一区块的Hash值、达成共识时的时间戳、以及其它描述信息;同时区块链最重要的信息是带有一组已经达成共识的合约集;收到合约集的节点,都会对每条合约进行验证,验证通过的合约才回最终写入区块链中,验证的内容主要是合约参与者的私钥签名是否与账户匹配。

图2 合约区块链示意图 下面是步骤3“区块链构建的智能合约自动执行”的过程,包括如下步骤: (1)智能合约会定期检查自动机状态,逐条遍历每个合约内包含的状态机、事务以及触发条件;将条件满足的事务推送到待验证的队列中,等待共识;未满足触发条件的事务将继续存放在区块链上。 (2)进入最新轮验证的事务,会扩散到每一个验证节点,与普通区块链交易或事务一样,验证节点首先进行签名验证,确保事务的有效性;验证通过的事务会进入待共识集合,等大多数验证节点达成共识后,事务会成功执行并通知用户。 (3)事务执行成功后,智能合约自带的状态机会判断所属合约的状态,当合约包括的所有事务都顺序执行完后,状态机会将合约的状态标记为完成,并从最新的区块中移除该合约;反之将标记为进行中,继续保存在最新的区块中等待下一轮处理,直到处理完毕;整个事务和状态的处理都由区块链底层内置的智能合约系统自动完成,全程透明、不可攥改。

区块链是一种去中心化的分布式账本,可以简单理解为分布在全球各个节点的分布式数据库,数据库由区块按时间顺序相连而成,区块中记录的是数笔交易。

为了能支持这一套系统的运行,需要各节点矿工的参与,他们参与的主要原因是因为有奖励,奖励可以去交易所换成钱,他们这样参与的过程类似于挖矿,所以被成为“矿工”。

 

矿工在什么样的规则下才会得到奖励,这样的规则在区块链中叫共识机制。以下是几种常见的共识机制。

POW:Proof of Work,工作量证明。按劳分配,谁工作量多,谁拿的多。体现在谁的挖矿设备CPU、GPU等更牛逼。缺点就是太费电了,还污染环境。

POS:Proof of Stake,股权证明。按照持有此币的数量比例以及持有的时间,来进行发放利息,跟把钱存银行是类似的。优点是节能,不需要挖矿了。

POW+POS:把这两种机制进行结合。

DPOS:Delegated Proof of Stake,授权股权证明。持有币的人可以进行投票选举,选举出一些节点做为代表来记账,类似于全国人名代表大会制度。

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法。链上所有人参与投票,结果按照拜占庭共识算法来处理。数学上有一个很有名的问题叫拜占庭将军问题,很有意思,大家可以度娘。

POI:Proof of Importance,重要性证明。使用账户重要性评分来分配记账权的概率。

POP:Proof of Participation,参与度证明。结合了DPOS与POI的思想

共识机制是什么?首先,我们要知道共识机制对于区块链来说是必不可少的,因为在区块链技术中共识机制可以通过一种特殊的节点来进行投票,并在非常短的时间内去完成交易的验证和确认。毫不夸张的说区块链建立在共识这个基础上,机制就是区块链的核心。区块链作为一个新兴产物,它们的“共识机制”也在不停的更迭,这种历程和CPU架构的升级非常相似。当然通过只字片语还是无法深入了解其真正的意思,那么今天聚链网小编就带大家好好深入了解下共识机制是什么?

 

 

 

通俗来讲共识机制

“共识算法“在一套区块链系统里面起到的作用,非常类似于CPU架构在电子设备中的核心“组件”,一个升级版的架构往往能使电脑的流畅度提升质的飞越。区块链作为一个新兴产物,它们的共识机制也在时刻不停的更迭,这种历程和CPU架构的升级非常相似。如果说共识是区块链的基础,那共识机制就是区块链的灵魂。我们在解释什么是区块链时,可以用一句简洁明了的去中心化分布式分类账来概括,但是在这个账本中,是如何对在几乎相同时间内的产生的事物前后排序的,就涉及到区块链网络的共识机制。所以共识机制,就是在一个时间段内对事物的前后顺序达成共识的一种算法。

 

共识机制的作用

我们都知道区块链是去中心化的,基于分布式账本技术,每个人都可以自由地加入进来,成为其中的一个节点。但想一想,绝对的自由,必然会带来绝对的混乱,如果每个人都自由地在网络中处理数据,整个网络就很容易发生分歧,产生混乱。试想以下,如果在混乱的场景下,节点之间相互不认识,又没有一个中心化的权威机构来做担保,大家彼此如何确定对方节点处理的数据没问题?

所以说,在去中心化的环境下,没有一个比较中心化的节点能做决策,协助网络运行,网络就很难在自由的环境下,自主运行。为了解决这个问题,中本聪就想了个办法:虽然整个网络中没有一个中心化的节点能做决策,但是我可以设立一套规则,让这个规则成为一个中心化的机制,每个节点必须遵守,帮助网络自主运行,就好比法律约束社会的每个人一样。

这个规则内容要包含两点,第一是解决分布式账本中,每个节点怎么记账的问题;第二是解决不同节点间,如何交换信息、达成共识的问题。具体是依赖某种方式,确定谁取得区块链中的记账权,谁取得了记账权,整个网络就用谁处理好的数据,并且这个人还可以获取打包区块的奖励,此外,谁如果意图危害网络,也会获得一定的惩罚。

这样就能在一个没有中心化节点存在的情况下,既能让每个节点比较统一地做一件事,又能保证每个节点的小数据库之间数据一致。从而令分布式网络,比较有序地去运行。总的来说,共识机制就是一种制度,能够约束去中心化网络中的每一个分散的节点,维护系统的运作顺序与公平性,使每一个互不相干的节点能够验证、确认网络中的数据,进而产生信任,达成共识。如果把区块链当成一个社会,那么共识机制就是这个世界中的法律,人人都得遵守,不仅解决了信任的问题,更维护着整个区块链社会的正常运行。

 

共识机制的目标

一致性:所有诚实节点所保存的区块链前缀部分完全相同。

有效性:由诚实节点发布的消息终将被所有其他诚实节点记录到自己的区块链中。

共识机制的利弊

安全性:能否有效防止二次支付,私自挖矿

扩展性:当系统成员和待确认交易数量增加时,所带来的系统负载和网络通信量的变化,通常以网络吞吐量来衡量

性能效率:每秒可以处理的交易数量

资源消耗:达成共识过程中,所要消耗的CPU、内存等计算资源

可以从两方面来理解分布式存储:用户侧和实现侧。因为在软件领域有个经典的拆解问题的角度:接口和实现分离。 从用户侧来说,单个应用的数据越来越多,廉价商用单机存储难以满足需求。不断增大单机存储容量是一种思路,但是成本会成倍上升,而且总有上限。另一种思路就是集合很多机器对外提供服务。最传统的接口是文件系统和数据库,但其接口都较为复杂,因此一开始分布式存储都寻求简化接口,以将精力放在解决分布式系统的问题上。比如裁剪的文件系统 GFS,比如对象存储S3。随着分布式系统实践越来越多,可以支持更复杂的接口实现,最近趋势是提供更丰富的接口以满足不同场景需求,比如满足缓存的kv,满足通用需求的分布式文件系统,满足关系存储的 NewSQL。 从实现侧来说,数据如何分散到多机上去?最基本的分布式解决办法是将数据分片(partition),使得一个分片能被任何单机存下。当然在实现中,分片一般会更小。随着数据越来越多,分片会越来越多,需要的机器也就越来越多。但硬件有良品率和老化问题,概率虽然不大,但在大机器量的情况下就会成为问题。为了保障数据不丢,需要将每个分片做冗余处理,包括EC编码(纠删码)和多副本(replication)。多副本数据如何做同步,这又会引出分布式系统中经典的一致性问题。再展开就比较晦涩了,有兴趣可以探讨。 总结来说,从底层实现来看,分布式存储解决如何将数据存到多台机器上,并且提供可用性,可靠性和一致性等问题,近年来有很多实践经验,也慢慢沉淀出来了一些模式。以这些通用实现为底座,可以包装出不同的用户接口,比如文件系统,关系型数据库,对象存储等等。

。这个很正常,需求大。开发人员缺少信息安全常识,很容易犯错,比如SQL注入漏洞、密码明文存储等。20%的人在研究密码学。密码圈子很小,这个圈子里的顶级科学家甚至不超过100个。剩下的10%就是更细分的小众领域,比如二进制

网络攻防门槛较低,不需要懂太多的数学,只需要懂点代码,就可以入门了,这行是个体力活,打比赛经验越多,能力越强。网络攻防的天花板,取决于你的理论水平,你必须不断学习前沿的东西,看懂越来越复杂的代码。而密码学,门槛太高,太高。首先,需要一定的英语水平,中文教材不堪入目,太过简单;其次,必须要有扎实的数学基础(线性代数、信息安全数学基础、数论、近世代数等),才可以看懂那些厉害的理论类文章;普通的数学水平,比如我现在的状态,只停留在密码应用层面,前路漫漫。最后,密码学不像网络攻防网上有很多资源可以学习,能把密码学搞清楚的人很少,能把密码学讲清楚的人更少,如果没有一个好的老师,很容易被劝退。密码学天花板也很容易摸到,因为大多数人足够平庸,只有少数人可以破解现在流行的算法,少数人可以发明创造基础理论。

做信安的人是躲不开密码学的。因为只要和安全相关,就很可能要涉及到密码学。密码学是信息安全专业的核心基础支撑,贯穿全部。所以密码学也是所有信息安全专业的必修课。

 

二、密码学是什么

密码学,听起来就很牛掰。说到密码学,大家可能第一反应是自己的QQ密码、支付宝密码。再想想,可能会想到电影里面常见的摩斯密码,滴答滴答嘀嘀嘀......其实没毛病,第一种密码,其实是用来做身份认证的,识别这个账号属于你。第二种密码,就是最简单的一种密码算法。即输入明文,加密,生成密文,传输密文,接收方解密,得到明文。

如今密码学已经融入我们生活的方方面面。现在信息时代,我和你之间的交互,不再是面对面的真人交互。那么,一个最简单的问题,就是我如何知道和我聊天的人是你。电子支付转账,我如何确认我转账过去的这个账号ID是你的。当我们把真实世界移到网络上的虚拟世界,就会产生无数的需要密码来解决的问题。而这些问题也是最近这些年才出现的。所以我们主要学的,是"现代密码学",也就不到50年的历史,甚至主流的也就20年的历史。

密码学解决什么问题呢?先了解一个概念:信息安全三要素(CIA)

可以说,密码学就是用来解决这些问题的。举个例子方便大家理解。 机密性,你我之间的聊天内容,不应该被别人看到。完整性,我转账给你100块,不应该被篡改为200块。可用性,双十一那天晚上,我应该可以正常的购物。除了上述这三点外,还有很多密码理论上的安全性质,比如:

不可否认性(不可抵赖性),我说过的话不能反悔说不是我说的。

前向安全性,现在的密码泄露了,不可以解密之前的密文。

后向安全性,现在的密码泄露了,不可以解密我之后生成的新密文。

计算安全性,我的密码,就算坏人一个个得尝试,在现有计算机的能力下,不能在有限时间内计算出来。

标签:密码学,图网,智能,共识,区块,合约,节点,分布式
来源: https://blog.csdn.net/bituwang/article/details/117899894