導航:首頁 > 比特幣區 > 比特幣底層原理

比特幣底層原理

發布時間:2024-06-22 12:08:08

1. 姣旂壒甯佹庝箞鎸栧嚭鏉ョ殑錛熷垎鏋愭瘮鐗瑰竵鎸栫熆鍘熺悊

浣嗗嚒瀵規瘮鐗瑰竵鏈変竴鐐圭偣鍏磋叮錛屽氨涓瀹氬惉榪囨寲鐭胯繖涓や釜瀛楋紝姣旂壒甯佹寲鐭胯窡灞辮タ鎸栫熆涓嶄竴鏍鳳紝浣犱笉鐢ㄦ墰鐫宸ュ叿鍘誨栭潰錛屽湪瀹墮噷浣跨敤鐢佃剳鎴栨寲鐭挎満璁懼囧氨鍙浠ュ紑宸ヤ簡錛岃嫢鏄瓚沖熷垢榪愶紝灝辨湁鏈轟細鎸栧埌涓涓鍖哄潡錛屽苟鑾峰緱12.5涓姣旂壒甯佸栧姳錛岄『甯﹂偅涓鍖哄潡閲屾墍鏈変氦鏄撶殑鎵嬬畫璐癸紝榪欐槸騫垮ぇ鐭垮伐搴熷瘽蹇橀熺殑婧愬姩鍔涳紝閭d箞錛屾瘮鐗瑰竵鎬庝箞鎸栧嚭鏉ョ殑鍛錛熶笅闈㈠竵鍦堝瓙灝忕紪灝辨潵緇欏ぇ瀹跺垎鏋愬垎鏋愭瘮鐗瑰竵鎸栫熆鍘熺悊銆
姣旂壒甯佹庝箞鎸栧嚭鏉ョ殑錛
浠諱綍浜哄潎鍙浠ュ湪涓撻棬鐨勭‖浠朵笂榪愯岃蔣浠惰屾垚涓烘瘮鐗瑰竵鐭垮伐銆傛寲鐭胯蔣浠墮氳繃P2P緗戠粶鐩戝惉浜ゆ槗騫挎挱錛屾墽琛屾伆褰撶殑浠誨姟浠ュ勭悊騫剁『璁よ繖浜涗氦鏄撱傛瘮鐗瑰竵鐭垮伐瀹屾垚榪欎簺宸ヤ綔鑳借禋鍙栫敤鎴鋒敮浠樼殑鐢ㄤ簬鍔犻熶氦鏄撳勭悊鐨勪氦鏄撴墜緇璐逛互鍙婃寜鍥哄畾鍏寮忓炲彂鐨勬瘮鐗瑰竵銆
鏂扮殑浜ゆ槗闇瑕佽鍖呭惈鍦ㄤ竴涓鍏鋒湁鏁板﹀伐浣滈噺璇佹槑鐨勫尯鍧椾腑鎵嶈兘琚紜璁ゃ傝繖縐嶈瘉鏄庡緢闅劇敓鎴愬洜涓哄畠鍙鑳介氳繃姣忕掑皾璇曟暟鍗佷嚎嬈$殑璁$畻鏉ヤ駭鐢熴傜熆宸ヤ滑闇瑕佸湪浠栦滑鐨勫尯鍧楄鎺ュ彈騫舵嬁鍒板栧姳鍓嶈繍琛岃繖浜涜$畻銆傞殢鐫鏇村氱殑浜哄紑濮嬫寲鐭匡紝瀵繪壘鏈夋晥鍖哄潡鐨勯毦搴﹀氨浼氱敱緗戠粶鑷鍔ㄥ炲姞浠ョ『淇濇壘鍒板尯鍧楃殑騫沖潎鏃墮棿淇濇寔鍦10鍒嗛挓銆傚洜姝わ紝鎸栫熆鐨勭珵浜夐潪甯告縺鐑堬紝娌℃湁涓涓涓浣撶熆宸ヨ兘澶熸帶鍒跺潡閾鵑噷鎵鍖呭惈鐨勫唴瀹廣
宸ヤ綔閲忚瘉鏄庤繕琚璁捐℃垚蹇呴』渚濊禆浠ュ線鐨勫尯鍧楋紝榪欐牱渚垮己鍒朵簡鍧楅摼鐨勬椂闂撮『搴忋傝繖縐嶈捐′嬌寰楁挙閿浠ュ線鐨勪氦鏄撳彉寰楁瀬鍏跺洶闅撅紝鍥犱負闇瑕侀噸鏂拌$畻鎵鏈夊悗緇鍖哄潡鐨勫伐浣滈噺璇佹槑銆傚綋涓や釜鍖哄潡鍚屾椂琚鎵懼埌錛岀熆宸ヤ細澶勭悊鎺ユ敹鍒扮殑絎涓涓鍖哄潡錛屼竴鏃︽壘鍒頒笅涓涓鍖哄潡渚垮皢鍏惰漿鑷蟲渶闀跨殑鍧楅摼銆傝繖鏍峰氨紜淇濋噰鐭胯繃紼嬬淮鎸佷竴涓鍩轟簬澶勭悊鑳藉姏鐨勫叏灞涓鑷存с
姣旂壒甯佺熆宸ユ棦涓嶈兘閫氳繃浣滃紛澧炲姞鑷宸辯殑鎶ラ叕錛屼篃涓嶈兘澶勭悊閭d簺鐮村潖姣旂壒甯佺綉緇滅殑嬈鴻瘓浜ゆ槗錛屽洜涓烘墍鏈夌殑姣旂壒甯佽妭鐐歸兘浼氭嫆緇濆惈鏈夎繚鍙嶆瘮鐗瑰竵鍗忚瑙勫垯鐨勬棤鏁堟暟鎹鐨勫尯鍧椼傚洜姝わ紝鍗充嬌涓嶆槸鎵鏈夋瘮鐗瑰竵鐭垮伐閮藉彲浠ヤ俊浠伙紝姣旂壒甯佺綉緇滀粛鐒舵槸瀹夊叏鐨勩
鐩鍓嶏紝鐩稿逛簬緹庡浗鍜屾ф床鐨勭熆宸ワ紝琚涓鍥戒漢涓誨肩殑鐭挎睜渚濇棫鍗犳嵁鐫浼樺娍銆備腑鍥界熆宸ヤ笉浠呮帶鍒朵簡澶ч儴鍒嗙畻鍔涳紝鑰屼笖浠栦滑鐨勭數璐規垚鏈閫氬父涔熸洿浣庛
1鏈15鏃ワ紝姣旂壒甯侀毦搴﹁涓婅皟浜嗙害7%錛屼富瑕佺殑鍘熷洜灝辨槸鏈榪戞瘮鐗瑰竵綆楀姏鍑虹幇澶у箙搴︾殑鎻愬崌銆傝繖鏄鏈鏈堢洰鍓嶄負姝㈡瘮鐗瑰竵闅懼害絎浜屾¤涓婅皟錛1鏈2鏃ワ紝姣旂壒甯佹寲鐭塊毦搴﹀氨鏇捐涓婅皟浜6.6%銆備粠2019騫翠笅鍗婂勾寮濮嬶紝涓嶆柇鎺ㄩ珮鐨勭畻鍔涗篃璁╅毦搴︽寔緇澧炲姞銆傞櫎浜2019騫11鏈18鏃ョ殑渚嬪栨儏鍐(姣旂壒甯佺殑闅懼害鐭鏆備笅璋冭繃7.1%宸﹀彸)錛屽叾瀹冨ぇ閮ㄥ垎鏃墮棿姣旂壒甯侀毦搴﹂兘鍦ㄥ揩閫熷為暱銆
鎸夌収姣旂壒甯佷駭鍑虹殑榪愮畻鍏寮忥紝鍑犱箮姣忛4騫撮兘浼氫駭鍑哄噺鍗婏紝鏈緇堣揪鍒版瀬鍊2100涓囦釜銆傝屾瘡閫㈡ゆ椂錛岄兘浼氬ぇ騫呭崌鍊箋傝繖縐嶆病鏈変腑澶閾惰屾帶鍒剁殑璐у竵錛屼笌涓嶆柇閲忓寲瀹芥澗鐨勭幇瀹炶揣甯佺浉姣旓紝涔熷皢浼氫笉鏂鍗囧箋傚埌2013騫達紝姣旂壒甯佸凡緇忎駭鐢熷嚭浜嗗ぇ綰1100澶氫竾涓銆
鏈鍒濈殑鏃跺欙紝鐢–PU灝卞彲浠ユ寲鍒版瘮鐗瑰竵錛屼腑鏈鑱灝辨槸鐢ㄤ粬鐨勭數鑴慍PU鎸栧嚭浜嗕笘鐣屼笂絎涓涓鍒涗笘鍖哄潡銆傜劧鑰岋紝CPU鎸栫熆鐨勬椂浠f棭宸茶繃鍘伙紝鐜板湪鐨勬瘮鐗瑰竵鎸栫熆鏄疉SIC鎸栫熆鍜屽ぇ瑙勬ā闆嗙兢鎸栫熆鐨勬椂浠c
鎸栫熆閫熷害錛屼笓涓氱殑璇存硶鍙綆楀姏錛屽氨鏄璁$畻鏈烘瘡縐掍駭鐢熷搱甯岀版挒鐨勮兘鍔涖備篃灝辨槸璇達紝鎴戜滑鎵嬮噷鐨勭熆鏈烘瘡縐掕兘鍋氱殑鍝堝笇紕版挒嬈℃暟錛屽氨鏄綆楀姏銆傛瘮鐗瑰竵鍦ㄥ畯瑙備笂鐨勫師鐞嗭紝灝卞傚悓榛勯噾涓鏍楓傞粍閲戝湪鍦扮悆涓婄殑鎬婚噺鏄涓瀹氱殑錛岃屼笖姣旇緝紼灝戱紝鍙浠ヤ綔涓轟竴鑸絳変環鐗╂潵浣跨敤錛屽湪綰稿竵澶ч潰縐鍙戣屼箣鍓嶏紝涓鐩翠綔涓鴻揣甯佺殑褰㈠紡鏉ヤ嬌鐢ㄣ傛瘮鐗瑰竵涔熸槸涓涓閬撶悊錛屼箣鎵浠ユ瘮鐗瑰竵鍙浠ョ敤鏉ヤ綔涓鴻揣甯佺殑褰㈠紡鏉ヨ繘琛屼拱鍗栵紝涔熸槸鍥犱負鍏舵婚噺鏄涓瀹氱殑錛岃屼笖鎸栫熆闇瑕佽姳璐瑰緢澶х殑鎴愭湰錛屼富瑕佽〃鐜板氨鏄鐢靛姏涓婄殑娑堣椼
宸ヤ綔閲忚瘉鏄庯紝綆鍗曠悊瑙e氨鏄涓浠借瘉鏄庯紝鐢ㄦ潵紜璁や綘鍋氳繃涓瀹氶噺鐨勫伐浣溿傜洃嫻嬪伐浣滅殑鏁翠釜榪囩▼閫氬父鏄鏋佷負浣庢晥鐨勶紝鑰岄氳繃瀵瑰伐浣滅殑緇撴灉榪涜岃よ瘉鏉ヨ瘉鏄庡畬鎴愪簡鐩稿簲鐨勫伐浣滈噺錛屽垯鏄涓縐嶉潪甯擱珮鏁堢殑鏂瑰紡銆
鐩樼偣鎸栫熆鎵闇璁懼:
1.鐭挎満錛岄氬父涓婄櫨銆佷笂鍗冩垨鑰呬笂涓囧彴銆
2.鐭垮満錛氶氶庛佹俯搴︽箍搴﹂備腑鐨勪笓涓氬満鍦般
3.鐢靛姏璧勬簮錛氱ǔ瀹氫緵搴斾笖浠鋒牸鍚堢悊鐨勭數鍔(閫氬父鐭垮満閮藉緩絝嬪湪鐢靛姏璧勬簮鍚堥傜殑鍦哄湴)錛屼赴姘寸數浠烽氬父鍦0.25鍏冨乏鍙籌紝鍏ㄥ勾鐢典環鍦0.35-0.4鍏冨乏鍙熾
4.緗戠粶璁懼囷細浜ゆ崲鏈恆佽礬鐢卞櫒絳夈
5.鐢墊簮錛氳窡鐭挎満閰嶅楃殑鐢墊簮錛屼笉鍚岀殑鐭挎満瀵圭數婧愮殑鍔熻楄佹眰涓嶄竴錛岄渶瑕佽喘涔板尮閰嶇殑鐢墊簮錛屼互鍏嶇儳鍧忔満鍣ㄦ垨鑰呯數婧愩
6.鐢墊簮綰垮拰緗戠嚎絳夈
7.鐭垮満綆$悊浜哄憳錛氫簡瑙e姞瀵嗘暟瀛楄揣甯佸拰鎸栫熆鐨勭$悊浜哄憳銆
8.鍏朵粬鎶鏈浜哄憳錛氱簿閫氱數鍔涚嚎璺緇存姢銆佺綉緇滅淮鎶ょ殑鎶鏈浜哄憳銆
9.娉ㄥ唽鐭挎睜璐﹀彿銆
10.閽卞寘/浜ゆ槗鎵鍦板潃錛氭敞鍐岄挶鍖呮垨鑰呬氦鏄撴墍璐﹀彿錛岃幏鍙栨墍鎸栧竵縐嶇殑鍦板潃錛屽~鍐欒嚦鐭挎睜銆傝嫢涓嶅~鍐欏湴鍧錛屾敹鐩婂皢鏆傛椂瀛樻斁鐭挎睜銆
閫氳繃浠ヤ笂浠嬬粛錛岀浉淇″ぇ瀹跺逛簬姣旂壒甯佹庝箞鎸栧嚭鏉ョ殑榪欎釜闂棰樺凡緇忔湁鎵浜嗚В錛屽叾瀹炲逛簬鎸栫熆鏉ヨ達紝鏈閲嶈佺殑灝辨槸鎸栫熆鏈猴紝鑰屾瘮鐗瑰竵鎸栫熆鏈虹殑閫夋嫨錛岄櫎浜嗚冭檻浠鋒牸鍜岀畻鍔涳紝涔熻秺鏉ヨ秺娉ㄩ噸鐭挎満鐨勭ǔ瀹氭у拰鍏堣繘鎬э紝鍙﹀栧氨鏄瑕佹姄浣忕幇鍦ㄦ敹鐩婇珮涓嶇『瀹氭т綆鐨勬椂闂寸獥鍙o紝鏃╂寲鏃╄禋鎵嶈兘絝嬩簬涓嶈觸涔嬪湴錛屾瘯絝熷彧鏈夊疄瀹炲湪鍦ㄦ寲鍒頒簡甯侊紝鎵嶆湁絳圭爜絳夊緟鏂扮殑鏈轟細鍑虹幇銆

