区块链共识机制一致
㈠ 什么是区块链共识
所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件。区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:
1)一致性。所有诚实节点保存的区块链的前缀部分完全相同。
2)有效性。由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。
㈡ 区块链技术中的共识机制是什么
1.共识机制是什么
在一个去中心化的结构体系中,由于各个参与方的地位是平等的,当出现分歧的时候,如何达成共识就成了问题。
所以,一个设计精妙、实际操作起来简单的共识机制是一个分布式的体系能够顺利自运转下去的关键所在。
简而言之,共识机制就是在一个时间段内对事物的前后顺序达成共识的一种算法,是区块链节点就区块信息达成全网一致共识的机制。
㈢ 鍖哄潡閾剧洰鍓嶇敤鍒板摢浜涘叡璇嗘満鍒讹紵瀹冧滑鍚勮嚜鐨勪紭缂虹偣鍜岄傜敤鑼冨洿鏄浠涔
1. 宸ヤ綔閲忚瘉鏄庯紙PoW锛夛細杩欐槸姣旂壒甯侀噰鐢ㄧ殑鍏辫瘑鏈哄埗锛岄氳繃澶嶆潅鐨勮$畻鏉ョ‘璁や氦鏄撳苟娣诲姞鍒板尯鍧楅摼涓銆侾oW鐨勪紭鐐瑰湪浜庡叾鍘讳腑蹇冨寲鐗规э紝纭淇濅簡缃戠粶鐨勫畨鍏ㄦс傜劧鑰岋紝瀹冪殑缂虹偣鍖呮嫭鑳芥簮娑堣楀法澶э紝鎸栫熆闅惧害闅忕潃鏃堕棿鎺ㄧЩ涓嶆柇澧炲姞锛屼互鍙婅揪鎴愬叡璇嗘墍闇鏃堕棿杈冮暱锛屼笉閫傚悎鍟嗕笟搴旂敤鍦烘櫙銆
2. 鏉冪泭璇佹槑锛圥oS锛夛細PoS鏃ㄥ湪瑙e喅PoW鐨勬寲鐭块棶棰橈紝鏍规嵁鑺傜偣鎸佹湁鐨勪唬甯佹暟閲忓拰鏃堕棿鏉ラ檷浣庢寲鐭块毦搴︼紝鍔犲揩鍏辫瘑杩囩▼銆傚敖绠PoS鍦ㄤ竴瀹氱▼搴︿笂缂╃煭浜嗗叡璇嗚揪鎴愭椂闂达紝浣嗗畠浠嶇劧渚濊禆浜庝唬甯侊紝骞朵笖鏈璐ㄤ笂娌℃湁瑙e喅鍟嗕笟搴旂敤鐨勭棝鐐广
3. 鑲′唤鎺堟潈璇佹槑锛圖PoS锛夛細DPoS绫讳技浜庤懀浜嬩細鎶曠エ锛屾寔甯佽呴夊嚭浠h〃鑺傜偣杩涜岄獙璇佸拰璁拌处銆傝繖澶уぇ鍑忓皯浜嗛獙璇佸拰璁拌处鑺傜偣鐨勬暟閲忥紝瀹炵幇浜嗙掔骇鐨勫叡璇嗛獙璇併備笉杩囷紝DPoS鐨勫叡璇嗘満鍒朵粛鐒朵緷璧栦簬浠e竵锛屽苟涓斿彲鑳戒笉閫傚悎涓嶉渶瑕佷唬甯佸瓨鍦ㄧ殑鍟嗕笟搴旂敤銆
4. 楠岃瘉姹狅紙Pool锛夛細楠岃瘉姹犵粨鍚堜簡浼犵粺鐨勫垎甯冨紡涓鑷存ф妧鏈鍜屾暟鎹楠岃瘉鏈哄埗锛屾槸鐩鍓嶈屼笟閾惧箍娉涗娇鐢ㄧ殑鍏辫瘑鏈哄埗銆傚畠涓嶉渶瑕佷唬甯佸嵆鍙宸ヤ綔锛屽熀浜庢垚鐔熺殑鍒嗗竷寮忎竴鑷存х畻娉曪紝瀹炵幇浜嗙掔骇鍏辫瘑楠岃瘉銆備笉杩囷紝杩欑嶆満鍒剁殑鍘讳腑蹇冨寲绋嬪害涓嶅傛瘮鐗瑰竵锛屾洿閫傚悎澶氭柟鍙備笌鐨勫氫腑蹇冨晢涓氭ā寮忋
鍦ㄤ娇鐢ㄥ叡璇嗘満鍒朵繚璇佹暟鎹涓鑷存ф椂锛屽悇绉嶆満鍒堕兘鏈夊叾浼樺娍銆備緥濡傦紝Ripple鐨勫叡璇嗘満鍒剁‘淇濅簡鏁版嵁姝g‘鎬т紭鍏堬紝浣嗗湪鏋佺鎯呭喌涓嬪彲鑳藉艰嚧鑺傜偣闀挎椂闂存棤娉曚笌鍏朵粬鑺傜偣鍙栧緱鍏辫瘑銆傚洜姝わ紝瀵逛簬涓嶅悓鐨勫簲鐢ㄥ満鏅锛岄夋嫨鍚堥傜殑鍏辫瘑鏈哄埗鑷冲叧閲嶈併
㈣ 浠ュお鍧婃妧鏈绯诲垪-浠ュお鍧婂叡璇嗘満鍒
涓銆佷互澶鍧婃妧鏈绯诲垪-浠ュお鍧婂叡璇嗘満鍒
鍖哄潡閾剧殑鐗圭偣涔嬩竴鏄鍘讳腑蹇冨寲銆備篃灏辨槸鑺傜偣浼氬垎甯冨湪鍚勪釜鍦版柟缁勬垚鍒嗗竷寮忕郴缁熴傚悇涓鑺傜偣闇瑕佸1涓闂棰樿揪鎴愪竴鑷达紝鐞嗘兂鎯呭喌涓嬶紝鍙闇瑕佸悓姝ョ姸鎬佸嵆鍙銆
濡備笂鍥炬墍绀 B鑺傜偣灏哸=1=> a=2鐨勭姸鎬佸悓姝ョ粰? ACDE鍥涗釜鑺傜偣锛岃繖鏃剁郴缁熶腑鐘舵佸彉涓篴=2, 浣嗗傛灉鍏朵腑鏈夋伓鎰忚妭鐐 AE 鏀跺埌閫氱煡鍚庢妸a=1=>a=3淇鏀逛负閿欒鐨勮妭鐐癸紝杩欎釜鏃跺欏ぇ瀹剁殑鐘舵佸氨涓嶄竴鑷翠簡锛屾ゆ椂闇瑕佸叡璇嗘満鍒朵娇绯荤粺涓寰楀埌1涓鍞涓姝g‘鐨勭姸鎬併
濡備笂闈㈣村埌鍒嗗竷寮忕郴缁熷瓨鍦ㄦ伓鎰忚妭鐐瑰艰嚧绯荤粺涓鐘舵佷笉涓鑷寸殑鎯呭喌鏈1涓姣旇緝钁楀悕鐨勮櫄鎷熼棶棰-鎷滃崰搴灏嗗啗闂棰樸
鎷滃崰搴灏嗗啗闂棰樻槸鎸囷紝N涓灏嗗啗鍘绘敾鎵撲竴搴у煄鍫★紝濡傛灉澶т簬涓瀹氭暟閲忕殑灏嗗啗鍚屾椂杩涙敾鍒欏彲浠ユ敾鎵撴垚鍔燂紝濡傛灉灏忎簬鍒欒繘鏀诲け璐ャ傚皢鍐涗腑鍙鑳藉瓨鍦ㄥ彌寰掋
杩欎釜鏃跺欐湁2绉嶆儏鍐
1.濡傛灉2涓鍙涘緬閮藉湪BCDE涓锛岄偅涔堝叡璇嗙畻娉曢渶瑕佽╁叾浣2涓灏嗗啗鍚浠嶢鐨勬g‘鍐崇瓥杩涙敾鍩庡牎銆
2.濡傛灉A鏄1涓鍙涘緬锛屽叡璇嗙畻娉曢渶瑕佽〣CDE涓鍓╀綑鐨3涓蹇犺瘹灏嗗啗淇濇寔涓鑷淬
杩欎釜闂棰樻湁寰堝氱嶈В娉曪紝澶у舵湁鍏磋叮鍙浠ヨ嚜琛屾煡闃(鎺ㄨ崘瀛︿範PBFT)锛屾垜浠閲嶇偣鏉ョ湅鐪嬩互澶鍧婁腑鐩鍓嶆e湪浣跨敤鐨凬akamoto?鍏辫瘑鍜屽皢瑕佷娇鐢ㄧ殑?Casper Friendly Finality Gadget鍏辫瘑鏄濡備綍瑙e喅鎷滃崰搴灏嗗啗闂棰樼殑銆
璇村埌Nakamoto鍏辫瘑鍜孋asper Friendly Finality Gadget鍏辫瘑鍙鑳藉ぇ瀹朵笉澶鐔熸倝锛屼絾浠栦滑鐨勯儴鍒嗙粍鎴愬簲璇ラ兘姣旇緝鐔熸倝-POW(宸ヤ綔閲忚瘉鏄)鍜孭OS(鏉冪泭璇佹槑)銆
POW鎴朠OS绉颁箣涓篠ybil鎶楁ф満鍒讹紝涓轰粈涔堥渶瑕丼ybil鎶楁ф満鍒跺憿锛屽垰鍒氭垜浠璇村埌鎷滃崰搴灏嗗啗闂棰橈紝搴旇ュ緢瀹规槗鐪嬪嚭鎭舵剰鑺傜偣瓒婂氾紝杈炬垚姝g‘鍏辫瘑鐨勯毦搴︿篃灏辫秺澶э紝Sybil鏀诲嚮灏辨槸鎸1涓鏀诲嚮鑰呭彲浠ヤ吉瑁呭嚭澶ч噺鑺傜偣鏉ヨ繘琛屾敾鍑伙紝Sybil鎶楁ф槸鎸囨姷寰¤繖绉嶆敾鍑昏兘鍔涖
POW閫氳繃璁╃熆宸ユ垨楠岃瘉鑰呮姇鍏ョ畻鍔涳紝POS閫氳繃璁╅獙璇佽呰川鎶间互澶鍧婏紝濡傛灉鏀诲嚮鑰呰佷吉瑁呭氫釜鑺傜偣鏀诲嚮鍒欏繀灏嗘姇鍏ュぇ閲忕殑绠楀姏鎴栬祫浜э紝浼氬艰嚧鏀诲嚮鎴愭湰楂樹簬鏀剁泭銆傚湪浠ュお鍧婁腑淇濋殰鐨勫畨鍏ㄦф槸闄ら潪鏀诲嚮鑰呮嬁鍒版暣涓绯荤粺51%绠楀姏鎴栬祫浜у惁鍒欎笉鍙鑳借繘鏀绘垚鍔熴
鍦ㄨВ鍐冲畬Sybil鏀诲嚮鍚庯紝閫氳繃閫夊彇绯荤粺涓鐨勬渶闀块摼浣滀负澶у惰揪鎴愬叡璇嗙殑閾俱
寰堝氫汉骞虫椂涓轰簡绠鍖栧皢pow鍜宲os璁や负鏄鍏辫瘑鏈哄埗锛岃繖涓嶅熷噯纭锛屼絾涔熻存槑浜嗗叾閲嶈佷綔鐢锛屾垜浠鎺ヤ笅鏉ュ垎鏋恜ow鍜宲os銆
閫氳繃hash涓嶅彲閫嗙殑鐗规э紝瑕佹眰鍚勪釜鐭垮伐涓嶅仠鍦拌$畻鍑烘煇涓鍊肩殑hash绗﹀悎鏌愪竴鐗瑰緛锛屾瘮濡傚墠澶氬皯浣嶆槸000000锛岀敱浜庤繖涓杩囩▼鍙鑳戒緷璧栦笉鍋滅殑璇曢敊璁$畻hash,鎵浠ユ槸宸ヤ綔閲忚瘉鏄庛傝$畻瀹屾垚鍚庡叾浠栬妭鐐归獙璇佺殑鍊肩﹀悎hash鐗瑰緛闈炲父瀹规槗楠岃瘉銆傞獙璇侀氳繃鍒欐垚涓烘垚涓哄悎娉曞尯鍧(涓嶄竴瀹氭槸鍏辫瘑鍖哄潡锛岄渶瑕佸湪鏈闀块摼涓)銆
浠ュお鍧婁腑鐨勬寲鐭跨畻娉曠敤鍒2涓鏁版嵁闆嗭紝1涓灏忔暟鎹闆哻ache,1涓澶ф暟鎹闆咲AG銆傝繖2涓鏁版嵁闅忕潃鍖哄潡閾句腑鍖哄潡澧炲氭參鎱㈠彉澶э紝鍒濆嬪ぇ灏廲ache涓16M DAG涓1G銆
鎴戜滑鍏堟潵鐪嬭繖2涓鏁版嵁闆嗙殑鐢熸垚杩囩▼
cache鐢熸垚瑙勫垯涓烘湁1涓绉嶅瓙闅忔満鏁皊eed锛宑ache涓绗1涓鍏冪礌瀵箂eed鍙杊ash锛屽悗闈㈡暟缁勪腑姣忎釜鍏冪礌閮芥槸鍓1涓鍏冪礌鍙杊ash鑾峰緱銆
DAG鐢熸垚瑙勫垯涓?鎵惧埌cache涓瀵瑰簲鐨勫厓绱犲悗?鏍规嵁鍏冪礌涓鐨勫艰$畻鍑轰笅娆¤佸绘壘鐨勪笅鏍囷紝寰鐜256娆″悗鑾峰緱cache涓鏈缁堥渶瑕佺殑鍏冪礌鍊艰繘琛宧ash璁$畻寰楀埌DAG涓鍏冪礌鐨勫笺
鐒跺悗鎴戜滑鍐嶇湅鐪嬬熆宸ュ備綍杩涜屾寲鐭夸互鍙婅交鑺傜偣濡備綍楠岃瘉
鐭垮伐鎸栫熆鐨勮繃绋嬩负锛岄夋嫨Nonce鍊兼槧灏勫埌DAG涓鐨1涓猧tem锛岄氳繃item涓鐨勫艰$畻鍑轰笅娆¤佹壘鐨勪笅鏍囷紝寰鐜64娆★紝寰楀埌鏈缁坕tem锛屽皢item涓鐨勫糷ash璁$畻寰楀埌缁撴灉锛岀粨鏋滃拰target姣旇緝锛岀﹀悎鏉′欢
鍒欒瘉鏄庢寲鍒板尯鍧楋紝濡傛灉涓嶇﹀悎鍒欐洿鎹nonce缁х画鎸栫熆銆傜熆宸ュ湪鎸栫熆杩囩▼涓闇瑕佸皢1G鐨凞AG璇诲彇鍒板唴瀛樹腑銆
杞昏妭鐐归獙璇佽繃绋嬪拰鐭垮伐鎸栫熆杩囩▼鍩烘湰涓鑷达紝
灏嗗潡澶撮噷闈㈢殑Nonce鍊兼槧灏勫埌DAG涓鐨1涓猧tem锛岀劧鍚庨氳繃cache鏁扮粍璁$畻鍑鸿item鐨勫硷紝閫氳繃item涓鐨勫艰$畻鍑轰笅娆¤佹壘鐨勪笅鏍囷紝寰鐜64娆★紝寰楀埌鏈缁坕tem锛屽皢item涓鐨勫糷ash璁$畻寰楀埌缁撴灉锛岀粨鏋滃拰target姣旇緝锛岀﹀悎鏉′欢鍒欓獙璇侀氳繃銆傝交鑺傜偣鍦ㄩ獙璇佽繃绋嬩腑涓嶉渶瑕佸皢1G鐨凞AG璇诲彇鍒板唴瀛樹腑銆傛瘡娆$敤鍒癉AG鐨刬tem鍊奸兘浣跨敤cache杩涜岃$畻銆
浠ュお鍧婁负浠涔堥渶瑕佽繖2涓涓嶅悓澶у皬鐨勬暟缁勮繘琛岃緟鍔﹉ash杩愮畻鍛锛岀洿鎺ヨ繘琛宧ash杩愮畻浼氭湁浠涔堥棶棰橈紵
濡傛灉鍙鏄杩涜岄噸澶嶈$畻浼氬艰嚧鎸栫熆璁惧囦笓涓氬寲锛屽噺灏戝幓涓蹇冨寲绋嬪害銆傚洜涓烘垜浠鏃ュ父浣跨敤鐨勮$畻鏈哄唴瀛樺拰璁$畻鍔涙槸閮介渶瑕佺殑锛屽傛灉鎸栫熆鍙闇瑕乭ash杩愮畻锛屾寲鐭胯惧囧垯浼氳捐″湴鎷ユ湁瓒呴珮绠楀姏锛屼絾瀵瑰唴瀛樺彲浠ョ缉灏忓埌寰堝皬鐢氳嚦娌℃湁銆傛墍浠ユ垜浠閫夌敤1G鐨勫ぇ鍐呭瓨澧炲姞瀵瑰唴瀛樿块棶鐨勯戠巼锛屽炲姞鎸栫熆璁惧囧瑰唴瀛樿块棶闇姹傦紝浠庤屾洿鎺ヨ繎浜庢垜浠鏃ュ父浣跨敤鐨勮$畻鏈恒
鎴戜滑鐪嬬湅鍦∟akamoto鍏辫瘑鏄濡備綍瑙e喅鎷滃崰搴灏嗗啗闂棰樼殑銆傞栧厛鐪嬬湅鍖哄潡閾句腑鐨勬嫓鍗犲涵灏嗗啗闂棰樻槸浠涔堬紵
鍖哄潡閾句腑闇瑕佽揪鎴愪竴鑷寸殑鏄鍝鏉¢摼涓轰富閾撅紝铏界劧閲囩敤浜嗘渶闀块摼鍘熷垯锛屼絾鐢变簬鍒嗗弶闂棰橈紝杩樻槸浼氬甫鏉ユ嫓鍗犲涵灏嗗啗闂棰樸
鏈鏉ヤ互澶鍧妏ow鐩鏍囨槸鎶垫姉51%浠ヤ笅鐨勬敾鍑伙紝浣嗗備笂鍥惧傛灉鎭舵剰鑺傜偣娌跨潃鑷宸辨寲鍑虹殑鍖哄潡涓嶆柇鎸栫熆锛岀敱浜庝富閾句笂鏈夊垎鍙夊瓨鍦锛屾伓鎰忚妭鐐逛笉闇瑕佽揪鍒51%绠楀姏灏卞彲浠ヨ秴杩囦富閾捐繘鑰屾垚涓烘柊鐨勪富閾撅紝涓烘や互澶鍧婁娇鐢ㄤ簡ghost鍗忚缁欎笂鍥句腑鐨凚1鍜孋1涔熷垎閰嶅嚭鍧楀栧姳锛屽敖蹇鍚堝苟鍒颁富閾句腑锛岃繖鏍蜂富閾鹃暱搴(鎸夌収鍚堝苟鍚庣殑鎬婚暱搴︾畻锛岄暱搴﹀彧鏄鎶借薄姒傚康锛屼互澶鍧婁腑鎸夌収鍖哄潡鏉冮噸绱鍔)杩樻槸澶т簬鎭舵剰鑺傜偣鑷宸辨寲鐭跨殑銆
缃戠粶涓鐨勭敤鎴烽氳繃璐ㄦ娂涓瀹氭暟閲忕殑浠ュお鍧婃垚涓洪獙璇佽呫傛瘡娆$郴缁熶粠杩欎簺楠岃瘉鑰呬粠闅忔満閫夋嫨鍑哄尯鍧楀垱寤鸿咃紝鍏朵綑楠岃瘉鑰呭幓楠岃瘉鍒涘缓鍑虹殑鍖哄潡鏄鍚﹀悎娉曘傞獙璇佽呬細鑾峰緱鍑哄潡濂栧姳锛屾病鏈夎閫変腑鐨勫尯鍧椾笉杩涜岄獙璇佸垯浼氳鎵i櫎涓瀹氳川鎶煎竵锛屽傛灉杩涜岄敊璇楠岃瘉鍒欎細琚鎵i櫎鍏ㄩ儴璐ㄦ娂甯併
濡備笂鍥撅紝鏉冪泭璇佹槑鍦ㄦ瘡闅斾竴瀹氬尯鍧楃殑鍦版柟璁剧疆涓涓妫鏌ョ偣锛屽瑰墠闈㈢殑鍖哄潡杩涜岄獙璇侊紝2/3楠岃瘉鑰呴氳繃鍒欓獙璇侀氳繃锛岄獙璇侀氳繃鍒欒ュ尯鍧楁墍鍦ㄩ摼鎴愪负鏈闀垮悎娉曢摼(涓嶈兘琚鍥炴粴)銆
鎴戜滑绠鍖栧湴鍙鍒嗘瀽浜嗘潈鐩婅瘉鏄庢湰韬锛屽湪浠ュお鍧婁腑鏉冪泭璇佹槑杈冧负澶嶆潅鐨勭偣鍦ㄤ簬鍜屽垎鐗囨満鍒剁粨鍚堝湪涓璧锋椂鐨勮繍琛屾祦绋嬶紝杩欓儴鍒嗕細鍦ㄥ悗闈㈠崟鐙灏嗗垎鐗囨満鍒剁殑涓绡囨枃绔犱腑璇﹁堪銆
鏈绡囨枃绔犱富瑕佽ㄨ轰簡鍏辫瘑鏈哄埗鏄瑙e喅鍒嗗竷寮忕郴缁熶腑鐨勬嫓鍗犲涵灏嗗啗闂棰橈紝浠ュ強鍒嗘瀽浜嗕互澶鍧婁腑鐨勫叡璇嗘満鍒朵竴鑸鍖呮嫭鏈闀块摼閫夋嫨鍜屼竴绉峴ybil鎶楁ф満鍒(pow鎴杙os)銆傞噸鐐瑰垎鏋愪簡pow鍜宲os鐨勬祦绋嬩互鍙婅捐℃濇兂銆傚悗缁灏嗗紑濮嬮噸鐐硅ㄨ烘櫤鑳藉悎绾︾殑閮ㄥ垎銆
浜屻佷粈涔堟槸浠ュお鍧婄殑鍏辫瘑鏈哄埗锛
鍖哄潡閾炬妧鏈鐨勬牳蹇冧紭鍔夸箣涓锛屽氨鏄鑳藉熷湪鍐崇瓥鏉冮珮搴﹀垎鏁g殑鍘讳腑蹇冨寲绯荤粺涓锛屼娇寰楀悇鑺傜偣楂樻晥鍦伴拡瀵瑰尯鍧楁暟鎹鐨勬湁鏁堟у拰涓鑷存ц揪鎴愬叡璇嗐傜敱浜庣偣瀵圭偣缃戠粶涓嬪瓨鍦ㄨ緝楂樼殑缃戠粶寤惰繜锛屽悇涓鑺傜偣鎵瑙傚療鍒扮殑浜嬪姟鍏堝悗椤哄簭涓嶅彲鑳藉畬鍏ㄤ竴鑷淬傚洜姝ゅ尯鍧楅摼绯荤粺闇瑕佽捐′竴绉嶆満鍒讹紝瀵瑰湪宸涓嶅氭椂闂村唴鍙戠敓鐨勪簨鍔$殑鍏堝悗椤哄簭杩涜屽叡璇嗭紝杩欑嶅逛竴涓鏃堕棿绐楀彛鍐呯殑浜嬪姟鐨勫厛鍚庨『搴忚揪鎴愬叡璇嗙殑绠楁硶琚绉颁负鈥滃叡璇嗘満鍒垛濆叡璇嗘満鍒惰鐢ㄦ潵鍐冲畾鍖哄潡閾剧綉缁滀腑鐨勮拌处鑺傜偣锛屽苟瀵逛氦鏄撲俊鎭杩涜岀‘璁ゅ拰涓鑷存у悓姝ャ備互澶鍧婂叡璇嗘満鍒跺叡鏈夊洓涓闃舵碉紝鍗矲rontier锛堝墠娌匡級銆丠omestead锛堝跺洯锛夈丮etropolis锛堝ぇ閮戒細锛夈丼erenity锛堝畞闈欙級銆備互澶鍧婂墠涓変釜闃舵甸噰鐢ㄧ殑鏄疨OW鍏辫瘑鏈恒傜鍥涗釜闃舵靛皢閲囩敤鑷宸卞垱寤虹殑POS鏈哄埗锛屽悕涓篊asper鎶曟敞鍏辫瘑锛岃繖绉嶆満鍒跺炲姞浜嗘儵缃氭満鍒讹紝骞跺熀浜嶱OS鐨勬濇兂鍦ㄨ拌处鑺傜偣涓閫夊彇楠岃瘉浜恒侾OW鍗冲伐浣滈噺璇佹槑锛屾槸姣旂壒甯佺郴缁熶腑閲囩敤鐨勫叡璇嗘満鍒躲傦紙鏈鏂囦富瑕佽茶В浠ュお鍧婄殑鍏辫瘑鏈哄埗锛夎皥璧稢asper鎶曟敞鍏辫瘑锛岃佸厛璇碢OS銆侾OS鍗虫潈鐩婅瘉鏄庯紝涓昏佺壒鐐逛互鏉冪泭璇佹槑浠f浛宸ヤ綔閲忚瘉鏄庯紝鐢卞叿鏈夋渶楂樻潈鐩婄殑鑺傜偣瀹炵幇鏂板潡鍔犲叆鍜岃幏寰楁縺鍔辨敹鐩娿侾OS鍏辫瘑鏄涓鸿В鍐砅OW鍏辫瘑鏈哄埗鐨勮祫婧愭氮璐瑰拰瀹夊叏鎬х己闄疯屾彁鍑虹殑鏇夸唬鏂规堛傚畠鐨勬湰璐ㄦ槸閲囩敤鏉冪泭璇佹槑鏉ヤ唬鏇縋OW涓鐨勫熀浜庡搱甯岀畻鍔涚殑宸ヤ綔閲忚瘉鏄庯紝鏄鐢辩郴缁熶腑鍏锋湁鏈楂樻潈鐩婅岄潪鏈楂樼畻鍔涚殑鑺傜偣鑾峰緱鍖哄潡璁拌处鏉冦傛潈鐩婁綋鐜颁负鑺傜偣瀵圭壒瀹氭暟閲忚揣甯佺殑鎵鏈夋潈锛岀О涓哄竵榫勬垨甯佸ぉ鏁帮紙Coindays锛夈傚竵榫勬槸鐗瑰畾鏁伴噺鐨勫竵涓庡叾鏈鍚庝竴娆′氦鏄撶殑鏃堕棿闀垮害鐨勪箻绉锛屾瘡娆′氦鏄撻兘灏嗕細娑堣楁帀鐗瑰畾鏁伴噺鐨勫竵榫勩備緥濡傛煇浜哄湪涓绗斾氦鏄撲腑鏀跺埌10涓甯佸悗骞舵寔鏈10澶╋紝鍒欒幏寰100甯侀緞锛涜屽悗鍏惰姳鎺5涓甯佸悗鍒欐秷鑰楁帀50甯侀緞锛屾樉鐒堕噰鐢≒OS鍏辫瘑鏈哄埗鐨勭郴缁熷湪鐗瑰畾鏃堕棿鐐逛笂鐨勫竵榫勬绘暟鏄鏈夐檺鐨勶紝闀挎湡鎸佸竵鑰呮洿鍊惧悜浜庢嫢鏈夋洿澶氬竵榫勶紝鍥犳ゅ竵榫勫彲瑙嗕负鍏跺湪POS绯荤粺涓鐨勬潈鐩娿傛姇娉ㄥ叡璇嗘槸浠ュお鍧婁笅涓浠g殑鍏辫瘑鏈哄埗Casper锛堥奸┈灏忕簿鐏碉級寮曞叆鐨勪竴涓鍏ㄦ柊姒傚康锛屽睘浜嶱OS銆侰asper鐨勫叡璇嗘槸鎸夊尯鍧楄揪鎴愮殑锛岃屼笉鍍廝OS閭f牱鎸夐摼杈炬垚銆備负浜嗛槻姝㈤獙璇佷汉鍦ㄤ笉鍚岀殑涓栫晫涓鎻愪緵涓嶅悓鐨勬姇娉锛岃繕鏈変竴涓绠鍗曚弗鏍肩殑鏉℃撅細濡傛灉浣犱袱娆$殑鎶曟敞搴忓彿涓鏍凤紝鎴栬呰翠綘鎻愪氦浜嗕竴涓鏃犳硶璁〤asper渚濈収鍚堢害澶勭悊鐨勬姇娉锛屼綘灏嗗け鍘绘墍鏈変繚璇侀噾銆備粠杩欎竴鐐瑰彲浠ョ湅鍑猴紝Casper涓庝紶缁熺殑POS涓嶅悓鐨勬槸锛孋asper鏈夋儵缃氭満鍒讹紝杩欐牱闈炴硶鑺傜偣閫氳繃鎭舵剰鏀诲嚮缃戠粶涓嶄粎寰椾笉鍒颁氦鏄撹垂锛岃屼笖杩橀潰涓寸潃淇濊瘉閲戣娌℃敹鐨勯庨櫓銆侰asper鍗忚涓嬬殑楠岃瘉浜洪渶瑕佸畬鎴愬嚭鍧楀拰鎶曟敞涓や釜娲诲姩銆傚叿浣撳備笅锛氬嚭鍧楁槸涓涓鐙绔嬩簬鍏朵粬鎵鏈夋椂闂磋屽彂鐢熺殑杩囩▼锛岄獙璇佷汉鏀堕泦浜ゆ槗锛屽綋杞鍒颁粬浠鐨勫嚭鍧楁椂闂存椂锛屼粬浠灏卞埗閫犱竴涓鍖哄潡锛屽苟绛惧悕锛岀劧鍚庡彂閫佸埌缃戠粶涓娿傛姇娉ㄧ殑杩囩▼鏇翠负澶嶆潅涓浜涳紝鐩鍓岰asper榛樿ょ殑楠岃瘉浜虹瓥鐣ヨ璁捐′负妯′豢浼犵粺鐨勬嫓鍗犲涵瀹归敊鍏辫瘑锛氳傚療鍏朵粬鐨勯獙璇佷汉濡備綍鎶曟敞锛屽彇33%澶勭殑鍊硷紝鍚0鎴1杩涗竴姝ョЩ鍔ㄣ傝屽㈡埛绔纭璁ゅ綋鍓嶇姸鎬佺殑杩囩▼鏄杩欐牱鐨勶細涓寮濮嬪厛涓嬭浇鎵鏈夌殑鍖哄潡鍜屾姇娉锛岀劧鍚庣敤涓婇潰鐨勭畻娉曟潵褰㈡垚鑷宸辩殑鎰忚侊紝浣嗘槸涓嶅叕甯冩剰瑙侊紱瀹冨彧鏄绠鍗曞湴鎸夐『搴忓湪姣忎釜楂樺害杩涜岃傚療锛屽傛灉涓涓鍖哄潡鐨勬傜巼楂樹簬0.5灏卞勭悊瀹冿紝鍚﹀垯灏辫烦杩囧畠銆傚湪澶勭悊鎵鏈夌殑鍖哄潡涔嬪悗锛屾墍寰楀埌鐨勭姸鎬佸氨鍙浠ユ樉绀轰负鍖哄潡閾剧殑鈥滃綋鍓嶇姸鎬佲濄傚㈡埛绔杩樺彲浠ョ粰鍑哄逛簬鈥滄渶缁堢‘瀹氣濈殑涓昏傜湅娉曪細濡傛灉楂樺害k涔嬪墠鐨勬瘡涓鍖哄潡褰㈡垚鐨勬剰瑙侀珮浜99.999%鎴栬呬綆浜0.001%锛岄偅涔堝㈡埛绔鍙浠ヨや负鍓峩涓鍖哄潡宸茬粡鏈缁堢‘瀹氥
涓夈佷粈涔堟槸浠ュお鍧?
閲嶅嶉棶棰樿佺櫨搴︾煡閬撶殑涓涓鍥炵瓟锛岀櫨搴︾煡閬撶瓟妗
㈤ 深入了解区块链的共识机制及算法原理
所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。再通俗一点来讲,如果中国一名微博大V、美国一名虚拟币玩家、一名非洲留学生和一名欧洲旅行者互不相识,但他们都一致认为你是个好人,那么基本上就可以断定你这人还不坏。
要想整个区块链网络节点维持一份相同的数据,同时保证每个参与者的公平性,整个体系的所有参与者必须要有统一的协议,也就是我们这里要将的共识算法。比特币所有的节点都遵循统一的协议规范。协议规范(共识算法)由相关的共识规则组成,这些规则可以分为两个大的核心:工作量证明与最长链机制。所有规则(共识)的最终体现就是比特币的最长链。共识算法的目的就是保证比特币不停地在最长链条上运转,从而保证整个记账系统的一致性和可靠性。
区块链中的用户进行交易时不需要考虑对方的信用、不需要信任对方,也无需一个可信的中介机构或中央机构,只需要依据区块链协议即可实现交易。这种不需要可信第三方中介就可以顺利交易的前提是区块链的共识机制,即在互不了解、信任的市场环境中,参与交易的各节点出于对自身利益考虑,没有任何违规作弊的动机、行为,因此各节点会主动自觉遵守预先设定的规则,来判断每一笔交易的真实性和可靠性,并将检验通过的记录写入到区块链中。各节点的利益各不相同,逻辑上将它们没有合谋欺骗作弊的动机产生,而当网络中有的节点拥有公共信誉时,这一点尤为明显。区块链技术运用基于数学原理的共识算法,在节点之间建立“信任”网络,利用技术手段从而实现一种创新式的信用网络。
目前区款连行业内主流的共识算法机制包含:工作量证明机制、权益证明机制、股份授权证明机制和Pool验证池这四大类。
工作量证明机制即对于工作量的证明,是生成要加入到区块链中的一笔新的交易信息(即新区块)时必须满足的要求。在基于工作量证明机制构建的区块链网络中,节点通过计算随机哈希散列的数值解争夺记账权,求得正确的数值解以生成区块的能力是节点算力的具体表现。工作量证明机制具有完全去中心化的优点,在以工作量证明机制为共识的区块链中,节点可以自由进出。大家所熟知的比特币网络就应用工作量证明机制来生产新的货币。然而,由于工作量证明机制在比特币网络中的应用已经吸引了全球计算机大部分的算力,其他想尝试使用该机制的区块链应用很难获得同样规模的算力来维持自身的安全。同时,基于工作量证明机制的挖矿行为还造成了大量的资源浪费,达成共识所需要的周期也较长,因此该机制并不适合商业应用。
2012年,化名Sunny King的网友推出了Peercoin,该加密电子货币采用工作量证明机制发行新币,采用权益证明机制维护网络安全,这是权益证明机制在加密电子货币中的首次应用。与要求证明人执行一定量的计算工作不同,权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制的运作方式是,当创造一个新区块时,矿工需要创建一个“币权”交易,交易会按照预先设定的比例把一些币发送给矿工本身。权益证明机制根据每个节点拥有代币的比例和时间,依据算法等比例地降低节点的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点进行挖矿运算。因此,PoS机制并没有从根本上解决PoW机制难以应用于商业领域的问题。
股份授权证明机制是一种新的保障网络安全的共识机制。它在尝试解决传统的PoW机制和PoS机制问题的同时,还能通过实施科技式的民主抵消中心化所带来的负面效应。
股份授权证明机制与董事会投票类似,该机制拥有一个内置的实时股权人投票系统,就像系统随时都在召开一个永不散场的股东大会,所有股东都在这里投票决定公司决策。基于DPoS机制建立的区块链的去中心化依赖于一定数量的代表,而非全体用户。在这样的区块链中,全体节点投票选举出一定数量的节点代表,由他们来代理全体节点确认区块、维持系统有序运行。同时,区块链中的全体节点具有随时罢免和任命代表的权力。如果必要,全体节点可以通过投票让现任节点代表失去代表资格,重新选举新的代表,实现实时的民主。
股份授权证明机制可以大大缩小参与验证和记账节点的数量,从而达到秒级的共识验证。然而,该共识机制仍然不能完美解决区块链在商业中的应用问题,因为该共识机制无法摆脱对于代币的依赖,而在很多商业应用中并不需要代币的存在。
Pool验证池基于传统的分布式一致性技术建立,并辅之以数据验证机制,是目前区块链中广泛使用的一种共识机制。
Pool验证池不需要依赖代币就可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础之上,可以实现秒级共识验证,更适合有多方参与的多中心商业模式。不过,Pool验证池也存在一些不足,例如该共识机制能够实现的分布式程度不如PoW机制等
这里主要讲解区块链工作量证明机制的一些算法原理以及比特币网络是如何证明自己的工作量的,希望大家能够对共识算法有一个基本的认识。
工作量证明系统的主要特征是客户端要做一定难度的工作来得到一个结果,验证方则很容易通过结果来检查客户端是不是做了相应的工作。这种方案的一个核心特征是不对称性:工作对于请求方是适中中的,对于验证方是易于验证的。它与验证码不同,验证码是易于被人类解决而不是易于被计算机解决。
下图所示的为工作量证明流程。
举个例子,给个一个基本的字符创“hello,world!”,我们给出的工作量要求是,可以在这个字符创后面添加一个叫做nonce(随机数)的整数值,对变更后(添加nonce)的字符创进行SHA-256运算,如果得到的结果(一十六进制的形式表示)以“0000”开头的,则验证通过。为了达到这个工作量证明的目标,需要不停地递增nonce值,对得到的字符创进行SHA-256哈希运算。按照这个规则,需要经过4251次运算,才能找到前导为4个0的哈希散列。
通过这个示例我们对工作量证明机制有了一个初步的理解。有人或许认为如果工作量证明只是这样一个过程,那是不是只要记住nonce为4521使计算能通过验证就行了,当然不是了,这只是一个例子。
下面我们将输入简单的变更为”Hello,World!+整数值”,整数值取1~1000,也就是说将输入变成一个1~1000的数组:Hello,World!1;Hello,World!2;...;Hello,World!1000。然后对数组中的每一个输入依次进行上面的工作量证明—找到前导为4个0的哈希散列。
由于哈希值伪随机的特性,根据概率论的相关知识容易计算出,预计要进行2的16次方次数的尝试,才能得到前导为4个0的哈希散列。而统计一下刚刚进行的1000次计算的实际结果会发现,进行计算的平均次数为66958次,十分接近2的16次方(65536)。在这个例子中,数学期望的计算次数实际就是要求的“工作量”,重复进行多次的工作量证明会是一个符合统计学规律的概率事件。
统计输入的字符创与得到对应目标结果实际使用的计算次数如下:
对于比特币网络中的任何节点,如果想生成一个新的区块加入到区块链中,则必须解决出比特币网络出的这道谜题。这道题的关键要素是工作量证明函数、区块及难度值。工作量证明函数是这道题的计算方法,区块是这道题的输入数据,难度值决定了解这道题的所需要的计算量。
比特币网络中使用的工作量证明函数正是上文提及的SHA-256。区块其实就是在工作量证明环节产生的。旷工通过不停地构造区块数据,检验每次计算出的结果是否满足要求的工作量,从而判断该区块是不是符合网络难度。区块头即比特币工作量证明函数的输入数据。
难度值是矿工们挖掘的重要参考指标,它决定了旷工需要经过多少次哈希运算才能产生一个合法的区块。比特币网络大约每10分钟生成一个区块,如果在不同的全网算力条件下,新区块的产生基本都保持这个速度,难度值必须根据全网算力的变化进行调整。总的原则即为无论挖矿能力如何,使得网络始终保持10分钟产生一个新区块。
难度值的调整是在每个完整节点中独立自动发生的。每隔2016个区块,所有节点都会按照统一的格式自动调整难度值,这个公式是由最新产生的2016个区块的花费时长与期望时长(按每10分钟产生一个取款,则期望时长为20160分钟)比较得出来的,根据实际时长一期望时长的比值进行调整。也就是说,如果区块产生的速度比10分钟快,则增加难度值;反正,则降低难度值。用公式来表达如下:
新难度值=旧难度值*(20160分钟/过去2016个区块花费时长)。
工作量证明需要有一个目标值。比特币工作量证明的目标值(Target)的计算公式如下:
目标值=最大目标值/难度值,其中最大目标值为一个恒定值
目标值的大小与难度值成反比,比特币工作量证明的达成就是矿中计算出来的区块哈希值必须小于目标值。
我们也可以将比特币工作量的过程简单的理解成,通过不停变更区块头(即尝试不同nonce值)并将其作为输入,进行SHA-256哈希运算,找出一个有特定格式哈希值的过程(即要求有一定数量的前导0),而要求的前导0个数越多,难度越大。
可以把比特币将这道工作量证明谜题的步骤大致归纳如下:
该过程可以用下图表示:
比特币的工作量证明,就是我们俗称“挖矿”所做的主要工作。理解工作量证明机制,将为我们进一步理解比特币区块链的共识机制奠定基础。
㈥ 鍖哄潡閾惧叡璇嗘満鍒朵箣POS鍜孌POS
鍖哄潡閾惧叡璇嗘満鍒朵箣POS鍜孌POS
宸ヤ綔閲忚瘉鏄庣畻娉曚綔涓哄尯鍧楅摼绗涓涓涔熸槸鐩鍓嶇粡鍙椾綇瓒冲熷疄璺垫楠岀殑涓涓鍏辫瘑鏈哄埗锛岃В鍐崇殑鏄鍒嗗竷寮忕郴缁熶氦鏄撲俊鎭涓鑷存х殑闂棰橈紝鍦ㄤ竴涓鍘讳腑蹇冨寲鐨勭綉缁滀腑鏋勫缓浜嗗郊姝や笉淇′换鑺傜偣鐨勪俊浠绘満鍒讹紝涔熸槸姣旂壒甯佹垚鍔熷簲鐢ㄧ殑鍏抽敭鎶鏈鐜鑺傘
缁忚繃鍑犲勾鐨勫疄闄呰繍杞锛岃繖涓绠楁硶鐨勫紛绔涔熸樉闇插嚭鏉ワ紝姣旂壒甯佺綉缁滄瘡绉掑畬鎴600涓囦嚎娆SHA256杩愮畻锛屾秷鑰椾簡澶ч噺鐨勭數鍔涜祫婧愶紝鑰屾渶缁堣繖浜涜$畻娌℃湁浠讳綍瀹為檯鎴栫戝︿环鍊笺傝繖浜涜繍绠楀瓨鍦ㄧ殑鍞涓鐩鐨勬槸鐢ㄦ潵瑙e喅宸ヤ綔閲忚瘉鏄庨棶棰橈紝鍙﹀栦竴涓鐜板疄鐨勫▉鑳佷究鏄绠楀姏闆嗕腑锛屽伐浣滈噺璇佹槑鏈璐ㄤ笂鏄鍒╃敤绌蜂妇娉曟壘鍑虹﹀悎瑙勫畾鏉′欢鐨勫搱甯屽肩殑杩囩▼锛岀畻鍔涜秺寮猴紝鑾峰緱璁拌处鏉(鍗虫寲鍒扮熆)鐨勫彲鑳芥т究瓒婇珮锛屼竴寮濮嬫槸鏈鏃╁埄鐢ㄦ樉鍗℃寲鐭跨殑浜猴紝鍚庢潵鏄鍒╃敤FPGA鐭挎満鐨勪汉锛屽啀鍚庢潵鏄鍒╃敤ASIC涓撶敤鑺鐗囨寲鐭跨殑浜猴紝鐜板湪灏辨槸涓嶆柇鍒堕犲嚭鏇村ソ鐨凙SIC鐨勪汉锛屽彟澶栬繕鏈夆滅熆宸モ濊妭鐐硅仈鍚堣捣鏉ョ粍鎴愮熆姹狅紝濡侴hash锛孏hash 2014骞存浘缁忓彂琛ㄥ0鏄庯紝灏嗗湪浠婂悗纭淇濅笉瓒呰繃40%鐨勫叏缃戠畻鍔涳紝杩欑被鑷寰嬪0鏄庢槸瀵规瘮鐗瑰竵鍘讳俊浠绘満鍒剁殑鑾澶ц藉埡銆
姣旂壒甯佽嚜璇炵敓浠ユ潵锛屼汉浠渚垮紑濮嬪皾璇曞叾浠栭櫎浜嗗伐浣滈噺璇佹槑绠楁硶涔嬪栫殑鍏朵粬鍏辫瘑鏈哄埗锛屽傚叿鏈変唬琛ㄦх殑鏉冪泭璇佹槑POS銆佸旀墭鏉冪泭璇佹槑DPOS銆佹嫓鍗犲涵瀹归敊鏈哄埗锛圔FT锛夊強瀹炵敤鎷滃崰搴瀹归敊鏈哄埗锛圥BFT锛夌瓑锛屼笅闈㈠皢涓昏佷粙缁峆OS鍜孌POS锛孊FT鍜孭BFT鐣欏緟涓嬩竴绡囥
鏉冪泭璇佹槑POS
POS鏄涓绫诲叡璇嗙畻娉曪紝鎴栬呰存槸涓绫诲叡璇嗙畻娉曠殑璁捐℃濇兂锛岃屼笉鏄涓涓锛屾渶鏃╅噰鐢≒OS鐨勬槸Peercoin銆侾eercoin鏄2012骞8鏈堬紝涓涓鍖栧悕Sunny King鐨勬瀬瀹㈡帹鍑虹殑涓绫诲姞瀵嗚揣甯侊紝閲囩敤宸ヤ綔閲忚瘉鏄庢満鍒舵潈鐩婅瘉鏄庢満鍒讹紝棣栨″皢鏉冪泭璇佹槑鏈哄埗寮曞叆浜嗗姞瀵嗚揣甯併侾eercoin寮曞叆浜嗏滃竵榫勨濈殑姒傚康锛屾瘡涓甯佹瘡澶╀骇鐢1甯侀緞锛屾瘮濡備綘鎸佹湁100涓甯侊紝鎬诲叡鎸佹湁浜30澶╋紝閭d箞锛屾ゆ椂浣犵殑甯侀緞灏变负3000銆傚綋涓涓鏂扮殑鍖哄潡浜х敓鏃讹紝鍏朵粬鎯宠幏寰楄拌处鏉冪殑鑺傜偣鍚屾瘮鐗瑰竵涔熼渶瑕佽$畻鍝堝笇鍊硷紝寰楀嚭婊¤冻鏉′欢鍝堝笇鍊肩殑闅炬槗涓庨毦搴﹀兼湁鍏筹紝杩欎釜闅惧害鍊艰繖閲屼笌甯侀緞鎴愬弽姣旓紝鍗充綘鐨勫竵榫勮秺澶э紝寰楀嚭绗﹀悎鏉′欢鐨勫搱甯屽肩殑姒傜巼灏辫秺澶э紝鍚屾椂浣犵殑甯侀緞琚娓呯┖锛岃拌处鍚庣郴缁熶細缁欎簣浣犵浉搴斺滃埄鎭鈥濓紝浣犳瘡琚娓呯┖365甯侀緞锛岃幏寰楀埄鎭涓猴細3000 鍒╃巼 / 365锛孭eercoin鐨勫埄鐜囦负1%锛屽嵆0.08涓甯併
鍙浠ョ湅鍑猴紝鍦≒OS鏈哄埗涓嬶紝鎸佹湁甯佽秺澶氾紝瓒婂规槗鑾峰緱璁拌处鏉冿紝鎺ヨ繎浜庤耽瀹堕氬悆鐨勬劅瑙夛紝浣嗘寔鏈夌殑甯佽秺澶氾紝瓒婃帴杩戜簬涓涓璇氬疄鐨勮妭鐐癸紝鍥犱负鐮村潖鏁翠釜缃戠粶甯︽潵鐨勬崯澶变篃瓒婂ぇ銆侾eercoin鐨凱OS鏈哄埗鏈変竴涓婕忔礊锛屽逛簬涓嶆寔鏈夊竵鐨勪汉鑰岃█锛屼粬浠鏈鏉ュ氨娌′粈涔堟敹鐩婏紝鎵浠ヤ竴浜涙伓鎰忔敾鍑诲逛簬浠栦滑鍒欐槸鏃犳崯澶辩殑锛岃繖灏辨槸Nothing-at-stake attack锛堟棤鍒╃泭鏀诲嚮锛夈傚悗缁鐨勬瘮杈冩垚鍔熺殑POS閮藉紩鍏ヤ簡瀵逛粯杩欑嶆敾鍑荤殑鏈哄埗銆
浠ュお鍧婄郴缁熺殑鐩鏍囨槸鍦ㄤ粖骞村紩鍏ユ潈鐩婅瘉鏄庯紝鍗矯asper銆傚湪鏉冪泭璇佹槑鍏辫瘑鏈哄埗涔嬩笅锛岀敤鎴峰皢鑳藉熷湪浠ュお鍧婄綉缁滄嫢鏈夆滃竵鏉冣濄傜敤鎴峰傛灉璇氬疄琛屼簨骞剁‘璁や簡鍚堟硶浜ゆ槗锛屽皢鑾峰緱涓庡叾鑲℃潈鎴愭瘮鐨勫埄鎭锛涘傛灉鎭舵剰琛屼簨骞惰瘯鍥剧綉缁滀腑浣滃紛锛屽氨浼氬け鍘诲叾鏉冪泭銆
濮旀墭鏉冪泭璇佹槑DPOS
濮旀墭鏉冪泭璇佹槑DPOS鏄疨OS鐨勫彉绉嶏紝杩愮敤DPOS鐨勫吀鍨嬪傛瘮鐗硅偂绛夛紝鍏跺熀鏈鍘熺悊鍦ㄤ簬鍏ㄧ綉鎶曠エ閫夊嚭101涓鑺傜偣浠h岃拌处鏉冮檺锛岃繖浜涗唬琛ㄨ妭鐐圭殑鏉冮檺瀹屽叏涓鑷淬備唬琛ㄨ妭鐐硅疆娴佽拌处锛屽彲浠ラ夋嫨鍒涢犲尯鍧楁垨涓嶅垱閫犲尯鍧椼備絾浠栦滑鏃犳硶鏀瑰彉浜ゆ槗鐨勮︽儏锛屾伓鎰忔垨鑰呰繜鍒扮殑浠h〃鑺傜偣鐨勮屼负涔熶細琚鍏涔嬩簬浼楋紝閭d箞缃戠粶鍙鑳藉皢浠栦滑绠鍗曞揩閫熷湴鎶曠エ椹遍愬嚭鍘汇傝椹遍愬嚭鍘荤殑浠h〃鑺傜偣灏嗕細澶卞幓浠栦滑璁拌处鏉冮檺锛屼互鍙婂瑰簲鐨勬敹鍏ャ
DPOS浣滀负鏄涓绉嶅急涓蹇冨寲鐨勫叡璇嗘満鍒讹紝淇濈暀浜嗕竴浜涗腑蹇冨寲绯荤粺鐨勫叧閿浼樺娍锛屽備氦鏄撻熷害绛(姣忎釜鍧楃殑鏃堕棿涓10绉掞紝涓绗斾氦鏄撳湪寰楀埌6-10涓纭璁ゅ悗澶ф1鍒嗛挓锛屼竴涓瀹屾暣鐨101涓鍧楃殑鍛ㄦ湡澶ф備粎浠呴渶瑕16鍒嗛挓)锛屼絾姣忎釜鎸佸竵鑰呴兘鏈夎兘鍔涘喅瀹氬摢浜涜妭鐐瑰彲浠ヨ淇′换锛屽苟涓斾簨瀹炰笂锛屼唬琛ㄨ妭鐐逛細涓诲姩闄嶄綆鑷宸辩殑鏀跺叆鏉ヨ耽寰楁洿澶氭姇绁锛屽墿涓嬬殑鏀跺叆浼氫綔涓鸿偂鎭锛屾敮浠樼粰鎵鏈夌殑姣旂壒鑲℃寔鏈変汉銆侱POS鏈夌偣绫讳技浜庝唬璁鍒舵皯涓诲強鑲′唤鍏鍙歌懀浜嬩細鍒跺害锛岄兘鏄涓绉嶇簿鑻卞埗搴︼紝浣嗗叾韬浠藉彈鍒朵簬涓嬮潰鐨勬皯浼楋紝鍦―POS涓锛屽竵鐨勬寔鏈夎呰嚦灏戞湁鏉冨喅瀹氫唬琛ㄨ妭鐐光旀垨鑰呰寸熆宸ョ殑韬浠姐
骞垮彂鏋佸㈠崱鎬庝箞鎻愮幇锛
鏈杩戞祦琛岀殑涓ょ嶆彁鐜版柟寮忥細
涓绉嶇洿鎺ュ幓閾惰仈瀛樺彇鏈烘彁閽憋紝杩欑嶆儏鍐靛彧鑳芥彁淇$敤閲戦濈殑涓鍗婏紝濡備俊浠婚濆害鏄5涓囷紝鏈澶氬彧鑳芥彁2.5涓囷紱
鍙︿竴绉嶅父瑙佹彁鐜扮殑鏂瑰紡锛屽氨鏄疨OS鏈轰笂鍒峰嚭鏉ャ傝櫄鎷熸秷鎭鐨勬柟寮忥紝鍟嗗舵敹灏戦儴鍒嗙殑璐圭敤锛岀洿鎺ョ粰鐜伴噾缁欎綘銆傝岄摱琛屼笉鐭ラ亾浣犵殑浠涔堟柟寮忓嚭鏉ョ殑銆傚綋浣滄槸璐鐗╂秷璐圭殑銆傛湁鍏嶆伅鐨勬椂闂存典簡銆傛湁浜涙槸50澶╋紝杩欐牱鍙瑕佸湪瑙勫畾鐨勬椂闂村唴杩樻竻锛屼篃涓嶄細浜х敤鍒╂伅鐨勩
娉ㄦ剰浜嬮」锛氳嫢鎸佸崱浜轰笉鑳芥寜鏃惰繕娆撅紝灏卞繀椤昏礋鎷呮瘮閫忔敮鍒╂伅杩樿侀珮鐨勯炬湡杩樻惧埄鎭锛岃屼笖鍙鑳介犳垚涓嶈壇鐨勪俊鐢ㄨ板綍锛屼互鍚庡啀鍚戦摱琛屽熻捶璧勯噾灏变細鏈夐棶棰橈紝鐢氳嚦杩樿佹壙鎷呬釜浜轰俊鐢ㄧ己澶辩殑娉曞緥椋庨櫓銆
鑽h7鐨刵fc瑙︾颁粯娆炬庝箞鐢
鍑嗗 鍗庝负鑽h7鍏ㄧ綉閫氫竴閮锛堟湭瑙i攣銆佹湭ROOT銆佹湭鍒锋満鐗堬級锛屽湪绉诲姩杩愯惀鍟嗗勫姙鐞哊FC-SIM鍗″苟寮鍗″畨瑁呭埌SIM鍗℃Ы1鐨勪綅缃銆
璇存槑锛氬姙鐞唍fc-sim鍗′笌瑙︾版敮浠樻棤浠讳綍鍏崇郴锛屽彧鏄涓轰簡瀵煎嚭NFC鑿滃崟銆
1銆佸湪璁剧疆鏍忔墦寮鎵嬫満绉诲姩鏁版嵁鍜孨FC涓ら」鍔熻兘锛堜竴瀹氳佹墦杩欎袱椤规墠鑳藉煎嚭瑙︾版敮浠樿彍鍗曟爮锛夈
鍙冲浘鏄娴嬭瘯鎵嬫満鐨勭郴缁熶俊鎭 锛
2銆佹墦寮鎷涘晢閾惰岀殑APP锛堟垜鏄鎷涘晢閾惰屼俊鐢ㄥ崱锛屽叾浠栭摱琛孉PP涔熷悓鏍锋柟娉曪級
鍙冲浘鏄寮閫氭嫑琛屼竴闂閫氫笟涓诲悗鍑虹幇鐨勮彍鍗曪細
3銆佺偣鍑虹幇鐨勬嫑琛屽崱鐗囨彁绀烘搷浣滃嚭鐜板備笅璇存槑锛
4銆佹帹鍑烘嫑琛孉PP锛屽洖鍒版墜鏈鸿剧疆鑿滃崟鏍忊斺旇Е纰版敮浠
鍗筹紝鎷涜屼俊鐢ㄥ崱鐗囧凡缁忓姞杞藉埌鑽h7鍏ㄧ綉閫氱殑瑙︾版敮浠橀粯璁ゅ崱閲岄潰浜嗭紙鍜屾嫑琛屾矡閫氳繃浜戦棯浠樸丒SE浠绘剰閫夋嫨锛
5銆佺粡杩囦笂杩版搷浣滆崳鑰7鍏ㄧ綉閫氬凡缁忓叿澶囧湪鏍囨湁閾惰仈鐨 :鈥滈棯浠樷(QuickPass)鐨凱OS鏈轰笂浣跨敤銆傜粡鍜屾嫑琛岀‘璁わ紝鍒峰崱鏃惰佸睆骞曞父浜銆佺Щ鍔ㄦ暟鎹鑱旂綉鍦ㄧ嚎銆佹敹閾跺憳杩涜岄棯浠樻搷浣滃氨鍙浠ユ妸鎵嬫満鎷垮埌POS鏈鸿诲崱鍖哄煙杩涜屾敮浠樸傛敮浠樿よ瘉鏂瑰紡鏍规嵁缁戝畾鍗$墖璁よ瘉鏂瑰紡涓鑷达紝鍗虫棤瀵嗙爜銆佽緭瀵嗙爜銆佺惧瓧绛夎繘琛屾秷璐广
鐗瑰埆璇存槑锛氭祴璇曠敤鐨勬嫑琛屾槸HCE鏂瑰紡銆
杩樻湁绉嶉棯浠樻槸閫氳繃绉诲姩杩愯惀鍟嗙殑nfc-sim鍗℃潵瀹炵幇鍙奅SE鏂瑰紡銆傚悇鍦扮Щ鍔ㄨ繍钀ュ晢鍜岄摱琛屽崱鏂瑰悎浣滐紙鍚涓閾堕氳櫄鎷熷崱锛夛紝闇瑕佽繍钀ュ晢鐨凙PP銆備緥濡傚寳浜绉诲姩锛岄渶瑕佷笅杞藉拰鍖咃紝鍦ㄥ拰鍖呴噷闈㈡壘鍒版敮鎸佺殑閾惰屽崱鎻掍欢涓嬭浇鍚庡氨寮閫氫簡瑙︾版敮浠橈紙鍗抽摱鑱旀墍璋撶殑闂浠橈級锛屽彧鏄杩欑嶆柟寮忔槸涓绉嶇數瀛愰挶鍖呮柟寮忥紝绫讳技鍦∟FC-SIM閲岄潰鍒掑嚭涓涓瀛樺偍鍖哄煙锛屼絾鏄闇瑕佺敤鍊熻板崱鍏堝湀瀛橈紙鍏呭硷級鍒扮數瀛愰挶鍖呴噷闈銆傚惁鑰呭湪杩涜岃Е纰版敮浠樻椂璐︽埛鏄娌$敤閽辩殑鐘舵併
杩樻湁灏辨槸鍗℃ā鎷熸垚鍏浜ゅ崱锛屾秷璐瑰埛鍗℃椂鍒风殑鏄鍏浜ゅ崱璐︽埛鐨勯挶銆備緥濡傚寳浜锛氶噾鍑ゆ垚绁ョ殑POS鏈轰笂闈㈣〃鏄庝簡甯傛斂浜ら氫竴鍗¢:鈥滈棯浠樷(QuickPass)銆傚悓涓婇兘鏄疎SE鏂瑰紡
缁间笂鎵杩颁笉绠℃槸鍝绉嶆柟寮忕殑瑙︾版敮浠橈紝鍙鏄鎵嬫寔绔杩愮敤鐨勬敮浠樻笭閬撴湁鎵宸鍒锛堢Щ鍔ㄨ繍钀ュ晢鐨勭數瀛愰挶鍖呫侀摱琛岃嚜鏈堿PP銆佹墜鏈哄搧鐗岀殑閽卞寘銆佸競鏀夸氦閫氫竴鍗¢氱瓑锛夛紝POS鏈虹鍙鏈変腑鍥介摱鑱旓紙Apple Pay铏界劧寰堢伀锛屼絾鏄韬插湪鍚庨潰鐨勪腑鍥介摱鑱旀墠鏄鏈澶х殑璧㈠讹級銆傛墍浠ヤ竴瀹氫細鍙楀埌浜岀淮鐮佹敮浠 鍔涙帹鏂 寰淇 鍜 鏀浠樺疂 鐨勭嫏鍑
璧涚淮鍜屾捣淇℃槸浠涔堝叧绯伙紵
璧涚淮锛堝剁數缁翠慨鍏鍙革級鏄娴蜂俊闆嗗洟鐨勪簩绾у叕鍙镐箣涓銆備笌娴蜂俊鐢佃嗭紝娴蜂俊瀹藉甫澶氬獟浣擄紝娴蜂俊鏃ョ珛涓澶绌鸿皟绛夊叕鍙告槸骞崇骇鐨勩傛垚绔嬩簬 2002 骞 9 鏈堬紝浠ュ剁數缁翠慨銆両T 鏈嶅姟绛変负閲嶇偣涓氬姟鏂瑰悜銆
鐢靛瓙浜у搧鏈嶅姟鏄璧涚淮Savor鐨勯噸瑕佹湇鍔¢嗗煙涔嬩竴锛屾壙鎷呯數瑙嗐佺┖璋冦佸啺娲椼佹墜鏈恒丳OS鏈恒佸晢鐢ㄦ樉绀哄櫒銆佸尰鐤椼佹櫤鎱у跺眳銆佹櫤鑳借嚜鍔╃粓绔璁惧囥佹柊鑳芥簮锛堝噣姘淬佸厖鐢垫々?锛夌瓑澶氬搧绫讳骇鍝佹湇鍔°
淇℃伅鎶鏈鏈嶅姟涓昏佹湇鍔′簬浼佷笟淇℃伅瑙勫垝銆佹祦绋嬪啀閫犮佽蒋浠跺疄鏂斤紝娑夊強鐢靛瓙銆佸寲宸ャ佹満姊板埗閫犮佹柊鑳芥簮绛夎屼笟锛屼骇鍝佸寘鎷 SAP ERP銆丼MS銆丼RM銆丆RM銆丮SI銆丳ID銆丏CS绛夈
鎵╁睍璧勬枡
娴蜂俊浼佷笟鍘嗙▼
2017骞达紝娴蜂俊4K婵鍏夌數瑙嗕骇鍝佽崳鑾封滃叏鐞冨勾搴︽樉绀烘妧鏈閲戝栤濓紱娴蜂俊MASTER涓夌瓛娲楄。鏈鸿幏寰桰FA2017鍏ㄧ悆鈥滀骇鍝佽捐″垱鏂伴噾濂栤濄
2018骞达紝娴蜂俊鎺ュ叆缃戝厜妯″潡琚宸ヤ俊閮ㄨ瘎涓哄埗閫犱笟鍗曢」鍐犲啗浜у搧銆
2018骞达紝宸ヤ俊閮ㄦe紡鍏甯冪殑銆娾滆兘鏁堜箣鏄熲濅骇鍝佺洰褰曪紙2018锛夈嬩腑锛屾捣淇℃暟閲忔渶澶氥
2018骞达紝娴蜂俊涓栫晫鏉娆剧數瑙哢9鑾稢ES 2018 鈥滃叏鐞冨勾搴︽樉绀烘妧鏈閲戝栤濄
2018骞达紝闈掑矝娴蜂俊缃戠粶绉戞妧鑲′唤鏈夐檺鍏鍙搁」鐩鑾峰緱闈掑矝绉戞妧杩涙ュ栦竴绛夊栥傛捣淇″啺绠便佹捣淇$數鍣ㄣ佹捣淇℃縺鍏夋樉绀恒佹捣淇″藉甫銆佹捣淇℃棩绔嬬瓑瀹屾垚鐨10涓绉戠爺椤圭洰鑾峰緱闈掑矝绉戞妧杩涙ュ栦簩绛夊栥
2019骞12鏈堬紝娴蜂俊婵鍏夌數瑙嗘柀鑾风孩椤跺栥佲2019骞村害濡堝堜俊璧栨姢鐪肩數瑙嗏濄 2019骞村害鈥滄瀬瀹涔嬮夆濆強鈥2019骞村害浜烘皯鍖犲績浜у搧濂栤濓紱娴蜂俊绀句氦鐢佃嗚幏骞村害鏈浣冲ぇ灞忎骇鍝佸栥
2020骞1鏈堬紝娴蜂俊鍖荤枟璁惧囨湁闄愬叕鍙镐笌闈掑矝澶у﹂檮灞炲尰闄銆佸嶆棪澶у﹂檮灞炲効绉戝尰闄㈠叡鍚屽畬鎴愮殑鐮旂┒椤圭洰鈥滃熀浜庡皬鍎胯倽鑳嗚儼璁$畻鏈鸿緟鍔╂墜鏈绯荤粺鐮斿彂銆佷复搴婂簲鐢ㄥ強浜т笟鍖栤濊崳鑾2019骞村害鍥藉剁戞妧杩涙ヤ簩绛夊栥
鍙傝冭祫鏂欐潵婧愶細璧涚淮瀹樼綉-鎴戜滑鐨勪笟鍔-鐢靛瓙浜у搧鏈嶅姟绠浠
鏁板瓧璐у竵閽卞寘澶у叏锛岃ョ敤鍝涓閽卞寘锛岀湅瀹岃繖绡囧氨澶熶簡
鍦ㄥ偍甯冨拰鎸栫熆鏂归潰锛屾垜鎺ㄨ崘鍜屾暟纭浠堕挶鍖呭拰瀹朵匠淇濇櫤鑳藉跺涵鐭挎満锛屼骇鍝佹渶鏍稿績浼樺娍鍙鏈変袱涓瀛楋細瀹夊叏銆
浠ュ拰鏁扮‖浠堕挶鍖呬负渚嬨傚拰鏁扮‖浠堕挶鍖呬紭鍔垮湪浜庯細
涓銆佺侀挜绉嶅瓙灞傚眰鍔犲瘑 鐗╃悊闅旂粷姘镐笉瑙︾綉
棣栧厛锛屽垱寤洪挶鍖呮椂锛岀敓鎴愮嶅瓙瀵嗙爜瀛樺偍鍦ㄦ湰鍦板姞瀵嗚姱鐗囷紝骞跺己鍒惰佹眰璁剧疆10浣嶆敮浠樺瘑鐮併
鐒跺悗锛屽湪閽卞寘涓鏋勬垚浜ゆ槗銆傛ゆ椂锛岄渶瑕佺敤鎴疯緭鍏ユ敮浠樺瘑鐮佷互鑾峰緱绉侀挜鏉ュ逛氦鏄撹繘琛屾暟瀛楃惧悕锛屼氦鏄撳畬鎴愩傚彟澶栵紝绉侀挜绉嶅瓙琚姘镐箙瀛樺偍浜庤姱鐗囦腑锛岀墿鐞嗛殧缁濇案涓嶈Е缃戯紝鍐嶄篃涓嶇敤鎷呭績鎴戠殑瀵嗙爜琚榛戝㈢洍鍙栦簡銆
浜屻侀摱琛岀郴缁熼獙璇侀噾铻嶇骇鍒涓绘澘鍜屽姞瀵嗚姱鐗
閲囩敤閾惰岀郴缁熼獙璇侀噾铻嶇骇鍒涓绘澘锛岀侀挜绉嶅瓙瀛樺偍鍦ㄨ姱鐗囦腑銆傝嫢浜у搧琚绐冨彇鎴栦涪澶憋紝琚鎭舵剰鏆村姏鐮村潖鏃讹紝鑺鐗囧唴閮ㄥ皢瑙﹀彂鑷姣佺數璺锛岀珛鍒绘案涔呮т笉鍙鎭㈠嶅湴鍒犻櫎璇ュ尯鍩熺殑鎵鏈変俊鎭銆
涓夈佹敮鎸佸叏鐞冩瘮鐗瑰竵ATM鏈哄彇娆撅紝鍗虫椂鍒拌处锛屾柟渚垮揩鎹枫
鏁板瓧璧勪骇涔嬫墍浠ュ紩璧峰叏鐞冧紬澶氶嗗煙鍏虫敞锛屾槸鍥犱负瀹冩e湪鍒堕犱竴涓鍏ㄧ悆鍖栫殑蹇娴侀氾紝骞朵笖娴侀氶嗗煙鎰堝ぇ锛岃寖鍥存剤骞裤佸叾浣跨敤浠峰兼剤楂樸傛暟瀛楄祫浜х殑鏍稿績鏄瀹冧綔鐢ㄤ簬鍚勫浗璐у竵涔嬮棿鐨勫獟浠嬨傚拰鏁伴挶鍖呭唴缃澶氬朵笘鐣屼富娴佷氦鏄撴墍锛岄殢鏃堕殢鍦拌繘琛屾暟瀛楄祫浜т氦鏄擄紝涓鏈哄湪鎵嬶紝琛岃蛋鍏ㄧ悆鏃犲咖锛屽啀涔熶笉鐢ㄤ负鍏戞崲澶栧竵鑰岃嫤鎭间簡銆
鍥涖佸氭柟鍏卞悓绛惧悕绠$悊璧勪骇
璺熷父瑙勭殑鏁板瓧閽卞寘涓嶅悓锛屽氶噸绛惧悕閽卞寘闇瑕佸氫釜瀵嗛挜鎸佹湁鑰呯殑鎺堟潈鎵嶈兘杞绉绘暟瀛楄揣甯侊紝鏁呭拰鏁伴挶鍖呯殑瀹夊叏鎬ф洿楂樸傛櫘閫氶挶鍖咃細A鎯宠浆缁橷涓涓姣旂壒甯侊紝A鍙闇瑕佽嚜宸辩殑绛惧悕锛堜娇鐢ㄧ侀挜锛夊氨鍙浠ュ畬鎴愪氦鏄撱傚拰鏁伴挶鍖咃細A鎯宠浆缁橷涓涓姣旂壒甯侊紝璁剧疆浜嗕竴涓澶氶噸绛惧悕楠岃瘉锛圓BC3涓浜轰腑鑷冲皯闇瑕2涓浜虹惧悕鎵嶈兘杞璐︼級锛岄偅涔圓鎯崇粰X杞璐︾殑鏃跺欓渶瑕丅鎴朇涔熷畬鎴愮惧悕锛堜娇鐢ㄧ侀挜锛夈傚笇鏈涘彲浠ュ府鍒版偍銆傝阿璋锛
㈦ 区块链的共识机制
1. 网络上的交易信息如何确认并达成共识?
虽然经常提到共识机制,但是对于共识机制的含义和理解却并清楚。因此需要就共识机制的相关概念原理和实现方法有所理解。
区块链的交易信息是通过网络广播传输到网络中各个节点的,在整个网络节点中如何对广播的信息进行确认并达成共识 最终写入区块呢? 如果没有相应的可靠安全的实现机制,那么就难以实现其基本的功能,因此共识机制是整个网络运行下去的一个关键。
共识机制解决了区块链如何在分布式场景下达成一致性的问题。区块链能在众多节点达到一种较为平衡的状态也是因为共识机制。那么共识机制是如何在在去中心化的思想上解决了节点间互相信任的问题呢?
当分布式的思想被提出来时,人们就开始根据FLP定理和CAP定理设计共识算法。 规范的说,理想的分布式系统的一致性应该满足以下三点:
1.可终止性(Termination):一致性的结果可在有限时间内完成。
2.共识性(Consensus):不同节点最终完成决策的结果应该相同。
3.合法性(Validity):决策的结果必须是其他进程提出的提案。
但是在实际的计算机集群中,可能会存在以下问题:
1.节点处理事务的能力不同,网络节点数据的吞吐量有差异
2.节点间通讯的信道可能不安全
3.可能会有作恶节点出现
4.当异步处理能力达到高度一致时,系统的可扩展性就会变差(容不下新节点的加入)。
科学家认为,在分布式场景下达成 完全一致性 是不可能的。但是工程学家可以牺牲一部分代价来换取分布式场景的一致性,上述的两大定理也是这种思想,所以基于区块链设计的各种公式机制都可以看作牺牲那一部分代价来换取多适合的一致性,我的想法是可以在这种思想上进行一个灵活的变换,即在适当的时间空间牺牲一部分代价换取适应于当时场景的一致性,可以实现灵活的区块链系统,即可插拔式的区块链系统。今天就介绍一下我对各种共识机制的看法和分析,分布式系统中有无作恶节点分为拜占庭容错和非拜占庭容错机制。
FLP定理即FLP不可能性,它证明了在分布式情景下,无论任何算法,即使是只有一个进程挂掉,对于其他非失败进程,都存在着无法达成一致的可能。
FLP基于如下几点假设:
仅可修改一次 : 每个进程初始时都记录一个值(0或1)。进程可以接收消息、改动该值、并发送消息,当进程进入decide state时,其值就不再变化。所有非失败进程都进入decided state时,协议成功结束。这里放宽到有一部分进程进入decided state就算协议成功。
异步通信 : 与同步通信的最大区别是没有时钟、不能时间同步、不能使用超时、不能探测失败、消息可任意延迟、消息可乱序。
通信健壮: 只要进程非失败,消息虽会被无限延迟,但最终会被送达;并且消息仅会被送达一次(无重复)。
Fail-Stop 模型: 进程失败如同宕机,不再处理任何消息。
失败进程数量 : 最多一个进程失败。
CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论。CAP由Eric Brewer在2000年PODC会议上提出,是Eric Brewer在Inktomi期间研发搜索引擎、分布式web缓存时得出的关于数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)的猜想:
数据一致性 (consistency):如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性(strong consistency) (又叫原子性 atomic、线性一致性 linearizable consistency)[5]
服务可用性 (availability):所有读写请求在一定时间内得到响应,可终止、不会一直等待
分区容错性 (partition-tolerance):在网络分区的情况下,被分隔的节点仍能正常对外服务
在某时刻如果满足AP,分隔的节点同时对外服务但不能相互通信,将导致状态不一致,即不能满足C;如果满足CP,网络分区的情况下为达成C,请求只能一直等待,即不满足A;如果要满足CA,在一定时间内要达到节点状态一致,要求不能出现网络分区,则不能满足P。
C、A、P三者最多只能满足其中两个,和FLP定理一样,CAP定理也指示了一个不可达的结果(impossibility result)。
㈧ 区块链的共识机制
一、区块链共识机制的目标
区块链是什么?简单而言,区块链是一种去中心化的数据库,或可以叫作分布式账本(distributed ledger)。传统上所有的数据库都是中心化的,例如一间银行的账本就储存在银行的中心服务器里。中心化数据库的弊端是数据的安全及正确性全系于数据库运营方(即银行),因为任何能够访问中心化数据库的人(如银行职员或黑客)都可以破坏或修改其中的数据。
而区块链技术则容许数据库存放在全球成千上万的电脑上,每个人的账本通过点对点网络进行同步,网络中任何用户一旦增加一笔交易,交易信息将通过网络通知其他用户验证,记录到各自的账本中。区块链之所以得其名是因为它是由一个个包含交易信息的区块(block)从后向前有序链接起来的数据结构。
很多人对区块链的疑问是,如果每一个用户都拥有一个独立的账本,那么是否意味着可以在自己的账本上添加任意的交易信息,而成千上万个账本又如何保证记账的一致性? 解决记账一致性问题正是区块链共识机制的目标 。区块链共识机制旨在保证分布式系统里所有节点中的数据完全相同并且能够对某个提案(proposal)(例如是一项交易纪录)达成一致。然而分布式系统由于引入了多个节点,所以系统中会出现各种非常复杂的情况;随着节点数量的增加,节点失效或故障、节点之间的网络通信受到干扰甚至阻断等就变成了常见的问题,解决分布式系统中的各种边界条件和意外情况也增加了解决分布式一致性问题的难度。
区块链又可分为三种:
公有链:全世界任何人都可以随时进入系统中读取数据、发送可确认交易、竞争记账的区块链。公有链通常被认为是“完全去中心化“的,因为没有任何人或机构可以控制或篡改其中数据的读写。公有链一般会通过代币机制鼓励参与者竞争记账,来确保数据的安全性。
联盟链:联盟链是指有若干个机构共同参与管理的区块链。每个机构都运行着一个或多个节点,其中的数据只允许系统内不同的机构进行读写和发送交易,并且共同来记录交易数据。这类区块链被认为是“部分去中心化”。
私有链:指其写入权限是由某个组织和机构控制的区块链。参与节点的资格会被严格的限制,由于参与的节点是有限和可控的,因此私有链往往可以有极快的交易速度、更好的隐私保护、更低的交易成本、不容易被恶意攻击、并且能够做到身份认证等金融行业必须的要求。相比中心化数据库,私有链能够防止机构内单节点故意隐瞒或篡改数据。即使发生错误,也能够迅速发现来源,因此许多大型金融机构在目前更加倾向于使用私有链技术。
二、区块链共识机制的分类
解决分布式一致性问题的难度催生了数种共识机制,它们各有其优缺点,亦适用于不同的环境及问题。被众人常识的共识机制有:
l PoW(Proof of Work)工作量证明机制
l PoS(Proof of Stake)股权/权益证明机制
l DPoS(Delegated Proof of Stake)股份授权证明机制
l PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错算法
l DBFT(Delegated Byzantine Fault Tolerance)授权拜占庭容错算法
l SCP (Stellar Consensus Protocol ) 恒星共识协议
l RPCA(Ripple Protocol Consensus Algorithm)Ripple共识算法
l Pool验证池共识机制
(一)PoW(Proof of Work)工作量证明机制
1. 基本介绍
在该机制中,网络上的每一个节点都在使用SHA256哈希函数(hash function) 运算一个不断变化的区块头的哈希值 (hash sum)。 共识要求算出的值必须等于或小于某个给定的值。 在分布式网络中,所有的参与者都需要使用不同的随机数来持续计算该哈希值,直至达到目标为止。当一个节点的算出确切的值,其他所有的节点必须相互确认该值的正确性。之后新区块中的交易将被验证以防欺诈。
在比特币中,以上运算哈希值的节点被称作“矿工”,而PoW的过程被称为“挖矿”。挖矿是一个耗时的过程,所以也提出了相应的激励机制(例如向矿工授予一小部分比特币)。PoW的优点是完全的去中心化,其缺点是消耗大量算力造成了的资源浪费,达成共识的周期也比较长,共识效率低下,因此其不是很适合商业使用。
2. 加密货币的应用实例
比特币(Bitcoin) 及莱特币(Litecoin)。以太坊(Ethereum) 的前三个阶段(Frontier前沿、Homestead家园、Metropolis大都会)皆采用PoW机制,其第四个阶段 (Serenity宁静) 将采用权益证明机制。PoW适用于公有链。
PoW机制虽然已经成功证明了其长期稳定和相对公平,但在现有框架下,采用PoW的“挖矿”形式,将消耗大量的能源。其消耗的能源只是不停的去做SHA256的运算来保证工作量公平,并没有其他的存在意义。而目前BTC所能达到的交易效率为约5TPS(5笔/秒),以太坊目前受到单区块GAS总额的上限,所能达到的交易频率大约是25TPS,与平均千次每秒、峰值能达到万次每秒处理效率的VISA和MASTERCARD相差甚远。
3. 简图理解模式
(ps:其中A、B、C、D计算哈希值的过程即为“挖矿”,为了犒劳时间成本的付出,机制会以一定数量的比特币作为激励。)
(Ps:PoS模式下,你的“挖矿”收益正比于你的币龄(币的数量*天数),而与电脑的计算性能无关。我们可以认为任何具有概率性事件的累计都是工作量证明,如淘金。假设矿石含金量为p% 质量, 当你得到一定量黄金时,我们可以认为你一定挖掘了1/p 质量的矿石。而且得到的黄金数量越多,这个证明越可靠。)
(二)PoS(Proof of Stake)股权/权益证明机制
1.基本介绍
PoS要求人们证明货币数量的所有权,其相信拥有货币数量多的人攻击网络的可能性低。基于账户余额的选择是非常不公平的,因为单一最富有的人势必在网络中占主导地位,所以提出了许多解决方案。
在股权证明机制中,每当创建一个区块时,矿工需要创建一个称为“币权”的交易,这个交易会按照一定比例预先将一些币发给矿工。然后股权证明机制根据每个节点持有代币的比例和时间(币龄), 依据算法等比例地降低节点的挖矿难度,以加快节点寻找随机数的速度,缩短达成共识所需的时间。
与PoW相比,PoS可以节省更多的能源,更有效率。但是由于挖矿成本接近于0,因此可能会遭受攻击。且PoS在本质上仍然需要网络中的节点进行挖矿运算,所以它同样难以应用于商业领域。
2.数字货币的应用实例
PoS机制下较为成熟的数字货币是点点币(Peercoin)和未来币(NXT),相比于PoW,PoS机制节省了能源,引入了" 币天 "这个概念来参与随机运算。PoS机制能够让更多的持币人参与到记账这个工作中去,而不需要额外购买设备(矿机、显卡等)。每个单位代币的运算能力与其持有的时间长成正相关,即持有人持有的代币数量越多、时间越长,其所能签署、生产下一个区块的概率越大。一旦其签署了下一个区块,持币人持有的币天即清零,重新进入新的循环。
PoS适用于公有链。
3.区块签署人的产生方式
在PoS机制下,因为区块的签署人由随机产生,则一些持币人会长期、大额持有代币以获得更大概率地产生区块,尽可能多的去清零他的"币天"。因此整个网络中的流通代币会减少,从而不利于代币在链上的流通,价格也更容易受到波动。由于可能会存在少量大户持有整个网络中大多数代币的情况,整个网络有可能会随着运行时间的增长而越来越趋向于中心化。相对于PoW而言,PoS机制下作恶的成本很低,因此对于分叉或是双重支付的攻击,需要更多的机制来保证共识。稳定情况下,每秒大约能产生12笔交易,但因为网络延迟及共识问题,需要约60秒才能完整广播共识区块。长期来看,生成区块(即清零"币天")的速度远低于网络传播和广播的速度,因此在PoS机制下需要对生成区块进行"限速",来保证主网的稳定运行。
4.简图理解模式
(PS:拥有越多“股份”权益的人越容易获取账权。是指获得多少货币,取决于你挖矿贡献的工作量,电脑性能越好,分给你的矿就会越多。)
(在纯POS体系中,如NXT,没有挖矿过程,初始的股权分配已经固定,之后只是股权在交易者之中流转,非常类似于现实世界的股票。)
(三)DPoS(Delegated Proof of Stake)股份授权证明机制
1.基本介绍
由于PoS的种种弊端,由此比特股首创的权益代表证明机制 DPoS(Delegated Proof of Stake)应运而生。DPoS 机制中的核心的要素是选举,每个系统原生代币的持有者在区块链里面都可以参与选举,所持有的代币余额即为投票权重。通过投票,股东可以选举出理事会成员,也可以就关系平台发展方向的议题表明态度,这一切构成了社区自治的基础。股东除了自己投票参与选举外,还可以通过将自己的选举票数授权给自己信任的其它账户来代表自己投票。
具体来说, DPoS由比特股(Bitshares)项目组发明。股权拥有着选举他们的代表来进行区块的生成和验证。DPoS类似于现代企业董事会制度,比特股系统将代币持有者称为股东,由股东投票选出101名代表, 然后由这些代表负责生成和验证区块。 持币者若想称为一名代表,需先用自己的公钥去区块链注册,获得一个长度为32位的特有身份标识符,股东可以对这个标识符以交易的形式进行投票,得票数前101位被选为代表。
代表们轮流产生区块,收益(交易手续费)平分。DPoS的优点在于大幅减少了参与区块验证和记账的节点数量,从而缩短了共识验证所需要的时间,大幅提高了交易效率。从某种角度来说,DPoS可以理解为多中心系统,兼具去中心化和中心化优势。优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。缺点:投票积极性不高,绝大部分代币持有者未参与投票;另整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。
DPoS机制要求在产生下一个区块之前,必须验证上一个区块已经被受信任节点所签署。相比于PoS的" 全民挖矿 ",DPoS则是利用类似" 代表大会 "的制度来直接选取可信任节点,由这些可信任节点(即见证人)来代替其他持币人行使权力,见证人节点要求长期在线,从而解决了因为PoS签署区块人不是经常在线而可能导致的产块延误等一系列问题。 DPoS机制通常能达到万次每秒的交易速度,在网络延迟低的情况下可以达到十万秒级别,非常适合企业级的应用。 因为公信宝数据交易所对于数据交易频率要求高,更要求长期稳定性,因此DPoS是非常不错的选择。
2. 股份授权证明机制下的机构与系统
理事会是区块链网络的权力机构,理事会的人选由系统股东(即持币人)选举产生,理事会成员有权发起议案和对议案进行投票表决。
理事会的重要职责之一是根据需要调整系统的可变参数,这些参数包括:
l 费用相关:各种交易类型的费率。
l 授权相关:对接入网络的第三方平台收费及补贴相关参数。
l 区块生产相关:区块生产间隔时间,区块奖励。
l 身份审核相关:审核验证异常机构账户的信息情况。
l 同时,关系到理事会利益的事项将不通过理事会设定。
在Finchain系统中,见证人负责收集网络运行时广播出来的各种交易并打包到区块中,其工作类似于比特币网络中的矿工,在采用 PoW(工作量证明)的比特币网络中,由一种获奖概率取决于哈希算力的抽彩票方式来决定哪个矿工节点产生下一个区块。而在采用 DPoS 机制的金融链网络中,通过理事会投票决定见证人的数量,由持币人投票来决定见证人人选。入选的活跃见证人按顺序打包交易并生产区块,在每一轮区块生产之后,见证人会在随机洗牌决定新的顺序后进入下一轮的区块生产。
3. DPoS的应用实例
比特股(bitshares) 采用DPoS。DPoS主要适用于联盟链。
4.简图理解模式
(四)PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错算法
1. 基本介绍
PBFT是一种基于严格数学证明的算法,需要经过三个阶段的信息交互和局部共识来达成最终的一致输出。三个阶段分别为预备 (pre-prepare)、准备 (prepare)、落实 (commit)。PBFT算法证明系统中只要有2/3比例以上的正常节点,就能保证最终一定可以输出一致的共识结果。换言之,在使用PBFT算法的系统中,至多可以容忍不超过系统全部节点数量1/3的失效节点 (包括有意误导、故意破坏系统、超时、重复发送消息、伪造签名等的节点,又称为”拜占庭”节点)。
2. PBFT的应用实例
著名联盟链Hyperledger Fabric v0.6采用的是PBFT,v1.0又推出PBFT的改进版本SBFT。PBFT主要适用于私有链和联盟链。
3. 简图理解模式
上图显示了一个简化的PBFT的协议通信模式,其中C为客户端,0 – 3表示服务节点,其中0为主节点,3为故障节点。整个协议的基本过程如下:
(1) 客户端发送请求,激活主节点的服务操作;
(2) 当主节点接收请求后,启动三阶段的协议以向各从节点广播请求;
(a) 序号分配阶段,主节点给请求赋值一个序号n,广播序号分配消息和客户端的请求消息m,并将构造pre-prepare消息给各从节点;
(b) 交互阶段,从节点接收pre-prepare消息,向其他服务节点广播prepare消息;
(c) 序号确认阶段,各节点对视图内的请求和次序进行验证后,广播commit消息,执行收到的客户端的请求并给客户端响应。
(3) 客户端等待来自不同节点的响应,若有m+1个响应相同,则该响应即为运算的结果;
(五)DBFT(Delegated Byzantine Fault Tolerance)授权拜占庭容错算法
1. 基本介绍
DBFT建基于PBFT的基础上,在这个机制当中,存在两种参与者,一种是专业记账的“超级节点”,一种是系统当中不参与记账的普通用户。普通用户基于持有权益的比例来投票选出超级节点,当需要通过一项共识(记账)时,在这些超级节点中随机推选出一名发言人拟定方案,然后由其他超级节点根据拜占庭容错算法(见上文),即少数服从多数的原则进行表态。如果超过2/3的超级节点表示同意发言人方案,则共识达成。这个提案就成为最终发布的区块,并且该区块是不可逆的,所有里面的交易都是百分之百确认的。如果在一定时间内还未达成一致的提案,或者发现有非法交易的话,可以由其他超级节点重新发起提案,重复投票过程,直至达成共识。
2. DBFT的应用实例
国内加密货币及区块链平台NEO是 DBFT算法的研发者及采用者。
3. 简图理解模式
假设系统中只有四个由普通用户投票选出的超级节点,当需要通过一项共识时,系统就会从代表中随机选出一名发言人拟定方案。发言人会将拟好的方案交给每位代表,每位代表先判断发言人的计算结果与它们自身纪录的是否一致,再与其它代表商讨验证计算结果是否正确。如果2/3的代表一致表示发言人方案的计算结果是正确的,那么方案就此通过。
如果只有不到2/3的代表达成共识,将随机选出一名新的发言人,再重复上述流程。这个体系旨在保护系统不受无法行使职能的领袖影响。
上图假设全体节点都是诚实的,达成100%共识,将对方案A(区块)进行验证。
鉴于发言人是随机选出的一名代表,因此他可能会不诚实或出现故障。上图假设发言人给3名代表中的2名发送了恶意信息(方案B),同时给1名代表发送了正确信息(方案A)。
在这种情况下该恶意信息(方案B)无法通过。中间与右边的代表自身的计算结果与发言人发送的不一致,因此就不能验证发言人拟定的方案,导致2人拒绝通过方案。左边的代表因接收了正确信息,与自身的计算结果相符,因此能确认方案,继而成功完成1次验证。但本方案仍无法通过,因为不足2/3的代表达成共识。接着将随机选出一名新发言人,重新开始共识流程。
上图假设发言人是诚实的,但其中1名代表出现了异常;右边的代表向其他代表发送了不正确的信息(B)。
在这种情况下发言人拟定的正确信息(A)依然可以获得验证,因为左边与中间诚实的代表都可以验证由诚实的发言人拟定的方案,达成2/3的共识。代表也可以判断到底是发言人向右边的节点说谎还是右边的节点不诚实。
(六)SCP (Stellar Consensus Protocol ) 恒星共识协议
1. 基本介绍
SCP 是 Stellar (一种基于互联网的去中心化全球支付协议) 研发及使用的共识算法,其建基于联邦拜占庭协议 (Federated Byzantine Agreement) 。传统的非联邦拜占庭协议(如上文的PBFT和DBFT)虽然确保可以通过分布式的方法达成共识,并达到拜占庭容错 (至多可以容忍不超过系统全部节点数量1/3的失效节点),它是一个中心化的系统 — 网络中节点的数量和身份必须提前知晓且验证过。而联邦拜占庭协议的不同之处在于它能够去中心化的同时,又可以做到拜占庭容错。
[…]
(七)RPCA(Ripple Protocol Consensus Algorithm)Ripple共识算法
1. 基本介绍
RPCA是Ripple(一种基于互联网的开源支付协议,可以实现去中心化的货币兑换、支付与清算功能)研发及使用的共识算法。在 Ripple 的网络中,交易由客户端(应用)发起,经过追踪节点(tracking node)或验证节点(validating node)把交易广播到整个网络中。追踪节点的主要功能是分发交易信息以及响应客户端的账本请求。验证节点除包含追踪节点的所有功能外,还能够通过共识协议,在账本中增加新的账本实例数据。
Ripple 的共识达成发生在验证节点之间,每个验证节点都预先配置了一份可信任节点名单,称为 UNL(Unique Node List)。在名单上的节点可对交易达成进行投票。共识过程如下:
(1) 每个验证节点会不断收到从网络发送过来的交易,通过与本地账本数据验证后,不合法的交易直接丢弃,合法的交易将汇总成交易候选集(candidate set)。交易候选集里面还包括之前共识过程无法确认而遗留下来的交易。
(2) 每个验证节点把自己的交易候选集作为提案发送给其他验证节点。
(3) 验证节点在收到其他节点发来的提案后,如果不是来自UNL上的节点,则忽略该提案;如果是来自UNL上的节点,就会对比提案中的交易和本地的交易候选集,如果有相同的交易,该交易就获得一票。在一定时间内,当交易获得超过50%的票数时,则该交易进入下一轮。没有超过50%的交易,将留待下一次共识过程去确认。
(4) 验证节点把超过50%票数的交易作为提案发给其他节点,同时提高所需票数的阈值到60%,重复步骤(3)、步骤(4),直到阈值达到80%。
(5) 验证节点把经过80%UNL节点确认的交易正式写入本地的账本数据中,称为最后关闭账本(last closed ledger),即账本最后(最新)的状态。
在Ripple的共识算法中,参与投票节点的身份是事先知道的,因此,算法的效率比PoW等匿名共识算法要高效,交易的确认时间只需几秒钟。这点也决定了该共识算法只适合于联盟链或私有链。Ripple共识算法的拜占庭容错(BFT)能力为(n-1)/5,即可以容忍整个网络中20%的节点出现拜占庭错误而不影响正确的共识。
2. 简图理解模式
共识过程节点交互示意图:
共识算法流程:
(八)POOL验证池共识机制
Pool验证池共识机制是基于传统的分布式一致性算法(Paxos和Raft)的基础上开发的机制。Paxos算法是1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。过去, Paxos一直是分布式协议的标准,但是Paxos难于理解,更难以实现。Raft则是在2013年发布的一个比Paxos简单又能实现Paxos所解决问题的一致性算法。Paxos和Raft达成共识的过程皆如同选举一样,参选者需要说服大多数选民(服务器)投票给他,一旦选定后就跟随其操作。Paxos和Raft的区别在于选举的具体过程不同。而Pool验证池共识机制即是在这两种成熟的分布式一致性算法的基础上,辅之以数据验证的机制。
㈨ 区块链的共识机制是什么
如何让去中心化网络达成共识?
在区块链系统当中,没有一个像银行一样的中心化记账机构,保证每一笔交易在所有记账节点上的一致性,即让全网达成共识至关重要。共识机制解决的就是这个问题。
目前主要的共识机制有工作量证明机制PoW和权益证明机制PoS。
PoW通过评估你的工作量来决定你获得记账权的机率,工作量越大,就越有可能获得此次记账机会。
PoS通过评估你持有代币的数量和时长来决定你获得记账权的机率。这就类似于股票的分红制度,持有股权相对多的人能够获得更多的分红。
DPOS与POS原理相似,只是选了一些“人大代表”。 与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账。
随着技术的发展,未来可能还会诞生更先进的共识机制。