加密數字貨幣的開發技術介紹

要問當前所有區塊鏈應用中最火的是什麼應用,非加密貨幣莫屬。看看各個跟區塊鏈相關的討論組,整天熱火朝天地討論的是各種幣的行情,即使是技術討論組,除了一些熱門討論外,最吸引注意的莫過於本幣的漲跌還有各種代幣的ICO了。

 

首先,加密數字貨幣是什麼鬼?他首先是一種數字貨幣。早在比特幣出現之前,“數字貨幣”、“虛擬貨幣”、“電子貨幣”等就已經出現了。近年來,比特幣出現,加密(數字)貨幣正式誕生,隨之而來是類似萊特幣、瑞泰幣、以太坊、狗狗幣、比特股、瑞波幣、點點幣、元寶幣等等幾千種加密數字貨幣。加密數字貨幣使用密碼算法的數字貨幣,現指代英文Cryptocurrency,他最主要幾大特性是去中心化、加密解密技術、區塊鏈技術、共識機制,這些技術相互支撐,通過共識機制成爲一個整體,實現了加密貨幣特有的安全、公開、可追溯的支付和交易。

 

加密數字貨幣的核心技術價值是區塊鏈,正如各種法幣有國家信用背書一樣,區塊鏈承載的就是信用,是一個無需實物抵押、不需政府或金融機構擔保的信用。如果沒有區塊鏈,包括比特幣在內各種加密數字貨幣也會變得一文不值。

 

加密數字貨幣目前有三種主要場景,一種就是數字貨幣,用作流通和結算;第二種是爲了在各自網絡中支付特定的操作,是交易和使用相關區塊鏈資源過程燃燒的燃料(Gas),用戶只是使用其計算能力來接收它,以便驗證交易並促進它的發展;第三種是作爲產品或社區運營的激勵機制和運營工具,也就是代幣或虛擬貨幣的角色。可以說,加密數字貨幣對於很多去中心化的應用的作用還是很大的。

 

回到這次主題,Elwin就加密數字貨幣這個區塊鏈典型應用,簡單介紹一下他的的相關開發技術。

 

 

一、知名的加密數字貨幣的技術體系

下面介紹一下目前幾種知名的加密數字貨幣的技術體系:

比特幣:

比特幣技術,符號爲BTC,共識算法爲PoW,工作量證明算法中使用SHA-256加密算法,發行方式爲挖礦,礦機支持,總量恆定2100萬,區塊時間10分鐘,開發語言C++。

 

萊特幣:

比特幣技術,旨在改進比特幣算法技術,符號爲LTC,共識算法爲PoW,工作量證明算法中使用Scrypt加密算法,發行方式爲挖礦,礦機支持,總量恆定8400萬個,區塊時間2.5分鐘,開發語言C++。

 

未來幣:

未來幣是一種全新設計和開發的二代幣,符號爲Nxt。未來幣是一種純 POS 幣,使用透明鍛造(transparent forging)的方式進行新區塊的鍛造。Nxt是且是第一個100%的股權證明(PoS)機制的電子貨幣,Nxt不再通過消耗大量的資源“挖礦”產生新貨幣,而是通過現有賬戶的餘額去“鍛造”區塊,並給與成功“鍛造”區塊的賬戶交易費用獎勵。PoS算法的這一特點,使得它足以在智能手機或者是樹莓派這樣的小型設備上運行。它已經通過IPO的方式完成了所有幣的分發,貨幣總量 10億,區塊時間60秒,開發語言JAVA。

 

 

以太幣:

比太坊技術,符號爲ETC/ETH(不同分叉) ,共識算法爲PoW,使用的工作量證明算法叫Ethash(Dagger-Hashimoto算法的改良版本),發行方式爲挖礦,礦機支持,支持在樹莓派上運行節點。以太幣(ETH)作爲推動以太坊平臺上分佈式應用的加密燃料,將會通過挖礦的形式每年以不變的數量發行。每年發行的數量是預售以太幣總量的0.3倍,通脹率每年遞減,最新ETH區塊時間16秒,開發語言GO。

 

