當前位置:
首頁 > 最新 > Go大咖說第一期《比特幣、區塊鏈和Go開發》

Go大咖說第一期《比特幣、區塊鏈和Go開發》

個人介紹

姜家志,2013 年開始接觸比特幣,之後開發了比太錢包,現在在比特大陸從事比特幣相關的開發工作。

引言

大家好,我是姜家志

首先感謝下謝大神的邀請,能有機會和大家進行交流,我是 2013 年開始接觸比特幣,當時花了很長時間在了解比特幣原理和看比特幣的源代碼上。

之後我們發現比特幣沒有好用的錢包,就開發了 "比太錢包"(bither), 比太錢包是中國人開發的唯一的一個上 bitcoin.org 的錢包,截圖中就是比太錢包。

另外的一個是 btc.com 錢包是我現在所在的公司開發的錢包,是由我們公司的歐洲團隊開發的錢包。

我從 2014 年開始接觸 Go 語言,接觸之後就深深的喜歡上了 Go, 之後就開始有計劃地學習 Go 語言,自己做了幾個 demo 性質的網站,主要是個人 blog、論壇、和版本發布。使用的框架是 beego,在這裡要再次感謝下謝大神開發的 beego,這個框架的源代碼是相當的優雅,是我等學習的楷模。

我現在在比特大陸,主要從事比特幣協議相關的開發工作。今天藉助這個機會給大家聊聊比特幣,以及區塊鏈行業在使用 Go 開發的情況。讓大家對比特幣和區塊鏈行業有一個大致的了解。

大綱

這個是我們今天的內容摘要,主要內容包括:比特幣介紹,區塊鏈行業介紹,區塊鏈行業使用 Go 的情況,最後簡單介紹下我們公司和我們做的事情。下面正式開始我們今天的內容。

比特幣介紹

首先介紹下貨幣的歷史,以中國的貨幣歷史為例,主要是中國的貨幣歷史很長。

(1) 貝殼,是中原一帶最早的貨幣形式,是一種主導位置的貨幣,漢字中很多交換有關的字都是以貝作為部首的,比如 "賺",「貨」 等

(2) 銅幣,商朝的時候出現了銅幣,根據目前的發現,這是人類歷史上最早開始使用的金屬貨幣。我們開始進入金屬貨幣的時代。

(3)鑄幣, 周代的出現鑄幣,例如刀幣。

(4)銅錢, 秦至兩漢,秦始皇統一度量衡,統一貨幣,使用銅錢

(5)交子,這個在宋代出現,是人類歷史上最早的紙幣

(6)金銀,元明兩代紙幣出現了嚴重的通貨膨脹,之後以金銀作為基礎貨幣。為了流通便利,晉商還發明了票號。

(7)法幣,國民政府進行幣制改革,銀元禁止流通,學習過歷史都知道這個時候出現了嚴重的通貨膨脹,法幣歸 0。

(8)信用貨幣,從布雷頓森林體系結束之後,人類進入信用貨幣的時代,就是以政府信用為背書作為貨幣的發行。隨著移動互聯網的發展,我們已經在逐漸脫離實物貨幣,使用數字貨幣,比如微信,支付寶,信用卡等。

(9)虛擬貨幣,那貨幣發展的下一步會不會是以比特幣為主的虛擬貨幣的時代呢?這裡我們先打一個問號。

從上面的貨幣發展的歷史可以看到,人類使用法幣的時代很長,歷史上大多數時間內都是使用金屬貨幣為主,貨幣的發行也不是完全以政府為主導的。

而且紙幣的發行很容易就出現惡性的通貨膨脹,除了惡性的通貨膨脹之外,我們還常常聽說溫和的通貨膨脹,下面就來看看溫和的通貨膨脹是什麼?

布雷頓森林體系是以美元和黃金以固定的比例兌換為主的,1973 年布雷頓森林體系崩潰,美元的價值在持續性的下跌,2013 年一美元的購買力只相當與 1913 的 0.05 美元,美元貶值 95%。而美元以當前來說最穩定的貨幣之一。這就是溫和的通貨膨脹,你的財富如何消失的,看看溫和的通貨膨脹就明白了。

在當今的社會惡性通貨膨脹也在持續的發生,比如最近發生的:

(1) 辛巴威月通貨膨脹率最高為到 11,200,000%

(2) 2014 年俄羅斯盧布持續貶值

(3) 委內瑞拉玻利瓦爾一次性貶值 89%

