『壹』 浠ュお鍧婃妧鏈緋誨垪-浠ュお鍧婂叡璇嗘満鍒
涓銆佷互澶鍧婃妧鏈緋誨垪-浠ュお鍧婂叡璇嗘満鍒
鍖哄潡閾劇殑鐗圭偣涔嬩竴鏄鍘諱腑蹇冨寲銆備篃灝辨槸鑺傜偣浼氬垎甯冨湪鍚勪釜鍦版柟緇勬垚鍒嗗竷寮忕郴緇熴傚悇涓鑺傜偣闇瑕佸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%錛岄偅涔堝㈡埛絝鍙浠ヨや負鍓峩涓鍖哄潡宸茬粡鏈緇堢『瀹氥
涓夈佷粈涔堟槸浠ュお鍧?
閲嶅嶉棶棰樿佺櫨搴︾煡閬撶殑涓涓鍥炵瓟錛岀櫨搴︾煡閬撶瓟妗
『貳』 以太坊是什麼丨以太坊開發入門指南
以太坊是什麼丨以太坊開發入門指南
很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基於以太坊平台,以通俗的方式介紹以太坊開發中涉及的各晦澀的概念,輕松帶大家入門。
以太坊是什麼
以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平台。它允許任何人在平台中建立和使用通過區塊鏈技術運行的去中心化應用。
對這句話不理解的同學,姑且可以理解為以太坊是區塊鏈里的Android,它是一個開發平台,讓我們就可以像基於Android Framework一樣基於區塊鏈技術寫應用。
在沒有以太坊之前,寫區塊鏈應用是這樣的:拷貝一份比特幣代碼,然後去改底層代碼如加密演算法,共識機制,網路協議等等(很多山寨幣就是這樣,改改就出來一個新幣)。
以太坊平台對底層區塊鏈技術進行了封裝,讓區塊鏈應用開發者可以直接基於以太坊平台進行開發,開發者只要專注於應用本身的開發,從而大大降低了難度。
目前圍繞以太坊已經形成了一個較為完善的開發生態圈:有社區的支持,有很多開發框架、工具可以選擇。
智能合約
什麼是智能合約
以太坊上的程序稱之為智能合約, 它是代碼和數據(狀態)的集合。
智能合約可以理解為在區塊鏈上可以自動執行的(由事件驅動的)、以代碼形式編寫的合同(特殊的交易)。
在比特幣腳本中,我們講到過比特幣的交易是可以編程的,但是比特幣腳本有很多的限制,能夠編寫的程序也有限,而以太坊則更加完備(在計算機科學術語中,稱它為是「圖靈完備的」),讓我們就像使用任何高級語言一樣來編寫幾乎可以做任何事情的程序(智能合約)。
智能合約非常適合對信任、安全和持久性要求較高的應用場景,比如:數字貨幣、數字資產、投票、保險、金融應用、預測市場、產權所有權管理、物聯網、點對點交易等等。
目前除數字貨幣之外,真正落地的應用還不多(就像移動平台剛開始出來一樣),相信1到3年內,各種殺手級會慢慢出現。
編程語言:Solidity
智能合約的默認的編程語言是Solidity,文件擴展名以.sol結尾。
Solidity是和JavaScript相似的語言,用它來開發合約並編譯成以太坊虛擬機位元組代碼。
還有長像Python的智能合約開發語言:Serpent,不過建議大家還是使用Solidity。
Browser-Solidity是一個瀏覽器的Solidity IDE, 大家可以點進去看看,以後我們更多文章介紹Solidity這個語言。
運行環境:EVM
EVM(Ethereum Virtual Machine)以太坊虛擬機是以太坊中智能合約的運行環境。
Solidity之於EVM,就像之於跟JVM的關系一樣,這樣大家就容易理解了。
以太坊虛擬機是一個隔離的環境,在EVM內部運行的代碼不能跟外部有聯系。
而EVM運行在以太坊節點上,當我們把合約部署到以太坊網路上之後,合約就可以在以太坊網路中運行了。
合約的編譯
以太坊虛擬機上運行的是合約的位元組碼形式,需要我們在部署之前先對合約進行編譯,可以選擇Browser-Solidity Web IDE或solc編譯器。
合約的部署
在以太坊上開發應用時,常常要使用到以太坊客戶端(錢包)。平時我們在開發中,一般不接觸到客戶端或錢包的概念,它是什麼呢?
以太坊客戶端(錢包)
以太坊客戶端,其實我們可以把它理解為一個開發者工具,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能。
EVM是由以太坊客戶端提供的。
Geth是典型的開發以太坊時使用的客戶端,基於Go語言開發。 Geth提供了一個互動式命令控制台,通過命令控制台中包含了以太坊的各種功能(API)。Geth的使用我們之後會有文章介紹,這里大家先有個概念。
Geth控制台和Chrome瀏覽器開發者工具里的面的控制台是類似,不過是跑在終端里。
相對於Geth,Mist則是圖形化操作界面的以太坊客戶端。
如何部署
智能合約的部署是指把合約位元組碼發布到區塊鏈上,並使用一個特定的地址來標示這個合約,這個地址稱為合約賬戶。
以太坊中有兩類賬戶:
· 外部賬戶
該類賬戶被私鑰控制(由人控制),沒有關聯任何代碼。
· 合約賬戶
該類賬戶被它們的合約代碼控制且有代碼與之關聯。
和比特幣使用UTXO的設計不一樣,以太坊使用更為簡單的賬戶概念。
兩類賬戶對於EVM來說是一樣的。
外部賬戶與合約賬戶的區別和關系是這樣的:一個外部賬戶可以通過創建和用自己的私鑰來對交易進行簽名,來發送消息給另一個外部賬戶或合約賬戶。
在兩個外部賬戶之間傳送消息是價值轉移的過程。但從外部賬戶到合約賬戶的消息會激活合約賬戶的代碼,允許它執行各種動作(比如轉移代幣,寫入內部存儲,挖出一個新代幣,執行一些運算,創建一個新的合約等等)。
只有當外部賬戶發出指令時,合同賬戶才會執行相應的操作。
合約部署就是將編譯好的合約位元組碼通過外部賬號發送交易的形式部署到以太坊區塊鏈上(由實際礦工出塊之後,才真正部署成功)。
運行
合約部署之後,當需要調用這個智能合約的方法時只需要向這個合約賬戶發送消息(交易)即可,通過消息觸發後智能合約的代碼就會在EVM中執行了。
Gas
和雲計算相似,佔用區塊鏈的資源(不管是簡單的轉賬交易,還是合約的部署和執行)同樣需要付出相應的費用(天下沒有免費的午餐對不對!)。
以太坊上用Gas機制來計費,Gas也可以認為是一個工作量單位,智能合約越復雜(計算步驟的數量和類型,佔用的內存等),用來完成運行就需要越多Gas。
任何特定的合約所需的運行合約的Gas數量是固定的,由合約的復雜度決定。
而Gas價格由運行合約的人在提交運行合約請求的時候規定,以確定他願意為這次交易願意付出的費用:Gas價格(用以太幣計價) * Gas數量。
Gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,Gas將按照特定規則被逐漸消耗,無論執行到什麼位置,一旦Gas被耗盡,將會觸發異常。當前調用幀所做的所有狀態修改都將被回滾, 如果執行結束還有Gas剩餘,這些Gas將被返還給發送賬戶。
如果沒有這個限制,就會有人寫出無法停止(如:死循環)的合約來阻塞網路。
因此實際上(把前面的內容串起來),我們需要一個有以太幣余額的外部賬戶,來發起一個交易(普通交易或部署、運行一個合約),運行時,礦工收取相應的工作量費用。
以太坊網路
有些著急的同學要問了,沒有以太幣,要怎麼進行智能合約的開發?可以選擇以下方式:
選擇以太坊官網測試網路Testnet
測試網路中,我們可以很容易獲得免費的以太幣,缺點是需要發很長時間初始化節點。
使用私有鏈
創建自己的以太幣私有測試網路,通常也稱為私有鏈,我們可以用它來作為一個測試環境來開發、調試和測試智能合約。
通過上面提到的Geth很容易就可以創建一個屬於自己的測試網路,以太幣想挖多少挖多少,也免去了同步正式網路的整個區塊鏈數據。
使用開發者網路(模式)
相比私有鏈,開發者網路(模式)下,會自動分配一個有大量余額的開發者賬戶給我們使用。
使用模擬環境
另一個創建測試網路的方法是使用testrpc,testrpc是在本地使用內存模擬的一個以太坊環境,對於開發調試來說,更方便快捷。而且testrpc可以在啟動時幫我們創建10個存有資金的測試賬戶。
進行合約開發時,可以在testrpc中測試通過後,再部署到Geth節點中去。
更新:testrpc 現在已經並入到Truffle 開發框架中,現在名字是Ganache CLI。
Dapp:去中心化的應用程序
以太坊社區把基於智能合約的應用稱為去中心化的應用程序(DecentralizedApp)。如果我們把區塊鏈理解為一個不可篡改的資料庫,智能合約理解為和資料庫打交道的程序,那就很容易理解Dapp了,一個Dapp不單單有智能合約,比如還需要有一個友好的用戶界面和其他的東西。
Truffle
Truffle是Dapp開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫代碼-編譯-部署-測試-打包DApp這個流程。
總結
我們現在來總結一下,以太坊是平台,它讓我們方便的使用區塊鏈技術開發去中心化的應用,在這個應用中,使用Solidity來編寫和區塊鏈交互的智能合約,合約編寫好後之後,我們需要用以太坊客戶端用一個有餘額的賬戶去部署及運行合約(使用Truffle框架可以更好的幫助我們做這些事情了)。為了開發方便,我們可以用Geth或testrpc來搭建一個測試網路。
註:本文中為了方便大家理解,對一些概念做了類比,有些嚴格來不是准確,不過我也認為對於初學者,也沒有必要把每一個概念掌握的很細致和准確,學習是一個逐步深入的過程,很多時候我們會發現,過一段後,我們會對同一個東西有不一樣的理解。
『叄』 浠ュお鍧婂備綍澶勭悊浜ゆ槗鐨勪笉鍙鎾ら攢鎬
浠ュお鍧婂備綍澶勭悊浜ゆ槗鐨勪笉鍙鎾ら攢鎬э紵
浠ュお鍧婃槸涓涓寮婧愮殑銆佸垎甯冨紡鐨勫尯鍧楅摼騫沖彴錛屽畠浣跨敤鏅鴻兘鍚堢害鎶鏈鏉ュ勭悊浜ゆ槗銆傛櫤鑳藉悎綰︽槸涓縐嶅彲緙栫▼鐨勩佽嚜鍔ㄦ墽琛岀殑鍗忚錛屽畠鍙浠ュ湪娌℃湁絎涓夋柟騫查勭殑鎯呭喌涓嬫墽琛屼氦鏄撱備竴鏃︿氦鏄撹紜璁わ紝灝辨棤娉曟洿鏀規垨鎾ら攢銆
浠ュお鍧婄殑浜ゆ槗澶勭悊榪囩▼濡備笅錛
1.浜ゆ槗鍙戣搗鏂瑰皢浜ゆ槗淇℃伅鍙戦佸埌浠ュお鍧婄綉緇滀腑鐨勬煇涓鑺傜偣錛屽嵆浜ゆ槗騫挎挱銆
2.鍏跺畠鑺傜偣杞鍙戝苟楠岃瘉浜ゆ槗錛岀『淇濅氦鏄撶﹀悎瑙勫垯銆
3.鐭垮伐灝嗘湁鏁堜氦鏄撴斁鍏ュ緟紜璁ゆ睜涓錛屽苟寮閲囨柊鍖哄潡銆
4.鏂板尯鍧椾腑鍖呭惈浜嗗緟紜璁ゆ睜涓鐨勪氦鏄擄紝鍚屾椂鐭垮伐涔熷皢鑷宸辯殑鍦板潃鍔犲叆浜ゆ槗鍒楄〃錛屼互鑾峰彇鍖哄潡濂栧姳銆
5.鍏跺畠鑺傜偣鎺ユ敹騫墮獙璇佹柊鍖哄潡錛岀『璁や氦鏄撴湁鏁堛
6.浜ゆ槗琚紜璁わ紝鎵ц屼氦鏄撱
鍦ㄤ互澶鍧婁腑錛屼氦鏄撶殑涓嶅彲鎾ら攢鎬у彲浠ヤ繚璇佷氦鏄撳弬涓庢柟鐨勬潈鐩娿傚傛灉浜ゆ槗闇瑕佽鎾ら攢鎴栦慨鏀癸紝鍙鑳介氳繃鍙﹀栦竴絎斾氦鏄撴潵瀹炵幇錛岃屼笖榪欎釜浜ゆ槗涔熼渶瑕佽騫挎挱銆侀獙璇佸拰紜璁ゃ傚洜姝わ紝浜ゆ槗鐨勫勭悊榪囩▼鍏鋒湁楂樺害鐨勫畨鍏ㄦу拰鍙闈犳с
涓嶈繃錛屼互澶鍧婄殑浜ゆ槗澶勭悊涔熼潰涓寸潃涓浜涙寫鎴橈紝渚嬪備氦鏄撻熷害杈冩參銆佹墜緇璐硅緝楂樼瓑闂棰樸備負浜嗘彁楂樹互澶鍧婄殑浜ゆ槗鎬ц兘錛屽紑鍙戣呬滑姝e湪縐鏋佹帰緔㈡柊鐨勬妧鏈鍜岀畻娉曪紝姣斿備晶閾俱侀棯鐢電綉緇滅瓑銆
緇間笂鎵榪幫紝浠ュお鍧婄殑浜ゆ槗澶勭悊榪囩▼紜淇濅簡浜ゆ槗鐨勪笉鍙鎾ら攢鎬э紝榪欐槸鍖哄潡閾炬妧鏈鐨勬牳蹇冪壒鐐逛箣涓銆傞殢鐫鍖哄潡閾炬妧鏈鐨勪笉鏂鍙戝睍鍜屽畬鍠勶紝鎴戜滑鐩鎬俊浠ュお鍧婄殑浜ゆ槗澶勭悊鑳藉姏涔熶細涓嶆柇鎻愰珮銆
『肆』 浠ュお鍧婃寲鐭跨殑綆楁硶鏄浠涔
浠ュお鍧婃寲鐭跨殑綆楁硶鏄浠涔堬紵
浠ュお鍧婃寲鐭跨殑綆楁硶鏄浠涔堬紵
浠ュお鍧婃槸涓縐嶅尯鍧楅摼鎶鏈錛屽彲鐢ㄤ簬鍒涘緩鍒嗗竷寮忓簲鐢ㄧ▼搴忥紙DApps錛夈傛寲鎺樹互澶鍧婄殑榪囩▼娑夊強閫氳繃璁$畻瑙e喅鏁板﹂棶棰樻潵娣誨姞鏂板潡錛岃繖琚璁や負鏄鈥滃伐浣滆瘉鏄庘濈畻娉曪紝浠ヤ繚鎸佸尯鍧楅摼鐨勫畨鍏ㄦу拰瀹屾暣鎬с傝繖涓綆楁硶鍚嶄負鈥淓thash鈥濓紝騫跺湪2015騫村彂甯冧簡浠ュお鍧婄殑絎涓鐗堛
Ethash綆楁硶鏄涓縐嶆暎鍒楀嚱鏁扮畻娉曪紝瀹冨熀浜庡搱甯岀巼錛圚ashrate錛夊拰綆楃姸鎬佹牴錛圫tateRoot錛変駭鐢熸棤瑙勫緥涓斿滻瀹氶毦搴︾殑闂棰樸傝繖涓綆楁硶鐨勭嫭鐗逛箣澶勫湪浜庡畠闇瑕佸ぇ閲忕殑鍐呭瓨錛屼笉鍒╀簬ASIC錛堜笓鐢ㄩ泦鎴愮數璺錛夌殑瀹炵幇鎸栨帢錛岄槻姝涓浜轟互鍙婂皯鏁扮熆宸ヨ幏寰楁洿楂樼殑絝炰簤鍔涳紝浠庤屽炲姞浜嗗幓涓蹇冨寲鐨勭綉緇滃畨鍏ㄦс
鎸栨帢浠ュお鍧婇渶瑕佺殑紜浠朵篃鏈変竴浜涚壒孌婅佹眰銆傞櫎浜咷PU錛堝浘褰㈠勭悊鍣錛夎兘澶熸樉鐫鎻愰珮鎬ц兘澶栵紝鍐呭瓨閲忎篃闇瑕佽凍澶熷ぇ浠ュ圭撼寮閲囪繃紼嬩腑浣跨敤鐨勬暟鎹鍧椼傛ゅ栵紝浠ュお鍧婅繕瑕佹眰浣跨敤楂橀熶簰鑱旂綉榪炴帴銆
鍦ㄦ寲鎺樹互澶鍧婃椂錛岀熆宸ュ繀欏繪壘鍒頒竴涓鈥渘once鈥濓紙涓涓鐢ㄤ簬璁$畻鏁e垪鍑芥暟鐨勪換鎰忔暟瀛楋級錛屼嬌寰楀潡澶寸殑鍝堝笇鍊兼弧瓚崇綉緇滅殑闅懼害瑕佹眰銆傝繖縐嶉毦搴︽槸鍔ㄦ佺殑錛屽彇鍐充簬鐭垮伐鐨勬諱綋綆楀姏鍜岀綉緇滀笂鐨勮妭鐐規暟閲忋傚洜姝わ紝鎸栨帢浠ュお鍧婇渶瑕佸ぇ閲忕殑璁$畻鑳藉姏鍜岀數鍔涳紝浠ュ強蹇閫熺殑浜掕仈緗戣繛鎺ワ紝浠ヤ究涓庣綉緇滆繘琛屽悓姝ャ
鎬葷粨涓涓嬶紝浠ュお鍧婄殑鎸栫熆綆楁硶Ethash鏄涓縐嶆暎鍒楀嚱鏁扮畻娉曪紝闇瑕佸ぇ閲忕殑鍐呭瓨鏉ラ槻姝ASIC鎸栨帢錛屼粠鑰屽炲姞浜嗗幓涓蹇冨寲鐨勭綉緇滃畨鍏ㄦс傛寲鎺樹互澶鍧婇渶瑕佸ぇ閲忕殑璁$畻鑳藉姏銆佸唴瀛樺拰緗戠粶榪炴帴銆
『伍』 浠ュお鍧婂備綍榪涜岄毦搴﹁皟鏁
浠ュお鍧婂備綍榪涜岄毦搴﹁皟鏁達紵
浠ュお鍧婃槸涓縐嶅紑婧愮殑鍖哄潡閾懼鉤鍙幫紝鍏墮噰鐢ㄤ簡涓縐嶅悕涓篜roofofWork錛圥oW錛夌殑鍏辮瘑綆楁硶鏉ョ淮鎶ゅ叾緗戠粶鐨勫畨鍏ㄦу拰紼沖畾鎬с傚湪PoW緋葷粺涓錛岀熆宸ラ渶瑕佸畬鎴愪竴瀹氱殑璁$畻閲忔墠鑳借幏寰楅獙璇佸尯鍧楃殑鏉冨埄錛屽苟涓哄叾鎻愪緵鐩稿簲鐨勫栧姳銆
鐒惰岋紝鍦≒oW緋葷粺涓錛岄毦搴﹁皟鏁存槸闈炲父閲嶈佺殑涓涓闂棰樸傚傛灉闅懼害璁劇疆榪囦綆錛岄偅涔堢熆宸ュ彲浠ュ規槗鍦拌В鍐抽棶棰橈紝浠庤屽緱鍒版柊鐨勫尯鍧楀拰濂栧姳銆傝屽傛灉闅懼害璁劇疆榪囬珮錛岄偅涔堢熆宸ョ殑璁$畻鑳藉姏鍙鑳芥棤娉曟弧瓚抽渶瑕侊紝浣垮緱鍖哄潡鐨勭敓鎴愰熷害榪囨參錛屼粠鑰屽獎鍝嶆暣涓緋葷粺鐨勭ǔ瀹氭с
鍥犳わ紝鍦ㄤ互澶鍧婁腑錛屼負浜嗕繚鎸佺郴緇熺殑鍋ュ悍榪愯岋紝闅懼害璋冩暣鏄閫氳繃浠ヤ笅鏂瑰紡鏉ュ疄鐜扮殑錛
1.姣忎釜鍖哄潡涓閮藉寘鍚浜嗗墠涓鍖哄潡涓鐨勯毦搴﹀礆紝榪欎釜鍊間細琚鏂板尯鍧楁洿鏂板苟涓斿瓨鍌ㄥ湪鏂板尯鍧楃殑澶撮儴淇℃伅涓銆
2.浠ュお鍧婂皢閫氳繃姣旇緝鍓嶄竴涓鍖哄潡鐢熸垚鏃墮棿涓庡綋鍓嶅尯鍧楃敓鎴愭椂闂翠箣闂寸殑宸寮傛潵榪涜岄毦搴︾殑璋冩暣錛屽叿浣撹岃█錛屽傛灉鐢熸垚鏂板尯鍧楃殑鏃墮棿姣旇懼畾鐨勫煎揩錛屽垯闅懼害浼氶愭笎鎻愰珮錛屽弽涔嬪垯浼氶愭笎闄嶄綆銆
3.浠ュお鍧婂湪闅懼害璋冩暣鏃朵細璁劇疆涓瀹氱殑鏈灝忓煎拰鏈澶у礆紝浠ラ槻姝㈤毦搴﹁繃浣庢垨榪囬珮瀵規暣涓緋葷粺鐨勫獎鍝嶃
4.闅懼害璋冩暣鐨勮繃紼嬬敱浠ュお鍧婂崗璁鑷鍔ㄥ畬鎴愶紝鍏剁洰鐨勬槸浣挎柊鍖哄潡鐨勫鉤鍧囩敓鎴愭椂闂翠繚鎸佸湪涓涓紼沖畾鍊間箣鍐呫
鎬葷殑鏉ヨ達紝浠ュお鍧婄殑闅懼害璋冩暣鏈哄埗鏄闈炲父鏈夋晥鍜岀ǔ鍋ョ殑銆傚畠鍙浠ョ『淇濆尯鍧楃殑鐢熸垚閫熷害閫傚綋錛屽悓鏃朵繚鎸佺綉緇滅殑瀹夊叏鍜屽彲闈犳э紝璁╀互澶鍧婃寔緇鍙戝睍鍜屾垚闀褲
『陸』 一文了解以太坊挖礦演算法及算力規模2020-09-09
以太坊網路中,想要獲得以太坊,也要通過挖礦來實現。當前以太坊也是採用POW共識機制,但是與比特幣的POW挖礦有點不一樣,以太坊挖礦難度是可以調節的。以太坊系統有一個特殊的公式用來計算之後的每個塊的難度。如果某個區塊比前一個區塊驗證的更快,以太坊協議就會增加區塊的難度。通過調整區塊難度,就可以調整驗證區塊所需的時間。
以太坊採用的是Ethash 加密演算法,在挖礦的過程中,需要讀取內存並存儲 DAG 文件。由於每一次讀取內寸的帶寬都是有限的,而現有的計算機技術又很難在這個問題上有質的突破,所以無論如何提高計算機的運算效率,內存讀取效率仍然不會有很大的改觀。因此,從某種意義上來說,以太坊的Ethash加密演算法具有「抗ASIC性」。
加密演算法的不同,導致了比特幣和以太坊的挖礦設備、算力規模差異很大。
目前,比特幣挖礦設備主要是專業化程度非常高的ASIC 礦機,單台礦機的算力最高達到了 112T/s(神馬M30S++礦機),全網算力的規模達到139.92EH/s。
以太坊的挖礦設備主要是顯卡礦機和定製GPU礦機,專業化的ASIC礦機非常少,一方面是因為以太坊挖礦演算法的「抗 ASIC 性」提高了研發ASIC礦機的門檻,另一方面是因為以太坊升級到2.0之後共識機制會轉型為PoS,礦機無法繼續挖。
和ASIC礦機相比,顯卡礦機在算力上相差了2個量級。目前,主流的顯卡礦機(8卡)算力約為420MH/s,比較領先的定製GPU礦機算力約在500M~750M,以太坊全網算力約為235.39TH/s。
從過去兩年的時間維度上看,以太坊的全網算力增長相對緩慢。
以太坊協議規定,難度的動態調整方式是使全網創建新區塊的時間間隔為15秒,網路用15秒時間創建區塊鏈,這樣一來,因為時間太快,系統的同步性就大大提升,惡意參與者很難在如此短的時間發動51%(也就是半數以上)的算力去修改歷史數據。