一名區塊鏈產品工作者的視角:當區塊鏈遇上交易所
本文將從一名區塊鏈產品工作者的視角向大家說明,區塊鏈并不止眼前的ICO和交易所,還有更多玩法有待發掘,過早地炒作可能是一種“捧殺”,希望更多人能靜下心來挖掘實際應用場景下的可能性。
為什么會想到寫這個“區塊鏈遇上現實”系列?
一方面是因為我本身是一名互聯網產品經理且從事的行業就是區塊鏈,從不溫不火到大紅大紫只用了幾年的時間,即便我深信技術改變世界,也不由對這種“區塊鏈現象”產生擔憂。我覺得有必要以一名區塊鏈產品工作者的視角向大家說明,區塊鏈并不止眼前的ICO和交易所,還有更多玩法有待發掘,過早地炒作可能是一種“捧殺”,希望更多人能靜下心來挖掘實際應用場景下的可能性。
另外一方面,我習慣于通過寫作的方式將我的所學系統性地整理起來,技術并不是我的擅長,我可能更愿意從實際需要來切入討論。畢竟對一名產品經理而言,無法實際應用起來的技術其實并不存在太多的討論價值,而從應用場景來展開想象,我們的技術演進可能會更有方向感和目標感。
區塊鏈貨幣交易所
相信沒有人可以否認,大部分人在現實生活中接觸到的第一個區塊鏈案例,就是區塊鏈貨幣交易所。要想理解區塊鏈貨幣交易所,我們先要討論一下傳統的銀行是如何運作的。你給銀行一筆錢——做一筆存款,銀行日后會按照你的要求把錢還給你。當然,銀行并不會把你的錢一直鎖在保險柜里,銀行只是答應,當你提款的時候把錢給你,在這期間,銀行通常會把錢用于投資。許多銀行會保留一部分錢作為儲備金,保證人們來提款的時候,有足夠的現金。許多銀行通常按存款的固定比例來留存儲備金。
現在來談區塊鏈貨幣交易所。就只從用戶使用的角度而言,區塊鏈數字資產交易所和銀行很想。交易所可以辦理數字資產(如比特幣)存款,日后需要用錢的時候,可以到交易所提款。你還可以把法定貨幣(法幣,如美元等)存到數字資產交易所,交易所承諾日后會按照你的要求把錢(法幣或某種數字資產,或兩者都有)還給你。也可以通過交易所辦理類銀行業務,例如,用比特幣付款或收款。還可以通過交易所把虛擬貨幣兌換成法幣,或把法幣兌換成虛擬貨幣,或將兩種虛擬貨幣進行相互兌換,交易所在該業務過程中通常起撮合作用,它們同時尋找愿意兌換的人,并安排他們作為交易對手,如果交易對手對于匯率達成一致意見,交易所就促成這筆交易。
值得一提的是,有許多人包括我自己,一開始都會下意識地以為,作為去中心化應用的典范,交易所中的每一筆交易都應該被記錄在區塊鏈上,而事實卻恰好相反。交易所不需要在區塊鏈里把虛擬貨幣從一個地址轉到另一個地址。交易所只是修改了與你的合約,交易前,它說“我們日后會還給你15000美元和3個比特幣”;交易完成后,它說“我們日后會還給你3000美元和5個比特幣”。所以,交易前后,比特幣并沒有真正在區塊鏈中移動,只是你和銀行的合約變化了而已。對于你的交易對手而言亦是如此。
由交易所生成的合約地址并非區塊鏈公鑰
投資策略的選擇
在交易所中,懂得投資的人會試圖從復雜程度極高的交易撮合的各項參數中找到商機,就像當初從股市中獲利一樣。有人通過不同的交易撮合策略配比來組合自己的投資,而非簡單地買入和售出,但老實說,預估市場并非一件容易的事情,這往往需要敏捷地市場觀察能力。甚至有人使用深度學習這樣的方式來完成自動化的投資——如阿爾法貓,它能像阿爾法狗一樣學習交易所中的K線圖/深度圖/均線等參數,不斷糾正自己的投資策略來達到正常人類達不到的收益回報率。
復雜的交易所參數
還有,隨著交易所的數量增長,像比特幣類似的區塊鏈貨幣在不同交易所的價格是存在一定差異的,這也很正常,交易所中某個幣種的價格受交易所交易撮合結果的直接影響,而誰也無法保證不同交易所中的價格認知都時刻保持一致。那么問題來了,哪個交易所的價格才可以用來代表比特幣的最新價格呢?事實上,這個問題并不會對比特幣的價格產生過大的影響,因為區塊鏈貨幣的去中心化特質,一旦A交易所中比特幣的價格高于B交易所中的,就會有人從B交易所購買比特幣,并且轉入A交易所中高價賣出,這會使得兩個交易所中的比特幣價格趨同,當然,還需要考慮到轉幣的手續費是否可以被利潤cover掉。
交易所錢包
前面提到,交易所中的地址并非區塊鏈上的公鑰,而是使用了一種叫做錢包服務器的技術生成并分配給用戶的,如果用戶通過Txhash或者其他方式在區塊鏈上查詢從個人錢包轉入到交易所錢包的一筆轉賬,就會發現區塊上的轉入地址并非交易所提供的地址,事實上,這個地址是交易所的收款公鑰(為了和大家所知的交易所地址區分)。實際的流程是,用戶從個人錢包轉帳給了交易所的收款公鑰,交易所再將與這一筆轉賬的金額相同數量的虛擬貨幣分配到用戶的賬戶下,這個時候,它又從一個區塊鏈實體變成了一個數字,真正的區塊鏈實體保存在了交易所的錢包中。
黑客通常喜歡將黑手伸向這些囤積有大量虛擬貨幣的交易所錢包,一旦交易所錢包失竊,那對交易所會是個莫大的打擊,甚至萬劫不復。為了應對這種情況,有人開發出了多種方案,其中還運用了許多密碼學的知識。冷存儲和熱存儲,是目前較為流行的做法。
冷儲存與熱儲存
前面我們提到,交易所會把區塊鏈貨幣放在自己的服務器中,把區塊鏈貨幣放在電腦里就像把錢放在錢包里帶著,這叫“熱儲存”,這很方便但不安全。而“冷儲存”是離線的,把區塊鏈貨幣鎖在其他地方,不聯入互聯網,所以相對安全和保險,但顯然是不方便的。這就像你帶著一些零錢出去,但是把終身積蓄鎖在保險柜里的道理一樣。
要分開熱儲存和冷儲存,你也必須要用不同的私鑰,否則如果熱儲存被人破壞了,冷儲存也會處于危險之中。你也需要把幣在兩邊轉來轉去,這樣兩邊都需要知道對方的地址或公鑰。
因為冷儲存是離線的,所以熱儲存和冷儲存不需要上線就可以接收比特幣——熱儲存端知道冷儲存端的地址,所以它隨時可以給冷儲存轉賬。當你覺得你的錢包里的錢太多的時候,你可以把一部分的幣轉到冷儲存,但不需要讓冷儲存上線而暴露自己。當然,只要冷儲存上線,就可以接收到區塊鏈的轉賬信息,然后可以隨意處理這些比特幣。
但管理冷儲存有個小問題:一方面,為了私密性和其他考慮,我們希望使用不同的地址(這些地址有不同的密鑰)收款。所以我們把比特幣從熱儲存轉到冷儲存的時候,要用一個新的冷儲存地址。但是由于冷儲存不上線,所以熱儲存端必須要能找到這樣的地址。
一個直接的方案是讓冷儲存一次性生成一批地址,然后把地址列表發送給熱儲存,熱儲存可以依次使用這些地址,當然,這個方法的缺陷是為了傳送地址,我們不得不經常讓冷儲存端上線,上線的過程中就存在與熱儲存端一樣的風險了。
分層確定性錢包
還有一個比較有效的方法是分層確定性錢包。這個方法可以讓冷儲存端制造無限量的地址數量,然后通過一個短暫的/一次性的交換,讓熱儲存端知曉所有地址。但這需要使用密碼學的技巧。在分層確定性錢包中,我們用“generateKeys”地址生成函數生成一個被稱為“地址生成信息”的東西;我們也不只生成私鑰,而是生成“私鑰生成信息”。有了地址生成信息,我們就可以生成一系列地址。我們把地址生成信息和一個整數i作為地址生成函數的輸入參數,就生成了i個對應地址。同樣,我們用私鑰生成信息來生成一系列私鑰。對于每個i而言,第i 個地址和第i個私鑰相匹配——換言之,第i個私鑰控制第i個地址的區塊鏈虛擬貨幣,這樣一來,我們就有一組彼此配對的公鑰和私鑰。這種方式的好處是:地址生成信息不會泄露關于私鑰本身的任何信息,這意味著你可以放心的把地址生成信息給任何人。
了解了這樣的技術后,接下去的過程就顯而易見:
- 冷儲存端生成和保存私鑰生成信息和地址生成信息,然后將地址生成信息一次性轉給熱儲存端,這個轉的過程中,黑客即便獲取到地址生成信息也不會暴露私鑰;
- 當熱儲存端要給冷儲存端轉賬時,就通過地址生成信息和“generateKeys”地址生成函數按次序生成新的地址;
- 冷儲存端上線后,也會按順序生成地址,然后查收相應地址收到的款項,直到某一地址沒有收款為止;
- 如果冷儲存端需要向熱儲存端轉賬,它就會按順序生成私鑰序列。
分層確定性錢包有我們需要的所有特性:兩方都可以生成公鑰/私鑰序列,而且這些公鑰/私鑰相互配對;而且,這種方法還具有另外一種我們尚未提及的特性:當你向外提供這些公鑰時,這些公鑰之間沒有聯系,也就是說,別人無法斷定這些公鑰來自同一個錢包。
分層確定性錢包的熱儲存端的安全性較低,但如果熱儲存端收到損害,私鑰以及區塊鏈虛擬貨幣仍然是安全的。通常,分層確定性錢包還支持任意多個安全等級,當一家公司內部存在多種授權級別時,就需要這種特性。
大腦錢包與助記詞
除了分層確定性錢包外,還有一種通過密碼就可以支取數字資產的方式,這被稱之為“大腦錢包”。大腦錢包無需使用硬件/紙張或者其他長期儲存介質,這在物理安全性較差的情況下(例如跨國出差/旅行時)非常有用。
大腦錢包的主要原理是用一個可預測的算法把一個口令變成一對公鑰/私鑰。但是,如果有黑客知道了猜到了你的口令,他還是可以偷走你大腦錢包里的所有私鑰。在計算機安全領域,我們通常假定黑客知道你生成密鑰的步驟,黑客不知道的只是你的口令。所以黑客可以嘗試使用不同的口令生成地址,并在區塊中查看這些地址上是否還存在未被使用的數字資產,一旦發現數字資產,黑客就可以迅速把這些資產轉給自己,這種破解方式被稱之為離線猜測或者密碼破解。因此,設置口令密碼的難度就大大增加了,又要容易記,又要不容易被猜中。
這也就是助記詞的由來,從最常見的10000個英語詞匯中,隨機選擇6個詞,從而生成大致80位長度的字節。這種方式會比隨機取字母容易記憶,因為這種方式生成的口令通常是這樣的:
earth alloy dog okay till focusing
當然了,如果需要增加復雜度,可以選擇12個詞或更多。需要記住的是,一旦用戶忘記大腦錢包的口令,錢包里的數字資產就永遠取不出來了,除非用戶還采取了其他措施來保管私鑰。
風險
前面我們提到了交易所最重要的幾個技術特點:
- 數字資產存儲
- 撮合交易
- 加密錢包
許多交易所在這三個方面還會有各自的創新和技術選型,我只是根據我所了解的程度介紹了最常見的幾種。把交易所比作銀行,交易所同樣也需要面對和銀行同樣的風險問題:
- 第一類風險是擠兌。擠兌就是大家同時都去銀行提款,由于銀行只保留一部分存款,所以可能無法應付所有的提款要求。當銀行無法兌現的謠言四起之時,大家開始恐慌,然后更多人去銀行提錢,造成資金鏈斷裂。
- 第二類風險是,銀行本身可能就是龐氏騙局。龐氏騙局的做法是不斷借新還舊,從儲戶吸收存款,答應日后提供一定的收益,但實際上這筆錢并沒有用于投資,而是勇于支付先前儲戶的收益,這類騙局最終必然會崩潰。
- 第三類風險就是黑客入侵。由于交易所儲存大量數字資產,所以交易所需要非常小心地監控軟件的安全性及其操作流程——例如,如何管理冷熱儲存等。如果某個環節出了差錯,用戶儲存在交易所的數字資產就會被盜取。
在歷史上,這三種風險造成交易所倒閉的案例都出現過。
監管方式
目前交易所還沒有被納入到政府的監管中,因此不免有許多投資人會對交易所感到不放心,但是銀行卻在政府監管下存在了很久,所以我們不妨站在政府監管銀行的角度來考慮政府應該如何監管交易所。
政府會要求銀行有一個最低準備金,在美國,銀行隨時要保留總儲蓄量的3%~10%的現金來應付突發的提款要求。政府通常還會對銀行的投資類別以及資金管理方法進行監管,政府要求銀行的資產投向低風險資產。除此以外,當一個遵紀守法的銀行瀕臨破產時,銀行會償還儲戶一部分存款,甚至有時候充當“最后借款人”的身份來給銀行提供貸款,知道銀行有足夠的資金可以周轉,從而渡過難關。
那么,交易所未來的監管方式是否會是這樣的呢?也許不盡相同,相較于“政府背書”,交易所也需要尋求一種“共識背書”,接受包括政府在內的任何機構和個人的監督,例如實現去中心化的交易所,這將是一個類似比特幣“自舉”的過程。有一種相對簡單的證明方式叫“準備金證明”。
準備金證明包括兩方面內容:
- 證明交易所有多少準備金。這比較容易,交易所只需要發起一筆向自己轉賬的交易,轉賬的金額等于其公布的金額即可,然后向用戶說明這筆交易的有效性;
- 用同一個私鑰為一條查詢命令簽名,這個查詢命令是公正的第三方隨意發出的字符串,這樣就能證明出具準備金證明的人至少知曉該私鑰。
但僅僅這樣,也只能證明交易所“至少”有多少準備金,按照嚴格的方式,交易所還需要公開儲蓄規模(即交易所的負債規模),才能向投資人證明自己的準備金比例是一個比較合理的比例,所有人都可以通過交易所公開的準備金證明和負債證明來確認交易所的準備金比例。
這種方式雖然可以達到目的,但是由于會泄露許多交易所信息,所以通常很少有交易所愿意這么做,有一種叫“準備金”的協議可以解決這個問題,既可以證明有償付能力,又不需要披露總負債和準備金規模。不過這個協議采用了更先進的加密技術,相對來說比較復雜,這里不作贅述。
MtGox曾經掌握比特幣世界90%的交易量,但最終還是抵不住信任危機而倒閉,監管從某種長遠意義上能夠幫助合理運營的交易所減少風險,但這只是我個人的愚見。
尾記
區塊鏈遇上交易所是“區塊鏈遇上現實”系列的第一彈,后續不定期會更新我對區塊鏈落地應用的一些想法以及方案,因為區塊鏈技術每天都有巨大地進步與發展,希望通過更新文章督促自己不斷學習。
本文由 @路遙 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自 Unsplash,基于 CC0 協議
看不懂我竟然還從頭看到尾了,而且還津津有味的看。
您好,方便加個微信嗎?
18217343620