2017年10月25日,比特幣 (Bitcoin)又將產生一個新的分裂,叫做 Bitcoin Gold。如果你原本已經有比特幣的話,屆時,會生出等量的 Bitcoin Gold 給你,你可以選擇繼續留著或者兌換成比特幣。

http://fairchain.org/?p=1021

分叉

比特幣的分叉(Fork)行為,可以把它理解成:我們在使用手機 App 的時候,如果發生程式設計問題,開發者會修正問題然後重新上架,使用者下載新版本然後繼續使用。有時候,只是操作介面顯示等不嚴重的問題,所以不會強制使用者更新,也不影響使用。有時候是關乎安全性的問題,則會要求強制更新,不更新就不能繼續使用。

比特幣也是一種軟體,隨著運行時間也會陸續發現許多問題,為了修正問題,就必須經過一次次的更新升級。比特幣網絡是由眾多節點一起運行的,如果此次升級是由各個節點自行決定採用與否,也就是軟分叉 (Soft Fork),是屬於非強制升級,具有「向舊版相容」,譬如:擴容升級

硬分叉 (Hard Fork) 則屬於強制性升級,而且必須要有 51% 以上的節點數量升級才算完成硬分叉。可是這其實很困難,除了要說服所有的節點升級外,還要一起約定好升級的時間點,尤其是去中心化的架構,根本不可能。

分裂

一群理念不同的人就會造成分裂。

原生比特幣是用軟分叉來解決擴容問題,但有一群人為了”理想”認為應該使用硬分叉強制所有節點升級來解決,但原生比特幣要執行硬分叉完美升級太困難了,於是這群人運行自己的網絡系統,從原生比特幣區塊鏈分裂出 Bitcoin Cash 區塊鏈,這是第一次比特幣的分裂,時間點是2017年8月。

分裂後的比特幣總量仍然是 2100 萬個,至於 Bitcoin Cash 自我運行的生態係,總量也是 2100 萬個,而且可以透過交易所互相兌換。Bitcoin Cash 區塊鏈的資料在分裂時間點之前都和比特幣區塊鏈相同,其之後則是自己產生的區塊。

Bitcoin Gold

Bitcoin Gold 是即將在10月25日的新分裂,其目的是希望解決比特幣越來越中心化的挖礦現象。這種現象起因是使用專用礦機 (ASICs) 主宰著比特幣的挖礦權,因而導致極高的 Hash Rates 造成一般玩家難以用個人電腦 (GPU/CPU) 來挖礦。Bitcoin Gold 改用一個新的雜湊算法,Equihash,來防止 ASICs 挖礦,而這種算法也被應用在 Zcash

分裂對比特幣的影響

雖然 Bitcoin Cash 分裂對原生比特幣的價格有造成下跌,但總在不久後即恢復元氣:

  • 4700 USD / BTC (2017/Sep),規模第一
  • 320 USD / BCH (2017/Sep),規模第四

反而 Bitcoin Cash 持續下跌,我想應該是因為原生比特幣也解決了擴容問題,因此不看好。至於 Bitcoin Gold 的影響,從 Zcash (同樣使用 Equihash 算法)來看:

  • 220 USD /ZEC (2017/Sep),規模第16

Bitcoin Gold 的規模一定會比 Zcash 大,因為分裂發生時,馬上產生等量於比特幣的 Bitcoin Gold 流通量。而且確實與原生比特幣的挖礦機制產生區隔,讓人更願意為 Bitcoin Gold 貢獻。


相較於比特幣,Zcash (ZEC) 更注重交易資料的隱私。在 Zcash 的交易網路上,所有的傳送人、接收人、交易量的資料都是被加密的,經由一個叫 「零知識證明 (Zero-knowledge Proof)」 的技術來做交易驗證。我看了很多文章後 (其中也有誤導的),才慢慢了解零知識證明的原理,本文先以改版「阿里巴巴與四十大盜」的故事簡單說明其箇中奧妙,而後更多深入的研究,則待續。

http://archives.lib.ntnu.edu.tw/

比特幣的公開交易內容

比特幣是一種加密貨幣 (Cryptocurrency),它利用密碼學中的雜湊 (Hash)、公開金鑰密碼 (Public-Key cryptography) 和數位簽章 (Digital signature) 等技術,把錢包地址加密,把貨幣的使用權加密,可是卻沒有加密交易資料的內容:付錢的地址、收錢的地址和交易金額。

