區(qū)塊鏈遇上交易所

為什么會想到寫這個“區(qū)塊鏈遇上現(xiàn)實”系列,一方面是因為我本身是一名互聯(lián)網(wǎng)產(chǎn)品經(jīng)理且從事的行業(yè)就是區(qū)塊鏈,從不溫不火到大紅大紫只用了幾年的時間,即便我深信技術(shù)改變世界,也不由對這種“區(qū)塊鏈現(xiàn)象”產(chǎn)生擔(dān)憂,我覺得有必要以一名區(qū)塊鏈產(chǎn)品工作者的視角向大家說明,區(qū)塊鏈并不止眼前的ICO和交易所,還有更多玩法有待發(fā)掘,過早地炒作可能是一種“捧殺”,希望更多人能靜下心來挖掘?qū)嶋H應(yīng)用場景下的可能性。另外一方面,我習(xí)慣于通過寫作的方式將我的所學(xué)系統(tǒng)性地整理起來,技術(shù)并不是我的擅長,我可能更愿意從實際需要來切入討論,畢竟對一名產(chǎn)品經(jīng)理而言,無法實際應(yīng)用起來的技術(shù)其實并不存在太多的討論價值,而從應(yīng)用場景來展開想象,我們的技術(shù)演進可能會更有方向感和目標(biāo)感。

區(qū)塊鏈貨幣交易所

相信沒有人可以否認(rèn),大部分人在現(xiàn)實生活中接觸到的第一個區(qū)塊鏈案例,就是區(qū)塊鏈貨幣交易所。要想理解區(qū)塊鏈貨幣交易所,我們先要討論一下傳統(tǒng)的銀行是如何運作的。你給銀行一筆錢——做一筆存款,銀行日后會按照你的要求把錢還給你。當(dāng)然,銀行并不會把你的錢一直鎖在保險柜里,銀行只是答應(yīng),當(dāng)你提款的時候把錢給你,在這期間,銀行通常會把錢用于投資。許多銀行會保留一部分錢作為儲備金,保證人們來提款的時候,有足夠的現(xiàn)金。許多銀行通常按存款的固定比例來留存儲備金。

現(xiàn)在來談區(qū)塊鏈貨幣交易所。就只從用戶使用的角度而言,區(qū)塊鏈數(shù)字資產(chǎn)交易所和銀行很想。交易所可以辦理數(shù)字資產(chǎn)(如比特幣)存款,日后需要用錢的時候,可以到交易所提款。你還可以把法定貨幣(法幣,如美元等)存到數(shù)字資產(chǎn)交易所,交易所承諾日后會按照你的要求把錢(法幣或某種數(shù)字資產(chǎn),或兩者都有)還給你。也可以通過交易所辦理類銀行業(yè)務(wù),例如,用比特幣付款或收款。還可以通過交易所把虛擬貨幣兌換成法幣,或把法幣兌換成虛擬貨幣,或?qū)煞N虛擬貨幣進行相互兌換,交易所在該業(yè)務(wù)過程中通常起撮合作用,它們同時尋找愿意兌換的人,并安排他們作為交易對手,如果交易對手對于匯率達(dá)成一致意見,交易所就促成這筆交易。

值得一提的是,有許多人包括我自己,一開始都會下意識地以為,作為去中心化應(yīng)用的典范,交易所中的每一筆交易都應(yīng)該被記錄在區(qū)塊鏈上,而事實卻恰好相反。交易所不需要在區(qū)塊鏈里把虛擬貨幣從一個地址轉(zhuǎn)到另一個地址。交易所只是修改了與你的合約,交易前,它說“我們?nèi)蘸髸€給你15000美元和3個比特幣”;交易完成后,它說“我們?nèi)蘸髸€給你3000美元和5個比特幣”。所以,交易前后,比特幣并沒有真正在區(qū)塊鏈中移動,只是你和銀行的合約變化了而已。對于你的交易對手而言亦是如此。

由交易所生成的合約地址并非區(qū)塊鏈公鑰

投資策略的選擇

在交易所中,懂得投資的人會試圖從復(fù)雜程度極高的交易撮合的各項參數(shù)中找到商機,就像當(dāng)初從股市中獲利一樣。有人通過不同的交易撮合策略配比來組合自己的投資,而非簡單地買入和售出,但老實說,預(yù)估市場并非一件容易的事情,這往往需要敏捷地市場觀察能力。甚至有人使用深度學(xué)習(xí)這樣的方式來完成自動化的投資——如阿爾法貓,它能像阿爾法狗一樣學(xué)習(xí)交易所中的K線圖/深度圖/均線等參數(shù),不斷糾正自己的投資策略來達(dá)到正常人類達(dá)不到的收益回報率。

