當前位置:首頁 » 區塊鏈知識 » 比特幣驗證區塊鏈原則

比特幣驗證區塊鏈原則

發布時間: 2022-09-17 20:08:50

比特幣採用什麼機制來確保區塊序列

大致說下吧, 主要是區塊鏈這個概念,你可以理解成是一個長長的賬本, 裡面記錄了各類支出收入。 而挖礦相當於去增加這個賬本的內容, 但是這個賬本不是你說改就能改的。 新增加的內容必須要滿足一系列條件並被第三方驗證。 這個過程就叫挖礦, 而新增內容就叫塊。這個塊剛出來的時候已經有一筆交易了,就是挖礦的人的獎勵。 這個塊不是挖出來就好了的, 需要由另外幾個人的確認,而整個確認過程是通過p2p協議來完成的。 舉個例子: 區塊鏈相當於是一部電影, 比特幣客戶端相當於是迅雷, 每一個在線的客戶端相當於是種子, 所以這個賬本(區塊鏈)就會同時被這個幾個人下載, 而驗證過程就相當於是互傳。

Ⅱ 區塊鏈技術的原理

下面就以比特幣為例進行說明:
區塊鏈(Blockchain)是比特幣的一個重要概念,本質上是一個去中心化的資料庫,同時作為比特幣的底層技術。區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。
區塊鏈在網路上是公開的,可以在每一個離線比特幣錢包數據中查詢。比特幣錢包的功能依賴於與區塊鏈的確認,一次有效檢驗稱為一次確認。通常一次交易要獲得數個確認才能進行。輕量級比特幣錢包使用在線確認,即不會下載區塊鏈數據到設備存儲中。
比特幣的眾多競爭幣也使用同樣的設計,只是在工作量證明上和演算法上略有不同。如,採用權益證明和SCrypt等等。
除此之外,萊特幣以太坊、微盟幣、狗狗幣、瑞泰幣等數字加密貨幣也都是利用區塊鏈的技術。

Ⅲ 全面解讀區塊鏈與比特幣,教你看懂兩者的關系,有備無患

當談及區塊鏈,往往離不開「比特幣」一詞,由於如今的加密貨幣都是基於區塊鏈的名義發布,因此部分人很容易將兩者的概念發生混淆。接下來,可鏈雲 科技 會全面解讀區塊鏈與比特幣的區別,教你看懂兩者之間的關系。

區塊鏈是一個分布式賬目,簡單來說,還是一個分散的賬本,可以供很多人查看和加入其中。舉個例子,每個區塊,就相當於一根繩子上面的每個繩結,當每一筆新交易進入區塊鏈後,就等於發生了一件事,為了標志事情的發生會象徵性打個結,並在特定的結上面記錄詳細的信息。

而比特幣是利用區塊鏈實現價值儲存和交易,另外,區塊鏈本身的技術難度不是最大的,最難的是其應用的場景,以及將會面臨的監管問題。

區塊鏈有三種分類,即公有區塊鏈、私有區塊鏈、聯合區塊鏈;另外的一種分類則是是無許可權與許可。

因此,加密貨幣使用區塊鏈技術,而區塊鏈技術卻不專屬於加密貨幣

當金融危機到來時,一些投資者紛紛選擇投資加密貨幣,以此躲避相應的資產風險,得益於區塊鏈解決信任問題的機制,該技術已經被應用於金融管理、交易中。主要表現為,區塊鏈可以追蹤多種類型的交易,還能在多種場景中起到防偽溯源的作用,像版權、商標、學歷造假等問題紛紛曝光。

另外,區塊鏈技術還能簡化交易,使整個交易流程變得公開、透明,對每一交易事件的環節進行追蹤,確保合作雙方擁有一定的信任度。

在「挖礦」時開源的區塊鏈網路,可以確保信任,還具有不可篡改等特點,當聯網的計算機經過精密的演算法後,正確答案出來了,「曠工」們就會得到挖礦獎勵,並可以用到遍布全球的伺服器,不過整個過程還是很耗能的。

可能是這一誤區導致大眾將比特幣與區塊鏈的概念搞混了,雖然當前超過90%的區塊鏈項目都有發幣,但是真正能落實的項目卻甚少,另外,比特幣瘋狂挖礦的做法,很大程度上浪費了顯卡和電力。

比特幣是區塊鏈技術的一個開源而已,即一個對所有人都開發的網路,憑借去中心化的優點而備受歡迎,不過,作為一個公共區塊鏈的比特幣卻因為挖礦消耗了大量的計算能力,導致多個國家的電力消耗嚴重。

所以說,對於一種新興技術,最好不能盲目信任或投入,認清其真正的用途,才能做到客觀看到每種事物,做到有備無患。

Ⅳ 從比特幣說起,區塊鏈到底是個啥

