位元幣入門介紹

2021-08-16 02:55:15 字數 3996 閱讀 7957

** : 阮一峰的網路日誌 - 位元幣入門教程

首先,理解位元幣,必須理解非對稱加密。

你可能聽說過這個詞,所謂非對稱加密,其實很簡單,就是加密和解密需要兩把鑰匙:一把公鑰和一把私鑰。

公鑰是公開的,任何人都可以獲取。私鑰是保密的,只有擁有者才能使用。他人使用你的公鑰加密資訊,然後傳送給你,你用私鑰解密,取出資訊。反過來,你也可以用私鑰加密資訊,別人用你的公鑰解開,從而證明這個資訊確實是你發出的,且未被篡改,這叫做數字簽名(更詳細的介紹請看《什麼是數字簽名》)。

現在請設想,如果公鑰加密的不是普通的資訊,而是加密了一筆錢,傳送給你,這會怎樣?

首先,你能解開加密包,取出裡面的錢,因為私鑰在你手裡。其次,別人偷不走這筆錢,因為他們沒有你的私鑰。因此,支付可以成功。

這就是位元幣(以及其他數字貨幣)的原理:非對稱加密保證了支付的可靠性。

由於支付的錢必須通過私鑰取出,所以你是誰並不重要,重要的是誰擁有私鑰。只有擁有了私鑰,才能取出支付給你的錢。(事實上,真實的交易流程稍有不同,私鑰保證的不是取出支付給你的錢,而是保證只有你能把這些屬於你的錢支付出去,詳見後文。)

對於位元幣來說,錢不是支付給個人的,而是支付給某一把私鑰。這就是交易匿名性的根本原因,因為沒有人知道,那些私鑰背後的主人是誰。

所以,位元幣交易的第一件事,就是你必須擁有自己的公鑰和私鑰。

你去網上那些位元幣交易所開戶,它們會讓你首先生成乙個位元幣錢包(wallet)。這個錢包不是用來存放位元幣,而是存放你的公鑰和私鑰。軟體會幫你生成這兩把鑰匙,然後放在錢包裡面。

根據協議,公鑰的長度是512位。這個長度不太方便傳播,因此協議又規定,要為公鑰生成乙個160位的指紋。所謂指紋,就是乙個比較短的、易於傳播的雜湊值。160位是二進位制,寫成十六進製制,大約是26到35個字元,比如 1bvbmseystwetqtfn5au4m4gfg7xjanvn2。這個字串就叫做錢包的位址,它是唯一的,即每個錢包的位址肯定都是不一樣的。

你向別人收錢時,只要告訴對方你的錢包位址即可,對方向這個位址付款。由於你是這個位址的擁有者,所以你會收到這筆錢。

由於你是否擁有某個錢包位址,是由私鑰證明的(具體的證明方法稍後介紹),所以一定要保護好私鑰。這是極其重要的,如果你的私鑰被偷了,你的位元幣也就等於沒了,因為他人可以冒用你的身份了,把錢包裡面的錢都轉走。

同樣的,你向他人支付位元幣,千萬不能寫錯他人的錢包位址,否則你的位元幣就支付到了另乙個不同的人了。

下面,我把整個流程串起來,看看位元幣如何完成一筆交易。

一筆交易就是乙個位址的位元幣,轉移到另乙個位址。由於位元幣的交易記錄全部都是公開的,哪個位址擁有多少位元幣,都是可以查到的。因此,支付方是否擁有足夠的位元幣,完成這筆交易,這是可以輕易驗證的。

問題出在怎麼防止其他人,冒用你的名義申報交易。舉例來說,有人申報了一筆交易:位址 a 向位址 b 支付10個位元幣。我怎麼知道這個申報是真的,申報人就是位址 a 的主人?

位元幣協議規定,申報交易的時候,除了交易金額,轉出位元幣的一方還必須提供以下資料。

上一筆交易的 hash(你從**得到這些位元幣)

本次交易雙方的位址

支付方的公鑰

支付方的私鑰生成的數字簽名

驗證這筆交易是否屬實,需要三步。

第二步,算出支付方公鑰的指紋,確認與支付方的位址一致,從而保證公鑰屬實。

第三步,使用公鑰去解開數字簽名,保證私鑰屬實。

經過上面三步,就可以認定這筆交易是真實的。

確認交易的真實性以後,交易還不算完成。交易資料必須寫入資料庫,才算成立,對方才能真正收到錢。

位元幣使用的是一種特殊的資料庫,叫做區塊鏈(blockchain),詳細的介紹請看《區塊鏈入門教程》。本文只討論交易如何寫入區塊鏈。

首先,所有的交易資料都會傳送到礦工那裡。礦工負責把這些交易寫入區塊鏈。

根據位元幣協議,乙個區塊的大小最大是 1mb,而一筆交易大概是500位元組左右,因此乙個區塊最多可以包含2000多筆交易。礦工負責把這2000多筆交易打包在一起,組成乙個區塊,然後計算這個區塊的 hash。

計算 hash 的過程叫做採礦,這需要大量的計算。礦工之間也在競爭,誰先算出 hash,誰就能第乙個新增新區塊進入區塊鏈,從而享受這個區塊的全部收益,而其他礦工將一無所獲。

一筆交易一旦寫入了區塊鏈,就無法反悔了。這裡需要建立乙個觀念:位元幣不存放在錢包或其他別的地方,而是只存在於區塊鏈上面。區塊鏈記載了你參與的每一筆交易,你得到過多少位元幣,你又支付了多少位元幣,因此可以算出來你擁有多少資產。