復(fù)雜的交易所參數(shù)

還有,隨著交易所的數(shù)量增長,像比特幣類似的區(qū)塊鏈貨幣在不同交易所的價格是存在一定差異的,這也很正常,交易所中某個幣種的價格受交易所交易撮合結(jié)果的直接影響,而誰也無法保證不同交易所中的價格認(rèn)知都時刻保持一致。那么問題來了,哪個交易所的價格才可以用來代表比特幣的最新價格呢?事實上,這個問題并不會對比特幣的價格產(chǎn)生過大的影響,因為區(qū)塊鏈貨幣的去中心化特質(zhì),一旦A交易所中比特幣的價格高于B交易所中的,就會有人從B交易所購買比特幣,并且轉(zhuǎn)入A交易所中高價賣出,這會使得兩個交易所中的比特幣價格趨同,當(dāng)然,還需要考慮到轉(zhuǎn)幣的手續(xù)費是否可以被利潤cover掉。

交易所錢包

前面提到,交易所中的地址并非區(qū)塊鏈上的公鑰,而是使用了一種叫做錢包服務(wù)器的技術(shù)生成并分配給用戶的,如果用戶通過Txhash或者其他方式在區(qū)塊鏈上查詢從個人錢包轉(zhuǎn)入到交易所錢包的一筆轉(zhuǎn)賬,就會發(fā)現(xiàn)區(qū)塊上的轉(zhuǎn)入地址并非交易所提供的地址,事實上,這個地址是交易所的收款公鑰(為了和大家所知的交易所地址區(qū)分)。實際的流程是,用戶從個人錢包轉(zhuǎn)帳給了交易所的收款公鑰,交易所再將與這一筆轉(zhuǎn)賬的金額相同數(shù)量的虛擬貨幣分配到用戶的賬戶下,這個時候,它又從一個區(qū)塊鏈實體變成了一個數(shù)字,真正的區(qū)塊鏈實體保存在了交易所的錢包中。

黑客通常喜歡將黑手伸向這些囤積有大量虛擬貨幣的交易所錢包,一旦交易所錢包失竊,那對交易所會是個莫大的打擊,甚至萬劫不復(fù)。為了應(yīng)對這種情況,有人開發(fā)出了多種方案,其中還運用了許多密碼學(xué)的知識。冷存儲和熱存儲,是目前較為流行的做法。

冷儲存與熱儲存

前面我們提到,交易所會把區(qū)塊鏈貨幣放在自己的服務(wù)器中,把區(qū)塊鏈貨幣放在電腦里就像把錢放在錢包里帶著,這叫“熱儲存”,這很方便但不安全。而“冷儲存”是離線的,把區(qū)塊鏈貨幣鎖在其他地方,不聯(lián)入互聯(lián)網(wǎng),所以相對安全和保險,但顯然是不方便的。這就像你帶著一些零錢出去,但是把終身積蓄鎖在保險柜里的道理一樣。

要分開熱儲存和冷儲存,你也必須要用不同的私鑰,否則如果熱儲存被人破壞了,冷儲存也會處于危險之中。你也需要把幣在兩邊轉(zhuǎn)來轉(zhuǎn)去,這樣兩邊都需要知道對方的地址或公鑰。

因為冷儲存是離線的,所以熱儲存和冷儲存不需要上線就可以接收比特幣——熱儲存端知道冷儲存端的地址,所以它隨時可以給冷儲存轉(zhuǎn)賬。當(dāng)你覺得你的錢包里的錢太多的時候,你可以把一部分的幣轉(zhuǎn)到冷儲存,但不需要讓冷儲存上線而暴露自己。當(dāng)然,只要冷儲存上線,就可以接收到區(qū)塊鏈的轉(zhuǎn)賬信息,然后可以隨意處理這些比特幣。

但管理冷儲存有個小問題:一方面,為了私密性和其他考慮,我們希望使用不同的地址(這些地址有不同的密鑰)收款。所以我們把比特幣從熱儲存轉(zhuǎn)到冷儲存的時候,要用一個新的冷儲存地址。但是由于冷儲存不上線,所以熱儲存端必須要能找到這樣的地址。

一個直接的方案是讓冷儲存一次性生成一批地址,然后把地址列表發(fā)送給熱儲存,熱儲存可以依次使用這些地址,當(dāng)然,這個方法的缺陷是為了傳送地址,我們不得不經(jīng)常讓冷儲存端上線,上線的過程中就存在與熱儲存端一樣的風(fēng)險了。

分層確定性錢包