比特股:

比特股技術,核心賬本採用石墨稀技術,符號爲BTS,共識算法爲DPoS,貨幣總量爲37億。預挖礦方式發佈(初始的比特股BTS由兩部分組成,一部分由PTS持有者轉股而來,另一部分由挖掘產生,並且整套系統還在不斷的爲持有BTS的投資者分紅),比特股通過定期出售分發初始貨幣,Counterparty利用燒燬證明(POB)發行貨幣,BTS除了作爲交易費用和激勵機制外,也是資產交易的重要抵押物。區塊時間3秒,開發語言C++。

 

瑞波幣:

瑞波技術,符號爲XRP,共識算法爲瑞波自有共識機制,採用OpenCoin(現在的Ripple Labs)原創算法,貨幣總量爲1千億,預挖礦方式發佈,一半是創始人擁有,一部分批發給交易網關,小部分逐步發放公衆,讓他們來推動Ripple項目,開發語言C++。瑞波幣是世界上第一個開放的支付網絡,通過這個支付網絡可以轉賬任意一種貨幣,簡便易行快捷,交易確認在幾秒以內完成。值得一提的是,瑞波幣的另外一個分支恆星幣(XLM),他是由Ripple創始人之一的Jed創建,恆星幣是基於ripple代碼修改創建的恆星支付網絡中的基礎數字貨幣,總量爲1000億,每年增加1%。恆星支付網絡以恆星幣爲基礎貨幣,用戶能夠通過其轉賬任意一種貨幣,跟瑞波的主要區別是他的目標針對全體大衆用戶,目前處於技術完善階段。

 

點點幣:

比特幣技術,符號爲PPCoin,簡稱PPC,名字取自P2P貨幣的意思,即點對點貨幣,PPC的研發團隊和質數幣XPM的研發團隊爲同一團隊,技術實力強勁,爲業界公認。採礦方式混合了PoW工作量證明及PoS權益證明方式,礦機支持,區塊時間爲600秒,PPC採用SHA256算法,在BTC的基礎上進行了改良和優化。PPC最大的貢獻在於它原創了POS利息體系,防止通貨緊縮,貨幣總量無上限,通脹1%每年,開發語言C++。

 

元寶幣:

太一科技開發,符號爲YBC。元寶幣最初算法源自於當時較爲創新的數字貨幣雅幣(YAC),雅幣的算法又是在點點幣(PPC)的基礎上進行的修改,老元寶採用的是基於Scrypt-Jane的POW算法。到第二代元寶幣調整了POS利息遞歸機制,第三代元寶幣創新發明了VPOW機制,新元寶將徹底停止POW挖礦,而採用純POS方式來維持網絡,幣的分發將採用VPOW的方式進行。VPOW分發機制又被稱爲虛擬工作量證明機制,具體是指利用其他幣的POW挖礦算力來爲元寶幣提供類似POW的公平數字貨幣發行機制。通過應用VPOW分發機制和“八寶池”配股計劃,增加了市場上的元寶幣買盤,元寶幣在市場上保持了更加充足的流動性,維護了幣價,完成了公平的分發,能夠促進元寶幣應用的平穩發展。採用主節點分發機制(主節點分發利息),可以促進節點網絡健壯、高可用性。貨幣總量300萬,區塊時間60秒,開發語言C++。

 

達世幣:

達世幣是一款支持即時交易、以保護用戶隱私爲目的數字貨幣,採用比特幣技術分支。達世幣符號是Dash,是一種爲匿名而生的幣,他通過匿名技術,使得交易無法被追蹤查詢。無預挖,基於11種加密算法x11算法(blake, bmw, groestl, jh, keccak, skein, luffa, cubehash, shavite,simd, echo)超級安全哈希運算。它的區塊獎勵也和大多數山寨幣不一樣,它的區塊獎勵由公式自動確定。採用類似於PoW+PoS的混合挖礦方式,Masternodes獲得10%的挖礦獎勵。首次引入暗重力波(DGW)難度調整算法保護區塊網絡。總量約2200萬枚,區塊時間2.5分鐘,開發語言C++。

 

 