比特幣設計將交易記錄公開,我認為技術上的理由是為了讓挖礦者 (Miner) 快速驗證交易中的來源款項是不是合法的 UTXO 和付款人。

這個說法對個人錢包也許行得通,但對一家商店可能就會傷及商業隱私。商店的進出貨如果都用比特幣來做交易,其實很容易用軟體在區塊鏈上找出這家商店的錢包地址的所有資料,算出這家商店的營業所得。在這種需要隱私的應用情境下,比特幣的公開交易紀錄顯得不適用。

Zcash 就是解決公開區塊鏈上的資料隱私問題

Zcash的加密交易內容

Alice 和 Bob 使用 Zcash 錢包做交易:Alice 轉 1 ZEC 給 Bob。Alice 將交易內容加密後送到 Miner 做驗證,但問題來了,當 Miner 收到這筆交易,因為不能解密交易內容,導致無法驗證交易是否合法,進一步定義是:

  • 無法驗證 1 ZEC 是可花用的 (i.e. unspending)
  • 無法驗證 1 ZEC 是屬於 Alice

關於第一點,Zcash使用「備註作廢」的方法來解決。至於第二點,Zcash 運用「零知識證明」的方法來驗證,它的概念是:Alice 不需要提供交易的數位簽章給 Miner,即可驗證 1 ZEC 是屬於 Alice

零知識證明

「零知識證明」講的是:證明者 (prover) 要說服驗證者 (verifier) 某些事實是真的時候,不需要透露事實裏的資訊,即可證明事實是真的。

先舉一個常用來說明的例子:「阿里巴巴與四十大盜」。

四十大盜抓住了阿里巴巴!

但盜賊們不確定阿里巴巴知道打開寶藏洞穴石門的咒語?

而阿里巴巴確實知道咒語,卻又不想讓四十大盜們得到。

所以他們協議好,雙方站定間隔一段距離,當盜賊舉起右手,阿里巴巴就唸咒語開門,當舉起左手,就唸咒語關門。

如果失敗,盜賊會把阿里巴巴殺死。

經過一番的驗證,盜賊們確定阿里巴巴會咒語以外,也沒有讓盜賊知道咒語

這個故事中有幾個元素:

  • Assertion: 阿里巴巴知道咒語
  • Challenge: 盜賊舉手命令
  • Commitment: 開門/關門
  • Secret: 咒語

對比到 Zcash 的加密交易驗證:

  • Assertion: Alice 擁有 1 ZEC
  • Challenge: 請提出驗證字符串 π
  • Commitment: 驗證字符串 π
  • Secret: 數位簽章 (私鑰)

想要了解驗證字符串 π 是什麼,需要更深入研究零知識證明的相關理論,條件允許的話,我是希望再寫一篇專文來說明。


http://litecoinblockhalf.com/segwit.php

萊特幣(Litecoin,LTC)旨在改進比特幣,與其相比,萊特幣具有三種顯著差異。第一,萊特幣網絡大約每2.5分鐘(而不是10分鐘)就可以處理一個塊,因此可以提供更快的交易確認。第二,萊特幣網絡預期產出8400萬個萊特幣,是比特幣網絡發行貨幣量的四倍之多。第三,萊特幣在其工作量證明算法中使用了由Colin Percival首次提出的scrypt加密算法,這使得相比於比特幣,在普通計算機上進行萊特幣挖掘更為容易。 — Wikipedia

一句話小結:萊特幣採用容易計算的 Scrypt 雜湊算法 (hash algorithm) ,所以出塊的時間比較快,礦機的硬體規格較親民,也因此規劃較大的發行量。

比特幣採用計算較費時費電的 SHA-256,底下討論這兩種雜湊算法的差別。

Mining & Hash Rates

加密貨幣的挖礦其實是 …


https://cointelegraph.com

時不時有新聞報導:「某國政府開始對比特幣進行管制或禁止的措施」、「某國央行打算發行自有的虛擬貨幣」。這些看似比特幣的利空消息,在我看來都是進一步鞏固比特幣的獨立性和保值性,讓比特幣在未來的虛擬貨幣的金融世界裡取得有如美金的地位。

我也發現,這些管制的消息多來自政經制度封閉或不穩定的國家,相較之下,開放且自由的國家都正在努力如何從比特幣中去學習、去了解、去調整,來跟上這百年難遇的大躍進。

