深入解析比特幣區塊機制,了解區塊鏈技術運作方式

大部分材料都詳細分析了挖礦過程,介紹了區塊是如何產生的。然而,區塊的產生并不是區塊鏈的最終目的,保存交易信息才是區塊鏈的最終目的。所以,更重要的一點是要理解,交易信息是如何被打包進區塊鏈的。

輸入和輸出

一個交易在系統里被輸入和輸出表示。輸入是指這筆交易所要進行轉移的幣來自之前的哪些輸出。輸出是指這些幣將會被發送給哪些地址。在區塊鏈上記賬,不是告訴你一個賬號現在有多少錢,而是告訴你這個賬號當前得到了哪些輸出。比如一個地址xsw0923sdfew2389dsfw它的相關記錄里面,有A、B、C三個輸出的目標地址是它,那麼它實際上的余額就是這三個輸出的金額的總和。

但是現在這個地址的用戶要轉賬了,轉賬過程不是直接從總和數字中取出一部分進行轉移,而是分別從A、B、C三個輸出中取出部分或全部,加起來為想要轉移的總和的幣,進行轉移。這個“取出”過程中,A、B、C就變成了輸入,轉賬目標記錄才是這次交易的輸出。

這樣的設計,保證了區塊鏈中的錢從哪里來,到哪里去,一清二楚,絕不含糊。跟會計做賬一樣,花一筆錢,不單單要記錄它花到哪里去了,還要記錄這筆錢是從哪里來的,整個資金鏈是可追溯的,這也保證了交易不可偽造,資金既不會憑空消失,也不會無中生有。

hash

將交易加入到區塊里面需要涉及三個hash,一個是交易本身的hash,另一個是當前這個區塊所有交易的merkle hash root,還有一個就是區塊hash。

上面已經說過輸入與輸出了,一個交易可能包含多個輸入輸出,通過將這些輸入輸出信息進行排列并進行hash運算,就得到一個交易的唯一hash值。

一個區塊里面包含了多個交易,包括挖礦獎勵交易,這些交易都被通過一個merkle運算,得到一個hash root所包含,對于merkle可以閱讀《區塊鏈如何運用merkle tree驗證交易真實性》了解。

區塊都hash運算里面,merkle hash root作為一個參數,因此,所有交易的信息都體現在了一個區塊的hash里面。

挖礦

挖礦過程就是計算上述區塊hash的過程,幾乎所有的機器都可以挖礦成功。關鍵在于誰先挖到礦,因為當一臺機器挖礦成功就向網絡廣播,其他挖礦在對這個hash進行校驗之后,就停止自己的挖礦,開始基于這個區塊挖新的礦。而每一個被挖到區塊中記錄的第一筆交易是給挖到這個區塊的礦工自己的獎勵金,所以搶到第一個挖礦成功名額對于礦工來說至關重要。

前面說過,計算區塊hash過程里面,會以區塊包含的交易的merkle hash root作為計算的一個參數,因此,挖礦時,礦工會事先從自己本地的交易信息里面提煉出merkle hash root,也就是說,在挖礦之前,對于當前這個礦工來說,新區塊會包含哪些交易就已經確定好了的。關于這個過程,可以閱讀《Merkle Tree》。

打包交易記錄

挖礦成功之后,礦工需要將完整的區塊向網絡廣播,這個時候,這個區塊里面就打包了所有上述對應的交易。

現在有三個問題:

在打包開始之前,這些交易記錄是以什麼方式存在于網絡?

打包是否會把所有交易記錄打包進區塊?怎麼可能保證所有交易都不被遺漏?

如何防止礦工偽造交易?將偽造的交易打包進區塊?

手續費

這里需要知道另外一個概念,即“手續費”。手續費是發起交易的節點決定給的,和小費性質一樣。比如A打算轉給B0.5個BTC,A手上有一個完整的(來自一個輸入)BTC,這時A將這1BTC作為輸入,輸出包含兩條,一條是給B0.5BTC,另一條是給自己0.49BTC(這個過程叫“找零”)。那麼這個交易中就有0.01BTC是消失了,消失了的BTC將作為小費獎賞給礦工。

現在我們把自己的角色轉換為礦工,當我們從自己的內存中收集所有交易,準備打包區塊時,發現這里有一條交易有0.01BTC的小費,于是我把它作為本次打包優先考慮的交易記錄。由于每個區塊的大小限制在1M左右,所有我只選了那些給小費的交易打包進這次區塊。而那些未給交易費的交易,在優先考慮完這些有交易費的交易之后,我才會考慮把它們加進來。

這也就是為什麼有些交易被確認很快,有些交易被確認很慢。

確認

“確認”這個概念也要解釋一下,一個區塊產生之后,它不是立即可信的,網絡上的節點總是相信最長的區塊鏈,當一條交易記錄被打包進一個區塊之后,就有了一個確認,而這個區塊所在的鏈后面被再加入一個區塊,就是第二個確認,如此下去,一個交易有了6個確認,我們就認為這個交易已經確定了,會被永遠記錄在區塊鏈中。為什麼是6個確認呢?因為每一個確認就是一個挖礦過程,都需要提供非常嚴格的計算,因此,這6個區塊被同一個礦工創建的可能性微乎其微(可以說是不可能),因此礦工偽造交易也基本不可能。