二、加密數字貨幣的基礎技術體系

貨幣的核心基礎是信任,這裏有基於實物如黃金的信任,更多基於國家背書的信任,只有保證了貨幣的價值穩定和價值存儲能力,才使貨幣獲得了人們的信任。

 

在虛擬和數字時代的,除了解決信任問題外,網絡安全是數字貨幣的另外一個關鍵因素。比特幣之前的任何貨幣,無論是物理實體黃金,還是電子化的法幣,都不存在網絡安全的問題,但黑客攻擊和破解、技術壟斷這些不穩定安全因素卻極大制約着數字貨幣的發展。數字貨幣對金融安全提出了更高的要求,一方面,數字貨幣去中心化的特性淡化了中心化管理和機構監管,出了問題不容易剎車和糾正(如the DAO事件的處理),另一方面,區塊鏈和數字貨幣這類創新金融體系尚未經歷過多少風雨,在應對大數據衝擊、黑客破壞、網絡攻擊等方面略顯力不從心。

 

加密數字貨幣的目標就是要建立一個去中心化的自動運行的經濟系統,應具備可流通性、可存儲性、可離線交易性、可控匿名性、不可僞造性、不可重複交易性、不可抵賴性七個特性,而加密數字貨幣的技術基礎區塊鏈,具有不可篡改性,所有的賬本都是公開透明和可追溯性,他基本解決了數字貨幣流通中的這些技術問題。但對於數字貨幣的真正落地和運行,他對信任和網絡安全兩個最關鍵的核心因素有着更高的要求。這兩個因素具體到加密數字貨幣的技術基礎體系中,就是支撐這個系統的發行和維護網絡安全的機制。其中機制有多種,如PoW,PoS,DPoS等,各有利弊,PoW有高耗能和51%攻擊的風險,而PoS和預挖礦的方式會導致大量的幣保留在創始人和少數人中,信用基礎不夠牢固,流動性不確定,因此往往會採取綜合的機制,目前很多研究認爲,“工作量證明機制Pow+權益證明機制Pos/DPoS”的幣,纔是最爲完美的。採用哪種這個機制策略,將很大程度決定你的數字貨幣發展的前景空間。

 

 

三、搭建加密數字貨幣的技術平臺

前面介紹了幾個知名的加密數字貨幣的技術體系,大家是否已經由躍躍欲試去搭建自己的加密數字貨幣呢?

 

Elwin推薦的有兩套技術路線可以選擇,一個是自己通過搭建區塊鏈平臺去構建自己原生的數字貨幣,另一個方式是基於現有的區塊鏈公網去創建數字資產和數字貨幣。

 

方案一,構建自己原生的數字貨幣,從比特幣和各個競爭幣(山寨幣)大家可以看到,這些數字貨幣採用的技術體系不外乎就是比特幣、Ripple、比特股和未來幣等幾套技術體系或這些技術體系的改進或分支版本,這些技術體系,大家可以參見Elwin上一篇文章《區塊鏈主流開源技術體系介紹》的幾大主流開源區塊鏈體系的介紹。這些原生數字貨幣的用途主要包括:交易和支付、匯兌手段、抵押手段、激勵機制、權益證明和資源控制等,另外還有不同區塊鏈體系自身帶有一些特性的擴展。

 

就主流區塊鏈開源技術體系來看,Elwin推薦的是比特幣或其分支、Ripple、未來幣、比特股、以太坊五種技術架構,如果你是單純的貨幣業務,不考慮以後其他衍生產品和業務擴展,更推薦比特幣、未來幣和Ripple。每套技術體系的代碼可以在相關數字貨幣在GitHub上公開的源碼進行修改,從而達到製作屬於自己的加密數字貨幣。

 