從一筆交易看區塊鏈運作流程:
在比特幣區塊鏈中,當一筆交易通過某個節點或錢包產生時,這筆交易需要被傳送給其它節點來作驗證。做法是將交易資料經由數位簽章加密並經由哈希演算法得出一串代表此交易的唯一哈希值後,再將這個哈希值廣播(Broadcast)給比特幣區塊鏈網路中的其它參與節點進行驗證。哈希演算法是將任意長度的二進制值映射為固定長度的較小二進制值,那麼小的二進制值稱為哈希值。哈希值就是一段數據唯一且極其緊湊的數值表示形式。 假如散列一段明文而且哪怕只更改該段落的一個字母,隨後的哈希都會產生不同的值。如果要找到散列為同一個值的兩個不同的輸入,這在計算上來說基本上是不可能的。
產生一筆新交易時,會先被廣播到區塊鏈網路中的其它參與節點。各節點將數筆新交易放入區塊,每個節點會將數筆未經驗證的交易哈希值收集到區塊中,每個區塊可以包含數百筆或者上千筆交易。
各節點進行工作量證明的計算來決定誰可以驗證交易,由最快算出結果的節點來驗證交易,這就是取得共識的做法。取得驗證權的節點將區塊廣播給所有節點最快完成POW的節點,會將自己的區塊廣播給其他節點。各節點驗證並接上新區塊。其他節點會確認這個區塊所包含的交易是否有效,確認沒被重復花費且具有效數位簽章後,接受該區塊,此時區塊才正式接上區塊鏈,無法再修改資料。所有節點一旦接受該區塊後,先前沒算完POW工作的區塊會失效,各節點會重新建立一個區塊,繼續下一回POW計算工作。
由此可見,區塊鏈原理並不復雜,它的廣泛應用也是理所當然。有很多公司在把區塊鏈原理應用到現實的過程中得到豐碩的成果。像比特幣,雖然參與者的ID都是匿名的,但區塊鏈上的數據都是默認公開的。這種開放性所帶來的優勢是史無前例的,比如:抗攻擊的能力,抵抗專制制度資本管控的能力。它在保證安全的同時公開透明,所有參與者的賬戶余額、所有的交易記錄都可以被人們看到。直到現在我們依然對此感到驚奇,因為這種保障安全的方法是這么新穎,然而在比特幣存在的7年歷史中,還沒有人切實可行的打破過這種安全。

Ⅳ 關於比特幣的謎題(完結)

你可曾想過: 為什麼礦機算力越大越好?(既然是解數學題那為什麼不是拼誰的演算法厲害啊喂!) 比特幣的數量總和為什麼是2100萬? 比特幣盜竊是怎麼回事? 我不玩比特幣,就真的與比特幣無關了嗎…… 🤔️

關於大眾不再感到陌生的比特幣,背後還有許多巧妙之處。本文介紹了比特幣的基本原理和主要原則,並結合對部分技術細節的剖析,來對上述的一些疑問作出解答。全文較長,約7000字,閱讀時間約為22分鍾,建議收藏後閱讀😁

文章可以分成以下幾個部分:

* 比特幣先驗知識

        -- 密碼學相關

        -- 比特幣重要概念

* 交易的生命周期

* 區塊鏈的構成

* 區塊鏈的生長

         -- 「挖礦」的數學本質

         -- 「礦工」的收益

* 比特幣的共識機制

          -- 比特幣的去中心化共識

          -- 「最長鏈優先」原則

* 比特幣安全性

比特幣作為第一個去中心化的數字貨幣,其設計中運用了不少的密碼學相關知識,主要包括非對稱加密技術、哈希函數等等。理解這些密碼學知識,能幫助我們更好地理解比特幣中的一些概念及規則。

以下是比特幣的一些定義及概念解說,了解過的小夥伴們可以直接跳過~

在比特幣這個創新的支付網路中,一個交易的生命周期大概可以分為幾個階段:創建、傳播和被驗證交織、被打包進區塊記錄到區塊鏈中、獲得更多的確認。圖1對這幾個階段做出了示意。

註:

1⃣️一個支付方A在發起一個比特幣交易時,會使用自己的私鑰對交易信息的哈希值進行簽名。因此A向全網廣播的內容除了交易信息之外,還有自己的公鑰信息、對消息的簽名。其他礦工只要利用A的公鑰即可對這個交易進行驗證,判斷是否真的由A創建。

2⃣️」交易傳播和交易驗證「交替意味著 各個節點基於一定的規則獨立驗證每個交易(共識基礎1) , 一個節點只有認為這個交易有效才會把它繼續傳播出去。

比特幣的底層技術是區塊鏈。區塊鏈系統是一種分布式共識系統,區塊鏈網路中所有的參與節點將就交易的狀態達成一致。

區塊鏈到底是什麼呢?你可以把它理解成一種分布式的交易的共享賬本,以區塊為基本單位鏈接在一起。交易信息將被整理並打包記錄在區塊中。每一個區塊,包含區塊頭,以及緊跟其後的交易列表。區塊頭包含3個區塊元數據集合:前序區塊哈希(嚴格來說是前序區塊頭哈希,因為只有區塊頭被用於哈希運算)、元數據集(包括難度、時間戳、隨機數等)、一個基於加密哈希來高效概括區塊中所有交易的默克爾樹(merkle tree)。了解這個結構,將幫助我們更好地理解挖礦的數學本質。

你可能聽說過「挖礦」這個詞,或者聽說眾人爭相購買挖礦機器來發家致富。但讓人疑惑的是:都說打包區塊的本質是解數學難題,但單憑那些看似簡陋的機器嗡嗡嗡瘋狂耗費電力,就能確保自己解出比特幣難題的勝率高了嗎?比特幣技術原理中,礦工們解決的數學題,難道是一個暴力破解題?

看了一圈,發現礦工們解決的題,還真有點暴力破解的意思,每次嘗試解題的過程幾乎都是茫茫然、去碰運氣的。拼的是誰足夠幸運,也拼誰算的足夠快;算的快了么,試錯次數多,自然勝算也就大了。