2. 姣旂壒甯佸拰鍖哄潡閾懼暐鍘熺悊

1銆佸綋鏌愪竴涓鑺傜偣瑕佸彂璧蜂氦鏄撴椂錛屼細鍏堝皢浜ゆ槗騫挎挱緇欏叾浠栬妭鐐癸紝姝ゆ椂鎵鏈夎妭鐐歸兘鍙浠ョ粡鐢卞叡娌¢傝瘑綆楁硶鏉ュ喅鐫佹牳瀹氳皝鍙浠ラ獙璇佽繖絎斾氦鏋鏃╅儜鏄擄紝涔熷氨鏄鈥濊В棰樷濓紝涔嬪悗灝辨湁鐭垮伐甯浣犵殑浜ゆ槗璁鎮鍖呮垚涓涓鏂扮殑鍖哄潡閫佷笂鍖哄潡閾撅紝姝ゆ椂浜ゆ槗瀹屾垚銆
2銆佸綋鍏朵腑涓涓鑺傜偣鍏堣В鍑洪樼洰鏃訛紝渚跨敱璇ヨ妭鐐瑰皢楠岃瘉榪囩殑浜ゆ槗鍐欒繘鍖哄潡閾句腑錛屽苟騫挎挱閫氱煡鍏朵粬鑺傜偣銆傝屾暟鎹涓鏃﹁鍐欒繘鍖哄潡閾句箣涓錛屼究鏃犳硶鍐嶈紿滄敼銆
3銆佹瘡涓姣旂壒甯佽處鎴烽兘鏈夊叕閽ヨ窡縐侀掗錛屽彂璧蜂氦鏄撴椂鍙闇瑕佺敤縐侀掗絳懼悕錛岀劧鍚庣熆宸ョ敤鍏閽ユ鏌ョ懼悕鍗沖彲銆