開始製作我們自己第一個的數字貨幣了,首先我們要從git上下載某套區塊鏈體系的源碼,比如選擇比特幣的主幹代碼,我們從https://github.com/bitcoin/bitcoin下載好相關源碼,同時準備好對應的編譯環境(C++的建議在Linux)和安裝好對應開發環境和工具(每個體系網上都有詳細的安裝教程文檔)。

 

不過系統和開發環境的搭建、程序編譯等過程都比較繁瑣和有比較多坑(很多跟環境、依賴庫和版本有關,請留意),不建議普通用戶自己製作。對於開發人員,第一次可能要預計2-3天的安裝配置時間。

 

拿比特幣開發來說,他是Qt的開發環境,下載好源碼並配置好環境後,在Qt Creator內打開該比特幣核心的源碼,配置相關文件和編譯器,開始嘗試編譯比特幣核心的客戶端。這一步走通後,纔可以放膽去改造成自己的數字貨幣。打開各個源文件,找到對應的地方調整參數即可,如調整每個區塊出幣數,總產量,調整難度等等,然後就到最關鍵的點,就是改名爲自己的幣名了,這時候通過全文搜索bitcoin或其他比特幣的字樣,改成你自己貨幣的名稱,比如ElwinNB之類,想怎麼取名就怎麼取名,別忘記在資源文件夾裏替換掉相關圖標。如果一切順利,經過重新編譯,你的新幣就順利發明了。

 

前期很多山寨幣,就是這個套路,基於比特幣進行這裏修改文字那裏調整一些參數,很多並不理解整個體系和原理甚至沒有閱讀主要代碼,後來大家都成爲老司機後,新的幣種會考慮一些微創新,在共識算法和加密算法作一些調整和優化,創新爲自己的新算法。Elwin覺得,數字貨幣也是一種互聯網產品,且屬於一個比較複雜的技術體系,即使你是基於別人的成熟代碼進行修改,需要不斷的迭代更新和維護的,縱使只是簡單的版本跟隨,你總要投入技術力量去跟進,因此我之前提的只是入門的嘗試,真正要維護你的數字貨幣,你還得好好去閱讀代碼,瞭解架構和原理,根據你的業務和新幣特性去不斷優化和調整。

 

當然,現在這些簡單套路都走不通了,現在要發行新的數字貨幣,要麼你算法真有獨有優勢和特點,要麼基於數字貨幣下的垂直業務和遊戲規則有很好的模式(比如電競幣或文化幣),否則大家很難去關注和擁護你的新幣。

 

 

方案二,是基於現有的區塊鏈公網去創建數字資產和數字貨幣。就主流區塊鏈開源技術體系來看,基本除了Factom外,其他的技術體系都可以用來創建數字資產,也就是可以支持加密數字貨幣的創建。

 

以太坊:基於以太坊的智能合約,我們可以輕鬆地創建自己的數字資產或數字貨幣,除了創建數字貨幣和貨幣交易的基本功能外,還支持貨幣的中心化管理者、數字貨幣的黑白名單、貨幣增發、挖礦實現、代幣和其他貨幣的自動兌換。開發語言是Solidity語言。在以太坊的官網首頁上,給出了三個智能合約的DEMO:虛擬貨幣合約Token、衆籌合約Crowdsale、去中心自治組織合約DAO,其中的虛擬貨幣合約Token就可以作爲你的加密數字貨幣的最好的參考代碼了。

 