解題的背景是這樣的—— 挖礦節點通過基於工作量證明演算法(Proof-of-Work,POW)的證明運算,獨立將交易匯聚到新區塊中(共識基礎2)。 當礦工從網路中接收到一個新的區塊的時候,他發現自己已經在上一輪競爭中失敗了,所以立即開始新區塊的挖礦過程。為了創建一個新的區塊,他從內存池中選擇交易來填充區塊(加入區塊的第一筆交易是一個「鑄幣交易」,3.2節會給出詳相關細節)。接下來是填充欄位來創建區塊頭(包括前序區塊的區塊頭哈希、交易的默克爾樹(Merkel樹)、時間戳、難度目標值、隨機數),然後開始計算這個新區塊的工作量證明。

這個計算的過程簡單來說是對區塊頭部進行兩次sha256運算,得到一個RESULT,如果這個RESULT滿足特定要求,這個人才能算是算對了、才有權利去記賬。滿足要求的RESULT被稱為「工作量證明」(中本聰論文中稱為「proof of work」)。

關於這個計算過程,強調以下幾點:

第一,區塊頭部,包含了前序區塊頭部的哈希、本區塊交易信息的默克爾樹、時間戳、難度目標值、隨機數等信息(見圖2)。

第二,哈希運算具有「知道y,無法推出使得h(x)=y成立的x」、「即使輸入只改變一點點,輸出也會差很多」、「利用任意長度的數據作為輸入,生成一個固定長度的確定結果」的特性。所以大家也不知道什麼樣子的輸入才能產生自己想要的結果,礦工只能不斷嘗試。

第三,前面說到,區塊頭哈希值需要滿足一個特定要求才能成為工作量證明——小於某一閾值,或者說哈希值含有給定前綴。閾值的大小求和挖礦難度有關:挖礦難度是一個動態參數,其值越大,則閾值越小,說明哈希值符合要求的概率更小,礦工每次計算能成為工作量證明的概率越小。比特幣有一個自我調節過程——通過對現有的挖礦算力情況進行估算,來對應調整挖礦難度,可以保證區塊鏈每十分鍾出一個塊,達到控制發行速度的目的。(這個過程的基本思想類似產品筆試的數據估算題,根據「一個提供、一個需要「的思路去構造一個等式,然後求解等式一邊的一個因子;想了解挖礦難度系統和調整方式的同學可以進一步查閱~)

綜合以上三點來看,為了產生工作量證明,用戶基本上會通過調整隨機數來碰運氣(因為其他欄位基本不變)、進行多次運算直至符合要求,別無他法。如此一看,隨機數就具有「幸運數字」的意味了。因此,平均來講,誰計算的能力越強(嘗試的次數越多),就更有希望打包塊。

你可能會想,礦工這么心甘情願地消耗算力去維護區塊鏈,是受到怎樣的利益驅使呢?簡單來說,礦工的收益來源有二:1、計算出工作量證明,創造一個新區塊所獲得的新幣獎勵;2、記賬礦工費。

當礦工找到工作量證明、打包一個新區塊,並把區塊傳送給他的所有對等節點。 每一個挖礦節點都獨立驗證新區塊、把合格的新區塊整合進區塊鏈(共識基礎3) ,並把這個區塊繼續傳給自己的對等節點。結果是,只有經過驗證的區塊才會在網路當中廣泛傳播,保證了誠實礦工挖出的新區塊能被區塊鏈所接納。挖礦成功的個體節點或集體節點,可以同時獲得新幣獎勵和記賬礦工費。

新幣獎勵類似於貨幣的發行,其遵循規則是,第一個四年每一個新區塊產生50btc,第二個四年每一個新區塊產生25btc,第三個四年每個新區塊產生12.5btc,如此周期指數遞減。按照等比數列求和可知,到2140年,比特幣產生的總和約為21000000(所以說比特幣數量有限,天生緊縮)。屆時,不再隨區塊的產生增加新的比特幣,礦工不再擁有第一項收益。但現實中,由於挖礦成本高昂,挖礦成功的往往是是一個礦池的所有參與者。收益被分給礦池地址,礦池按照組內算力貢獻比例來分攤收益的。

記賬礦工費又稱交易費用,以交易輸入和交易輸出之間的差值的形式存在;一個區塊的總交易費用是對加入區塊的所有交易的(交易輸入-交易輸出)求和。一般來說,礦工費越高的交易,會越快被處理。而礦工費在這里起到兩個作用,一個是獎勵礦工,另一個是防止主鏈濫用(防止大家發送交易垃圾信息,因為提出交易是有一定代價的)。

礦工的收益以什麼樣的形式被驗證呢?這里不得不提到 「鑄幣交易」 。每個計算機節點在進行工作量證明計算之前加入區塊的第一筆交易,正是「鑄幣交易」。這個交易從無到有生成比特幣,其金額是新幣獎勵與記賬礦工費的總和,被支付到挖礦礦工自己的比特幣地址。如果礦工找到了一個工作量證明使區塊有效,他就贏得了這個獎勵,因為他構造的「鑄幣交易」生效了。

關於鑄幣交易和「新幣獎勵」,之前有一個讀者問我:一個礦工把自己挖到新區塊的消息公布出去,他的工作量證明 不會被別人剽竊 嗎?