3. 比特幣演算法原理

比特幣演算法主要有兩種,分別是橢圓曲線數字簽名演算法和SHA256哈希演算法。

橢圓曲線數字簽名演算法主要運用在比特幣公鑰和私鑰的生成過程中,該演算法是構成比特幣系統的基石。SHA-256哈希演算法主要是運用在比特幣的工作量證明機制中。

比特幣產生的原理是經過復雜的運演算法產生的特解,挖礦就是尋找特解的過程。不過比特幣的總數量只有2100萬個,而且隨著比特幣不斷被挖掘,越往後產生比特幣的難度會增加,可能獲得比特幣的成本要比比特幣本身的價格高。

比特幣的區塊由區塊頭及該區塊所包含的交易列表組成,區塊頭的大小為80位元組,由4位元組的版本號、32位元組的上一個區塊的散列值、32位元組的 Merkle Root Hash、4位元組的時間戳(當前時間)、4位元組的當前難度值、4位元組的隨機數組成。擁有80位元組固定長度的區塊頭,就是用於比特幣工作量證明的輸入字元串。不停的變更區塊頭中的隨機數即 nonce 的數值,並對每次變更後的的區塊頭做雙重 SHA256運算,將結果值與當前網路的目標值做對比,如果小於目標值,則解題成功,工作量證明完成。