還有一個比較有效的方法是分層確定性錢包。這個方法可以讓冷儲存端制造無限量的地址數(shù)量,然后通過一個短暫的/一次性的交換,讓熱儲存端知曉所有地址。但這需要使用密碼學(xué)的技巧。在分層確定性錢包中,我們用“generateKeys”地址生成函數(shù)生成一個被稱為“地址生成信息”的東西;我們也不只生成私鑰,而是生成“私鑰生成信息”。有了地址生成信息,我們就可以生成一系列地址。我們把地址生成信息和一個整數(shù)i作為地址生成函數(shù)的輸入?yún)?shù),就生成了i個對應(yīng)地址。同樣,我們用私鑰生成信息來生成一系列私鑰。對于每個i而言,第i 個地址和第i個私鑰相匹配——換言之,第i個私鑰控制第i個地址的區(qū)塊鏈虛擬貨幣,這樣一來,我們就有一組彼此配對的公鑰和私鑰。這種方式的好處是:地址生成信息不會泄露關(guān)于私鑰本身的任何信息,這意味著你可以放心的把地址生成信息給任何人。

了解了這樣的技術(shù)后,接下去的過程就顯而易見:

1.冷儲存端生成和保存私鑰生成信息和地址生成信息,然后將地址生成信息一次性轉(zhuǎn)給熱儲存端,這個轉(zhuǎn)的過程中,黑客即便獲取到地址生成信息也不會暴露私鑰;

2.當(dāng)熱儲存端要給冷儲存端轉(zhuǎn)賬時,就通過地址生成信息和“generateKeys”地址生成函數(shù)按次序生成新的地址;

3.冷儲存端上線后,也會按順序生成地址,然后查收相應(yīng)地址收到的款項,直到某一地址沒有收款為止;

4.如果冷儲存端需要向熱儲存端轉(zhuǎn)賬,它就會按順序生成私鑰序列。

分層確定性錢包有我們需要的所有特性:兩方都可以生成公鑰/私鑰序列,而且這些公鑰/私鑰相互配對;而且,這種方法還具有另外一種我們尚未提及的特性:當(dāng)你向外提供這些公鑰時,這些公鑰之間沒有聯(lián)系,也就是說,別人無法斷定這些公鑰來自同一個錢包。

分層確定性錢包的熱儲存端的安全性較低,但如果熱儲存端收到損害,私鑰以及區(qū)塊鏈虛擬貨幣仍然是安全的。通常,分層確定性錢包還支持任意多個安全等級,當(dāng)一家公司內(nèi)部存在多種授權(quán)級別時,就需要這種特性。

大腦錢包與助記詞

除了分層確定性錢包外,還有一種通過密碼就可以支取數(shù)字資產(chǎn)的方式,這被稱之為“大腦錢包”。大腦錢包無需使用硬件/紙張或者其他長期儲存介質(zhì),這在物理安全性較差的情況下(例如跨國出差/旅行時)非常有用。

大腦錢包的主要原理是用一個可預(yù)測的算法把一個口令變成一對公鑰/私鑰。但是,如果有黑客知道了猜到了你的口令,他還是可以偷走你大腦錢包里的所有私鑰。在計算機安全領(lǐng)域,我們通常假定黑客知道你生成密鑰的步驟,黑客不知道的只是你的口令。所以黑客可以嘗試使用不同的口令生成地址,并在區(qū)塊中查看這些地址上是否還存在未被使用的數(shù)字資產(chǎn),一旦發(fā)現(xiàn)數(shù)字資產(chǎn),黑客就可以迅速把這些資產(chǎn)轉(zhuǎn)給自己,這種破解方式被稱之為離線猜測或者密碼破解。因此,設(shè)置口令密碼的難度就大大增加了,又要容易記,又要不容易被猜中。

這也就是助記詞的由來,從最常見的10000個英語詞匯中,隨機選擇6個詞,從而生成大致80位長度的字節(jié)。這種方式會比隨機取字母容易記憶,因為這種方式生成的口令通常是這樣的:

earth alloy dog okay till focusing

當(dāng)然了,如果需要增加復(fù)雜度,可以選擇12個詞或更多。需要記住的是,一旦用戶忘記大腦錢包的口令,錢包里的數(shù)字資產(chǎn)就永遠(yuǎn)取不出來了,除非用戶還采取了其他措施來保管私鑰。

風(fēng)險

前面我們提到了交易所最重要的幾個技術(shù)特點:

1.數(shù)字資產(chǎn)存儲

2.撮合交易

3.加密錢包

許多交易所在這三個方面還會有各自的創(chuàng)新和技術(shù)選型,我只是根據(jù)我所了解的程度介紹了最常見的幾種。把交易所比作銀行,交易所同樣也需要面對和銀行同樣的風(fēng)險問題:

1.第一類風(fēng)險是擠兌。擠兌就是大家同時都去銀行提款,由于銀行只保留一部分存款,所以可能無法應(yīng)付所有的提款要求。當(dāng)銀行無法兌現(xiàn)的謠言四起之時,大家開始恐慌,然后更多人去銀行提錢,造成資金鏈斷裂。

2.第二類風(fēng)險是,銀行本身可能就是龐氏騙局。龐氏騙局的做法是不斷借新還舊,從儲戶吸收存款,答應(yīng)日后提供一定的收益,但實際上這筆錢并沒有用于投資,而是勇于支付先前儲戶的收益,這類騙局最終必然會崩潰。

3.第三類風(fēng)險就是黑客入侵。由于交易所儲存大量數(shù)字資產(chǎn),所以交易所需要非常小心地監(jiān)控軟件的安全性及其操作流程——例如,如何管理冷熱儲存等。如果某個環(huán)節(jié)出了差錯,用戶儲存在交易所的數(shù)字資產(chǎn)就會被盜取。

在歷史上,這三種風(fēng)險造成交易所倒閉的案例都出現(xiàn)過。

監(jiān)管方式

目前交易所還沒有被納入到政府的監(jiān)管中,因此不免有許多投資人會對交易所感到不放心,但是銀行卻在政府監(jiān)管下存在了很久,所以我們不妨站在政府監(jiān)管銀行的角度來考慮政府應(yīng)該如何監(jiān)管交易所。

政府會要求銀行有一個最低準(zhǔn)備金,在美國,銀行隨時要保留總儲蓄量的3%~10%的現(xiàn)金來應(yīng)付突發(fā)的提款要求。政府通常還會對銀行的投資類別以及資金管理方法進行監(jiān)管,政府要求銀行的資產(chǎn)投向低風(fēng)險資產(chǎn)。除此以外,當(dāng)一個遵紀(jì)守法的銀行瀕臨破產(chǎn)時,銀行會償還儲戶一部分存款,甚至有時候充當(dāng)“最后借款人”的身份來給銀行提供貸款,知道銀行有足夠的資金可以周轉(zhuǎn),從而渡過難關(guān)。

那么,交易所未來的監(jiān)管方式是否會是這樣的呢?也許不盡相同,相較于“政府背書”,交易所也需要尋求一種“共識背書”,接受包括政府在內(nèi)的任何機構(gòu)和個人的監(jiān)督,例如實現(xiàn)去中心化的交易所,這將是一個類似比特幣“自舉”的過程。有一種相對簡單的證明方式叫“準(zhǔn)備金證明”。

準(zhǔn)備金證明包括兩方面內(nèi)容:

1.證明交易所有多少準(zhǔn)備金。這比較容易,交易所只需要發(fā)起一筆向自己轉(zhuǎn)賬的交易,轉(zhuǎn)賬的金額等于其公布的金額即可,然后向用戶說明這筆交易的有效性;

2.用同一個私鑰為一條查詢命令簽名,這個查詢命令是公正的第三方隨意發(fā)出的字符串,這樣就能證明出具準(zhǔn)備金證明的人至少知曉該私鑰。

但僅僅這樣,也只能證明交易所“至少”有多少準(zhǔn)備金,按照嚴(yán)格的方式,交易所還需要公開儲蓄規(guī)模(即交易所的負(fù)債規(guī)模),才能向投資人證明自己的準(zhǔn)備金比例是一個比較合理的比例,所有人都可以通過交易所公開的準(zhǔn)備金證明和負(fù)債證明來確認(rèn)交易所的準(zhǔn)備金比例。

這種方式雖然可以達(dá)到目的,但是由于會泄露許多交易所信息,所以通常很少有交易所愿意這么做,有一種叫“準(zhǔn)備金”的協(xié)議可以解決這個問題,既可以證明有償付能力,又不需要披露總負(fù)債和準(zhǔn)備金規(guī)模。不過這個協(xié)議采用了更先進的加密技術(shù),相對來說比較復(fù)雜,這里不作贅述。

MtGox曾經(jīng)掌握比特幣世界90%的交易量,但最終還是抵不住信任危機而倒閉,監(jiān)管從某種長遠(yuǎn)意義上能夠幫助合理運營的交易所減少風(fēng)險,但這只是我個人的愚見。

尾記

區(qū)塊鏈遇上交易所是“區(qū)塊鏈遇上現(xiàn)實”系列的第一彈,后續(xù)不定期會更新我對區(qū)塊鏈落地應(yīng)用的一些想法以及方案,因為區(qū)塊鏈技術(shù)每天都有巨大地進步與發(fā)展,希望通過更新文章督促自己不斷學(xué)習(xí)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容