(4) 印度紙幣廢除事件

從過去的歷史和當前發生的事件來看:

法幣會持續的貶值

惡性通貨膨脹事件一直都會發生

有些國家的政府信用並不那麼可信

相信大家對於 "財富是如何消失的?" 有一個大致的了解了,那麼這些和比特幣有什麼樣的關係呢,比特幣又是什麼呢?

我們首先先說下比特幣的誕生

2008 年互聯網有一個叫 "Satoshi Nakamoto" 的人,發布了一個論文,叫做 。2009 年,Satoshi 本人開發比特幣系統代碼,創世塊誕生,裡面有一段話:「 The Times 03/Jan/2009 Chancellor on brink of second bailout for banks」 泰晤士報當天的頭版文章標題,政府開始第二次救助銀行。2010 年之後,Satoshi 本人逐漸消失。

2010 年 5 月 22 日,程序員 Laszlo Hanyecz 用 10000 個比特幣買了 2 個披薩,價值 25 美元,這是比特幣的第一次交易。

當前比特幣的價格是 15473 元,2287 美元一個。上漲幅度之大也是比特幣倍受關注的原因

為什麼比特幣會不斷的上漲,首先比特幣是一種通縮的貨幣。

右邊的圖是比特幣購買力的變化,這就是通縮的力量。

當前比特幣的購買力是 2014 年的 10 倍左右。

比特幣不是通貨膨脹的貨幣,而是通縮的貨幣,童年還沒有過完的經濟學家才會說 「通縮是有害,溫和的通脹是有有利於經濟發展的 「。歷史上金銀也是通縮的,而比特幣的總量是固定的 2100 萬枚。通脹就是在搶劫你的財富。

比特幣的發行是通過減半機制來實現的,比特幣是通過挖礦產生的,其中有一筆特殊的交易叫做 Coinbase,這筆交易就是挖礦的獎勵也就是比特幣的發行。最初的時候獎勵挖一個塊是 100 個比特幣的獎勵,每四年半就會減半一次,現在挖礦的獎勵已經編程了 12.5 個比特幣了。

那麼比特幣的機制能不能被改變,答案是不能,因為比特幣是去中心化的。比特幣並不是由單一組織控制的。

比特幣的底層網路協議是 p2p 網路,不依賴於任何一個單一的伺服器,而且比特幣的源代碼是開源的,由比特幣社區共同去維護的。

比特幣不受任何一個但與組織的控制,開發者,礦工,交易所,用戶共同組成比特幣社區,相互協調維護比特幣的發展。比特幣的運行依賴於比特幣的每一個節點,但是單一節點運行失敗並不影響整個比特幣網路。

而做為貨幣本身來說是需要信用的,簡單來說就是信心,那麼比特幣的信用是那裡來的呢?

比特幣的信用來源數學, 來自於密碼學,比特幣是數學保護的財富。

人類歷史上第一次能夠完完整整的控制自己的財產就是比特幣,比特幣私鑰是唯一的憑據,失去私鑰將失去比特幣

比特幣採取的是非對稱加密演算法 (ECDSA), 而挖礦是採用的 hash 摘要演算法 (sha256), 地址(公鑰)用來登記所有權,而他的供給是幾乎無限的,因為私鑰的概率空間是將近 2^256,無法被暴力破解。比特幣只要有網路就可以使用,沒有地區的顯示,全球無縫流通。

而比特幣採用的是 UTXO 模式,他的原理就是,比特幣的區塊鏈賬本里記錄的是一筆又一筆的交易,每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出。未花費過的交易輸出」,也就是 UTXO。比特幣賬本只會記錄交易,而不關心 "地址",如果需要知道地址上面有多少餘額,就需要找到該地址上面的 UTXO,計算出其餘額,這就是錢包的功能。

而且比特幣沒有假鈔,天然審計的,人類花在假鈔識別的成本也是巨大的。在大量的使用微信和支付寶之後要假鈔的問題要好了很多。我們要感謝科技帶來的改變。

比特幣系統有三大特徵,上面說了比特幣的去中心化,還有兩個分別是工作量證明和鏈式結構。

區塊鏈行業介紹

先說下工作量證明

工作量證明(POW)最主要是為了解決拜占庭難題。

拜占庭難題,是點對點通信中的基本問題: 在分散式計算上,不同的計算機透過訊息交換,嘗試達成共識;但有時候,系統上協調計算機或成員計算機 可能因系統錯誤並交換錯的訊息,導致影響最終的系統一致性