比特幣的本質其實是一堆復雜演算法所生成的一組方程組的特解(該解具有唯一性)。比特幣是世界上第一種分布式的虛擬貨幣,其沒有特定的發行中心,比特幣的網路由所有用戶構成,因為沒有中心的存在能夠保證了數據的安全性。

4. 姣旂壒甯佺殑鎸栫熆鍘熺悊鏄浠涔

姣旂壒甯佺殑鎸栫熆鍘熺悊瀹為檯涓婂氨鏄涓涓鏁版嵁榪涘叆鐨勮繃紼嬶紝鍖哄潡閾炬槸涓涓浜轟漢閮藉彲浠ュ弬涓庢暟鎹澶勭悊鐨勬暟鎹搴擄紝姣忛殧涓孌墊椂闂村氨闇瑕佺熆宸ュ皢涔嬪墠娌℃湁緇忚繃澶у剁『璁ょ殑浜ゆ槗鏁版嵁鏀墮泦璧鋒潵榪涜屽勭悊銆備絾闂棰樺氨鏉ヤ簡錛岀熆宸ラ偅涔堝氾紝鍒板簳鐢ㄨ皝澶勭悊鐨勬暟鎹錛
鎵浠ョ郴緇熷氨鏈変簡涓涓鐗規畩鐨勬満鍒訛紝鎵鏈夊弬涓庣殑鐭垮伐鎶婃暟鎹鎵撳寘鐨勬椂鍊欙紝蹇呴』鍔犲叆涓涓鍙鍋"鍝堝笇鍊"鐨勪笢瑗匡紝鑰屼笖榪欎釜"鍝堝笇鍊"蹇呴』婊¤凍涓瀹氱殑鏉′歡錛岀郴緇熸墠浼氳ゅ彲浣犲勭悊鐨勬暟鎹錛岃皝鑳芥渶鍏堝畬鎴愯繖浠朵簨騫舵妸鑷宸辯殑宸ヤ綔鎴愭灉騫挎挱緇欏叾浠栫殑鐭垮伐紜璁わ紝涓斿ぇ閮ㄥ垎璁や負娌¢棶棰樺氨鑳借幏寰楄板綍鏁版嵁鐨勬潈鍒╀互鍙婂緢澶氱殑姣旂壒甯佷綔涓哄栧姳錛岃繖灝辨湁鐐瑰儚涓涓嫻瘋醇鐜嬬暀涓嬪ぇ絎旂殑閲戦摱鐝犲疂錛岀劧鍚庤窡鎵鏈変漢璇村幓瀵繪壘鍚э紝璋佽兘鎵懼埌寮鍚鎴戝疂鈃忓ぇ闂ㄧ殑閽ュ寵璋佸氨鑳借幏寰楁垜鐨勫叏閮ㄨ儲瀵屻
褰撶劧錛岀熆宸ユ寲鐭誇笉浠呬粎鏄涓轟簡姣旂壒甯侊紝鍥犱負榪欐槸緇存姢鏁翠釜鍖哄潡閾劇綉緇滅殑閲嶈佺幆鑺傦紝鎸栫熆鐨勪漢瓚婂氾紝鍙備笌鏁版嵁紜璁ょ殑浜轟篃灝辮秺澶氾紝鎴戜滑鐨勬暟鎹涔熷氨瓚婂畨鍏錛屾墍浠ヤ笉瑕佸皬鐬х熆宸ワ紝鐪熺殑鍒頒簡鏁版嵁鐖嗙偢鐨勯偅澶╃熆宸ユ嫰鏁戜笘鐣岋紝鍙涓嶆槸璇磋磋屽凡銆