打壓政策造成流通性低?

如果使用的是真實貨幣就會,但虛擬貨幣裡,除非政府阻斷所有跟比特幣網路的連線,包括我把交易代碼 (Transaction Hex code) 印出來郵寄到國外的朋友,然後請他幫我隨便找一台電腦或手機發送到比特幣網路,否則無法禁止交易。

再者,管制政策根本無法限制比特幣的產量,就算挖礦的人變少,比特幣的演算法就會降低挖礦的難度,讓比特幣的產量維持在10分鐘12.5個BTC。

況且,越來越多的商店願意收取比特幣。

國家發行虛擬幣,誰還要用比特幣?

國家自行發行虛擬貨幣,我認為只是將國家的法幣穿上「數位、加密」的禮服,再重新上台表演而已,政府對其價格仍可以上下其手、恣意妄為,並沒有承繼到比特幣去中心化的理想。因此比特幣還是會有人使用,特別是在金融制度不健全不透明的國家。

成為虛擬幣世界的美金地位?

在虛擬貨幣交易所中,可以用美金或比特幣交換到其他貨幣,像是

等,原因當然除了比特幣是第一個虛擬貨幣具有指標意義外,比特幣的作者始終是謎,造就了其超然性,這特性讓其他由某個組織或團體發起的貨幣所無法匹敵的。

總之,Buy the Bitcoin!


最近打算用Node.js寫一套自己的比特幣交易系統,在研究比特幣相關技術的過程中,越深入研究越感到憂喜交雜。憂的部分我寫在結論,而喜的是對中本聰的設計哲學感到佩服,如果未來比特幣的發展更加健全,社會的運作會更加正向透明,本文是我自己在研究過程中所得到的頓悟,整理寫下來的。

金本位貨幣

金本位是一種貨幣制度,規定若干貨幣的價值等同於若干重量的黃金,這種制度是由美國在19世紀中主導下所建立的。為什麼是用黃金?當然是因為它的稀缺性所產生的價值。不過實施之後,發現一些缺點:

成本昂貴

經濟活動有起有落,金本位制度決定了貨幣的供給量,所以當經濟高度發展時,需要更多的貨幣去支持成長,這時候央行就必須去挖出更多的黃金來維持貨幣供給量,這是一個很大的成本。

缺乏彈性

金本位制度下,貨幣與黃金掛鉤,央行無法在經濟衰退時降息,在經濟成長時升息,央行沒有太多工具透過貨幣政策穩定經濟發展。

國家之間的強連結

當每個國家都奉行金本位時,也就是說他們的貨幣之間的匯率是固定不可動的。這會有個問題,一旦某個國家發生問題,將造成連鎖效應。

如果沒有上面講的三個缺點的話,金本位才是正道。試想有一個理想世界,它的經濟活動有時熱有時冷,甚至變化劇烈,但在這個世界裡的央行有一個神奇的方法,可以很容易找到黃金來適時維持貨幣的供需平衡。最好是,每個國家央行都用同一種方法,對同一個金礦挖礦,而且黃金的開採速度都維持一樣,自然地所有國家都可以用同一個貨幣進行交易行為,我認為中本聰所設計的比特幣就是為了打造這個理想的世界。

讓柏南克來告訴你,為什麼美國要脫離金本位?

比特幣,不對應任何實體價值

畢竟這個世界是現實的,在金本位的諸多不便之下,讓很多國家貨幣都改採用「美金本位」,也就是本地央行想要增加本國貨幣的供給量時,必須先買進美金來當作擔保品,所以各國鈔票的增加量就得看美國聯準會的臉色。那鈔票的源頭:美金呢?雖然美金也已經不是金本位,但要多印的美鈔還是需要有對應的擔保品,例如證卷、債卷、票據、動產或不動產等實體價值。

比特幣,在虛擬網路世界裡流通的數位貨幣,它不需要對應任何實體的擔保品,就可以擁有價值。怎麼辦到?答案是透過一個精妙的設計,限制比特幣的產量來製造稀缺性,就像我們去挖稀有黃金讓貨幣產生價值。

比特幣的交易