比特幣系統中就是誠實節點在工作,而非誠實的節點有可能會給你錯誤的信息,那如何來保證系統是向正確的方向發展呢,這就是工作量證明機制,工作量證明是使用時間戳來標識鏈的增長,而出現分叉的時候以最長鏈為主,挖礦模擬的是人工在挖黃金的勞動,最長鏈就表示勞動最大。就是可以信賴的鏈。

POW 還解決了一個重要的問題就是 "雙花",就是一個地址上面的比特幣是可以花給 A,也可以給 B 的,這個時候我們怎麼確認那筆交易是有效的呢?假設一個人有 51% 的情況,他是有能力抹去已經確認的交易的,這時我們就需要等待 6 個確認才可以(長鏈)。想更改 6 個確認的交易基本上是不可能的。

比特幣的鏈式結構分為兩種,交易的鏈式結構和塊的鏈式結構。

先說下交易的鏈式結構。

比特幣的交易是又輸入和輸出構成的,除了 Coinbase 是獎勵以外,每一筆交易都比如有最少一個輸入,而每一筆交易的輸出在花費的時候又構成了另一筆交易的輸入。所以每一筆交易都可以通過輸入追溯到 Coinbase 交易,在一個輸出沒有動用的時候他就是 UTXO,如果通過了就必須在輸出裡面的金額花完,該輸出被花費永久的記錄在區塊鏈中。而在動用 UTXO 的時候,所有者必須使用私鑰對交易進行簽名,把交易 + 簽名 + 公鑰發送給全網路,比特幣節點就會對交易進行驗證。

而這些驗證都是由比特幣的節點和礦工去完成的。

比特幣的塊鏈借給就是區塊鏈。

塊的鏈式結構,就是比特幣打包的塊,除了有交易以外,還有前一個塊的 hash 值,這樣,每一個塊都包含了前一個塊的 hash 值(前一個塊的引用),通過塊 hash 值,就能不斷的向前追溯,一直追溯到創世塊。

這樣的結構的是不可能更改的,如果要更改就會被 POW 限制。

前面我們說過金屬貨幣在面對信用貨幣的時候輸了,其實是因為金屬有自己先天的弱勢,比如不容易攜帶。

我們給別人介紹比特幣的時候我們常常用黃金來類比比特幣,其實比特幣比黃金還是有很多的優勢的。

除了很黃金一樣的稀缺性,不可替代性之外,比特幣對於黃金有很多的優點,而且比特幣是可以切割到 10^8 之一的,所以用來做貨幣是有很大的優勢的

比特幣只要有私鑰,在網路的地方就可以動用你的比特幣,因此也不存在攜帶的問題。而且別人是無法知道你是有比特幣的

下面說說比特幣的合法情況

在比特幣 6000 點的時候,中國央行開始對比特幣三大交易所進行檢查,然後比特幣漲到了 20000 點,為什麼呢?

其中有一個很重要的點就是日本的對於比特幣完全合法的,日本是世界第三大經濟體,影響力可見一斑。其次比特幣在歐洲,菲律賓,和澳大利亞都有比較明確合法的政策。而印度和韓國是有可能合法的。

在中國是可以做為商品自由買賣的,今年央行從 1.11 開始查交易所,6.1 交易所正常提幣。從一個側面來說,央行用半年的時候來幫助我們審核了下比特幣是沒有問題,不是傳銷,不是龐氏騙局,沒有洗錢問題。央行花了很長的時間幫我審核的。

以上是比特幣的一個大概情況,我們經常對身邊的人說,應該考慮買點比特幣。為什麼應該擁有一點比特幣呢?

在比特幣 2000 的時候我常常勸身邊的人可以買點,如果買個一萬塊錢的,比特幣再漲 100 倍,這還是有不少錢的,而且又能參與一項巨大的技術發展。何樂而不為!

即使比特幣歸零了,也不是太影響生活。上面是給出的擁有比特幣的一些理由,對於對奧派感興趣的朋友應該是知道哈耶克的《貨幣非國家化》這本書,奧派的書還都值得看看的。我本人也是一個奧派。

區塊鏈行業使用 Go 的情況

上面介紹的是比特幣,下面給大家介紹下區塊鏈行業的現狀。

