比特幣:從一個簡單支付場景說起
今天通過「張三支付李四1個比特幣」這個簡單場景談談比特幣的幾個基本概念。
1)首先,張三登錄自己的比特幣錢包,通過私鑰將自己賬戶上的比特幣發送給李四的比特幣地址。
這裡有四個基本概念:私鑰、公鑰、地址、錢包
私鑰由1個隨機數生成,私鑰非常重要,一旦私鑰丟失或被盜取,等於你的比特幣就丟了。這裡有人可能會想:會不會產生2個同樣的私鑰呢?理論上是有可能的,但生成私鑰的隨機數範圍非常大(2^256),所以碰撞的概率為1/2^256,幾乎可以忽略不計。
公鑰由私鑰通過橢圓曲線演算法生成,這裡的橢圓曲線演算法細節大家可以先不用管,只要知道它是一個不可逆的演算法,也就是說通過私鑰可以簡單的求出公鑰,但通過公鑰想要知道私鑰,除了暴力破解,別無他法。
地址由公鑰生成,地址可以理解為收款賬戶,你就是通過地址讓別人把比特幣轉給你。
錢包是私鑰、地址等數據的管理工具,也就是說我們可以使用錢包來管理比特幣的收付款等事宜。
2)比特幣錢包產生一筆交易
這裡的基本概念是交易,交易就像複式記賬法賬簿中的行,每筆交易由輸入(1個或多個)和輸出(1個或多個)組成,輸入是比特幣的付款信息,輸出是收款信息,輸入總額-輸出總額就是交易費。下面是從blockchain.info截取的一個真實的交易信息:
3)比特幣錢包把交易通過P2P網路傳送到區塊鏈
這裡的基本概念是P2P網路和區塊鏈。
張三的錢包只需要把這筆交易傳輸給相連的節點,P2P網路可以在幾秒內,讓這筆交易傳輸到絕大部分節點。
區塊鏈是一種鏈式結構,新的區塊會不斷加入尾端形成一條不斷增長的鏈,每個區塊都包含HEAD和BODY兩部分,其中後面要講的nonce就是在HEAD里,而BODY主要包含交易信息。
4)礦機接收到新的區塊後,利用PoW算出合法的nonce值(俗稱挖坑),並把該區塊加入到尾端
這裡的基本概念是PoW和nonce。
PoW是一種基於工作量證明的共識機制,這種機制保證礦機只能通過暴力破解的方式算出合法的nonce值,因此誰的算力越多,算出nonce值的概率就越大。
那礦機提供了這麼多的算力,能得到什麼好處呢?有兩個好處:一是獎勵,這個獎勵可以理解為新產生的比特幣,從50個開始,每4年減半,現在是12.5個;二是上面提到的交易費。
這裡會產生一個問題,就是可能不止一個礦機算出合法的nonce值,這時候區塊鏈就會產生分叉,比特幣的做法是不管它,隨著後續區塊的不斷加入,一定會有一條鏈戰勝其它鏈成為主鏈。
這樣又會產生一個新的情況,萬一張三給李四的這筆交易最終沒有成為主鏈,豈不是交易就不存在了?沒錯,這也是為什麼雖然比特幣每10分鐘生成一個區塊,但一般要60分鐘後才能最終確認這筆交易的緣故。
TAG:阿痕雜談 |