区块链三将军攻城
① 如何用最简单的方式解读区块链
大家最近天天都能听到区块链这个词,那什么是区块链呢?“分布式、难以篡改、一致存储”等解释太技术化且较为干涩。我这里来通俗的科普下:区块链主要为了解决互不信任的个体之间的信任问题。
举个通俗的例子:话说老李和老王一个村,老李最近手头有点紧,想向老王借点钱。老王呢,担心借了老李后他赖账怎么办,于是找来“德高望重”的村长,不过想想,村长也不可信,以前村长还偷过别人家的地瓜啊!怎么办?
区块链的方法是:老王借了1000块钱给老李后,然后用大喇叭在村里大喊“我老王今天借了老李1000元钱,大家都赶紧记录下”,于是村里的所有人都记录在了自己家里的账本上,谨慎的保管了起来。这下可好,老李再也赖不过了,村里即便有不守信的人,那还是好人多呀,老李也不可能找村里全部的人偷偷抹掉自己的借钱记录的。就这样,区块链解决了互不信任的老王和老李之间的借钱的信任问题。
在没有出现区块链之前,我们是如何解决互不信任个体间的信任问题呢?简单啊,找两者都信任的“德高望重”的“见证人”就好了,例如故事里的村长,例如买卖双方之间的支付宝,例如公证处等等。不过可能这类“见证人”也不一定一直诚信下去,所以区块链干脆就让大家都作为见证人。
老王放心了,但老李头疼啊!老李要等村里人都记录好了才能拿到借给他的钱,谁家还没个大爷大妈手脚慢一些的。所以目前区块链距离应用还有一定的距离,效率问题需要得到大幅提升才可以。
回想一下,你平时是怎么和别人交易的:一件漂亮的衣服,你可以在实体店挑好,确认好了对方衣服质量不错,对方确认你的钱是真钱,那么我们面对面一手交钱一手拿货。
要是我们隔着十万八千里,彼此既不认识也不信任还是想交易呢?那就要有我们都信任的第三方了,也就是达成所谓的共识机制。比如:你可以在淘宝通过第三方见证担保完成交易,钱先给支付宝——支付宝收款让卖家发货——卖家发货——你确认收货——支付宝再把钱给卖家。
但是,倘若这个中心化的机构作恶了,马爸爸撕了账本,不承认你给了钱,或者和卖家联合起来骗你钱,那可怎么办?
又或者政府借了你一100万,最后用超发货币的方式还给你钱,100万缩水到1万,由你来承受通货膨胀的损失,你又怎么办?
有没有不被任何政府、组织机构控制,能公开透明的完成仲裁,记录了就不被篡改,没有跑路风险的第三方呢?
别着急,我们的主角区块链技术解决就是这样的问题——你们之间的交易可以被所有在这个区块链系统的人见证,大家的小账本里头都会记录你们的交易。B如果否认收了A的钱,或者A说自己借了300块钱,都会被路人甲乙丙丁质疑。具体是如何做到的呢?
1)系统给每个人都发了个小账本,让每个人都有记账的权利,咱们称之为分布式记账。
2)为了鼓励大家帮别人记账,系统代码设定将比特币这样的代币奖励给记账者,为了防止一堆人记账堵死,还将代币设为有限个,甲乙丙丁需要通过系统规定的机制进行计算,算的最快最好的才能获得记账的权利,记录之后通过系统广播给大家,所有人复制一份相同的账本,这个通过计算获得奖励的过程就叫挖矿,记账的路人甲乙丙丁就是矿工。
3)有一天,最初记录这笔交易的甲Game Over了,这个账本却还是存在在其他人的账本里,A和B谁想否认都不行。我们把通过代码写好了如何仲裁和分配,无需银行、政府、企业等中心化组织机构作为第三方见证(去中心化),直接点对点(P2P)交易的方式,称为去中心化。
4)系统把多个交易打包成区块,按时间顺序链接起来成为最后人手一本的账本,这就是区块链技术
其实把区块链简单理解为账本不过是最浅显的解读了,把它的每个特点拆分开来,所能应用的领域很多很多。
现在传统金融行业、券商、投资机构正在跑步入场,物联网, 游戏 ,储存,版权,防伪,征信,支付,预测市场(赌博之类)、社区等众多领域已经开始了区块链的 探索 应用。
互联网让万物皆可连,区块链能否让所连皆可信呢?
我用天地自然运化的奇石解读一下区块链:
所有科学、哲学、道义⋯⋯天地都包涵着。任何一个事物、任何一种文化都与天地道化有关。
区块链自然逃不脱天地运化法:即顺然、随然、无穷、无常。
它就是这块奇石,其表面整体上的数据运化,一是,整体向着无形无象。二是线点守着一个规律:即无常之道。就是说它们每条线,每个点,追求的都不是一个闭合的目标和一个局限的目的。这样说大家我好理解了:一个画家要画一只鸡,是有目的的,有终结相的,而奇石,大自然造化时,是没有终结相的。所以相不闭合,线、点数据也不终结。区块连接之技术,就是这个天运之道。无常运化无形无象,永无终结。(无中心化,就是无形无相,形式不封闭,结构不封闭,思想不封闭⋯⋯如“石”办事就行)。
山东曲阜孔子灵石馆
大家好,我是皮皮,我在这里用几个生活小例子给大家解读一下什么叫区块链?
去中心化,不可篡改级,分布式存贮的,以加密信息做链接地址的数据区块链接系统,叫区块链
这玩意本来就是许多高 科技 的复合品,没法简单,再简单也是一大段话,而且未必能说清楚
区块链(Blockchain)严格的定义是指通过基于密码学技术设计的共识机制方式,在对等网络中多个节点共同维护一个持续增长,由时间戳和有序记录数据块所构建的链式列表账本的分布式数据库技术。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。
区块链是一种类似于NoSQL(非关系型数据库)这样的技术解决方案统称,并不是某种特定技术,能够通过很多编程语言和架构来实现区块链技术。并且实现区块链的方式种类也有很多,目前常见的包括POW(Proof of Work,工作量证明),POS(Proof of Stake,权益证明),DPOS(Delegate Proof of Stake,股份授权证明机制)等。
区块链的概念首次在论文《比特币:一种点对点的电子现金系统(Bitcoin: A Peer-to-Peer Electronic Cash System)》中提出,作者为自称中本聪(Satoshi Nakamoto)的个人(或团体)。因此可以把比特币看成区块链的首个在金融支付领域中的应用。
【通俗解释】
无论多大的系统或者多小的网站,一般在它背后都有数据库。那么这个数据库由谁来维护?在一般情况下,谁负责运营这个网络或者系统,那么就由谁来进行维护。如果是微信数据库肯定是腾讯团队维护,淘宝的数据库就是阿里的团队在维护。大家一定认为这种方式是天经地义的,但是区块链技术却不是这样。
如果我们把数据库想象成是一个账本:比如支付宝就是很典型的账本,任何数据的改变就是记账型的。数据库的维护我们可以认为是很简单的记账方式。在区块链的世界也是这样,区块链系统中的每一个人都有机会参与记账。系统会在一段时间内,可能选择十秒钟内,也可能十分钟,选出这段时间记账最快最好的人,由这个人来记账,他会把这段时间数据库的变化和账本的变化记在一个区块(block)中,我们可以把这个区块想象成一页纸上,系统在确认记录正确后,会把过去账本的数据指纹链接(chain)这张纸上,然后把这张纸发给整个系统里面其他的所有人。然后周而复始,系统会寻找下一个记账又快又好的人,而系统中的其他所有人都会获得整个账本的副本。这也就意味着这个系统每一个人都有一模一样的账本,这种技术,我们就称之为区块链技术(Blockchain),也称为分布式账本技术。
由于每个人(计算机)都有一模一样的账本,并且每个人(计算机)都有着完全相等的权利,因此不会由于单个人(计算机)失去联系或宕机,而导致整个系统崩溃。既然有一模一样的账本,就意味着所有的数据都是公开透明的,每一个人可以看到每一个账户上到底有什么数字变化。它非常有趣的特性就是,其中的数据无法篡改。因为系统会自动比较,会认为相同数量最多的账本是真的账本,少部分和别人数量不一样的账本是虚假的账本。在这种情况下,任何人篡改自己的账本是没有任何意义的,因为除非你能够篡改整个系统里面大部分节点。如果整个系统节点只有五个、十个节点也许还容易做到,但是如果有上万个甚至上十万个,并且还分布在互联网上的任何角落,除非某个人能控制世界上大多数的电脑,否则不太可能篡改这样大型的区块链。
【要素】
结合区块链的定义,我们认为必须具有如下四点要素才能被称为公开区块链技术,如果只具有前3点要素,我们将认为其为私有区块链技术(私有链)。
1、点对点的对等网络(权力对等、物理点对点连接)
2、可验证的数据结构(可验证的PKC体系,不可篡改数据库)
3、分布式的共识机制(解决拜占庭将军问题,解决双重支付)
4、纳什均衡的博弈设计(合作是演化稳定的策略)
【特性】
结合定义区块链的定义,区块链会现实出四个主要的特性:去中心化(Decentralized)、去信任(Trustless)、集体维护(Collectively maintain)、可靠数据库(Reliable Database)。并且由四个特性会引申出另外2个特性:开源(Open Source)、隐私保护(Anonymity)。如果一个系统不具备这些特征,将不能视其为基于区块链技术的应用。
去中心化(Decentralized):整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,且任一节点的损坏或者失去都会不影响整个系统的运作。因此也可以认为区块链系统具有极好的健壮性。
去信任(Trustless):参与整个系统中的每个节点之间进行数据交换是无需互相信任的,整个系统的运作规则是公开透明的,所有的数据内容也是公开的,因此在系统指定的规则范围和时间范围内,节点之间是不能也无法欺骗其它节点。
集体维护(Collectively maintain):系统中的数据块由整个系统中所有具有维护功能的节点来共同维护的,而这些具有维护功能的节点是任何人都可以参与的。
可靠数据库(Reliable Database):整个系统将通过分数据库的形式,让每个参与节点都能获得一份完整数据库的拷贝。除非能够同时控制整个系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,也无法影响其他节点上的数据内容。因此参与系统中的节点越多和计算能力越强,该系统中的数据安全性越高。
开源(Open Source):由于整个系统的运作规则必须是公开透明的,所以对于程序而言,整个系统必定会是开源的。
隐私保护(Anonymity):由于节点和节点之间是无需互相信任的,因此节点和节点之间无需公开身份,在系统中的每个参与的节点的隐私都是受到保护的。
【区块链意义之一 :解决拜占庭将军问题】
区块链解决的核心问题不是“数字货币”,而是在信息不对称、不确定的环境下,如何建立满足经济活动赖以发生、发展的“信任”生态体系。而这个问题称之为“拜占庭将军问题”,也可称为“拜占庭容错”或者“两军问题”,这是一个分布式系统中进行信息机交互时面临的难题,即在整个网络中的任意节点都无法信任与之通信的对方时,如何能创建出共识基础来进行安全的信息交互而无需担心数据被篡改。区块链使用算法证明机制来保证整个网络的安全,借助它,整个系统中的所有节点能够在去信任的环境下自动安全的交换数据。更多介绍请参见《比特币与拜占庭将军问题》。
【区块链意义之二:实现跨国价值转移】
互联网诞生最初,最早核心解决的问题是信息制造和传输,我们可以通过互联网将信息快速生成并且复制到全世界每一个有着网络的角落,但是它尚始终不能解决价值转移和信用转移。这里所谓的价值转移是指,在网络中每个人都能够认可和确认的方式,将某一部分价值精确的从某一个地址转移到另一个地址,而且必须确保当价值转移后,原来的地址减少了被转移的部分,而新的地址增加了所转移的价值。这里说的价值可以是货币资产,也可以是某种实体资产或者虚拟资产(包括有价证券、金融衍生品等)。而这操作的结果必须获得所有参与方的认可,且其结果不能受到任何某一方的操纵。
在目前的互联网中也有各种各样的金融体系,也有许多政府银行提供或者第三方提供的支付系统,但是它还是依靠中心化的方案来解决。所谓中心化的方案,就是通过某个公司或者政府信用作为背书,将所有的价值转移计算放在一个中心服务器(集群)中,尽管所有的计算也是由程序自动完成,但是却必须信任这个中心化的人或者机构。事实上通过中心化的信用背书来解决,也只能将信用局限在一定的机构、地区或者国家的范围之内。由此可以看出,必须要解决的这个根本问题,那就是信用。所以价值转移的核心问题是跨国信用共识。
在如此纷繁复杂的全球体系中,要凭空建立一个全球性的信用共识体系是很难的,由于每个国家的政治、经济和文化情况不同,对于两个国家的企业和政府完全互信是几乎做不到的,这也就意味着无论是以个人抑或企业政府的信用进行背书,对于跨国之间的价值交换即使可以完成,也有着巨大的时间和经济成本。但是在漫长的人类 历史 中,无论每个国家的宗教、政治和文化是如何的不同,唯一能取得共识的是数学(基础科学)。因此,可以毫不夸张的说,数学(算法)是全球文明的最大公约数,也是全球人类获得最多共识的基础。如果我们以数学算法(程序)作为背书,所有的规则都建立一个公开透明的数学算法(程序)之上,能够让所有不同政治文化背景的人群获得共识。
【未来的发展】
互联网将使得全球之间的互动越来越紧密,伴随而来的就是巨大的信任鸿沟。目前现有的主流数据库技术架构都是私密且中心化的,在这个架构上是永远无法解决价值转移和互信问题。所以区块链技术有可能将成为下一代数据库架构。通过去中心化技术,将能够在大数据的基础上完成数学(算法)背书、全球互信这个巨大的进步。
区块链技术作为一种特定分布式存取数据技术,它通过网络中多个参与计算的节点开共同参与数据的计算和记录,并且互相验证其信息的有效性(防伪)。从这一点来,区块链技术也是一种特定的数据库技术。互联网刚刚进入大数据时代,但是从目前来看,大数据还处于非常基础的阶段。但是当进入到区块链数据库阶段,将进入到真正的强信任背书的大数据时代。这里面的所有数据都获得坚不可摧的质量,任何人都没有能力也没有必要去质疑。
也许我们现在正处在一个重大的转折点之上——和工业革命所带来的深刻变革几乎相同的重大转折的早期阶段。不仅仅是新技术指数级、数字化和组合式的进步与变革,更多的惊喜也许还会在我们前面。在未来的24个月里,这个星球所增长的计算机算力和记录的数据将会超过所有 历史 阶段的总和。在过去的24个月里,这个增值可能已经超过了1000倍。这些数字化的数据信息还在以比摩尔定律更快的速度增长。区块链技术将不仅仅应用在金融支付领域,而是将会扩展到目前所有应用范围,诸如去中心化的微博、微信、搜索、租房,甚至是打车软件都有可能会出现。因为区块链将可以让人类无地域限制的、去信任的方式来进行大规模协作。
区块链是一种技术,基于这项技术产生很多应用,包括与数据和信息相关的一切行业业务,比特币就是其中最为人熟知的一种应用。对于区块链的通俗解释就是,假如在网上买一只口红,首先找到心仪的产品和卖家下单,先把钱给中间平台,等到卖家发货买家确认收货以后,中间平台再把钱转给卖家,因为信任问题买卖家之间都依赖于中间平台,而区块链作为去中心化的分布式账本数据库,则着力于去掉这个中间平台但同时又解决信任问题。在区块链中每个人拥有自己的记账本,用来记录发生的每一件事,假如在交易中出现卖家拿钱不发货的行为,这一条记录将永久存在不可修改,不需要互相交换信息,区块链的世界会选择在同一个时间节点记录最快质量最好的那个人的记账本进行复制发送并串联,最后越叠越厚形成区块。
大家在谈论虚拟货币时,往往离不开区块链这个概念,那么区块链到底是个神马玩意呢?
区块链是一种底层技术,本质上是一个去中心化的分布式账本数据库。听起来好像十分高端,遥不可及,其实是很容易理解的。
举个例子,假如要在淘宝上购买商品,那么一般首先要做的就是打开淘宝,找到想要的商品并下单将钱支付给作为交易中介的淘宝。等收到商品并确认收货后淘宝便会将货款打给卖家。这本来只是我和卖家的交易,但却多了个“中心”,即淘宝。
在交易进行的过程中,这个“中心”拥有无限大的权力,甚至随意修改账单。因此,“中心”往往需要强大的后台为其背书。
于是,有一个名叫中本聪的男人想要干掉这个权力无穷大的中心,他想创造一个去中心化的系统,在这个系统里,每个人都是中心,都有记账的权力。于是,他创造了比特币。
在比特币的系统中,每个人都有一个小账本用以记录发生的每一笔交易。一笔交易只有经过大部分人确认后才有效。如果卖家不发货,那么每个人的小账本都会将这件事记录下来,让他无处可逃。
这时候大家可能会有疑问,既然只是一个公开的账本,那么为什么又要叫区块链呢?这就涉及到了共识问题,区块链系统是一个由众多“中心”组成的系统,整个区块链是属于所有参与记账的个体的。这时候就产生了新的问题,一个系统必须要有秩序才能长远的存在。假如记账者可以不计成本地胡作非为,那就可能出现本来只是购买一台手机,但收到的却是一台特斯拉的情况。
于是,中本聪发明了一种名为PoW的共识方式。这种方式提高了记账者记账的成本,让其不能轻易作恶。PoW通过密码学的方式要求记账者需要通过竞争计算能力来获取记账权,第一个计算出结果的记账者即可获得一个由若干笔交易打包而来的区块的记账权,同时获得一定的代币作为奖励。这就是我们俗称的“挖矿”。
既然记账者已经将一个包含了若干笔交易的区块记录了下来,那么系统就需要进行整理排序,不可能让无数的区块杂乱无章地分布在系统中。于是就需要把所有区块按照时间顺序首尾相连链接链接起来,这时,区块链便诞生了。区块链的核心是技术。
② 你知道区块链本质是什么吗比特币的原理又是什么
区块链发展到今天已经有一段时间了,在这段时间里,人们对区块链的认知经历了快速的更换。
区块链的本质是技术
既然说到本质,什么是本质?本质应该是不停向前追溯,一直追溯到不能进一步追溯为止,那时得到的东西才能称之为本质。区块链的本质,是一种技术。回到区块链最初的那个原点,回到比特币刚刚诞生的时候,它要解决的问题是拜占庭将军问题,从专业角度来讲,也就是要解决如何在分布式环境下达成一致性的问题。区块链这种技术,是多项技术的组合,它天然适合多方合作,可以为多方合作提供可信环境。
区块链不可篡改特性的应用
比特币的技术原理P2P网络
比特币是一个P2P的计算机网络,每一个网络节点存储着这个网络上所有的交易记录。 一般来说任何信息记录在一个节点加若干备份就可以了。在每一个节点上存储一遍这个网络的所有交易记录,这导致交易记录被每个节点可以看见、每个节点不能独立任意修改交易记录,所以形成了一套公开透明的交易记录。
③ 拜占庭问题
拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。
然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
在拜占庭问题中,最重要的point就是: 所有将军如何达成一致攻打拜占庭的共识 ,这当中,可能出现的情况举例如下:
用一个模型解释一下:
假设只有3个人,A、B、C,三人中如果其中一个是叛徒。当A发出进攻命令时,B如果是叛徒,他可能告诉C,他收到的是“撤退”的命令。这时C收到一个“进攻”,一个“撤退“,于是C被信息迷惑,而无所适从。
如果A是叛徒。他告诉B“进攻”,告诉C“撤退”。当C告诉B,他收到“撤退”命令时,B由于收到了司令“进攻”的命令,而无法与C保持一致。
正由于上述原因,在只有三个角色的系统中,只要有一个是叛徒,即叛徒数等于1/3,拜占庭问题便不可解。
可以看得出, 只要叛徒的数量大于或等于1/3,拜占庭问题不可解
从技术上理解, 拜占庭将军问题是分布式系统容错性问题 。加密货币建立在P2P网络之上,是典型的分布式系统,类比一下, 将军就是P2P网络中的节点,信使就是节点之间的通信,进攻还是撤退的决定就是需要达成的共识 。 如果某台独立的节点计算机拓机、掉线或攻击网络搞破坏,整个系统就要停止运行,那这样的系统将非常脆弱,所以容许部分节点出错或搞破坏而不影响整个系统运行是必要的 , 这就需要算法理论上的支撑,保证分布式系统在一定量的错误节点存在的情况下,仍然保持一致性和可用性 。
而且,拜占庭将军与两军问题不同,前者假定信差没有问题,只是将军出现了叛变等问题;后者研究信差的通信问题。
终极解决方案到了——
如果 10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致 。
谁都可以发起进攻的信息,但由谁来发出呢?中本聪巧妙地在个系统加入了 发送信息的成本 ,即:
它加入的 成本就是”工作量“ —— 节点必须完成一个计算工作才能向各城邦传播消息 ,当然,谁第一个完成工作,谁才能传播消息。(这也是 工作量证明机制的意义:以检验结果的方式证明你过去所做过了多少工作 )
这种加密技术——非对称加密,完全可以解决古代难以解决的签名问题:
中本聪在设计比特币时,它采用了一种工作量证明机制叫哈希现金,在一个交易块这要找到一个随机数,计算机只能用穷举法来找到这个随机数,可以说,能不能找到全靠运气,所以对于各个节点来说,这个世界上,只有随机才是真正的公平,实现随机的最好办法是使用数学,所有的将军在寻找共识的过程,借助了大家都认可的数学逻辑。
当然了, 凭什么要义务进行计算工作,那么肯定要有一个激励机制 :比特币的奖励机制是每打包一个块,目前是奖励25个比特币,而拜占庭将军问题的奖励机制可以是瓜分拜占庭获得的利益。
在这个分布式网络里:
每个将军都有一份实时与其他将军同步的消息账本 。
账本里有每个将军的签名都是可以验证身份的。 如果有哪些消息不一致,可以知道消息不一致的是哪些将军 。
尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成(只要大多数是好人,那么就可以实现共识)。
区块链上的共识机制主要解决 由谁来构造区块 ,以及 如何维护区块链统一 的问题。
拜占庭容错问题需要解决的也同样是 谁来发起信息 ,如何 实现信息的统一同步 的问题。
注:区块链学习新人,若有不正确的地方,望指出
④ 五分钟了解共识机制
五分钟了解共识机制
什么是共识机制?
“共识机制是区块链的灵魂。”这是业内经常能听到的一句话,共识机制在区块链中的地位可想而知。那么到底什么是共识机制呢?我们不妨从拜占庭将军问题说起。
拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,每个军队都分隔很远,将军与将军之间只能靠信差传消息。在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。
拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
而这个问题该如何解决?中本聪的理念给出了一个比较好的答案:不能让所有人都有资格发信息,而是给发信息设置了一个条件:“工作量”,将军们同时做一道计算题,谁先算完,谁才能获得给其他小国发信息的资格。而其他小国在收到信息后,必须采用加密技术进行签字盖戳,以确认身份。然后再继续做题,做对题的再继续发消息……对这种先后顺序达成共识的算法,就是共识机制。
共识机制的作用
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。在区块链上,每个人都会有一份记录链上所有交易的账本,链上产生一笔新的交易时,每个人接收到这个信息的时间是不一样的,有些想要干坏事的人就有可能在这时发布一些错误的信息,这时就需要一个人把所有人接收到的信息进行验证,最后公布最正确的信息。
共识机制是区块链技术的重要组件。它就像一本法典,维系着区块链世界的正常运转,使得区块链技术自带改善世界的光芒,也是让区块链得以被全世界逐步接受和认可的最大幕后功臣,它让互联网、陌生人之间,在没有第三方作为信用背书的情况下发生的一切交易变成可能,它赋予了机械的代码以人性和温度。
共识机制的类别
目前的共识机制主要有POW、POS、DPOS、PBFT、dBFT、Pool验证池。
POW,就是人们熟悉的比特币挖矿,通过计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储。可实现完全去中心化,节点自由进出。干的越多,收的越多。
POS,权益证明,POW的一种升级共识机制,根据每个节点所占代币的比例和时间,以此等比例的挖矿难度,从而加快找随机数的速度。持有越多,获得越多
DPOS,股份授权证明机制,类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。
PBFT ,Practical Byzantine Fault Tolerance,实用拜占庭容错算法,是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。
dBFT,delegated BFT 授权拜占庭容错算法,由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。
Pool验证池,基于传统的分布式一致性技术建立,并辅之以数据验证机制,是目前区块链中广泛使用的一种共识机制。Pool验证池不需要依赖代币就可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础之上,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。
现有共识机制存在问题
目前现有的共识机制都不算完美,在一些实际应用场景弊端很多。
A、计算能力浪费
在工作量证明机制POW中,猜数字最快的通常是电脑计算能力强的。超强的计算能级仅用来猜数字,实在是浪费。
B、权益向顶层集中
在权益证明机制POS中,token的余额越多的人获得公示信息的概率越高,公示人会得到一定的token作为奖励,如此持有token多的人会越来越多,少的人越来越少。
C、作恶成本低下
在靠算力与权益的的多少来获得公示信息的权利的模式当中,当算力和权益向少数人集中之后,这些少数人如果想要做一些违反规则的事情是轻而易举的;在PBFT中,由所有人投票,如果一个没有任何token余额的人想要捣乱,那他几乎是完全没有利益损失。
D、对于真正的去中心化构成威胁
在工作量证明机制中,计算能力越强,获得记录权利的概率就越高。如果有人把很多人集中在一起来猜数字,把好多电脑的算力加在一起来用,那这些抱团的人就会更容易获得公示信息的权利,发展到最后可能公示权就直接掌握在这些人手里。
在权益证明机制POS中,权益越大的人获得记录权利的概率越高,而记录的人就会有奖励token ,这样一来这些人就会越来越富有,贫富差距就会越来越大。持有token少的人几乎都没有话语权了。权利掌握在少数人手中,这有违区块链去中心化理念。
⑤ 刚刚了解,谁能告诉我区块链是什么通俗解释一下区块链技术的方法
大家共同记账的方式,也被称为“分布式”或“去中心化”,因为人人都记账,且账本的准确性由程式算法决定,而非某个权威机构。
这就是区块链,核心讲完了,区块链就这么简单,一个共同记账的账本
区块链技术六大核心算法:
区块链核心算法一:拜占庭协定
拜占庭的故事大概是这么说的:拜占庭帝国拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
区块链核心算法二:非对称加密技术
在上述拜占庭协定中,如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。谁都可以发起进攻的信息,但由谁来发出呢?其实这只要加入一个成本就可以了,即:一段时间内只有一个节点可以传播信息。当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。
区块链核心算法三:容错问题
我们假设在此网络中,消息可能会丢失、损坏、延迟、重复发送,并且接受的顺序与发送的顺序不一致。此外,节点的行为可以是任意的:可以随时加入、退出网络,可以丢弃消息、伪造消息、停止工作等,还可能发生各种人为或非人为的故障。我们的算法对由共识节点组成的共识系统,提供的容错能力,这种容错能力同时包含安全性和可用性,并适用于任何网络环境。
区块链核心算法四:Paxos 算法(一致性算法)
Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。 节点通信存在两种模型:共享内存和消息传递。Paxos算法就是一种基于消息传递模型的一致性算法。
区块链核心算法五:共识机制
区块链共识算法主要是工作量证明和权益证明。拿比特币来说,其实从技术角度来看可以把PoW看成重复使用的Hashcash,生成工作量证明在概率上来说是一个随机的过程。开采新的机密货币,生成区块时,必须得到所有参与者的同意,那矿工必须得到区块中所有数据的PoW工作证明。与此同时矿工还要时时观察调整这项工作的难度,因为对网络要求是平均每10分钟生成一个区块。
区块链核心算法六:分布式存储是一种数据存储技术,通过网络使用每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在网络中的各个角落。所以,分布式存储技术并不是每台电脑都存放完整的数据,而是把数据切割后存放在不同的电脑里。就像存放100个鸡蛋,不是放在同一个篮子里,而是分开放在不同的地方,加起来的总和是100个。想了解更多可以多利用网络搜索,网络搜索结果-小知识
⑥ 拜占庭将军很忙—《区块链思维》第21块
无论在链圈,还是在币圈混,经常听到一个名词“拜占庭将军问题”。
到底拜占庭是啥,拜占庭将军怎么啦,到处都被提及,这位将军好忙啊!
先说拜占庭这个地方。很久很久以前的欧洲,建立在比中世纪还古老的时期,历史上就是东罗马帝国,跨越了千年的历史期盼。
扯远了,回到正题,什么是拜占庭将军问题。
拜占庭这个地方异常坚固,同时被十个独立邻邦环伺,分别有一位将军,单独攻城必败,只有一半以上的将军同时攻打才能破城。
十位将军为了协调一致,在那个古老的时代,累死传令兵,要么飞鸽传书(那时的欧洲比中国落后,好像没有这个高速通信手段)。十位将军相互通信一次就需要90次传信,每位将军都有各自的攻城计划,要想达成统一就需要往复传递不知道多少次。
我们可以假设一个场景,一个桌子上坐着十位将军,每个人各自说着自己的想法,同时听其他九位的说法,但是信息的传递不是实时的,有快有慢,有早有晚。想明白了吗?也就是说,这十位将军如果想达成一致,理论上有可能,实际上他们的有生之年都实现不了,难怪拜占庭帝国经历了千年也没有被这十位将军攻破。
中本聪这个神人,利用互联网信息传递的及时性特点,引入时间戳可以明确知道“谁先说、谁后说”的特性,创造性地加入挖矿机制(就是用计算机算随机数满足一定难度才算成功)比拼各位将军的智商来决定谁做本次进攻的统帅,使用非对称加密保证信息传输的安全性等等手段融合到比特币中,用实例说明自己破解了这个历史难题“拜占庭将军问题”。从而向世人证明解决60亿人口的互信问题是有去中心化解决方案地。
币圈和链圈的朋友很焦虑的另一个关键问题就是:这个圈子概念太TM多。除了这个“拜占庭将军问题”,还有一个“拜占庭容错”,这是什么鬼?这两个是一样的吗?这两个是故意有一个被写错了吗?还是说我的智商税没交够?其实,你都说对了。
“拜占庭将军问题”假设所有十个将军都是好的,都想攻破拜占庭,只是达成共识很难,比特币提供了好人达成共识的方案。
“拜占庭容错”是说十个将军可以很好地达成共识。但是,如果其中出了坏人,怎么解决?
如果十个将军中出现了坏人(叫叛徒也行),进攻计划是否会永远无法达成共识呢?
“拜占庭容错”告诉大家,是可以达成地,并且,还能找出这些“叛徒”是谁。只是,10个将军中叛徒的数量不能超过3个,超出了就无法“容错”,也找不出这些叛徒是谁。对应的公式就是:3n+1。其中3n+1是将军总数(区块链的账本/矿机总数),n是能够“容错”的“叛徒”(恶意记错账)总数。
对于十个将军来说,最多容忍三个叛徒,多了就彻底没戏啦。为了比特币的容错能力越来越强,就需要更多的节点,这样才能容忍并找出更多的叛徒。懂了吧。
小结一下:拜占庭将军问题是假设都是好人前提下如何达成共识,拜占庭容错就是全网最多能够容忍多少叛徒并且能找出他们。
请交智商税到如下地址:
国税BTC到Kcash:
地税ETH及各种原生Token到 Imtoken:
不交税的,祝你做“韭菜”一切顺利 :D
⑦ 什么是区块链
【定义】
区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案让参与系统中的任意多个节点,把一段时间系统内全部信息交流的数据,通过密码学算法计算和记录到一个数据块(block),并且生成该数据块的指纹用于链接(chain)下个数据块和校验,系统所有参与节点来共同认定记录是否为真。
区块链是一种类似于NoSQL(非关系型数据库)这样的技术解决方案统称,并不是某种特定技术,能够通过很多编程语言和架构来实现区块链技术。并且实现区块链的方式种类也有很多,目前常见的包括POW(Proof of Work,工作量证明),POS(Proof of Stake,权益证明),DPOS(Delegate Proof of Stake,股份授权证明机制)等。
区块链的概念首次在论文《比特币:一种点对点的电子现金系统(Bitcoin:A Peer-to-Peer Electronic Cash System)》中提出,作者为自称中本聪(Satoshi Nakamoto)的个人(或团体)。因此可以把比特币看成区块链的首个在金融支付领域中的应用。
【通俗解释】
无论多大的系统或者多小的网站,一般在它背后都有数据库。那么这个数据库由谁来维护?在一般情况下,谁负责运营这个网络或者系统,那么就由谁来进行维护。如果是微信数据库肯定是腾讯团队维护,淘宝的数据库就是阿里的团队在维护。大家一定认为这种方式是天经地义的,但是区块链技术却不是这样。
如果我们把数据库想象成是一个账本:比如支付宝就是很典型的账本,任何数据的改变就是记账型的。数据库的维护我们可以认为是很简单的记账方式。在区块链的世界也是这样,区块链系统中的每一个人都有机会参与记账。系统会在一段时间内,可能选择十秒钟内,也可能十分钟,选出这段时间记账最快最好的人,由这个人来记账,他会把这段时间数据库的变化和账本的变化记在一个区块(block)中,我们可以把这个区块想象成一页纸上,系统在确认记录正确后,会把过去账本的数据指纹链接(chain)这张纸上,然后把这张纸发给整个系统里面其他的所有人。然后周而复始,系统会寻找下一个记账又快又好的人,而系统中的其他所有人都会获得整个账本的副本。这也就意味着这个系统每一个人都有一模一样的账本,这种技术,我们就称之为区块链技术(Blockchain),也称为分布式账本技术。
由于每个人(计算机)都有一模一样的账本,并且每个人(计算机)都有着完全相等的权利,因此不会由于单个人(计算机)失去联系或宕机,而导致整个系统崩溃。既然有一模一样的账本,就意味着所有的数据都是公开透明的,每一个人可以看到每一个账户上到底有什么数字变化。它非常有趣的特性就是,其中的数据无法篡改。因为系统会自动比较,会认为相同数量最多的账本是真的账本,少部分和别人数量不一样的账本是虚假的账本。在这种情况下,任何人篡改自己的账本是没有任何意义的,因为除非你能够篡改整个系统里面大部分节点。如果整个系统节点只有五个、十个节点也许还容易做到,但是如果有上万个甚至上十万个,并且还分布在互联网上的任何角落,除非某个人能控制世界上大多数的电脑,否则不太可能篡改这样大型的区块链。
【要素】
结合区块链的定义,我们认为必须具有如下四点要素才能被称为公开区块链技术,如果只具有前3点要素,我们将认为其为私有区块链技术(私有链)。
1、点对点的对等网络(权力对等、物理点对点连接)
2、可验证的数据结构(可验证的PKC体系,不可篡改数据库)
3、分布式的共识机制(解决拜占庭将军问题,解决双重支付)
4、纳什均衡的博弈设计(合作是演化稳定的策略)
【特性】
结合定义区块链的定义,区块链会现实出四个主要的特性:去中心化(Decentralized)、去信任(Trustless)、集体维护(Collectively maintain)、可靠数据库(Reliable Database)。并且由四个特性会引申出另外2个特性:开源(Open Source)、隐私保护(Anonymity)。如果一个系统不具备这些特征,将不能视其为基于区块链技术的应用。
去中心化(Decentralized):整个网络没有中心化的硬件或者管理机构,任意节点之间的权利和义务都是均等的,且任一节点的损坏或者失去都会不影响整个系统的运作。因此也可以认为区块链系统具有极好的健壮性。
去信任(Trustless):参与整个系统中的每个节点之间进行数据交换是无需互相信任的,整个系统的运作规则是公开透明的,所有的数据内容也是公开的,因此在系统指定的规则范围和时间范围内,节点之间是不能也无法欺骗其它节点。
集体维护(Collectively maintain):系统中的数据块由整个系统中所有具有维护功能的节点来共同维护的,而这些具有维护功能的节点是任何人都可以参与的。
可靠数据库(Reliable Database):整个系统将通过分数据库的形式,让每个参与节点都能获得一份完整数据库的拷贝。除非能够同时控制整个系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,也无法影响其他节点上的数据内容。因此参与系统中的节点越多和计算能力越强,该系统中的数据安全性越高。
开源(Open Source):由于整个系统的运作规则必须是公开透明的,所以对于程序而言,整个系统必定会是开源的。
隐私保护(Anonymity):由于节点和节点之间是无需互相信任的,因此节点和节点之间无需公开身份,在系统中的每个参与的节点的隐私都是受到保护的。