比特幣代碼框架介紹
1. 區塊鏈常見的名詞解釋
1.區塊鏈(BlockChain)
區塊鏈是一串通過驗證的區塊,其中每個區塊都與上一個區塊相連,一直連到創世區塊。區塊鏈是比特幣等數字貨幣的底層技術,是一個去中心化的分布式共享賬本。區塊鏈與人工智慧、大數據並稱為金融科技的三大方向。
2.比特幣(Bitcoin)
比特幣是區塊鏈技術的第一個落地應用,最初是一種點對點的電子現金(Bitcoin: A Peer-to-Peer Electronic Cash System)。如今,比特幣已經根據中本聰的思路設計發展成為開源系統,以及構建在其上的數字貨幣網路。
3.中本聰(Satoshi Nakamoto)
中本聰是一個化名,他是比特幣的創始人兼早期開發者,2008年,中本聰在密碼朋克中發表了比特幣的白皮書,Bitcoin: A Peer-to-Peer Electronic Cash System,構建了比特幣系統的基本框架。2009年,他為比特幣系統搭建了一個開源項目,正式宣告了比特幣的誕生。但是當比特幣漸成氣候時,中本聰卻悄然離去,銷聲匿跡於互聯網上。
4.數字貨幣(Token)
區塊鏈最初的應用形式就是數字貨幣,區塊鏈的出現本身也是為數字貨幣服務。目前來說區塊鏈應用最好的領域是金融領域,這是因為區塊鏈技術更適合於為金融場景服務。數字貨幣是電子形式的替代貨幣,它是屬於虛擬世界中的虛擬貨幣。目前全世界發行的數字貨幣有成千上萬種,它們可以通過交易所與現實世界中的貨幣進行交易,或者與其它數字貨幣進行交易。
5.挖礦(Mining)
比特幣被比喻為數字黃金,在網路中,通過競爭計算能力獲得區塊的認可權,進而獲得區塊的代幣獎勵以及交易費的獎勵,而這種方式就是在系統中獲取初始比特幣的方法,就好像當年金銀被從地下開采出來一樣,所以被稱為挖礦。.
6.礦工(Miner)
通過提供算力進行挖礦的節點,就被稱為礦工,當然有時候也是指節點的所有人。
7.公鑰私鑰(Public Keys/Private Keys)
公鑰和私鑰,是非對稱加密演算法的方式,這也是對以前的對稱加密演算法的提高。對稱加密演算法用一套密碼來加解密,知道了加密密碼,也就可以破解密文;而非對稱加密演算法,則是存在兩套密碼,用公鑰來加密,但是用私鑰來解密,這樣就保證了密碼的安全性。在比特幣系統中,私鑰本質上是由32個位元組組成的數組,公鑰和地址的生成都依賴私鑰,有了私鑰就能生成公鑰和地址,就能夠對應使用地址上的比特幣。
8.哈希值(Hash)
哈希演算法將任意長度的二進制值映射為固定長度的較小二進制值, 這個小的二進制值就是哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。哪怕只更改一段明文中的一個字母,隨後產生的哈希值都將差別極大。要找到對應同一哈希值的兩個不同的輸入,從計算的角度來說基本上是不可能的。
9.共識機制(Consensus)
區塊鏈作為一種按時間順序存儲數據的數據結構,可支持不同的共識機制。共識機制是區塊鏈技術的重要組件。區塊鏈共識機制的目標是使所有的誠實節點保存一致的區塊鏈視圖,同時滿足兩個性質:
(1)一致性。所有誠實節點保存的區塊鏈的前綴部分完全相同。
(2)有效性。由某誠實節點發布的信息終將被其他所有誠實節點記錄在自己的區塊鏈中
10.錢包(Wallet)
比特幣的錢包不存余額,在比特幣的世界中也沒有「余額」這個概念,這里的錢包是指保存比特幣地址和私鑰的客戶端或者軟體,可以用它來接收、發送和存儲你的比特幣。
2. 各區塊鏈架構的橫向比較
各區塊鏈架構的橫向比較
時常聽人們談起區塊鏈,從 2009 年比特幣誕生至今,各式各樣的區塊鏈系統或基於區塊鏈的應用不斷被開發出來,並被應用到大量的場景中,而區塊鏈技術本身也在不停地變化和改進。
區塊鏈又被稱為分布式賬本,與之對應的則是中心化賬本,比如銀行。與中心化賬本不同的是,分布式賬本依靠的是將賬本數據冗餘存儲在所有參與節點中,來保證賬本的安全性。簡單地說,區塊鏈會用到三種底層技術:點對點網路技術、密碼學技術和分布式一致性演算法。而通常,區塊鏈系統還會「免費附贈」一種被稱為智能合約的功能。智能合約雖然不是區塊鏈系統的必要組成部分,但由於區塊鏈天生所具備的去中心化特點,使它可以很好地為智能合約提供可信的計算環境。
為了適應不同場景的需求,區塊鏈系統在實際應用的過程中往往會需要進行各種改造,以滿足特定業務的要求,比如身份認證、共識機制、密鑰管理、交易頻次、響應時間、隱私保護、監管要求等。而實際應用區塊鏈系統的公司往往沒有進行這種改造的能力,於是市場上慢慢出現了一些用於定製專用區塊鏈系統的框架,採用這些框架就可以很方便地定製出適用於企業自身業務的區塊鏈系統。
本文將對目前市場上幾個典型的區塊鏈框架進行橫向對比,看看它們都有哪些特點,以及它們之間到底有哪些區別。為了保持對比的公正性,本文將只針對開源的區塊鏈框架進行討論。
各區塊鏈架構的簡單介紹
1、比特幣
比特幣(bitcoin)源自一名叫做中本聰(Satoshi Nakamoto)的人在 2008 年發表的一篇名為《比特幣:一種點對點的電子現金系統》(Bitcoin: A Peer-to-PeerElectronic Cash System)的論文,文中描述了一種被他稱為「比特幣」的電子貨幣及其演算法。在之後的幾年裡,比特幣不斷成長和成熟,而它的底層技術也逐漸被人們認識並抽象出來,這就是區塊鏈技術。比特幣作為區塊鏈的鼻祖,在區塊鏈的大家族中具有舉足輕重的地位,基於比特幣技術開發出的山寨幣(altcoins)的數量有如天上繁星,數不勝數。
從論文中可以得知,中本聰設計比特幣的目的,就是希望能夠實現一種完全基於點對點網路的電子現金系統,使得在線支付能夠直接由一方發起並支付給另外一方,中間不需要通過任何的中介機構。總結來說,他希望比特幣的設計能夠實現以下這些目標:
● 不需要中央機構就可以發行貨幣
● 不需要中介機構就可以支付
● 保持使用者的匿名性
● 交易無法被撤銷
從電子現金系統的角度來看,以上這些目標在比特幣中基本都得到了實現,但是依然有一些技術問題有待解決,比如延展性攻擊、區塊容量限制、區塊分叉、擴展性等。
在應用場景方面,目前大量的數字貨幣項目都是基於比特幣架構來設計的,此外還有一些比較實際的應用案例,比如彩色幣、t? 等。
彩色幣(coloredcoin),通過仔細跟蹤一些特定比特幣的來龍去脈,可以將它們與其他的比特幣區分開來,這些特定的比特幣就叫作彩色幣。它們具有一些特殊的屬性,從而具有與比特幣面值無關的價值,利用彩色幣的這種特性,使得開發者可以在比特幣網路上創建其它的數字資產。彩色幣本身就是比特幣,存儲和轉移不需要第三方,可以利用已經存在的比特幣的基礎。
t? 是比特幣區塊鏈在金融領域的應用,是美國在線零售商 Overstock 推出的基於區塊鏈的私有和公有股權交易平台。
2、以太坊
以太坊(ethereum) 的目標是提供一個帶有圖靈完備語言的區塊鏈,用這種語言可以創建合約來編寫任意狀態轉換功能,用戶只要簡單地用幾行代碼來實現邏輯,就能夠創建一個基於區塊鏈的應用程序,並應用於貨幣以外的場景。
以太坊的設計思想是不直接「支持」任何應用,但圖靈完備的編程語言意味著理論上任意的合約邏輯和任何類型的應用都可以被創建出來。總結來說,以太坊在比特幣的設計目標之外,還需要實現以下幾個目標:
● 圖靈完備的合約語言
● 內置的持久化狀態存儲
目前基於以太坊的合約項目已達到數百個,比較有名的有 Augur、TheDAO、Digix、FirstBlood 等。
Augur 是一個去中心化的預測市場平台,基於以太坊區塊鏈技術。用戶可以用數字貨幣進行預測和下注,依靠群眾的智慧來預判事件的發展結果,可以有效地消除對手方風險和伺服器的中心化風險。
限於篇幅,基於以太坊智能合約平台的項目就不多介紹了。基於以太坊的代碼進行改造的區塊鏈項目也有不少,但幾乎都是閉源項目,只能依靠一些公開的特性來推斷,所以就不在本文展開討論了。
3、Fabric
Fabric 是由 IBM 和 DAH 主導開發的一個區塊鏈框架,是超級帳本的項目成員之一。它的功能與以太坊類似,也是一個分布式的智能合約平台。但與以太坊和比特幣不同的是,它從一開始就是一個框架,而不是一個公有鏈,也沒有內置的代幣(token)。
超級賬本(hyperledger)是 Linux 基金會於 2015 年發起的推進區塊鏈技術和標準的開源項目,加入成員包括:荷蘭銀行(ABN AMRO)、埃森哲(Accenture)等十幾個不同利益體,目標是讓成員共同合作,共建開放平台,滿足來自多個不同行業各種用戶案例,並簡化業務流程。
作為一個區塊鏈框架,Fabric 採用了松耦合的設計,將共識機制、身份驗證等組件模塊化,使之在應用過程中可以方便地替換成自定義的模塊。除此之外,Fabric 還採用了容器技術,將智能合約代碼(chaincode)放在 docker 中運行,從而使得智能合約可以用幾乎任意的高級語言來編寫。
以下是 Fabric 的一些設計目標:
● 模塊化設計,組件可替換
● 運行於 docker 的智能合約
目前已經有不少採用 Fabric 架構進行開發的概念驗證(POC)項目在實施過程中,其中不乏一些金融機構做出的嘗試,不過由於項目剛剛起步,還沒有比較成熟的落地應用。
4、DNA
DNA(Distributed Networks Architecture,分布式網路架構),是由總部位於上海的區塊鏈創業公司「分布科技」開發的區塊鏈架構,可以同時支持公有鏈、聯盟鏈、私有鏈等不同應用類型和場景,並快速與業務系統集成。
與以太坊、Fabric不同的是,DNA 在系統底層實現了對多種數字資產的支持,用戶可以直接在鏈上創建自己的資產類型,並用智能合約來控制它的發行邏輯。對於絕大部分的區塊鏈應用場景,數字資產是必不可少的,而為每一種數字資產都開發一套基於智能合約的轉賬、發行邏輯是非常浪費且低效的。因此,由區塊鏈底層提供直接的數字資產功能是十分必要的。而對於那些完全不需要數字資產的應用場景,同樣可以基於 DNA 提供的智能合約架構來編寫任意的自定義邏輯來實現。
DNA 的設計目標主要有以下幾點:
● 多種數字資產的底層支持
● 圖靈完備的智能合約和狀態持久化
● 跨鏈互操作性
● 交易的最終性
目前已有不少金融機構採用 DNA 架構來進行區塊鏈概念驗證產品的開發。除此之外,還有一些已經落地的區塊鏈項目,如小蟻區塊鏈、法鏈等。
小蟻(antshares)是一個定位於資產數字化的公有鏈,將實體世界的資產和權益進行數字化,通過點對點網路進行登記發行、轉讓交易、清算交割等金融業務的去中心化網路協議。它採用社區化開發的模式,在架構上與 DNA 保持一致,從而可以與任何基於DNA 的區塊鏈系統發生跨鏈互操作。
法鏈是全球第一個大規模商用的法律存證區塊鏈,一個底層基於 DNA區塊鏈技術,並由多個機構參與建立和運營的證據記錄和保存系統。該系統沒有中心控制點,且數據一旦錄入,單個機構或節點無法篡改,從而滿足司法存證的要求。
5、Corda
Corda 是由一家總部位於紐約的區塊鏈創業公司 R3CEV 開發的,由其發起的 R3區塊鏈聯盟,至今已吸引了數十家巨頭銀行的參與,其中包括富國銀行、美國銀行、紐約梅隆銀行、花旗銀行、德國商業銀行、德意志銀行、匯豐銀行、三菱 UFJ 金融集團、摩根士丹利、澳大利亞國民銀行、加拿大皇家銀行、瑞典北歐斯安銀行(SEB)、法國興業銀行等。
從 R3 成員的組成上也可以看出,Corda 是一款專門用於銀行與銀行間業務的區塊鏈架構。盡管 R3 自己聲稱 Corda 不是區塊鏈,但從各項特徵來看,它具備區塊鏈的一些特性。
技術對比
1、數字資產
接下來,將對前文中提到的這些區塊鏈框架進行一系列的技術對比,並從多個維度展開介紹它們的區別與相似之處。
區塊鏈的內置代幣通常是一種經濟激勵模型和防止垃圾交易的手段。比特幣天生就有且只有一種內置代幣,所以在比特幣系統中所有的「交易」本質上都是轉賬行為,除非通過外部的協議層來給比特幣增加額外的數字資產。
以太坊和 DNA 具有內置代幣,它們的作用除了以上提到的經濟激勵和防止垃圾交易之外,還具有為系統內置功能提供一個收費的渠道。比如以太坊的智能合約運行需要消耗 GAS,而 DNA 的數字資產創建也需要消耗一定的代幣。
以太坊和 Fabric 沒有內置的多種數字資產支持,而是通過智能合約來實現相應的功能。這種方式的好處在於,系統設計可以做到非常簡潔,而且資產的行為可以任意指定,自由度極高。然而這樣的設計也會帶來一系列的負面影響,比如所有的資產創建者不得不自己編寫重復的業務邏輯,而用戶也沒有辦法通過統一的方式去操作自己的資產。
相比之下,DNA 和 Corda 採用了在底層支持多種數字資產的方式,讓資產創建者可以方便地創建自己的資產類型,而用戶也可以在同一個客戶端中管理所有的資產。對於邏輯更加復雜一點的業務場景來說,他們同樣可以利用智能合約來強化資產的功能,或者創建一種與資產無關的業務邏輯。
2、賬戶系統
UTXO(Unspent Transaction Output)是這樣一種機制:每一枚數字貨幣都會被登記在一個賬戶的所有權之下,一枚數字貨幣有兩種狀態,即要麼還沒有被花費,要麼已經被花費。當需要使用一枚數字貨幣的時候,就將它的狀態標記為已經花費,並創造一枚新的與之等額的數字貨幣,將它的所有權登記到新的賬戶之下。在這個過程中,被標記為已花費的數字貨幣就被稱為交易的輸入,而創造出來的新的數字貨幣被稱為交易的輸出,在一筆交易中,可以包含多個輸入和多個輸出,但是輸入之和與輸出之和必須相等。要計算一個賬戶的余額時,只要將所有登記在該賬戶下的數字貨幣的面額相加即可得出。
比特幣和 Corda 就採用了 UTXO 這樣一種賬戶機制,而以太坊則採用了更加直觀的余額機制:每個賬戶有一個狀態,狀態中直接記錄了賬戶當前的余額,轉賬的邏輯就是從一個賬戶中減去一部分余額,並在另一個賬戶中加上相應的余額,減去的部分和加上的部分必須相等。DNA 在賬戶機制上同時兼容這兩種模式。
那麼 UTXO 模式和余額模式,究竟有什麼優缺點呢?UTXO 最大的好處就是,基於 UTXO 的交易可以並行驗證且任意排序,因為所有的 UTXO 之間都是沒有關聯的,這對區塊鏈未來的伸縮性是有很大幫助的,而基於余額的設計就沒有這個優勢了;反過來,余額設計的優點是設計思想非常簡潔和直覺化,便於程序實現,特別是在智能合約中,要處理 UTXO 的狀態是非常困難的。這也是為什麼以智能合約為主要功能的以太坊選擇余額設計的原因,而比特幣、OnchainDNA、Corda 這些以數字資產為核心的架構則更傾向於 UTXO 設計。
關於身份認證,比特幣和以太坊基本沒有身份認證的設計,原因很簡單,因為這兩者的設計思想都是強調隱私和匿名,而反對監管和中心化,而身份認證就勢必要引入一些中心或者弱化的中心機構。Fabric、DNA 和 Corda 不約而同地選擇了採用數字證書來對用戶身份進行認證,原因在於這三者都有應用於現有金融系統的設計目標,而金融系統必然要考慮合規化並接受監管,此外現有的金融系統已經大范圍地採用數字證書方案,這樣便可以和區塊鏈系統快速集成。
3. 銆愬繀鐪嬨慐TH浣庨庨櫓濂楀埄鐨勪竴縐嶆柟娉
璇濅笉澶氳達紝鐩存帴涓婂共璐с
榪戜竴孌靛叧娉‥OS浼楃規瘮杈冨氾紝鐪嬪埌鏈夊皬浼欎即鏍規嵁EOS/ETH鐨勬暟鎹錛屽彂浜嗗備笅涓寮犲浘錛
鍥句腑鏄庢樉鍙浠ョ湅鍑烘定璺屽懆鏈熷熀鏈浠23灝忔椂涓轟竴涓杞鍥烇紝濡傛灉鍦ㄦ瘡闂撮殧23灝忔椂楂樺崠浣庝拱涓嬈★紝綆楁槸涓縐嶆瘮杈冪ǔ濡ョ殑鑾峰埄鍔炴硶銆
浣犱竴瀹氬緢濂藉囷紝榪欑湡鐨勬槸涓涓瑙勫緥鍚楋紵鎴栬呰翠負浠涔堟槸榪欐牱鍛錛
榪欒繕瑕佷粠EOS浼楃瑰紑濮嬭磋搗銆侭M褰撴椂澶╂墠鐨勬彁鍑轟簡EOS浼楃圭殑鎯蟲硶錛屼互23灝忔椂涓哄懆鏈燂紝鎸佺畫涓騫達紝姝ょ嶄紬絳規柟寮忓彲璋撳墠鏃犲彜浜恆
鎴戠寽嫻婤M鏄涓嶆槸鑰冭檻鍖哄潡閾句箖鏄鍏ㄧ悆鍏卞悓鍏蟲敞鐨勯」鐩錛屽洜姝ゆ妸浼楃規椂闂村滻瀹氬湪鍑犵偣浼間箮閮戒笉鍚堥傦紝閭e共鑴嗚疆嫻侊紝姣忎釜鏃墮棿閮借疆鍒般
鐜板湪鎶奅TH鎹㈡垚EOS鏈変袱縐嶆柟寮忥紝涓鏄鍦ㄤ簩綰у競鍦轟拱鍏ワ紝浜屾槸鍙備笌涓綰у競鍦虹殑浼楃廣
鍋囪句竴綰у競鍦轟紬絳圭殑浠鋒牸鎸佺畫楂樹簬浜岀駭甯傚満涔板叆錛岄偅涔堝弬涓庝紬絳圭殑浜哄繀鐒惰秺鏉ヨ秺灝戱紝璁╁弬涓庝竴綰у競鍦轟紬絳圭殑浠鋒牸鎱㈡參闄嶄綆銆傞檷浣庡埌浠涔堢▼搴﹀憿錛熸瘮杈冨悎鐞嗙殑緇撴灉鏄錛氫竴綰у競鍦轟紬絳圭殑浠鋒牸鐣ヤ綆浜庢垨絳変簬浜岀駭甯傚満鐨勪環鏍箋
涓句竴涓渚嬪瓙灝辨槑鐧戒簡錛屼互涓嬫暟鎹浠呬負璇存槑鐢ㄣ
姣斿傚湪浜岀駭甯傚満錛堝氨鏄鍦ㄤ氦鏄撴墍涔板叆錛1涓狤TH鍙浠ユ崲40涓狤OS錛屼絾鏄鍦ㄤ竴綰у競鍦猴紙鍙備笌浼楃癸級1涓狤TH鍙浠ユ崲41涓狤OS錛岄偅蹇呯劧鏈変漢浼氱敤1涓狤TH鍙備笌浼楃規崲鏉41涓狤OS錛岀劧鍚庡湪浜岀駭甯傚満鎹㈠洖ETH錛岃繖鏍峰湪涓嶈冭檻鎵嬬畫璐圭殑鎯呭喌涓嬶紝1涓狤TH灝卞彉鎴愪簡1025涓狤TH錛岃幏鍒╀簡25%銆
榪戞湡闅忕潃EOS浠鋒牸鐨勮蛋楂橈紝姣忓ぉ鍙備笌浼楃圭殑ETH澶氳揪4涓囧氫釜銆
榪欓噷鑲瀹氭湁涓嶅皯姣斾緥鐨勮祫閲戞槸鍦ㄨ繘琛屼竴綰у競鍦哄拰浜岀駭甯傚満鐨勬惉鐮栧楀埄銆
濡傛灉鐭ラ亾浜嗚繖涓鍘熺悊錛岄偅涔堝彲浠ュ垎鏋愬嚭鍦‥OS鐨勪紬絳規椂闂寸偣灝辨槸涓涓狤OS浠鋒牸鐨勭浉瀵逛綆鐐癸紝榪欐椂鐢‥TH鎹㈡垚EOS錛岀瓑榪囦竴灝忔墊椂闂寸瓑EOS娑ㄤ笂鍘伙紝鍐嶆妸EOS鎹㈠洖ETH錛屽疄鐜板楀埄銆
浠ユ渶榪戜袱鍛ㄥ氱殑鏁版嵁鏉ュ垎鏋愶紝鍋囪懼湪姣忓ぉ浼楃圭殑鏃墮棿鐐規妸ETH鎹㈡垚EOS錛屽湪涓灝忔椂鍚庢妸EOS鎹㈠洖ETH錛屽彲浠ョ泩鍒╁氬皯鍛錛
緇忚繃璁$畻錛屾渶榪18澶╃殑鏀剁泭鎬昏′負36%錛岀湅璧鋒潵涓嶇畻澶氾紝濂藉勬槸椋庨櫓杈冨皬銆
濡傛灉璧勯噾閲忚緝澶ф敹鐩婄粷瀵規敹鐩婁篃姣旇緝鍙瑙傘
鍗充嬌鍙戠敓椋庨櫓錛孍OS鍜孍TH涔熼兘鏄澶у竵縐嶏紝涔熶笉浼氱牳鍦ㄦ墜閲屻
鐢變簬鏃墮棿浠撲績錛屾垜鍚庣畫浼氭洿鏂頒笂榪拌〃鏍礆紝琛ュ厖EOS浼楃瑰綋鏃剁殑浠鋒牸鍜屼紬絳1灝忔椂鍚庣殑浠鋒牸銆
鏈鍚庡皬緇撲竴涓嬫搷浣滄ラわ細
鈶犲湪EOS鐨勪紬絳圭綉絝欐煡璇㈡瘡澶〦OS鐨勪紬絳規椂闂
鈶″湪浼楃規椂闂寸偣錛屽湪浜ゆ槗緗戠珯錛堝傚竵瀹夛級鐢‥TH涔板叆EOS
鈶1灝忔椂鍚庡啀鎶奅OS鎹㈠洖ETH
榪欐槸涓縐嶄綆椋庨櫓濂楀埄鐨勬柟寮忥紝浣嗗苟涓嶄唬琛ㄦ病鏈夐庨櫓銆傛湁鏃朵簩綰у競鍦虹殑娉㈠姩姣旇緝澶э紝鍑虹幇鏆傛椂鐨勪簭鎹熶篃鏄姝e父鐨勩
濡傚湪鍥句腑鍙浠ョ湅鍒幫紝鍦4鏈29鏃ワ紝甯傚満娉㈠姩鏋佸ぇ錛屽湪浼楃瑰悗鐨勪竴涓灝忔椂鍐匛OS/ETH涓嬭穼浜41%銆
涓嶈繃鎴戜滑鍋氫簨鎯咃紝鍙瑕佸仛姒傜巼澶х殑浜嬫儏鍗沖彲銆傚傛灉鍍忛摱琛屽瓨嬈鵑偅鏍鳳紝鉶界劧鍑犱箮鏃犻庨櫓錛屼絾騫村寲鏀剁泭鐜囧彧鏈夊尯鍖175%銆
濡傛灉鐢ㄧ悊鎬ф垬鑳滀漢鎹熷け鍘屾伓鐨勬劅鎬э紝閭d箞浜虹殑鑳藉姏杈圭晫鏃犵枒灝辨墿澶т簡涓浜涖
榪欎篃鏄鍊熼壌浜嗛噺鍖栦氦鏄撶殑鎬濊礬錛屽傛灉紜璁や竴浠朵簨鎯呮槸澶ф傜巼鑾峰埄錛岄偅灝卞︿範鍐峰啺鍐扮殑璁$畻鏈猴紝姣鏃犳劅鎯呯殑鎵ц屽嵆鍙銆
榪欓噷鏈変竴鐐歸渶瑕佽存槑錛氱幇鍦ㄨ窛紱籈OS涓葷綉涓婄嚎榪樻湁鏈鍚庝竴涓鏈堬紝鎵浠ヨ繖縐嶄綆椋庨櫓濂楀埄鐨勫姙娉曞彧鑳藉啀鎸佺畫4鍛錛屾湁鍏磋叮灝濊瘯鐨勫皬浼欎即鍙瑕佹姄緔т簡銆
ETH鐨勬寲鐭垮師鐞嗕笌鏈哄埗
寰呭瓧闂轟腑寮鍙戜簡涓闂ㄥ尯鍧楅摼鏂歸潰鐨勮劇▼錛氥婃繁鍏ユ祬鍑篍TH鍘熺悊涓庢櫤鑳藉悎綰﹀紑鍙戙嬶紝椹鑹鑰佸笀璁叉巿銆傛ゆ枃闆嗚板綍鎴戠殑瀛︿範絎旇般
璇劇▼鍏8鑺傝俱傚叾涓錛屽墠鍥涜捐睧TH鍘熺悊錛屽悗鍥涜捐叉櫤鑳藉悎綰︺
絎鍥涜懼垎涓轟笁閮ㄥ垎錛
榪欑瘒鏂囩珷鏄絎鍥涜劇涓閮ㄥ垎鐨勫︿範絎旇幫細Ethash綆楁硶銆
榪欒妭璇句粙緇嶇殑鏄浠ュお鍧婇潪甯告牳蹇冪殑鎸栫熆綆楁硶銆
鍦ㄤ粙緇岴thash綆楁硶涔嬪墠錛屽厛璁蹭竴浜涜儗鏅鐭ヨ瘑銆傚叾瀹炲尯鍧楅摼鎶鏈涓昏佹槸瑙e喅涓涓鍏辮瘑鐨勯棶棰橈紝鑰屽叡璇嗘槸涓涓灞傛″緢涓板瘜鐨勬傚康錛岃繖閲屾妸鑼冪暣緙╁皬錛屽彧璁ㄨ哄尯鍧楅摼涓鐨勫叡璇嗐
浠涔堟槸鍏辮瘑錛
鍦ㄥ尯鍧楅摼涓錛屽叡璇嗘槸鎸囧摢涓鑺傜偣鏈夎拌處鏉冦傜綉緇滀腑鏈夊氫釜鑺傜偣錛岀悊璁轟笂閮芥湁璁拌處鏉冿紝棣栧厛闈涓寸殑闂棰樺氨鏄錛屽埌搴曡皝鏉ヨ板笎銆傚彟涓涓闂棰橈紝浜ゆ槗涓瀹氭槸鏈夐『搴忕殑錛屽嵆璋佸湪鍓嶏紝鍓嶅湪鍚庛傝繖鏍峰彲浠ヨВ鍐沖弻鑺遍棶棰樸傚尯鍧楅摼涓鐨勫叡璇嗘満鍒跺氨鏄瑙e喅榪欎袱涓闂棰橈紝璋佽板笎鍜屼氦鏄撶殑欏哄簭銆
浠涔堟槸宸ヤ綔閲忚瘉鏄庣畻娉
涓轟簡鍐沖畾浼楀氳妭鐐逛腑璋佹潵璁板笎錛屽彲浠ユ湁澶氱嶆柟妗堛傚叾涓錛屽伐浣滈噺璇佹槑灝辮╄妭鐐瑰幓綆椾竴涓鍝堝笇鍊礆紝婊¤凍闅懼害鐩鏍囧肩殑鑳滃嚭銆傝繖涓榪囩▼鍙鑳介氳繃鏋氫婦璁$畻錛岃皝綆楃殑蹇錛岃皝鑾瘋儨鐨勬傜巼澶с傛敹鐩婅窡鑺傜偣鐨勫伐浣滈噺鏈夊叧錛岃繖灝辨槸宸ヤ綔閲忚瘉鏄庣畻娉曘
涓轟粈涔堣佸紩鍏ュ伐浣滈噺璇佹槑綆楁硶錛
Hash Cash 鐢盇dam Back 鍦1997騫村彂琛錛屼腑鏈鑱棣栨″湪姣旂壒甯佷腑搴旂敤鏉ヨВ鍐沖叡璇嗛棶棰樸
瀹冩渶鍒濈敤鏉ヨВ鍐沖瀮鍦鵑偖浠墮棶棰樸
鍏朵富瑕佽捐℃濇兂鏄閫氳繃鏆村姏鎼滅儲錛屾壘鍒頒竴縐岯lock澶撮儴緇勫悎錛堥氳繃璋冩暣nonce錛変嬌寰楀祵濂楃殑SHA256鍗曞悜鏁e垪鍊艱緭鍑哄皬浜庝竴涓鐗瑰畾鐨勫礆紙Target錛夈
榪欎釜綆楁硶鏄璁$畻瀵嗛泦鍨嬬畻娉曪紝涓寮濮嬩粠CPU鎸栫熆錛岃漿鑰屼負GPU錛岃漿鑰屼負FPGA錛岃漿鑰屼負ASIC錛屼粠鑰屼嬌寰楃畻鍔涘彉寰楅潪甯擱泦涓銆
綆楀姏闆嗕腑灝變細甯︽潵涓涓闂棰橈紝鑻ユ湁涓涓鐭挎睜鐨勭畻鍔涜揪鍒51%錛屽垯瀹冨氨浼氭湁浣滄伓鐨勯庨櫓銆傝繖鏄姣旂壒甯佺瓑浣跨敤宸ヤ綔閲忚瘉鏄庣畻娉曠殑緋葷粺鐨勫紛絝銆傝屼互澶鍧婂垯鍚稿彇浜嗚繖涓鏁欒錛岃繘琛屼簡涓浜涙敼榪涳紝璇炵敓浜咵thash綆楁硶銆
Ethash綆楁硶鍚稿彇浜嗘瘮鐗瑰竵鐨勬暀璁錛屼笓闂ㄨ捐′簡闈炲父涓嶅埄鐢ㄨ$畻鐨勬ā鍨嬶紝瀹冮噰鐢ㄤ簡I/O瀵嗛泦鐨勬ā鍨嬶紝I/O鎱錛岃$畻鍐嶅揩涔熸病鐢ㄣ傝繖鏍鳳紝瀵逛笓鐢ㄩ泦鎴愮數璺鍒欎笉鏄閭d箞鏈夋晥銆
璇ョ畻娉曞笹PU鍙嬪ソ銆備竴鏄鑰冭檻濡傛灉鍙鏀鎸丆PU錛屾媴蹇冩槗琚鏈ㄩ┈鏀誨嚮錛涗簩鏄鐜板湪鐨勬樉瀛橀兘寰堝ぇ銆
杞誨瀷瀹㈡埛絝鐨勭畻娉曚笉閫備簬鎸栫熆錛屾槗浜庨獙璇侊紱蹇閫熷惎鍔
綆楁硶涓錛屼富瑕佷緷璧栦簬Keccake256 銆
鏁版嵁婧愰櫎浜嗕紶緇熺殑Block澶撮儴錛岃繕寮曞叆浜嗛殢鏈烘暟闃靛垪DAG錛堟湁鍚戦潪寰鐜鍥撅級錛圴italik鎻愬嚭錛
縐嶅瓙鍊煎緢灝忋傛牴鎹縐嶅瓙鍊肩敓鎴愮紦瀛樺礆紝緙撳瓨灞傜殑鍒濆嬪間負16M錛屾瘡涓涓栦唬澧炲姞128K銆
鍦ㄧ紦瀛樺眰涔嬩笅鏄鐭垮伐浣跨敤鐨勬暟鎹鍊礆紝鏁版嵁灞傜殑鍒濆嬪兼槸1G錛屾瘡涓涓栦唬澧炲姞8M銆傛暣涓鏁版嵁灞傜殑澶у皬鏄128Bytes鐨勭礌鏁板嶃
妗嗘灦涓昏佸垎涓轟袱涓閮ㄥ垎錛屼竴鏄疍AG鐨勭敓鎴愶紝浜屾槸鐢℉ashimoto鏉ヨ$畻鏈緇堢殑緇撴灉銆
DAG鍒嗕負涓変釜灞傛★紝縐嶅瓙灞傦紝緙撳瓨灞傦紝鏁版嵁灞傘備笁涓灞傛℃槸閫愭笎澧炲ぇ鐨勩
縐嶅瓙灞傚緢灝忥紝渚濊禆涓婁釜涓栦唬鐨勭嶅瓙灞傘
緙撳瓨灞傜殑絎涓涓鏁版嵁鏄鏍規嵁縐嶅瓙灞傜敓鎴愮殑錛屽悗闈㈢殑鏍規嵁鍓嶉潰鐨勪竴涓鏉ョ敓鎴愶紝瀹冩槸涓涓涓茶屽寲鐨勮繃紼嬨傚叾鍒濆嬪ぇ灝忔槸16M錛屾瘡涓涓栦唬澧炲姞128K銆傛瘡涓鍏冪礌64瀛楄妭銆
鏁版嵁灞傚氨鏄瑕佺敤鍒扮殑鏁版嵁錛屽叾鍒濆嬪ぇ灝1G錛岀幇鍦ㄧ害2涓狦錛屾瘡涓鍏冪礌128瀛楄妭銆傛暟鎹灞傜殑鍏冪礌渚濊禆緙撳瓨灞傜殑256涓鍏冪礌銆
鏁翠釜嫻佺▼鏄鍐呭瓨瀵嗛泦鍨嬨
棣栧厛鏄澶撮儴淇℃伅鍜岄殢鏈烘暟緇撳悎鍦ㄤ竴璧鳳紝鍋氫竴涓狵eccak榪愮畻錛岃幏寰楀垵濮嬬殑鍗曞悜鏁e垪鍊糓ix[0]錛128瀛楄妭銆傜劧鍚庯紝閫氳繃鍙﹀栦竴涓鍑芥暟錛屾槧灝勫埌DAG涓婏紝鑾峰彇涓涓鍊礆紝鍐嶄笌Mix[0]娣峰悎寰楀埌Mix[1]錛屽傛ゅ驚鐜64嬈★紝寰楀埌Mix[64]錛128瀛楄妭銆
鎺ヤ笅鏉ョ粡榪囧悗澶勭悊榪囩▼錛屽緱鍒 mix final 鍊礆紝32瀛楄妭銆傦紙榪欎釜鍊煎湪鍓嶉潰涓や釜灝忚妭銆 009錛欸HOST鍗忚 銆嬨併 010錛氭惌寤烘祴璇曠綉緇 銆嬮兘鍑虹幇榪囷級
鍐嶇粡榪囪$畻錛屽緱鍑虹粨鏋溿傛妸瀹冨拰鐩鏍囧肩浉姣旇緝錛屽皬浜庡垯鎸栫熆鎴愬姛銆
闅懼害鍊煎ぇ錛岀洰鏍囧煎皬錛屽氨瓚婇毦錛堝墠闈㈤渶瑕佺殑 0 瓚婂氾級銆
榪欎釜榪囩▼涔熸槸鎸栫熆闅撅紝楠岃瘉瀹規槗銆
涓洪槻姝㈢熆鏈猴紝mix function鍑芥暟涔熸湁鏇存柊榪囥
闅懼害鍏寮忚佽句歡鎴鍥俱
鏍規嵁涓婁竴涓鍖哄潡鐨勯毦搴︼紝鏉ユ帹綆椾笅涓涓銆
浠庡叕寮忕湅鍑猴紝闅懼害鐢變笁閮ㄥ垎緇勬垚錛岄栧厛鏄涓婁竴鍖哄潡鐨勯毦搴︼紝鐒跺悗鏄綰挎ч儴鍒嗭紝鏈鍚庢槸闈炵嚎鎬ч儴鍒嗐
闈炵嚎鎬ч儴鍒嗕篃鍙闅懼害鐐稿脊錛屽湪榪囦簡涓涓鐗瑰畾鐨勬椂闂磋妭鐐瑰悗錛岄毦搴︽槸鎸囨暟涓婂崌銆傚傛よ捐★紝鍏惰儗鍚庣殑鐩鐨勬槸錛屽湪浠ュお鍧婄殑欏圭洰鍛ㄦ湡涓錛屽湪澶ч兘浼氱増鏈鍚庣殑涓嬩竴涓鐗堟湰涓錛岃佽漿鎹㈠叡璇嗭紝鐢盤OW鍙樹負POW銆丳OS娣峰悎鍨嬬殑鍗忚銆傚熀閲戜細鐨勬剰鎬濆彲鑳芥槸浣垮緱鎸栫熆鍙樺緱娌℃剰鎬濄
闅懼害鏇茬嚎鍥炬樉紺猴紝2017騫10鏈堬紝闅懼害鏈変竴涓澶х殑涓嬮檷錛屽栧姳涔熺敱5涓鍙樹負3涓銆
鏈鑺備富瑕佷粙緇嶄簡Ethash綆楁硶錛屼笉瓚充箣澶勶紝璇鋒壒璇勬寚姝c
鍥藉唴eth鍗佸ぇ鐭挎睜鎺掑悕
浠ュお鍧婄殑鎸栫熆榪囩▼涓庢瘮鐗瑰竵鐨勫嚑涔庢槸涓鏍風殑銆侲TH閫氳繃鎸栫熆浜х敓錛屽鉤鍧囨瘡15縐掍駭鐢1涓鍧楋紝鎸栫熆鐨勬椂鍊欙紝鐭垮伐浣跨敤璁$畻鏈哄幓璁$畻涓閬撳嚱鏁拌$畻棰樼殑絳旀堬紝鐩村埌鏈夌熆宸ヨ$畻鍒版g『絳旀堝嵆瀹屾垚鍖哄潡鐨勬墦鍖呬俊鎮錛岃屼綔涓虹涓涓璁$畻鍑烘潵鐨勭熆宸ュ皢浼氬緱鍒3鏋欵TH鐨勫栧姳銆
濡傛灉鐭垮伐A鐜囧厛綆楀嚭姝g『鐨勭瓟妗堬紝閭d箞鐭垮伐A灝嗚幏寰椾互澶甯佷綔涓哄栧姳錛屽苟鍦ㄥ叏緗戝箍鎾鍛婅瘔鎵鏈夌熆宸モ滄垜宸茬粡鎶婄瓟妗堢畻鍑烘潵浜嗏濆苟璁╂墍鏈夊湪絳旈樼殑鐭垮伐浠榪涜岄獙璇佸苟鏇存柊姝g『絳旀堛傚傛灉鐭垮伐B綆楀嚭姝g『絳旀堬紝閭d箞鍏朵粬鐭垮伐灝嗕細鍋滄㈠綋鍓嶇殑瑙i樿繃紼嬶紝璁板綍姝g『絳旀堬紝騫跺紑濮嬪仛涓嬩竴閬撻橈紝鐩村埌綆楀嚭姝g『絳旀堬紝騫朵竴鐩撮噸澶嶆よ繃紼嬨
鐭垮伐鍦ㄨ繖涓娓告垙涓寰堥毦浣滃紛銆備粬浠鏄娌℃硶浼瑁呭伐浣滃張寰楀嚭姝g『絳旀堛傝繖灝辨槸涓轟粈涔堣繖涓瑙i樼殑榪囩▼琚縐頒負鈥滃伐浣滈噺璇佹槑鈥濓紙POW錛夈
瑙i樼殑榪囩▼澶х害姣12-15縐掞紝鐭垮伐灝變細鎸栧嚭涓涓鍖哄潡銆傚傛灉鐭垮伐鎸栫熆鐨勯熷害榪囧揩鎴栬呰繃鎱錛岀畻娉曚細鑷鍔ㄨ皟鏁撮樼洰鐨勯毦搴︼紝鎶婂嚭鍧楅熷害淇濇寔鍦13縐掑乏鍙熾
鐭垮伐鑾峰彇榪欎簺ETH甯佹槸鏈夐殢鏈烘х殑錛屾寲鐭跨殑鏀剁泭鍙栧喅浜庢姇鍏ョ殑綆楀姏錛屽氨鐩稿綋浣犵殑璁$畻鏈鴻秺澶氾紝浣犵瓟棰樼殑姝g『鐨勬傜巼涔熷氨瓚婇珮錛屾洿瀹規槗鑾峰緱鍖哄潡濂栧姳銆
1銆 浠ュお鍧
瀹冩槸鍏ㄧ悆棰嗗厛鐨勬瘮鐗瑰竵鏁版嵁鏈嶅姟鎻愪緵鍟嗗拰鐭挎睜鍜岄挶鍖呰В鍐蟲柟妗堟彁渚涘晢銆備粠2015騫村紑濮嬶紝鍥㈤槦浠庡尯鍧楁祻瑙堝櫒絳夎屼笟鍩虹璁炬柦鍏ユ墜錛岃嚧鍔涗簬鏋勫緩鍚勪釜瀛愰嗗煙鐨勬柊鏍囧噯銆傚搧鐗屽彲浠ュ湪閽卞寘銆佺熆奼犮佽屾儏銆佽祫璁絳夐嗗煙鐪嬪埌銆
2銆丗2Pool
F2Pool 鏄涓鍥芥渶澶х殑姣旂壒甯佸拰鑾辯壒甯佹寲鐭跨郴緇熺熆奼犱箣涓銆傛暟鎹鏄劇ず錛岄奔奼犵洰鍓嶆槸鍏ㄧ悆絎浜屽ぇ鐭挎睜錛屼粎嬈′簬鋩傝殎鐭挎睜銆
3銆侀挶鍗
紕ч煶鎴愮珛浜2017騫11鏈堬紝鐢卞師鏍稿績鍥㈤槦鎵撻犮傚洟闃熺殑浜у搧鍜屾妧鏈杈撳嚭鐜板湪鏈嶅姟浜庡叏緗戝ぇ閮ㄥ垎姣旂壒甯佺畻鍔涳紱涓ゅ勾鍐呮墦閫犱簡澶氫釜浜у搧錛岃法瓚婂尯鍧楅摼嫻忚堝櫒銆佺熆奼犮侀挶鍖呯瓑澶氫釜鍨傜洿棰嗗煙銆傜ⅶ闊崇熆奼犳槸涓涓涓撲笟鐨勭熆奼狅紝鏀鎸佹墍鏈変富嫻佸竵縐嶇殑鎸栫熆銆傜洰鍓嶆敮鎸佺殑甯佺嶅寘鎷錛欱TC銆丅CH銆丅SV銆乑EC銆丩TC銆丒TH銆丏CR銆丏ASH銆乆MR銆
4銆佺伀甯佺熆奼
鐏甯佺熆奼犳槸鍏ㄧ悆棣栦釜闆嗘暟瀛楄祫浜ф寲鎺樹笌浜ゆ槗浜庝竴浣撶殑鐭挎睜騫沖彴銆傚畠閲囩敤鍩轟簬POW鎸栫熆鏈哄埗鐨勫叏鏂板垎閰嶆ā鍨婩PPS銆傚競鍦轟笂澶ч儴鍒嗙熆奼犻噰鐢ㄤ紶緇熺殑PPS緇撶畻鍜屽垎閰嶆ā寮忋傜浉姣斾箣涓嬶紝鐏甯佺殑FPPS妯″紡闄嶄綆浜嗙熆宸ョ殑鎵撳寘璐癸紝姣忎釜鐭垮伐鍙浠ュ炲姞5%宸﹀彸鐨勫埄娑︺傜伀甯佺熆奼犻氳繃榪欎竴涓炬帾錛屽皢鍏朵笌鍏朵粬鐭挎睜鍖哄垎寮鏉ワ紝鍚稿紩鐭垮伐鍏ラ┗銆
5銆佽殏鋩佺熆奼
鋩傝殎鐭挎睜鏄疊itTaiwan鍒╃敤澶ч噺璧勬簮寮鍙戠殑楂樻晥鏁板瓧璐у竵鐭挎睜銆傝嚧鍔涗簬涓虹熆宸ユ彁渚涙洿鍙嬪ソ鐨勭晫闈銆佹洿瀹屽杽鐨勫姛鑳姐佹洿澶氱殑浣跨敤鏂歸潰銆佹洿涓板帤閫忔槑鐨勬敹鐩娿傝揣甯佺殑鍙戝睍鍋氬嚭鏇村氳礎鐚銆傝殏鋩佺熆奼犳槸涓涓楂樻晥鐨勬暟瀛楄揣甯佺熆奼狅紝鑷村姏浜庝負鐭垮伐鎻愪緵鏇村弸濂界殑鐣岄潰銆佹洿濂界殑鍔熻兘銆佹洿渚挎嵎鐨勪嬌鐢ㄥ拰鏇翠赴鍘氶忔槑鐨勬敹鐩娿傝殏鋩佺熆奼犱負澶氱嶆暟瀛楄揣甯佹彁渚涙瘮鐗瑰竵銆佽幈鐗瑰竵銆佷互澶鍧婃寲鐭挎湇鍔★紝鏀鎸丳PS銆丳PLNS銆丼OLO絳夊氱嶆敮浠樻柟寮忋
6銆佸井姣旂壒
寰姣旂壒鏄涓瀹朵笓涓氱殑鏁板瓧璐у竵鎶鏈鏈嶅姟鍟嗐傚叾鏈嶅姟鑼冨洿鍖呮嫭鏁板瓧璐у竵浜ゆ槗騫沖彴銆佹暟瀛楄揣甯佺熆奼犮佷簯鎸栫熆鍚堢害銆傛垚絝嬩簬2016騫5鏈堬紝鍚屽勾6鏈堜笂綰挎瘮鐗瑰竵鐭挎睜錛11鏈堜笂綰誇簯鎸栫熆浜у搧銆 2017騫3鏈堬紝寰姣旂壒鑾峰緱鐢盉itTaiwan棰嗘姇鐨2000涓囧厓A杞鋙嶈祫錛屼互鎷撳睍浜ゆ槗鎵涓氬姟銆 6鏈堬紝寰姣旂壒鍗沖皢涓婄嚎鏁板瓧璐у竵浜ゆ槗騫沖彴銆
7銆58COIN絎浜岀被鏄鍏朵粬鐭挎睜錛屽備互澶鍧婄熆奼犮丼park鐭挎睜錛涚涓夌被鏄浜ゆ槗鎵鐭挎睜錛屽傜伀甯佺熆奼犮丱K鐭挎睜銆佸竵瀹夌熆奼犮傚竵瀹変綔涓烘柊涓栫晫鐨勨滄暟瀛楃粡嫻庢搷浣滅郴緇熲濓紝鍦ㄦ暟瀛楄祫浜т氦鏄撴祦閫氶嗗煙錛屽湪鍖哄潡閾懼競鍦烘暀鑲查嗗煙錛屽湪鍘諱腑蹇冨寲嫻侀氭帰緔㈤嗗煙錛岃祫浜ф祦閫氬鉤鍙板湪浜戣$畻棰嗗煙錛屽湪甯傚満鍜屾暟瀛楄祫浜уぇ鏁版嵁棰嗗煙錛屽湪閲戣瀺琛嶇敓鍝侀嗗煙錛岀瓑鐢熸佺郴緇燂紝閮藉彇寰椾簡寰堝ソ鐨勬垚緇╋紝涔熷壋閫犱簡鍏ㄧ悆褰卞搷鍔涖傚綋鐒訛紝瀵逛簬鍖哄潡閾懼拰鏁板瓧緇忔祹棰嗗煙鐨勫疄浣撶粡嫻庯紝鈥滀簯綆楀姏騫沖彴鈥濓紝鍗崇熆奼狅紝甯佸畨涔熷湪鏋佺煭鐨勬椂闂村唴鍒涢犱簡鍙︿竴縐嶁滃晢涓氬唴娑碘濄
9銆丱KEXPool
鍦ㄥ叕甯冪殑鏁版嵁涓錛孫KExPool浠2019騫10鏈堢殑甯傚満浠介濈害0%榪呴熷彂灞曚負甯傚満浠介濈鍏澶х殑鐭挎睜銆備絾鏄錛屽湪綆楀姏瓚嬪娍鏇茬嚎涓婏紝OKExPool鍦2020騫1鏈堢畻鍔涘嚭鐜板ぇ騫呬笅婊戙傛湁甯傚満浜哄+瀵筆ANews琛ㄧず錛屾帹嫻嫿KExPool綆楀姏蹇閫熶笅婊戠殑鍘熷洜鍙鑳芥槸鍔犲叆浜嗘洿鍔犱腑蹇冨寲鐨勫皬鐭垮満錛岀洰鍓嶈繕緙轟箯鎶曡祫鑰呭姞鍏ョ畻鍔涚粨鏋勩
鉶界劧浜ゆ槗鎵鏅閬嶆槸鐭挎睜棰嗗煙鐨勬柊浜猴紝浣嗕氦鏄撴墍鎸佹湁鐨勭熆奼犱笟鍔$浉瀵逛簬浼犵粺鍏鍙鎬粛鏈変竴瀹氱殑澶╃劧浼樺娍銆
10銆丅TCTOP
Lybit鐭挎睜緇忚繃澶氬勾鐨勭ǔ瀹氳繍琛岋紝鏈鍒濇槸涓涓鍏ㄧ綉綆楀姏鏈澶х殑縐佹湁鐭挎睜銆傜幇闈㈠悜甯傚満浠ュお甯侊紝璇氶個鎵鏈夌熆宸ュ垎浜鍏舵妧鏈甯︽潵鐨勬寲鐭挎敹鐩娿傚叏鏂板崌綰ф敼鐗堢殑涔愭瘮鐗圭熆奼犵郴緇熸洿鍔犺創鍚堝㈡埛闇奼傦紝鍐呭規洿涓板瘜錛屾搷浣滄洿綆鍗曘
4. 以太坊是什麼丨以太坊開發入門指南
以太坊是什麼丨以太坊開發入門指南
很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基於以太坊平台,以通俗的方式介紹以太坊開發中涉及的各晦澀的概念,輕松帶大家入門。
以太坊是什麼
以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平台。它允許任何人在平台中建立和使用通過區塊鏈技術運行的去中心化應用。
對這句話不理解的同學,姑且可以理解為以太坊是區塊鏈里的Android,它是一個開發平台,讓我們就可以像基於Android Framework一樣基於區塊鏈技術寫應用。
在沒有以太坊之前,寫區塊鏈應用是這樣的:拷貝一份比特幣代碼,然後去改底層代碼如加密演算法,共識機制,網路協議等等(很多山寨幣就是這樣,改改就出來一個新幣)。
以太坊平台對底層區塊鏈技術進行了封裝,讓區塊鏈應用開發者可以直接基於以太坊平台進行開發,開發者只要專注於應用本身的開發,從而大大降低了難度。
目前圍繞以太坊已經形成了一個較為完善的開發生態圈:有社區的支持,有很多開發框架、工具可以選擇。
智能合約
什麼是智能合約
以太坊上的程序稱之為智能合約, 它是代碼和數據(狀態)的集合。
智能合約可以理解為在區塊鏈上可以自動執行的(由事件驅動的)、以代碼形式編寫的合同(特殊的交易)。
在比特幣腳本中,我們講到過比特幣的交易是可以編程的,但是比特幣腳本有很多的限制,能夠編寫的程序也有限,而以太坊則更加完備(在計算機科學術語中,稱它為是「圖靈完備的」),讓我們就像使用任何高級語言一樣來編寫幾乎可以做任何事情的程序(智能合約)。
智能合約非常適合對信任、安全和持久性要求較高的應用場景,比如:數字貨幣、數字資產、投票、保險、金融應用、預測市場、產權所有權管理、物聯網、點對點交易等等。
目前除數字貨幣之外,真正落地的應用還不多(就像移動平台剛開始出來一樣),相信1到3年內,各種殺手級會慢慢出現。
編程語言:Solidity
智能合約的默認的編程語言是Solidity,文件擴展名以.sol結尾。
Solidity是和JavaScript相似的語言,用它來開發合約並編譯成以太坊虛擬機位元組代碼。
還有長像Python的智能合約開發語言:Serpent,不過建議大家還是使用Solidity。
Browser-Solidity是一個瀏覽器的Solidity IDE, 大家可以點進去看看,以後我們更多文章介紹Solidity這個語言。
運行環境:EVM
EVM(Ethereum Virtual Machine)以太坊虛擬機是以太坊中智能合約的運行環境。
Solidity之於EVM,就像之於跟JVM的關系一樣,這樣大家就容易理解了。
以太坊虛擬機是一個隔離的環境,在EVM內部運行的代碼不能跟外部有聯系。
而EVM運行在以太坊節點上,當我們把合約部署到以太坊網路上之後,合約就可以在以太坊網路中運行了。
合約的編譯
以太坊虛擬機上運行的是合約的位元組碼形式,需要我們在部署之前先對合約進行編譯,可以選擇Browser-Solidity Web IDE或solc編譯器。
合約的部署
在以太坊上開發應用時,常常要使用到以太坊客戶端(錢包)。平時我們在開發中,一般不接觸到客戶端或錢包的概念,它是什麼呢?
以太坊客戶端(錢包)
以太坊客戶端,其實我們可以把它理解為一個開發者工具,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能。
EVM是由以太坊客戶端提供的。
Geth是典型的開發以太坊時使用的客戶端,基於Go語言開發。 Geth提供了一個互動式命令控制台,通過命令控制台中包含了以太坊的各種功能(API)。Geth的使用我們之後會有文章介紹,這里大家先有個概念。
Geth控制台和Chrome瀏覽器開發者工具里的面的控制台是類似,不過是跑在終端里。
相對於Geth,Mist則是圖形化操作界面的以太坊客戶端。
如何部署
智能合約的部署是指把合約位元組碼發布到區塊鏈上,並使用一個特定的地址來標示這個合約,這個地址稱為合約賬戶。
以太坊中有兩類賬戶:
· 外部賬戶
該類賬戶被私鑰控制(由人控制),沒有關聯任何代碼。
· 合約賬戶
該類賬戶被它們的合約代碼控制且有代碼與之關聯。
和比特幣使用UTXO的設計不一樣,以太坊使用更為簡單的賬戶概念。
兩類賬戶對於EVM來說是一樣的。
外部賬戶與合約賬戶的區別和關系是這樣的:一個外部賬戶可以通過創建和用自己的私鑰來對交易進行簽名,來發送消息給另一個外部賬戶或合約賬戶。
在兩個外部賬戶之間傳送消息是價值轉移的過程。但從外部賬戶到合約賬戶的消息會激活合約賬戶的代碼,允許它執行各種動作(比如轉移代幣,寫入內部存儲,挖出一個新代幣,執行一些運算,創建一個新的合約等等)。
只有當外部賬戶發出指令時,合同賬戶才會執行相應的操作。
合約部署就是將編譯好的合約位元組碼通過外部賬號發送交易的形式部署到以太坊區塊鏈上(由實際礦工出塊之後,才真正部署成功)。
運行
合約部署之後,當需要調用這個智能合約的方法時只需要向這個合約賬戶發送消息(交易)即可,通過消息觸發後智能合約的代碼就會在EVM中執行了。
Gas
和雲計算相似,佔用區塊鏈的資源(不管是簡單的轉賬交易,還是合約的部署和執行)同樣需要付出相應的費用(天下沒有免費的午餐對不對!)。
以太坊上用Gas機制來計費,Gas也可以認為是一個工作量單位,智能合約越復雜(計算步驟的數量和類型,佔用的內存等),用來完成運行就需要越多Gas。
任何特定的合約所需的運行合約的Gas數量是固定的,由合約的復雜度決定。
而Gas價格由運行合約的人在提交運行合約請求的時候規定,以確定他願意為這次交易願意付出的費用:Gas價格(用以太幣計價) * Gas數量。
Gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,Gas將按照特定規則被逐漸消耗,無論執行到什麼位置,一旦Gas被耗盡,將會觸發異常。當前調用幀所做的所有狀態修改都將被回滾, 如果執行結束還有Gas剩餘,這些Gas將被返還給發送賬戶。
如果沒有這個限制,就會有人寫出無法停止(如:死循環)的合約來阻塞網路。
因此實際上(把前面的內容串起來),我們需要一個有以太幣余額的外部賬戶,來發起一個交易(普通交易或部署、運行一個合約),運行時,礦工收取相應的工作量費用。
以太坊網路
有些著急的同學要問了,沒有以太幣,要怎麼進行智能合約的開發?可以選擇以下方式:
選擇以太坊官網測試網路Testnet
測試網路中,我們可以很容易獲得免費的以太幣,缺點是需要發很長時間初始化節點。
使用私有鏈
創建自己的以太幣私有測試網路,通常也稱為私有鏈,我們可以用它來作為一個測試環境來開發、調試和測試智能合約。
通過上面提到的Geth很容易就可以創建一個屬於自己的測試網路,以太幣想挖多少挖多少,也免去了同步正式網路的整個區塊鏈數據。
使用開發者網路(模式)
相比私有鏈,開發者網路(模式)下,會自動分配一個有大量余額的開發者賬戶給我們使用。
使用模擬環境
另一個創建測試網路的方法是使用testrpc,testrpc是在本地使用內存模擬的一個以太坊環境,對於開發調試來說,更方便快捷。而且testrpc可以在啟動時幫我們創建10個存有資金的測試賬戶。
進行合約開發時,可以在testrpc中測試通過後,再部署到Geth節點中去。
更新:testrpc 現在已經並入到Truffle 開發框架中,現在名字是Ganache CLI。
Dapp:去中心化的應用程序
以太坊社區把基於智能合約的應用稱為去中心化的應用程序(DecentralizedApp)。如果我們把區塊鏈理解為一個不可篡改的資料庫,智能合約理解為和資料庫打交道的程序,那就很容易理解Dapp了,一個Dapp不單單有智能合約,比如還需要有一個友好的用戶界面和其他的東西。
Truffle
Truffle是Dapp開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫代碼-編譯-部署-測試-打包DApp這個流程。
總結
我們現在來總結一下,以太坊是平台,它讓我們方便的使用區塊鏈技術開發去中心化的應用,在這個應用中,使用Solidity來編寫和區塊鏈交互的智能合約,合約編寫好後之後,我們需要用以太坊客戶端用一個有餘額的賬戶去部署及運行合約(使用Truffle框架可以更好的幫助我們做這些事情了)。為了開發方便,我們可以用Geth或testrpc來搭建一個測試網路。
註:本文中為了方便大家理解,對一些概念做了類比,有些嚴格來不是准確,不過我也認為對於初學者,也沒有必要把每一個概念掌握的很細致和准確,學習是一個逐步深入的過程,很多時候我們會發現,過一段後,我們會對同一個東西有不一樣的理解。
5. 區塊鏈技術架構有些什麼課程介紹
目前市場上區塊鏈培訓課程跨度很大,課程內容和授課形式也是五花八門。
區塊鏈
1、編程基礎入門
計算機軟硬體基礎、字元集及字元編碼、HTML+CSS(含HTML5+CSS3)、ECMA + BOM + DOM、jQuery、node.js、Ajax及Express
2、Go編程語言
Go基本語法、流程式控制制、函數及數據、錯誤處理、Go面向對象編程、Go並發編程、Go網路編程、Go安全編程、Go進階編程(goroutine、channel)、資料庫MySQL、LevelDB
3、區塊鏈1.0——比特幣Bitcoin
比特幣原理、比特幣系統架構、密碼演算法(Go語言實現)、共識演算法(Go語言實現)、比特幣交易原理及交易腳本、比特幣RPC編程(node.js實現)、比特幣源碼解析
4、區塊鏈2.0——以太坊Ethereum
以太坊工作原理及基礎架構、以太坊基本概念(賬戶、交易、Gas)、以太坊錢包Mist及Metamask、以太坊交易、ERC20標准Token開發部署、以太坊開發IDE——remix-ide、智能合約與Solidity、Solidity部署、備份及調用、框架技術:truffle及web3、DApp開發實戰、Geth
5、區塊鏈3.0——超級賬本之Fabric
超級賬本項目介紹、Fabric部署和使用、Fabric配置管理、Fabric架構設計、Fabric CA應用與配置、應用開發實戰。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
6. 浠涔堟槸姣旂壒甯侀挶鍖呯殑瀛愬湴鍧鏈変粈涔堢敤
姣旂壒甯佺殑閽卞寘鏄寤虹珛鍦 HD錛堝垎綰х『瀹氭э級妗嗘灦涔嬩笂鐨, 瀹冨彲浠ヤ駭鐢熶笉涓鏍風殑鍦板潃鍜岀$悊鍦板潃鐨勬柟娉曘 鐢ㄦ埛閽卞寘鐨勬墍鏈夊叕寮鍦板潃閮戒細浠庤繖涓閽卞寘鐨 xPub錛堟墿灞曞叕閽ワ級涓璇炵敓鐨勩 濡傛灉姣忎竴嬈¢兘鐢ㄥ埌鍚屼竴涓鍦板潃鎺ユ敹 BTC , 閭d箞姣忎釜浜洪兘鑳藉熷緢鏂逛究鐨勮拷韙鎵鏈変粯嬈捐板綍銆 浣跨敤瀛愬湴鍧鏀舵懼氨鑳藉熷湪寰堝ぇ紼嬪害涓婃敼鍠勮繖縐嶆儏鍐碉紝璧峰埌涓涓淇濇姢鐢ㄦ埛鐨勯殣縐佺殑浣滅敤銆傞渶瑕佹敞鎰忕殑鏄錛
1.BTC 閽卞寘涓誨湴鍧璧勪駭鐨勫氨綆楀叕寮忓氨鏄錛氫富鍦板潃璧勪駭+瀛愬湴鍧璧勪駭+鎵鵑浂鍦板潃璧勪駭銆
2.姣忎竴涓鍦板潃閮芥湁鍞涓涓涓涓庝箣瀵瑰簲鐨勬槑鏂囩侀掗錛屼絾鏄鏄涓嶉渶瑕佸崟鐙澶囦喚姣忎釜鍦板潃鐨勭侀掗鐨勶紝澶囦喚浜 BTC 閽卞寘鐨勫姪璁拌瘝灝卞彲浠ヤ簡錛岃繖鏍峰氨鐩稿綋浜庡囦喚浜嗘瘡涓瀛愬湴鍧鐨勭侀掗銆
3涓瀹氫笉瑕佺敤瀛愬湴鍧鎺ユ敹 USDT
鎴戜滑閫氳繃浠ヤ笂鍏充簬浠涔堟槸姣旂壒甯侀挶鍖呯殑瀛愬湴鍧鏈変粈涔堢敤鍐呭逛粙緇嶅悗,鐩鎬俊澶у朵細瀵逛粈涔堟槸姣旂壒甯侀挶鍖呯殑瀛愬湴鍧鏈変粈涔堢敤鏈変竴瀹氱殑浜嗚В,鏇村笇鏈涘彲浠ュ逛綘鏈夋墍甯鍔┿
7. 帶你揭開比特幣的神秘面紗
要吹散比特幣周圍的迷霧,我們需要把它分為兩個板塊來分析。 一方面,比特幣是一種代幣 ,這種代幣代表著一種數字概念的所有權,就像是一種虛擬的欠條一樣,它由多個代碼片段構成。 另一方面,比特幣又是一種協議,是一種分散式記賬的網路,記錄著代幣的余額 。這兩部分都同時指向我們所說的比特幣。
這個系統會讓用戶在不通過中心授權的情況下互相進行支付活動,這種中心授權就類似於銀行或者其他支付網關。這個系統完全屬於電子化。比特幣並不是被列印出來的,它不像美元、歐元或者人民幣這種貨幣。比特幣是由世界上的多台電腦使用免費的軟體創建出來的。
比特幣是加密貨幣的第一個案例,它有著傳統貨幣的某些特徵,在密碼學的基礎上進行認證。
一位匿名為中本聰的日本軟體開發人員與2008年首次提出了比特幣的概念,它是基於數學證明至上的電子支付系統。這個思路就是製造一種獨立於中心授權之外的交易方式,它獨立於中心授權之外,而且可以以一種安全而又不可更改的方式進行電子轉賬。
但至今仍然沒有人知道到底誰是中本聰。
交易雙方使用比特幣交易,就類似於使用約定俗成的美元、歐元或日元進行交易一樣,不過是通過數字形式進行交易的。以下是比特幣最重要的特徵:
一、去中心化
比特幣最重要的特徵就是去中心化。沒有任何機構能夠控制比特幣網路。比特幣是由一些代碼人員組建的志願者組織維護的,而且是由世界上的許多計算機編制起來的開放式網路。 比特幣吸引了大批組織和個體,尤其是那些不願意讓銀行或官方機構掌控自己財產的人群。 有了比特幣,整個交易都由分散式和開放式的網路維持著。
二、有限供應
美元、歐元、日元、新元等貨幣的供應是有限的,因為中央銀行可以按照他們的意願發行貨幣,而且還可以貨幣的相對價值。貨幣持有人(尤其是選擇許可權有限的公民)會承擔這些成本。
而比特幣的供應是由基本的演算法緊緊控制的。每小時都由新的比特幣產生,但是量很小,增長量也會呈現下降趨勢,知道總發行量達到2100萬。 理論上來說,如果比特幣的需求持續上升,而供應不變的話,價值是會增長的 – 這也就是比特幣作為一種資產為什麼怎麼吸引人的原因。
三、假名
傳統的電子支付通常具有可識別性(出於認證的目的,以及遵守反洗錢和其他有關法律法規),而 比特幣的用戶理論上是半匿名的。 一旦提交了交易請求,協議就會檢查所有交易記錄,並確認轉賬的人有許可權和足額的比特幣進行交易。系統自身不知道交易者的身份信息的。
實際上,每個比特幣用戶都是由其電子錢包的地址來識別的。而且大多數交易都會在法律法規的框架下核實他們的客戶身份,之後才被允許進行比特幣交易。這種情況下可以對比特幣的使用進行跟蹤。因為整個網路都是透明的,交易的整個過程對所有人都是可見的。 因此,比特幣對於違法犯罪人員、恐怖分子或者其他參與洗錢的人都不是理想的貨幣。
四、不變性
比特幣交易是不可逆轉的,這跟其他電子類貨幣交易有所區別。 這是因為沒有任何中間審裁人員說「還錢吧」。如果一筆交易已經在網上有了記錄,一個多小時後就不可能在做更改了。
這或許會讓人有所擔憂,但這也意味著任何通過比特幣網路進行的交易都是非常嚴肅的,不容兒戲。
五、可分性
比特幣的最小單位叫中本聰。我們可以想像到,比特幣會催生更多的微交易,而這些是傳統的電子貨幣辦不到的事。
總之,比特幣速度快,利用成本低。而且比特幣更加註重交易的私密性。
8. 比特幣的概念是什麼
比特幣(BitCoin)的概念最初由中本聰在2009年提出,根據中本聰的思路設計發布的開源軟體以及建構其上的P2P網路。比特幣是一種P2P形式的數字貨幣。點對點的傳輸意味著一個去中心化的支付系統。
它依據特定演算法,通過大量的計算產生,比特幣經濟使用整個P2P網路中眾多節點構成的分布式資料庫來確認並記錄所有的交易行為,並使用密碼學的設計來確保貨幣流通各個環節安全性。
比特幣:又稱「比特金」,是一種網路虛擬貨幣,網民可以使用比特幣購買一些虛擬物品,比如網路游戲當中的衣服、帽子、裝備等,網民之間也有用來購買現實物品的情況。
比特幣網路通過「挖礦」來生成新的比特幣。所謂「挖礦」實質上是用計算機解決一項復雜的數學問題,來保證比特幣網路分布式記賬系統的一致性。比特幣網路會自動調整數學問題的難度,讓整個網路約每10分鍾得到一個合格答案。隨後比特幣網路會新生成一定量的比特幣作為賞金,獎勵獲得答案的人。
(8)比特幣代碼框架介紹擴展閱讀
用戶可以買到比特幣,同時還可以使用計算機依照演算法進行大量的運算來「開采」比特幣。在用戶「開采」比特幣時,需要用電腦搜尋64位的數字就行,然後通過反復解謎密與其他淘金者相互競爭,為比特幣網路提供所需的數字,如果用戶的電腦成功地創造出一組數字。
比特幣是類似電子郵件的電子現金,交易雙方需要類似電子郵箱的「比特幣錢包」和類似電郵地址的「比特幣地址」。和收發電子郵件一樣,匯款方通過電腦或智能手機,按收款方地址將比特幣直接付給對方。下列表格,列出了免費下載比特幣錢包和地址的部分網站。
參考資料
網路-比特幣