比特幣是區塊鏈的最早應用,而採用區塊鏈的結構是因為比特幣為了實現去中心,不是為了更容易獲取數據,作為碼農都明白,結構化的數據才是最好處理的數據,而區塊鏈結構的數據並不好處理,比如要一個地址的交易,就需要找遍所有的塊。

而區塊鏈解決的不是效率的問題,解決的是信任,數據保護的問題。

這個行業因為和金錢打交道多所以賺錢的機會就多了一些,價格的持續上漲本身就造就了不少富豪。區塊鏈的大多數項目都是開源的。

而區塊鏈行業使用的都是什麼編程語言呢?

區塊鏈行業所使用的編程語言需要滿足,執行效率高,高並發,跨平台,對於網路開發要求比較高等特點。

早期的項目是以 c++ 為主,現在的一些項目都開始使用 Go 語言。下面舉兩個 Go 語言比較有名的區塊鏈項目。

以太坊,是一個智能合約的平台,該平台具備圖靈完備,簡單來說就是可以編程,右邊是他從 16 年到現在的漲幅,漲了 100 多倍,現在很火的 ICO(類似與 IPO,創業公司直接獲取到大量的資金)都是藉助以太坊來實現的。他有兩個語言的實現 Go 和 c++, 使用 Go 方案的比 c++ 的要多。

Hyperledger fabric,因為是 Linux 基金會支持的,IBM 主持的項目,所以一開始就比較火,Go 語言開發

為什麼區塊鏈行業會選擇 Go 語言開發呢?

因為 Go 語言具備以下的優勢?

有人也嘗試過使用 node.js 和 python 的實現,但是這兩個語言並不是適合構建系統級別的項目,在不久的未來區塊鏈行業會有越來越多的人使用 Go。這是一個趨勢。

當然 c++ 也具有 Go 的很多有點,但是 C++ 太複雜了,做 c++ 開發很多時候你需要把精力關注在語言上,而不是項目上。Go 作為一種工程化的語言,的確他的優勢越來越明顯。我從 2014 就喜歡上 Go 也是這個原因。

區塊鏈的項目都需要面對高並發,時刻與網路通信,所以 Go 是個不錯的選擇。

下面是 "廣告時間",簡單的介紹下我們公司,雖然有廣告的嫌疑,但是我們公司還是家比較有意思的公司。

公司介紹

我們公司的文化是主張不斷學習的,所以我們對於程序員所使用的編程語言並不是特別在意。我們公司內有兩個項目完全以 Go 語言為主開發的,下面簡單給大家介紹下.

這個是我們正在做的項目,對整個比特幣協議層進行優化

最後來簡單說下我們的團隊文化,我們是一家以技術驅動的公司,所以也十分推崇工程師文化。

我們認為一個好的工程師天然就是一個好的產品經理, 而且公司不需要監工,扁平化管理,每個人都要 "幹活", 我們認為一個需要管理的工程師肯定是沒有創造力的。公司的待遇好這個就不用說了.... 很好的,說了那麼多其實我想說我們公司也在招優秀的工程師 。

QA

Q: 怎麼看待近期比特幣擴容的問題? 是否會分叉, 比特幣的持有者需要注意什麼?

A: 比特幣擴容是必然的,不然吞吐量不夠,不能繼續往前發展,比特幣分叉並不可怕,歷史上的分叉也不少,只要你保存好自己的私鑰就好。

Q: 以前聽說 btc 總量是有限的?這對於後面加入的玩家會不會太不公平?擴容是能解決這個問題嗎?

A: 總量有限的,世間沒有絕對的公平,早期投資比特幣的人類似於風險投資,有收益也有風險。擴容的問題必然要解決。

Q: 智能合約目前有和現實生活結合的案例么?

A: ICO 是一個很好的例子,初創工作在不經過風投的情況下能夠融到很大的金額,有一些融資都上億的。對於創業公司是件好事

Q: 問點技術以外的。比如現在比特幣已然成為了暗網的通用貨幣。包括最近的幾次勒索軟體,支付方式也是以比特幣的方式進行。早些年暗網的黑市活動在比特幣出現之前,並沒有這麼猖獗。從陰暗面的角度,比特幣的將來是否需要在這個層面進一步改進和優化?

A: 比特幣只是一直支付工具而已,其實比特幣是相對比紙幣要容易追蹤的,而且技術本身是中心的。另外對於一些事物的理解奧派也有不同的解釋。

Q: 比特幣是否有性能挑戰,比如一秒能處理的最大 Transaction 數

