前幾天我的學生才在問我:「老師,你知道”挖礦賺錢”嗎?」 顯然在網路遊戲的玩家圈子裡,這個話題正熱門。 那麼,就來聊聊比特幣吧……
1) 分散式網路 — 去中心化
這麼說吧,如果你存款被銀行記在一本簿子上,那你,或者小偷,只要想辦法找到那本簿子、改一下上面的數字,就可以更動你的存款金額了,對吧
— 當然,你要改的不是你手上這本存款簿,而是銀行那邊的紀錄,而這並不容易……但還是有可能的。
但如果,銀行根本沒有記下你的存款金額,而是讓每個人留下他這一輩子所有的交易記錄;
例如「爸爸給你零用錢」是一筆記錄,你和你爸都要各自記起來、「你拿錢買早餐」是一筆記錄,你和早餐店老闆都要記下、「你到文具店買筆」、「你把錢存進銀行」這些也都記起來。
當你想知道自己有多少錢時,銀行並不是直接查看檔案(簿子)裡的某個數字,而是讓電腦快速查核所有的交易記錄,確認過有多少人給你錢、你又花了多少,加加減減之後,就知道你現在還有多少。
如此一來,你想要宣稱自己的存款不是1000,而是1001,那銀行就要知道「多的那1塊,是誰給你的? 沒有記錄啊……」 電腦查到的、所有的交易記錄後合計,你就是剩1000。
.
又,也許你想說:「假如我是駭客,我就去改掉我的交易記錄,在我拿到老爸給的零用錢時,多拿到1塊」; 不要忘了,電腦會同時去查和你交易的人、確認他是不是有給你。
那你可能會想「既然我是駭客,就連我連我爸那邊的交易記錄一起改就好啦」,嗯…… 很聰明; 但比特幣所使用的「區塊鏈」技術比你更聰明;它事實上不是像上面講的那樣,把交易記在單一的檔案裡 (本子上)。
想像一下,如果規定你爸給你零用錢的時候,他必須在FB上說「我給我兒子1000塊零用錢」,看到這則訊息的人,電腦裡都會留下記錄; 然後你花錢買早餐時,老闆也必須大喊「火腿蛋土司,小明給我30塊!」所有聽到的人也都留下記錄……
.
諸如此類的,只要拿錢作交易,就要在網路上對所有人宣佈;而且大家也不是聽聽就算了,所有人的電腦都會幫忙記下他們聽到的訊息
— 事後,銀行就會去查他們的記錄,來確認當時你爸究竟給你多少。
那麼,當你想要竄改、讓自己多1塊錢時,你要怎麼改? 駭進所有人的電腦嗎?
所謂「分散式網絡」,就是指你的存款不是記在一本簿子上、或一筆電腦檔案裡,而是網絡中每一個會記載事件的「節點 (伺服器)」都會可能會記下你的交易記錄; 因此而擁有「去中心化」的優點,就是你無法找到單一的簿子去竄改。
.
.
2) 區塊鏈 — 雜湊函數
上面提到的每一筆交易事件,被記錄下來後就稱為一個「區塊」;節點記住的交易記錄,就是這些交易一個接著一個串起來的,所以被稱為「區塊鏈」。
那我如果直接發送「不存在的交易」呢?
也就是偽造一段「我爸給我2000塊零用錢」的事件、也把它在FB上講出來、讓大家記住呢?
當節點「聽到」你發送的這則交易訊息後,他會向你爸的「電子錢包」要求確認,也就是所謂的「數位簽章」; 如果你打算直接竄改「已經通過認證」的交易,那就要挑戰區塊練的技術核心,一個名叫「雜湊函數」的數學式。
「雜湊函數」是一種「把原始文件經過函數轉換成亂碼」的方法,「所有人都知道它是怎麼算的」,但它的轉換,在缺少密碼時不是一對一的。
舉例來說 102÷31 = 3餘9, 319÷31 = 10也餘9 , 當你攔截到、知道我的資料在轉換後是變成「9」時,
你明明知道我是「除以31,取餘數」; 但你沒有我手上的密碼「3」你怎麼知道我是102,還是40,還是319,還是908呢?
— 你如果有我的密碼「3」,那一下子就可以算出來。
當然,雜湊函數比這個複雜許多,以至於「換成亂碼之後,缺少密碼 (私鑰) 的話,沒有人能直接轉回去 」;以目前的電腦科技來說,暴力破解 (快速地一直猜)也需要幾百年;這就確保了資料的安全性。
**延伸一個問題: 當你拿到一個加密檔案時,「正確密碼是什麼」這個檔案本身不是應該要記住嗎? 要不然我輸入後,他怎麼知道我輸的對不對?
那既然如此,我能不能從未解密的檔案本身,那些亂碼裡,找到線索、發現 密碼被它記在何處呢?
嘿嘿,這個問題當然已經被解決了,如果想知道「公鑰加密」、RSA加密 的計算技巧,可以去找「密碼學」、「資訊安全」的相關教科書、網路文章來看,在這裡就先不介紹啦。
.
.
3) 那挖礦又是什麼?
上面提到,你的錢無法竄改,但每一塊錢總有一開始吧,現實中,台灣的每一塊錢都是「台灣銀行發行」的; 之所以要「印鈔」,主要並不是政府想要「平白無故變出好多錢來花」。
錢被視為是「交易籌碼」、「流通的貨幣」,如果錢太少,那大家要買東西卻沒有錢可以用來交易,就會乾脆「把商品價格都調低一點」。
例如,因為「錢太少,(紙鈔印太少)」,本來國中學費5000、便當一個50塊的,後來都改成「學費500、便當5塊就好」; 那學費還是相當於買100個便當,交易的雙方其實都沒有吃虧,但就是「錢變貴」或者說便當「變得不值錢」了。
這樣一來,會造成民眾「拿到錢的,不想花了,因為錢還會再變更貴; 50塊本來只能買一個便當、後來可以買十個、未來可以買更多便當」 — 這就叫作「通貨緊縮」。
比特幣 (到現在才正式提到它) 是一種利用上述「區塊鏈」技術流通的貨幣;因為它沒有央行,如果比特幣的需求變大、或它真的因為技術問題而變少,那就會出現通貨緊縮。
.
「錢太少」不一定是因為「錢變少了」,也有可能是因為「加入 用錢來交易」的商品、服務變多了,所以對於交易籌碼的需求增加了。
或是有人拿了錢卻不花、或是有人遺失了電子錢包密碼 — 那不好意思,這些錢就再也拿不回來了,因為沒有人知道它們的資料是記在網路上何處。
總而言之,比特幣會「越來越不夠用」;所以比特幣的設計者,提供了一個「大家來挖礦」的遊戲機制,可以緩慢地生產出新的比特幣,以免它「不夠用」。
上面提到,雜湊函數可以難到「現在的科技很難破解它」,但其實它的難度可以調整 (類似把密碼縮短,會比較好猜中這樣)。比特幣官方會定時釋出一道道「難度適中的雜湊函數問題」,請所有的電腦一起來破解它;
解開來的話,系統就會同意給你 25元 (比特幣) — 你可以發佈在網路上,讓節點知道、記住這件事。。
(現實中,「大家來解 雜湊函數」 的機制,早在比特幣誕生之前就有,並不是專門為了「解決比特幣通縮」而設計的,但…它有這樣的功能沒錯啦。)
.
但要單靠一台電腦去破解這種問題,仍然是很難的,所以網路上所有的電腦會合作、互相通知
「我現在,正在一個一個猜10000~19999」、「那我負責猜20000~29999這一段」
像這樣不斷聯繫、共同破解,你猜的這一段都沒中,就再去找還沒被人猜到的一段來猜。 誰運氣好,剛好猜中答案,他就得到 25塊錢; 然後大家再接著去猜別題的答案。
透過調整題目的難度,比特幣控制住「大約 每10分鐘 會被解開一題」;也就是世界上每十分鐘會多 25塊比特幣。
因為它就像一群礦工進入礦山,大家都不知道金礦在那裡,於是各自挑一個方向開始往前挖(一直猜答案),看誰會先挖到金礦就恭喜他這樣,所以被稱作「挖礦」。
所以簡單來說,所謂的「挖礦」就是用電腦去參與破解比特幣官方的謎題,以獲取比特幣。
.
.
4) 為什麼網遊社群,會突然流行「挖礦賺錢」呢?
上面提到,單靠你的電腦,要破解題目太慢,所以要和網路上其他人一起分工;但如果你的電腦性能好一點、運算效能是別人的N倍,
或是你買N台電腦一起跑,它們就可以同時分到N個「破解區段」的工作來做、而「剛好分到中獎的那的那段」的機會也就會提高N倍。
那還等什麼? 升級電腦配備啊…… 呵呵,傻傻的,買電腦不用錢嗎? 讓電腦一直維持高效運算,也要花電費啊。
其實嘛,就是因為愛玩電腦遊戲的人,會去砸錢買高等配備;他們往往不喜歡家人批評這是浪費錢、只是為了玩,所以一但聽到「幫電腦升級,可以靠挖礦賺錢」的時候,當然就會很有興趣。 所以這半年來,陸續有玩家分享他的挖礦心得,和他新架設的「挖礦機」 。
呃…站在一個求知者的角度來說,我要小抱怨一下,這些分享大多都集中在「買什麼機台,花多少、挖多快、賺多少」上面; 對於比特幣的機制、區塊鏈的技術、雜湊函數的原理大多都沒有提及
— 他們可以在網路上下載到用來破解比特幣謎題的軟體,包括與其他網路上的電腦合作的軟體,所以不需要本身去學習密碼學。
.
還要提醒一點,因為這幾年挖礦的人越來越多了,上面提到,比特幣官方限制,全世界每分鐘釋出的就只有25元 — 當挖礦的人越多、大家的電腦越好,比特幣官方出的題目就會越難。
其實現在已經有不少礦工開始表示,計算自己投入在挖礦花的設備經費和電費後,感覺並不算划算。 尤其是電費很高 — 如果要加速挖礦,那就不能買一般的電腦,而是架設專用的伺服器、準系統;那可能還要為它的散熱一直開著冷氣吹…… 就更耗電 (還要接高速網路)。
而且啊,這樣的準系統,它就是特別為了挖礦設計的,「你沒辦法拿來玩遊戲哦……」;如果你要組一台可以用來玩、用來上網的電腦,只是在你不用它的時候,讓它參與比特幣挖礦,那你一定挖得比別人慢啦。
不過,如果有學生堅持「我沒有要玩遊戲啊,就是要買一台挖礦機」那它值不值得父母投資呢?
嗯,目前還沒辦法斷言比特幣挖礦究竟划不划算;主要是受到比特幣「幣值」波動的影響; 上面講到,猜中謎底的人得到的是25元的「比特幣」,究竟這25元,能換成多少美金 (台幣),其實是不一定的。
像上面說的,如果挖礦的人越多、電腦運算能力越好,題目就會越難,買設備挖礦也就會變得越不划算; 但上面也說了,如果未來使用比特幣能買的東西變多了、大家對比特幣這個「交易籌碼」的需求變高了,那它兌換美元的匯率也許就會上升 (當然反之,也可能會跌)。
所以,到底要不要投資、去體驗一下挖礦潮,比如說「既然是熱衷的事,就去投入一下」之類的,這個就由大家自己去決定啦~~
.
.
底下附上幾個,介紹比特幣、區塊鏈的網站。
本來我是沒有要寫成網誌的 — 我本來只想要分享這些文章、附上一些說明就好。 畢竟我對區塊鏈的瞭解,也是從交叉對照這些文章、整理出來的。
(一開始,我以為區塊鏈 和 RSA 一樣是利用質數函數在加密、挖礦,在網路上看了文章後,才知道它是利用 雜湊函數。)
不過呢,一方面是寫得長了,就想收藏起來;但一方面是網路上的文章有的太偏重「金融應用」,有的使用了大量的專業術語,其實不太好讀懂。
所以我花力氣想了一下該怎麼用日常生活的經驗,去形容「去中心化」、「區塊鏈」、「挖礦」,所以就收進網誌裡,也便於日後跟別人分享。
不過,其實區塊鏈還有很多特色、優點,和「雜湊函數」、「字節長度/功用」、「避免重複交易」有關;
例如,當小明爸給小明1000塊,把它跟別人講,我聽到了這件事;半小時後,我又聽到別人跟我說「小明爸給小明1000」,我要怎麼知道小明爸是不是給了第二次? — 這就是所謂的「重複交易」。
「避免重複交易」所使用的技術,我沒辦法用日常舉例去說明,想知道的話,可以看看底下的連結,如果看一個還不太懂,可以再看看第二個篇文章有沒有不同的說法。
ps. 跟據網友的補充說明,比特幣設計「挖礦」機制不單是為了「不斷產出新幣」,更是為了發行新幣的權力不要集中在單一個人、機構身上;
透過挖礦的機制,每一個礦工都有資格、有可能發出新的、合格的比特幣,然後也沒有任何人、組織可以無故幫自己多發新幣 (導至幣值因政策下跌)。
因此,比特幣雖然有其設計者,但它的運作實際上就是靠伺服器裡已被定下的規則、無主觀意識地在運行著;並沒有一個「操控、管理、發行」比特幣的官方組織 — 所以我在文章裡以「比特幣官方」稱呼它的運行機制,其實是有暇玼的。
揭秘比特幣和區塊鏈:挖礦的本質是什麼? — 壹 讀 https://read01.com/N857Dn.html
理解區塊鏈,不能不知道密碼學 https://www.hbrtaiwan.com/article_content_AR0007296.html
道高一尺 魔高一丈:比特幣是怎麼回事? — 科學月科 http://scimonth.blogspot.tw/2014/01/blog-post_803.html
比特幣 — 維基 https://zh.wikipedia.org/wiki/%E6%AF%94%E7%89%B9%E5%B8%81 (頁眉圖片原檔來自維基,經修改)
雜湊函數 Hash Function <哈希函數> — 維基 https://zh.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B8
RSA 加密 — 維基 https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95
用實例給新手講解RSA加密算法
https://kknews.cc/zh-tw/news/88nx8l.html