個人認為,至少「鑄幣交易」能防止這件事情發生。讓我們來重申一下計算工作量證明的過程——一個礦工E在新區塊里加入了獎賞自己的「鑄幣交易」,並利用時間戳、前序區塊頭哈希、隨機數、本區塊交易的merkle樹等信息計算出一個符合要求的工作量證明。

在這個過程中,merkle樹啥樣子,取決於包括「鑄幣交易」在內的本區塊所有交易信息。因此可以把鑄幣交易視為工作量證明的間接變數之一。那麼,即使其他人拿到了E的工作量證明,這個工作量證明也是帶有E的印記的、與獎賞E的鑄幣交易相關的,別人根本無法納為己用。

你還可以通過設想以下的場景來加深對共識基礎2「挖礦節點通過基於工作量證明演算法的證明運算,獨立將交易匯聚到新區塊中」的理解。

為什麼一個挖出新區塊的礦工不悄悄使個心眼,在創建區塊之初就把鑄幣交易的金額設成1000BTC呢?原因在於每個節點都是基於相同的規則來獨立驗證區塊的。礦工必須創建完美的、符合公共規則的、正確依據工作量證明方法的區塊;而一個無效的鑄幣交易會導致整個區塊無效,並被其他節點拒絕,永遠無法成為賬本的一部分。可以預想,為了生成這個工作量證明,礦工們已經投入了巨大的算力和電量去挖礦,如果涉嫌欺詐而被否決,其為挖礦付出成本都付諸東流。

綜上所述,礦工不能冒領他人的獎勵,而拿到獎勵的礦工也必須只能拿取符合規定的數額。

   比特幣的卓越之處,在於建立了一種去中心化的自發共識。這種共識是自發產生的,是成千上萬在網路中遵循著共同規則的節點,在非同步交互中形成的,不依賴於任何中央機構的調解和干涉。

   關於比特幣的4項主要共識基礎,本文在講解對應細節時有提及,下面做一個整合:

     這四個過程相輔相成、互相作用,形成了自發的全網共識,促使全網節點組合出可信、公開、權威的總賬。  

你可能會想,比特幣是一個去中心化的、基於大眾信任的、依靠眾人力量運轉的一個東西。萬一有一部分礦工被壞人收買了咋辦呢?「51%攻擊」指的又是什麼?比特幣交易所要求的「6個確認」又是怎麼回事?

這里首先要提到比特幣的一個規則「 最長鏈優先 」。意思是, 比特幣的賬單鏈在出現分叉的時候,每個礦工會獨立選擇長(累積了最多工作量證明)的鏈條,在上面繼續挖礦工作(共識基礎4) 。

這個原則主要涉及到兩個問題:

當有兩個礦工A和B同時挖礦成功(算出符合要求的數學答案)時,他們分別把自己計算出來的工作量證明作為下一個塊的前序區塊哈希,生成一個塊銜接到原有的鏈後面,由此出現了兩個分支。

這個時候,這兩個成功的礦工廣播了自己打包成功的消息。由於區塊鏈是一個去中心化的數據結構,區塊消息到達不同節點的時間點不一致,故不同的節點可能擁有不完全一樣的區塊鏈視圖——有的礦工會先收到A的消息,有的則先收到B的消息。為了解決這個問題,收到消息的礦工們遵循一個原則:選擇並嘗試延長最長的鏈。

因此,這兩條分支會各自成長一小段時間,直到他們的長度出現差異(不可能長度一直相同),比如說其中一條鏈的礦工們,更快地打包在支鏈後面又加上一塊。按照「最長鏈優先「的規則,較短的鏈會被拋棄,原本工作在短鏈上的礦工們都回到長鏈上工作。

換言之,分叉只是不同節點暫時的不一致現象,當新區塊被加入到其中某一分支時,最終收斂將解決這一個問題。[讀者可以思考一下,為什麼區塊鏈被設置成每十分鍾挖出來一個塊:如果時間短了,是不是就增加了分支產生的次數?如果時間長了,是不是交易結算的效率就太低了?]

雙重支付的本質其實也是區塊鏈的分叉,但這種分叉卻是「非自然惡意蓄謀」的產物。

我們假設小敏是密謀雙重支付的一方,她把自己僅有的10BTC先給小強、交換一塊黃金,待這條交易信息P被打包進區塊Q後,她從小強手中拿到了黃金。這時,小敏使了個心眼,她想偷偷抹去、篡改區塊Q上的交易信息P,「白嫖」這塊黃金。為了實現這樣的目的,根據「最長鏈優先」法則,小敏必須剔除該筆交易P後、重新進行結算工作,集中算力來形成分叉,並讓分叉以更快的增速超過並取代Q所在的主鏈。如果小敏確實能讓分叉更長,分叉就成為了主鏈,其他節點也會轉向新主鏈上繼續工作。這樣,小強付出了黃金,卻沒有收到這10個比特幣,「賠了夫人又折兵」。

在這個過程中,小敏需要和原鏈進行「抗爭」,使新分叉成為最長的主鏈,這被稱為「共識攻擊」。「共識攻擊」本質上是對下一區塊的爭奪,攻擊方越「強壯」、哈希算力越大,就越容易成功。

「共識攻擊「成功的可能性有多大呢?