不管是在現實的銀行帳戶,或是虛擬的比特幣帳戶,你所看到的現金餘額其實是把過往的每一筆交易紀錄加總起來。另外,因為錢可以從一個帳戶任意轉入轉出,所以在所有帳戶之間有一條金錢流動的線,這條線你在比特幣的世界裡是看得到的,是公開的,但在現實的銀行體系下,它只有「特定人」才能看到。

如果你現在想花掉你的比特幣帳戶的 50 BTC,比特幣的交易系統會先去檢查:

「是誰給你這 50 BTC?」

如果你是透過合法交易獲得這 50 BTC,系統才允許讓你花掉這 50 BTC。比特幣所有的交易紀錄都是公開的,相比之下,銀行體系下的交易可說是不透明。

比特幣和區塊鏈的關係

2008年,中本聰所發表的比特幣論文:《比特幣:一種對等式的電子現金系統》,他只是單純地去解決一個電子現金的交易問題,而非想要發展出一個通用機制或協定。但是後人在研究他的論文後,把其中為了解決交易中「信任」問題的機制抽取出來,也就是「區塊鏈」,後來更發現區塊鏈可以應用到其他領域,如物聯網、醫療照護、產業供應鏈或數位版權等。

如果要簡單說區塊鏈是什麼,那就把它想成一條把交易紀錄串連起來的資料鏈,它有幾個特性:

  1. 這條鏈不會斷,而且唯一
  2. 交易紀錄要先被檢查,確認合法後,才可以發出新的交易
  3. 交易紀錄一旦被鏈接起來,交易就立刻生效,之後就不可改動
  4. 被鏈接的過往交易紀錄,保證合法且已被正確執行

為了達到這些特性,區塊鏈還做了一些事,想知道更多細節,請參考:

挖礦

綜合上兩節所講的,如果你要花 50 BTC,比特幣的交易系統會先檢查這 50 BTC 的來源是否合法,若合法,系統會把它接到區塊鏈上,自此交易立刻生效。可是…,並不是隨便就可以把交易紀錄接到鏈上去,還得先通過一個關卡:解數學題。所以要完成一筆交易,要經過三個步驟(為了讓讀者好懂,先簡化成三個步驟):

  1. 檢查錢的來源是否合法
  2. 答對數學題
  3. 放到區塊鏈上

但誰來幫忙做這三件事?答案是「自願者」。只要你有一台電腦,幫忙完成這三件事,系統會給你一點比特幣當作報酬。這就是「挖礦」!而且如果你有一台運算速度比別人更快的電腦,就可以比別人更快完成這三件事,因此拿到更多比特幣報酬。

「等等?!」

「這不公平啊!」

這世界的貨幣其實一直以來存在著一個風險:「如果未來某天,一個巨大的金礦被發現,各國貨幣勢必會有巨大的震盪。」我們無法限制(資金),無法預測(時間),一個巨大的金礦被開採出來,這是一個現實存在的風險。

比特幣不同,它可以隨時調整數學題的難度,就算電腦再快,也能讓新的比特幣保持在10分鐘產出一次(12.5 BTC / 1次 / 10分鐘)。這個設計類比到現實世界就是限制人們的開採權,從而避免貨幣系統崩潰。

而且,比特幣的總量是固定的,總共21,000,000 BTC,預計到2140年之後將無法再挖到比特幣。另外規定,每4年產量減少一半,也就是在比特幣最初2009年發行之際,礦工挖到礦可以拿到50 BTC的報酬,到了2012年變成25 BTC,最近一次是在2016年減半,變成12.5 BTC。

What exactly is mining?

挖礦機的軍備競賽

人們看到比特幣挖礦是有利可圖,積極的人就會花錢去買計算力強的電腦。如果我有一台比其他人都快的超級電腦,只要花10分鐘就可以挖到比特幣,沒錯,我就可以更快獲得更多的比特幣。雖然這會造成貧富差距,現實世界的「大者恆大」會在比特幣的世界發生,但中本聰似乎更在意貨幣系統的穩定性,再說,比特幣世界的「大者」是無法玩金錢遊戲的。

挖礦給予報酬的設計,中本聰的深層用意是為系統匯集更多計算力,讓眾人來維持比特幣的穩定和不可破,而且人不會笨到去破壞這個系統讓自己挖到的錢變一堆沒價值的0和1。

這種比電腦最快挖到礦的機制,叫做工作證明(Proof of Work)。還有另一種機制叫股權證明(Proof of Stake),也很有趣,請參考:

有挖到礦,才會增加比特幣供應量

假設真實世界裡的所有錢只有100元,利率是1%。我向銀行借這100元,所以還錢的時候要給銀行101元,可是全世界就只有這100元,多出來的1元我要去哪裡生出來?因為還不出這1元,銀行就會形成呆帳,之後銀行可以在借出這100元,久而久之,進入惡性循環。為了維護世界和平,政府和央行會聯手解決問題:央行會印1元的錢出來,政府會發行1元的債卷,然後央行去買政府的債卷,讓政府可以花這1元的錢,使其流通到市面上,所以我就可以還銀行錢了。

上述這個例子,你可以發現,我們手上的鈔票都是「紙上富貴」,鈔票的價值並沒有實實在在對應到某個實體擔保品,例如黃金,可是一旦政府宣布破產,還不出債卷上的錢,這些對應的鈔票瞬間變廢紙。

我認為比特幣的設計原則是遵循著「金本位」的經濟理論:只有挖到礦,才有多的比特幣可以花,不需要多印鈔來支應利息,可算是簡單而優雅。而且每個人都是用同樣的方法,在同樣的限制下,對同一個礦脈進行挖礦,不會有你挖到的比特幣比較貴的問題,自然方便流通。

連國中生都看得懂的「貨幣學」

結論

中本聰想創造一個「開放、對等、共識、直接參與」的金融交易體系,而這個理想很多人也想複製到其他的領域,但在引言我所提到擔憂的部分是支持比特幣運作的區塊鏈技術,也許最後發現只適用在金融領域,是特例也是唯一例。

我的比特幣專案:


現在很多前端工程師的職缺都要求開發過大型應用(Large-Scale Application, LSA)的經驗,我很好奇到底 LSA 的定義是什麼?

Addy Osmani 剛好有一篇文章就在講他所認為的 LSA 定義及其架構和實作:“Patterns For Large-Scale JavaScript Application Architecture”。Addy Osmani 在 Google 擔任前端工程師,是一位很有名的 JavaScript 開發者。他所描述的 LSA 應該具備的東西,在我自己的工作專案裡,或多或少有一些影子在,我想我做的東西應該也算符合 LSA 的定義吧。底下開始我就來翻譯這篇文,分享給前端的開發者們。

本翻譯文以取得 Addy Osmani 的同意,全文如下:

什麼是“Large-Scale” JavaScript Application?

在開始 …


最近 Pokémon Go 實在太紅了,加上自己是技術控,看到這篇文 ”Unbundling Pokémon Go”:在講如何用逆向工程得到 App 的原始碼,並分析其運作機制,在此翻譯分享給大家。

本翻譯文已取得 Adrien Couque 的同意,全文如下:

最近不知從哪兒冒出來,Pokémon Go 在一個禮拜內席捲了全世界,我們從裡面發現一些有趣的東西。

雖然,這個 App 目前只在三個國家公開下載(美國、澳洲和紐西蘭),但它仍然讓 Twitter 和 Facebook 相形失色。它打敗了 Candy Crush 成為美國最成功的手機遊戲,不僅證明了對開發者帶來收益,在地商家也注意Pokémon Go會為他們帶來客源,任天堂公司的市值因而增加90%。

這個遊戲在這麼短的時間就成為家喻戶曉的話 …


這篇文翻譯自”How Does the Blockchain Work?”全文。作者Michele D'Aliessi用淺白易懂的文字闡述比特幣(Bitcoin)和區塊鏈(Blockchain)的運作原理,是一篇很棒的入門文章,因此我決定挑戰翻譯看看,讓更多人了解這個技術。

本翻譯文已取得Michele D'Aliessi的同意,全文如下:

自網路問世以來,區塊鏈技術可能是目前為止最棒的發明。它讓我們不用倚靠在無形的信賴或權威機構來做利益交易。舉例來說,我和你打賭50元明天舊金山的天氣。我賭它會是晴天,你賭它會是雨天。我們會有三種方式來完成交易:

  1. 我們信賴彼此。不論結果是晴天或雨天,輸家要給贏家50元。如果我們是朋友,這會是一個好的交易方式。然而,即便是朋友,也有可能會賴皮不認輸而不願付錢,更何況 …

Ben Z.W. Jian

Software developer, Taiwan. Email: zwjian@gmail.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store