交易的確認離不開礦工。為什麼有人願意做礦工呢?

位元幣協議規定,挖到新區塊的礦工將獲得獎勵,一開始(2023年)是50個位元幣,然後每4年減半,目前(2023年)是12.5個位元幣。這也是位元幣的供給增加機制,流通中新增的位元幣都是這樣誕生的。

你可能看出來了,每4年獎勵減半,那麼到了2023年,礦工將得不到任何獎勵,位元幣的數量也將停止增加。這時,礦工的收益就完全依靠交易手續費了。

所謂交易手續費,就是礦工可以從每筆交易抽成,具體的金額由支付方自願決定。你完全可以一毛不拔,一分錢也不給礦工,但是那樣的話,你的交易就會沒人處理,遲遲無法寫入區塊鏈,得到確認。礦工們總是優先處理手續費最高的交易。

目前由於交易數量猛增,手續費已經水漲船高,乙個區塊2000多筆交易的手續費總額可以達到3~10個位元幣。如果你的手續費給低了,很可能過了乙個星期,交易還沒確認。

乙個區塊的獎勵金12.5個位元幣,再加上手續費,收益是相當可觀的。按照目前的**,可以達到100萬~200萬人民幣。想想看,運氣好的話,幾分鐘就能挖到乙個區塊,拿到這樣一大筆錢,怪不得人們對挖礦趨之若鶩。

《區塊鏈入門教程》說過,位元幣協議規定,平均10分鐘誕生乙個區塊。區塊的大小只有 1mb,最多只能包含2000多筆交易。也就是說,位元幣網路每10分鐘,最多只能處理2000多筆交易,換算一下,就是處理速度為3~5筆/秒。

全世界的位元幣交易這麼多,可是區塊鏈每秒最多只能處理5筆,這已經成為制約位元幣發展的乙個瓶頸。

很早就有人呼籲,改革位元幣協議,提公升處理速度。這件事在2023年8月有了一點眉目,當時區塊鏈發生了一次分叉,誕生了乙個新協議,稱為 bitcoin cash(簡稱 bch)。這種新貨幣其他方面都與位元幣一致,就是每個區塊的大小從 1mb 增加到了 8mb,因此處理速度提公升了8倍,手續費也低得多。該協議是對原有區塊鏈的分叉,因此當時持有位元幣的人,等於一人獲贈了乙份同樣數量的 bch。

bch 等於創造了一種新貨幣,還有人提議,原始位元幣的區塊大小提公升到 2mb,這稱為 segwit2x 。這個建議原定於2023年11月實施,但是最後一刻由於缺乏共識,就被取消了,目前還在討論中。

位元幣是乙個全世界的開放網路,只要你有伺服器,就能加入這個網路,成為乙個節點。每個節點都包含了整個區塊鏈(目前大概 100多 gb),並且節點之間時刻不停地在同步資訊。

當你發生了一筆支付,你所在的節點就會把這筆交易告訴另乙個節點,直至傳遍整個網路。礦工從網上收集各種新發生的交易,將它們打包寫入區塊鏈。一旦寫入成功, 礦工所在節點的區塊鏈,就成為最新版本,其他節點都會來複製新增的區塊,保證全網的區塊鏈都是一致的。

最後,你所在的節點也拿到了最新的區塊鏈,從而得知你早先的那筆交易,已經寫在裡面了,至此交易確認成功。

寫到這裡,我就介紹完了位元幣的基本知識,希望你已經明白了位元幣是怎麼回事。但是還有乙個根本的問題,我沒有回答:位元幣的本質到底是什麼?

說到底,位元幣只是區塊鏈的一條記錄,是憑空生成的,為什麼可以當錢用?舉例來說,礦工獲得12.5個位元幣的獎勵,其實就是區塊鏈有乙個記錄:」***位址獲得12.5個位元幣」。正是這行記錄,導致該礦工獲得了大筆金錢。如果區塊鏈突然增加了一條記錄,記載你的位址獲得了1000個位元幣,你就真的會有1000個位元幣。這到底是為什麼?

位元幣入門

1.全節點客戶端,即儲存位元幣交易的全部歷史的客戶端。完整節點處理協議的所有方面,並可以獨立地驗證整個區塊鏈和任何交易。需要消耗大量的計算機資源。2.輕量級客戶端,連線到位元幣完整節點,用於訪問位元幣交易資訊,但是在本地儲存使用者錢包,並獨立地建立,驗證和傳輸交易。3.第三方 api 客戶端,通過應...

位元幣 位元幣的實現

位元幣系統是乙個基於交易的賬本,這意味著儲存在賬本中的是一筆筆交易。那麼在使用者進行轉賬交易時,首先就需要確保使用者所持有的數量要大於或等於將要交易的。這要做的目的是為了避免雙花問題。這種基於交易的賬本好處在於隱私保護性比較好,缺點在於每次交易都需要說明幣的 在位元幣的全節點中,會在記憶體中維護乙個...

位元幣智慧型合約入門(1)

當談及智慧型合約時,大多數人都會下意識地把位元幣排除在討論範圍之外,因為當下流行的觀點是位元幣不具有智慧型合約的能力。但是今天想跟大家介紹的內容則正好與此相反 即位元幣從誕生之日即擁有支援智慧型合約的能力,下面讓我們一起來探個究竟。位元幣底層採用了乙個很特別的交易模型設計,即 utxo unspen...