5. 詳解比特幣挖礦原理

可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。

比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。

至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。

通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。

在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。

在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。

每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:

交易的語法和數據結構必須正確。

輸入與輸出列表都不能為空。

交易的位元組大小是小於MAX_BLOCK_SIZE的。

每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。

沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。

nLockTime是小於或等於INT_MAX的。

交易的位元組大小是大於或等於100的。

交易中的簽名數量應小於簽名操作數量上限。

解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。

池中或位於主分支區塊中的一個匹配交易必須是存在的。

對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。

對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。

對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。

對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。

使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。

如果輸入值的總和小於輸出值的總和,交易將被中止。

如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。

每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。

以下挖礦節點取名為 A挖礦節點

挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。

驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。

A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。

一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。

然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。

如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。

在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。

UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。

塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。

區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。

A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。

用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。

需要以下參數

• block的版本 version

• 上一個block的hash值: prev_hash

• 需要寫入的交易記錄的hash樹的值: merkle_root

• 更新時間: ntime

• 當前難度: nbits

挖礦的過程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。

簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。

如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?

比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。

那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。

為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。

舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。

比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。

每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。

比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。

節點維護三種區塊:

· 第一種是連接到主鏈上的,

· 第二種是從主鏈上產生分支的(備用鏈),

· 第三種是在已知鏈中沒有找到已知父區塊的。

