1. 程式人生 > >比特幣的交易過程

比特幣的交易過程

img 步驟 結束 限制 下一個 本地存儲 16px 提高 一個人

一、區塊鏈

區塊鏈是比特幣實現的一個基礎技術,所以先講講區塊鏈的概念~

簡單的來說,區塊鏈是一種“去中心”的分布式數據庫。

傳統的數據庫像如下圖一樣,數據都存放在一個地方:

技術分享圖片

區塊鏈是每個用戶都存一份數據(大家的數據是保持一致的):

技術分享圖片

二、比特幣的交易過程

比特幣就是通過區塊鏈技術形成的一個應用~

而它需要區塊鏈存儲的是用戶與用戶間的交易過程。

1. 主動發出比特幣的用戶用自己的私鑰加密交易訊息,然後發布給到全網

交易訊息形如:“賬號abc給賬號efg轉100個比特幣”

技術分享圖片

2. “礦工”接收一條條交易訊息,收滿後開始挖礦

2.1 “礦工”們收到很多交易訊息,一般會挑選交易額比較大的訊息組成一個“交易列表”進行挖礦

因為一旦”挖礦“成功,每一條交易都會按交易比特幣的多少來支付給”礦工“一定的”手續費“;

又因為每一個區塊一般大小限制在1M,這也限制了”礦工“自己挑選的”交易列表“的大小

因此,”礦工“只能需要整理出一份能賺取最多手續費的”交易清單“

2.2 挖礦的具體操作:

對”上一個區塊的Hash“+"交易清單"+”隨機數“進行sha256簽名

因為交易記錄要同步到全球需要一些時間,挖礦的速度不可以太快,因此比特幣有一個”難度系數“

技術分享圖片

它要求”礦工“不停去變換”隨機數“知道生成的hash值小於一個預設的值,才算挖礦成功

像下面這個第538499個區塊,hash值需要前面19位都是0才算是符合條件

技術分享圖片

3.挖礦成功後,向所有比特幣用戶廣播這個生成好的區塊,用戶們通過驗證後就會把這個區塊往自己本地存儲的區塊鏈上添加

技術分享圖片

4.結束

正常來說,上面的步驟走完已經順利地完成了一次比特幣的交易。

三、疑問

1.比特幣怎麽做到用戶存儲的區塊鏈的一致性呢?

它的做法就是提高能夠寫入區塊的“門檻”(就是不是所有人都有資格修改這條鏈),理想狀態就是一段時間內只允許一個人寫入

從上面的步驟不難看出,要獲取往區塊鏈寫入信息的資格,必須先“挖礦”成功,而“挖礦”的難度是非常大的,全球大概每10分鐘才有一個人挖礦成功。

2.萬一短時間內,有兩個人甚至多個人挖礦成功,並寫入了新區塊,怎麽辦?

遇到這種情況,所有用戶存儲的區塊鏈會在這個“節點”上創建“分支”,然後看下一個礦工在成功在哪個分支上成功“挖礦”,那一條分支就會成為“主鏈”

比特幣的交易過程