大多數比特幣交易所規定,一個交易傳送到區塊鏈上後需要6個「確認」來完成驗證該筆交易。這一規定的根據是,假設意圖造假的礦工擁有10%的算力(挖礦成功概率0.1),那麼造假礦工要構造另一條偽鏈實施長度超越,必須至少成功挖礦6次。那麼原鏈被取代、被拋棄的概率約為0.1的6次方,趨近於0。你可以把比特幣理解為地質構造層,表層可能因為季節變換而有所改變,甚至可能被風颳走,但一旦深入到地下,地質層就能更加穩定、不受干擾。

而假設有一群擁有了51%算力的礦工,他們控制了一半以上的全網哈希算力,可以故意在區塊鏈中製造分叉、進行雙重支付交易 。但事實是,全網哈希算力的大量增加,個體礦工幾乎不可能控制哪怕1%的哈希算力了(但礦池帶來的算力集中化控制,存在一定的風險)。更何況,如果真有擁有如此強大算力的組織,他完全可以憑借自己強大的算力投入到挖礦中去獲取開發新區塊所獲的的比特幣獎勵,誠實挖礦比雙花更有利可圖。

盡管實際上並未出現51%攻擊的問題,但不可否認的是,算力的集中違背了比特幣去中心化這一初衷,並成為其繼續發展的一大隱患。

一個系統的安全性,往往取決於系統安全的最薄弱環節,這也就是所謂的「木桶原理「。與區塊鏈系統相關的安全性問題包括但不限於以下幾項:

(1)在區塊鏈上被廣泛使用的公鑰系統基本上是安全的,但量子演算法在理論上能夠破解公鑰系統;因此,區塊鏈的演算法安全性是相對的。

(2)區塊鏈協議本身存在邏輯缺陷,例如受到黑客攻擊的區塊鏈系統共識機制。

(3)所有數字貨幣系統高度依賴私鑰,私鑰在存儲、使用方面的安全性成為區塊鏈系統安全性中至關緊要的一環。

盡管區塊鏈是去中心化系統,但目前絕大多數數字交易所卻是中心化的,存在著人為安全漏洞及技術安全漏洞。這些數字交易所擁有存放大量加密貨幣的私鑰,這對於黑客來說無疑是最矚目的目標;只要黑客偷走了這些私鑰,就可以獲取到這些加密貨幣。

作者會繼續閱讀相關資料、不斷完善本文,目標是完成一篇通俗易懂的比特幣科普文章。:)

**本文系網上信息與個人理解的結合,如有偏差及誤讀,歡迎讀者指出。也歡迎給出關於文章結構上的指導~

Ⅵ 比特幣和區塊鏈是什麼

區塊鏈誕生自中本聰的比特幣,是比特幣的底層技術,自2009年以來,出現了各種各樣的類比特幣的數字貨幣,都是基於公有區塊鏈的
1、比特幣是一種P2P形式的數字貨幣,P2P(即點對點)的傳輸意味著一個去中心化的支付系統,後來比特幣技術被抽象提取出來,稱之為區塊鏈技術。
2、2008年由中本聰第一次提出了區塊鏈的概念,通過利用點對點網路和分布式時間戳伺服器,區塊鏈資料庫能夠進行自主管理,為比特幣而發明的區塊鏈使它成為第一個解決重復消費問題的數字貨幣。
(6)比特幣驗證區塊鏈原則擴展閱讀:
1、區塊鏈(Blockchain):是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法 。
它本質上是一個去中介化的資料庫,同時作為比特幣的底層技術。區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。
2、2008年10月,在中本聰的原始論文中,「區塊」和「鏈」這兩個字是被分開使用的,而在被廣泛使用時被合稱為區塊-鏈,到2016年才被變成一個詞:「區塊鏈」。到2014年,「區塊鏈2.0」成為一個關於去中心化區塊鏈資料庫的術語。
3、比特幣(BitCoin):概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。

Ⅶ 比特幣挖礦究竟在計算一個什麼問題手動驗證區塊鏈給出答案

簡單回顧下挖礦的流程。

首先先要對所有的交易做驗證,剔除有問題的,然後通過一套自定義的標准來選擇哪些交易希望打包進區塊,比如說提供的交易費與交易佔用的位元組大小的比值超過某個門檻,這樣的交易才被認為有利可圖。當然,節點也可以特意選擇要加入某條交易,或者故意忽略某些交易。如果是通過礦池挖礦的話,礦池的伺服器會去篩選交易,然後分配給每個參與的礦機一個獨立的任務。

一旦篩選好交易數據,層層約減,通過這些交易就可以計算出一棵Merkle樹,可以確定一個唯一的摘要,這就是Merkl樹的根。

然後我們再依次獲取挖礦需要的其他信息,這些信息組成一個區塊的頭。

區塊頭的位元組分配

區塊頭只有80個位元組,挖礦只需要對區塊頭進行運算即可。交易數據都通過merkle樹固定了下來,不需要再包含進來。

這些信息中大部分已經是固定下來的,或者是可計算的。

我們以區塊277316為例,其信息來自網站 http://blockchain.info

Bitcoin Block #277316blockchain.info

選擇這個區塊的原因是在《Mastering Bitcoin》一書中,中文社區譯本和英文原版在介紹這部分內容時有出入,而且作者Antonopoulos並沒有提到一個關鍵點,就是位元組順序的問題,相信很多人可能會踩這個坑。這里還原的細節可以幫助讀者與書籍做相互參考。

請大家注意下面的每個步驟,注意每一個變化,這是比特幣最核心的演算法。

轉換時間,記住,一定要轉為utc的時間戳,此處遇到過坑,小心。