Ripple和比特股:就技術來說,基於Ripple和比特股的公網,你都可以輕鬆創建和管理自己的數字資產或數字貨幣,不過目前Ripple公網好像限制了主要針對2B業務,只能給銀行和金融等機構作爲網關,這樣一般玩家就無法在網關中創建自己的數字資產了。在比特股的去中心化的鏈上交易平臺中,我們看到錨定各類資產的數字資產在比特股被髮行、相互配對交易,基於比特股區塊鏈的各種網關爲區塊鏈上的虛擬世界與物理世界的各種資產提供對接。不像比特幣,比特股可以擴大範圍和支持多個完全獨立和並行的塊。因爲每個塊鏈可以交易捆綁在其它塊鏈上的比特資產衍生品,塊鏈之間的價值移動是很容易的。比特股的資產發行功能,讓全球用戶能以很低的費用發行自己的數字資產並與特定的現實資產進行錨定,進一步在區塊鏈上實現交易轉讓,在這個過程中沒有中心化的人爲因素干擾。比特股的資產發行和管理功能非常強大,黑白名單、高級多重簽名、喂價輸入、抵押發行、內盤與外盤互動,低延時、智能合約等待條件基於一身。使用Ripple和比特股發行數字資產不需要另外的代碼開發。

 

布比:布萌是基於布比區塊鏈的數字資產平臺,發行在布萌平臺上的數字資產,可以在資產流通方之間建立起多方信任,保證用戶購買和使用的數字資產的真實有效性。布萌擁有一套標準化協議,在布萌平臺上開發的應用之間無需對接,即可實現布萌用戶之間數據信息流、價值流互聯、互通。同時,發行在布萌平臺上的數字資產,可以實現點到點的傳遞。對接布萌相對比較簡單,布萌爲企業和開發者提供資產發行、資產轉移、資產查詢等業務,支持多種開發語言。

 

方案二中,以太坊方案優點是比較靈活和強大,基本可以任意編寫你的數字貨幣及其衍生的業務體系,缺點是的其中幣種運行和流通交易,需要消耗原生數字貨幣(Gas費用)的,這是值得考慮的;比特股部分,數字資產的發行和管理功能很齊全,但也會一定程度侷限在比特股平臺中,且也需要交易費用(Gas費用);布萌平臺的優點是簡單易用和免費使用(無Gas費用),缺點是提供接口的功能不夠豐富。

 

方案二基於已有區塊鏈公網的數字資產搭建,在方便的同時,好處是不需要類似方案一那樣,一定要考慮組建自己的節點羣,但缺點是一定程度限制在各個區塊鏈體系框架中(其實大部分情況下都滿足到你的需求了),且區塊性能會收到公網的性能制約(另外也要考慮一些區塊鏈公網的停止維護或硬分叉的風險)。

 

 

四、數字貨幣應用層開發

構建自己原生的數字貨幣體系後,除了宣傳官網和社交媒體外,你還需要對應開發相關的挖礦軟件、ICO衆籌網站、交流社區、錢包、交易市場等應用層軟件。

 

挖礦軟件:這個是針對類似比特幣等Pow模式的體系,這些需要對應的挖礦軟件,專業一些需要有相應礦機。首先,從git上下載現成的挖礦工具(通常支持sha和scrypt算法)、礦池,改名字編譯,部署,也同樣直接就可以用了。通常都是C++開發語言。

 

ICO衆籌網站:主要是數字貨幣的初期資金的籌集,目前比較多的是籌集比特幣和以太幣,這個可以自己搭建,也可以採用第三方的ICO衆籌網站如幣衆籌。開發語言:主流Web開發語言。

 

交流社區:主要用來發布資訊和給幣使用者交易者交流使用,這個可以直接使用第三方的開源代碼進行搭建,這類代碼非常多,根據你熟悉的開發語言來選擇就是了。開發語言:主流Web開發語言。

 

錢包:這個非常重要和關鍵的用戶客戶端,可以花多些時間好好設計一些這個的UI,提供多終端的錢包。開發語言:主流Web開發語言或App開發語言

 

交易市場:一般這個交易市場更多是通過淘寶或第三方交易市場來提供,但也不排除你要開發類似的交易市場,來提供給本數字貨幣與其他數字貨幣的兌換。開發語言:主流Web開發語言。

 

 

作者:高志豪(weibo.com/elwingao)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章