由于比特幣的區塊平均產生時間是10分鐘,所以一個交易要1小時左右才能保證成功(最快),不過也不是所有的系統都這樣認為,有些網站在接受比特幣支付時,認為4個確認就可以給客戶發貨了。如果不幸這個交易在創建的時候,沒有被打包進最近的那個區塊,那就要延遲10分鐘,如此下去,如果后面過了好幾個區塊,交易都沒有被打包進區塊鏈,那就悲劇了。

廣播交易

不過也不用著急,比特幣系統中只留給了這種優先級高的交易50k的存儲空間,即使你沒有給交易費,也可能在24小時內被打包進區塊。不過也不一定,有些交易可能永遠都進不了區塊,因為礦工是從自己都內存中獲取自己暫存的交易信息,一旦這些內存被釋放,那麼這些交易信息就會被清空。為了解決這個問題,比特幣錢包需要不斷對自己發起的交易進行檢查,如果發現沒有被打包進最新的區塊,就要對網絡廣播,這樣,這個交易就會在網絡里不斷被提起,礦工又可以把這筆交易寫進自己的內存里暫時放著,等到下次打包區塊時,選擇是否把它打包進去。

小結

本文講解了對于一個交易而言,“創建(輸入輸出)-廣播-挖礦-打包-確認”的整個過程,讀完你應該可以理解交易是怎麼被打包進區塊的了。

發文者:鏈站長,轉載請註明出處:https://www.jmb-bio.com/4280.html

讚! (0)
Donate 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Previous 2023 年 2 月 28 日 下午 5:43
Next 2023 年 2 月 28 日 下午 5:50

相關文章

  • 掌握比特幣基礎知識,讓你更了解加密貨幣世界

    作為新用戶,你可以開始使用比特幣,而不需要理解其中的技術細節。一旦你在電腦或手機上安裝一個比特幣錢包,它會生成你的第一個比特幣地址,并且在你需要的任何時候都可以生成更多的地址。你可以將你的地址告訴你的朋友們,他們便能夠通過這個地址向你支付比特幣,反之亦然。事實上,這跟電子郵件的運作方式是非常相似的,除了一個比特幣地址應該只被使用一次。 余額 比特幣區塊鏈是整…

    比特幣科普 2023 年 2 月 28 日
  • 比特幣細節答疑,全面解析你對比特幣的疑問

    比特幣的每個節點是否知道全網發生的每一筆交易? 是的,全網知道。有人需要支付,就會把這條信息廣播給與自己相連的節點,然后再擴散到全網的每一臺全節點,每一個都在對外廣播,傳遞速度就以指數方式在擴散,擴散到全網的時間只需要幾秒鐘。這些交易在每次擴散前都會被驗證,確保沒有一幣多花的情況、公鑰正確對應于地址,且公鑰能解密私鑰簽名,這些條件都要滿足。驗證通過的交易會存…

    比特幣科普 2023 年 2 月 28 日
  • 比特幣的私密金鑰、地址、錢包,這些詞語你都懂嗎?

    私鑰,地址,錢包分別是什麼? 比特幣的所有權是通過數字密鑰、比特幣地址和數字簽名來確立的。數字密鑰實際上并不是存儲在網絡中,而是由用戶生成并存儲在一個文件或者一個簡單的數據庫中,稱為錢包。存儲在用戶錢包中的數字密鑰完全獨立于比特幣協議,可由用戶的錢包軟件生成并管理,而無需區塊鏈或者網絡連接。密鑰實現了比特幣的許多有趣特性,包括去中心化的信任和機制、所有權認證…

    比特幣科普 2023 年 2 月 28 日
  • 掌握比特幣的優勢,深入了解比特幣的應用

    加密貨幣也是當今很火的一個幣種,而在加密貨幣當中,比特幣毫無疑問是龍頭老大,俗稱“幣王”,那麼比特幣有哪些優勢?比特幣的作用又有哪些呢? 優勢分析 1. 穩定性 這個是說該媒介不容易被破壞,例如黃金就很難被摧毀。而法幣美元就會隨著時間的流逝而被磨損、撕裂。 2. 可分性 這個代表該媒介可以被分成更小的單位。黃金可以被融化并制成更小的單位,美元可以分解為美分。…

    比特幣科普 2023 年 2 月 28 日
  • 探究比特幣價格背後的影響因素,理解加密貨幣市場波動

    比特幣的價格是由市場的供需決定,由需求決定其價值。 首先,大家必須看好它未來的發展,這樣才有人愿意為它買單,買單的人越多其價格就越高。 由于比特幣的特性,最終只能產出2100萬枚幣,在市場上能造成一定稀缺性。 但是,隨著時間的推移,比特幣如果只是停留在代碼的研發階段,那也沒有什麼意義,得有現實的實際應用場景來體現其使用價值,不然就只有收藏價值,流通于比特幣愛…

    比特幣科普 2023 年 2 月 28 日
每日鏈頭條給你最新幣圈相關資訊!