A: 現在一秒能處理 3 筆交易,比特幣正在擴容,擴容就是為了解決這個問題的

Q: 當有交易發生時的廣播,用的是什麼機制才能保證大部分分布在世界各地的礦工們能夠及時收到

A: 比特幣系統是 p2p 網路,每一個節點就負責向其他節點廣播。

Q: 比特幣是否只是虛假的去中心化,比如一段去掉 2100 萬貨幣總量限制的代碼,能否被提交到比特幣代碼中,是由誰決定的?這個決定權是否就是比特幣世界的統治者?

A: 這個時就是 pow 決定的,如果要更改需要所有人的同意。比特幣世界沒有統治人,擴容的問題那麼久也無法產生一致就是個例子,單個組織和個人無法控制比特幣。

Q: 為了防止所謂的量子計算機的供給,比特幣錢包一般公開的是錢包 ID 而非公鑰,公鑰只是在進行轉賬的時刻才公開。那麼如果我向一個從來沒有轉出錢的錢包進行轉入操作,礦工如何驗證這是一個合法的錢包 ID

A: 比特幣有一個地址的概念,他是公鑰的 hash,使用地址可以避免公鑰的暴露

Q: 比特幣錢包本質上是一個私鑰,這給比特幣帶來了巨大的匿名安全性,人和錢包沒有對應關係。但是在一些新的區塊鏈應用中,比如公開政府選舉投票區塊鏈,我們需要有錢包與人的對應,而比特幣目前顯然做不到這一點,請問業界有解決方案嗎?

A: 這個不是比特幣解決的問題,如果比特幣解決了貨幣的問題已經很牛逼了,選舉的問題可以考慮其他的區塊鏈解決方案

Q: 能不能問下,現在主要都有哪些應用層面是基於區塊鏈嗎?

A: 日本有很多的結算已經開始使用比特幣了,具體的應用層面到我們生活中的例子還很少。

Q: 一直有疑問,為什麼交易經過 6 次確認,就能避免雙花問題?為什麼不是 5 次或者 7 次呢?這是推論嗎還是經驗上的結論

A: 6 次確認是算出來的.

當 q=0.1 z=6 P=0.0002428 本雙華的概率很小了。其實小額的話一個確認就沒有啥問題了

Q: 請問挖掘比特幣是什麼概念?可通過什麼工具實現?如果比特幣數目是固定的,是不是已經挖的差不多了?

A: 比特幣挖礦現在主要是使用專業算 sha256 的晶元來完成的

這是礦場的圖片, 1. 挖礦獎勵完成需要 100 年的時間 2. 比特幣每一筆交易是需要支付交易費的,以後的挖礦交易費會是主要的收入

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Go中國 的精彩文章:

Go重回兵器譜第一還需要多久?

TAG:Go中國 |

您可能感興趣

Cocos大會發布全球首個區塊鏈遊戲開發環境
Cocos發布全球首個區塊鏈遊戲開發環境
悉尼西區Tregeary,一地建三屋帶DA小開發
比特幣交易系統開發-美聯儲:比特幣和現金的三個共同點
大疆發布新一代熱成像相機禪思XT2,以及全新的開發包Payload SDK
區塊鏈生態之開發者工具八:DAGs
Google發布增強現實開發包ARCore 1.0:小米/華為首發
揭秘區塊鏈開發和比特幣的關係
美國運營商Sprint聯合LG開發5G手機:並宣稱為明年第一部
神奇寶貝開發者宣布Tembo Elephant 柯比和彩虹畫筆有發布日期
《PUBG》公司起訴《堡壘之夜》開發商Epic Games 丨良風有信
區塊鏈十條:中本聰團隊Martti Malmi回歸數字貨幣開發領域
瑞銀集團聯合IBM開發的區塊鏈平台Batvia完成第一筆跨境實時交易
谷歌推出地圖API,幫助開發《Pokemon Go》類型AR遊戲
微軟第一方工作室《極限競速:地平線》開發團隊Playground Games大規模擴招 《神鬼寓言4》開發提速中
微軟第一方工作室《極限競速:地平線》開發團隊Playground Games大規模擴招《神鬼寓言4》開發提速中
ChinaJoy首設區塊鏈遊戲開發者大會
亞馬遜推出AWS區塊鏈開發模板,正面對抗IBM、Oracle
《GT7》要來了?山內一典:下一部GT已在開發
Go Cloud項目開源發布:Go語言將成為雲端應用開發的首選語言?