加密數字貨幣(比特幣)的技術原理分析

島主~it_rabbit發表於2021-07-06

比特幣的技術原理分析

網際網路的精髓就是共享,可以共享技術、共享經驗、共享情感、共享快樂~

很多年前就有這個想法了,從事IT行業時間也不短了,應該把自己工作和業餘所學習的東西記錄並分享出來,和有緣人一起學習和交流。

如果您是那個有緣人,請上島一敘!爪哇島隨時歡迎您!


最近這段時間,虛擬貨幣頻頻衝上熱搜,比特幣、以太坊、狗狗幣各種技術名詞層出不窮,搞得大家眼花繚亂。正所謂 “內行看門道,外行看熱鬧”,所以今天我們們不再吃瓜看熱鬧,也來數字貨幣裡面的門道(技術支撐)

一、比特幣的由來

  1. 比特幣(bitcoin)誕生於 2008 年的一篇論文,一個署名為中本聰的人,提出了革命性的構想:** 讓我們創造一種不受政府或其他任何人控制的貨幣!**
    一串數字,背後沒有任何資產支援,也沒有任何人負責,你把它當作錢付給對方,怎麼會有人願意接受?但是,狂想居然變成了現實。
    2017 年,比特幣迎來了爆發式的增長,從年初的1000美元,最高漲到了2萬美元,全世界都為之震動。

  2. 下面我嘗試幫助大家理解比特幣,拋開技術細節,還是很容易解釋的。

二、非對稱加密

  1. 首先,理解比特幣,必須理解非對稱加密。你可能聽說過這個詞,所謂非對稱加密,其實很簡單,就是加密和解密需要兩把鑰匙:一把公鑰和一把私鑰。
    非對稱加密

  2. 公鑰是公開的,任何人都可以獲取。私鑰是保密的,只有擁有者才能使用。

  3. 他人使用你的公鑰加密資訊,然後傳送給你,你用私鑰解密,取出資訊。反過來,你也可以用私鑰加密資訊,別人用你的公鑰解開,從而證明這個資訊確實是你發出的,且未被篡改,這叫做** 數字簽名 **。

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

首先,你能解開加密包,取出裡面的錢,因為私鑰在你手裡。 其次,別人偷不走這筆錢,因為他們沒有你的私鑰。因此,支付可以成功。------這就是比特幣(以及其他數字貨幣)的原理:** 非對稱加密保證了支付的可靠性 **。
  1. 由於支付的錢必須通過私鑰取出,所以你是誰並不重要,重要的是誰擁有私鑰。只有擁有了私鑰,才能取出支付給你的錢。(事實上,真實的交易流程稍有不同,私鑰保證的不是取出支付給你的錢,而是保證只有你能把這些屬於你的錢支付出去)

三、比特幣錢包

  1. 對於比特幣來說,錢不是支付給個人的,而是支付給某一把私鑰。這就是交易匿名性的根本原因,因為沒有人知道,那些私鑰背後的主人是誰。所以,比特幣交易的第一件事,就是你** 必須擁有自己的公鑰和私鑰 **。
  2. 你去網上那些比特幣交易所開戶,它們會讓你首先生成一個比特幣錢包(wallet):這個錢包不是用來存放比特幣,而是存放你的公鑰和私鑰 。軟體會幫你生成這兩把鑰匙,然後放在錢包裡面。
    根據協議公鑰的長度是 512 位,這個長度不太方便傳播,因此協議又規定,要為公鑰生成一個 160 位的指紋。所謂指紋,就是一個比較短的、易於傳播的雜湊值。160 位是二進位制,寫成十六進位制,大約是 26 到 35 個字元,比如 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2。這個字串就叫做錢包的地址,它是唯一的,即每個錢包的地址肯定都是不一樣的。
  3. 你向別人收錢時,只要告訴對方你的錢包地址即可,對方向這個地址付款。由於你是這個地址的擁有者,所以你會收到這筆錢。
    由於你是否擁有某個錢包地址,是由私鑰證明的,所以一定要保護好私鑰,這是極其重要的,如果你的私鑰被偷了,你的比特幣也就等於沒了,因為他人可以冒用你的身份了,把錢包裡面的錢都轉走
    同樣的,你向他人支付比特幣,千萬不能寫錯他人的錢包地址,否則你的比特幣就支付到了另一個不同的人了。