這一步的發現異常艱辛,耗費了大量的查詢,大坑,大坑,謹記。發明人中本聰可能為了讓機器計算更快,而變為了更接近機器的編碼方式little-endian.

最終得到的結果就是

16進制下前面15個0,然後是1; 而難度目標對應的數字是

16進制下前面15個0,然後是3. 計算結果小於難度目標,符合要求。這個結果與網站上公布的數字一致。

在挖礦時,nonce隨機數是未知的,要從0試到2^32,但是這個數字其實不大,只有4294967296,以現在的礦機動輒14T每秒的算力,全部算完到上限也不需要一秒。剛才提到在這種情況下,需要使用創幣交易中的附帶信息,額外的字元串成為extra nonce。

另外,創世區塊也可以通過上面的方法來驗證,有好奇的朋友可以嘗試下。

提示:

Ⅷ 比特幣區塊鏈是什麼

塊鏈是一個按時間順序排列的比特幣交易公共記錄。塊鏈由所有比特幣用戶共享。它被用來驗證比特幣交易的永久性並防止雙重消費。

一個塊是塊鏈中的一條記錄,包含並確認待處理的交易。平均約每10分鍾就有一個包含交易的新塊通過挖礦的方式添加到塊鏈中。

更多可去比特幣之家網查看。

Ⅸ 區塊鏈一般概念摘要

雖然是個前端開發,但是阻擋不了我八卦各種熱門的心。下面簡單匯總下一些學習到的概念性東西。

1、區塊鏈技術隨比特幣誕生,因此先了解比特幣概念

2、比特幣是什麼

(1)、基於分布式網路的數字貨幣

3、比特系統運行原理

(1)、所有節點都會保存完整賬本

(2)、賬本保持一致性

4、區塊鏈記賬原理

hash函數在區塊鏈技術中有廣泛的運用

(1)、哈希函數hash:任何信息hash後會得到一個簡短的摘要信息

(2)、hash特點:簡化信息、標識信息、隱匿信息、驗證信息

(3)、區塊鏈記賬會把時間節點的賬單信息hash,構成一個區塊

(4)、比特幣系統約10分鍾記賬一次,即每個區塊生成的時間間隔大約10分鍾

(5)、記錄下一個賬單時,會把上一個區塊的hash值和當前賬單的信息一起作為原始信息進行hash

(6)、每個區塊都包含了之前區塊的信息,這些區塊組合成了區塊鏈

5、比特幣的所有權-非對稱加密應用

比特幣系統使用了橢圓曲線簽名演算法,演算法的私鑰由32個位元組隨機數組成,通過私鑰可以計算出公鑰,公鑰經過一序列哈希演算法和編碼演算法得到比特幣地址,地址也可以理解為公鑰的摘要。

(1)、轉賬是把比特幣從一個地址轉移到另一個地址

(2)、地址私鑰是非對稱的關系,私鑰經過一系列的運算(其中包含兩次hash),就可以得到地址,但是從地址無法得到私鑰

(3)、轉賬成功後廣播其他節點,其他節點驗證成功後再轉發到相鄰的節點,廣播的信息包含了原始的信息和簽名信息

(4)、驗證,其他節點驗證簽名信息是不是付款方用私鑰對交易原始信息簽名產生的,如果是才記錄(再驗證有足夠余額)

6、比特幣如何挖礦

(1)、完成記賬的節點可以獲得系統給予的一定數量比特幣獎勵(這個獎勵過程也就是比特幣的發行過程,因此大家把記賬稱為挖礦)

(2)、一段時間內只有一人可以記賬成功,因此需要收集沒有被收集的原始交易信息,檢查有沒有餘額、正確簽名

(3)、為了提高記賬難度,十分鍾左右只有一人可以記賬,hash結果需要若干0開頭,並且進行hash時引入隨機數變數

(4)、隨著更多礦工的加入,游戲難度越來越大,計算難度加大,電力損耗等加大,國內電力成本低,中國算力占整個網路的一半以上

(5)、網路中只有最快解密的區塊,才會添加到賬本中,其他的節點復制,保證賬本的唯一性。如果有節點作弊,導致整個網路不通過,則會被丟棄再也不會記錄到總賬本中。因此所有節點都會遵守比特幣系統的共同協議。

【關於區塊鏈會延伸到那些領域的思考】:

由以上的概念可以總結出,區塊鏈技術存在這安全性、唯一性、去中心化。

原則上是可以避免部分信息泄露,讓確認方既可以確認你的身份,又無需暴露自己的真是用戶信息等。

目前區塊鏈技術集中被運用再比特幣,我覺得後續更大的意義應該在需要數據私密性、安全性的領域。

【關於區塊鏈目前發展的瓶頸和局限性思考】:

由於每個節點都參與了整個賬本記錄活動,難免造成資源的浪費和損耗。以及加大了每個節點的計算難度,後續的發展和普及需要每個節點的硬體提升。

Ⅹ 比特幣機制研究

現今世界的電子支付系統已經十分發達,我們平時的各種消費基本上在支付寶和微信上都可以輕松解決。但是無論是支付寶、微信,其實本質上都依賴於一個中心化的金融系統,即使在大多數情況這個系統運行得很好,但是由於信任模型的存在,還是會存在著仲裁糾紛,有仲裁糾紛就意味著不存在 不可撤銷的交易 ,這樣對於 不可撤銷的服務 來說,一定比例的欺詐是不可避免的。在比特幣出來之前,不存在一個 不引入中心化的可信任方 就能解決在通信通道上支付的方案。
比特幣的強大之處就在於:它是一個基於密碼學原理而不是依賴於中心化機構的電子支付系統,它能夠允許任何有交易意願的雙方能直接交易而不需要一個可信任的第三方。交易在數學計算上的不可撤銷將保護 提供不可撤銷服務 的商家不被欺詐,而用來保護買家的 程序化合約機制 也比較容易實現。