有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。

如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。

選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。

當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。

分叉之前

分叉開始

我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。

假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。

比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。

分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。

所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。

比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

6. 比特幣背後黑白歷史被揭發,比特幣的原理是什麼

比特幣我相信很多人都知道,那比特幣的原理是什麼呢?對於比特幣是如何開採的,又是如何交易的,這些原理我相信很多人還不是很了解,下面我就來說下比特幣的原理是什麼,僅供大家參考討論。

問題總結

對於比特幣來說,被財團控制的問題我們就不說了,但是比特幣的原理在上面已經被介紹了,所以對於比特幣來說,我建議大家不要過於熱衷,因為虛擬的東西是很微妙的,當你熱衷於這類產品的時候,危險也會離你不遠了,所以對於比特幣的問題,我相信很多人或多或少也知道一些,但是對於這些問題在貪婪的面前一文不值,所以你不了解比特幣更深入原理的時候,你不要去觸碰,當你觸碰比特幣的時候,你一定要去了解更多的知識才可以。以上就是我的個人看法與想法, 僅供參考討論。

7. 比特幣原理

比特幣交易平台的盈利方式是手續費,也有其它的增值收費模式。
比特幣(Bitcoin)是一種基於去中心化,採用點對點網路與共識主動性,開放源代碼,以區塊鏈作為底層技術的虛擬加密貨幣。
由中本聰在2008年提出,2009年誕生,與其他虛擬貨幣最大的不同,是其總數量非常有限,具有的稀缺性。
與所有的貨幣不同,比特幣不依靠特定貨幣機構發行,它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。

8. 比特幣的挖礦的原理是什麼

比特幣挖礦的原理是,執行由人制定的、由計算機自動執行的規則 。

比特幣的發明者薩拓喜·那卡摩托(Satoshi Nakamoto,中本聰)在一開始就規定了這一規則,參與比特幣區塊鏈的人都必須無條件自動遵守。

規則的內容大致是

將比特幣的流通數據進行打包,整理成固定大小,然後上傳到區塊鏈上進行比特幣全網同步廣播的人,就可以得到由系統獎勵的50個比特幣。

在特定條件下,這些獎勵會減半,時間大約是4年減半一次。

那麼怎麼完成這個數據的打包整理呢?

要完成這個動作的人必選先擁有必要的工具,即執行比特幣區塊鏈的軟體,還有運行該軟體的機器(一開始是電腦);然後下載保存有所有已獲得全網承認的的比特幣交易數據,這個時候你就成為了「節點」,成為了保護區塊鏈數據的一份子。

節點運行特定的數學公式,得出正確答案後才能獲取打包數據的優先權。獲得優先權的節點,誰先完成打包然後上傳到區塊鏈上,並得到其他節點的接收和認可,那系統將自動把獎勵發放到他手中。