四、交易 & 區塊鏈

  1. 比特幣如何完成一筆交易: ** 一筆交易就是一個地址的比特幣,轉移到另一個地址 **。
  2. 怎麼防止其他人,冒用你的名義申報交易: 比特幣協議規定,申報交易的時候,除了交易金額,轉出比特幣的一方還必須提供以下資料:
  • 上一筆交易的 Hash(你從哪裡得到這些比特幣)
  • 本次交易雙方的地址
  • 支付方的公鑰
  • 支付方的私鑰生成的數字簽名
  1. 而驗證這筆交易是否屬實,需要三步:
  • 第一步,找到上一筆交易,確認支付方的比特幣來源。
  • 第二步,算出支付方公鑰的指紋,確認與支付方的地址一致,從而保證公鑰屬實。
  • 第三步,使用公鑰去解開數字簽名,保證私鑰屬實。
  1. 確認交易的真實性後,交易還不算完成;交易資料必須寫入** 資料庫 **,才算成立,對方才能真正收到錢。
  2. 比特幣使用的是一種特殊的資料庫,叫做區塊鏈(blockchain
  3. 比特幣是如何寫入資料庫的呢?
  • 首先,所有的交易資料都會傳送到礦工那裡。** 礦工負責把這些交易寫入區塊鏈 **

  • 根據比特幣協議,一個區塊的大小最大是 1MB,而一筆交易大概是 500 位元組左右,因此** 一個區塊最多可以包含 2000多 筆交易 礦工負責把這 2000 多筆交易打包在一起,組成一個區塊,然後計算這個區塊的雜湊 ** ** (計算雜湊的過程叫做採礦,這需要大量的計算) **
    區塊鏈儲存資料

  • 礦工之間也在競爭,誰先算出雜湊,誰就能第一個新增新區塊進入區塊鏈,從而享受這個區塊的全部收益,而其他礦工將一無所獲。一筆交易一旦寫入了區塊鏈,就無法反悔了。

  1. 區塊鏈記載了你參與的每一筆交易,你得到過多少比特幣,你又支付了多少比特幣,因此可以算出來你擁有多少資產。
  2. 為什麼有人肯做礦工呢?順便談談礦工的收益:
  • 比特幣協議規定,挖到新區塊的礦工將獲得獎勵,一開始是50個比特幣,然後每4年減半,這也是比特幣的供給增加機制,流通中新增的比特幣都是這樣誕生的。
  • 你可能看出來了,每 4 年獎勵減半,由於比特幣可以分割到小數點後八位,那麼到了2140 年,礦工將得不到任何獎勵,比特幣的數量也將停止增加。這時,礦工的收益就完全依靠交易手續費了。
  • 所謂交易手續費,就是礦工從每筆交易中拿到的抽成,具體的金額由支付方自願決定。你完全可以一毛不拔,一分錢也不給礦工,但是那樣的話,你的交易就會沒人處理,** 遲遲無法寫入區塊鏈,得到確認 **。礦工們總是優先處理手續費最高的交易。

五、區塊的擴容 & 點對點網路

  1. 比特幣協議規定,平均10分鐘誕生一個區塊。區塊的大小隻有 1MB,最多隻能包含2000多筆交易。也就是說,比特幣網路每10分鐘最多隻能處理2000多筆交易,換算一下就是處理速度為3~5筆/秒。全世界的比特幣交易這麼多,可是區塊鏈每秒最多隻能處理5筆,這已經成為制約比特幣發展的一個瓶頸。
  2. 如何提升處理速度呢?2017年8月區塊鏈發生了一次分叉,誕生了一個新協議,稱為 Bitcoin Cash(簡稱 BCH)。這種新貨幣其他方面都與比特幣一致,就是每個區塊的大小從 1MB 增加到了 8MB,因此處理速度提升了8倍,手續費也低得多。
    BCH
  3. 比特幣網是一個全世界的開放網路,只要你有伺服器,就能加入這個網路,成為一個節點。每個節點都包含了整個區塊鏈(目前大概 100多 GB),並且節點之間時刻不停地在同步資訊。
  • 當你發生了一筆支付,你所在的節點就會把這筆交易告訴另一個節點,直至傳遍整個網路。
  • 礦工從網上收集各種新發生的交易,將它們打包寫入區塊鏈。一旦寫入成功, 礦工所在節點的區塊鏈,就成為最新版本,其他節點都會來複制新增的區塊,保證全網的區塊鏈都是一致的。
  • 最後,你所在的節點也拿到了最新的區塊鏈,從而得知你早先的那筆交易,已經寫在裡面了,至此交易確認成功。

七、總結

比特幣的基本知識,就介紹完了,希望你已經明白了比特幣是怎麼回事。

相關文章