假設網路中有A, B ,C三個人。
A付給B 1比特幣 ,B付給C 2比特幣 ,C付給A 3比特幣
如下圖所示:

為了刺激比特幣系統中的用戶進行記賬,記賬是有獎勵的。獎勵來源主要有兩方面:

比特幣中每一筆交易都會有手續費,手續費會給記賬者

記賬會有打包區塊的獎勵,中本聰在08年設計的方案是: 每10分鍾打一個包,每打一個包獎勵50個比特幣,每4年單次打包的獎勵數減半,即4年後每打一個包獎勵25個比特幣,再過四年後就獎勵12.5個比特幣... 這樣我們其實可以算出比特幣的總量:

要說明打包的記錄以誰為準的問題,我們需要引入一個知名的 拜占庭將軍問題 (Byzantine failures)。拜占庭將軍問題是由萊斯利·蘭伯特提出的點對點通信中的基本問題。含義是在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。

假設有9個互相遠離的將軍包圍了拜占庭帝國,除非有5個及以上的將軍一起攻打,拜占庭帝國才能被打下來。而這9個將軍之間是互不信任的,他們並不知道這其中是否有叛徒,那麼如何通過遠距離協商來讓他們贏取戰斗呢?

口頭協議有3個默認規則:
1.每個信息都能夠被准確接收
2.接收者知道是誰發送給他的
3.誰沒有發送消息大家都知道
4.接受者不知道轉發信息的轉發者是誰
將軍們遵循口頭規則的話,那就是下面的場景:將軍1對其他8個將軍發送了信息,然後將軍2~9將消息進行轉達(廣播),每個將軍都是消息的接受者和轉發者,這樣一輪下來,總共就會有9×8=72次發送。這樣將軍就可以根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要大部分將軍同意攻打拜占庭,自己就去行動。
這個方案有很多缺點:
1.首先是發送量大,9個將軍之間要發送72次,隨著節點數的增加,工作量呈現幾何增長。
2.再者是無法找出誰是叛徒,因為是口頭協議,接受者不知道轉發信息的轉發者是誰,每個將軍手裡的數據僅僅只是一個數量的對比:

這里我們假設有3個叛徒,在一種最極端的情況下即叛徒轉發信息時總是篡改為「不進攻」,那麼我們最壞的結果就如上圖所示。將軍1根據手裡的信息可以推出要進攻的結論,卻無法獲知將軍裡面誰是叛徒。
這樣我們就有了方案二:書面協議。

書面協議即將軍在接受到信息後可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。
有了書面協議,那麼將軍1手裡的信息就是這樣的:

可以很明顯得看出,在最壞的一種情況——叛徒總是轉發「不進攻」的消息之下,將軍7、8、9是團隊里的叛徒。
這個方案解決了口頭協議里歷史信息不可追溯的問題,但是在發送量方面並沒有做到任何改進。

在我們的示例中,比特幣系統里的每個用戶發起了一筆交易,都會通過自己的私鑰進行簽名,用數學公式表示就是:

所以之前的區塊就變成了這樣:

這樣每一筆交易都由交易發起者通過私鑰進行數字簽名,由於私鑰是不公開的,所以交易信息也就無法被偽造了。

如書面協議末尾所說的那樣,書面協議未能解決信息交流過多的問題。當比特幣系統中存在上千萬節點的時候,如果要互相廣播驗證,請求響應的次數那將是一個非常龐大的數字,顯然勢必會造成網路擁堵、節點處理變慢。為了解決這個問題,中本聰乾脆讓整個10分鍾出一個區塊,這個區塊由誰來打包發出呢?這里就採用了工作量證明機制(PoW)。工作量證明,說白了就是解一個數學題,誰先解出來數學題,誰就能有打包區塊的權力。換在拜占庭將軍的例子中就是,誰先做出數學題,誰就成為將軍們裡面的總司令,其他將軍聽從他發號的命令。

首先,礦工會將區塊頭所佔用的128位元組的字元串進行兩次sha256求值,即:

這樣求得一個值Hash,將其與目標值相比對,如果符合條件,則視為工作量證明成功。
工作量證明成功的條件寫在了區塊鏈頭部的 難度數 欄位,它要求了最後進行兩次sha256運算的Hash值必須小於定下的目標值;如果不是的話,那就改變區塊頭的 隨機數 (nonce),通過一次次地重復計算檢驗,直到符合條件為止。

此外, 比特幣有自己的一套難度控制系統,使得比特幣系統要在全網不同的算力條件下,都保持10分鍾生成一個區塊的速率。這也就意味著:難度值必須根據全網算力的變化進行調整。難度調整的策略是由最新2016個區塊的花費時長與期望時長(期望時長為20160分鍾即兩周,是按每10分鍾一個區塊的產生速率計算出的總時長)比較得出的,根據實際時長與期望時長的比值,進行相應調整(或變難或變易)。也就是說,如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。

PoW其實在比特幣中是做了以下的三件事情。