如果打包的交易中有用戶塞給打包節點的比特幣手續費,手續費歸該節點所有。

人們覺得計算數學公式然後完成打包獲得獎勵的過程,就和在大河裡撈金沙一樣,要摒棄掉許多錯誤的答案才能找到正確的鑰匙獲取黃金,所以人們把這個過程比喻為挖礦。

所以比特幣挖礦不是真的去挖什麼玩意兒,就是用計算機不停的碰撞不停的猜,誰先猜到誰就搶得獎勵,僅此而已。

9. 姣旂壒甯佹寲鐭垮師鐞

闅忕潃緗戠粶鏃朵唬鐨勬潵涓達紝鏁板瓧璐у竵涔熼愭笎榪涘叆浜嗗ぇ浼楃殑瑙嗛噹錛屾瘮鐗瑰竵灝辨槸鍏朵腑闈炲父鏈夊悕鐨勪竴縐嶇綉緇滆櫄鎷熻揣甯併備漢浠閫氬父浼氬皢鑾峰緱姣旂壒甯佺殑榪囩▼縐頒箣涓烘寲鐭褲傞偅涔堬紝姣旂壒甯佹寲鐭垮師鐞嗘槸浠涔堝憿錛
姣旂壒甯佹寲鐭跨殑璇濓紝涓昏佹槸閫氳繃綆楁硶鏉ヨ幏寰楁瘮鐗瑰竵鐨勶紝鑰屽湪姣旂壒甯佺郴緇熶腑錛屽熀鏈鏄淇濊瘉姣忚繃澶х害10鍒嗛挓錛屽氨浼氭湁涓涓鑺傜偣鎸栫熆鎴愬姛鐨勶紝鑰屼竴鏃︽湁浜烘寲鐭挎垚鍔燂紝姣旂壒甯佺郴緇熷氨浼氬栧姳姝や漢涓瀹氭暟閲忕殑姣旂壒甯侊紝鑰岃繖涓鏁伴噺鍒欐槸閫氳繃綆楁硶鎺у埗鐨勩
鑰屾瘮鐗瑰竵鎸栫熆鐨勫師鐞嗗氨鏄疨OW綆楁硶錛屼篃灝辨槸宸ヤ綔閲忚瘉鏄庣畻娉曘傜畝鑰岃█涔嬪氨鏄涓浠借瘉鏄庯紝鐢ㄦ潵紜璁や綘鍋氳繃涓瀹氶噺鐨勫伐浣溿
搴旂敤鍒扮敓媧誨綋涓鏉ヨ寸殑璇濓紝灝卞儚浣犺佹嬁鍒板︿綅璇佺殑璇濓紝灝遍渶瑕侀氳繃璁烘枃錛岃岃佹嬁鍒伴┚鐓х殑璇濓紝灝辮侀氳繃椹劇収鑰冭瘯銆傛墍浠ユ瘮鐗瑰竵鎸栫熆灝辨槸鏍規嵁鎸栫熆璐$尞鐨勬湁鏁堝伐浣滐紝鏉ュ喅瀹氳揣甯佺殑鍒嗛厤銆

閱讀全文

與比特幣底層原理相關的資料

熱點內容
我有一萬個比特幣擔心被盜怎麼辦 瀏覽:576
中國區塊鏈沙盒app 瀏覽:22
cbt和比特幣一樣嗎 瀏覽:555
怎麼樣算記憶力下降 瀏覽:715
以太坊錢包什麼作用 瀏覽:184
以太坊出礦量低 瀏覽:926
最新8卡以太坊礦機配置 瀏覽:899
比特幣每秒交易多少次 瀏覽:355
虛擬貨幣高風險 瀏覽:733
2019比特幣合法嗎 瀏覽:196
數字貨幣預計什麼時候上架 瀏覽:860
港股的區塊鏈概念股 瀏覽:167
ace幣區塊鏈 瀏覽:536
數字貨幣超過巴菲特是誰 瀏覽:70
gucs數字貨幣今日價格 瀏覽:305
PS42k18虛擬貨幣到賬 瀏覽:857
虎爾比特幣 瀏覽:390
紅牛礦池怎麼激活 瀏覽:535
btc合約如何套利 瀏覽:491
以太坊打開埠 瀏覽:250