這樣可以防止一台高性能機器同時跑上萬個節點,因為每完成一個工作都要有足夠的算力。

有經濟獎勵就會加速整個系統的去中心化,也鼓勵大家不要去作惡,要積極地按照協議本來的執行方式去執行。(所以說,無幣區塊鏈其實是不可行的,無幣區塊鏈一定導致中心化。)

也就是說,每個節點都不能以自身硬體條件去控制出快速度。現在的比特幣上平均10分鍾出一個塊,性能再好的機器也無法打破這個規則,這就能夠保證 區塊鏈是可以收斂到共同的主鏈上的 ,也就是我們所說的共識。

綜上,共識只是PoW三個作用中的一點,事實上PoW設計的作用有點至少有這么三種。

默克爾樹的概念其實很簡單,如圖所示

這樣,我們區塊的結構就大致完整了,這里分成了區塊頭和區塊體兩部分。

區塊鏈的每個節點,都保存著區塊鏈從創世到現在的每一區塊,即每一筆交易都被保存在節點上,現在已經有幾百個GB了。
每當比特幣系統中有一筆新的交易生成,就會將新交易廣播到所有的節點。每個節點都把新交易收集起來,並生成對應的默克爾根,拼接完區塊頭後,就開始調整區塊頭里的隨機數值,然後就開始算數學題

將算出的result和網路中的目標值進行比對,如果是結果是小於的話,就全網廣播答案。其他礦工收到了這個信息後,就會立馬放下手裡的運算,開始下一個區塊的計算。
舉個例子,當前A節點在挖38936個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第38936個區塊(前一個區塊為38935)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。
整個流程就像下一張圖所展示的這樣:

簡單來說,雙花問題是一筆錢重復花了兩次。具體來講,雙花問題可分為兩種情況:
1.同一筆錢被多次使用;
2.一筆錢只被使用過一次,但是通過黑客攻擊或造假等方式,將這筆錢復制了一份,再次使用。
在我們生活的數字系統中,由於數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,為了解決雙花問題,日常生活中是依賴於第三方的信任機構的。這類機構對數據進行中心化管理,並通過實時修改賬戶余額的方法來防止雙重支付的出現。而作為去中心化的點對點價值傳輸系統,比特幣通過UTXO、時間戳等技術的整合來解決雙花問題。

UTXO的英文全稱是 unspent transaction outputs ,意為 未使用的交易輸出 。UTXO是一種有別於傳統記賬方式的新的記賬模型。
銀行里傳統的記賬方式是基於賬戶的,主要是記錄某個用戶的賬戶余額。而UTXO的交易方式,是基於交易本身的,甚至沒有賬戶的概念。在UTXO的記賬機制里,除了貨幣發行外,所有的資金來源都必須來自於前面某一個或幾個交易。任何一筆的交易總量必須等於交易輸出總量。UTXO的記賬機制使得比特幣網路中的每一筆轉賬,都能夠追溯到它前面一筆交易。
比特幣的挖礦節點獲得新區塊的挖礦獎勵,比如 12.5 個比特幣,這時,它的錢包地址得到的就是一個 UTXO,即這個新區塊的幣基交易(也稱創幣交易)的輸出。幣基交易是一個特殊的交易,它沒有輸入,只有輸出。
當甲要把一筆比特幣轉給乙時,這個過程是把甲的錢包地址中之前的一個 UTXO,用私鑰進行簽名,發送到乙的地址。這個過程是一個新的交易,而乙得到的是一個新的 UTXO。
這就是為什麼有人說在這個世界上根本沒有比特幣,只有 UTXO,你的地址中的比特幣是指沒花掉的交易輸出。
以Alice向Bob進行轉賬的過程舉例的話:

UTXO 與我們熟悉的賬戶概念的差別很大。我們日常接觸最多的是賬戶,比如,我在銀行開設一個賬戶,賬戶里的余額就是我的錢。
但在比特幣網路中沒有賬戶的概念,你可以有多個錢包地址,每個錢包地址中都有著多個 UTXO,你的錢是所有這些地址中的 UTXO 加起來的總和。
中本聰發明比特幣的目標是創建一個點對點的電子現金,UTXO 的設計正可以看成是借鑒了現金的思路:我們可能在這個口袋裡裝點現金,在那個櫃子角落裡放點現金,在這種情況下不存在一個賬戶,你放在各處的現金加起來就是你所有的錢。
採用 UTXO 設計還有一個技術上的理由,這種特別的數據結構可以讓雙重花費更容易驗證。對比一下:

熱點內容
超元宇宙小說 發布:2025-02-21 06:02:27 瀏覽:659
佛系區塊鏈傳銷 發布:2025-02-21 05:53:23 瀏覽:598
TRX站姿推 發布:2025-02-21 05:51:59 瀏覽:262
挖礦顯卡7天後 發布:2025-02-21 05:51:55 瀏覽:757
區塊鏈開源平台搭建 發布:2025-02-21 05:39:31 瀏覽:700
支持omni的冷錢包 發布:2025-02-21 05:32:33 瀏覽:112
華擎trx40支持ecc 發布:2025-02-21 05:26:13 瀏覽:49
btc20和btc50是什麼 發布:2025-02-21 05:25:17 瀏覽:752
10月28日區塊鏈新聞 發布:2025-02-21 05:08:19 瀏覽:652
比特幣客戶端不能關閉轉賬 發布:2025-02-21 05:01:34 瀏覽:802